@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&display=swap');
textarea{font:inherit;resize:vertical;border:1px solid #e0e5ee;border-radius:7px;padding:12px;width:100%;color:#42516a;line-height:1.5}textarea:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}.review-label{display:grid;gap:10px;margin:20px 0;font-size:.875rem}.button-link{display:inline-block;text-decoration:none;background:var(--blue);color:var(--on-blue);font-size:.875rem;padding:10px 14px;border-radius:7px}.coach-review-shell{max-width:850px;margin:auto;padding:0 24px}.coach-review-shell header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #e1e6ef;padding:28px 0}.coach-review-shell header .brand{padding:0}.coach-review-shell main{max-width:650px;padding:40px 0 70px}.coach-review-shell h1{margin-top:14px}.review-progress{display:flex;justify-content:space-between;margin:26px 0 12px;font-size:.875rem;color:#8490a3}.review-player{margin:24px 0;padding:28px}.star-row{display:grid;grid-template-columns:minmax(120px,1fr) auto auto;align-items:center;gap:12px;padding:13px 0;border-top:1px solid #eef0f5;font-size:.875rem}.star-buttons{display:flex;gap:4px}.star-buttons button{font-size:1.7rem;padding:2px 3px;border:0;background:none;color:#dce1ea;line-height:1.3}.star-buttons button.filled{color:#dcad47}.star-buttons button:hover{color:#c79b39}.star-buttons button[aria-pressed=true]{outline:1px solid #e6cc8c;border-radius:4px}.review-controls{display:flex;justify-content:space-between;gap:14px}.review-save-status{color:#78859a;font-size:.75rem;padding-top:18px;line-height:1.7}.raw-review{margin:18px 0;padding:15px;background:#f8f9fc;border-radius:8px}.raw-review td{padding:10px 12px}.profilehero h2{overflow-wrap:anywhere}.chart span{font-size:.75rem;line-height:1.2;bottom:-38px;overflow-wrap:anywhere}.chart{margin-bottom:60px;gap:14px;padding:0 12px}.sidebar{overflow-y:auto}@media(max-width:500px){.coach-review-shell{padding:0 16px}.review-player{padding:18px}.star-row{display:flex;flex-direction:column;align-items:flex-start}.star-buttons{justify-content:space-between;width:100%}.star-buttons button{font-size:2rem;padding:4px 8px}.review-progress{font-size:.75rem}.coach-review-shell main{padding-top:26px}.coach-review-shell header .brand{font-size:1.5rem}}
.season-readonly{padding:14px 18px;background:#eef1f7;color:#637189;border:1px solid #dbe2ee;border-radius:8px;margin-bottom:24px;font-size:.875rem}.season-options{display:grid;gap:16px;margin-top:24px;font-size:.875rem}.season-options label{display:flex;align-items:center;gap:8px}.season-options input{accent-color:var(--blue)}.season-options p{font-size:.75rem}.team-edit{font-size:.75rem;padding:4px 7px;border:0;color:#6c7c96}.division-label{font-size:.75rem;color:var(--muted);font-weight:500}.topright #season-picker{max-width:260px}.heading .actions{flex-wrap:wrap;justify-content:flex-end}@media(max-width:760px){.topright #season-picker{max-width:200px}.heading .actions{justify-content:flex-start}.topright .demo{display:none}}
.auth-layout{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:white}.auth-story{padding:50px 65px;background:var(--brand-gradient) top/100% 4px no-repeat,var(--brand-navy-deep);color:white;display:flex;flex-direction:column;justify-content:space-between;gap:60px}.auth-story .brand{padding:0;align-self:flex-start}.auth-story .brand i,.auth-story .brand span{color:var(--brand-teal)}.auth-story h1{font-size:3.5rem;line-height:1.12;margin:22px 0;letter-spacing:-2px}.auth-story p{color:#bbc7dc;max-width:380px;font-size:1rem}.auth-eyebrow{font-size:.75rem;font-weight:600;letter-spacing:1.5px;color:var(--accent-text)}.auth-story .auth-eyebrow{color:var(--brand-teal)}.auth-points{display:grid;gap:24px;margin:45px 0;font-size:.875rem;color:#cbd4e4}.auth-points b{display:inline-block;margin-right:20px;color:var(--brand-teal);font-size:.75rem}.auth-story p.auth-foot{font-size:.75rem;color:#7f95b7}.auth-form-area{display:flex;align-items:center;justify-content:center;padding:48px 30px}.auth-card{width:100%;max-width:390px}.auth-card h2{font-size:1.9rem;letter-spacing:-.9px;margin:16px 0 10px}.auth-card form{margin-top:30px;display:grid;gap:18px}.auth-card label{display:grid;gap:8px;font-size:.875rem;font-weight:500}.auth-card input{padding:12px;font-size:1rem}.auth-card .sample-choice{display:flex;align-items:flex-start;line-height:1.6;font-weight:400;color:#67748b;font-size:.875rem}.auth-card .sample-choice input{margin-top:5px;accent-color:var(--blue)}.auth-card .primary{padding:13px}.auth-card .auth-hint{font-size:.75rem;line-height:1.6;color:#8c96a5}.auth-switch{margin:25px 0;text-align:center}.auth-switch button{background:transparent;border:0;padding:0 3px;color:var(--accent-text)}.auth-card #auth-error{font-size:.875rem;color:#ad4141;line-height:1.5}.auth-card #auth-error:empty{display:none}.signout{border:0;padding:0;background:transparent;color:var(--accent-text);font-size:.75rem}.startup{padding:15vh 25px;text-align:center}.startup .brand{justify-content:center}.startup p{margin:20px 0}.saving{cursor:progress}.saving button,.saving select{pointer-events:none;opacity:.7}@media(max-width:760px){.auth-layout{grid-template-columns:1fr}.auth-story{padding:28px;gap:24px}.auth-story h1{font-size:2.1rem;letter-spacing:-1px}.auth-points,.auth-story .auth-foot{display:none}.auth-form-area{padding:32px 24px}.auth-story .auth-eyebrow{display:none}.auth-story p{font-size:.875rem}}
:root{font-family:'DM Sans',Arial,sans-serif;color:#202838;background:#f6f7f9;font-size:16px;font-synthesis:none;--blue:#0049c9;--theme-secondary:#05bfb6;--theme-tertiary:#f1f6f7;--muted:#79818e;--line:#e7eaf0;--brand-navy:#0a1a2f;--brand-navy-deep:#06121f;--brand-teal:#05bfb6;--brand-cyan:#00a9db;--brand-lime:#8fcd22;--brand-line:#d7e3e6;--brand-mist:#f1f6f7;--brand-gradient:linear-gradient(90deg,#0049c9 0%,#00a9db 34%,#05bfb6 66%,#8fcd22 100%);--accent-strong:color-mix(in srgb,var(--blue) 80%,#06121f);--accent-ink:color-mix(in srgb,var(--blue) 65%,#06121f);--accent-ring:color-mix(in srgb,var(--blue) 50%,#fff);--accent-mid:color-mix(in srgb,var(--blue) 60%,#fff);--accent-border:color-mix(in srgb,var(--blue) 26%,#fff);--accent-tint-2:color-mix(in srgb,var(--blue) 14%,#fff);--accent-tint:color-mix(in srgb,var(--blue) 7%,#fff);--accent-wash:color-mix(in srgb,var(--blue) 3.5%,#fff);--on-blue:#fff;--accent-text:var(--blue);--focus-ring:var(--accent-text)}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,select{cursor:pointer}a{color:var(--accent-text);text-underline-offset:2px}a:where(:visited){color:color-mix(in srgb,var(--accent-text) 82%,var(--brand-navy-deep))}button{color:inherit;border:1px solid var(--line);background:white;border-radius:7px;padding:10px 14px;font-size:.875rem;font-weight:550}button:hover{background:var(--accent-tint);border-color:#c6cfdf}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}button.primary{background:var(--blue);color:var(--on-blue);border-color:var(--blue)}button.primary:hover{background:var(--accent-strong)}button.flat{border:0;background:transparent}button:disabled{opacity:.5;cursor:not-allowed}svg{vertical-align:middle}.shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh}.sidebar{background:white;border-right:1px solid var(--line);padding:30px 18px 12px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{font-size:2rem;font-weight:700;letter-spacing:-1.5px;padding:0 16px 28px;display:flex;gap:10px;align-items:center}.club{padding:13px 10px;border:1px solid var(--line);border-radius:8px;display:flex;align-items:center;gap:10px;font-size:.875rem;margin-bottom:16px}.clubmark{background:var(--accent-tint);color:var(--accent-ink);border-radius:6px;padding:9px;font-weight:700}.sub{font-size:.75rem;color:var(--muted);font-weight:400;display:block;margin-top:4px}.navlabel{font-size:.75rem;letter-spacing:1.2px;color:#9298a4;padding:5px 14px 10px}.nav{display:flex;flex-direction:column;gap:5px}.nav button{text-align:left;border:0;padding:12px 14px;background:transparent;color:#687181;display:flex;align-items:center;gap:12px}.nav button.active{color:var(--accent-text);background:color-mix(in srgb,var(--blue) 9%,#fff)}.nav button svg{width:18px;height:18px}.sidebar-bottom{margin-top:auto;padding-top:40px}.user{border-top:1px solid var(--line);display:flex;gap:10px;padding:22px 8px 0;font-size:.875rem}.avatar{display:inline-flex;width:34px;height:34px;align-items:center;justify-content:center;border-radius:50%;background:#eef0f5;color:#616e83;font-size:.75rem;font-weight:600;flex-shrink:0}.topbar{height:77px;border-bottom:1px solid var(--line);background:white;padding:0 34px;display:flex;justify-content:space-between;align-items:center;font-size:.875rem}.crumb{color:#8b929e}.crumb b{color:#354052;font-weight:500;margin-left:14px}.topright{display:flex;gap:14px;align-items:center}.demo{font-size:.75rem;border:1px solid #e1e5ee;color:#6f7888;padding:5px 8px;border-radius:5px}select,input{border:1px solid var(--line);border-radius:7px;background:white;padding:10px 12px;color:#4f596a;font-size:.875rem;min-width:0}main{padding:32px 34px;max-width:1800px;margin:auto}.heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:27px}h1{font-size:1.85rem;letter-spacing:-1px;margin:0 0 7px;font-weight:650}h2{font-size:1rem;margin:0;font-weight:650}h3{font-size:.875rem;margin:0}p{color:#7c8491;font-size:.875rem;line-height:1.6;margin:0}.actions{display:flex;gap:9px;align-items:center}.steps{display:flex;gap:26px;border-bottom:1px solid var(--line);margin-bottom:24px}.step{font-size:.875rem;padding:0 0 15px;color:#8a919c}.step.current{color:var(--accent-text);border-bottom:2px solid var(--blue)}.step span{font-size:.75rem;margin-right:7px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.stat{background:white;border:1px solid var(--line);border-radius:9px;padding:20px}.stat label{display:block;color:#77808f;font-size:.875rem;margin-bottom:10px}.stat strong{font-size:1.9rem;font-weight:550;letter-spacing:-1px}.stat small{font-size:.75rem;color:#8a93a0;margin-left:9px}.workspace{display:grid;grid-template-columns:280px minmax(310px,1fr) clamp(240px,calc(50vw - 360px),340px);gap:20px;align-items:start}.panel{background:white;border:1px solid var(--line);border-radius:10px;overflow:hidden}.panel-head{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--line)}.count{background:#f0f2f6;padding:3px 7px;border-radius:5px;font-size:.75rem;color:#788291;font-weight:500;margin-left:5px}.filters{padding:10px 12px;display:grid;grid-template-columns:1fr 1fr auto;gap:6px;border-bottom:1px solid var(--line)}
.filters input,.filters select{padding:7px 10px;font-size:.85rem}
.filters .filters-more{padding:7px 10px;font-size:.8rem;white-space:nowrap}.filters input{width:100%;grid-column:1/-1}.player{border:1px solid var(--line);border-radius:7px;padding:13px;background:white;cursor:grab;transition:box-shadow .15s}.player:hover{border-color:var(--accent-border);box-shadow:0 4px 12px #26376309}.person{display:flex;gap:9px;align-items:center}.person button{padding:0;background:none;border:0;text-align:left;font-size:.875rem;line-height:1.4}.person button:hover{color:var(--accent-text)}.positions{font-size:.75rem;color:#8b93a1;margin-top:4px;letter-spacing:.5px}.player-meta{display:flex;align-items:center;justify-content:space-between;margin-top:13px;font-size:.75rem}.rating{color:#4b5668}.star{color:#daac48;margin-right:4px}.trend{color:#258678;font-size:.75rem}.trend.negative{color:#ae6f50}.player-foot{font-size:.75rem;color:#9198a2;margin-top:11px;border-top:1px solid #f0f2f5;padding-top:10px;display:flex;align-items:center;justify-content:space-between}.player-foot select{max-width:113px;font-size:.75rem;padding:4px;border:none;background:#f7f8fb}.teams{display:grid;gap:16px}.team{border-top:3px solid var(--theme-secondary);background:var(--theme-tertiary)}.team.selected{border-color:color-mix(in srgb,var(--theme-secondary) 55%,#fff);border-top-color:var(--blue)}.team-title{padding:16px 18px;display:flex;align-items:center;justify-content:space-between}.team-title button{border:0;padding:0;text-align:left;background:none}.tag{font-size:.75rem;padding:4px 7px;border-radius:4px;background:#f4f5f8;color:#8790a0}
.shared-tag{background:var(--accent-tint);color:var(--accent-text);font-weight:500}
.shared-remove{font-size:.75rem;padding:2px 6px}
.placements-intro{color:#677ba1;margin:10px 0 0}
.nc-dot,.nc-dot:hover{display:inline-block;width:11px;height:11px;border-radius:50%;margin-left:7px;padding:0;border:none;vertical-align:middle;cursor:pointer;flex:none}
.nc-dot.nc-on,.nc-dot.nc-on:hover{background:#1d9d5b}.nc-dot.nc-off,.nc-dot.nc-off:hover{background:#d64545}
.nc-dot.umpire-dot,.nc-dot.umpire-dot:hover{background:#2563eb}
.nc-dot.umpire-dot.cred-2,.nc-dot.umpire-dot.cred-2:hover{background:#7c3aed}
.nc-dot.umpire-dot.cred-3,.nc-dot.umpire-dot.cred-3:hover{background:#b45309}
.player{position:relative;display:flex;align-items:center;gap:10px}
.player .person{flex:1;min-width:0}
.player .player-meta{margin-top:0;flex:none;display:flex;align-items:center;gap:8px}
.card-menu-btn{padding:3px 9px;font-size:1rem;line-height:1.1;border-radius:5px}
.card-menu{position:absolute;right:10px;top:calc(100% - 6px);z-index:1200;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 26px rgba(6,18,31,.14);min-width:215px;padding:6px;display:grid;gap:2px}
.card-menu[hidden]{display:none}
.card-menu button{text-align:left;padding:8px 10px;border:0;border-radius:5px;font-size:.85rem;font-weight:500;background:white;color:#202838}
.card-menu button:hover{background:var(--accent-tint)}.card-menu button:focus-visible,.team-menu button:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}.teampick-menu label:has(input:focus-visible){outline:2px solid var(--focus-ring);outline-offset:-2px}.teampick-menu input:focus-visible{outline:0}
.rowmenu{position:relative;display:inline-block}
.rowmenu .card-menu-btn{border:0;background:none;color:#202838}
.teampick-btn{min-width:150px;text-align:left;padding:7px 10px;font-size:.85rem;display:inline-flex;justify-content:space-between;gap:10px;align-items:center;border:1px solid var(--line);background:white;border-radius:7px;color:#202838;font-weight:500}
.teampick-btn::after{content:'▾';color:var(--muted);font-size:.75rem}
.teampick-menu{min-width:190px;max-height:240px;overflow:auto}
.teampick-menu label{display:flex;gap:8px;align-items:center;padding:7px 10px;font-size:.85rem;font-weight:500;border-radius:5px;cursor:pointer;white-space:nowrap}
.teampick-menu label:hover{background:var(--accent-tint)}
.teampick-menu input{accent-color:var(--blue);margin:0}
.user{flex-wrap:wrap}
.userbtn{border:0;background:none;padding:6px;display:flex;gap:10px;align-items:center;text-align:left;color:inherit;font-weight:550;width:100%;border-radius:7px;font-size:.875rem}
.userbtn:hover{background:var(--accent-tint)}
.user .signout{margin-left:6px}
.avatar-btn{border:0;padding:0;cursor:pointer}
.avatar-btn:hover{box-shadow:0 0 0 3px var(--accent-border)}
.placements{margin-bottom:22px}
.placements .placements-intro{padding:0 20px 16px}
.placements .tablewrap{padding:16px 20px 20px}
.placements .empty{margin:16px 20px 20px}
.tag-consent{background:#e8f5ee;color:#1d7a4d;margin-left:6px}
.tag-umpire{background:#e8eefc;color:#2563eb;margin-left:6px}
span.nc-dot{cursor:default}
.nc-check{display:block;margin-top:14px;font-size:.875rem}.team-summary{display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px;padding:0 18px 16px;font-size:.75rem;color:#8b929d}.team-summary b{color:#566276;margin-right:4px;font-weight:600}.roster{padding:0 13px 12px;min-height:75px;display:grid;grid-template-columns:1fr 1fr;gap:8px}.roster .player{padding:11px}.roster .player-foot{display:none}.roster .avatar{width:28px;height:28px;font-size:.65rem}.drop{border:1px dashed #d8dfed;margin:0 13px 13px;padding:14px;text-align:center;color:#9aa3b2;font-size:.75rem;border-radius:6px}.dragover{background:var(--accent-tint)!important;outline:2px dashed var(--accent-ring)}.insight-body{padding:20px}.insight-title{font-size:.75rem;color:#959daa;letter-spacing:1px;margin:24px 0 16px}.insight-title:first-child{margin-top:0}.insight-row{display:flex;align-items:center;justify-content:space-between;margin:16px 0;font-size:.875rem;color:#7b8492}.insight-row strong{color:#2f3c51;font-weight:600}.coverage{display:flex;flex-wrap:wrap;gap:7px}.position{background:#eef5f4;color:#518578;border-radius:5px;width:37px;height:34px;display:flex;align-items:center;justify-content:center;font-size:.75rem}.position.missing{color:#ac8952;background:#fcf5e9}.note{margin-top:12px;font-size:.75rem;color:#99907a;line-height:1.6}.bar{height:5px;background:#edf0f6;border-radius:5px;overflow:hidden}.bar i{display:block;background:var(--accent-mid);height:100%;border-radius:5px}.skill{margin:15px 0}.skill label{display:flex;justify-content:space-between;font-size:.75rem;color:#7c8799;margin-bottom:8px}.footer-note{font-size:.75rem;color:#929baa;margin-top:20px;display:flex;justify-content:space-between}.tablewrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:.875rem}th{font-weight:500;color:#8b94a3;background:#fafbfc;font-size:.75rem}td,th{padding:17px 22px;border-bottom:1px solid var(--line);white-space:nowrap}td button{border:0;padding:0;background:none;color:var(--accent-text)}.widefilters{padding:18px;display:flex;gap:12px}.widefilters>input{flex:1;min-width:180px}.empty{padding:35px 20px;text-align:center;color:#8a93a3;font-size:.875rem}.dashboard-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:22px}.dashboard-list{padding:18px;display:grid;gap:14px}.hp-field{position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.grace-banner{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;background:#fcf5e9;color:#6b5320;padding:12px 22px;font-size:.875rem;border-bottom:1px solid var(--line)}.grace-banner button{margin-left:8px}.email-health{margin-bottom:18px}.email-health.bad{background:#fcecec;color:#7a2b2b}.notice{background:var(--accent-tint);color:#50648f;padding:18px;border-radius:7px;line-height:1.7;font-size:.875rem}.seasonline{display:flex;gap:20px;padding:25px}.seasonline div{flex:1;border-top:3px solid var(--accent-border);padding-top:14px}.seasonline b{display:block;font-size:.875rem;margin-bottom:8px}dialog{border:1px solid var(--line);border-radius:14px;width:min(640px,94vw);max-height:88vh;padding:0;box-shadow:0 20px 100px #18233c33;color:#263247}dialog::backdrop{background:#16223b55;backdrop-filter:blur(3px)}.modalhead{display:flex;justify-content:space-between;align-items:center;padding:16px 22px;border-bottom:1px solid var(--line);flex-wrap:wrap;row-gap:10px}.modalbody{padding:18px 22px}.modalbody>p{margin:0 0 12px;font-size:.9rem;color:#4a566d;line-height:1.55}.modalbody>p:last-child{margin-bottom:0}.modalbody h3{margin:20px 0 10px;font-size:1rem}.profilehero{display:flex;gap:17px;align-items:center;margin-bottom:24px}.profilehero .avatar{width:58px;height:58px;font-size:1.1rem}.profilehero h2{font-size:1.4rem}.chart{height:160px;display:flex;align-items:end;gap:30px;border-bottom:1px solid var(--line);margin:28px 0 40px;padding:0 30px}.chart div{flex:1;background:var(--accent-tint-2);border-radius:6px 6px 0 0;position:relative;text-align:center;min-height:10px}.chart b{position:absolute;top:-25px;width:100%;left:0;font-size:.875rem}.chart span{position:absolute;bottom:-25px;width:100%;left:0;font-size:.75rem;color:#8d97a6}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-grid label{font-size:.875rem;display:grid;gap:8px}.form-grid .full,.form-grid>.field-error{grid-column:1/-1}.form-grid>.field-error{margin-top:-10px}.form-actions{display:flex;justify-content:flex-end;margin-top:24px;gap:10px}#toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);padding:13px 22px;background:var(--brand-navy);color:white;border-radius:8px;box-shadow:0 8px 30px #18233c30;font-size:.875rem;display:none;z-index:10}.mobilebrand{display:none}@media(min-width:1600px){.workspace{grid-template-columns:310px minmax(500px,1fr) 340px}.roster{grid-template-columns:repeat(3,1fr)}}@media(max-width:1200px){.shell{grid-template-columns:185px minmax(0,1fr)}.sidebar{padding:25px 10px}main{padding:26px 22px}.workspace{grid-template-columns:250px 1fr}.insights{grid-column:1/-1}.insight-body{display:grid;grid-template-columns:1fr 1fr;gap:24px}.roster{grid-template-columns:1fr}.topbar{padding:0 22px}}@media(max-width:760px){.shell{display:block}.sidebar{position:static;height:auto;padding:14px;border-right:0;border-bottom:1px solid var(--line)}.brand{padding:0 8px 14px;font-size:1.6rem}.club,.navlabel,.sidebar-bottom{display:none}.nav{flex-direction:row;overflow:auto}.nav button{white-space:nowrap;padding:10px}.nav button svg{display:none}.topbar{height:60px;padding:0 16px}.crumb{display:none}.topright{width:100%;justify-content:space-between}main{padding:24px 16px}.heading{align-items:flex-start;flex-direction:column}h1{font-size:1.6rem}.stats{grid-template-columns:1fr 1fr;gap:10px}.stat{padding:16px}.stat small{display:block;margin:5px 0 0}.workspace{grid-template-columns:1fr}.roster{grid-template-columns:1fr 1fr}.insights{grid-column:auto}.insight-body{display:block}.dashboard-grid{grid-template-columns:1fr}.step{font-size:.75rem}.steps{gap:16px}.footer-note{gap:12px;flex-direction:column}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

.development-filters{display:flex;gap:12px;padding:18px 24px;flex-wrap:wrap}.analytics-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.analytics-body{padding:8px 24px 24px}.analytics-body>p{margin-top:18px}.skill-summary{display:grid;grid-template-columns:1fr 2fr auto auto;gap:18px;align-items:center;padding:14px 0}.skill-summary .sub{margin:0}@media(max-width:800px){.analytics-grid{grid-template-columns:1fr}.skill-summary{grid-template-columns:1fr 1fr}.development-filters select{width:100%}}

.intake-shell{max-width:780px;margin:auto;padding:32px 24px 64px}.intake-shell header{display:flex;align-items:center;justify-content:space-between;margin-bottom:52px}.intake-shell h1{margin:12px 0}.intake-section{padding:26px;margin-bottom:22px}.intake-section h2{margin-bottom:20px}.intake-positions{border:0;padding:0;margin:24px 0;display:flex;gap:14px;flex-wrap:wrap}.intake-positions legend{margin-bottom:12px;font-size:.875rem}.intake-positions label{display:flex;gap:6px;align-items:center}.intake-positions input,.intake-consent input{width:18px;height:18px;flex-shrink:0}.intake-consent{align-items:flex-start;margin-top:22px;line-height:1.6}#intake-error{color:#a52e35;margin:18px 0;line-height:1.5}@media(max-width:600px){.intake-shell{padding:24px 16px}.intake-section{padding:20px}.intake-shell header{margin-bottom:32px}}

.selection-filterbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:8px 12px;border-bottom:1px solid #edf0f4}
.selection-filterbar button{padding:6px 10px;font-size:.8rem}.selection-filterbar .sub{margin:0;font-size:.75rem}

.comparison-table th[scope=row]{font-weight:500;text-transform:none;letter-spacing:normal;color:#455570}.comparison-table td{min-width:130px}.comparison-table .sub{white-space:normal}

.skill-history{margin-top:20px}.skill-history caption{text-align:left;padding:0 0 12px;color:#687386;font-size:.8rem}.skill-history th{min-width:120px}.skill-history tbody th{text-align:left;font-weight:500}.earlier-skills{margin-top:20px}.earlier-skills summary{cursor:pointer;font-weight:600;padding:12px 0}.earlier-skills p{margin:10px 0}

.readiness-panel{margin-top:24px;padding:20px;border:1px solid #e4e8ef;border-radius:12px;background:#f8fafc}.readiness-panel>p{margin-top:12px}.readiness-checks{padding-left:20px;margin:16px 0}.readiness-checks li{margin-bottom:14px}.readiness-checks p{margin-top:4px;color:#687386;font-size:.85rem}.readiness-summary{min-width:190px;max-width:280px;white-space:normal}.readiness-summary .sub{white-space:normal;margin-top:6px}

.review-jump{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:20px 0}.review-jump label{font-size:.85rem;font-weight:600}.review-jump select{flex:1;min-width:180px;max-width:100%}.review-controls{flex-wrap:wrap;gap:12px}

/* Keyboard access without changing the resting layout. */
.skip-link{position:fixed;top:12px;left:12px;z-index:1000;padding:12px 18px;background:#fff;color:var(--accent-ink);border:2px solid var(--accent-strong);border-radius:8px;transform:translateY(-180%)}
.skip-link:focus{transform:translateY(0)}
a:focus-visible,summary:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}
.dialog-status{margin:0}
.dialog-status:not(:empty){margin-top:18px;padding:12px;border-left:3px solid var(--blue);background:var(--accent-wash);color:#344563;overflow-wrap:anywhere}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

.first-season-fields{min-width:0;margin:12px 0 20px;padding:18px;border:1px solid #dfe5ef;border-radius:10px}
.first-season-fields legend{padding:0 6px;font-size:.875rem;font-weight:600;color:#344563}
.first-season-fields label{display:grid;gap:8px;margin:10px 0}

.setup-guide{margin-bottom:28px}
.setup-guide .panel-head{align-items:flex-start;gap:16px;flex-wrap:wrap}
.setup-guide .panel-head p{margin:7px 0 0;overflow-wrap:anywhere}
.setup-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:#e5e9f1;border-top:1px solid #e5e9f1}
.setup-step{padding:24px;background:#fff;display:flex;align-items:flex-start;flex-direction:column;gap:12px}
.setup-step h3,.setup-step p{margin:0}
.setup-step p{flex:1}
.setup-status{font-size:.75rem;color:#59677c}
.setup-status.complete{color:#246345}
.setup-note{margin:0;padding:18px 24px;font-size:.8125rem;line-height:1.6}
@media(max-width:700px){.setup-grid{grid-template-columns:1fr}.setup-step{padding:20px}}
.password-field{margin:20px 0;min-width:0}
.auth-card .password-field{margin:0}
.password-field>label,.auth-card .password-field>label{display:block;margin:0 0 8px;font-size:.875rem}
.password-control{display:flex;align-items:stretch;gap:8px;min-width:0}
.password-control>input,.auth-card .password-control>input{flex:1;min-width:0;width:100%;margin:0}
.password-control>.password-visibility{flex:none;min-width:64px;min-height:44px;padding:8px 12px;font-size:.8125rem;color:#344563;background:#f7f9fc;border:1px solid #dfe5ef;border-radius:7px}
.password-control>.password-visibility:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.password-caps-hint{display:block;margin-top:8px;font-size:.8125rem;color:#80521d}
.password-caps-hint[hidden]{display:none}
.auth-card .auth-access-note{margin-top:18px;font-size:.8125rem;line-height:1.65;color:#59677c}
.workspace-start-choice{border:0;padding:0;margin:2px 0;min-width:0}
.workspace-start-choice legend{font-size:.875rem;font-weight:600;color:#344563;margin-bottom:10px}
.auth-card .workspace-start-choice label{display:flex;align-items:flex-start;gap:12px;padding:14px;margin:0 0 10px;border:1px solid #dfe5ef;border-radius:9px;cursor:pointer;font-weight:400}
.workspace-start-choice label:has(input:checked){border-color:var(--blue);background:var(--accent-wash)}
.workspace-start-choice label:focus-within{outline:3px solid var(--focus-ring);outline-offset:2px}
.auth-card .workspace-start-choice input{flex:none;width:16px;height:16px;margin:3px 0 0;padding:0;accent-color:var(--blue)}
.workspace-start-choice strong{display:block;font-size:.875rem;color:#344563;font-weight:600}
.workspace-start-choice small{display:block;margin-top:6px;font-size:.75rem;line-height:1.6;color:#59677c}
.workspace-start-choice>p{font-size:.75rem;line-height:1.6;color:#67748b;margin:0}
.team-toggle{display:flex;align-items:center;gap:9px;flex:1;min-width:0}
.team-toggle h2{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0}
.chevron{font-size:.8rem;color:var(--muted);width:13px;flex-shrink:0}
.team-title .card-menu-btn{padding:3px 9px;font-size:1rem;line-height:1.1}
.team-menu{position:relative;z-index:1200;margin:0 14px 10px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 26px rgba(6,18,31,.14);padding:6px;display:grid;gap:2px}
.team-menu[hidden]{display:none}
.team-menu button{text-align:left;padding:8px 10px;border:0;border-radius:5px;font-size:.85rem;font-weight:500;background:white}
.team-menu button:hover{background:var(--accent-tint)}
.insights .insight-body{padding:14px 18px 16px;display:block}
.insights .insight-row{margin:8px 0}
.insights .insight-title{margin:14px 0 9px}
.insights .skill{margin:9px 0}
.insights .note{margin-top:8px}
.dash-team{display:flex;align-items:center;justify-content:space-between;width:100%;border:0;padding:0;background:none;font-size:.875rem;color:#7b8492;text-align:left}
.dash-team strong{color:#2f3c51;font-weight:600}
.dash-team:hover strong{color:var(--accent-text)}
.dash-action{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:.875rem;color:#7b8492}
.dash-action strong{color:#2f3c51}
.dash-action button{white-space:nowrap}
.dash-empty{margin:0;font-size:.875rem;color:var(--muted)}
html{scrollbar-gutter:stable}
.widefilters{flex-wrap:wrap}
.widefilters button{white-space:nowrap}
.icon-btn{height:40px;width:40px;padding:0;display:inline-flex;align-items:center;justify-content:center;line-height:1}
.page-setting{display:flex;gap:10px;align-items:flex-start;margin-top:16px;font-size:.875rem;cursor:pointer}
.page-setting input{margin-top:3px}
.clubbtn{border:0;background:none;padding:0;text-align:left;color:inherit;font:inherit;font-size:.875rem;cursor:pointer;width:100%}
.clubbtn:hover{background:none}
#tactic-tip{position:fixed;z-index:2200;background:var(--brand-navy);color:#fff;font-size:.75rem;line-height:1.45;padding:7px 11px;border-radius:7px;max-width:260px;pointer-events:none;box-shadow:0 6px 18px #1a24402b;font-weight:400}
[data-tip]{cursor:help}
.tip-icon{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;background:#e3e8f2;color:#5b6a84;font-size:.65rem;font-weight:700;margin-left:6px;cursor:help;vertical-align:middle;flex:none}
.tip-icon:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}
.pietabs{display:flex;gap:6px;padding:12px 18px 0;flex-wrap:wrap}
.pietabs button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:4px 12px;font-size:.75rem;font-weight:550}
.pietabs button.active{background:var(--brand-navy);border-color:var(--brand-navy);color:#fff}
.piebox{display:flex;align-items:center;gap:16px;padding:14px 18px 18px}
.pie{width:84px;height:84px;border-radius:50%;flex:none}
.pie-legend{display:grid;gap:6px;font-size:.78rem;color:#55647c;flex:1}
.pie-legend>div{display:flex;align-items:center;gap:7px}
.pie-legend strong{margin-left:auto;color:#202838}
.pie-dot{width:9px;height:9px;border-radius:50%;flex:none}
.guide{border-bottom:1px solid var(--line);padding:12px 0}
.guide:last-child{border-bottom:0}
.guide summary{cursor:pointer;font-weight:550;font-size:.875rem;color:#2f3c51}
.guide ol{margin:12px 0 4px;padding-left:20px;color:#637189;font-size:.875rem;line-height:1.8}
.support-inbox-panel{margin-top:24px}
.support-form{margin-top:20px;border-top:1px solid var(--line);padding-top:18px;display:grid;gap:14px}
.support-lead{margin:0;color:#637189;font-size:.85rem;line-height:1.6}
.support-form label{display:grid;gap:6px;font-size:.8rem;font-weight:600;color:#3c4763}
.support-form input,.support-form select{padding:10px 12px;border:1px solid #d8dfec;border-radius:7px;background:#fff;color:#202838}
.support-form textarea{padding:10px 12px}
.support-form .form-actions{margin:0}
.support-status{margin:0;font-size:.8rem;color:#b0433a;min-height:1em}
.support-msg{padding:14px 0;border-bottom:1px solid var(--line)}
.support-msg:last-child{border-bottom:0}
.support-msg-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:.875rem}
.support-msg-head .sub{margin:0}
.support-tag{display:inline-block;margin-top:6px;padding:3px 9px;border-radius:20px;background:#eef1f8;color:#55618a;font-size:.72rem;font-weight:600;text-transform:capitalize}
.support-msg p{margin:8px 0 0;white-space:pre-line;color:#42516a;font-size:.85rem;line-height:1.6}
.modal-actions{display:flex;align-items:center;gap:8px 14px;flex-wrap:wrap;justify-content:flex-end}
.modal-actions .icon-btn{height:34px;width:34px}
.icon-btn.toggle.active{border-color:var(--blue);background:color-mix(in srgb,var(--blue) 10%,#fff);color:var(--accent-text)}
.move-list{display:grid;gap:8px;margin-top:14px}
.move-list button{display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left;padding:12px 14px}
.move-list button.current{border-color:var(--blue);background:color-mix(in srgb,var(--blue) 8%,#fff)}
.move-list button .sub{margin:0}
.check-row{display:flex;gap:24px;flex-wrap:wrap;margin-top:18px}
.check-row .nc-check{margin-top:0;flex:1;min-width:230px}
.sample-choice{display:flex;align-items:flex-start;gap:8px;line-height:1.6;font-weight:400;color:#67748b;font-size:.875rem}
.sample-choice input{margin-top:4px;accent-color:var(--blue)}
.umpire-details{display:grid;gap:8px;margin-top:14px;font-size:.875rem}
.umpire-details[hidden]{display:none}

.icon-btn.primary{padding:0}
dialog.wide{width:min(900px,94vw)}
.season-counts{margin-top:14px;font-size:.85rem;color:#7b8492}
.season-counts p{margin:6px 0 0}
/* Touch targets: on coarse pointers (phones, tablets) small controls grow to at least 44 x 44 CSS pixels. Desktop sizing is unchanged. */
@media (pointer:coarse){
.icon-btn,.modal-actions .icon-btn,.card-menu-btn,.team-title .card-menu-btn,.rowmenu .card-menu-btn{min-height:44px;min-width:44px}
.icon-btn,.modal-actions .icon-btn{height:44px;width:44px}
.card-menu button,.teampick-menu label,.move-list button,.nav button,.nav a{min-height:44px}
.nc-dot,.tip-icon{position:relative}.nc-dot::after,.tip-icon::after{content:"";position:absolute;inset:-14px}
table button,.widefilters select,.widefilters input{min-height:44px}
input[type=checkbox],input[type=radio]{min-width:24px;min-height:24px}
}

/* responsive:modal - dialogs become full-height sheets on phones (and short landscape screens) */
dialog{overscroll-behavior:contain}
.modalhead{position:sticky;top:0;z-index:3;background:#fff;border-radius:14px 14px 0 0}
.modalhead h2{margin:0;font-size:1.15rem;min-width:0;overflow-wrap:anywhere}
.modal-actions{margin-left:auto}
#close{min-height:36px;min-width:36px}
@media (max-width:640px),(max-height:500px) and (max-width:900px){
dialog,dialog.wide{width:100vw;max-width:100vw;height:100vh;height:100dvh;max-height:100vh;max-height:100dvh;margin:0;border:0;border-radius:0;box-shadow:none;inset:0}
dialog[open]{overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:env(safe-area-inset-bottom)}
dialog::backdrop{backdrop-filter:none}
.modalhead{padding:10px 14px;padding-top:calc(10px + env(safe-area-inset-top));padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right));border-radius:0;flex-wrap:nowrap;column-gap:10px;min-height:56px}
.modalhead h2{font-size:1.05rem;flex:1}
.modal-actions{flex-wrap:nowrap;flex:none;gap:6px}
#close{min-width:44px;min-height:44px;font-size:1.05rem}
.modalbody{padding:14px;padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right))}
.modalbody input,.modalbody select,.modalbody textarea,dialog input,dialog select,dialog textarea{font-size:16px}
.modalbody .form-actions,dialog .form-actions{position:sticky;bottom:0;z-index:2;margin:18px -14px 0;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--line);justify-content:stretch;flex-wrap:wrap}
.modalbody .form-actions>*,dialog .form-actions>*{flex:1 1 auto;min-height:44px}
}
@media (max-width:640px) and (pointer:coarse){#close,.modalhead button{min-height:44px}}

/* responsive:staff - auth screens */
.auth-layout{min-height:100vh;min-height:100dvh}
@media (max-width:760px){
.auth-layout{display:flex;flex-direction:column}
.auth-story{padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top));gap:0;flex-direction:row;align-items:center;justify-content:flex-start;flex:none}
.auth-story>div:not(.brand),.auth-story .auth-foot{display:none}
.auth-form-area{flex:1;align-items:flex-start;padding:18px 16px 12px;padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}
.auth-card{max-width:520px;margin:0 auto}
.auth-card>.auth-eyebrow{display:none}
.auth-card h2{font-size:1.45rem;margin:0 0 6px;letter-spacing:-.5px}
.auth-card form{margin-top:16px;gap:14px}
.auth-card .auth-access-note{margin-top:8px;font-size:.8125rem;line-height:1.5}
.auth-card input,.auth-card select{font-size:16px;min-height:44px}
.auth-card .primary{position:sticky;bottom:0;min-height:48px;box-shadow:0 -10px 14px -4px #fff;z-index:2}
.auth-switch{margin:14px 0 6px}
.auth-switch button,.auth-card form+p button,.auth-card .linklike{min-height:44px;padding:0 6px}
.auth-card .auth-hint{margin:0}
.auth-card .workspace-start-choice label{padding:12px}
}
@media (max-width:760px) and (max-height:500px){.auth-story{padding:6px 16px}.auth-form-area{padding-top:10px}}
@media (min-width:761px) and (max-width:1024px){.auth-story{padding:40px 36px}.auth-story h1{font-size:2.6rem;letter-spacing:-1.2px}}

/* responsive:waitlist - public form, waitlist/seasons tables become cards, filter bars */
.intake-step{display:flex;align-items:center;gap:10px;font-size:1.05rem;margin:0 0 16px}
.intake-step span{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--accent-tint);color:var(--accent-text);font-size:.8rem;font-weight:700;flex:none}
.intake-section .intake-step:not(:first-child){margin-top:28px;padding-top:20px;border-top:1px solid var(--line)}
.intake-section>label:not(.sample-choice):not(.review-label){display:grid;gap:8px;font-size:.875rem;margin-top:14px}
@media(max-width:760px){
.intake-shell{padding:14px 16px calc(24px + env(safe-area-inset-bottom))}
.intake-shell header{margin-bottom:18px}
.intake-shell h1{font-size:1.6rem;margin:6px 0 8px}
.intake-shell .notice{margin:14px 0!important;padding:12px 14px;line-height:1.5}
.intake-section{padding:16px 14px;margin-bottom:14px;border-radius:10px}
.intake-section input:not([type=checkbox]),.intake-section textarea{font-size:16px}
.intake-section input:not([type=checkbox]){height:48px;min-height:48px}
.intake-section .form-grid{gap:14px}
@media(min-width:520px){.intake-section .form-grid>.full{grid-column:1/-1}}
@media(max-width:519px){.intake-section .form-grid>label:not(:has([name=dob])):not(:has([name=years])){grid-column:1/-1}}
@media(min-width:340px){.intake-section .form-grid{grid-template-columns:1fr 1fr}}
.intake-positions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:18px 0}
.intake-positions legend{margin-bottom:4px}
.intake-positions label{justify-content:center;min-height:44px;padding:0 4px;border:1px solid #dfe5ef;border-radius:8px;background:#fafbfd;gap:6px;font-weight:600;cursor:pointer}
.intake-positions label:has(input:checked){border-color:var(--blue);background:var(--accent-tint);color:var(--accent-ink)}
.intake-positions label:focus-within{outline:3px solid var(--focus-ring);outline-offset:1px}
.intake-section .sample-choice{min-height:44px;padding:4px 0;font-size:.9rem}
.intake-section .sample-choice input{width:22px;height:22px;margin-top:2px}
#intake-error:not(:empty){padding:12px 14px;background:#fff1f2;border:1px solid #f3c6ca;border-radius:8px;margin:0 0 12px}
#intake-error button{margin-top:8px;min-height:44px}
#public-intake>button[type=submit]{position:sticky;bottom:max(10px,env(safe-area-inset-bottom));z-index:5;width:100%;min-height:52px;font-size:1rem;box-shadow:0 -10px 16px 4px #f6f7f9,0 6px 18px color-mix(in srgb,var(--blue) 25%,transparent)}
#public-intake>p{font-size:.85rem;margin-top:14px}
.intake-shell button.primary,.intake-shell #check-waitlist-opening{min-height:48px}

/* tables -> cards */
.tablewrap:has(.rs-stack){overflow:visible}
.rs-stack,.rs-stack tbody{display:block;width:100%}
.rs-stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.rs-stack tr{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;row-gap:3px;padding:12px 6px 12px 14px;border-bottom:1px solid var(--line);align-items:center}
.rs-stack tr:last-child{border-bottom:0}
.rs-stack td{display:flex;justify-content:space-between;gap:12px;grid-column:1/-1;padding:0;border:0;font-size:.875rem;white-space:normal;min-width:0;overflow-wrap:anywhere}
.rs-stack td[data-label]::before{content:attr(data-label);color:#7b8492;font-size:.8125rem;flex:none}
.rs-stack td.rs-title{grid-column:1;grid-row:1;justify-content:flex-start;flex-wrap:wrap;align-items:center;gap:4px 6px;font-weight:600;font-size:1rem;color:#202838}
.rs-stack td.rs-title::before,.rs-stack td.rs-menu::before,.rs-stack td.rs-status::before{content:none}
.rs-stack td.rs-title .sub{flex-basis:100%;margin-top:0}
.rs-stack td.rs-menu{grid-column:2;grid-row:1 / span 2;align-self:start;justify-content:flex-end}
.rs-stack td.rs-status{grid-column:1;grid-row:2;justify-content:flex-start;margin-bottom:4px}
.rs-stack td.rs-skip{display:none}
.rs-stack td.rs-title .tag-consent,.rs-stack td.rs-title .tag-umpire{margin-left:0}
.rs-stack .card-menu{right:6px}

/* filter bars: search full width, selects side by side */
.widefilters:has(#waitlist-search),.widefilters:has(#seasons-search){display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px}
.widefilters>#waitlist-search,.widefilters>#seasons-search{grid-column:1/-1;min-width:0}
.widefilters>#reset-waitlist-filters,.widefilters>#reset-seasons-filters{grid-column:1/-1}
.widefilters>select{min-width:0;font-size:16px}
.widefilters>#waitlist-search,.widefilters>#seasons-search{font-size:16px}
}
@media(max-width:760px) and (pointer:coarse){.rs-stack td.rs-menu .card-menu-btn{margin:-6px 0}}
@media(min-width:761px) and (max-width:1100px){.widefilters:has(#waitlist-search) #waitlist-search,.widefilters:has(#seasons-search) #seasons-search{flex:1 1 100%}}

/* responsive:shell - app shell, navigation, dashboard (tablet <=900 and phone <=760) */
@media (max-width:900px){
.shell{display:block}
.sidebar{position:sticky;top:0;z-index:30;height:auto;flex-direction:row;align-items:center;gap:6px;padding:6px 10px 6px 12px;border-right:0;border-bottom:1px solid var(--line);overflow:visible}
.sidebar .brand{padding:0;font-size:1.35rem;flex:none}
.sidebar .brand svg{width:28px;height:28px}
.sidebar .club,.sidebar .navlabel,.sidebar .sidebar-bottom{display:none}
.sidebar .nav{flex:1;min-width:0;flex-direction:row;gap:2px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;overscroll-behavior-x:contain;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),transparent);padding-right:18px}
.sidebar .nav::-webkit-scrollbar{display:none}
.sidebar .nav button{flex:none;white-space:nowrap;min-height:44px;padding:0 12px;border-radius:8px;gap:8px}
.sidebar .nav button svg{display:none}
.sidebar .nav button.active{box-shadow:inset 0 -3px 0 var(--blue)}
.topbar{height:auto;min-height:52px;padding:6px 14px;gap:10px}
.topbar .crumb{display:none}
.topbar .topright{width:100%;justify-content:flex-end;gap:8px}
.topbar .topright #season-picker{flex:1;min-width:0;max-width:none;height:44px;font-size:1rem}
.topbar .avatar-btn{width:44px;height:44px;font-size:.8rem}
.topbar .icon-btn{width:44px;height:44px}
main{padding:20px 16px}
}
@media (max-width:760px){
.sidebar .brand .wordmark{display:none}
.topbar{padding:6px 12px}
main{padding:14px 12px 28px}
.heading{gap:10px;margin-bottom:14px}
.heading h1{font-size:1.4rem;letter-spacing:-.6px;margin-bottom:3px}
.heading p{margin:0;font-size:.85rem}
.heading .actions{width:100%;gap:8px}
.heading .actions button{min-height:44px}
.heading .actions>.primary:only-child{width:100%}
.stats{gap:8px;margin-bottom:14px}
.stat{padding:10px 12px}
.stat label{font-size:.78rem;margin-bottom:2px}
.stat strong{font-size:1.45rem;letter-spacing:-.5px}
.stat small{margin:0;font-size:.75rem}
.tip-icon{width:18px;height:18px;font-size:.75rem;margin-left:4px;position:relative}
.tip-icon::after{content:"";position:absolute;inset:-13px}
.panel-head{padding:12px 14px;gap:10px}
.dashboard-grid{gap:12px}
.dashboard-list{padding:6px 14px 12px;gap:2px}
.dashboard-list>div:not(.person):not(.dash-action){display:grid;gap:0}
.dash-team{min-height:44px;gap:10px}
.dash-action{min-height:44px}
.dash-action button,.panel-head .flat{min-height:44px}
.dash-team strong{min-width:0}
.pietabs{padding:10px 14px 0;gap:6px}
.pietabs button{min-height:44px;padding:4px 14px;font-size:.8125rem}
.piebox{padding:12px 14px 16px;gap:14px}
.pie-legend{font-size:.8125rem}
.setup-guide{margin-bottom:14px}
.setup-guide .panel-head{padding:12px 14px}
.setup-step{padding:14px;gap:8px}
.setup-note{padding:12px 14px}
.setup-step .primary,.setup-step button{min-height:44px}
#toast{left:12px;right:12px;bottom:calc(14px + env(safe-area-inset-bottom));transform:none;text-align:center;max-width:none}
}
@media (max-width:360px){
.stat label{font-size:.75rem}
.stat strong{font-size:1.3rem}
.dash-team{flex-wrap:wrap;gap:0 10px}
}
@media (max-width:760px) and (max-height:500px){
.sidebar{padding-top:2px;padding-bottom:2px}
.topbar{min-height:48px}
.stats{grid-template-columns:repeat(4,minmax(0,1fr))}
.dashboard-grid{grid-template-columns:1fr 1fr}
}
@media (min-width:761px) and (max-width:1100px){
.dashboard-grid{grid-template-columns:1fr 1fr}
.stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.stat{padding:14px}
}

/* responsive:reviews - approvals, coaches and reviews tables become stacked cards (cards go two-up on tablets) */
@media (max-width:1024px){
.tablewrap:has(.rv-stack){overflow:visible}
.rv-stack{display:block;border:0}
.rv-stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.rv-stack tbody{display:grid;grid-template-columns:minmax(0,1fr)}
.rv-stack tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px 14px;align-content:start;padding:12px 14px;border-bottom:1px solid var(--line);position:relative}
.rv-stack td{display:block;padding:0;border:0;white-space:normal;min-width:0;max-width:none;overflow-wrap:anywhere;font-size:.875rem}
.rv-stack td:first-child{grid-column:1/-1;order:-2;padding-right:48px;font-size:1rem}
.rv-stack td:last-child{position:absolute;top:2px;right:2px}
.rv-stack td::before{display:block;font-size:.75rem;color:var(--muted);margin-bottom:2px}
.rv-stack .sub{margin-top:2px}
.rv-stack td.rv-empty{display:none!important}
.rv-stack .readiness-summary{min-width:0;max-width:none}
.rv-approvals td:nth-child(2)::before{content:"Roster"}.rv-approvals td:nth-child(3)::before{content:"Positions unfilled"}.rv-approvals td:nth-child(4)::before{content:"Coach"}.rv-approvals td:nth-child(5)::before{content:"Manager"}.rv-approvals td:nth-child(7)::before{content:"Readiness"}
.rv-approvals tr,.rv-reviews tr{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}
.rv-approvals td:first-child,.rv-reviews td:first-child{grid-column:1;padding-right:0}
.rv-approvals td:nth-child(6){grid-column:2;order:-1;justify-self:end;margin-right:44px;align-self:start}.rv-approvals td:nth-child(6)::before{content:none!important}
.rv-approvals td:nth-child(7){grid-column:1/-1}
.rv-reviews td:nth-child(2)::before{content:"Players"}.rv-reviews td:nth-child(3)::before{content:"Coach"}.rv-reviews td:nth-child(4)::before{content:"Progress"}.rv-reviews td:nth-child(6)::before{content:"Link expiry"}
.rv-reviews td:nth-child(5){grid-column:2;order:-1;justify-self:end;margin-right:44px;align-self:start}.rv-reviews td:nth-child(5)::before{content:none!important}
.rv-reviews td:nth-child(4),.rv-reviews td:nth-child(6){grid-column:1/-1}
.rv-coaches td:nth-child(4)::before{content:"Qualifications"}.rv-coaches td:nth-child(5)::before{content:"Season workload"}.rv-coaches td:nth-child(6)::before{content:"Coach of"}.rv-coaches td:nth-child(7)::before{content:"Manager of"}
.rv-coaches td:nth-child(2),.rv-coaches td:nth-child(3),.rv-coaches td:nth-child(4),.rv-coaches td:nth-child(5){grid-column:1/-1}.rv-coaches td:nth-child(2),.rv-coaches td:nth-child(3){margin-top:-4px}
.rv-coaches td:nth-child(4){display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.rv-coaches td:nth-child(4)::before{display:block}
.rv-coaches td:nth-child(2),.rv-coaches td:nth-child(3){order:-1}
.rv-stack .teampick{display:block}.rv-stack .teampick-btn{width:100%;min-width:0}
.rv-stack .teampick-menu{left:0;right:auto;min-width:min(240px,calc(100vw - 32px))}
.rv-coaches td:nth-child(7) .teampick-menu{left:auto;right:0}
.rv-stack td:first-child>button{font-size:1rem;font-weight:600;padding:0;text-align:left;min-height:44px;display:inline-flex;align-items:center}
}
@media (min-width:640px) and (max-width:1024px){
.rv-stack tbody{grid-template-columns:repeat(2,minmax(0,1fr))}
.rv-stack tr:nth-child(odd){border-right:1px solid var(--line)}
}
@media (max-width:760px){
.rv-filters{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px}
.rv-filters>input{grid-column:1/-1}
.rv-filters>input,.rv-filters select{min-width:0;width:100%;font-size:16px;min-height:44px}
.rv-filters>button{min-height:44px}
.rv-filters>button:nth-child(even){grid-column:1/-1}
}
@media (min-width:761px) and (max-width:1024px){.rv-filters{flex-wrap:wrap}.rv-filters>input{flex:1 1 150px;min-width:150px}}

/* responsive:staff - stacked-card tables on phones */
@media (max-width:640px){
table.stack-table,table:has(td.stack-primary){display:block;white-space:normal}
table.stack-table thead,table:has(td.stack-primary) thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
table.stack-table tbody,table:has(td.stack-primary) tbody{display:grid;gap:8px;padding:10px}
table.stack-table tr,table:has(td.stack-primary) tr{display:grid;grid-template-columns:1fr auto;gap:2px 10px;position:relative;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff}
table.stack-table td,table:has(td.stack-primary) td{display:flex;gap:10px;justify-content:space-between;grid-column:1/-1;padding:3px 0;border:0;white-space:normal;overflow-wrap:anywhere;font-size:.875rem;text-align:left}
table.stack-table td[data-label]::before,table:has(td.stack-primary) td[data-label]::before{content:attr(data-label);flex:none;min-width:76px;color:#8b94a3;font-size:.75rem;padding-top:2px}
table.stack-table td.stack-primary,table:has(td.stack-primary) td.stack-primary{grid-column:1;font-weight:600;color:#263247;order:-1}
table.stack-table td.stack-primary::before,table:has(td.stack-primary) td.stack-primary::before{display:none}
table.stack-table td.stack-menu,table:has(td.stack-primary) td.stack-menu{grid-column:2;grid-row:1;justify-content:flex-end;padding:0}
table.stack-table td.stack-menu:empty{display:none}
table.stack-table td button:not(.card-menu-btn){min-height:44px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:#fff}
}

/* responsive:players - player directory */
.actions-toggle{display:none}
.actions-secondary{display:contents}
@media (min-width:901px) and (max-width:1100px){
.dir-table td,.dir-table th{padding:12px 12px}
.dir-table .c-prev,.dir-table .c-long,.dir-table .c-rev,.dir-table thead th:nth-child(4),.dir-table thead th:nth-child(8),.dir-table thead th:nth-child(10){display:none}
.dir-stats{gap:12px}
.dir-stats .stat{padding:14px 16px}
}
@media (max-width:640px){
.heading:has(.actions-toggle) .actions{width:100%;display:flex;flex-wrap:wrap;gap:8px}
.heading:has(.actions-toggle) .actions>.primary{flex:1 1 auto;min-height:44px}
.actions-toggle{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 16px}
.actions-secondary{display:none;order:3;width:100%;grid-template-columns:1fr 1fr;gap:8px}
.heading.show-more .actions-secondary{display:grid}
.actions-secondary button{min-height:44px;padding:8px 10px}
.dir-stats{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.dir-stats .stat{padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.dir-stats .stat label{margin:0;font-size:.75rem;line-height:1.25;order:1;flex:1;min-width:0}
.dir-stats .stat strong{font-size:1.35rem;letter-spacing:-.5px;order:2}
.dir-stats .stat small{display:none}
.dir-filters{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;padding:10px 12px}
.dir-filters>input{grid-column:1/3;grid-row:1;min-width:0;width:100%}
.dir-filters>#selection-filters{grid-column:3;grid-row:1;min-height:44px}
.dir-filters>#sort{grid-column:1;grid-row:2;min-width:0;width:100%}
.dir-filters>#registry-filter{grid-column:2/4;grid-row:2;min-width:0;width:100%}
.dir-filters input,.dir-filters select{font-size:16px;min-height:44px}
}


/* responsive:staff - staff filters, empty tables */
@media (max-width:640px){
#staff-search,#staff-role-filter,#staff-sort,.widefilters input,.widefilters select{font-size:16px}
.widefilters:has(#staff-search){display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px}
.widefilters:has(#staff-search) #staff-search{grid-column:1/-1;min-width:0}
.widefilters:has(#staff-search) button{grid-column:1/-1;min-height:44px}
.tablewrap table:not(:has(tbody tr)){display:none}
}

@media (max-width:640px){
.dir-filters #sort,.dir-filters #registry-filter{text-overflow:ellipsis;padding-left:8px;padding-right:4px}
}

@media (max-width:640px){
}

@media (max-width:640px){
.dir-filters{grid-template-columns:repeat(6,minmax(0,1fr))}
.dir-filters>input{grid-column:1/5}
.dir-filters>#selection-filters{grid-column:5/7;padding:0 6px}
.dir-filters>#sort{grid-column:1/4}
.dir-filters>#registry-filter{grid-column:4/7}
}

@media (max-width:760px){
/* responsive:shell - dashboard development rows */
.dashboard-list .person{min-height:44px}
.dashboard-list .person button[data-profile]{min-height:44px;text-align:left}
.dashboard-list .person .nc-dot{position:relative}
.dashboard-list .person .nc-dot::after{content:"";position:absolute;inset:-17px}
}
@media (max-width:640px){
#selection-filter-form>p{font-size:.8125rem;line-height:1.45;margin:0 0 8px!important}
#selection-filter-form .form-grid{grid-template-columns:1fr 1fr;gap:10px;margin-top:12px!important}
#selection-filter-form .form-grid label{font-size:.8125rem;min-width:0}
#selection-filter-form .form-grid label:has([name=club],[name=team],[name=division],[name=skill],[name=allocation]){grid-column:1/-1}
#selection-filter-form .form-grid input,#selection-filter-form .form-grid select{min-height:44px;width:100%;min-width:0}
}


/* responsive:builder - team builder: single-column teams, tablet multi-column (the List view's pool card is gone: tb:pool-drawer) */
.builder-more-btn,.hint-tap{display:none}
@media (min-width:761px) and (max-width:1100px){
.workspace{grid-template-columns:minmax(0,1fr);gap:16px}
.workspace .teams{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));align-items:start;gap:14px}
.workspace .teams>.empty{grid-column:1/-1}
.workspace .roster{grid-template-columns:1fr}
.workspace .insights{grid-column:auto}
}
@media (max-width:760px){
.heading .actions:has(.builder-more-btn){display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) 48px;gap:8px}
.heading .actions:has(.builder-more-btn) #add-team{order:1;grid-column:span 2}
.heading .actions:has(.builder-more-btn) #review{order:2;grid-column:span 3}
.heading .actions:has(.builder-more-btn) .builder-more-btn{order:3;grid-column:span 1;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 4px}
.heading .actions:has(.builder-more-btn) .secondary-act,.heading .actions:has(.builder-more-btn) #saved-selection-views{order:4;display:none;justify-content:center}
.heading .actions:has(.builder-more-btn) #generate-placements{grid-column:1/-1}
.heading .actions:has(.builder-more-btn) #compare{grid-column:1/4}
.heading .actions:has(.builder-more-btn) #saved-selection-views{grid-column:4/-1}
.heading .actions:has(.builder-more-btn[aria-expanded=true]) .secondary-act,.heading .actions:has(.builder-more-btn[aria-expanded=true]) #saved-selection-views{display:flex;align-items:center}
.selection-filterbar{padding-left:10px;padding-right:10px}
.workspace .teams{gap:10px}
.team .team-title{padding:6px 6px 6px 14px;gap:6px}
.team .team-toggle{min-height:48px;gap:8px}
.team .team-toggle h2{font-size:1rem;gap:4px 8px}
.team .team-title .actions{display:flex;align-items:center;gap:2px;flex:none}
.team .team-title .actions .tag{font-size:.75rem;white-space:nowrap}
.team .team-toggle .chevron{font-size:1rem;width:18px;text-align:center}
.team .team-toggle h2 .count{font-weight:500}
.player .card-menu-btn{border-color:transparent;background:none;font-size:1.25rem}
.team .team-menu{margin:0 10px 8px}
.team .team-menu button{min-height:44px;font-size:1rem}
.team .roster{grid-template-columns:1fr;padding:0 10px 10px;gap:6px;min-height:0}
.roster .player{padding:6px 4px 6px 10px;gap:6px;cursor:default}
.roster .player .avatar{width:32px;height:32px}
.player .person{gap:10px}
.player .person>div{min-width:0}
.player .person button[data-profile]{min-height:28px;font-size:.95rem;font-weight:600;overflow-wrap:anywhere}
.player .person button[data-profile]{position:relative}.player .person button[data-profile]::after{content:"";position:absolute;inset:-10px 0}
.roster .player .avatar{font-size:.75rem}
.player .positions{margin-top:0}
.player .player-meta{gap:2px}
.player .shared-tag{font-size:.75rem}
.team .roster:not(:empty)+.drop{display:none}
.team .drop{margin:0 10px 10px;padding:12px;font-size:.85rem}
.hint-drag{display:none}.hint-tap{display:inline}
.card-menu button,.card-menu{font-size:1rem}
.insights .panel-head{flex-wrap:wrap;gap:10px;padding:14px}
.insights #insights-team{font-size:16px;min-height:44px}
.insights .insight-body{padding:12px 14px 14px}
.footer-note{margin-top:12px}
}
@media (min-width:520px) and (max-width:760px){
.workspace .teams{grid-template-columns:1fr 1fr;align-items:start}
.team .roster{grid-template-columns:1fr}
}
@media (max-width:760px) and (max-height:500px){
.workspace .teams{grid-template-columns:1fr 1fr;align-items:start}
}
@media (hover:none) and (pointer:coarse){
.hint-drag{display:none}.hint-tap{display:inline}
.player{cursor:default}
}
/* responsive:modal - control height */
@media (max-width:640px),(max-height:500px) and (max-width:900px),(pointer:coarse){dialog input:not([type=checkbox]):not([type=radio]):not([type=range]),dialog select{min-height:44px}}
@media (max-width:760px){
/* responsive:shell - stat tips sit in the corner so labels never orphan the ? */
.stat{position:relative}
.stat label{padding-right:20px}
.stat .tip-icon{position:absolute;top:10px;right:10px;margin:0}
}
@media (max-width:400px){
.topbar .topright #season-picker{padding:0 4px 0 10px}
.topbar .topright{gap:6px}
}
@media (min-width:480px) and (max-width:900px){
/* responsive:shell - wide phones/tablets: don't stretch single controls edge to edge */
.heading .actions>.primary:only-child{width:auto}
.topbar .topright #season-picker{flex:0 1 320px}
}
@media (min-width:761px) and (max-width:1100px){
/* responsive:shell - tablet stat cards keep detail text on its own line */
.stat small{display:block;margin:4px 0 0}
}
@media (pointer:coarse){
/* responsive:shell - 44px touch targets on any touch screen width */
.dash-team,.dash-action,.dash-action button,.panel-head .flat,.pietabs button,.heading .actions button,.dashboard-list .person button[data-profile],.setup-step button{min-height:44px}
.dashboard-list .person{min-height:44px}
.tip-icon{width:18px;height:18px;font-size:.75rem}
.topbar .avatar-btn{width:44px;height:44px}
}
/* responsive:staff - account page */
@media (max-width:640px){
.form-actions:has(#security-password){display:grid!important;grid-template-columns:1fr 1fr;gap:8px!important}
.form-actions:has(#security-password) button{min-height:44px;padding:0 8px}
.analytics-body:has(#account-sessions-slot),#account-sessions-slot{padding-left:14px;padding-right:14px}
#account-sessions-slot .form-actions button,#signout-other-sessions{width:100%;min-height:44px}
}


/* responsive:players - profile sheet */
.profile-jump{display:none}
@media (max-width:640px){
.modalhead:has(#preview-placement){position:static;flex-wrap:wrap;row-gap:6px;padding-bottom:8px}
.modalhead:has(#preview-placement) h2{order:1}
.modalhead:has(#preview-placement) .modal-actions{display:contents}
.modalhead:has(#preview-placement) #close{order:2;position:fixed;top:calc(6px + env(safe-area-inset-top));right:max(8px,env(safe-area-inset-right));z-index:6;background:#fff;box-shadow:0 1px 6px rgba(6,18,31,.18)}
.modalhead:has(#preview-placement) .icon-btn{order:3;flex:1 1 0;width:auto;min-width:40px;min-height:44px;height:44px}
.modalhead:has(#preview-placement) h2{padding-right:52px}
.profile-jump{display:flex;gap:6px;position:sticky;top:0;z-index:4;margin:-14px -14px 12px;padding:8px 56px 8px 14px;background:#fff;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none;min-height:56px;align-items:center}
.profile-jump::-webkit-scrollbar{display:none}
.profile-jump button{flex:none;min-height:40px;padding:0 14px;border-radius:999px;font-size:.8125rem;background:var(--accent-wash);border-color:transparent}
.profile-jump button[aria-current=true]{background:var(--blue);color:var(--on-blue)}
.modalbody h3[id^=profile-sec-],.profilehero#profile-sec-top{scroll-margin-top:64px}
}

@media (max-width:640px){
.modalhead:has(#preview-placement) h2{flex:1 1 100%;min-height:44px;display:flex;align-items:center}
.modalhead:has(#preview-placement){padding-top:calc(4px + env(safe-area-inset-top))}
.modalhead:has(#preview-placement) .icon-btn{flex:1 1 40px}
}

/* responsive:staff - organisation, support */
@media (max-width:640px){
#theme-form input[type=color]{width:64px;min-height:44px;padding:2px}
#theme-form .form-actions button,#edit-organisation-profile,#view-activity{min-height:44px}
#theme-form .form-actions{justify-content:stretch}#theme-form .form-actions button{flex:1}
.guide-list summary{min-height:44px;display:flex;align-items:center;padding:0}
.guide-list ol{padding-left:20px}
.panel:has(#support-form) input,.panel:has(#support-form) select,.panel:has(#support-form) textarea,.panel:has(select[name=category]) input,.panel:has(select[name=category]) select,.panel:has(select[name=category]) textarea{font-size:16px;min-height:44px}
.panel:has(select[name=category]) textarea{min-height:120px}
.panel:has(select[name=category]) button.primary{width:100%;min-height:48px}
}

@media (max-width:640px){
.modalhead:has(#preview-placement) .icon-btn{min-width:44px;flex:1 1 44px}
.profile-jump button{min-height:44px}
.profile-jump{min-height:60px}
.modalbody h3[id^=profile-sec-],.profilehero#profile-sec-top{scroll-margin-top:68px}
}

@media (max-width:640px){
.dir-stats .stat .tip-icon{position:relative;top:auto;right:auto;margin:0 0 0 4px;display:inline-flex}
}

@media (max-width:359px){
.dir-table td.c-last::before{content:"Δ"}
.dir-table tr{column-gap:8px;padding-left:12px}
}
@media (min-width:540px) and (max-width:760px){.auth-card{max-width:600px}.auth-card form{grid-template-columns:1fr 1fr;column-gap:14px}.auth-card form>:not(label):not(.password-field){grid-column:1/-1}}

@media (max-width:900px){
.dir-wrap{overflow:visible}
.dir-table,.dir-table tbody{display:block;width:100%}
.dir-table thead{display:none}
.dir-table tr{display:flex;flex-wrap:wrap;align-items:center;column-gap:10px;row-gap:0;padding:4px 52px 8px 14px;border-bottom:1px solid var(--line);position:relative}
.dir-table tr::after{content:"";order:4;flex:0 0 100%;height:0}
.dir-table td{display:block;padding:0;border:0;white-space:normal;font-size:.8125rem;color:#5b667a}
.dir-table td[data-label]::before{content:attr(data-label);color:#8b94a3;font-size:.75rem;margin-right:4px}
.dir-table .c-player{order:1;flex:1 1 0;min-width:0;font-size:.95rem}
.dir-table .c-player button{text-align:left;font-weight:600;min-height:44px;overflow-wrap:anywhere}
.dir-table .c-player .sub{display:inline;margin-left:6px}
.dir-table .c-cur{order:2;font-weight:600;color:#202838}
.dir-table .c-last{order:3}
.dir-table .c-pos{order:5}
.dir-table .c-exp{order:6}
.dir-table .c-team{order:7}
.dir-table .c-trend{order:8}
.dir-table .c-exp::before,.dir-table .c-team::before{content:"·";margin-right:10px;color:#b0b8c6}
.dir-table .c-prev,.dir-table .c-long,.dir-table .c-rev{display:none}
.dir-table .c-menu{position:absolute;top:4px;right:4px}
.dir-table .c-menu .card-menu-btn{min-height:44px;min-width:44px}
.dir-table .card-menu{right:0;top:44px;max-width:calc(100vw - 24px)}
.dir-table .c-player{display:flex;flex-wrap:wrap;align-items:center;column-gap:0}
.dir-table .c-player .nc-dot{min-height:0;min-width:0;height:11px;width:11px}
.dir-table .c-player .sub{flex-basis:100%;margin:-8px 0 0;display:block;line-height:1}
.dir-table .c-player button{min-height:40px}
.dir-table .c-player{display:contents}
.dir-table .c-player button[data-profile]{order:1;flex:0 1 auto;min-width:0;text-align:left}
.dir-table .c-player .nc-dot{order:1;margin-left:6px}
.dir-table .c-player .nc-dot+.nc-dot{margin-left:4px}
.dir-table .c-player .sub{order:9;flex:none;margin:0;display:inline;line-height:1.4;font-size:.75rem;color:#8b94a3}
.dir-table .c-cur{margin-left:auto}
.dir-table .c-trend .tag{padding:2px 6px}
.dir-table .c-player button[data-profile]{min-height:44px}
}
@media (min-width:641px) and (max-width:900px){
.dir-table tbody{display:grid;grid-template-columns:1fr 1fr}
.dir-table tr{border-right:1px solid var(--line)}
.dir-table tr{padding-right:52px}
}
/* responsive:staff - account utility screens (verify, forgot, reset, check email, session ended) */
@media (max-width:640px){
.intake-shell:has(#back-login,#check-email-signin,#check-verification,#email-signout,#confirm-target-signout,#auth-error) .intake-section .form-actions,.intake-section .form-actions:has(#check-verification,#check-email-signin){flex-direction:column;align-items:stretch}
.intake-section .form-actions:has(#check-verification,#check-email-signin) button{min-height:48px;width:100%}
.intake-shell:has(.form-actions) #back-login,.intake-shell:has(.form-actions) main>.intake-section~a,.intake-section>a{display:inline-flex;align-items:center;min-height:44px;margin-top:6px}
.intake-section input:not([type=checkbox]):not([type=radio]){font-size:16px;min-height:44px}
}
@media (min-width:641px){
.dir-filters{flex-wrap:nowrap}
.dir-filters>input{min-width:110px}
.dir-filters select{min-width:0;flex:0 1 auto}
}
@media (min-width:761px) and (max-width:1024px){.auth-layout{grid-template-columns:minmax(250px,36%) 1fr}.auth-story{padding:32px 28px;gap:28px}.auth-story h1{font-size:2.1rem;letter-spacing:-1px}.auth-card{max-width:460px}.auth-card form{grid-template-columns:1fr 1fr;column-gap:14px}.auth-card form>:not(label):not(.password-field){grid-column:1/-1}.auth-form-area{padding:40px 28px}}
@media (pointer:coarse){.auth-switch button,#back-login,.signout{min-height:44px;min-width:44px}}

/* responsive:reviews - public coach review page (thumb-first: big star targets, sticky progress + action bar) and review dialogs */
@media (max-width:900px){
.coach-review-shell{padding:0 14px}
.coach-review-shell header{padding:10px 0}
.coach-review-shell header .brand{font-size:1.4rem}
.coach-review-shell main{max-width:760px;margin:0 auto;padding:12px 0 0;display:flex;flex-direction:column}
.coach-review-shell h1{font-size:1.35rem;margin:2px 0 0;letter-spacing:-.4px}
.coach-review-shell main>p{margin:2px 0 0;font-size:.875rem}
.coach-review-shell main>.actions{order:4;margin:4px 0 16px!important;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.coach-review-shell main>.actions button{min-height:44px}
.rv-sticky{position:sticky;top:0;z-index:5;background:#f6f7f9;margin:10px -14px 0;padding:6px 14px 8px;border-bottom:1px solid var(--line)}
.rv-sticky .review-progress{margin:0 0 6px}
.coach-review-shell .review-jump{margin:10px 0;gap:8px;flex-wrap:nowrap}
.coach-review-shell .review-jump label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.coach-review-shell .review-jump select{min-width:0;min-height:44px;font-size:16px}
.coach-review-shell .review-jump button{min-height:44px;flex:none}
.coach-review-shell .rv-legend{order:1;margin:0 0 10px!important;font-size:.75rem;line-height:1.5}
.coach-review-shell .review-player{order:2;margin:0 0 12px;padding:10px 10px 12px}
.coach-review-shell .review-player .profilehero{margin-bottom:8px;gap:12px}
.coach-review-shell .review-player .profilehero .avatar{width:44px;height:44px;font-size:.95rem}
.coach-review-shell .review-player .profilehero h2{font-size:1.15rem}
.coach-review-shell .review-player .note{margin:0 0 4px}
.coach-review-shell .star-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"l l" "s c";align-items:center;gap:0 8px;padding:6px 0}
.coach-review-shell .star-row>span{grid-area:l;font-weight:500}
.coach-review-shell .star-row .star-buttons{grid-area:s;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;width:100%}
.coach-review-shell .star-buttons button{min-height:44px;font-size:1.9rem;padding:0;line-height:1}
.coach-review-shell .star-row>button{grid-area:c;font-size:.8125rem;min-height:44px;padding:0 8px;white-space:nowrap}
.coach-review-shell .review-player button{min-height:44px}
.coach-review-shell .review-controls{order:3;position:sticky;bottom:0;z-index:5;display:flex;gap:8px;margin:12px -14px 0;padding:8px 14px calc(8px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--line);box-shadow:0 -6px 16px #18233c14}
.coach-review-shell .review-controls button{flex:1 1 0;min-height:48px;padding:0 10px}
.coach-review-shell .review-controls #review-prev{flex:none;min-width:52px}
.rv-btn-text,.rv-missing{display:none}
.coach-review-shell .review-save-status{padding-top:8px}
}
@media (min-width:640px) and (max-width:900px){
.coach-review-shell .review-player{display:grid;grid-template-columns:1fr 1fr;column-gap:28px}
.coach-review-shell .review-player>*:not(.star-row){grid-column:1/-1}
.rv-btn-text{display:inline}.rv-missing{display:inline}
}
@media (max-height:500px) and (max-width:900px){
.rv-sticky{position:static}
.coach-review-shell .review-controls button{min-height:44px}
}
@media (max-width:640px){
table.rv-overview.comparison-table:not(#rv){display:block;width:100%;min-width:0;white-space:normal}
table.rv-overview.comparison-table:not(#rv) caption{display:block;text-align:left;padding-bottom:8px}
table.rv-overview.comparison-table:not(#rv) thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
table.rv-overview.comparison-table:not(#rv) tbody{display:grid;gap:10px}
table.rv-overview.comparison-table:not(#rv) tr{display:grid;grid-template-columns:1fr 1fr;gap:2px 16px;padding:10px 12px;border:1px solid var(--line);border-radius:10px}
table.rv-overview.comparison-table:not(#rv) th[scope=row]{grid-column:1/-1;display:block;position:static;min-width:0;max-width:none;box-shadow:none;background:none;padding:0 0 6px;border:0;white-space:normal;text-align:left}
table.rv-overview.comparison-table:not(#rv) td{display:flex;width:auto;grid-column:auto;justify-content:space-between;gap:8px;min-width:0;padding:3px 0;border:0;white-space:normal;font-size:.875rem}
table.rv-overview.comparison-table:not(#rv) td::before{display:block;content:attr(data-skill);color:var(--muted);font-size:.8125rem;overflow-wrap:anywhere}
table.rv-overview.comparison-table:not(#rv) td:last-child{grid-column:1/-1;border-top:1px solid var(--line);margin-top:4px;padding-top:6px}
table.rv-overview.comparison-table:not(#rv) th button{min-height:44px;padding:0;text-align:left;border:0;background:none;color:var(--accent-text);font-size:1rem}
dialog .button-link{display:inline-flex;align-items:center;min-height:44px;padding:0 16px}
dialog input[readonly]{min-height:44px}
}
@media (min-width:901px) and (max-width:1100px){
.dir-table td,.dir-table th{padding:12px 9px}
.dir-table thead .tip-icon{display:none}
.dir-table td.c-pos{max-width:90px}
}
@media (min-width:641px) and (max-width:800px){.analytics-grid:has(.guide-list){grid-template-columns:1fr 1fr;align-items:start;gap:16px}}
@media (pointer:coarse){.guide-list summary{min-height:44px;display:flex;align-items:center}#staff-search,#staff-role-filter,#staff-sort{min-height:44px}.heading .actions button{min-height:44px}}
@media (min-width:901px){
.dir-table td.c-player,.dir-table thead th:first-child{position:sticky;left:0;z-index:1;background:#fff;box-shadow:1px 0 0 var(--line)}
.dir-table thead th:first-child{background:#fafbfc}
}
/* responsive:builder - placement recommendations as cards on phones */
@media (max-width:760px){
.placements-table tbody th[scope=row]{background:none;color:#202838;font-size:1rem;font-weight:600;text-transform:none;letter-spacing:0;padding:0 0 6px}
.placements-table select{width:100%;min-height:44px;font-size:16px}
.placements-table td[data-label=Why]{font-size:.85rem}
}
@media (max-width:900px){.coach-review-shell .review-save-status:has(#reload-review){position:sticky;bottom:calc(68px + env(safe-area-inset-bottom));z-index:4;background:#fff8e6;border:1px solid #e6cc8c;border-radius:8px;padding:8px 10px;margin-top:8px;color:#6b5320;font-size:.8125rem}}

/* responsive:players - stacked analytics / comparison tables on phones */
@media (max-width:640px){
.pl-stack,.pl-stack tbody{display:block;width:100%}
.pl-stack thead{display:none}
.pl-stack tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px 10px;padding:10px 14px;border-bottom:1px solid var(--line)}
.pl-stack td{display:block;padding:0;border:0;white-space:normal;font-size:.8125rem}
.pl-stack td[data-label]::before{content:attr(data-label);display:block;color:#8b94a3;font-size:.75rem}
.pl-stack .st-title{grid-column:1/-1;font-weight:600;font-size:.9375rem;margin-bottom:2px}
.pl-stack .st-wide{grid-column:1/-1;margin-top:4px}
.pl-stack .st-wide::before{display:inline!important;margin-right:6px}
.readiness-table{font-size:.8125rem}
}
@media (max-width:640px){
#player-review-coverage,.analytics-body button{min-height:44px}
.skill-history th[scope=row],.skill-history thead th:first-child{position:sticky;left:0;z-index:1;background:#fff;box-shadow:1px 0 0 var(--line)}
.skill-history thead th:first-child{background:#fafbfc}
.skill-history td,.skill-history th{padding:10px 12px}
}
@media (max-width:339px){.coach-review-shell .star-row{grid-template-areas:"l c" "s s";align-items:center}.coach-review-shell .star-row>span{align-self:center}}
@media (max-width:640px){
table.comparison-table.stack-table{display:table;width:max-content;min-width:100%;white-space:nowrap}
table.comparison-table.stack-table thead{position:static;width:auto;height:auto;overflow:visible;clip:auto;display:table-header-group}
table.comparison-table.stack-table tbody{display:table-row-group;padding:0;gap:0}
table.comparison-table.stack-table tr{display:table-row;padding:0;border:0;border-radius:0;background:none}
table.comparison-table.stack-table td{display:table-cell;padding:10px 12px;border-bottom:1px solid var(--line);min-width:112px;font-size:.8125rem;white-space:normal;vertical-align:top}
table.comparison-table.stack-table td::before{display:none}
.comparison-table th{padding:10px 12px;font-size:.8125rem;white-space:normal;vertical-align:top}
.comparison-table th[scope=row],.comparison-table thead th:first-child{position:sticky;left:0;z-index:1;background:#fff;min-width:96px;max-width:110px;box-shadow:1px 0 0 var(--line)}
.comparison-table thead th:first-child{background:#fafbfc}
.comparison-table thead th .sub{display:block}
}
@media (max-width:900px){.coach-review-shell .star-row>button .rv-btn-text{display:none}}
table .nc-dot{min-height:0;min-width:0;height:11px;width:11px}
@media (max-width:640px){
.profile-jump{margin-right:calc(-14px + 52px);padding-right:10px}
}
@media (max-width:640px){
#save-new-selection-view{width:100%;min-height:44px;margin:12px 0!important}
.modalbody .raw-review .actions{display:flex;flex-wrap:wrap;gap:8px}
.modalbody .raw-review .actions button{min-height:44px;flex:1 1 auto}
}
@media (max-width:640px){.readiness-panel{padding:14px;margin-top:16px;border-radius:10px}.readiness-checks{margin:12px 0}.approval-roster .insight-row{margin:10px 0;gap:10px;align-items:flex-start}.approval-roster .insight-row span:last-child{text-align:right;flex:none}}
@media (max-width:640px){dialog textarea[aria-label="Allocation pack"]{max-height:none!important;height:calc(100dvh - 200px);min-height:260px;margin:12px 0 0!important}}
@media (max-width:640px){dialog #download-assessment-csv{width:100%;min-height:44px;margin-top:4px}dialog #copy-framework{min-height:44px}dialog #framework-form textarea{min-height:40vh}dialog #review-schedule-form .form-grid{gap:12px}}
.rv-approvals td:nth-child(6) .tag,.rv-reviews td:nth-child(5) .tag{white-space:nowrap}
@media (max-width:390px){
.rv-approvals tr,.rv-reviews tr{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.rv-approvals td:first-child,.rv-reviews td:first-child{grid-column:1/-1;padding-right:48px}
.rv-approvals td:nth-child(6),.rv-reviews td:nth-child(5){grid-column:1/-1;justify-self:start;margin-right:0;order:-1}
}
@media(max-width:760px) and (max-height:500px){#public-intake>button[type=submit]{min-height:44px;bottom:6px}.intake-shell header{margin-bottom:8px}}
@media(max-width:360px){.intake-positions{gap:6px}.intake-positions label{gap:4px;padding:0 2px}.intake-positions input{width:18px;height:18px}#public-intake>button[type=submit]{font-size:.9rem;padding:0 8px}.intake-section{padding:14px 12px}}
@media(min-width:520px) and (max-width:760px){.intake-positions{grid-template-columns:repeat(7,minmax(0,1fr))}}
@media(pointer:coarse) and (min-width:761px){
.intake-section input:not([type=checkbox]),.intake-section textarea{font-size:16px}
.intake-section input:not([type=checkbox]){height:48px}
.intake-positions label{min-height:44px;padding:0 8px;border:1px solid #dfe5ef;border-radius:8px;background:#fafbfd;font-weight:600;cursor:pointer}
.intake-positions label:has(input:checked){border-color:var(--blue);background:var(--accent-tint);color:var(--accent-ink)}
.intake-section .sample-choice{min-height:44px}
.intake-section .sample-choice input,.intake-positions input{width:22px;height:22px}
.intake-shell button.primary{min-height:48px}
}
/* responsive:waitlist - phone: primary add action floats at the bottom */
@media(max-width:760px){
main:has(#add-entry),main:has(#add-season){padding-bottom:88px}
#add-entry.primary,#add-season.primary{position:fixed;right:16px;bottom:max(16px,env(safe-area-inset-bottom));z-index:30;min-height:52px;padding:0 22px;border-radius:999px;box-shadow:0 8px 22px color-mix(in srgb,var(--blue) 35%,transparent)}
.heading .actions>#add-season.primary:only-child{width:auto}
}
@media(max-width:760px){.rs-stack td.rs-empty,.widefilters>.rs-pristine{display:none}.widefilters>button{min-height:44px}}
@media(max-width:760px){.stats:has(+.panel .rs-stack){gap:8px;margin-bottom:12px}.stats:has(+.panel .rs-stack) .stat{padding:10px 12px}.stats:has(+.panel .rs-stack) .stat small{display:none}.stats:has(+.panel .rs-stack) .stat label{margin-bottom:0}.stats:has(+.panel .rs-stack) .stat strong{font-size:1.3rem}.stats:has(+.panel .rs-stack) .tip-icon{display:none}}
@media(max-width:760px){dialog .insight-row.rs-empty-row{display:none}}
.rs-disclosure>summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px}
.rs-disclosure>summary::-webkit-details-marker{display:none}
.rs-disclosure>summary h3{margin:0}
.rs-disclosure>summary::after{content:"\25BE";color:#7b8492;transition:transform .15s}
.rs-disclosure[open]>summary::after{transform:rotate(180deg)}
.rs-disclosure>summary:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:6px}
@media(max-width:760px){#waitlist-settings textarea{field-sizing:content;min-height:6.5em}#redact-withdrawn{min-height:44px;width:100%;margin-top:10px}#redact-days{max-width:140px}}
@media(max-width:760px){
.rs-seasons tr{grid-template-columns:repeat(3,minmax(0,1fr)) auto}
.rs-seasons td{grid-column:auto;flex-direction:column;justify-content:flex-start;gap:0}
.rs-seasons td[data-label]::before{font-size:.75rem}
.rs-seasons td.rs-title{grid-column:1/4;grid-row:1;flex-direction:row;justify-content:flex-start;align-items:center}
.rs-seasons td.rs-menu{grid-column:4;grid-row:1 / span 2}
.rs-seasons td.rs-status{grid-column:1/4;grid-row:2;flex-direction:row}
.rs-seasons td[data-label=Year]{grid-row:3;grid-column:1}
.rs-seasons td[data-label=Players]{grid-row:3;grid-column:2}
.rs-seasons td[data-label=Teams]{grid-row:3;grid-column:3}
.rs-seasons td[data-label=Dates]{grid-row:4;grid-column:1/-1;flex-direction:row;justify-content:space-between;margin-top:4px}
}
@media(max-width:760px){#season-form .form-grid{grid-template-columns:1fr 1fr;gap:12px}#season-form .form-grid>.full,#season-form .form-grid>label:has([name=year]){grid-column:1/-1}#season-form .form-grid>div:empty{display:none}}
@media(max-width:760px){
dialog .setup-grid{background:none;border:0;gap:8px}
dialog .setup-step{border:1px solid #e5e9f1;border-radius:10px}
.setup-grid .setup-step{padding:14px}
.setup-grid .setup-step h3{margin:0 0 4px;font-size:1rem}
.setup-grid .setup-step p{margin:0 0 10px;font-size:.875rem}
.setup-grid .setup-step button{min-height:44px}
}

/* responsive:waitlist - tablet: waitlist/seasons cards in a two-column grid instead of stretching the phone layout */
@media(min-width:761px) and (max-width:1100px){

.tablewrap:has(.rs-stack){overflow:visible}
.rs-stack,.rs-stack tbody{display:block;width:100%}
.rs-stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.rs-stack tr{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;row-gap:3px;padding:12px 6px 12px 14px;border-bottom:1px solid var(--line);align-items:center}
.rs-stack tr:last-child{border-bottom:0}
.rs-stack td{display:flex;justify-content:space-between;gap:12px;grid-column:1/-1;padding:0;border:0;font-size:.875rem;white-space:normal;min-width:0;overflow-wrap:anywhere}
.rs-stack td[data-label]::before{content:attr(data-label);color:#7b8492;font-size:.8125rem;flex:none}
.rs-stack td.rs-title{grid-column:1;grid-row:1;justify-content:flex-start;flex-wrap:wrap;align-items:center;gap:4px 6px;font-weight:600;font-size:1rem;color:#202838}
.rs-stack td.rs-title::before,.rs-stack td.rs-menu::before,.rs-stack td.rs-status::before{content:none}
.rs-stack td.rs-title .sub{flex-basis:100%;margin-top:0}
.rs-stack td.rs-menu{grid-column:2;grid-row:1 / span 2;align-self:start;justify-content:flex-end}
.rs-stack td.rs-status{grid-column:1;grid-row:2;justify-content:flex-start;margin-bottom:4px}
.rs-stack td.rs-skip{display:none}
.rs-stack td.rs-title .tag-consent,.rs-stack td.rs-title .tag-umpire{margin-left:0}
.rs-stack .card-menu{right:6px}
.rs-seasons tr{grid-template-columns:repeat(3,minmax(0,1fr)) auto}
.rs-seasons td{grid-column:auto;flex-direction:column;justify-content:flex-start;gap:0}
.rs-seasons td[data-label]::before{font-size:.75rem}
.rs-seasons td.rs-title{grid-column:1/4;grid-row:1;flex-direction:row;justify-content:flex-start;align-items:center}
.rs-seasons td.rs-menu{grid-column:4;grid-row:1 / span 2}
.rs-seasons td.rs-status{grid-column:1/4;grid-row:2;flex-direction:row}
.rs-seasons td[data-label=Year]{grid-row:3;grid-column:1}
.rs-seasons td[data-label=Players]{grid-row:3;grid-column:2}
.rs-seasons td[data-label=Teams]{grid-row:3;grid-column:3}
.rs-seasons td[data-label=Dates]{grid-row:4;grid-column:1/-1;flex-direction:row;justify-content:space-between;margin-top:4px}

.rs-stack td.rs-empty{display:none}
.rs-stack tbody{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:14px}
.rs-stack tr{border:1px solid var(--line);border-radius:10px;background:#fff;padding:12px 8px 12px 14px;align-content:start}
.rs-stack tr:last-child{border-bottom:1px solid var(--line)}
.rs-wl td.rs-skip{display:none}
}
@media(pointer:coarse){.widefilters input,.widefilters select{font-size:16px}}

/* responsive:sweep-a - auth screens: compact register form, 44px forgot-password, season fields two-up */
@media (max-width:760px){
.auth-card form+button{min-height:44px;padding:0 14px}
.auth-card:has(input[name=name]) .auth-access-note{display:none}
.auth-card form{gap:12px}
.auth-card form>label,.auth-card .password-field>label{gap:6px}
.workspace-start-choice label:not(:has(input:checked)) small{display:none}
.auth-card .workspace-start-choice label{margin-bottom:8px}
.workspace-start-choice>p{display:none}
.first-season-fields:not([hidden]){display:grid;grid-template-columns:minmax(0,1fr) 112px;column-gap:12px;border:0;padding:0;margin:0}
.first-season-fields legend{grid-column:1/-1;padding:0;margin-bottom:8px}
.first-season-fields label{margin:0}
.first-season-fields>p{grid-column:1/-1;margin:6px 0 0!important}
}
@media (max-width:760px){
.auth-card .workspace-start-choice input{min-height:0;height:24px;width:24px;margin:0}
.auth-card .workspace-start-choice label{align-items:flex-start;min-height:44px}
}
@media (max-width:640px){
.intake-shell:has(#account-link-form,#recovery-form,#confirm-email-change-form,#join-staff-form) .intake-section .form-actions{flex-direction:column;align-items:stretch;margin-top:14px}
.intake-shell:has(#account-link-form,#recovery-form,#confirm-email-change-form,#join-staff-form) .intake-section .form-actions>button{width:100%;min-height:48px}
.intake-shell:has(#account-link-form,#recovery-form,#confirm-email-change-form,#join-staff-form) #back-login,.intake-shell:has(#join-staff-form) #toggle-join-mode{min-height:44px}
.intake-shell #email-message:empty,.intake-shell #join-error:empty{display:none}
}

/* responsive:sweep-d - cross-cutting: tablet form controls, touch heights, toast layering, short landscape, forced colours */
@media (max-width:900px){
main input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]):not([type=hidden]),main select:not([multiple]),main textarea{font-size:16px}
}
.player .avatar{font-size:.75rem}
@media (max-width:1100px){.rs-stack thead .tip-icon,.rv-stack thead .tip-icon{display:none}}
@media (pointer:coarse){
main input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]):not([type=hidden]),main select:not([multiple]){min-height:44px}
#season-picker,#selection-filters,#clear-approval-filters,#edit-organisation-profile,main button.primary{min-height:44px}
}
#toast{z-index:60}
@media (pointer:coarse){dialog label.sample-choice,main label.sample-choice{min-height:44px;align-items:center}}
@media (max-height:500px) and (max-width:900px){
#add-entry.primary,#add-season.primary{position:static;box-shadow:none;border-radius:8px;min-height:44px;padding:0 18px}
main:has(#add-entry),main:has(#add-season){padding-bottom:14px}
}
@media (forced-colors:active){
.nc-dot{forced-color-adjust:none;border:1px solid CanvasText}
.tip-icon{border:1px solid ButtonText}
.bar{border:1px solid CanvasText}.bar i{forced-color-adjust:none;background:Highlight}
.sidebar .nav button.active,.nav button.active{outline:2px solid Highlight;outline-offset:-2px}
.chart div,.position{border:1px solid CanvasText}
}
@media (max-width:640px){
.intake-shell:has(.intake-section>a[href="/"]) .intake-section{display:flex;flex-direction:column}
.intake-shell:has(.intake-section>a[href="/"]) .intake-section>a{order:5;align-self:flex-start}
.intake-shell:has(.intake-section>a[href="/"]) #email-message:not(:empty){order:4;margin:12px 0;padding:10px 12px;border-radius:8px;background:var(--accent-tint);color:var(--accent-ink)}
}

/* responsive:sweep-a - dashboard setup guide: compact rows (title + action on one line) */
@media (max-width:760px){
.setup-guide .setup-step{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;row-gap:2px;align-items:center;padding:10px 14px}
.setup-guide .setup-status{grid-column:1;grid-row:1}
.setup-guide .setup-step h3{grid-column:1;grid-row:2;font-size:1rem}
.setup-guide .setup-step p{grid-column:1/-1;grid-row:3;margin-top:2px;font-size:.8125rem;line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.setup-guide .setup-step button{grid-column:2;grid-row:1/3;align-self:center;white-space:normal;max-width:8.5rem;padding:6px 12px;line-height:1.2}
.setup-guide .setup-step:has(.setup-status.complete) p{display:none}
.setup-guide .setup-note:has(+[data-setup-wizard]),.setup-guide .setup-note:has(+.setup-note){display:none}
.setup-guide [data-setup-wizard]{margin:10px 14px 14px!important;width:calc(100% - 28px);min-height:44px}
}
@media (max-width:760px){.setup-guide .panel-head{align-items:center;flex-wrap:nowrap;gap:10px}.setup-guide .panel-head p{display:none}.setup-guide .panel-head h2{font-size:1.05rem}}

/* responsive:sweep-c - email status, security emails, account activity */
.email-chip{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.75rem;font-weight:600;line-height:1.4;background:#eef1f6;color:#4b566b;white-space:nowrap}
.email-chip.s-accepted{background:#e8f5ee;color:#1d7a4d}.email-chip.s-queued,.email-chip.s-sending{background:var(--accent-tint);color:var(--accent-ink)}
.email-chip.s-failed,.email-chip.s-key_error{background:#fdecec;color:#b42318}.email-chip.s-paused,.email-chip.s-needs_review{background:#fff3df;color:#9a5b00}
.email-health p{margin:0 0 6px}.email-health p:last-of-type{margin-bottom:0}
.email-table.email-table{width:100%;table-layout:auto}
.email-table.email-table td{white-space:normal;overflow-wrap:anywhere;vertical-align:top}
.email-table.email-table td.e-status{min-width:210px}
.email-table.email-table td button{white-space:nowrap}.email-table.email-table td.e-created{min-width:120px}
.email-table .e-status .sub{display:block;margin-top:4px}
@media (pointer:coarse){#close{min-width:44px;min-height:44px}}
@media (min-width:1001px){.email-table.email-table th,.email-table.email-table td{padding-left:10px;padding-right:10px}.email-table.email-table td.stack-primary{min-width:150px}.email-table.email-table td.e-att{width:60px}.email-table.email-table td.e-kind{min-width:96px}.email-table.email-table td.e-to{min-width:130px}.email-table.email-table td.e-status{min-width:180px}}
@media (max-width:1000px){
.email-table.email-table,.email-table.email-table tbody{display:block;width:100%;border:0}
.email-table.email-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.email-table.email-table tbody{display:grid;gap:8px;padding:0}
.email-table.email-table tr{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff}
.email-table.email-table td{display:block;padding:0;border:0;min-width:0}
.email-table.email-table td[data-label]::before{display:none}
.email-table.email-table td.stack-primary{flex:1 1 0;min-width:0;order:1;font-size:.9rem;line-height:1.3;font-weight:600;color:#263247}
.email-table.email-table td.stack-menu{order:2;flex:none}
.email-table.email-table td.stack-menu:empty{display:none}
.email-table.email-table td.stack-menu button{min-height:44px;padding:0 12px}
.email-table.email-table td.e-kind{order:3;flex:none;color:#5b667a;font-size:.8125rem}
.email-table.email-table td.e-kind::after{content:' ·';color:#b0b8c6}
.email-table.email-table td.e-to{order:3;flex:1 1 100%;color:#5b667a;font-size:.8125rem}
.email-table.email-table td.e-created{order:4;flex:1 1 auto;color:#8b94a3;font-size:.75rem}
.email-table.email-table td.e-status{order:5;flex:1 1 100%;margin-top:4px;min-width:0}
.email-table.email-table td.e-status>div{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:flex-start}
.email-table.email-table td.e-status .sub{display:block;flex:1 1 100%;margin:0;font-size:.75rem;line-height:1.4}
.email-table.email-table td.e-att{order:6;flex:1 1 100%;color:#8b94a3;font-size:.75rem}
.email-table.email-table td.e-att::before{display:inline;content:"Attempts: "}
.email-table.email-table td.e-att-low{display:none}
}
@media (max-width:640px){
.email-health{padding:10px 12px;font-size:.8125rem;line-height:1.35}
.email-health p{margin-bottom:4px}
.email-health button{width:100%;min-height:44px;margin-top:10px}
.email-health #resume-email-message{display:block;margin-top:6px}
dialog:has(#send-test-email) .modalbody>p:has(#send-test-email){display:grid;gap:6px}
dialog:has(#send-test-email) #send-test-email{width:100%;min-height:44px}
dialog:has(.email-table) .modalbody>p{font-size:.875rem;line-height:1.45}
.act-table.act-table,.act-table.act-table tbody{display:block;border:0;padding:0;width:100%}
.act-table.act-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.act-table.act-table tr{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:10px 0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:none}
.act-table.act-table td{display:block;padding:0;border:0;font-size:.875rem;min-width:0;flex:1 1 auto}
.act-table.act-table td[data-label]::before{display:none}
.act-table.act-table td.act-when{flex:none;max-width:46%;text-align:right;color:#5b667a;font-size:.8125rem}
}

/* responsive:sweep-b - sticky team action bar (builder, phones): names the selected team, its fill and state */
.team-bar{display:none}
@media (max-width:760px){
.heading .actions:has(.builder-more-btn) #review{display:none}
.heading .actions:has(.builder-more-btn) #add-team{grid-column:span 5}
main:has(.team-bar){padding-bottom:0}
.team-bar{display:flex;align-items:center;gap:12px;position:sticky;bottom:0;z-index:25;margin:10px -12px 0;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--line);box-shadow:0 -4px 14px rgba(6,18,31,.08)}
.team-bar-info{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.team-bar-info strong{font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.team-bar-info span{font-size:.8125rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.team-bar .primary{flex:none;min-height:48px;padding:0 18px;font-weight:600;white-space:nowrap}
body:has(.team-bar) #toast{bottom:calc(86px + env(safe-area-inset-bottom))}
}
@media (max-width:359px){.team-bar .primary{padding:0 12px;font-size:.9rem}}
@media (max-width:760px) and (max-height:500px){.team-bar{padding-top:6px;padding-bottom:calc(6px + env(safe-area-inset-bottom))}.team-bar .primary{min-height:44px}}


/* responsive:sweep-b - phones: compact builder/approvals headers and stat tiles */
@media (max-width:760px){
.heading:has(.builder-more-btn) h1+p,.heading:has(#refresh-approvals) h1+p{display:none}
.stats:has(+.workspace) .stat small,.stats:has(+.panel .rv-approvals) .stat small{display:none}
.stats:has(+.workspace) .stat,.stats:has(+.panel .rv-approvals) .stat{padding:8px 12px 10px}
.stats:has(+.workspace) .stat strong,.stats:has(+.panel .rv-approvals) .stat strong{font-size:1.4rem;line-height:1.15}
.heading:has(#refresh-approvals){flex-direction:row;align-items:center;justify-content:space-between}
.heading:has(#refresh-approvals) .actions{margin-left:auto;flex:none}
.heading:has(#refresh-approvals)>div:first-child{flex:1;min-width:0}.heading:has(#refresh-approvals) h1{margin:0;white-space:nowrap}
}
/* responsive:sweep-b - approvals: compact decision cards on phones, whole card opens the decision */
@media (max-width:640px){
.rv-approvals tr{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px 12px;padding:10px 12px;cursor:pointer}
.rv-approvals td:nth-child(1){grid-column:1;grid-row:1;min-height:0;padding-right:0}
.rv-approvals td:nth-child(6){grid-column:2;grid-row:1;order:0;align-self:center;margin-right:40px}
.rv-approvals td:nth-child(2),.rv-approvals td:nth-child(3),.rv-approvals td:nth-child(4),.rv-approvals td:nth-child(5){grid-row:auto}
.rv-approvals td:nth-child(7){display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px}
.rv-approvals td:nth-child(7)::before{margin:0}
.rv-approvals td:nth-child(7) .sub{margin:0}
.rv-approvals td.readiness-summary .tag{margin:0}
}
/* responsive:sweep-b - decision / allocation / builder dialogs on phones: labelled action bar pinned to the bottom (icon-only header buttons were cryptic) */
@media (max-width:640px),(max-height:500px) and (max-width:900px){
.modalhead:has([data-labelled]) h2{padding-right:52px}
.modalhead:has([data-labelled]) #close{position:fixed;top:calc(6px + env(safe-area-inset-top));right:max(8px,env(safe-area-inset-right));z-index:6;background:#fff}
.modalhead:has([data-labelled]) .modal-actions{position:fixed;left:0;right:0;bottom:0;z-index:5;display:flex;gap:8px;margin:0;padding:10px max(14px,env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));background:#fff;border-top:1px solid var(--line);box-shadow:0 -4px 14px rgba(6,18,31,.08)}
.modal-actions [data-labelled]{flex:1 1 0;width:auto;min-width:0;height:48px;padding:0 8px;gap:0;font-size:.9rem;font-weight:600;overflow:hidden}
.modal-actions [data-labelled] svg{display:none}
.modal-actions [data-labelled]::after{content:attr(data-short);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.modal-actions [data-labelled=primary]{order:3;background:var(--blue);border-color:var(--blue);color:var(--on-blue);flex-grow:1.4}
.modalhead:has([data-labelled])~.modalbody{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
.modalbody:has(.approval-roster) .stats .stat small{display:none}
.modalbody:has(.approval-roster) .stats{gap:8px}.modalbody:has(.approval-roster) .stats .stat{padding:8px 12px}
.readiness-panel{padding:12px 14px}.readiness-panel .note{font-size:.8125rem}
}
@media (max-width:640px){
dialog .setup-grid .setup-step{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;row-gap:2px;align-items:center;padding:10px 12px}
dialog .setup-grid .setup-step h3{grid-column:1;grid-row:1}
dialog .setup-grid .setup-step p{grid-column:1;grid-row:2;margin:0;font-size:.8125rem;line-height:1.4}
dialog .setup-grid .setup-step button{grid-column:2;grid-row:1/3;max-width:7.5rem;padding:6px 10px;white-space:normal;line-height:1.2}
dialog .modalbody>h3:first-child{margin-top:0}
}
@media (pointer:coarse){
dialog input:not([type=checkbox]):not([type=radio]),dialog select,dialog textarea,.auth-card input,.auth-card select,.intake-section input:not([type=checkbox]):not([type=radio]),.intake-section textarea,.intake-section select{font-size:16px}
.setup-guide [data-setup-wizard],#close,.modalhead button,.auth-card form+button,.intake-shell #back-login,.intake-shell #toggle-join-mode{min-height:44px;min-width:44px}
}

/* responsive:sweep-b - allocation contacts: name + dot on one line, select beneath (phones) */
@media (max-width:640px){
#allocation-form .review-label:has([data-allocation-contact]){display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;margin:10px 0 0}
#allocation-form [data-allocation-contact]{flex:1 1 100%;min-width:0;text-overflow:ellipsis}
#allocation-form .review-label>.sub{flex:1 1 100%;margin:0}
#allocation-form textarea[name=welcome]{height:11em}
#approve-roster-form textarea,#reopen-form textarea{min-height:5.5em}
}
@media (max-width:640px){
.intake-shell:has(#recovery-form) .intake-section{display:flex;flex-direction:column}
.intake-shell:has(#recovery-form) #email-message:not(:empty){order:4;margin:12px 0 0;padding:10px 12px;border-radius:8px;background:var(--accent-tint);color:var(--accent-ink)}
.intake-shell:has(#recovery-form) #back-login{order:5;width:100%;margin-top:10px}
}
@media (max-width:640px){
.intake-shell #session-signin{width:100%;min-height:48px}
.intake-shell:has(#session-signin) .intake-section p{margin:0 0 10px!important}
.intake-shell:has(#session-signin) .intake-section p:nth-of-type(2){font-size:.8125rem}
.intake-shell:has(#session-signin) .intake-section p:last-of-type{margin:14px 0 0!important}
}
/* responsive:sweep-d - large text (200% zoom): stat cards drop to one column, action rows wrap */
@media (max-width:760px){.stats{grid-template-columns:repeat(auto-fit,minmax(max(8.5rem,calc(50% - 10px)),1fr))}.stat{min-width:0}.stat strong{overflow-wrap:anywhere}.stat label{overflow-wrap:normal;word-break:normal;hyphens:manual}}
.dash-action{flex-wrap:wrap}.dash-action button{white-space:normal;text-align:left}

/* responsive:sweep-b - placement recommendations: name + basis on one line, reason, then team picker (division is already in the option text) */
@media (max-width:640px){
.placements-table tbody tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:center;padding:10px 12px}
.placements-table tbody th[scope=row]{grid-column:1;grid-row:1;padding:0;border:0}
.placements-table tbody td{display:block;padding:0;border:0;text-align:left}
.placements-table tbody td::before{content:none!important}
.placements-table tbody td:nth-child(2){grid-column:2;grid-row:1;text-align:right}
.placements-table tbody td:nth-child(3){grid-column:1/-1;font-size:.8125rem;min-width:0!important}
.placements-table tbody td:nth-child(4){grid-column:1/-1;margin-top:4px}
.placements-table tbody td:nth-child(5){display:none}
}
/* phase5b:recommender - mode choice, include-placed option and the per-team summary in the Recommended placements dialog */
.rec-controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin:14px 0 4px}
.rec-mode-row{display:flex;align-items:center;gap:4px;min-width:0;max-width:100%}
.org-seg.rec-mode{display:inline-flex;flex-direction:row;flex-wrap:wrap;width:auto;max-width:100%}
.rec-include{display:flex;align-items:flex-start;gap:10px;min-height:44px;padding:8px 0;cursor:pointer;line-height:1.35}
.rec-include input{width:22px;height:22px;margin:1px 0 0;flex:none}
.rec-include .sub{display:block;font-size:.8125rem}
.rec-summary{margin:14px 0 6px}
.rec-summary-title{font-size:1rem;margin:0 0 6px}
.rec-spread,.rec-hint{margin:0 0 8px;font-size:.875rem;color:#46536d}
.rec-hint{padding:8px 10px;border-left:3px solid #c98a12;background:#fdf6e7;color:#4a3b12}
.rec-teams{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
.rec-team{border:1px solid #dde3ee;border-radius:10px;padding:10px 12px;background:#fff;min-width:0}
.rec-team h3{font-size:.9375rem;margin:0 0 6px;overflow-wrap:anywhere}
.rec-team dl{margin:0;display:grid;gap:2px}
.rec-team dl div{display:flex;justify-content:space-between;gap:8px;font-size:.8125rem}
.rec-team dt{color:#5b6a84}
.rec-team dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
@media (max-width:640px){.rec-controls{flex-direction:column;align-items:stretch}.org-seg.rec-mode{display:flex;flex-wrap:nowrap;width:100%}.rec-mode .org-seg-opt{flex:1 1 0}.rec-mode .org-seg-opt span{padding:6px 8px;width:100%}.rec-teams{grid-template-columns:minmax(0,1fr)}}
@media (forced-colors:active){.rec-team,.rec-hint{border-color:CanvasText}}
/* simple:placements - Suggested teams dialog in plain words: radio cards for the question, a More options disclosure, one line per team, and one simple row (phone: card) per player */
.rec-intro{font-size:.95rem!important;color:#33405a!important}
.rec-controls{display:block;margin:12px 0 4px}
.rec-mode{border:0;margin:0;padding:0;display:grid;gap:8px;min-width:0}
.rec-mode legend{font-size:1rem;font-weight:650;color:#202838;padding:0;margin:0 0 8px;display:flex;align-items:center}
.rec-opt{display:flex;align-items:flex-start;gap:12px;min-height:44px;padding:10px 12px;border:1px solid #dde3ee;border-radius:10px;background:#fff;cursor:pointer;line-height:1.35;color:#202838}
.rec-opt:has(input:checked){border-color:var(--blue);background:color-mix(in srgb,var(--blue) 6%,#fff)}
.rec-opt input{width:22px;height:22px;margin:1px 0 0;flex:none;accent-color:var(--blue)}
.rec-opt strong{font-weight:600;font-size:.9375rem}.rec-opt .sub{font-size:.8125rem;color:#5b6a84;margin-top:2px}
.rec-more{margin:10px 0 0}
.rec-more>summary{display:inline-flex;align-items:center;min-height:44px;cursor:pointer;color:var(--accent-ink);font-weight:600;font-size:.9rem}
.rec-more[open]>summary{margin-bottom:4px}
.rec-more .age-help{margin:6px 0 0}
.rec-summary{margin:16px 0 6px}
.rec-teams{display:block;list-style:none;margin:0 0 8px;padding:0}
.rec-teams .rec-team{border:0;border-radius:0;padding:4px 0;background:none;font-size:.9rem;color:#33405a;line-height:1.45}
.rec-teams .rec-team strong{font-weight:600;color:#202838}
.rec-spread{font-size:.9rem!important;color:#33405a!important}
.rec-hint{border-left:3px solid #c98a12;border-radius:0 6px 6px 0}
.rec-hint .link-btn{display:inline-flex;align-items:center;min-height:44px;padding:0 2px;vertical-align:middle;color:var(--accent-ink);font-weight:600;font-size:inherit}
.rec-ok{white-space:nowrap}
.rec-list-title{margin:18px 0 8px!important}
.rec-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.rec-row{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(180px,240px);align-items:center;gap:6px 14px;padding:10px 0;border-bottom:1px solid var(--line)}
.rec-who{min-width:0}.rec-name{display:block;font-weight:600;color:#202838;overflow-wrap:anywhere}
.rec-reason{margin-top:2px;font-size:.8125rem;color:#5b6a84}
.rec-arrow{color:#8b94a3;font-size:1.1rem}
.rec-pick select{width:100%;min-height:44px;font-size:16px}
.rec-pick .age-note{margin-top:4px;font-size:.8125rem}
@media (max-width:640px){.rec-row{grid-template-columns:minmax(0,1fr);gap:6px;padding:12px;margin:0 0 8px;border:1px solid #dde3ee;border-radius:10px;background:#fff}.rec-list{border-top:0}.rec-arrow{display:none}}
@media (forced-colors:active){.rec-opt,.rec-row{border-color:CanvasText}}
@media (max-width:640px){
#join-staff-form{margin-top:12px!important;padding:14px}
#join-staff-form>label{margin-top:0}
#join-staff-form .form-actions{margin-top:12px}
.intake-shell:has(#join-staff-form) h1{font-size:1.5rem;margin:4px 0 4px}
.intake-shell:has(#join-staff-form) #toggle-join-mode{width:100%}
.intake-shell:has(#join-staff-form) main>p:last-child{font-size:.8125rem;margin-top:12px!important}
}
@media (pointer:coarse){.intake-shell:has(.form-actions,#email-message) .intake-section>a{display:inline-flex;align-items:center;min-height:44px}}

/* responsive:sweep-b - saved selection views: view actions share one row */
@media (max-width:640px){
.modalbody:has(.raw-review [data-load-view],.raw-review [data-archive-view]) .raw-review .actions{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:6px;margin-top:8px}
.modalbody:has(.raw-review [data-load-view],.raw-review [data-archive-view]) .raw-review .actions button{min-height:44px;padding:4px 6px;font-size:.8125rem;line-height:1.2}
.modalbody:has(.raw-review [data-load-view],.raw-review [data-archive-view]) .raw-review{padding:12px}
#save-new-selection-view{width:100%;min-height:44px;margin:10px 0 14px!important}
}

/* responsive:sweep-b - short landscape: slimmer action bar */
@media (max-height:500px) and (max-width:900px){
.modalhead:has([data-labelled]) .modal-actions{padding-top:6px;padding-bottom:calc(6px + env(safe-area-inset-bottom));justify-content:flex-end}
.modal-actions [data-labelled]{height:44px;flex:0 1 220px}
.modalhead:has([data-labelled])~.modalbody{padding-bottom:calc(64px + env(safe-area-inset-bottom))}
}

/* responsive:sweep-a - public waitlist form: compact density on phones */
@media (max-width:760px){
.intake-shell header{margin-bottom:10px}
.intake-shell .auth-eyebrow{font-size:.75rem}
.intake-shell:has(#public-intake) .notice{margin:10px 0!important;padding:8px 12px;font-size:.8125rem;line-height:1.45}
.intake-shell:has(#public-intake) main>p{margin:6px 0;font-size:.9375rem;line-height:1.5}
#public-intake .intake-section .form-grid{gap:10px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
#public-intake .intake-section .form-grid>label{display:grid;gap:5px;font-size:.8125rem;margin:0}
#public-intake .intake-section .form-grid>label:not(:has([name=dob])):not(:has([name=years])):not(:has([name=previousClub])):not(:has([name=previousTeam])){grid-column:1/-1}
#public-intake .intake-section input:not([type=checkbox]){height:44px;min-height:44px}
#public-intake .intake-section .intake-step:not(:first-child){margin-top:20px;padding-top:14px}
#public-intake .intake-step{margin-bottom:10px;font-size:1rem}
#public-intake .intake-positions{margin:12px 0;gap:6px}
#public-intake .intake-positions legend{font-size:.8125rem;margin-bottom:2px}
#public-intake .intake-positions label{position:relative;font-size:.9375rem}
#public-intake .intake-positions input{position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;opacity:0;cursor:pointer}
#public-intake .intake-positions label:has(input:checked)::before{content:"\2713";margin-right:4px;font-weight:700}
#public-intake .intake-section>label:not(.sample-choice){margin-top:10px;font-size:.8125rem}
#public-intake .intake-section textarea{padding:10px 12px}
#public-intake .sample-choice span{line-height:1.4}
}

/* responsive:sweep-b - touch tablets: builder player names and team headers reach 44px */
@media (pointer:coarse){
.team .team-toggle{min-height:44px}
.player .person button[data-profile]{position:relative}
.player .person button[data-profile]::after{content:"";position:absolute;inset:-13px -4px}
}
@media (max-width:760px){#public-intake .intake-section .form-grid>label:has([name=previousClub]),#public-intake .intake-section .form-grid>label:has([name=previousTeam]){grid-column:auto}}
@media (max-width:760px){
#public-intake .intake-section .form-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
#public-intake .intake-section .form-grid>label{grid-column:span 6}
#public-intake .intake-section .form-grid>label:has([name=dob]){grid-column:span 4}
#public-intake .intake-section .form-grid>label:has([name=years]){grid-column:span 2}
#public-intake .intake-section .form-grid>label:has([name=previousClub]),#public-intake .intake-section .form-grid>label:has([name=previousTeam]){grid-column:span 3}
#intake-error button{width:100%}
}
@media (max-width:760px){#check-waitlist-opening{width:100%;min-height:48px;margin-top:16px}.intake-shell:has(#check-waitlist-opening) main>p{margin:4px 0;font-size:.9375rem}.intake-shell:has(#check-waitlist-opening) main>p:nth-of-type(2){font-weight:600;color:#202838}}
@media (max-height:500px) and (max-width:900px){
.intake-shell header{margin-bottom:4px}
.intake-shell header .brand{transform-origin:left center}
.intake-shell h1{font-size:1.3rem;margin:2px 0 4px}
.intake-shell:has(#public-intake) main>p{font-size:.875rem;margin:2px 0}
.intake-shell:has(#public-intake) .notice{margin:6px 0!important;padding:6px 10px}
#public-intake>button[type=submit]{position:static;box-shadow:none;min-height:48px}
#public-intake .intake-section .form-grid>label:has([name=dob]){grid-column:span 2}
#public-intake .intake-section .form-grid>label:has([name=years]){grid-column:span 1}
#public-intake .intake-section .form-grid>label:has([name=previousClub]),#public-intake .intake-section .form-grid>label:has([name=previousTeam]){grid-column:span 2}
#public-intake .intake-section .form-grid>label:has([name=name]),#public-intake .intake-section .form-grid>label:has([name=guardianName]){grid-column:span 4}
#public-intake .intake-section .form-grid>label:has([name=previousDivision]),#public-intake .intake-section .form-grid>label:has([name=guardianEmail]){grid-column:span 3}
#public-intake .intake-section .form-grid>label:has([name=guardianPhone]){grid-column:span 3}
#public-intake .intake-positions{grid-template-columns:repeat(7,minmax(0,1fr))}
}
@media (max-height:500px) and (max-width:900px){
#public-intake#public-intake .intake-section .form-grid>label:has([name=name]),#public-intake#public-intake .intake-section .form-grid>label:has([name=guardianName]){grid-column:span 4}
#public-intake#public-intake .intake-section .form-grid>label:has([name=dob]),#public-intake#public-intake .intake-section .form-grid>label:has([name=previousClub]),#public-intake#public-intake .intake-section .form-grid>label:has([name=previousTeam]){grid-column:span 2}
#public-intake#public-intake .intake-section .form-grid>label:has([name=years]){grid-column:span 2}
#public-intake#public-intake .intake-section .form-grid>label:has([name=previousDivision]),#public-intake#public-intake .intake-section .form-grid>label:has([name=guardianEmail]),#public-intake#public-intake .intake-section .form-grid>label:has([name=guardianPhone]){grid-column:span 3}
}
@media (min-width:761px) and (max-width:1100px){.setup-guide .setup-step:has(.setup-status.complete) p{display:none}}
@media (pointer:coarse){#season-picker{font-size:16px}}

/* responsive:sweep-c - support page and inbox */
.support-tag{font-size:.75rem}
.support-more{display:none}
@media (max-width:760px){
.analytics-grid:has(.guide-list)>section:has(.guide-list){order:3}
.support-msg{display:grid;grid-template-columns:1fr auto;gap:2px 8px;padding:10px 0}
.support-msg-head{display:contents}
.support-msg-head b{grid-column:1;grid-row:1;overflow-wrap:anywhere;font-size:.9375rem}
.support-tag{grid-column:2;grid-row:1;margin:0;align-self:start}
.support-msg-head .sub{grid-column:1/-1;grid-row:2;font-size:.75rem;overflow-wrap:anywhere}
.support-msg p{grid-column:1/-1;grid-row:3;margin:4px 0 0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;font-size:.875rem;line-height:1.5}
.support-msg.open p{display:block}
.support-more{display:inline-flex;grid-column:1/-1;justify-self:start;align-items:center;min-height:44px;padding:0 4px;border:0;background:none;color:var(--accent-text);font-weight:600;font-size:.8125rem}
}
@media (max-width:640px){
.analytics-grid:has(.guide-list) .analytics-body,.support-inbox-panel .analytics-body{padding:4px 14px 14px}
.support-inbox-panel{margin-top:12px}
.analytics-body>.support-form:first-child{margin-top:0;border-top:0;padding-top:4px}
.support-form{gap:10px}
.support-lead{font-size:.8125rem;line-height:1.45}
.support-form label{font-size:.8125rem}
.support-status:empty{display:none}
.support-status{font-size:.8125rem;line-height:1.4}
}

/* responsive:sweep-c - billing panel */
.billing-note{margin:12px 0 0;padding:10px 12px;border-radius:8px;font-size:.8125rem;line-height:1.45;background:#fff3df;color:#7a4a00}
.billing-note.bad{background:#fdecec;color:#9b2318}
.insight-row.over strong{color:#b42318}
@media (max-width:640px){
.panel:has([data-billing-checkout],#billing-portal) .form-actions{display:grid!important;grid-template-columns:1fr;gap:8px!important;margin-top:14px!important}
.panel:has([data-billing-checkout],#billing-portal) .form-actions button{width:100%;min-height:44px}
.panel:has([data-billing-checkout],#billing-portal) .insight-row{padding:8px 0}
}

/* responsive:sweep-c - dialog status messages (402 limit errors etc.) stay clear of the sticky action bar when scrolled into view */
@media (max-width:640px),(max-height:500px) and (max-width:900px){#dialog-status{scroll-margin-bottom:84px}}

/* responsive:sweep-c - player profile: raw coach assessments, skill history, season timeline */
.raw-review .tablewrap table{width:100%}
.raw-review .tablewrap td{padding:7px 0}
.raw-review .tablewrap td:last-child{text-align:right;font-weight:600;white-space:nowrap}
@media (max-width:640px){
.raw-review{padding:12px}
.raw-review .tablewrap{overflow:visible}
.raw-review .tablewrap td{font-size:.875rem}
}
@media (max-width:900px){
.skill-history{margin-top:12px;overflow:visible}
.skill-history caption{display:block;width:100%;padding:0 0 8px;font-size:.75rem;line-height:1.4}
.skill-history table.stack-table{display:block;width:100%;min-width:0;white-space:normal}
.skill-history table.stack-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.skill-history table.stack-table tbody{display:grid;gap:8px;padding:0}
.skill-history table.stack-table tr{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 14px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff}
.skill-history table.stack-table tr::after{content:"";order:3;flex:0 0 100%;height:0}
.skill-history table.stack-table th[scope=row]{position:static;order:1;flex:1 1 0;min-width:0;padding:0;background:none;box-shadow:none;border:0;font-weight:600;color:#263247;text-transform:none;letter-spacing:normal;font-size:.9375rem;white-space:normal}
.skill-history table.stack-table td{display:inline-flex;gap:5px;justify-content:flex-start;grid-column:auto;padding:0;border:0;min-width:0;font-size:.8125rem;order:4}
.skill-history table.stack-table td::before{content:attr(data-label);display:inline;min-width:0;padding:0;color:#8b94a3;font-size:.75rem}
.skill-history table.stack-table td:last-child{order:2;flex:none;font-weight:600}
.skill-history table.stack-table td:last-child::before{content:"Change"}
.skill-history table.stack-table td[data-empty]{display:none}
.earlier-skills summary{min-height:44px;display:flex;align-items:center;gap:6px}
}
.season-timeline td,.season-timeline th{white-space:normal}
@media (max-width:640px){
.chart span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal}
.chart{gap:8px;padding:0 6px;height:120px;margin-top:20px}
.chart div{min-width:0}
}

/* responsive:sweep-c - analytics */
.readiness-table th,.readiness-table td{white-space:normal}
@media (pointer:coarse){.panel-head button{min-height:44px}}
@media (max-width:640px){
.skill-summary{grid-template-columns:1fr auto auto;gap:4px 10px;padding:10px 0}
.skill-summary>span:first-child{grid-column:1;grid-row:1}
.skill-summary>.bar{grid-column:1/-1;grid-row:2}
.skill-summary>strong{grid-column:3;grid-row:1}
.skill-summary>.sub{grid-column:2;grid-row:1;font-size:.75rem}
}

/* responsive:sweep-c - player directory 1101-1700px: lowest-value columns drop progressively so the table fits without sideways scroll (hover/full detail stays in the profile) */
@media (min-width:1101px){
.dir-table th,.dir-table td{padding-left:12px;padding-right:12px}
.dir-table th{white-space:normal;vertical-align:bottom}
.dir-table td.c-prev,.dir-table td.c-team,.dir-table td.c-pos{white-space:normal;min-width:70px}
}
@media (min-width:1101px) and (max-width:1299px){
.dir-table .c-prev,.dir-table .c-long,.dir-table .c-rev,.dir-table thead th:nth-child(4),.dir-table thead th:nth-child(8),.dir-table thead th:nth-child(10){display:none}
}
@media (min-width:1300px) and (max-width:1459px){
.dir-table .c-prev,.dir-table .c-rev,.dir-table thead th:nth-child(4),.dir-table thead th:nth-child(10){display:none}
}
@media (min-width:1460px) and (max-width:1669px){
.dir-table .c-rev,.dir-table thead th:nth-child(10){display:none}
}

/* responsive:sweep-c - dashboard panel headers at 320-400: the ? tip stays beside the title instead of orphaning on its own line */
@media (max-width:400px){
.panel-head h2{font-size:.9375rem}
.panel-head{gap:8px}
.panel-head .flat{white-space:nowrap;padding-left:6px;padding-right:6px}
.panel-head .tag{padding-left:8px;padding-right:8px}
.panel-head h2 .tip-icon{margin-left:2px}
}
@media (max-width:640px){
/* responsive:sweep-c - analytics headers: the sub caption drops under the title instead of squeezing it */
.panel-head:has(h2+.sub){flex-wrap:wrap}
.panel-head:has(h2+.sub) .sub{flex:1 1 100%;margin:-4px 0 0}
}

/* responsive:final - distinct success / error messages (icon + text, not colour alone); .support-status is neutral until a state class is set */
.support-status{color:#202838}
.msg.msg-ok,.msg.msg-error{display:flex;align-items:flex-start;gap:8px;margin:12px 0 0;padding:10px 12px;border-radius:8px;font-size:.875rem;line-height:1.4;border:1px solid;overflow-wrap:anywhere}
span.msg.msg-ok,span.msg.msg-error{display:inline-flex;margin:4px 0 0}
.msg.msg-ok{background:#e9f7ef!important;color:#0b5132!important;border-color:#a9dcc0}
.msg.msg-error{background:#fdeceb!important;color:#8a1f17!important;border-color:#f0b3ae}
.msg.msg-ok::before,.msg.msg-error::before{flex:none;width:18px;height:18px;border-radius:50%;display:inline-grid;place-items:center;font-size:.7rem;font-weight:700;line-height:1;color:#fff;margin-top:1px}
.msg.msg-ok::before{content:"\2713" / "";background:#0b6b3f}
.msg.msg-error::before{content:"!" / "";background:#b3261e}

/* responsive:final - team intelligence: a one-line disclosure on phones, always open on larger screens; empty skills collapse to one note */
.insights-fold>summary{display:none}
.insights .no-ratings{margin:10px 0 0;color:#687386}
@media (max-width:760px){
.insights-fold>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:0 14px;cursor:pointer;list-style:none;font-size:.8125rem;color:#566276;border-top:1px solid var(--line)}
.insights-fold>summary::-webkit-details-marker{display:none}
.insights-fold>summary::after{content:"";flex:none;width:8px;height:8px;border:solid #687386;border-width:0 2px 2px 0;transform:rotate(45deg);margin:-3px 2px 0 0;transition:transform .15s}
.insights-fold[open]>summary::after{transform:rotate(-135deg);margin-top:3px}
.insights .panel-head{padding-bottom:10px}
}

/* responsive:final - profile: skill history never scrolls sideways (latest 4 seasons + "Older seasons" disclosure); unrecorded profile rows collapse to one line */
.skill-history th{min-width:0}
.skill-history table{width:100%;table-layout:auto}
.skill-history tbody th{min-width:96px}
.skill-history thead th{vertical-align:bottom}
.older-seasons{margin-top:12px}
.older-seasons>summary{min-height:44px;display:flex;align-items:center;gap:6px;cursor:pointer;font-size:.875rem;font-weight:600;color:var(--accent-text)}
.skill-history.older{margin-top:4px}
.insight-row.not-recorded span:first-child{color:#8b94a3}
.insight-row.not-recorded span:last-child{max-width:70%;text-align:right;color:#687386;overflow-wrap:anywhere}
@media (max-width:900px){
.skill-history.older table.stack-table td:last-child{order:4;flex:initial;font-weight:400}
.skill-history.older table.stack-table td:last-child::before{content:attr(data-label)}
}

/* responsive:final - dead-end screens (invalid invitation, waitlist unavailable): compact card, clear reason, full-width way back on phones */
.state-card{max-width:520px;margin:0;padding:24px;background:#fff;border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;gap:10px}
.state-card h1{margin:0;font-size:1.5rem}
.state-card p{margin:0;line-height:1.5;color:#4a5568}
.state-card .state-reason{padding:10px 12px;border-radius:8px;background:#fdeceb;border:1px solid #f0b3ae;color:#8a1f17;overflow-wrap:anywhere}
.state-card .state-action{display:inline-flex;align-items:center;justify-content:center;min-height:44px;margin-top:6px;padding:0 20px;border-radius:10px;background:var(--blue);color:var(--on-blue);font-weight:600;text-decoration:none;align-self:flex-start}
.state-card .state-action:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
@media (max-width:760px){
.state-card{padding:18px 16px;border-radius:12px}
.state-card h1{font-size:1.35rem}
.state-card .state-action{align-self:stretch;min-height:48px}
}

/* responsive:final - touch: the real boxes of player names, status dots and ? tips are 44px; visuals stay small (padding clipped away) and negative margins keep row heights unchanged */
@media (pointer:coarse){
.nc-dot::after,.tip-icon::after,.player .person button[data-profile]::after{display:none}
button.nc-dot{box-sizing:content-box;width:11px;height:11px;padding:16.5px;background-clip:content-box!important;margin:-16.5px -16.5px -16.5px -9.5px;position:relative}
button.nc-dot+button.nc-dot,button.nc-dot:has(+button.nc-dot){padding-inline:9px}
button.nc-dot+button.nc-dot{margin-left:-5px}
button.nc-dot:has(+button.nc-dot){margin-right:-9px}
.tip-icon{--tip-ml:4px;box-sizing:content-box;padding:13px;background-clip:content-box!important;margin:-13px -13px -13px calc(var(--tip-ml) - 13px);position:relative}
.panel-head h2 .tip-icon{--tip-ml:2px}
.stat .tip-icon{margin:-13px}
button[data-profile]{min-height:44px}
.player .person button[data-profile]{min-height:44px;display:inline-flex;align-items:center;vertical-align:middle;margin:-6px 0 -10px}
.player .person .positions{pointer-events:none}
td button[data-profile]{display:inline-flex;align-items:center;margin-block:-8px;vertical-align:middle}
.dashboard-list .person button[data-profile],.dir-table .c-player button[data-profile]{margin-block:0}
}
@media (pointer:coarse) and (forced-colors:active){
button.nc-dot{border:0;outline:1px solid CanvasText;outline-offset:-16px}
.tip-icon{border:0;outline:1px solid ButtonText;outline-offset:-13px}
}

/* responsive:final - skill matrix: headers wrap and cells tighten so 4 seasons + change fit the profile dialog without a sideways scroll */
@media (min-width:901px){
.skill-history,.skill-history table{max-width:100%}
.skill-history table{width:100%;table-layout:auto}
.skill-history th,.skill-history td{white-space:normal;padding:8px 6px;overflow-wrap:break-word}
.skill-history thead th{font-size:.75rem;line-height:1.25;vertical-align:bottom}
.skill-history thead th .sub{display:block;white-space:normal;font-size:.6875rem;line-height:1.25;margin-top:2px}
.skill-history tbody th{min-width:0;font-size:.8125rem}
.skill-history tbody td{text-align:center}
}

/* responsive:final - player profile header: all seven icon actions share one row on phones instead of orphaning the last one full-width */
@media (max-width:640px){
.modalhead:has(#preview-placement){column-gap:6px}
}

/* responsive:final - season readiness links in the move dialog reach 44px on touch */
@media (pointer:coarse){button[data-readiness-page]{min-height:44px;min-width:44px}}

/* responsive:final - touch tablets: names are ~20px tall in the roomier cards, so the overlap margins are larger to keep row height unchanged */
@media (pointer:coarse) and (min-width:761px){
.player .person button[data-profile]{margin:-12.2px 0}
}

/* responsive:final - warn message state + destructive icon-button label */
.msg.msg-warn{background:#fff6e0!important;color:#6b4300!important;border-color:#f0d08a}
.msg.msg-warn::before{flex:none;width:18px;height:18px;border-radius:50%;display:inline-grid;place-items:center;font-size:.7rem;font-weight:700;line-height:1;color:#fff;margin-top:1px;content:"!" / "";background:#a86400}
.support-status.msg-warn{display:flex}
#erase-player,#erase-player:hover{background:#b3261e!important;border-color:#b3261e!important;color:#fff!important}
/* responsive:verify - borderless link buttons, forgot-password row, automatic email verification screens */
button.link-btn{display:inline-flex;align-items:center;width:auto;min-width:0;min-height:0;padding:0 2px;border:0;border-radius:4px;background:none;box-shadow:none;color:var(--accent-text);font-size:.875rem;font-weight:600;line-height:1.35;text-align:left}
button.link-btn:hover{background:none;border:0;text-decoration:underline;text-underline-offset:3px}
button.link-btn:focus-visible{text-decoration:underline;text-underline-offset:3px;outline:3px solid var(--focus-ring);outline-offset:2px}
button.link-btn:disabled{opacity:1;color:#677184;text-decoration:none;cursor:default}
.auth-card .auth-switch button.link-btn{min-height:44px;padding:0 4px}
.auth-card .password-field:has(>.forgot-link){display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:12px}
.auth-card .password-field:has(>.forgot-link)>label{grid-column:1;display:flex;align-items:center;min-height:24px;margin:0 0 10px}
.auth-card .password-field:has(>.forgot-link)>.forgot-link{grid-column:2;grid-row:1;justify-self:end;margin:0 0 10px;white-space:nowrap;font-size:.8125rem}
.auth-card .password-field:has(>.forgot-link)>.password-control,.auth-card .password-field:has(>.forgot-link)>.password-caps-hint{grid-column:1/-1;position:relative;z-index:1}
@media (pointer:coarse){.auth-card .password-field:has(>.forgot-link)>.forgot-link{min-height:44px;margin:-10px -6px 0;padding:0 6px}}
.link-row{display:flex;flex-wrap:wrap;align-items:center;gap:0 18px;margin:12px 0 0}
.link-row button.link-btn{min-height:44px}
.verify-wait{display:flex;align-items:center;gap:10px;margin:16px 0 4px;padding:12px 14px;border-radius:8px;background:var(--accent-tint);color:var(--accent-ink);font-size:.9375rem;line-height:1.4}
.spinner{flex:none;width:16px;height:16px;border:2px solid var(--accent-border);border-top-color:var(--blue);border-radius:50%;animation:verify-spin .9s linear infinite}
@keyframes verify-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.spinner{animation:none}}
.verify-ok{color:#1d6b43;font-weight:600}
.intake-shell #back-login.link-btn,.intake-shell:has(#recovery-form) #back-login.link-btn{width:auto;min-height:44px;margin-top:6px;align-self:flex-start}
.intake-shell:has(#verify-continue,#verify-new-link) .intake-section .form-actions{display:flex;flex-direction:column;align-items:stretch;margin-top:14px}
.intake-shell:has(#verify-continue,#verify-new-link) .intake-section .form-actions>button{width:100%;min-height:48px}
.intake-shell:has(.verify-wait,.verify-ok) .intake-section>p:not(.verify-wait):not(#email-message){margin:0 0 6px}
.intake-shell:has(.verify-wait,.verify-ok) #email-message:not(:empty){margin:12px 0 0}
.grace-banner .link-btn{color:#4a3a12;text-decoration:underline;text-underline-offset:3px;margin-left:8px}
@media (pointer:coarse){.grace-banner .link-btn{min-height:44px;padding:0 6px}}
@media (max-width:640px){.link-row{gap:0 14px}.link-row button.link-btn{font-size:.9375rem}}
/* responsive:legal - compact Privacy / Terms links (auth screens, public forms, coach review, app shell) */
.legal-links{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:0 10px;margin:14px 0 0;padding:0;font-size:.8125rem;line-height:1.4;color:#5b6577}
.legal-links a{color:#5b6577;text-decoration:underline;text-underline-offset:3px;border:0;background:none;padding:6px 2px}
.legal-links a:hover{color:var(--accent-text)}
.legal-links a:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px;border-radius:4px}
.legal-vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.legal-links.auth-legal{margin:10px 0 0}
.intake-shell>.legal-links,.coach-review-shell>.legal-links{max-width:780px;margin:8px auto calc(18px + env(safe-area-inset-bottom))}
.legal-links.app-legal{margin:8px 0 calc(20px + env(safe-area-inset-bottom))}
.legal-agree{margin-top:12px}
.legal-agree a{color:var(--accent-text);text-underline-offset:3px}
@media (pointer:coarse){.legal-links a{display:inline-flex;align-items:center;min-height:44px;padding:0 6px}.legal-agree a{display:inline-block;padding:10px 2px;margin:-10px 0}}
/* responsive:pilot - Founding pilot banner and plan-panel card */
.pilot-banner{display:flex;align-items:center;justify-content:space-between;gap:8px 14px;flex-wrap:wrap;padding:12px 18px;margin:0 0 18px;border-radius:8px;font-size:.875rem;line-height:1.45;background:var(--accent-tint);color:var(--accent-ink);border:1px solid var(--accent-border)}
.pilot-banner>span:first-child{flex:1 1 260px;min-width:0;overflow-wrap:anywhere}
.pilot-actions{display:flex;flex-wrap:wrap;align-items:center;gap:0 6px}
.pilot-banner .link-btn{color:inherit;text-decoration:underline;text-underline-offset:3px;min-height:44px;padding:0 10px;background:none;border:0;font:inherit;cursor:pointer}
.pilot-banner .link-btn:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px;border-radius:4px}
.pilot-banner.pilot-notice{background:#fcf5e9;color:#6b5320;border-color:#f0e0bd}
.pilot-banner.pilot-warning{background:#fdecec;color:#9b2318;border-color:#f4c7c2}
.pilot-banner.pilot-ended{background:#eef1f7;color:#44506a;border-color:#dbe2ee}
.pilot-card{margin:0 0 14px;padding:12px 14px;border-radius:8px;background:var(--accent-tint);color:var(--accent-ink);border:1px solid var(--accent-border);font-size:.875rem;line-height:1.5}
.pilot-card strong{display:block;font-size:.9375rem;overflow-wrap:anywhere}
.pilot-card p{margin:6px 0 0}
@media (max-width:640px){.pilot-banner{padding:12px 14px;margin:0 0 14px}.pilot-actions{width:100%}.pilot-banner .link-btn{padding:0 12px 0 0}}
@media (max-width:360px){.pilot-card{padding:10px 12px}}

/* responsive:export - Organisation page "Export your data" panel and its password dialog */
.export-panel{margin-top:24px}
.export-panel .analytics-body{padding:4px 14px 16px}
.export-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:14px 0}
.export-cols h3{font-size:.875rem;margin:0 0 6px}
.export-cols ul{margin:0;padding-left:18px;font-size:.875rem;line-height:1.5}
.export-warning{margin:12px 0;padding:10px 12px;border-radius:8px;font-size:.8125rem;line-height:1.45;background:#fff3df;color:#7a4a00}
.export-note{margin:12px 0 0;font-size:.8125rem;opacity:.8}
#export-error:not(:empty){margin-top:10px;padding:10px 12px;border-radius:8px;background:#fdecec;color:#9b2318;font-size:.875rem}
#export-progress:not(:empty){margin-top:10px;font-size:.875rem}
#export-form input{font-size:1rem}
@media (max-width:640px){.export-cols{grid-template-columns:1fr;gap:12px}.export-panel .form-actions button{width:100%}}
@media (pointer:coarse){.export-panel .form-actions button,#export-form .password-visibility{min-height:44px}}

/* responsive:mailtips - collapsible spam tips in Email status */
.mail-tips{margin:0 0 14px;padding:10px 14px;border:1px solid #d9e0e8;border-radius:8px;background:#f8fafc;font-size:.875rem;line-height:1.5}
.mail-tips summary{cursor:pointer;font-weight:600;min-height:24px}
.mail-tips ul{margin:10px 0 2px;padding-left:20px}
.mail-tips li{margin:6px 0;overflow-wrap:anywhere}
@media (pointer:coarse){.mail-tips summary{min-height:44px;display:flex;align-items:center}}

/* responsive:a11y - text contrast (WCAG 1.4.3): grey text colours darkened to >=4.5:1 on white and on the tinted card/table backgrounds */
:root{--muted:#5f6876}
.review-progress{color:#626b79}
.review-save-status{color:#606a7b}
.season-readonly{color:#5d6a81}
.team-edit{color:#5d6b81}
.auth-card .sample-choice{color:#5f6b80}
.auth-card .auth-hint{color:#636a75}
.navlabel{color:#666a73}
.nav button{color:#626a79}
.avatar{color:#5e6b7f}
.crumb{color:#656b73}
p{color:#636a74}
.step{color:#656a72}
.stat label{color:#636a77}
.stat small{color:#636a73}
.count{color:#626b77}
.positions{color:#646a74}
.trend{color:#21766a}
.trend.negative{color:#925d43}
.player-foot{color:#656a71}
.tag{color:#646b76}
.placements-intro{color:#596a8a}
.tag-consent{color:#1d794c}
.tag-umpire{color:#2563eb}
.team-summary{color:#656b73}
.drop{color:#646a74}
.insight-title{color:#646972}
.insight-row{color:#626a75}
.position{color:#467267}
.position.missing{color:#7f653d}
.note{color:#706959}
.skill label{color:#626b79}
.footer-note{color:#636974}
th{color:#646b75}
.empty{color:#636a75}
.chart span{color:#636a74}
.skill-history caption{color:#606a7b}
.readiness-checks p{color:#606a7b}
.workspace-start-choice>p{color:#5f6b80}
.dash-team{color:#626a75}
.dash-action{color:#626a75}
.guide ol{color:#5d6a81}
.support-lead{color:#5d6a81}
.sample-choice{color:#5f6b80}
.season-counts{color:#626a75}
@media(max-width:760px){.rs-stack td[data-label]::before{color:#626a75}}
@media (max-width:640px){table.stack-table td[data-label]::before,table:has(td.stack-primary) td[data-label]::before{color:#646b75}}
@media (max-width:900px){.dir-table td[data-label]::before{color:#646b75}.dir-table .c-exp::before,.dir-table .c-team::before{color:#646971}.dir-table .c-player .sub{color:#646b75}}
@media (max-width:640px){.pl-stack td[data-label]::before{color:#646b75}}
.rs-disclosure>summary::after{color:#626a75}
@media(min-width:761px) and (max-width:1100px){.rs-stack td[data-label]::before{color:#626a75}}
.email-chip.s-accepted{color:#1d794c}
@media (max-width:1000px){.email-table.email-table td.e-kind::after{color:#646971}.email-table.email-table td.e-created{color:#646b75}.email-table.email-table td.e-att{color:#646b75}}
@media (max-width:900px){.skill-history table.stack-table td::before{color:#646b75}}
.insights .no-ratings{color:#606a7b}
.insight-row.not-recorded span:first-child{color:#646b75}
.insight-row.not-recorded span:last-child{color:#606a7b}
button.link-btn:disabled{color:#616a7c}

.tip-icon{color:#46536d}

/* responsive:agebands */
.age-band-tag{background:var(--accent-tint);color:#3d4a6b;font-weight:500;font-size:.75rem;white-space:nowrap}
.age-warn-tag{background:#fff4e0;color:#7a4b00;font-weight:500;font-size:.75rem;white-space:nowrap}
.age-chip{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin-top:6px;padding:4px 8px;border-radius:7px;background:#fff4e0;color:#7a4b00;font-size:.75rem;line-height:1.4}
.age-chip .age-ack{min-height:44px;min-width:44px;padding:0 10px;border:1px solid #e0b46a;border-radius:6px;background:#fff;color:#7a4b00;font-size:.75rem;font-weight:600;cursor:pointer}
.age-chip .age-ack:hover{background:#fff9ee}
.age-chip .age-ack:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.age-banner,.age-help{margin:0 0 12px;padding:10px 14px;border-radius:7px;background:#fff4e0;color:#6b4300;font-size:.875rem;line-height:1.5}
.age-help{background:var(--accent-tint);color:#3d4a6b}
.age-banner .link-btn,.age-help .link-btn{min-height:44px;padding:0 4px;color:var(--accent-ink)}
.age-note{display:block;color:#7a4b00}
.age-note:empty{display:none}
.age-band-field{margin:24px 0 0;padding:14px;border:1px solid var(--line);border-radius:8px}
.age-band-field legend{padding:0 6px;font-weight:600}
.age-band-field select,.age-band-field input{font-size:16px;min-height:44px}
.age-band-field .age-inputs{margin-top:12px}
.age-band-field .age-inputs[hidden]{display:none}
.age-settings .sample-choice{min-height:44px}
@media (max-width:420px){.age-band-field{padding:10px}.age-band-field .age-inputs{grid-template-columns:1fr}}

/* responsive:parentflow */
.wl-vh{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.wl-opt{font-weight:400;color:#566276}
.wl-hint{display:block;margin:2px 0 0;font-size:.8125rem;line-height:1.45;color:#566276}
.field-error{display:block;margin-top:2px;color:#b42318;font-size:.8125rem;line-height:1.4;font-weight:600}
.field-error[hidden]{display:none}
#public-intake [aria-invalid=true]{border-color:#b42318!important;outline:2px solid #f9c7c1;outline-offset:0}
#public-intake input[type=checkbox][aria-invalid=true]{outline-offset:2px}
#public-intake#public-intake .intake-section .form-grid{grid-template-columns:minmax(0,1fr);gap:14px}
@media(min-width:560px){#public-intake#public-intake .intake-section .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
#public-intake#public-intake .intake-section .form-grid>label:has([name]){grid-column:auto}
#public-intake#public-intake .intake-section .form-grid>label:has([name=name]),#public-intake#public-intake .intake-section .form-grid>label:has([name=guardianName]),#public-intake#public-intake .intake-section .form-grid>.birth-field{grid-column:1/-1}
#public-intake .birth-field{border:0;padding:0;margin:0;min-width:0;display:grid;gap:6px}
#public-intake .birth-field legend{padding:0;margin:0 0 6px;font-size:.8125rem;font-weight:600}
#public-intake .birth-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
#public-intake .birth-row label{display:block;margin:0}
#public-intake .birth-row select{width:100%;min-height:48px}
#public-intake fieldset.intake-positions{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,124px),1fr));gap:8px;margin:14px 0 6px;border:0;padding:0;min-width:0}
#public-intake fieldset.intake-positions legend{grid-column:1/-1}
#public-intake fieldset.intake-positions label{justify-content:flex-start;text-align:left;padding:8px 10px;line-height:1.25;min-height:44px}
#public-intake fieldset.intake-positions .wl-full{grid-column:1/-1}
#public-intake fieldset.intake-positions label:has(input:disabled){opacity:.5;cursor:not-allowed}
#public-intake .wl-help{margin:4px 0 14px;font-size:.875rem}
#public-intake .wl-help summary{min-height:44px;display:flex;align-items:center;cursor:pointer;color:var(--accent-ink);font-weight:600}
#public-intake .wl-help dl{margin:0 0 6px}
#public-intake .wl-help dt{margin-top:8px;font-weight:600}
#public-intake .wl-help dd{margin:2px 0 0;color:#566276}
#public-intake .wl-sub{margin:22px 0 4px;font-size:.95rem}
#public-intake .wl-phone{margin:10px 0;padding:10px 12px;border:1px solid #e8cf86;background:#fff9e6;border-radius:8px}
#public-intake .wl-phone[hidden]{display:none}
#public-intake .wl-warn{margin:0 0 4px;font-size:.875rem;color:#6b4a00}
#public-intake .wl-consent{margin:18px 0 0;padding:12px 14px;min-width:0;border:1px solid #dfe5ef;border-radius:10px}
#public-intake .wl-consent legend{padding:0 6px;font-weight:600;font-size:.875rem}
#public-intake .wl-consent ul{margin:6px 0 10px 18px;padding:0;line-height:1.5;font-size:.9rem}
#public-intake .wl-consent li{margin:4px 0}
#public-intake>button[type=submit].wl-submit{position:static!important;bottom:auto;box-shadow:none;width:100%;min-height:52px;margin-top:8px}
.intake-shell #wl-restored{margin:0 0 14px!important}
.intake-shell #wl-restored[hidden]{display:none}
.intake-shell #wl-restored button{margin-left:8px;min-height:44px}
.wl-contact{margin:14px 0 0;font-size:.9375rem;line-height:1.5;overflow-wrap:anywhere}
.wl-summary dl{margin:0 0 12px}
.wl-summary dl>div{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:8px 0;border-bottom:1px solid #edf0f5}
.wl-summary dt{min-width:110px;color:#566276;font-size:.875rem}
.wl-summary dd{margin:0;min-width:0;overflow-wrap:anywhere}
.wl-ref{font-size:1.25rem;letter-spacing:.06em;font-variant-numeric:tabular-nums}
.wl-next{margin:8px 0 12px 20px;line-height:1.55}
#wl-done:focus{outline:none}
#wl-copy-ref,#retry-waitlist,#wl-start-over{min-height:44px;min-width:44px}
#wl-add-another{width:100%;min-height:48px;margin-top:6px}

/* responsive:secretary - attention items, stage checks, entry correction, activity names, staff invites */
.sev-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.sev-badge,.chk{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;margin-right:8px;border-radius:50%;font-size:.75rem;font-weight:700;line-height:1;flex:none;vertical-align:middle;background:#eef1f6;color:#4a5568}
.sev-high .sev-badge,.chk-blocker .chk{background:#fde8e8;color:#9b1c1c}
.sev-medium .sev-badge,.chk-warning .chk{background:#fff4d6;color:#8a5a00}
.sev-low .sev-badge,.sev-advisory .sev-badge,.chk-info .chk{background:var(--accent-tint);color:var(--accent-ink)}
.chk-ok{background:#e3f6ea;color:#176a38}
#see-all-attention{min-height:44px;align-self:flex-start}
.stage-checks{margin-top:20px}.stage-check-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:10px}
.chk-row{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border:1px solid #e7eaf0;border-radius:10px}
.chk-row>span:nth-child(2){flex:1;min-width:0;overflow-wrap:anywhere}.chk-row .sub{display:block;margin-top:2px}
.chk-row button{min-height:44px;white-space:normal}
.stage-help{margin-top:20px}.stage-help ol{margin:10px 0 0 20px;line-height:1.55}.stage-blocked{margin-top:14px;color:#9b1c1c}
.form-error{margin:12px 0;padding:10px 12px;border-left:3px solid #c0392b;background:#fdf1f0;color:#8a2a20;overflow-wrap:anywhere}
.field-error{display:block;margin-top:4px;font-size:.8125rem;color:#a02a20}
[aria-invalid="true"]{border-color:#c0392b}
.entry-flash,.wl-saved{border-left:3px solid #1f8a4c}
.pool-add{margin-left:8px;min-height:44px}
.activity-subject{color:#566276;font-weight:400}
.staff-note{margin:12px 16px}
@media (max-width:640px){.chk-row{flex-wrap:wrap}.chk-row button{width:100%}}

/* responsive:a11y - shared helpers, help buttons, Netball Connect states, explained-disabled actions, inline errors, dialog Save, scroll lock */
.visually-hidden,.vh{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
button.tip-icon{border:0;padding:0;font-family:inherit;line-height:1;appearance:none;-webkit-appearance:none}
@media (pointer:coarse){button.tip-icon{padding:13px}}
/* status-dots:filled - every status dot is a plain FILLED circle with no border, ring or rim (owner request). Colour is never the only cue: every dot has a title and an accessible name
   (role="img" + aria-label, or a button's aria-label), and the legend names each colour. Each fill keeps at least 3:1 against white (WCAG 1.4.11):
   registered #178a4f 4.4:1 · not registered yet #c62828 5.6:1 · credential #2563eb 5.2:1 (#7c3aed 5.7:1, #b45309 5.0:1) · shared with another team #a38200 3.6:1 (a deep yellow; the old #facc15 was 1.5:1 and needed a rim).
   background-color / background-image (not the shorthand) so the coarse-pointer rule that clips the fill to the 11px content box keeps working. Forced-colours mode keeps its system outline (an OS high-contrast mode, not a rim). */
.nc-dot.nc-on,.nc-dot.nc-on:hover{background-color:#178a4f;background-image:none}
.nc-dot.nc-off,.nc-dot.nc-off:hover{background-color:#c62828!important;background-image:none!important}
.nc-dot.shared-dot,.nc-dot.shared-dot:hover{background-color:#a38200;background-image:none;box-shadow:none;cursor:default}
.nc-legend{display:flex;flex-wrap:wrap;gap:6px 20px;margin:0 0 14px;font-size:.8125rem;color:#4b5565;align-items:center}
.nc-legend-key{display:inline-flex;align-items:center;gap:0}
.nc-legend .nc-dot{margin:0 7px 0 0}
button.soft-disabled,button[aria-disabled="true"]{opacity:.62;cursor:not-allowed}
button.soft-disabled:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.dialog-footer{display:flex;justify-content:flex-end;gap:10px;margin:22px 0 0;padding:12px 0 2px;background:#fff;position:sticky;bottom:0;z-index:2}
button.dialog-save{min-height:44px;min-width:120px;padding:0 22px;border-radius:8px;background:var(--blue);border:1px solid var(--blue);color:var(--on-blue);font-weight:600;font-size:.9375rem;cursor:pointer}
button.dialog-save:disabled{opacity:.6;cursor:not-allowed}
button.dialog-save:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
@media (max-width:760px){.dialog-footer{padding-bottom:calc(10px + env(safe-area-inset-bottom))}button.dialog-save{flex:1;min-height:48px}}
body.modal-open{overflow:hidden}
dialog,.modalbody{overscroll-behavior:contain}
.field-error{margin:6px 0 0;font-size:.8125rem;line-height:1.45;color:#a3261c;font-weight:500}
[aria-invalid="true"]{border-color:#a3261c!important;outline:1px solid #a3261c}
.auth-card .auth-notice{margin:0 0 14px;padding:10px 12px;border-radius:8px;background:#eaf6ef;color:#14603a;font-size:.875rem}
.pw-rules,.auth-card .pw-rules{font-size:.8125rem;line-height:1.5;color:#4b5565;margin:6px 0 12px}
.support-hours{font-size:.875rem;margin:0 0 12px;color:#4b5565}
.verify-note{font-size:.8125rem;color:#4b5565;margin:6px 0 0;min-height:1.2em}
a.plain-link,.intake-shell a.return-link{color:var(--accent-text);font-weight:600;text-decoration:underline;text-underline-offset:3px}
@media (max-width:900px){
.sidebar .nav{-webkit-mask-image:none;mask-image:none}
.sidebar .nav[data-fade="end"]{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 30px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 30px),transparent)}
.sidebar .nav[data-fade="start"]{-webkit-mask-image:linear-gradient(270deg,#000 calc(100% - 30px),transparent);mask-image:linear-gradient(270deg,#000 calc(100% - 30px),transparent)}
.sidebar .nav[data-fade="both"]{-webkit-mask-image:linear-gradient(90deg,transparent,#000 30px,#000 calc(100% - 30px),transparent);mask-image:linear-gradient(90deg,transparent,#000 30px,#000 calc(100% - 30px),transparent)}
}

/* responsive:coach */
.coach-review-shell p,.coach-review-shell .sub,.coach-review-shell .rv-count{color:#3b4658}
.coach-review-shell .rv-intro{margin:12px 0 0;font-size:1rem;line-height:1.55;color:#1f2937}
.coach-review-shell .rv-welcome{margin:10px 0 0;padding:10px 12px;font-size:.9375rem;font-weight:600;color:var(--accent-ink);background:var(--accent-tint);border:1px solid var(--accent-border);border-radius:8px}
.coach-review-shell .rv-scale{list-style:none;display:flex;flex-wrap:wrap;gap:4px 6px;margin:0 0 10px;padding:0}
.coach-review-shell .rv-scale li{flex:0 1 auto;min-width:0;padding:3px 8px;font-size:.9375rem;line-height:1.3;color:#1f2937;background:var(--accent-tint);border:1px solid #aebcd8;border-radius:6px}
.coach-review-shell .rv-scale li b{display:inline-block;min-width:1.1em;margin-right:2px;color:var(--accent-ink)}
.coach-review-shell .rv-count{margin:0 0 2px;font-size:.875rem;font-weight:600}
.coach-review-shell #coach-player-heading{font-size:1.5rem;line-height:1.2;letter-spacing:-.3px;overflow-wrap:anywhere;color:#111827}
.coach-review-shell #coach-player-heading:focus{outline:none}
.coach-review-shell #coach-player-heading:focus-visible{outline:3px solid var(--focus-ring);outline-offset:4px;border-radius:4px}
.coach-review-shell .review-player{scroll-margin-top:84px}
.coach-review-shell .star-row{grid-template-areas:"l l" "s c" "m m" "h h"}
.coach-review-shell .star-row .rate-meta{grid-area:m;display:flex;flex-wrap:wrap;justify-content:space-between;gap:2px 12px;padding-top:4px;font-size:.875rem;color:#3b4658}
.coach-review-shell .star-row .rate-level{font-weight:600;color:#1f2937}
.coach-review-shell .star-row .rate-state{min-width:5.5em;text-align:right;font-weight:600;color:#14532d}
.coach-review-shell .star-row .rv-hint{grid-area:h;margin:6px 0 0;padding:8px 10px;font-size:.9375rem;line-height:1.45;color:#1f2937;background:var(--accent-tint);border-radius:6px}
.coach-review-shell .star-row .rv-skill-name{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:1.0625rem}
.coach-review-shell .review-player .rv-hint-btn{min-height:32px;min-width:32px;width:32px;height:32px;padding:0;border-radius:50%;font-weight:700;font-style:italic;font-family:Georgia,serif;color:var(--accent-ink);background:var(--accent-tint);border:1px solid var(--accent-mid);line-height:1}
.coach-review-shell button[aria-disabled="true"]{opacity:.55;cursor:not-allowed}
.coach-review-shell .rv-submit-help{flex:1 0 100%;order:9;margin:0;text-align:center;font-size:.9375rem;font-weight:600;color:#1f2937}
.coach-review-shell .rv-legend{order:5;margin:16px 0 0!important;font-size:.875rem;line-height:1.5;color:#3b4658}
.coach-review-shell .rv-sr,.rv-prereqs .rv-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.coach-review-shell .review-save-status{font-size:.9375rem;color:#1f2937;min-height:1.5em}
.coach-review-shell .coach-done{max-width:560px;padding-top:28px;gap:0}
.coach-review-shell .coach-done h1{font-size:2rem;margin:6px 0 12px}
.coach-review-shell .coach-done:focus-within h1:focus{outline:none}
.coach-review-shell .coach-done-lead{font-size:1.125rem;line-height:1.55;color:#111827}
.coach-review-shell .coach-done-block{margin-top:22px;padding:14px 16px;background:#fff;border:1px solid var(--line);border-radius:10px}
.coach-review-shell .coach-done-block h2{margin-bottom:6px;font-size:1.0625rem}
.coach-review-shell .coach-done-block p{font-size:1rem;line-height:1.55;color:#1f2937;overflow-wrap:anywhere}
.coach-review-shell .coach-done .actions{order:0;display:block;margin:24px 0 0!important}
.coach-review-shell .coach-done .actions button{width:100%;min-height:48px}
@media (max-width:339px){.coach-review-shell .star-row{grid-template-areas:"l c" "s s" "m m" "h h"}.coach-review-shell .rv-scale li{flex:1 1 100%}}
@media (min-width:901px){.coach-review-shell .review-player .star-row{grid-template-areas:"l l" "s c" "m m" "h h"}}
.rv-prereqs{padding:0;margin:0 0 20px}
.rv-prereqs .rv-prereq-head{padding:18px 20px 6px}
.rv-prereqs .rv-prereq-head p{margin-top:6px;color:#3b4658}
.rv-prereqs .rv-prereq-team{padding:14px 20px 16px;border-top:1px solid var(--line)}
.rv-prereqs .rv-prereq-team h3{margin-bottom:8px;font-size:1rem}
.rv-prereqs .rv-checks{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.rv-prereqs .rv-checks li{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:.9375rem;color:#1f2937}
.rv-prereqs .rv-check-mark{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;font-weight:700;font-size:.8125rem}
.rv-prereqs li.ok .rv-check-mark{background:#dcf5e5;color:#14532d}
.rv-prereqs li.todo .rv-check-mark{background:#fde8e6;color:#a1271b}
.rv-prereqs .rv-check-text{flex:1 1 12em;min-width:0;overflow-wrap:anywhere}
.rv-prereqs li button{min-height:36px;font-size:.875rem}
.rv-prereqs .rv-prereq-create{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:12px}
.rv-why{font-size:.875rem;color:#3b4658;overflow-wrap:anywhere}
.rv-menu-item{display:grid}
.rv-menu-item .rv-why{display:block;margin:-2px 14px 8px;font-size:.75rem;line-height:1.4;max-width:240px;white-space:normal}
.rv-hint-fields{border:0;margin:16px 0 0;padding:0;min-width:0}
.rv-hint-fields legend{font-weight:650;padding:0;margin-bottom:6px}
.rv-hint-fields .review-label{margin:10px 0}
.rv-hint-fields input{width:100%}
.export-note{opacity:1;color:#4b5565}
button.tip-icon,button.tip-icon:hover{min-height:0;min-width:0}
.auth-card .auth-eyebrow{color:var(--accent-text)}
/* responsive:batch3-secretary */
.btn-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 20px;border-radius:8px;background:var(--blue);color:var(--on-blue);font-weight:600;text-decoration:none}
.btn-link:hover{filter:brightness(.95)}
@media (min-width:600px) and (max-width:1100px){.auth-card input[type=email],.auth-card input[name=email],.intake-section input[type=email]{width:100%;max-width:none}}
/* responsive:batch3-coach - compact top, overlay skill hints, status chips, plain-label scale key, reminder line, contrast */
.coach-review-shell header{padding:6px 0}
.coach-review-shell header .brand{font-size:1.2rem}
.coach-review-shell main{padding-top:6px}
.coach-review-shell .auth-eyebrow{display:block;margin:0;font-size:.6875rem;line-height:1.2;letter-spacing:1px;color:#4a5d80}/* public:club-theme - the eyebrow stays slate on the PlayOps defaults and follows the club colour only when the club saved custom colours (app.js applyPublicTheme sets data-club-theme) */:root[data-club-theme] .coach-review-shell .auth-eyebrow{color:var(--accent-text)}
.coach-review-shell h1{font-size:1.2rem;line-height:1.2;margin:0}
.coach-review-shell main>p{margin:0;font-size:.8125rem;line-height:1.3}
.coach-review-shell .rv-intro-box{margin:6px 0 0}
.coach-review-shell .rv-intro{margin:0;font-size:.875rem;line-height:1.4;color:#1f2937}
.coach-review-shell .rv-more{display:inline-block;min-height:28px;margin:-4px 0;padding:3px 8px;border:0;border-radius:6px;background:none;color:var(--accent-ink);font-size:.875rem;font-weight:700;text-decoration:underline;vertical-align:baseline}
.coach-review-shell .rv-how{margin:6px 0 0;padding:8px 10px 8px 28px;font-size:.875rem;line-height:1.4;color:#1f2937;background:var(--accent-tint);border-radius:8px}
.coach-review-shell .rv-how[hidden]{display:none}
.coach-review-shell .rv-how li+li{margin-top:3px}
.coach-review-shell .rv-welcome{margin:6px 0 0;padding:6px 10px;font-size:.875rem}
.coach-review-shell .rv-sticky{margin-top:6px;padding:4px 14px 6px}
.coach-review-shell .rv-sticky .review-progress{margin:0 0 4px;font-size:.8125rem;color:#374151;font-weight:600}
.coach-review-shell .review-jump{margin:6px 0;align-items:stretch}
.coach-review-shell .review-jump select{flex:1 1 42%}
.coach-review-shell #review-unfinished{flex:1 1 50%;min-width:0;padding:4px 8px;font-size:.8125rem;line-height:1.2;white-space:normal;text-align:center;color:var(--accent-ink);border-color:var(--accent-mid);background:var(--accent-wash)}
.coach-review-shell .rv-nu-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}
.coach-review-shell .review-player{margin:0 0 10px;padding:8px 10px 10px}
.coach-review-shell .review-player .profilehero{margin-bottom:4px;gap:10px}
.coach-review-shell .review-player .profilehero .avatar{width:36px;height:36px;font-size:.8rem}
.coach-review-shell #coach-player-heading{font-size:1.2rem}
.coach-review-shell .review-player .profilehero p{margin:0;font-size:.8125rem;line-height:1.5}
.rv-status{display:inline-block;margin-left:2px;padding:0 8px;border-radius:999px;font-size:.75rem;font-weight:700;line-height:1.5;white-space:nowrap}
.rv-status-todo{color:#7c2d12;background:#fff4e0;border:1px solid #c2610c}
.rv-status-done{color:#14532d;background:#e3f6ea;border:1px solid #2f8a57}
.coach-review-shell .rv-scale{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;margin:2px 0 4px;padding:0;list-style:none}
.coach-review-shell .rv-scale li{flex:none;min-width:0;padding:2px 1px 3px;text-align:center;font-size:.6875rem;line-height:1.15;color:#374151;background:none;border:0;border-bottom:2px solid #aab4c6;border-radius:0;overflow-wrap:anywhere;cursor:default;pointer-events:none}
.coach-review-shell .rv-scale li b{display:block;min-width:0;margin:0;font-size:.8125rem;color:var(--accent-ink)}
.coach-review-shell .review-player .note{margin:0 0 2px;font-size:.8125rem}
.coach-review-shell .star-row{position:relative;padding:4px 0}
.coach-review-shell .star-row .rv-skill-name{font-size:1rem}
.coach-review-shell .star-row .rate-meta{padding-top:0;font-size:.8125rem;line-height:1.25}
.coach-review-shell .star-row .rv-hint{position:absolute;grid-area:auto;left:0;right:0;top:calc(100% - 2px);z-index:4;margin:0;padding:8px 10px;font-size:.875rem;line-height:1.4;color:#1f2937;background:#fff;border:1px solid var(--accent-mid);border-radius:8px;box-shadow:0 8px 20px #18233c33}
.coach-review-shell .star-row .rv-hint.rv-hint-up{top:auto;bottom:calc(100% - 2px)}
.coach-review-shell .rv-hint-btn{position:relative}
.coach-review-shell .rv-hint-btn::after{content:"";position:absolute;inset:-10px -6px 0}
.coach-review-shell .rv-hint-inline{display:none;flex:1 0 100%;font-size:.8125rem;font-weight:400;line-height:1.35;color:#3b4658}
.coach-review-shell .star-buttons button{color:#667085}
.coach-review-shell .star-buttons button:hover{color:#4f5a6e}
.coach-review-shell .star-buttons button.filled,.coach-review-shell .star-buttons button.filled:hover{color:#b45309}
.coach-review-shell .star-buttons button[aria-disabled="true"],.coach-review-shell .star-row>button[aria-disabled="true"]{opacity:1;cursor:not-allowed}
.coach-review-shell button:disabled{opacity:1;color:#566074;background:#f3f4f7;border:1px dashed #8b95a7;cursor:not-allowed}
.coach-review-shell #review-submit:disabled,.coach-review-shell #review-submit[aria-disabled="true"]{opacity:1;color:#fff;background:#5e6a82;border:1px solid #5e6a82;cursor:not-allowed}
.coach-review-shell .review-controls{margin-top:8px;padding-top:6px;padding-bottom:calc(6px + env(safe-area-inset-bottom));gap:6px}
.coach-review-shell .rv-submit-help{font-size:.8125rem;line-height:1.2}
.coach-review-shell .review-save-status{padding-top:4px;font-size:.875rem;min-height:1.25em}
.coach-review-shell .rv-reminder{order:6;margin:8px 0 12px;font-size:.8125rem;line-height:1.45;color:#374151}
.coach-review-shell .rv-reminder a{color:var(--accent-ink);text-decoration:underline}
.coach-review-shell .coach-done .rv-reminder{margin-top:18px}
.coach-review-shell .auth-eyebrow+h1{margin-top:0}
@media (max-width:700px){.coach-review-shell .review-player .rv-missing{display:none}}
@media (min-width:768px){.coach-review-shell .rv-hint-inline{display:block}.coach-review-shell .rv-hint-btn.rv-hint-short{display:none}.coach-review-shell .rv-scale li{font-size:.875rem}.coach-review-shell .rv-scale li b{display:inline;margin-right:4px}}
@media (max-height:500px) and (orientation:landscape){.coach-review-shell .rv-submit-help{flex:1 1 0;order:0;align-self:center;text-align:left}.coach-review-shell .review-controls button{flex:none;padding:0 14px}.coach-review-shell .review-controls{align-items:center}}
@media (max-width:359px){.coach-review-shell .review-player{padding:8px 6px 10px}.coach-review-shell .rv-scale li{font-size:.625rem;letter-spacing:-.1px;overflow-wrap:normal}.coach-review-shell .rv-scale li b{font-size:.75rem}}
@media (max-width:700px){.coach-review-shell .review-player .note{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}

/* responsive:batch3-a11y — acknowledged age note keeps the space of the full note so nothing shifts under the pointer */
.age-chip-done{box-sizing:border-box;align-content:center;overflow:hidden;color:#5a3a00;background:#fff4e0;outline-offset:2px}
.age-chip-done:not([style]){min-height:52px}
.age-chip-done:focus-visible{outline:3px solid var(--focus-ring)}
@media (max-height:500px) and (orientation:landscape) and (min-width:560px) and (max-width:900px){.coach-review-shell main{display:grid;grid-template-columns:minmax(0,15rem) minmax(0,1fr);column-gap:14px;align-items:start;align-content:start}.coach-review-shell main>*{grid-column:1}.coach-review-shell main>.review-player{grid-column:2;grid-row:1/span 8;order:0;margin:6px 0 0}.coach-review-shell main>.review-controls,.coach-review-shell main>.actions,.coach-review-shell main>.rv-legend,.coach-review-shell main>.rv-reminder,.coach-review-shell main>#coach-announce{grid-column:1/-1}.coach-review-shell .rv-sticky{position:static;margin:6px 0 0;padding:0}.coach-review-shell .review-jump{flex-wrap:wrap}.coach-review-shell .review-jump select,.coach-review-shell #review-unfinished{flex:1 1 100%}.coach-review-shell .review-player .profilehero .avatar{display:none}.coach-review-shell .rv-scale{margin:0 0 2px}}
.coach-review-shell .star-row .rv-hint{pointer-events:none}
/* responsive:batch4-coach-taps - rows never change height when a rating lands; the action bar stays last so it never detaches mid-page at the end; stars keep their full area */
.coach-review-shell .review-player .profilehero p .rv-status{display:table;margin:2px 0 0;white-space:nowrap}
.rv-status-new{color:#374151;background:#eef0f4;border:1px solid #8b95a7}
.coach-review-shell .review-controls{order:9}
/* coach-ux start: coach review page - numbered stars, save chip, ratings bar, per-player done callout, overview status, done summary */
.coach-review-shell .star-buttons button{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:44px;min-height:52px}
.coach-review-shell .star-buttons .rv-star-glyph{display:block;line-height:1}
.coach-review-shell .star-buttons .rv-star-num{display:block;font-size:.75rem;font-weight:600;line-height:1;color:#4b5563;font-family:inherit}
.coach-review-shell .star-buttons button.filled .rv-star-num{color:#7c2d12}
.coach-review-shell .rv-sticky .review-progress{display:flex;align-items:center;gap:6px 12px;flex-wrap:wrap}
.coach-review-shell .rv-sticky .review-progress .rv-progress-count{margin-left:auto}
.coach-review-shell .rv-save-chip{padding:1px 8px;border-radius:999px;font-size:.75rem;font-weight:600;line-height:1.5;white-space:nowrap;color:#374151;background:#eef0f4;border:1px solid #c9ced8}
.coach-review-shell .rv-save-chip[data-state="saved"]{color:#14532d;background:#e3f6ea;border-color:#2f8a57}
.coach-review-shell .rv-save-chip[data-state="saving"]{color:var(--accent-ink);background:var(--accent-tint);border-color:var(--accent-border)}
.coach-review-shell .rv-save-chip[data-state="error"]{color:#9b1c1c;background:#fde8e6;border-color:#c0392b}
.coach-review-shell .rv-sticky .bar{height:6px}
.coach-review-shell .rv-sticky .bar i{background:var(--blue);transition:width .2s ease}
.coach-review-shell .rv-player-done{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:10px 14px;flex-wrap:wrap;margin:10px 0 4px;padding:10px 12px;border:1px solid #2f8a57;border-radius:10px;background:#eefaf2}
.coach-review-shell .rv-player-done p{margin:0;font-size:.9375rem;font-weight:600;line-height:1.4;color:#14532d}
.coach-review-shell .rv-done-tick{display:inline-grid;place-items:center;width:1.4em;height:1.4em;margin-right:4px;border-radius:50%;background:#2f8a57;color:#fff;font-size:.8em}
.coach-review-shell .rv-done-actions{display:flex;gap:8px;flex-wrap:wrap}
.coach-review-shell .rv-done-actions button{min-height:44px;padding:0 16px}
.coach-review-shell .rv-done-name{font-weight:700;overflow-wrap:anywhere}
.coach-review-shell .rv-done-actions button.primary{background:var(--blue);color:var(--on-blue,#fff);border-color:var(--blue)}
.rv-ov-state{display:block;margin-top:4px;font-size:.75rem;font-weight:600;color:#7c2d12;white-space:nowrap}
.rv-ov-state.rv-ov-done{color:#14532d}
@media (min-width:641px){table.rv-overview{font-size:.8125rem}table.rv-overview caption{text-align:left;white-space:normal;padding-bottom:8px}table.rv-overview th,table.rv-overview td{padding:8px 8px}table.rv-overview thead th{white-space:normal;vertical-align:bottom;line-height:1.25}table.rv-overview th[scope=row]{white-space:normal;min-width:8.5rem}table.rv-overview th[scope=row] button{padding:6px 8px;text-align:left}}
.coach-review-shell .coach-done-tick{display:grid;place-items:center;width:48px;height:48px;margin:14px 0 2px;border-radius:50%;background:#2f8a57;color:#fff;font-size:1.5rem;font-weight:700}
.coach-review-shell .coach-done-sum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:18px 0 0;padding:0;list-style:none}
.coach-review-shell .coach-done-sum li{padding:10px 8px;text-align:center;background:#fff;border:1px solid var(--line);border-radius:10px;font-size:.8125rem;color:#374151}
.coach-review-shell .coach-done-sum b{display:block;font-size:1.375rem;color:#111827}
@media (max-width:420px){.coach-review-shell .coach-done-sum{grid-template-columns:repeat(2,minmax(0,1fr))}.coach-review-shell .rv-done-actions,.coach-review-shell .rv-done-actions button{width:100%}}
@media (forced-colors:active){.coach-review-shell .rv-save-chip,.coach-review-shell .rv-player-done{border:1px solid CanvasText}}
@media (prefers-reduced-motion:reduce){.coach-review-shell .rv-sticky .bar i{transition:none}}
/* coach-ux: restructured page (main.cr-main) - header; sticky progress strip (players fully rated, save chip, icon tools, ratings bar); player picker; player card (skills, then the development comment); season awards; notes; sticky footer (Previous, Next / Next unrated, Submit). main is a plain block here, so the older flex `order` rules no longer reorder it. */
/* Star colours: each position has its own step of the brand line (blue to cyan to teal to lime); a club theme (data-club-theme on :root) mixes its primary into its secondary in 25% steps. Filled stars get a darker outline (3:1 on white even for lime); empty stars stay neutral grey; the number under each star stays. */
.coach-review-shell{--star-1:#0049c9;--star-2:#0082d4;--star-3:#01add4;--star-4:#05bfb6;--star-5:#8fcd22;--star-edge:70%;--star-empty:#e8ebf0;--star-empty-edge:#7a8599}
:root[data-club-theme] .coach-review-shell{--star-1:color-mix(in srgb,var(--blue),var(--theme-secondary) 0%);--star-2:color-mix(in srgb,var(--blue),var(--theme-secondary) 25%);--star-3:color-mix(in srgb,var(--blue),var(--theme-secondary) 50%);--star-4:color-mix(in srgb,var(--blue),var(--theme-secondary) 75%);--star-5:color-mix(in srgb,var(--blue),var(--theme-secondary) 100%);--star-edge:55%}
.coach-review-shell [data-tone="1"]{--sc:var(--star-1)}
.coach-review-shell [data-tone="2"]{--sc:var(--star-2)}
.coach-review-shell [data-tone="3"]{--sc:var(--star-3)}
.coach-review-shell [data-tone="4"]{--sc:var(--star-4)}
.coach-review-shell [data-tone="5"]{--sc:var(--star-5)}
.coach-review-shell .rv-star-svg{display:block;width:30px;height:30px;fill:var(--star-empty);stroke:var(--star-empty-edge);stroke-width:1.4;stroke-linejoin:round;transition:fill .12s ease}
.coach-review-shell .filled .rv-star-svg{fill:var(--sc);stroke:color-mix(in srgb,var(--sc) var(--star-edge),var(--brand-navy-deep))}
.coach-review-shell main.cr-main{display:block;max-width:820px;padding:4px 0 0}
.coach-review-shell .cr-main .cr-head{padding:6px 0 2px}
.coach-review-shell .cr-main .cr-head h1{margin:2px 0 0;font-size:1.5rem;line-height:1.2;letter-spacing:-.4px}
.coach-review-shell .cr-main .cr-meta{margin:2px 0 0;font-size:.9375rem;line-height:1.4;color:#3b4658}
.coach-review-shell .cr-main .cr-sched{margin:4px 0 0;font-size:.875rem;color:#3b4658}
.coach-review-shell .cr-main .cr-head .notice{margin:12px 0 0}
.coach-review-shell .cr-main .rv-intro-box{margin:10px 0 0}
.coach-review-shell .cr-main .rv-sticky{position:sticky;top:0;z-index:6;margin:14px -14px 0;padding:8px 14px 10px;background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line);box-shadow:0 6px 14px -10px #18233c33}
.coach-review-shell .cr-main .rv-sticky .review-progress{display:flex;align-items:center;flex-wrap:nowrap;gap:8px;margin:0 0 8px;font-size:.875rem;font-weight:500;color:#374151}
.coach-review-shell .cr-main .rv-sticky .review-progress .rv-progress-count{margin:0 auto 0 0;min-width:0}
.coach-review-shell .cr-main .rv-progress-count b{font-weight:700;color:#111827}
.coach-review-shell .cr-main .cr-tools{display:flex;gap:6px;flex:none}
.coach-review-shell .cr-main .cr-tools .icon-btn{width:44px;height:44px;min-height:44px;border-radius:10px;color:#1f2937;background:#fff;border:1px solid #c9ced8}
.coach-review-shell .cr-main .cr-tools .icon-btn:hover{background:#f3f5f9;border-color:#8b95a7}
.coach-review-shell .cr-main .rv-sticky .bar{height:6px;margin:0}
.coach-review-shell .cr-main .cr-jump{display:flex;margin:12px 0 0;gap:8px}
.coach-review-shell .cr-main .cr-jump label{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.coach-review-shell .cr-main .cr-jump select{flex:1 1 auto;min-height:48px;font-size:16px;font-weight:600;color:#111827}
.coach-review-shell .cr-main .review-player{display:block;margin:12px 0 0;padding:16px 16px 14px;border-radius:12px;scroll-margin-top:84px}
.coach-review-shell .cr-main .review-player .profilehero{margin:0;gap:12px;align-items:center}
.coach-review-shell .cr-main .cr-card-pos{margin:0;font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#4a5466}
.coach-review-shell .cr-main .cr-section-title{display:block;margin:0;font-size:.8125rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#374151}
.coach-review-shell .cr-main .cr-skills-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:14px 0 0;padding-top:12px;border-top:1px solid var(--line)}
.coach-review-shell .cr-main .cr-skills-head .note{margin:0;font-size:.8125rem;color:#4a5466}
.coach-review-shell .cr-main .cr-key{margin:4px 0 0;font-size:.875rem}
.coach-review-shell .cr-main .cr-key summary{display:inline-flex;align-items:center;min-height:36px;cursor:pointer;font-weight:600;color:var(--accent-ink)}
.coach-review-shell .cr-main .cr-key[open] .rv-scale{margin:2px 0 8px}
.coach-review-shell .cr-main .star-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"t t" "s c" "h h";align-items:center;gap:4px 10px;padding:12px 0;border-top:1px solid #eef0f4}
.coach-review-shell .cr-main .cr-row-head{grid-area:t;display:flex;align-items:flex-end;justify-content:space-between;gap:4px 12px;min-width:0}
.coach-review-shell .cr-main .cr-skills>.star-row:first-child{border-top:0}
.coach-review-shell .cr-main .star-row .rv-skill-name{min-width:0;font-size:1.0625rem;font-weight:600;color:#111827}
.coach-review-shell .cr-main .star-row .rate-meta{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:0;padding:0;font-size:.875rem;line-height:1.3;text-align:right}
.coach-review-shell .cr-main .star-row .rate-level{font-weight:600;color:#1f2937;white-space:nowrap}
.coach-review-shell .cr-main .star-row .rate-state{min-width:0;min-height:1.3em;text-align:right}
.coach-review-shell .cr-main .star-row .star-buttons{grid-area:s;display:flex;gap:4px;width:auto}
.coach-review-shell .cr-main .star-buttons button{flex:0 0 auto;width:48px;min-width:44px;min-height:56px;padding:4px 0 2px;border:1px solid transparent;border-radius:10px;background:transparent;box-shadow:none}
.coach-review-shell .cr-main .star-buttons button:hover{background:#f3f5f9}
.coach-review-shell .cr-main .star-buttons button:hover .rv-star-svg{stroke:#4b5563}
.coach-review-shell .cr-main .star-buttons button.filled:hover .rv-star-svg{stroke:color-mix(in srgb,var(--sc) var(--star-edge),var(--brand-navy-deep))}
.coach-review-shell .cr-main .star-buttons button[aria-pressed="true"]{border-color:#c9ced8;background:#f8f9fb}
.coach-review-shell .cr-main .star-buttons button[aria-pressed="true"]:not(:focus-visible){outline:none}
.coach-review-shell .cr-main .star-buttons .rv-star-num{margin-top:2px;font-size:.75rem;font-weight:600;color:#4b5563}
.coach-review-shell .cr-main .star-buttons button.filled .rv-star-num{color:#111827}
.coach-review-shell .cr-main .star-row>.rv-clear{grid-area:c;align-self:center;width:44px;height:44px;min-height:44px;border-radius:10px;color:#4b5563;background:#fff;border:1px solid #c9ced8}
.coach-review-shell .cr-main .star-row>.rv-clear:hover{color:#9b1c1c;border-color:#9b1c1c;background:#fff5f5}
.coach-review-shell .cr-main .star-row>.rv-clear:disabled{color:#9aa3b2;background:#fff;border:1px solid #e4e7ec;cursor:default}
.coach-review-shell .cr-main .star-row .rv-hint{grid-area:h}
.coach-review-shell .cr-main .star-row.star-row-ro{grid-template-areas:"t t" "s s" "h h"}
.coach-review-shell .cr-main .star-readonly .rv-star{display:flex;align-items:center;justify-content:center;width:40px;min-height:36px;font-size:inherit;color:inherit}
.coach-review-shell .cr-main .rv-player-done{margin:6px 0 0}
.coach-review-shell .cr-main .cr-comment{margin:14px 0 0;padding-top:14px;border-top:1px solid var(--line)}
.coach-review-shell .cr-main .cr-comment-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 8px}
.coach-review-shell .cr-main .cr-opt{font-weight:500;text-transform:none;letter-spacing:0;color:#4a5466}
.coach-review-shell .cr-main .cr-comment-state{font-size:.8125rem;font-weight:600;color:#4b5563;white-space:nowrap}
.coach-review-shell .cr-main .cr-comment-state[data-state="saving"]{color:var(--accent-ink)}
.coach-review-shell .cr-main .cr-comment-state[data-state="saved"]{color:#14532d}
.coach-review-shell .cr-main .cr-comment-state[data-state="error"]{color:#9b1c1c}
.coach-review-shell .cr-main .cr-comment textarea{display:block;min-height:7.5rem;max-height:24rem;overflow-y:auto;padding:10px 12px;font-size:1rem;line-height:1.5;color:#1f2937;background:#fff;border:1px solid #8b95a7;border-radius:10px}
.coach-review-shell .cr-main .cr-comment textarea::placeholder{color:#5b6576;opacity:1}
.coach-review-shell .cr-main .cr-comment-foot{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-top:6px;font-size:.8125rem;line-height:1.4;color:#4a5466}
.coach-review-shell .cr-main .cr-comment-foot p{margin:0;font-size:inherit;color:inherit}
.coach-review-shell .cr-main .cr-count{flex:none;font-variant-numeric:tabular-nums}
.coach-review-shell .cr-main .cr-comment-ro{margin:6px 0 0;white-space:pre-wrap;font-size:.9375rem;line-height:1.5;color:#1f2937}
.coach-review-shell .cr-main .review-save-status:not(:has(button)){position:absolute;width:1px;height:1px;min-height:0;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.coach-review-shell .cr-main .review-save-status:has(button){margin-top:12px}
.coach-review-shell .cr-main .rv-awards{margin:12px 0 0;padding:16px;border-radius:12px}
.coach-review-shell .cr-main .cr-notes{margin:16px 0 0}
.coach-review-shell .cr-main .cr-notes .rv-legend{margin:0 0 6px!important;font-size:.8125rem}
.coach-review-shell .cr-main .cr-notes .rv-reminder{margin:0}
.coach-review-shell .cr-main .review-controls{position:sticky;bottom:0;z-index:6;display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:16px -14px 0;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--line);box-shadow:0 -6px 16px #18233c14}
.coach-review-shell .cr-main .review-controls>button{flex:0 0 auto;min-height:48px;padding:0 14px;font-weight:600;white-space:nowrap}
.coach-review-shell .cr-main .review-controls #review-prev{min-width:0}
.coach-review-shell .cr-main .review-controls #review-next{flex:0 1 auto;min-width:0;display:inline-flex;align-items:center;justify-content:center;gap:4px;overflow:hidden}
.coach-review-shell .cr-main .rv-next-name{min-width:0;overflow:hidden;text-overflow:ellipsis}
.coach-review-shell .cr-main .review-controls #review-submit,.coach-review-shell .cr-main .review-controls #coach-back-done{margin-left:auto}
.coach-review-shell .cr-main .review-controls .primary:not([aria-disabled="true"]):not(:disabled){background:var(--blue);color:var(--on-blue,#fff);border-color:var(--blue)}
.coach-review-shell .cr-main .rv-submit-help{flex:1 0 100%;order:0;margin:0;text-align:left;font-size:.8125rem;font-weight:600;line-height:1.3}
@media (max-width:640px){.coach-review-shell .cr-main .review-controls{flex-wrap:wrap;gap:6px}.coach-review-shell .cr-main .review-controls>button{padding:0 12px}.coach-review-shell .cr-main .review-controls #review-next{flex:1 1 0}.coach-review-shell .cr-main .rv-submit-help{text-align:center}}
@media (max-width:440px){.coach-review-shell .cr-main .cr-pw{display:none}.coach-review-shell .cr-main .review-controls #review-prev{width:48px;padding:0}.coach-review-shell .cr-main .rv-prev-text{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}
@media (min-width:700px){.coach-review-shell .cr-main .star-row{grid-template-columns:minmax(9rem,1fr) auto minmax(8.5rem,auto) auto;grid-template-areas:"l s m c" "h h h h";gap:4px 14px}.coach-review-shell .cr-main .cr-row-head{display:contents}.coach-review-shell .cr-main .star-row .rv-skill-name{grid-area:l}.coach-review-shell .cr-main .star-row .rate-meta{grid-area:m}.coach-review-shell .cr-main .star-row .rv-skill-name,.coach-review-shell .cr-main .star-row .rate-meta{align-self:center}.coach-review-shell .cr-main .star-row .rate-meta{align-items:flex-start;text-align:left}.coach-review-shell .cr-main .star-row .rate-state{text-align:left}.coach-review-shell .cr-main .star-row.star-row-ro{grid-template-areas:"l s m m" "h h h h"}}
@media (min-width:860px){.coach-review-shell .cr-main .rv-sticky{margin:16px 0 0;padding:10px 16px 12px;border:1px solid var(--line);border-radius:12px}.coach-review-shell .cr-main .review-player{padding:20px 22px 16px}.coach-review-shell .cr-main .review-controls{margin:16px 0 0;padding:12px 16px;border:1px solid var(--line);border-bottom:0;border-radius:12px 12px 0 0}}
@media (max-width:374px){.coach-review-shell .cr-main .review-player{padding:12px 10px}.coach-review-shell .cr-main .star-row .star-buttons{flex:1 1 auto;gap:2px}.coach-review-shell .cr-main .star-buttons button{flex:1 1 0;width:auto;min-width:0}.coach-review-shell .cr-main .review-controls #review-prev{padding:0 10px}}
@media (max-height:500px){.coach-review-shell .cr-main .rv-sticky{position:static}}
@media (forced-colors:active){.coach-review-shell .filled .rv-star-svg{fill:CanvasText;stroke:CanvasText}.coach-review-shell .rv-star-svg{fill:Canvas;stroke:CanvasText}}
@media (prefers-reduced-motion:reduce){.coach-review-shell .rv-star-svg{transition:none}}
/* coach-dialogs: the coach page's two dialogs (they open in the app dialog, outside .coach-review-shell, so they are scoped by .cr-dlg). Overview: a progress line and a list of players (status, skills still to rate, Go to player). Submit: summary tiles, award picks, blockers with Go to buttons or a ready line, and what submitting means. */
.cr-dlg{display:grid;gap:14px}
.cr-dlg p{margin:0}
.cr-dlg .notice{margin:0}
.cr-dlg .cr-dlg-context{font-size:.875rem;line-height:1.4;color:#4a5466}
.cr-dlg .cr-ov-top{display:grid;gap:6px}
.cr-dlg .cr-ov-count{font-size:.9375rem;color:#374151}
.cr-dlg .cr-ov-count b{color:#111827}
.cr-dlg .cr-ov-bar{height:6px;border-radius:999px;background:#e8ebf0;overflow:hidden}
.cr-dlg .cr-ov-bar i{display:block;height:100%;border-radius:inherit;background:var(--blue)}
.cr-dlg .cr-ov-list{margin:0;padding:0;list-style:none;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.cr-dlg .cr-ov-row{display:flex;align-items:center;justify-content:space-between;gap:8px 14px;margin:0;padding:10px 14px;border-top:1px solid var(--line)}
.cr-dlg .cr-ov-row:first-child{border-top:0}
.cr-dlg .cr-ov-current{background:var(--accent-tint);box-shadow:inset 3px 0 0 var(--blue)}
.cr-dlg .cr-ov-who{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0}
.cr-dlg .cr-ov-name{font-weight:600;color:#111827;overflow-wrap:anywhere}
.cr-dlg .cr-ov-here{font-size:.6875rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#4a5466}
.cr-dlg .cr-ov-status{padding:1px 8px;border:1px solid;border-radius:999px;font-size:.75rem;font-weight:600;line-height:1.5;white-space:nowrap}
.cr-dlg .cr-ov-done{color:#14532d;background:#e3f6ea;border-color:#2f8a57}
.cr-dlg .cr-ov-todo{color:#7c2d12;background:#fff4e5;border-color:#d08a3b}
.cr-dlg .cr-ov-new{color:#374151;background:#eef0f4;border-color:#c9ced8}
.cr-dlg .cr-ov-missing{flex-basis:100%;font-size:.8125rem;line-height:1.4;color:#4a5466}
.cr-dlg .cr-ov-go{flex:none;min-height:44px;padding:0 14px;font-weight:600;white-space:nowrap}
.cr-dlg .cr-ov-next{font-size:.875rem;font-weight:600;color:#14532d}
.cr-dlg .cr-sub-sum{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin:0;padding:0;list-style:none}
.cr-dlg .cr-sub-sum li{margin:0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:.8125rem;line-height:1.35;color:#374151}
.cr-dlg .cr-sub-sum b{display:block;font-size:1.25rem;line-height:1.3;color:#111827}
.cr-dlg .cr-sub-sum .cr-sub-ok b{color:#14532d}
.cr-dlg .cr-sub-sum .cr-sub-todo{border-color:#d08a3b;background:#fffaf2}
.cr-dlg .cr-sub-sum .cr-sub-todo b{color:#7c2d12}
.cr-dlg .cr-sub-awards{font-size:.875rem;line-height:1.5;color:#374151}
.cr-dlg .cr-sub-awards .link-btn{min-height:32px;padding:0 2px;font-size:.875rem}
.cr-dlg .cr-sub-block{padding:12px 14px;border:1px solid #d08a3b;border-radius:12px;background:#fffaf2}
.cr-dlg .cr-sub-block h3{margin:0 0 4px;font-size:.9375rem;line-height:1.4;color:#7c2d12}
.cr-dlg .cr-sub-block ul{margin:0;padding:0;list-style:none}
.cr-dlg .cr-sub-block li{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 12px;margin:0;padding:8px 0;border-top:1px solid #f1dcc0;font-size:.9375rem;line-height:1.4;color:#1f2937}
.cr-dlg .cr-sub-block li:first-child{border-top:0}
.cr-dlg .cr-sub-block li span{flex:1 1 14rem;min-width:0;overflow-wrap:anywhere}
.cr-dlg .cr-sub-block li button{flex:none;min-height:44px;padding:0 14px;font-weight:600;white-space:nowrap;background:#fff}
.cr-dlg .cr-sub-ready{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid #2f8a57;border-radius:10px;background:#eefaf2;font-weight:600;line-height:1.4;color:#14532d}
.cr-dlg .cr-sub-tick{display:inline-grid;place-items:center;flex:none;width:1.4em;height:1.4em;border-radius:50%;background:#2f8a57;color:#fff;font-size:.8em}
.cr-dlg .cr-sub-final{padding-top:12px;border-top:1px solid var(--line);font-size:.875rem;line-height:1.5;color:#374151}
@media (max-width:420px){.cr-dlg .cr-ov-row{padding:10px 12px}.cr-dlg .cr-ov-go{padding:0 12px}.cr-dlg .cr-sub-block li button{width:100%}}
@media (forced-colors:active){.cr-dlg .cr-ov-status,.cr-dlg .cr-sub-block,.cr-dlg .cr-sub-ready{border:1px solid CanvasText}.cr-dlg .cr-ov-bar i{background:CanvasText}}
/* coach-ux end */
.coach-review-shell .rv-more{min-height:44px;margin:-12px 0}
.coach-review-shell :is(button,select,a,[tabindex]){scroll-margin-block:56px 100px}
@media (max-height:500px) and (orientation:landscape) and (min-width:560px) and (max-width:900px){.coach-review-shell .review-player{display:block}}
/* responsive:batch3-parent */
.hp-field{position:absolute!important;left:-10000px!important;top:auto!important;width:1px!important;height:1px!important;overflow:hidden!important;opacity:0;pointer-events:none}
.wl-ref-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.wl-copy{min-height:44px;padding:8px 16px;font-size:.9375rem}
.wl-correct textarea{width:100%;min-height:88px}
.wl-correct button[type=submit]{margin-top:12px}
.wl-correct .field-error{display:block;margin-top:6px}
.wl-age-info{margin:10px 0 14px;padding:10px 12px;border-left:3px solid #c4ccd8;background:#f5f7fa;border-radius:4px;color:#2b3445}
.wl-confirm-each{margin:12px 0 4px;font-weight:600}

#public-intake input[name=guardianEmail]{min-width:0;width:100%;text-overflow:clip}
#wl-email-readback{overflow-wrap:anywhere}
.wl-summary dd{overflow-wrap:anywhere}
.wl-family-note,.wl-corrections{border-left:4px solid var(--blue)}
.wl-family-note p,.wl-corrections .insight-row{overflow-wrap:anywhere}
.wl-submit[disabled]{cursor:progress}

/* responsive:batch3-a11y — required marker, sticky bars never hide focus, compact team bar on short screens */
.req-mark{font-size:.75rem;font-weight:600;color:#505a6e;white-space:nowrap}
html{scroll-padding-top:calc(var(--sticky-top,0px) + 8px);scroll-padding-bottom:calc(var(--sticky-bottom,0px) + 8px)}
:is(button,a,input,select,textarea,summary,[tabindex]){scroll-margin-block:calc(var(--sticky-top,0px) + 8px) calc(var(--sticky-bottom,0px) + 8px)}
dialog{scroll-padding-bottom:84px}
@media (max-width:760px) and (max-height:600px){
.team-bar{padding-top:4px;padding-bottom:calc(4px + env(safe-area-inset-bottom));gap:8px}
.team-bar-info span{display:none}
.team-bar-info strong{font-size:.875rem}
.team-bar .primary{min-height:36px;padding:0 14px;font-size:.875rem}
body:has(.team-bar) #toast{bottom:calc(56px + env(safe-area-inset-bottom))}
}
@media (max-height:320px){.team-bar,.sidebar{position:static!important}}

/* responsive:batch3-a11y — active section keeps >=4.5:1 for any organisation theme (text is the theme colour darkened, on a light tint of it) */
.nav button.active,.sidebar .nav button.active{color:color-mix(in srgb,var(--blue) 50%,#000);background:color-mix(in srgb,var(--blue) 12%,#fff);font-weight:600}
.nav button.active:hover,.sidebar .nav button.active:hover{background:color-mix(in srgb,var(--blue) 16%,#fff)}
/* responsive:batch3-secretary */
.team-coach{font-size:.8125rem;color:#4b5565;margin-right:8px}
.view-only-note{margin:0 0 16px;padding:10px 14px;border-radius:8px;background:#eef1f7;color:#3b4658;font-size:.875rem}
.readiness-note{display:block;color:#4b5565;margin-top:4px}
.readiness-info-title{margin:16px 0 6px;font-size:.875rem;color:#4b5565}
.readiness-info li{opacity:.95}
.stage-path{margin:14px 0;padding-left:20px;display:grid;gap:10px}
.stage-path .sub{display:block}
.invite-email-status{color:#4b5565}
.wl-contact legend{padding:0}
/* responsive:batch3-a11y — the "(N ok)" part of the age counter reserves its width, so acknowledging never re-wraps the team header */
.age-warn-reserve::after{content:" (0 ok)";visibility:hidden}

/* responsive:batch4-viewer */
.icon-btn .btn-text{display:none}
@media (min-width:900px){.modal-actions .icon-btn.has-text{width:auto;padding:0 12px;gap:6px}.modal-actions .icon-btn.has-text .btn-text{display:inline;font-size:.8125rem;font-weight:600;white-space:nowrap}}
.modal-actions [data-labelled] .btn-text{display:none!important}
.wl-view-only{margin:0 0 16px;padding:10px 14px;border-radius:8px;background:#eef1f7;color:#3b4658;font-size:.875rem}
.dialog-footer{flex-wrap:wrap}
.dialog-footer .dialog-footer-msg{order:-1;flex:1 1 100%;margin:0 0 6px;min-height:1.3em;color:#344563;font-size:.875rem;overflow-wrap:anywhere}
.dialog-footer .dialog-footer-msg.is-error{color:#a12323;font-weight:600}
.dialog-footer .dialog-footer-msg:empty{visibility:hidden}
.coach-links-table .tag{white-space:nowrap}
.auth-notice+form{margin-top:12px}
.modal-actions .dialog-save .btn-text{display:none}
.team-bar-reason{font-size:.8125rem;color:#4b5565;margin-left:auto;margin-right:12px;align-self:center}
.team-bar .primary:disabled{opacity:.55;cursor:not-allowed}
tr.row-open{cursor:pointer}
tr.row-open:hover td{background:color-mix(in srgb,var(--blue) 5%,#fff)}
tr.row-open:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}
/* responsive:batch4-parent */
#public-intake .wl-phone{margin:8px 0;padding:6px 10px}
#public-intake .wl-phone .wl-warn{margin:0 0 2px;line-height:1.35}
#public-intake .wl-phone .sample-choice{margin:0;min-height:0;padding:2px 0}
.wl-add-another{display:block;width:100%;margin:16px 0}
.wl-correct-details{margin:16px 0;border:1px solid #d9e0e8;border-radius:10px;background:#fff}
.wl-correct-details>summary{cursor:pointer;min-height:44px;padding:12px 14px;font-weight:600;display:flex;align-items:center}
.wl-correct-details>.wl-correct{margin:0;border:0;box-shadow:none}
.wl-find{margin:14px 0}.wl-find a{display:inline-block;padding:8px 0}
@media(min-width:641px){.wl-add-another{width:auto}}
/* responsive:batch4-coach - skip link hidden until keyboard focus; skill hint sits above its own stars; instant press feedback; read-only locked stars; submit finality */
.skip-link:not(:focus-visible){position:fixed;left:-9999px;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);border:0;transform:none}
.skip-link:focus-visible{left:12px;top:12px;width:auto;height:auto;clip-path:none;padding:12px 18px;border:2px solid var(--accent-strong);transform:none}
.coach-review-shell .star-row .rv-hint.rv-hint-tight{padding:4px 8px;font-size:.78125rem;line-height:1.25}
.coach-review-shell .star-row .rv-hint.rv-hint-flow{position:static;grid-area:h;margin:6px 0 0;box-shadow:none}
.coach-review-shell .rv-hint-btn,.coach-review-shell .star-buttons button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.coach-review-shell .star-buttons button:active{color:#b45309}
.coach-review-shell .star-row .rate-state{font-size:.75rem;font-weight:500;color:#4b5563}
.coach-review-shell .star-row .rate-state[data-state="saved"]{color:#14532d}
.coach-review-shell .star-row .rate-state[data-state="error"]{color:#9b1c1c;font-weight:600}
.coach-review-shell .star-row.star-row-ro{grid-template-areas:"l l" "s s" "m m" "h h"}
.coach-review-shell .star-readonly{cursor:default}
.coach-review-shell .star-readonly .rv-star{display:flex;align-items:center;justify-content:center;min-height:36px;font-size:1.6rem;line-height:1;color:#6b7280;cursor:default;user-select:none}
.coach-review-shell .star-readonly .rv-star.filled{color:#92400e}
.coach-review-shell .rv-final{white-space:nowrap;font-weight:600}
/* responsive:batch4-coach - dialog actions keep their visible text label at every width (desktop was icon-only); destructive actions use the danger colour */
@media (min-width:641px){.modal-actions [data-labelled]{width:auto;min-width:44px;padding:0 14px;gap:8px}.modal-actions [data-labelled]::after{content:attr(data-short);font-size:.875rem;font-weight:600;white-space:nowrap}.modal-actions [data-labelled=primary]{background:var(--blue);border-color:var(--blue);color:var(--on-blue)}.modalhead:has([data-labelled]) h2{padding-right:0}}
.modal-actions [data-plabel]{width:auto;min-width:44px;padding:0 14px;gap:8px}
.modal-actions [data-plabel]::after{content:attr(data-short);font-size:.875rem;font-weight:600;white-space:nowrap}
.modal-actions [data-plabel=primary]{background:var(--blue);border-color:var(--blue);color:var(--on-blue)}
.modal-actions .danger-action{color:#a12323;border-color:#d9a3a3;background:#fff}
.modal-actions .danger-action[data-labelled=primary],.modal-actions .danger-action[data-plabel=primary]{color:#fff;background:#a12323;border-color:#a12323}
.modal-actions .danger-action[data-labelled=secondary]::after,.modal-actions .danger-action[data-plabel=secondary]::after{color:#a12323}
.modal-actions .danger-action:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.rv-order-note{margin:4px 0 8px;font-size:.875rem;line-height:1.4;color:#374151}
.stage-form-note.notice{font-size:.9375rem}

/* responsive:pilot-ladder - warning ladder levels (info, notice, warning amber at 14 days, urgent red only at 7 days or fewer) and the Choose-a-plan view */
.pilot-banner.pilot-info{background:var(--accent-tint);color:var(--accent-ink);border-color:var(--accent-border)}
.pilot-banner.pilot-warning{background:#fff1dc;color:#7a3e00;border-color:#f2cf9b}
.pilot-banner.pilot-urgent{background:#fdecec;color:#9b2318;border-color:#f4c7c2}
.pilot-banner .link-btn.pilot-primary{font-weight:600}
.plan-choice{margin:0 0 16px}
.plan-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px 18px;margin:0}
.plan-facts div{min-width:0}
.plan-facts dt{font-size:.8125rem;color:#52606d;margin:0 0 2px}
.plan-facts dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.plan-outcomes{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.plan-outcome{padding:12px 14px;border:1px solid #d9e0e8;border-radius:8px;min-width:0}
.plan-outcome h3{margin:0 0 6px;font-size:1rem}
.plan-outcome p{margin:0;line-height:1.5;overflow-wrap:anywhere}
.plan-list{margin:10px 0 0;padding-left:20px;line-height:1.6}
.plan-choice a{overflow-wrap:anywhere}


/* responsive:lifecycle - read-only workspace banner, workspace status card, Danger zone and the delete-workspace dialog */
.lifecycle-banner{display:flex;align-items:center;justify-content:space-between;gap:8px 14px;flex-wrap:wrap;padding:12px 18px;margin:0 0 18px;border-radius:8px;font-size:.9375rem;line-height:1.45;background:var(--accent-tint);color:var(--accent-ink);border:1px solid var(--accent-border)}
.lifecycle-banner p{margin:0}
.lifecycle-banner .lc-short{display:none}
.lifecycle-banner .lc-text{flex:1 1 320px;min-width:0;overflow-wrap:anywhere}
.lifecycle-banner .lc-actions{display:flex;flex-wrap:wrap;gap:8px}
.lifecycle-banner .lc-btn{min-height:44px;padding:0 16px;font:inherit;font-weight:600;cursor:pointer}
.lifecycle-banner .lc-toggle{display:none;min-height:44px;padding:0 4px;background:none;border:0;color:inherit;font:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.lifecycle-banner .lc-toggle:focus-visible,.lifecycle-banner .lc-btn:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px;border-radius:6px}
.lifecycle-banner.lc-notice{background:#fcf5e9;color:#5e4614;border-color:#ecd7a8}
.lifecycle-banner.lc-warning{background:#fff1dc;color:#7a3e00;border-color:#f2cf9b}
.lifecycle-banner.lc-urgent{background:#fdecec;color:#8f1f14;border-color:#f0b5ae}
@media (max-width:640px){
.lifecycle-banner{padding:10px 14px;margin:0 0 14px;gap:4px 10px}
.lifecycle-banner .lc-short{display:block;flex:1 1 0;min-width:0;overflow-wrap:anywhere}
.lifecycle-banner .lc-toggle{display:inline-flex;align-items:center}
.lifecycle-banner .lc-text,.lifecycle-banner .lc-actions{display:none;flex:1 1 100%}
.lifecycle-banner.open .lc-text{display:block}
.lifecycle-banner.open .lc-actions{display:flex}
.lifecycle-banner .lc-btn{flex:1 1 100%}
}
.plan-readonly{border-color:#f2cf9b}
.danger-zone{border-color:#e4b1ab;margin-top:20px}
.danger-zone summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:12px 18px;cursor:pointer;list-style:none}
.danger-zone summary::-webkit-details-marker{display:none}
.danger-zone summary::after{content:"\25BE";margin-left:auto;color:#8f1f14}
.danger-zone details[open] summary::after{content:"\25B4"}
.danger-zone .danger-title{font-weight:700;color:#8f1f14}
.danger-zone summary:focus-visible{outline:3px solid var(--focus-ring);outline-offset:-3px}
.danger-sched{color:#8f1f14}
.danger-btn{min-height:44px;padding:0 16px;font:inherit;font-weight:600;cursor:pointer;color:#fff;background:#a12323;border:1px solid #a12323;border-radius:8px}
.danger-btn:hover{background:#8f1f14}
.danger-btn:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.delete-understand{display:flex;align-items:flex-start;gap:10px;margin:16px 0 8px;line-height:1.45}
.delete-understand input{width:22px;height:22px;min-height:22px;flex:none;margin:1px 0 0}
.delete-error{color:#a12323;min-height:1.4em;margin:8px 0}
dialog #delete-workspace-form input:not([type=checkbox]){font-size:16px}
.soft-disabled[data-reason="Read-only workspace"]{cursor:not-allowed}
/* responsive:lifecycle - the labelled Save in the dialog footer keeps the danger colour once it is moved out of the header */
dialog button.danger-action.dialog-save,dialog button.danger-action.primary{background:#a12323;border-color:#a12323;color:#fff}
dialog button.danger-action.dialog-save:disabled,dialog button.danger-action.primary:disabled{background:#a12323;border-color:#a12323;color:#fff;opacity:.45;cursor:not-allowed}
dialog button.danger-action.dialog-save:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}

/* responsive:sport-picker - sign-up sport select, its notes and the custom sport's name */
.sport-choice{display:grid;gap:10px;margin:2px 0}
.sport-choice .auth-hint{margin:0}
.sport-choice .auth-hint[hidden],.auth-card .sport-choice .sport-name-row[hidden],.auth-card .workspace-start-choice label[hidden]{display:none}
.auth-card .sport-choice select{width:100%;padding:12px;font-size:16px;min-height:44px;color:#202838}
.auth-card .sport-choice input{font-size:16px;min-height:44px}
@media(max-width:760px){.auth-card .sport-choice select,.auth-card .sport-choice input{font-size:16px;min-height:44px}}

/* responsive:sport-editor - Organisation card and the Sport and terminology dialog (a full-height sheet on phones through the shared modal rules) */
.sport-settings{margin-top:20px}
.sport-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px 20px;margin:16px 0}
.sport-facts div{min-width:0}
.sport-facts dt{font-size:.75rem;color:#59677c}
.sport-facts dd{margin:3px 0 0;font-size:.9375rem;font-weight:600;color:#202838;overflow-wrap:anywhere}
.sport-actions{margin:4px 0 12px}
.sport-actions button,.sped button,.sped-foot button{min-height:44px}
.sped{display:block}
.sped-section{padding:18px 0;border-bottom:1px solid #e7eaf0}
.sped-section h3{font-size:1rem;margin:0 0 6px}
.sped-intro{margin:0 0 12px;font-size:.8125rem;line-height:1.55;color:#59677c}
.sped-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px 16px;margin:10px 0}
.sped-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.sped-field{display:grid;gap:6px;min-width:0;font-size:.875rem;font-weight:500}
.sped-field.wide{grid-column:1/-1}
.sped input[type=text],.sped input[type=number],.sped input:not([type]){width:100%;min-height:44px;padding:10px 12px;font-size:16px}
.sped input[readonly]{background:#f4f6fa;color:#59677c}
.sped-check{display:flex;align-items:flex-start;gap:10px;min-height:44px;padding:8px 0;font-size:.875rem;line-height:1.45;cursor:pointer}
.sped-check input{flex:none;width:22px;height:22px;margin:1px 0 0;accent-color:var(--blue)}
.sped-radio{border:0;padding:0;margin:14px 0 0;min-width:0}
.sped-radio legend{padding:0;font-size:.875rem;font-weight:600;margin-bottom:4px}
.sped-hint,.sped-why{display:block;margin:4px 0 8px;font-size:.75rem;line-height:1.5;color:#59677c}
.sped-why{color:#7a4b12}
.sped-locks{margin:0 0 12px;padding-left:18px;font-size:.8125rem;line-height:1.55;color:#59677c}
.sped-rows{list-style:none;margin:10px 0;padding:0;display:grid;gap:12px}
.sped-row{display:grid;grid-template-columns:minmax(72px,96px) minmax(120px,1fr) minmax(180px,2fr) minmax(96px,120px);gap:8px 12px;align-items:start;padding:12px;border:1px solid #e7eaf0;border-radius:8px;background:#fcfdff}
.sped-row .sped-cell{min-width:0}
.sped-row .sped-cell:nth-child(5){grid-column:1/-1}
.sped-row .sped-cell:nth-child(6){grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;justify-content:space-between}
.sped-row .sped-cell:nth-child(6) .sped-why{flex:1 1 260px;margin:0}
.sped-skill{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr) auto;gap:10px 12px;align-items:end;margin:8px 0}
.sped-remove{white-space:nowrap}
.sped-errors{margin:0 0 10px;padding:10px 14px 10px 30px;border-left:3px solid #ad4141;background:#fdf3f3;color:#8f1f14;font-size:.8125rem;line-height:1.5}
.sped-summary{margin:0 0 14px;padding:12px 14px;border-left:3px solid #ad4141;background:#fdf3f3;color:#8f1f14;font-size:.875rem;line-height:1.5}
.sped-summary ul{margin:6px 0 0;padding-left:20px}
.sped-summary a{color:#8f1f14;font-weight:600}
.sped-preview{position:sticky;top:0;z-index:2;margin:0 0 6px;padding:10px 14px;border:1px solid #dfe5ef;border-radius:8px;background:var(--accent-wash);color:#344563;font-size:.8125rem;line-height:1.5}
.sped-foot{padding:16px 0 4px}
.sped-reset{padding:14px;border:1px solid #dfe5ef;border-radius:8px;background:#fafbfd}
.sped-reset p{margin:0 0 10px}
@media(max-width:760px){
  .sped-pair{grid-template-columns:1fr}
  .sped-skill{grid-template-columns:1fr}
  .sped-row{grid-template-columns:1fr}
  .sped-row .sped-cell:nth-child(5){grid-column:auto}
  .sped-row .sped-cell:nth-child(6){grid-column:auto;display:grid}
  .sped-remove{width:100%}
}
/* responsive:who-registers - sign-up question: who fills in the waitlist form (two 44px radio rows, 16px text, readable on phones) */
.who-registers{border:0;padding:0;margin:2px 0;min-width:0}
.who-registers legend{font-size:.875rem;font-weight:600;color:#344563;margin-bottom:10px;padding:0}
.auth-card .who-registers label{display:flex;align-items:center;gap:12px;min-height:44px;padding:10px 14px;margin:0 0 8px;border:1px solid #dfe5ef;border-radius:9px;cursor:pointer;font-weight:400;font-size:16px;color:#344563}
.auth-card .who-registers input{flex:none;width:20px;height:20px;margin:0;padding:0;min-height:0;accent-color:var(--blue)}
.who-registers label:has(input:checked){border-color:var(--blue);background:var(--accent-wash)}
.who-registers label:focus-within{outline:3px solid var(--focus-ring);outline-offset:2px}
.who-registers .auth-hint{margin:2px 0 0}
@media(max-width:760px){.auth-card .who-registers label{min-height:44px;font-size:16px}.auth-card .who-registers input{width:24px;height:24px}}
.wl-wording{margin:0 0 14px;font-size:.875rem;line-height:1.6;color:#344563}
.wl-wording .link-btn{min-height:44px;padding:0 6px}

/* responsive:plans-page */
.plan-page{display:grid;gap:18px;min-width:0}
.plan-page>*{min-width:0;margin:0}
.plan-status{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:14px 28px;padding:16px 20px;border-radius:10px;border:1px solid var(--accent-border);background:var(--accent-tint);color:var(--accent-ink);line-height:1.5}
.plan-status-main{flex:1 1 320px;min-width:0}
.plan-status h3{margin:2px 0 4px;font-size:1.25rem;line-height:1.3;overflow-wrap:anywhere}
.plan-status p{margin:0 0 6px;overflow-wrap:anywhere}
.plan-status-tag{margin:0 0 2px!important;font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.plan-status-tag span{display:inline-block;padding:2px 9px;border-radius:999px;border:1px solid currentColor;background:rgba(255,255,255,.65)}
.plan-status-hold{font-weight:600}
.plan-status-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.plan-status-actions button{min-height:44px}
.plan-status-facts{display:flex;flex-wrap:wrap;gap:12px 28px;margin:0;flex:0 1 auto}
.plan-status-facts div{min-width:0}
.plan-status-facts dt{font-size:.8125rem;color:inherit;opacity:.85;margin:0 0 2px}
.plan-status-facts dd{margin:0;font-size:1.0625rem;font-weight:700;overflow-wrap:anywhere}
.plan-status-notice{background:#fcf5e9;border-color:#ecd7a8;color:#5e4614}
.plan-status-warning{background:#fff1dc;border-color:#f2cf9b;color:#7a3e00}
.plan-status-urgent{background:#fdecec;border-color:#f0b5ae;color:#8f1f14}
.plan-status-ended{background:#eef1f7;border-color:#dbe2ee;color:#44506a}
.plan-status-ok{background:#edf7f0;border-color:#bfe0c9;color:#1b5130}
.plan-compare h3,.plan-compare{margin:0}
.plan-compare h3{font-size:1.125rem;margin-bottom:6px}
.plan-usage{margin:0 0 12px;color:#344563;font-size:.9375rem}
.plan-usage strong{color:#202838}
.plan-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:14px;align-items:stretch}
.plan-card{display:flex;flex-direction:column;gap:10px;min-width:0;padding:16px;border:1px solid #d9e0e8;border-radius:10px;background:#fff}
.plan-card.is-rec{border-color:var(--blue);box-shadow:0 0 0 2px color-mix(in srgb,var(--blue) 18%,transparent)}
.plan-card.is-current{border-color:#1b5130;box-shadow:0 0 0 2px rgba(27,81,48,.15)}
.plan-card.is-small{background:#f8f9fb}
.plan-card.is-small .plan-limits,.plan-card.is-small .plan-best{opacity:.8}
.plan-card-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 10px}
.plan-card h4{margin:0;font-size:1.1875rem}
.plan-badges{display:flex;flex-wrap:wrap;gap:6px}
.plan-badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:.75rem;font-weight:700;line-height:1.5;border:1px solid}
.plan-badge-rec{background:var(--accent-tint);color:var(--accent-ink);border-color:var(--accent-border)}
.plan-badge-current{background:#edf7f0;color:#1b5130;border-color:#bfe0c9}
.plan-best{margin:0;color:#344563;font-size:.9375rem;line-height:1.45}
.plan-limits{list-style:none;margin:0;padding:10px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;gap:4px;font-size:.9375rem}
.plan-limits li{overflow-wrap:anywhere}
.plan-note{margin:0;padding:6px 10px;border-radius:6px;background:#fff1dc;color:#7a3e00;font-size:.875rem;font-weight:600}
.plan-price{margin:0;font-size:.9375rem;color:#202838}
.plan-price span{display:block;font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#52606d}
.plan-card-action{margin-top:auto;padding-top:4px}
.plan-act{width:100%;min-height:44px;padding:0 14px;font-weight:600;border-radius:8px}
.plan-act:focus-visible,.plan-status-actions button:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.plan-included{margin:0;min-height:44px;display:flex;align-items:center;color:#1b5130;font-weight:600;font-size:.9375rem}
.plan-foot{margin:12px 0 0;font-size:.875rem;color:#52606d;line-height:1.5}
.plan-compare a{overflow-wrap:anywhere}
.plan-steps{list-style:none;margin:12px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:14px}
.plan-step{display:flex;gap:10px;align-items:flex-start;min-width:0}
.plan-dot{flex:0 0 28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:.8125rem;font-weight:700;background:#fff;color:#44506a;border:2px solid #aab4c4}
.plan-step.is-done .plan-dot{background:#44506a;color:#fff;border-color:#44506a}
.plan-step.is-here .plan-dot{background:#8f1f14;color:#fff;border-color:#8f1f14}
.plan-step h4{margin:2px 0 2px;font-size:.9375rem;line-height:1.35;overflow-wrap:anywhere}
.plan-step p{margin:0;font-size:.875rem;color:#344563;line-height:1.45}
.plan-step-date{display:block;font-weight:500;color:#344563}
.plan-here{display:block;color:#8f1f14;font-weight:700}
.plan-nofree{margin:14px 0 0}
@media (max-width:640px){.plan-status{padding:14px 16px}.plan-status-facts{width:100%}.plan-status-actions button{width:100%;justify-content:center}.plan-steps{grid-template-columns:1fr}}
@media (max-width:640px){.plan-card{gap:8px}.plan-limits{display:flex;flex-wrap:wrap;gap:2px 14px;padding:8px 0}.plan-price span{display:inline;margin-right:6px}}
@media (max-width:360px){.plan-card{padding:14px}.plan-status h3{font-size:1.125rem}}
/* responsive:org-single-column - Organisation page: one column at every width (Subscription, Organisation details with its workspace settings, Export, Danger zone), one 24px rhythm between cards, a readable line length inside wide cards. Wide cards use the width with grids (plan cards, details fields, colours) that collapse to one column on phones. */
.org-stack{display:flex;flex-direction:column;gap:24px;margin-top:24px;min-width:0}
.org-stack>*{margin:0!important;min-width:0}
.org-stack .panel-head{flex-wrap:wrap;padding:16px 20px}
.org-stack .panel-head h2{font-size:1.0625rem}
.org-stack>.panel>.analytics-body,.org-stack>.panel>details>.analytics-body{padding:18px 20px 20px}
.org-stack .analytics-body p,.org-stack .analytics-body li{max-width:72ch}
.org-stack .plan-status p{max-width:64ch}
.org-stack .plan-page{gap:24px}
.org-stack .plan-line,.org-stack .plan-notes p{margin:0 0 8px;color:#344563}
.org-stack .plan-notes{display:grid;gap:4px}
.org-stack .plan-compare h3,.org-stack .plan-timeline h3{font-size:1.0625rem;margin:0 0 8px}
.org-stack .plan-timeline>p{margin:0}
.org-details .org-section{margin:0;padding:22px 0 0;border-top:1px solid var(--line)}
.org-details .analytics-body>.org-section:first-child{padding-top:0;border-top:0}
.org-details .analytics-body>.org-section+.org-section{margin-top:22px}
.org-details .org-section h3{margin:0;font-size:1.0625rem}
.org-details .org-section h4{margin:0;font-size:1rem}
.org-section-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;margin:0 0 10px}
.org-section-head button{min-height:44px}
.org-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 48px}
.org-theme .form-actions{justify-content:flex-start}
.org-theme .form-actions button{min-height:44px}
.org-stack .export-cols{gap:24px 40px}
@media (max-width:760px){
.org-stack .panel-head{padding:14px 16px}
.org-stack>.panel>.analytics-body,.org-stack>.panel>details>.analytics-body{padding:16px}
}
/* responsive:org-settings - Organisation page: Colours as a left-aligned row of label + swatch pairs, and the Workspace settings card as a list of compact rows (name and one-line description on the left, the control on the right; stacked on phones) with a toggle switch, a segmented control and summary chips. */
.org-colours .org-section-head,.org-colours h3{margin-bottom:6px}
.org-swatches{display:flex;flex-wrap:wrap;gap:8px 32px;align-items:center;margin:0 0 14px}
.org-swatch{display:inline-flex;align-items:center;gap:12px;min-height:44px;font-size:.9375rem;color:#344563}
.org-swatch input[type=color],#theme-form .org-swatch input[type=color]{width:48px;height:44px;min-width:44px;min-height:44px;padding:3px;border:1px solid #b8c1d1;border-radius:8px;background:#fff;cursor:pointer}
.org-swatch input[type=color]:disabled,#theme-form .org-swatch input[type=color]:disabled,#theme-form input[type=color]:disabled{cursor:not-allowed;opacity:1;border-style:dashed;border-color:#8b95a7}.org-swatch:has(input:disabled)>span{color:#5b6577}
/* Colour set: "PlayOps default" (brand swatches) or "Custom"; the current set is aria-pressed with visible "Selected" text. */
.org-theme-choice{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 14px}
.org-theme-choice-label{font-size:.9375rem;font-weight:600;color:#344563;margin-right:4px}
.org-theme-option{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border:1px solid #b8c1d1;border-radius:10px;background:#fff;color:#202838;font:inherit;font-size:.9375rem;font-weight:600;cursor:pointer}.org-theme-option:not(:has(.org-theme-tag))::after{content:"Selected"/"";visibility:hidden;padding:1px 8px;font-size:.75rem;font-weight:700}
.org-theme-option:hover:not(:disabled){border-color:var(--accent-ring);background:var(--accent-wash)}
.org-theme-option[aria-pressed=true]{border:2px solid var(--blue);padding:0 13px;background:var(--accent-tint);color:var(--accent-ink)}
.org-theme-option:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.org-theme-option:disabled{cursor:not-allowed;opacity:1;border-style:dashed;color:#5b6577}.org-theme-option:disabled:not([aria-pressed=true]):hover{background:#fff;border-color:#b8c1d1}
.org-theme-chips{display:inline-flex;gap:3px}
.org-theme-chip{width:16px;height:16px;border-radius:50%;border:1px solid rgba(6,18,31,.18)}
.org-theme-tag{display:inline-flex;align-items:center;flex:none;padding:1px 8px;border-radius:999px;background:var(--blue);color:var(--on-blue);font-size:.75rem;font-weight:700}
.org-theme .form-actions{justify-content:flex-start;margin:0}.org-theme-note{margin:0 0 14px;padding:8px 12px;border-left:3px solid #c98a2b;border-radius:0 6px 6px 0;background:#fdf8ef;color:#6b4513;font-size:.8125rem;line-height:1.5}@media(max-width:560px){.org-theme-choice{display:grid;grid-template-columns:1fr}.org-theme-option{justify-content:flex-start}.org-theme-option>.org-theme-tag,.org-theme-option::after{margin-left:auto}}
.org-settings-list{display:block}
.org-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 28px;align-items:center;margin:0;padding:16px 0;border-top:1px solid var(--line)}
.org-row:first-child{padding-top:0;border-top:0}
.org-row:last-child{padding-bottom:0}
.org-row-text{min-width:0}
.org-row-title{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.org-row-title h3{margin:0;font-size:1rem}
.org-stack .org-row-desc{margin:4px 0 0;color:#4d5b72;font-size:.9375rem}
.org-row-control{display:flex;align-items:center;justify-content:flex-end;min-width:0}
.org-row-control button{min-height:44px}
.org-more{margin:2px 0 0}
.org-more summary{display:inline-flex;align-items:center;min-height:44px;margin:-6px 0;color:var(--accent-text);font-size:.875rem;cursor:pointer}
.org-more p{margin:2px 0 10px;color:#4d5b72;font-size:.9375rem}
.org-switch{position:relative;display:inline-flex;align-items:center;gap:12px;min-height:44px;cursor:pointer}
.org-switch input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.org-switch-text{order:1;max-width:15rem;text-align:right;font-size:.9375rem;color:#344563;line-height:1.35}
.org-switch-state{order:2;min-width:2.2ch;font-size:.9375rem;font-weight:700;color:#202838}
.org-switch-track{order:3;position:relative;flex:none;width:48px;height:28px;border-radius:999px;background:#7b8598;transition:background .15s}
.org-switch-track::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.3);transition:transform .15s}
.org-switch input:checked+.org-switch-track{background:var(--blue)}
.org-switch input:checked+.org-switch-track::after{transform:translateX(20px)}
.org-switch input:focus-visible+.org-switch-track{outline:3px solid var(--focus-ring);outline-offset:3px}
.org-switch input:disabled{cursor:not-allowed}
.org-switch input:disabled+.org-switch-track,.org-switch input:disabled~.org-switch-text,.org-switch input:disabled~.org-switch-state{opacity:.65}
.org-seg{display:inline-flex;gap:3px;min-width:0;margin:0;padding:3px;border:1px solid #b8c1d1;border-radius:11px;background:#f1f3f8}
.org-seg-opt{position:relative;display:flex;min-width:0;cursor:pointer}
.org-seg-opt input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.org-seg-opt span{display:flex;align-items:center;justify-content:center;min-height:44px;padding:6px 14px;border-radius:8px;color:#33415a;font-size:.9375rem;line-height:1.3;text-align:center}
.org-seg-opt input:checked+span{background:var(--blue);color:var(--on-blue);font-weight:600}
.org-seg-opt input:checked+span::before{content:"\2713";margin-right:6px}
.org-seg-opt input:focus-visible+span{outline:3px solid var(--focus-ring);outline-offset:2px}
.org-seg-opt input:disabled{cursor:not-allowed}
.org-seg-opt input:disabled+span{opacity:.75}
.sport-facts.org-chips{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0}
.org-chips div{display:inline-flex;align-items:baseline;gap:5px;padding:4px 7px;border:0;border-radius:4px;background:#f4f5f8;font-size:.75rem;color:#646b76}
.org-chips dt{font-size:.75rem;color:#646b76}
.org-chips dd{margin:0;font-size:.75rem;font-weight:600;color:#646b76}
@media (max-width:760px){
.org-fields{grid-template-columns:minmax(0,1fr)}
.org-row{grid-template-columns:minmax(0,1fr)}
.org-row-control{justify-content:flex-start}
.org-switch-text{order:3;max-width:none;text-align:left}
.org-switch-track{order:1}
.org-switch-state{order:2}
.org-seg{display:flex;flex-direction:column;width:100%}
}

/* responsive:waitlist-tidy - public waitlist pages (form, errors, confirmation, closed, find, correction): larger text, one label row per field with an optional "?" help tip, red required asterisks with a legend, comfortable checkboxes; staff forms' required asterisks and name-split note; staff waitlist pool buttons */
html:has(.wl-page){font-size:112.5%}
.wl-page{color:#1f2a3d}
.wl-page main{line-height:1.6}
.wl-page h1{font-size:2rem;line-height:1.2;margin:6px 0 10px}
.wl-page main>p,.wl-page .wl-intro{font-size:1rem;line-height:1.6;margin:6px 0}
.wl-page .auth-eyebrow{font-size:.8125rem}
.wl-page .wl-hint{font-size:.9375rem;line-height:1.5;color:#4a5568}
.wl-page .field-error{font-size:.9375rem;line-height:1.45;margin-top:4px}
.wl-page select,.wl-page input:not([type=checkbox]):not([type=radio]),.wl-page textarea{font-size:1rem;color:#1f2a3d}
.wl-page :is(#public-intake,#wl-find,#wl-correction) :is(input:not([type=checkbox]):not([type=radio]),select,textarea){font-size:1rem}
.wl-page select,.wl-page input:not([type=checkbox]):not([type=radio]){min-height:48px;height:auto}
.wl-page textarea{width:100%;padding:10px 12px;line-height:1.5}
.wl-page button{font-size:1rem}
.wl-page .notice{font-size:1rem;line-height:1.55}
.wl-page .wl-contact,.wl-page .wl-find,.wl-page .wl-next,.wl-page .wl-summary dd{font-size:1rem}
.wl-page .wl-summary dt{font-size:.9375rem}
.wl-page .intake-step{font-size:1.25rem;margin:0 0 12px}
.wl-page .intake-step span{width:28px;height:28px;font-size:.875rem}
.wl-page .intake-section{padding:24px}
.wl-page .intake-section .intake-step:not(:first-child){margin-top:32px;padding-top:24px}
.wl-page .wl-banner{margin:4px 0 16px!important;padding:12px 16px}
.wl-page .wl-closes{font-weight:600}
.wl-page .wl-legend{margin:0 0 12px;font-size:.9375rem;color:#3b4658}
.wl-req{color:#c0262d;font-weight:700;margin-left:3px}
#public-intake .form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px 18px;margin:0}
#public-intake .form-grid+.form-grid,#public-intake fieldset+.form-grid,#public-intake .wl-names+fieldset{margin-top:16px}
.wl-field{display:flex;flex-direction:column;gap:6px;min-width:0;margin:0}
#public-intake>.intake-section>.wl-field,#public-intake .intake-section>.wl-field{margin-top:16px}
.wl-label-row{display:flex;align-items:center;flex-wrap:wrap;gap:2px;min-height:28px}
.wl-label-row label,#public-intake legend{font-size:.9375rem;font-weight:600;color:#1f2a3d;line-height:1.4}
.wl-label-row label{display:inline;margin:0}
#public-intake select{font-size:1rem;min-height:48px}
#public-intake .birth-field{margin:18px 0 0;padding:0;border:0;min-width:0}
#public-intake .birth-field legend{margin-bottom:6px;display:flex;align-items:center;flex-wrap:wrap;gap:2px;padding:0;font-size:.9375rem;font-weight:600;color:#1f2a3d}
#public-intake .birth-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
#public-intake .birth-row select{width:100%}
#public-intake fieldset.intake-positions{margin:22px 0 6px}
#public-intake fieldset.intake-positions legend{display:flex;align-items:center;flex-wrap:wrap;gap:2px;margin-bottom:6px;padding:0;font-size:.9375rem}
#public-intake fieldset.intake-positions{grid-template-columns:repeat(auto-fill,minmax(min(100%,140px),1fr))}
@media (min-width:601px){#public-intake fieldset.intake-positions{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}}
#public-intake fieldset.intake-positions label{font-size:.9375rem;font-weight:600;min-height:48px;gap:10px}
#public-intake .wl-sub{display:flex;align-items:center;gap:2px;margin:26px 0 4px;font-size:1.0625rem}
#public-intake .wl-help{font-size:.9375rem}
#public-intake .wl-consent{margin:20px 0 0;padding:14px 16px}
#public-intake .wl-consent legend{font-size:1rem}
#public-intake .wl-consent ul{font-size:1rem}
.wl-page .wl-after{margin:18px 0 0;font-size:1rem;line-height:1.6}
.wl-page button.wl-tip{display:inline-flex;align-items:center;justify-content:center;position:relative;flex:none;box-sizing:border-box;width:26px;height:26px;min-width:26px;min-height:26px;margin:0 0 0 6px;padding:0;border:1px solid #8d9bb3;border-radius:50%;background:#eef2f8;color:var(--accent-ink);font-size:.8125rem;font-weight:700;line-height:1;cursor:pointer;vertical-align:middle;box-shadow:none}
.wl-page button.wl-tip::after{content:"";position:absolute;inset:-9px}
.wl-page button.wl-tip:hover{background:var(--accent-tint-2)}
.wl-page button.wl-tip:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.wl-page button.wl-tip[aria-expanded=true]{background:var(--blue);border-color:var(--blue);color:var(--on-blue)}
.wl-tip-text{display:block;margin:2px 0 4px;padding:10px 12px;border:1px solid var(--accent-border);border-radius:8px;background:var(--accent-tint);color:#1f2a3d;font-size:.9375rem;font-weight:400;line-height:1.5}
.wl-tip-text[hidden]{display:none}
.wl-page input[type=checkbox],.wl-page input[type=radio]{flex:none;width:22px;height:22px;min-width:22px;min-height:22px;margin:0;accent-color:var(--blue);cursor:pointer}
.wl-page input[type=checkbox]:focus-visible,.wl-page input[type=radio]:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.wl-check{display:flex;align-items:flex-start;gap:12px;min-height:44px;padding:9px 0;margin:0;font-size:1rem;font-weight:400;line-height:1.5;color:#1f2a3d;cursor:pointer}
.wl-check input[type=checkbox]{margin-top:2px}
.wl-check-row{display:flex;align-items:flex-start;gap:0;margin-top:8px}
.wl-check-row .wl-check{flex:1 1 auto;min-width:0}
.wl-check-row button.wl-tip{margin-top:10px}
.wl-check-row+.wl-tip-text{margin-left:34px}
#public-intake .wl-cred-details{margin:2px 0 6px 34px}
#public-intake .wl-cred-details[hidden]{display:none}
#public-intake .wl-unsure{min-height:48px}
#public-intake .wl-phone .wl-check{padding:4px 0;min-height:44px}
#public-intake .intake-consent{margin-top:4px}
#public-intake .wl-hint:empty{display:none}
#public-intake>button[type=submit].wl-submit{min-height:56px;font-size:1.0625rem;margin-top:12px}
.wl-page .wl-copy{font-size:1rem}
.wl-page #wl-find button[type=submit]{margin-top:14px;min-height:48px}
.wl-page .wl-summary h2,.wl-page .wl-correct h2{display:flex;align-items:center;gap:2px}
.wl-page #wl-restored{font-size:1rem}
@media (max-width:600px){
.wl-page h1{font-size:1.6rem}
#public-intake .form-grid{grid-template-columns:minmax(0,1fr);gap:14px}
.wl-page .intake-section{padding:18px 16px}
.wl-page .intake-step{font-size:1.15rem}
.wl-page .notice{font-size:.9375rem}
}
@media (max-width:360px){
.wl-page .intake-section{padding:16px 12px}
#public-intake .birth-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}
}
/* staff forms touched by the name split: legend, asterisk and the "we split this name" note */
.iu-req-legend{margin:10px 0 0;font-size:.8125rem;color:#3b4658}
form[data-no-required-marks] label:has(>.wl-req){display:block}
form[data-no-required-marks] label:has(>.wl-req)>input{display:block;width:100%;margin-top:8px}
.iu-name-guess{margin:0;padding:8px 12px;border-left:3px solid #b7791f;background:#fff8e6;color:#4a3b12;font-size:.8125rem;line-height:1.45;border-radius:4px}
/* staff Waitlist: the per-row "Add to pool" button kept the generic td button reset (padding 0), so its label touched the edges; it keeps its own padding, stays on one line and sits beside the status tag */
.rs-wl td.rs-status{align-items:center;flex-wrap:wrap;gap:8px}
.rs-wl td.rs-status .tag{align-self:center}
td button.pool-add{flex:none;margin-left:8px;padding:0 16px;min-height:44px;white-space:nowrap;border:1px solid transparent}
#add-all-to-pool{white-space:nowrap}
@media (max-width:760px){.rs-wl td.rs-status{gap:8px}td button.pool-add{margin-left:0}}

/* responsive:builder-panels - Team builder: Team intelligence (>=1201px, the three-column layout) stays in view while the long team column scrolls. Offsets use --sticky-top/--sticky-bottom from a11y-ui.js syncSticky. Single-column layouts (<=1100px) stay static so nothing covers content. (The List view's sticky pool card is gone: the Player pool is the drawer in both views, tb:pool-drawer.) */
@media (min-width:1201px){
.workspace>.insights{position:sticky;top:calc(var(--sticky-top,0px) + 12px);max-height:calc(100vh - var(--sticky-top,0px) - var(--sticky-bottom,0px) - 24px);max-height:calc(100dvh - var(--sticky-top,0px) - var(--sticky-bottom,0px) - 24px);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}
}
/* Add to team (multi-select shared teams) dialog: 44px checkbox rows styled like the Move to team list */
.add-team-list{border:0;padding:0;margin:14px 0 0;min-width:0;display:grid;gap:8px}
.add-team-list legend{padding:0;margin-bottom:8px;font-size:.875rem;font-weight:600;color:#344563}
.add-team-row{display:flex;align-items:center;gap:12px;min-height:44px;padding:10px 14px;border:1px solid #dfe5ef;border-radius:9px;background:#fff;cursor:pointer}
.add-team-row:has(input:checked){border-color:var(--blue);background:color-mix(in srgb,var(--blue) 8%,#fff)}
.add-team-row:focus-within{outline:3px solid var(--focus-ring);outline-offset:2px}
.add-team-row input{flex:none;width:20px;height:20px;min-height:0;margin:0;padding:0;accent-color:var(--blue)}
.add-team-name{display:flex;flex-direction:column;gap:2px;min-width:0;font-weight:600;color:#202838;overflow-wrap:anywhere}
.add-team-name .sub{margin:0;font-weight:400;font-size:.75rem;color:#59677c}
.add-team-row.is-disabled{cursor:not-allowed;background:#f6f7f9}
.add-team-row.is-disabled .add-team-name{color:#4b5568}
.add-team-row.is-primary{border-style:dashed}
.dialog-footer .dialog-cancel{min-height:44px;min-width:100px;padding:0 18px;border-radius:8px;background:#fff;border:1px solid #cfd6e3;color:#344563;font-weight:600;font-size:.9375rem;cursor:pointer}
.dialog-footer .dialog-cancel:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
@media (max-width:760px){.dialog-footer .dialog-cancel{flex:1;min-height:48px}}

/* responsive:team-cards */
.team .team-title{flex-wrap:wrap;row-gap:0;align-items:flex-start;cursor:default}
.team .team-title>.actions{min-height:44px}
.teams>.panel.team{container-type:inline-size}
.team .team-main{display:grid;grid-template-columns:minmax(min(7.5rem,52%),max-content) minmax(min(90px,44%),1fr);align-items:center;column-gap:8px;flex:1 1 0;min-width:0}
.team .team-head{display:flex;align-items:center;gap:4px;min-width:0}
.team .team-head .team-toggle{flex:none;min-width:36px;min-height:44px;justify-content:center;gap:0}
.team .team-heading{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;margin:0;font-size:1rem;min-width:0}
.team .team-heading .count{font-weight:500}
.team .team-name{font:inherit;color:inherit;max-width:100%;overflow-wrap:anywhere}
.team .team-title button.team-name{cursor:text;border-radius:4px;padding:2px 3px;margin:-2px -3px}
.team .team-title button.team-name:hover{text-decoration:underline dotted;text-underline-offset:3px;background:color-mix(in srgb,var(--blue) 6%,transparent)}
.team .team-name-input{font:inherit;color:inherit;min-width:0;width:auto;max-width:100%;padding:2px 6px;margin:-3px 0;border:1px solid var(--blue);border-radius:6px;background:#fff}
/* Coach and manager sit in the title row, centred between the name and the status / ⋮ (side by side, or Coach above Manager when the gap is small). On desktop (>=1101px) they never
   wrap under the name: .team-main is a two-column grid where the name block takes up to its natural width and the staff column keeps at least 90px (min(90px,44%) and
   min(7.5rem,52%) so nothing overlaps the status / ⋮ even on the tightest card). The labels shorten first with an ellipsis (full name in the title tooltip; the text itself is the
   accessible name); only then does the team name wrap onto a second line. Phone and tablet layouts (<=1100px) still move them under the name on narrow cards (below). */
.team .team-staff{min-width:0;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:0 16px;padding:2px 4px;font-size:.8125rem;line-height:1.35;color:#4b5565;text-align:center}
.team .team-staff>span{flex:0 1 auto;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0}
.team .team-drag{display:flex;align-items:center;justify-content:center;flex:none;width:22px;min-height:44px;margin-left:-8px;color:#8b94a3;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;border-radius:4px}
.team .team-drag svg{fill:currentColor}
.team .team-drag:hover{color:#344563;background:rgba(32,40,56,.05)}
.team.team-dragging{opacity:.9;box-shadow:0 10px 24px rgba(32,40,56,.18);position:relative;z-index:2}
body.team-reordering,body.team-reordering *{cursor:grabbing!important;user-select:none;-webkit-user-select:none}
/* Active team: green, thicker than the old blue border; focus rings stay blue outlines so the two remain distinct. #1d7a4d is about 4.9:1 against the card and page backgrounds. */
.teams .panel.team.selected{border:2px solid #1d7a4d;border-top:4px solid #1d7a4d;box-shadow:0 0 0 1px rgba(29,122,77,.12)}
/* Over the team size (only Duplicate team with Players can do this): players past the team size (own players first, then shared) get a 2px red border (#c62828, 5.6:1 on white)
   and hidden "Over the team size" text; the count chip turns red and a plain note says how many. Approval still needs the roster to fit. */
.team .player.over-cap{border-color:#c62828;box-shadow:inset 0 0 0 1px #c62828}
.team .count.count-over{background:#fdecec;color:#a3261c;font-weight:600}
.team .over-cap-note{margin:0 13px 8px;font-size:.8125rem;line-height:1.4;color:#a3261c}
/* Narrow desktop cards (about 1201-1400px windows): the same row, a little tighter (smaller side padding and staff text) so the stacked Coach / Manager block fits beside the name. */
@media (min-width:1101px){@container (max-width:440px){.team .team-title{padding-left:14px;padding-right:10px}.team .team-staff{font-size:.75rem;gap:0 10px;padding:2px 0}.team .team-title .actions .tag{white-space:normal;max-width:4.75rem;text-align:center;line-height:1.2}}}
/* Narrow cards on phones and tablets (<=1100px): name, status and ⋮ on the first line, coach and manager on their own full-width line under the name. */
@media (max-width:1100px){@container (max-width:440px){.team .team-main{display:contents}.team .team-head{flex:1 1 0}.team .team-title>.actions{order:1;margin-left:auto}.team .team-staff{order:2;flex-basis:100%;justify-content:flex-start;text-align:left;padding:0 8px 6px 40px}.team .team-drag~.team-main>.team-staff{padding-left:54px}}}
@media (max-width:760px){@container (max-width:440px){.team .team-drag~.team-main>.team-staff{padding-left:60px}}}
/* A narrow team card (about 1201-1300px wide windows, now that Team intelligence is wider) lists its players in one column so names and positions do not wrap. */
@container (max-width:380px){.team .roster{grid-template-columns:minmax(0,1fr)}}
/* Duplicate team dialog: the Add to team rows (44px, fieldset/legend) with a plain note under each option. */
.dup-team-form>p{margin:0}
.dup-team-row .sub{white-space:normal}

/* Data retention (Organisation > Workspace settings > Data retention, the removals dialog, the player profile's final-season toggle and the team-card chip). */
.retention-next{display:flex;flex-wrap:wrap;align-items:center;gap:0 4px}
.retention-next .link-btn{margin-left:4px}
.retention-paused{color:#7a4b00}
.retention-list{list-style:none;margin:16px 0 0;padding:0}
.retention-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
.retention-item:first-child{border-top:0}
.retention-item>div{min-width:0}
.retention-item strong{overflow-wrap:anywhere}
.retention-item .sub{display:block;margin-top:2px;white-space:normal}
.retention-item button{min-height:44px;flex:none}
.final-season-toggle{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-weight:600;color:var(--ink,#1f2a3c);cursor:pointer}
.final-season-toggle input{width:20px;height:20px;margin:0}
.retention-chip{display:inline-block;margin-top:4px;background:#fff4dc;color:#6b4a00}
@media (max-width:480px){.retention-item{flex-direction:column;align-items:stretch}.retention-item button{width:100%}}

/* player-modal: the player profile - header actions as icons only (aria-label plus the shared data-tip tooltip; the Final season toggle pulses while the player ages out and is not yet marked, a static amber ring with reduced motion), a compact header card (avatar; the name with the registration dots, then team, positions and the Ages out / Final season badge as small chips sharing one style, .pim-chip, the badge in amber; a full-width row of labelled mini-stats: coach rating with a progress arrow only, years playing, age), the always-visible coach-rating graph (no heading; each bar focusable with its own tooltip), two accordion sections, then the always-visible Teams and seasons table. */
dialog:has(.pim-summary){width:min(720px,94vw)}
.modalhead:has(.pim-act) .modal-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;align-items:center;margin-left:auto}
.modalhead .modal-actions .icon-btn.pim-act,.modalhead:has(.pim-act) #close{flex:0 0 auto;width:44px;min-width:44px;height:44px;min-height:44px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;order:0}
.modal-actions .icon-btn.pim-act svg{width:20px;height:20px}
.modal-actions .pim-act:focus-visible,.pim-toggle:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.modal-actions .pim-erase{margin-left:10px;position:relative}
.modal-actions .pim-erase::before{content:'';position:absolute;left:-9px;top:8px;bottom:8px;border-left:1px solid var(--line)}
.pim-summary{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px 16px;align-items:center;margin-bottom:14px}
.pim-summary .avatar{flex:none}
.pim-face{display:flex;min-width:0;align-self:start}
.pim-id{min-width:0}
.pim-summary h2{margin:0 0 6px;font-size:1.35rem;line-height:1.25;overflow-wrap:anywhere}
.pim-sub{display:flex;flex-wrap:wrap;gap:6px;margin:0;font-size:.8125rem;color:#4a5466}
.pim-sub>.pim-chip{display:inline-flex;align-items:center;min-height:26px;max-width:100%;margin:0;padding:2px 10px;border:1px solid var(--line);border-radius:999px;background:#fff;font-size:inherit;line-height:1.25;overflow-wrap:anywhere}
.pim-team{font-weight:600;color:#263247}
.pim-shared{font-weight:400;color:var(--muted)}
.pim-sub>.retention-chip{border-color:#e2bd6b;background:#fff4dc;color:#6b4a00;font-weight:600;white-space:nowrap}
.pim-stats{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,9.5rem),1fr));gap:8px;margin:0}
.pim-stat{min-width:0;margin:0;padding:10px 12px;border-radius:10px;background:#f6f7fa}
.pim-stat dt{display:flex;align-items:center;gap:4px;min-height:20px;font-size:.8125rem;font-weight:600;color:#4a5466}
.pim-stat dd{margin:0}
.pim-stat-value{margin-top:2px;line-height:1.2;color:#202838;overflow-wrap:anywhere}
.pim-stat-value strong{font-size:1.375rem;font-weight:700}
.pim-stat-value span{font-size:.875rem;color:#4a5466}
.pim-stat-value .pim-stat-empty{font-size:.9375rem;color:var(--muted)}
.modalhead .modal-actions .pim-final[aria-pressed=true]{background:#fff4dc;border-color:#c98a12;color:#6b4a00}
.modalhead .modal-actions .pim-final-due{border-color:#c98a12;color:#6b4a00;animation:pim-pulse 1.8s ease-out infinite}
@keyframes pim-pulse{0%{box-shadow:0 0 0 0 rgba(217,145,20,.55)}70%{box-shadow:0 0 0 9px rgba(217,145,20,0)}100%{box-shadow:0 0 0 0 rgba(217,145,20,0)}}
@media (prefers-reduced-motion:reduce){.modalhead .modal-actions .pim-final-due{animation:none;box-shadow:0 0 0 3px #f0b44c}}
.pim-secs{border-top:1px solid var(--line)}
.pim-sec{border-bottom:1px solid var(--line)}
.modalbody .pim-sec-head{display:flex;align-items:center;gap:6px;margin:0;font-size:1rem}
.pim-toggle{flex:1;min-width:0;display:flex;align-items:center;gap:10px;min-height:48px;padding:6px 4px;border:0;background:none;border-radius:8px;font:inherit;font-weight:700;color:#202838;text-align:left;cursor:pointer}
.pim-toggle:hover{background:#f6f7fa}
.pim-title{min-width:0;overflow-wrap:anywhere}
.pim-meta{margin-left:auto;font-size:.75rem;font-weight:500;color:var(--muted);white-space:nowrap}
.pim-chev{flex:none;transition:transform .15s ease}
.pim-sec-head>.tip-icon{flex:none}
.pim-toggle[aria-expanded=true] .pim-chev{transform:rotate(180deg)}
.pim-title+.pim-chev{margin-left:auto}
.pim-body{padding:2px 4px 16px;min-width:0}
.pim-body[hidden]{display:none}
.pim-body .tablewrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.pim-body .chart{margin-top:8px}
.pim-graph{margin:0 0 16px;min-width:0}
.pim-graph .chart{margin-top:14px;height:142px}
.pim-chart .pim-bar{cursor:default}
.pim-chart .pim-bar:hover{background:var(--accent-tint-2)}
.pim-chart .pim-bar-latest{background:var(--accent-mid)}
.pim-chart .pim-bar-latest:hover{background:color-mix(in srgb,var(--blue) 72%,#fff)}
.pim-chart .pim-bar:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.pim-history{margin-top:18px;min-width:0}
.modalbody .pim-plain-head{margin:0 0 6px;padding:0 4px;font-size:.9375rem;font-weight:700;color:#202838}
.pim-history .tablewrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.pim-history .pim-empty{padding:0 4px}
.pim-graph .pim-empty{margin-top:4px}
.pim-body .insight-row{margin:10px 0;gap:12px}
.pim-body .insight-row strong{text-align:right;overflow-wrap:anywhere}
.pim-empty{margin:4px 0 0;font-size:.875rem;color:var(--muted)}
.pim-body .not-recorded{margin:10px 0 0;overflow-wrap:anywhere}
@media (prefers-reduced-motion:reduce){.pim-chev{transition:none}}
@media (max-width:640px){
dialog:has(.pim-summary){width:100vw}
.modalhead:has(.pim-act){flex-wrap:wrap}
.modalhead:has(#preview-placement) .modal-actions:has(.pim-act){display:flex;flex:1 1 100%;flex-wrap:wrap;gap:6px;justify-content:flex-start;order:3;margin:0}
.modalhead:has(#preview-placement) .modal-actions .icon-btn.pim-act{order:0;flex:0 0 44px;width:44px;min-width:44px}
.modalhead:has(.pim-act) #close{order:9;position:fixed;top:calc(6px + env(safe-area-inset-top));right:max(8px,env(safe-area-inset-right));z-index:6;background:#fff;box-shadow:0 1px 6px rgba(6,18,31,.18)}
.modal-actions .pim-erase{margin-left:auto}
.modal-actions .pim-erase::before{display:none}
.pim-summary{gap:10px 12px}
.pim-summary .avatar{width:44px;height:44px;font-size:.95rem}
.pim-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.pim-stat{padding:8px 10px}
.pim-stat-value strong{font-size:1.25rem}
.pim-summary h2{font-size:1.15rem}
.pim-body .insight-row{flex-wrap:wrap}
}
.pim-stat-value .pim-trend{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-left:4px;border-radius:999px;background:#e9ecf1;color:#4a5466;font-size:1rem;font-weight:700;line-height:1;vertical-align:.1em;cursor:default}
.pim-stat-value .pim-trend[data-trend=improving]{background:#e1f2e8;color:#1d6b43}
.pim-stat-value .pim-trend[data-trend=declining]{background:#fff1d6;color:#8a4b00}
.pim-stat-value .pim-trend:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.pim-note{margin:4px 0 8px;font-size:.85rem;color:var(--muted)}
.pim-given summary{min-height:44px;display:flex;align-items:center;gap:6px;cursor:pointer;font-size:.875rem;font-weight:600;color:var(--accent-text)}
.pim-given>summary::before{content:'▸'}
.pim-given[open]>summary::before{content:'▾'}
.pim-body .raw-review p{margin:6px 0}
.pim-tip-gap{flex:none;width:18px;margin-left:4px}
@media (max-width:360px){
.modalhead:has(#preview-placement) .modal-actions:has(.pim-act){gap:4px}
}

/* responsive:placements-why - Recommended placements: the Why column wraps (table cells default to nowrap), so the whole table, including Team and Division, fits the dialog without sideways scrolling */
.placements-table td:nth-child(3){white-space:normal;overflow-wrap:anywhere;min-width:14rem;line-height:1.45}

/* responsive:dialog-checkbox - checkbox rows (label.sample-choice). The row is a flex box and the global input rule sets min-width:0, so a checkbox without a fixed size was a shrinkable flex item: a long label (the Edit season profile same-name confirmation) squeezed it to a few pixels. Every row's box now keeps its size (flex:0 0 auto); in dialogs it is 18px like the position checkboxes, on the first text line of the row, with a visible focus ring. Rows are compact on desktop (3px padding) and a 44px tap row on phones and touch screens (padding, not margins). Consecutive checkboxes sit in one .check-group: a tight stack (about 8-10px between rows) with the normal 14px before it. */
.sample-choice>input:is([type=checkbox],[type=radio]){flex:0 0 auto}
dialog label.sample-choice{min-height:28px;padding:3px 0;align-items:flex-start}
@media (max-width:760px),(pointer:coarse){dialog label.sample-choice{min-height:44px;padding:11px 0}}
dialog .check-group{display:grid;gap:2px;margin:14px 0}
dialog .check-group>label.sample-choice{margin:0}
dialog .check-group>.umpire-details{margin:2px 0 6px 26px}
@media (max-width:760px),(pointer:coarse){dialog .check-group{gap:0}dialog .check-group>.umpire-details{margin-left:0}}
dialog .same-name{margin-top:18px;padding:10px 14px 4px;border-radius:7px;background:var(--accent-tint)}
dialog .same-name[hidden]{display:none}
dialog .same-name-note{margin:0 0 2px;color:#344563;font-size:.875rem;line-height:1.5}
dialog .same-name>label.sample-choice{color:#202838;font-weight:500}
dialog .sample-choice>input[type=checkbox]{width:18px;height:18px;margin:2px 0 0;accent-color:var(--blue)}
dialog .sample-choice>input:is([type=checkbox],[type=radio]):focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}

/* responsive:wl-top-pool - (1) public waitlist pages (form, confirmation, closed, find): the empty band above the club name came from staff-app rules the public shell inherited:
   the sidebar brand's 28px bottom padding (it also pushed the "Season waitlist" tag off the logo's centre), the shell header's 52px margin and the staff main's 32px top padding.
   Scoped to .wl-page so sign-in and the staff app are unchanged. (2) birth month and year sit side by side at 50 / 50 on every width (selects stay 1rem = 18px and 48px high).
   (3) staff Waitlist: "Add to pool" has its own column and is centred in it, vertically in line with the row; stacked phone / tablet cards show it on its own line at the end of the card. */
.intake-shell.wl-page header{margin-bottom:16px;align-items:center}
.intake-shell.wl-page header .brand{padding-bottom:0}
.intake-shell.wl-page main{padding-top:0}
#public-intake .birth-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
#public-intake .birth-row select{width:100%;font-size:1rem;min-height:48px}
.rs-wl th.wl-pool-col{width:1%}
.rs-wl td.rs-pool{text-align:center;vertical-align:middle;white-space:nowrap}
.rs-wl td.rs-pool button.pool-add{margin:0 auto}
@media (max-width:1100px){
.rs-stack.rs-wl td.rs-pool{grid-column:1;justify-content:flex-start;text-align:left;margin-top:6px}
.rs-stack.rs-wl td.rs-pool::before{content:none}
.rs-stack.rs-wl td.rs-pool button.pool-add{margin:0}
.rs-stack.rs-wl td.rs-pool:empty{display:none}
}
@media (max-width:760px){.intake-shell.wl-page header{margin-bottom:12px}}
/* waitlist-settings:positions-chat - the Positions card and the Team chat app fieldset in the "Season waitlist form" dialog, and the optional chat app tick box on the public form.
   Rows stack on phones; every button is at least 44px high; text is 16px in inputs. */
.wl-pos-settings{margin:22px 0 4px;padding:16px;border:1px solid var(--line);border-radius:10px;background:#fafbfc}
.wl-pos-settings h3{margin:0 0 4px;font-size:1rem}
.wl-pos-list{list-style:none;margin:12px 0;padding:0;display:grid;gap:8px}
.wl-pos-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#fff}
.wl-pos-text{display:flex;flex-direction:column;gap:2px;min-width:0;overflow-wrap:anywhere}
.wl-pos-code{display:inline-block;width:max-content;padding:1px 6px;border-radius:4px;background:#eef1f7;color:#3b4658;font-size:.8125rem;font-weight:600}
.wl-pos-desc,.wl-pos-why{font-size:.8125rem;line-height:1.45;color:#566276}
.wl-pos-why{color:#7a4b00}
.wl-pos-actions{display:flex;flex-wrap:wrap;gap:8px;flex:none}
.wl-pos-actions button,#wl-pos-add{min-height:44px;padding:0 14px}
.wl-pos-actions button[aria-disabled="true"]{opacity:.62;cursor:not-allowed}
.wl-pos-editing{flex-direction:column;align-items:stretch}
.wl-pos-fields{display:grid;gap:10px}
.wl-pos-fields label{display:block;font-weight:600;font-size:.875rem}
.wl-pos-fields input{display:block;width:100%;margin-top:6px;min-height:44px;font-size:16px}
.wl-pos-fixed{margin:0}
.wl-pos-confirm{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.wl-pos-error:empty,.wl-pos-msg:empty{display:none}
.wl-pos-error{margin:8px 0 0;color:#a12323;font-weight:600}
.wl-pos-msg{margin:8px 0 0;color:#1f6b3f;font-weight:600}
.wl-chat-settings{margin:22px 0 0;padding:16px;border:1px solid var(--line);border-radius:10px;min-width:0}
.wl-chat-settings legend{padding:0 6px;font-weight:700}
.wl-chat-settings input[name=chatApp],.wl-chat-settings textarea{display:block;width:100%;margin-top:6px;font-size:16px}
.wl-page .wl-chat{margin:6px 0 0}
.wl-page .wl-chat-note{margin:0 0 8px 34px}
@media (max-width:600px){.wl-pos-row{flex-direction:column;align-items:stretch}.wl-pos-actions button{flex:1 1 auto}.wl-page .wl-chat-note{margin-left:0}}
.wl-pos-confirm .danger-btn{color:#fff;background:#a12323;border-color:#a12323}
/* staff Waitlist at desktop widths: the table no longer needs a sideways scroll to reach "Add to pool" and the row menu (it was 1239px wide in a 975px panel at 1280px).
   The Season column repeats the season chosen at the top of the page, so it is hidden here as it already was on phones and tablets; cells are a little narrower. */
@media (min-width:1101px){.rs-wl .rs-skip{display:none}.rs-wl th,.rs-wl td{padding-left:12px;padding-right:12px}.rs-wl td{white-space:normal}.rs-wl td .tag,.rs-wl td.rs-pool,.rs-wl td.rs-title{white-space:nowrap}}

/* setup-wizard: the "Set up your club" header button (between the season list and the avatar) and the wizard dialog (onboarding-ui.js). */
.topbar .setup-btn{position:relative;flex:none;color:#3b4a63}
.setup-btn .setup-btn-text{display:none}
.setup-dot{position:absolute;top:6px;right:6px;width:9px;height:9px;border-radius:50%;background:#d0461c;box-shadow:0 0 0 2px #fff}
@media (min-width:1101px){.topbar .setup-btn{width:auto;padding:0 14px 0 12px;gap:8px}.setup-btn .setup-btn-text{display:inline;font-size:.875rem;font-weight:600}.setup-dot{top:5px;right:5px}}
.wiz{display:grid;gap:14px}
.wiz p{margin:0}
.wiz h3{margin:0;font-size:1rem}
.wiz .wiz-count{font-size:.8125rem;font-weight:600;color:#4b5565}
.wiz-bar{display:flex;gap:6px;margin:-8px 0 0;padding:0;list-style:none}
.wiz-bar li{flex:1;height:5px;border-radius:3px;background:#e3e8f2}
.wiz-bar li.done{background:var(--accent-ring)}
.wiz-bar li.on{background:var(--blue)}
.wiz .wiz-lead{font-size:1rem;line-height:1.5;color:#202838}
.wiz .wiz-hint{font-size:.875rem;line-height:1.5;color:#4b5565}
.wiz .wiz-note{padding:10px 12px;border-radius:8px;background:#e9f6ef;color:#1d5a3a;font-size:.875rem;font-weight:600}
.wiz .wiz-ok-line{font-weight:600;color:#1d5a3a}
.wiz .wiz-restart{font-size:.875rem;color:#4b5565}
.wiz .link-btn{min-height:44px;padding:0;border:0;background:none;color:var(--accent-text);text-decoration:underline;font:inherit;cursor:pointer}
.wiz-plan{margin:0;padding:0;list-style:none;counter-reset:wiz;display:grid;gap:10px}
.wiz-plan li{counter-increment:wiz;display:grid;grid-template-columns:32px minmax(0,1fr);column-gap:10px;align-items:start}
.wiz-plan li::before{content:counter(wiz);grid-row:1/3;width:28px;height:28px;border-radius:50%;background:var(--accent-tint);color:var(--accent-text);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.875rem}
.wiz-plan strong{font-size:.9375rem}
.wiz-plan span{font-size:.875rem;color:#4b5565}
.wiz-form{display:grid;gap:12px}
.wiz [hidden]{display:none!important}
.wiz-form label{display:block;font-size:.875rem;font-weight:600;color:#2c3546;min-width:0}
.wiz-form label>input:not([type=checkbox]):not([type=radio]),.wiz-form label>select{display:block;width:100%;min-height:44px;min-width:0;margin-top:6px}
.wiz-form label.sample-choice{display:flex;font-weight:500}
.wiz-form .form-grid{gap:12px}
.wiz-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1.3fr) minmax(0,1fr);gap:12px;align-items:end}
.wiz-add{padding:0;border:0;background:none}
.wiz-add .wiz-add-btn,.wiz-publish{justify-self:start;min-height:44px}
.wiz-more summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-size:.875rem;font-weight:600;color:var(--accent-text)}
.wiz-more[open] summary{margin-bottom:6px}
.wiz-list{margin:0;padding:0;list-style:none;border:1px solid var(--line);border-radius:10px}
.wiz-list li{display:grid;gap:2px;padding:10px 12px;font-size:.875rem;overflow-wrap:anywhere}
.wiz-list li+li{border-top:1px solid var(--line)}
.wiz-list li span{color:#4b5565}
.wiz .wiz-empty{font-size:.875rem;color:#4b5565}
.wiz fieldset{margin:0;padding:0;border:0;display:grid;gap:4px;min-width:0}
.wiz fieldset legend{padding:0;margin-bottom:4px;font-size:.875rem;font-weight:600;color:#2c3546}
.wiz fieldset label{display:flex;align-items:center;gap:10px;min-height:44px;font-weight:500}
.wiz-role{grid-auto-flow:column;justify-content:start;column-gap:18px!important}
.wiz-choice{display:grid;gap:10px;padding:14px;border:1px solid var(--line);border-radius:10px}
.wiz-choice .wiz-add{padding:0;border:0;background:none}
.wiz-actions{display:flex;flex-wrap:wrap;gap:8px}
.wiz-actions button{min-height:44px}
.wiz-summary{margin:0;padding:0;list-style:none;display:grid;gap:6px;font-size:.9375rem}
.wiz-summary li span[aria-hidden]{display:inline-block;width:20px;color:#8a93a3}
.wiz-summary li.ok span[aria-hidden]{color:#246345;font-weight:700}
.wiz-next-steps{display:flex;flex-wrap:wrap;gap:10px}
.wiz-next-steps button{min-height:44px}
.wiz-nav{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding-top:14px;border-top:1px solid var(--line)}
.wiz-nav .wiz-gap{flex:1}
.wiz-nav button{min-height:44px;min-width:88px;justify-content:center;text-align:center}
.wiz-nav .wiz-skip{min-width:0;color:#3b4a63;text-decoration:underline;text-underline-offset:3px}
.wiz .wiz-error{margin:0}
@media (max-width:640px),(max-height:500px) and (max-width:900px){
.wiz-row,.wiz .form-grid{grid-template-columns:minmax(0,1fr)}
.wiz-player-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}
.wiz-nav{position:sticky;bottom:0;z-index:2;margin:0 -14px -14px;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:#fff;box-shadow:0 -1px 0 var(--line)}
.wiz-nav .wiz-next{flex:1 1 auto}
.wiz-next-steps{flex-direction:column;align-items:stretch}
.wiz-next-steps button{width:100%;justify-content:center;text-align:center}
}
@media (max-width:360px){.wiz-player-grid{grid-template-columns:minmax(0,1fr)!important}.wiz-role{grid-auto-flow:row}.wiz-nav .wiz-back{min-width:64px}}
.wiz-choice>label{display:block;font-size:.875rem;font-weight:600;color:#2c3546}
.wiz-choice>label>input{display:block;width:100%;min-width:0;margin-top:6px}
/* setup-wizard: one question per screen (Typeform-like). The question is the dialog heading; fields are big (16px+ so phones do not zoom). */
dialog:has(.wiz-screen) .modalhead h2{font-size:1.375rem;line-height:1.3;overflow-wrap:anywhere}
.wiz-screen{gap:16px}
.wiz input:not([type=checkbox]):not([type=radio]),.wiz select{font-size:1rem}
.wiz-q label.wiz-big>input,#wiz-season-form input[name=name]{font-size:1.25rem;min-height:56px}
.wiz .wiz-help{font-size:.9375rem;line-height:1.5;color:#4b5565}
.wiz .wiz-have{font-size:.875rem;color:#4b5565}
.wiz .wiz-fact{font-size:1.125rem;font-weight:600;overflow-wrap:anywhere}
.wiz-chips{display:flex;flex-wrap:wrap;gap:6px;margin:-8px 0 0;padding:0;list-style:none}
.wiz-chips li{max-width:100%;padding:4px 10px;border-radius:999px;background:var(--accent-tint);color:#25335a;font-size:.8125rem;font-weight:600;overflow-wrap:anywhere}
.wiz-choices{display:grid;gap:12px}
.wiz-pick{display:grid;gap:4px;width:100%;min-height:72px;padding:16px 18px;text-align:left;justify-items:start;border:1.5px solid var(--line);border-radius:12px;background:#fff;color:inherit;font:inherit;cursor:pointer}
.wiz-pick:hover,.wiz-pick:focus-visible{border-color:var(--blue);background:var(--accent-wash)}
.wiz-pick strong{font-size:1.0625rem;color:#202838}
.wiz-pick span{font-size:.875rem;font-weight:400;color:#4b5565}
.wiz-form label.wiz-same{display:flex;align-items:center;gap:10px;min-height:44px;font-weight:500}
.wiz-person{display:grid;gap:12px}
.wiz-form label.wiz-team-pick{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-weight:500}
.wiz-form label.wiz-team-pick>select{width:auto;max-width:100%;flex:1 1 10rem;margin-top:0}
.wiz-instead{justify-self:start;min-height:44px}
.wiz-screen>label{display:block;font-size:.875rem;font-weight:600;color:#2c3546}
.wiz-screen>label>input{display:block;width:100%;min-width:0;min-height:44px;margin-top:6px}
.wiz-nav .wiz-again,.wiz-nav .wiz-enough{min-width:0}
@media (max-width:640px),(max-height:500px) and (max-width:900px){dialog:has(.wiz-screen) .modalhead h2{font-size:1.25rem}.wiz-pick{min-height:64px;padding:14px}.wiz-nav .wiz-again,.wiz-nav .wiz-enough{flex:1 1 auto}}
/* dashboard:development */
.dev-card{display:grid;gap:10px;padding-top:4px}
.dev-group{display:grid;gap:2px;min-width:0}
.dev-title{display:flex;align-items:center;gap:6px;margin:4px 0 2px;font-size:.8125rem;font-weight:600;color:#4a5466;letter-spacing:.01em}
.dev-title-arrow{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border-radius:999px;font-size:.8rem;font-weight:700;line-height:1;flex:none}
.dev-title-arrow[data-trend=improving],.dev-change[data-trend=improving] .dev-amount{background:#e1f2e8;color:#1d6b43}
.dev-title-arrow[data-trend=declining],.dev-change[data-trend=declining] .dev-amount{background:#fff1d6;color:#8a4b00}
.dev-list{list-style:none;margin:0;padding:0;display:grid;gap:0}
.dev-list>li{margin:0;padding:0;min-width:0}
.dev-list>li+li{border-top:1px solid var(--line)}
.dashboard-list .dev-row{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;margin:0;padding:8px 6px;border:0;border-radius:8px;background:none;text-align:left;font:inherit;color:inherit;cursor:pointer}
.dashboard-list .dev-row:hover{background:#f3f5f9}
.dashboard-list .dev-row:hover .dev-name{color:var(--accent-text)}
.dashboard-list .dev-row:focus-visible{outline:3px solid var(--focus-ring);outline-offset:-1px}
.dev-who{display:grid;gap:1px;flex:1;min-width:0}
.dev-name{font-size:.9375rem;font-weight:600;color:#202838;overflow-wrap:anywhere}
.dev-meta{display:flex;flex-wrap:wrap;column-gap:8px;font-size:.8125rem;color:var(--muted)}
.dev-team{overflow-wrap:anywhere}
.dev-team::after{content:"·";margin-left:8px}
.dev-rating strong{font-weight:600;color:#2f3c51}
.dev-change{display:grid;justify-items:end;gap:2px;flex:none;text-align:right}
.dev-amount{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:999px;font-size:.875rem;font-weight:700;line-height:1.4;white-space:nowrap}
.dev-arrow{font-weight:700}
.dev-since{font-size:.75rem;color:var(--muted);white-space:nowrap}
.dev-empty{padding:6px 0 2px}
.dev-empty-sub{margin:4px 0 0;font-size:.8125rem;color:var(--muted)}
@media (max-width:420px){.dashboard-list .dev-row{gap:8px;padding:8px 2px}.dev-meta{column-gap:6px}.dev-team::after{margin-left:6px}.dev-since{font-size:.6875rem}}
@media (max-width:359px){.dev-meta{display:grid}.dev-team::after{content:none}}
/* dashboard:development end */
/* wizard:fixes */
/* A link styled as a button (.button-link: "Open form" in Set up your club and on the Waitlist form page, "Open review"): the text is centred vertically in a 44px target at every width (it was inline-block with top/bottom padding, so a stretched flex item kept its text at the top). */
.button-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 16px;line-height:1.2;vertical-align:middle;box-sizing:border-box}
.wiz-actions{align-items:center}
/* /wizard:fixes */

/* dashboard:team-progress */
/* Team selection progress card (teamProgressCard in app.js): summary line, one bordered row per team whose name button is stretched over the whole row
   (click/tap anywhere, one tab stop, focus ring drawn on the row), plain-word status chips, an 8px bar (blue open, green full, red over), a waiting-players
   call to action and a centred empty state. Phone widths wrap rather than scroll. */
.tp-body{padding:16px 18px 18px;min-width:0}
.tp-summary{margin:0 0 12px;font-size:.875rem;line-height:1.45;color:#3d4757;font-weight:500;overflow-wrap:anywhere}
.tp-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.tp-row{position:relative;display:grid;gap:6px;min-height:44px;min-width:0;padding:8px 12px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;transition:border-color .15s,background-color .15s}
.tp-row:hover{border-color:var(--accent-border);background:var(--accent-wash)}
.tp-top{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
.tp-open{flex:1 1 auto;min-width:0;min-height:32px;padding:0;border:0;background:none;border-radius:0;text-align:left;font-size:.9375rem;color:#2f3c51;cursor:pointer}
.tp-open strong{font-weight:600;overflow-wrap:anywhere}
.tp-row:hover .tp-open strong{color:var(--accent-text)}
.tp-open::after{content:"";position:absolute;inset:0;border-radius:8px}
.tp-open:focus-visible{outline:none}
.tp-open:focus-visible::after{outline:3px solid var(--focus-ring);outline-offset:2px}
.tp-chip{flex:none;font-size:.75rem;line-height:1.3;font-weight:600;padding:3px 9px;border-radius:999px;white-space:nowrap;background:#f1f3f7;color:#4d5666}
.tp-chip-review{background:#fff4e0;color:#8a4b00}
.tp-chip-approved{background:#e8f5ee;color:#1d7a4d}
.tp-chip-allocated{background:var(--accent-tint);color:var(--accent-ink)}
.tp-coach{font-size:.8125rem;color:var(--muted);margin-top:-4px;overflow-wrap:anywhere}
.tp-bar{height:8px;background:#edf0f6;border-radius:4px;overflow:hidden}
.tp-bar i{display:block;height:100%;border-radius:4px;background:var(--accent-mid)}
.tp-full .tp-bar i{background:#2e8b57}
.tp-over .tp-bar i{background:#c62828}
.tp-meta{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:.8125rem;color:#5f6876}
.tp-state{font-weight:600;color:#2f3c51}
.tp-full .tp-state{color:#1d7a4d}
.tp-over .tp-state{color:#a3261c}
.tp-waiting{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 12px;margin-top:12px;padding:10px 12px;border-radius:8px;background:var(--accent-wash)}
.tp-waiting p{margin:0;font-size:.875rem;color:#2f3c51}
.tp-cta{min-height:44px;padding:0 14px;border:1px solid var(--accent-border);background:#fff;color:var(--accent-text);font-weight:600;border-radius:8px;font-size:.875rem;cursor:pointer}
.tp-cta:hover{background:var(--accent-tint)}
.tp-empty{text-align:center;padding:14px 4px 4px}
.tp-empty-title{margin:0 0 4px;font-size:1rem;font-weight:600;color:#2f3c51}
.tp-empty p:not(.tp-empty-title){margin:0 0 12px;font-size:.875rem;color:var(--muted)}
.tp-empty-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.tp-empty-actions button{min-height:44px}
@media (max-width:760px){.tp-body{padding:12px 14px 14px}}
@media (max-width:420px){.tp-row{padding:8px 10px 10px}.tp-chip{font-size:.6875rem;padding:3px 7px}.tp-waiting .tp-cta,.tp-empty-actions button{flex:1 1 100%}}
@media (forced-colors:active){.tp-row{border:1px solid CanvasText}.tp-bar{border:1px solid CanvasText}.tp-bar i{forced-color-adjust:none;background:Highlight}.tp-chip{border:1px solid CanvasText}}
/* /dashboard:team-progress */

/* dashboard:next-up — the Next up card and the 'Everything that needs attention' dialog: one calm to-do row each (marker, sentence, '?', short verb button). */
.nu-list{list-style:none;margin:0;padding:0;display:grid}
.nu-row{display:flex;align-items:center;gap:12px;min-height:56px;padding:6px 0;border-top:1px solid var(--line)}
.nu-list>.nu-row:first-child{border-top:0}
.nu-text{position:relative;flex:1 1 auto;min-width:0;padding-left:18px;font-size:.875rem;line-height:20px;color:#2f3c51;overflow-wrap:anywhere}
.nu-mark{position:absolute;left:2px;top:6px;width:8px;height:8px;border-radius:50%;background:#d08a12}
.nu-now .nu-mark{background:#d23a3a}
.nu-later .nu-mark{background:#9aa6bd}
.nu-flag{display:inline-block;margin-right:2px;padding:0 6px;border-radius:999px;background:#fdecec;color:#a8241c;font-size:.75rem;font-weight:650;line-height:18px}
.nu-text .tip-icon{margin-left:6px}
.nu-row .nu-go{flex:none;min-height:44px;min-width:44px;padding:8px 14px;white-space:nowrap;font-size:.8125rem;font-weight:600;color:#26334a}
.nu-row .nu-go:hover{border-color:#b9c4d8}
.nu-all,.dashboard-list .nu-all{display:block;width:100%;min-height:44px;margin-top:2px;border-top:1px solid var(--line);border-radius:0 0 7px 7px;color:var(--accent-text);font-weight:600;text-align:center}
.nu-empty{display:flex;align-items:center;gap:12px;padding:12px 0;color:var(--muted)}
.nu-empty strong{display:block;color:#2f3c51;font-size:.9375rem;font-weight:650}
.nu-tick{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:#e6f4ea;color:#1d6b39;font-weight:700;flex:none}
.nu-sub{margin:0 0 4px}
.nu-group{margin-top:18px}
.nu-group h3{display:flex;align-items:center;gap:8px;padding-bottom:8px;border-bottom:1px solid var(--line);font-size:.8125rem;font-weight:650;color:#3b465a}
.nu-group h3 .nu-mark{position:static;flex:none}
.nu-count{font-size:.75rem;font-weight:550;color:#5f6876;background:#f0f2f6;border-radius:999px;padding:1px 8px}
@media(max-width:360px){.nu-row{flex-wrap:wrap;row-gap:4px;padding:8px 0}.nu-row .nu-go{margin-left:18px}}
@media(forced-colors:active){.nu-mark{background:CanvasText}.nu-flag{border:1px solid CanvasText}}

/* dashboard:squad - the Squad breakdown card (squadPies() in app.js): segmented tabs (role=tablist, 44px, visible focus), then labelled horizontal bars whose numbers are visible text; arrow chips use the player profile's trend colours. Overrides the older pie/pietabs rules for this card only. */
.squadcard .sq-tabs{display:flex;flex-wrap:wrap;gap:6px;padding:14px 18px 0}
.squadcard .sq-tabs button{min-height:44px;min-width:44px;padding:6px 16px;border:1px solid var(--line);border-radius:999px;background:#fff;color:#2c3546;font-size:.875rem;font-weight:600}
.squadcard .sq-tabs button:hover{border-color:#c9d1df;background:#f6f8fb}
.squadcard .sq-tabs button.active,.squadcard .sq-tabs button[aria-selected=true]{background:var(--brand-navy);border-color:var(--brand-navy);color:#fff}
.squadcard .sq-tabs button:focus-visible,.squadcard .sq-panel:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.squadcard .sq-panel{padding:14px 18px 18px;min-width:0}
.squadcard .sq-summary{margin:0 0 12px;font-size:.9375rem;line-height:1.45;color:#2c3546}
.squadcard .sq-summary strong{color:#202838}
.squadcard .sq-rows{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.squadcard .sq-positions{gap:10px}
.squadcard .sq-row{min-width:0}
.squadcard .sq-row-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:5px;font-size:.875rem;color:#2c3546}
.squadcard .sq-label{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;min-width:0;overflow-wrap:anywhere}
.squadcard .sq-num{flex:none;white-space:nowrap;color:#55647c;font-size:.8125rem}
.squadcard .sq-num strong{color:#202838;font-size:.9375rem;font-weight:700}
.squadcard .sq-pct{color:#55647c}
.squadcard .sq-track{height:10px;border-radius:999px;background:#eef1f6;overflow:hidden}
.squadcard .sq-fill{display:block;height:100%;border-radius:999px;background:var(--blue)}
.squadcard .sq-tone-wait .sq-fill{background:#8a94a6}
.squadcard .sq-tone-few .sq-fill{background:#c98a1b}
.squadcard .sq-tone-up .sq-fill{background:#2f9a62}
.squadcard .sq-tone-same .sq-fill{background:#7b8597}
.squadcard .sq-tone-down .sq-fill{background:#c98a1b}
.squadcard .sq-tone-none .sq-fill{background:#c5ccd8}
.squadcard .sq-flag{display:inline-block;padding:1px 8px;border-radius:999px;background:#fff1d6;color:#8a4b00;font-size:.75rem;font-weight:650;line-height:1.5}
.squadcard .sq-arrow{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:999px;background:#e9ecf1;color:#4a5466;font-size:.95rem;font-weight:700;line-height:1;flex:none}
.squadcard .sq-arrow[data-trend=up]{background:#e1f2e8;color:#1d6b43}
.squadcard .sq-arrow[data-trend=down]{background:#fff1d6;color:#8a4b00}
.squadcard .sq-arrow[data-trend=none]{background:#f1f3f6;color:#79818e}
.squadcard .sq-extra{display:flex;align-items:center;gap:6px;margin:14px 0 0;padding-top:12px;border-top:1px solid var(--line);font-size:.875rem;color:#55647c}
.squadcard .sq-extra strong{color:#202838}
.squadcard .sq-empty{padding:6px 0 2px;color:#55647c;font-size:.875rem;line-height:1.45}
.squadcard .sq-empty p{margin:0}
.squadcard .sq-empty .sq-empty-title{margin-bottom:4px;color:#202838;font-weight:650;font-size:.9375rem}
@media (max-width:640px){.squadcard .sq-tabs{padding:12px 14px 0}.squadcard .sq-tabs button{flex:1 1 0;padding:6px 10px}.squadcard .sq-panel{padding:12px 14px 16px}}
@media (max-width:360px){.squadcard .sq-tabs button{font-size:.8125rem;padding:6px 6px}.squadcard .sq-row-head{flex-wrap:wrap}}
/* dashboard:squad end */

/* teambuilder:approval-modal - Send a team for approval: one radio row (44px+) per team with "N of M players · status" and, for teams that can't be sent, the plain reason in brown text. */
.approval-request-form>p{margin:12px 0 0;font-size:.875rem;color:#4b5565}
.approval-request-row .sub{white-space:normal}
.approval-request-row .approval-request-why{display:block;margin-top:2px;color:#7a4b00;font-weight:500}
.approval-request-row.is-disabled input{opacity:.55}
@media (max-width:760px){.approval-request-row{min-height:52px}}

/* header:icon-actions - page title-row actions are 44x44 icon-only buttons; the full label is the aria-label and the shared data-tip tooltip; counts show as a badge; primary keeps the blue fill; one row, no horizontal scroll on phones (all actions shown, so the phone More toggles are not needed) */
.heading .actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.heading .actions .hdr-act{position:relative;flex:none!important;order:0!important;width:44px!important;min-width:44px;height:44px;min-height:44px;padding:0!important;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;line-height:1;grid-column:auto!important}
.heading .actions .hdr-act svg{width:20px;height:20px;flex:none}
.heading .actions .hdr-act:not(.primary){color:#3d4a60}
.heading .actions .hdr-act:not(.primary):not(:disabled):not(.soft-disabled):hover{border-color:#c9d2e2;background:#f4f6fa;color:var(--accent-text)}
.heading .actions .hdr-act.primary:not(:disabled):not(.soft-disabled):hover{filter:brightness(1.08)}
.heading .actions .hdr-act:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.heading .actions .hdr-act.soft-disabled{opacity:.5;cursor:not-allowed}
.hdr-badge{position:absolute;top:-7px;right:-7px;min-width:19px;height:19px;padding:0 5px;border-radius:10px;background:var(--blue);color:var(--on-blue);font-size:.6875rem;font-weight:700;line-height:19px;text-align:center;box-shadow:0 0 0 2px #fff;pointer-events:none}
.hdr-act.primary .hdr-badge{background:#fff;color:var(--accent-text);box-shadow:0 0 0 2px var(--blue)}
.heading .actions .hdr-act.builder-more-btn,.heading .actions .hdr-act.actions-toggle{display:none!important}
.heading .actions .actions-secondary{display:contents!important}
.heading .actions:has(.builder-more-btn) .secondary-act.hdr-act,.heading .actions:has(.builder-more-btn) #saved-selection-views.hdr-act{display:inline-flex}
@media (max-width:760px){
.heading .actions,.heading:has(.actions-toggle) .actions,.heading .actions:has(.builder-more-btn){display:flex!important;flex-wrap:nowrap;width:auto;max-width:100%;gap:6px;grid-template-columns:none}
}
@media (max-width:360px){.heading .actions,.heading:has(.actions-toggle) .actions,.heading .actions:has(.builder-more-btn){gap:4px}}
/* positions:multiselect — staff position chooser (intake-ui.js posPickField). Inline panel: never clipped inside a dialog; 44px rows; full names with the code. */
.pos-pick{margin:18px 0;display:grid;gap:8px;min-width:0}
.pos-pick-wide{grid-column:1/-1;margin:4px 0}
.pos-pick-label{font-size:.875rem;font-weight:500;color:#202838}
.pos-pick-btn{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;padding:6px 40px 6px 12px;position:relative;border:1px solid #cfd6e2;border-radius:8px;background:#fff;color:#202838;font:inherit;font-size:.9375rem;font-weight:500;text-align:left;cursor:pointer}
.pos-pick-btn:hover{border-color:var(--accent-ring)}
.pos-pick-btn:focus-visible{outline:3px solid var(--focus-ring);outline-offset:1px}
.pos-pick .pos-pick-btn[aria-expanded=true],.pos-pick.is-open .pos-pick-btn{background:#fff;color:#202838;border-color:var(--blue);border-bottom-left-radius:0;border-bottom-right-radius:0}
.pos-pick-value{display:flex;flex-wrap:wrap;gap:6px;min-width:0;flex:1 1 auto}
.pos-pick-chip{display:inline-flex;align-items:center;max-width:100%;min-height:26px;padding:2px 10px;border-radius:999px;background:var(--accent-tint);color:var(--accent-ink);font-size:.8125rem;font-weight:600;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pos-pick-more{display:inline-flex;align-items:center;min-height:26px;padding:2px 4px;color:#55647c;font-size:.8125rem;font-weight:600}
.pos-pick-ph{color:#5f6876;font-weight:400}
.pos-pick-caret{position:absolute;right:16px;top:50%;width:8px;height:8px;margin-top:-6px;border-right:2px solid #55647c;border-bottom:2px solid #55647c;transform:rotate(45deg);transition:transform .15s}
.pos-pick.is-open .pos-pick-caret{transform:rotate(-135deg);margin-top:-2px}
.pos-pick-panel{margin:-8px 0 0;padding:4px;border:1px solid var(--blue);border-top:0;border-radius:0 0 8px 8px;background:#fff;display:grid;gap:2px;min-width:0}
.pos-pick-panel[hidden]{display:none}
.pos-pick-note{margin:4px 8px;color:#55647c;font-size:.8125rem}
.pos-pick-opt{display:flex!important;align-items:center;gap:12px;min-height:44px;padding:6px 10px;border-radius:6px;cursor:pointer;font-size:.9375rem}
.pos-pick-opt:hover{background:var(--accent-wash)}
.pos-pick-opt:has(input:checked){background:var(--accent-tint)}
.pos-pick-opt:focus-within{outline:3px solid var(--focus-ring);outline-offset:-3px}
.pos-pick-opt input{width:20px;height:20px;min-width:20px;min-height:20px;margin:0;flex-shrink:0;accent-color:var(--blue)}
.pos-pick-text{display:grid;gap:1px;min-width:0}
.pos-pick-name{font-weight:600;color:#202838;overflow-wrap:anywhere}
.pos-pick-desc,.pos-pick-taken{color:#5f6876;font-size:.8125rem;line-height:1.35;font-weight:400}
.pos-pick-taken[hidden]{display:none}
.pos-pick-opt.is-taken{cursor:default}
.pos-pick-opt.is-taken .pos-pick-name{color:#5f6876}
.pos-pick-opt.is-legacy .pos-pick-desc{color:#8a5a00}
@media (max-width:640px){.pos-pick-btn{font-size:1rem}.pos-pick-chip{max-width:calc(100% - 8px)}.pos-pick-opt{padding:8px 10px}}
/* positions:multiselect end */
/* phone floating add button for the header icon actions */
@media (max-width:760px) and (min-height:501px){.heading .actions #add-entry.hdr-act.primary,.heading .actions #add-season.hdr-act.primary{width:56px!important;min-width:56px;height:56px;min-height:56px;border-radius:50%}.heading .actions #add-entry.hdr-act svg,.heading .actions #add-season.hdr-act svg{width:24px;height:24px}}
/* heading:focus-ring - page titles receive focus after sign-in and navigation (so screen readers announce the page); they are not controls, so no visible ring */
h1[tabindex="-1"]:focus,h2[tabindex="-1"]:focus,main[tabindex="-1"]:focus{outline:none}
/* dashboard:merge-analytics - 'More insights' disclosure (was the Analytics page; closed by default), capped scroll regions for long Dashboard lists (thin visible scrollbar, keyboard focus ring, bottom fade) and the Previous / Next pager used past 50 rows. */
.dash-more{margin-top:22px;border:1px solid var(--line);border-radius:10px;background:#fff}
.dash-more>summary{list-style:none;display:flex;align-items:center;gap:6px 14px;flex-wrap:wrap;min-height:56px;padding:12px 48px 12px 20px;cursor:pointer;position:relative;border-radius:10px}
.dash-more>summary::-webkit-details-marker{display:none}
.dash-more>summary::after{content:"";position:absolute;right:22px;top:50%;width:9px;height:9px;margin-top:-7px;border-right:2px solid #55647c;border-bottom:2px solid #55647c;transform:rotate(45deg);transition:transform .15s}
.dash-more[open]>summary::after{transform:rotate(-135deg);margin-top:-2px}
.dash-more>summary:hover{background:var(--accent-wash)}
.dash-more>summary:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.dash-more-title{font-size:1rem;font-weight:650;color:#202838}
.dash-more>summary .sub{margin:0;font-size:.8125rem;color:#5f6876}
.dash-more-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:0 16px 16px}
.dash-more-grid .di-wide{grid-column:1/-1}
.di-card .analytics-body{padding:8px 20px 18px}
.di-card .insight-row{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:6px 0;font-size:.875rem;color:#3d4757}
.di-card .insight-row strong{color:#202838}
.di-cta{margin-top:12px;width:100%}
.di-empty{padding:16px 20px 20px}
.di-skills{padding-top:4px}
.di-table td,.di-table th{padding:10px 16px}
.dash-scroll{max-height:440px;overflow:auto;overscroll-behavior:contain;padding-bottom:22px;scrollbar-width:thin;scrollbar-color:#b4bdcc transparent}
.dash-scroll::-webkit-scrollbar{width:8px;height:8px}
.dash-scroll::-webkit-scrollbar-thumb{background:#b4bdcc;border-radius:999px}
.dash-scroll::-webkit-scrollbar-track{background:transparent}
.dash-scroll::after{content:"";display:block;position:sticky;bottom:-22px;height:28px;margin-top:-6px;background:linear-gradient(rgba(255,255,255,0),#fff 85%);pointer-events:none}
.dash-scroll:focus-visible{outline:3px solid var(--focus-ring);outline-offset:-3px;border-radius:8px}
.tp-body .dash-scroll{margin:0 -6px;padding:0 6px 22px}
.squadcard .sq-panel{max-height:520px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#b4bdcc transparent}
.dash-pager{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0 0;font-size:.875rem;color:#3d4757}
.di-card .dash-pager{padding:10px 16px 14px}
.dash-pager button{min-height:44px;min-width:88px}
.dash-pager-at{font-weight:600}
@media (max-width:760px){.dash-more-grid{grid-template-columns:1fr;padding:0 10px 10px;gap:12px}.dash-more>summary{padding:12px 44px 12px 16px}.dash-scroll{max-height:380px}}
/* dashboard:merge-analytics end */
/* lists:scroll-paginate - long lists stay manageable at any club size. Full-width tables (players, waitlist, coaches, staff, invitations, seasons, scheduled removals) use the shared pager from app.js listPager(): 'Showing 1–25 of 132', 44px Previous/Next, shown only when there is more than one page. In-card lists (Player pool, Workspace messages) scroll inside the card with a thin visible scrollbar and a soft top/bottom fade that only appears when there is more to scroll; the Workspace messages card only scrolls from 640px so phones use the page scroll (the pool keeps its existing fixed-height scroller and collapse toggle). */
.list-pager{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;padding:12px 20px 16px;border-top:1px solid var(--line)}
.list-pager-status{margin:0;color:var(--muted);font-size:14px}
.list-pager-buttons{display:flex;align-items:center;gap:8px}
.list-pager-btn{min-height:44px;min-width:44px;padding:0 16px;border:1px solid var(--line);border-radius:8px;background:white;color:#202838;font:inherit;font-size:14px;font-weight:600;cursor:pointer}
.list-pager-btn:not(:disabled):hover{border-color:var(--blue);color:var(--accent-text)}
.list-pager-btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.list-pager-page{font-size:14px;color:var(--muted);white-space:nowrap}
dialog .list-pager{padding:12px 0 0;margin-top:12px}
@media (max-width:639px){.list-pager{flex-direction:column;align-items:stretch;padding:12px 16px 16px}.list-pager-buttons{justify-content:space-between}.list-pager-btn{flex:1}}
.list-scroll{scrollbar-width:thin;scrollbar-color:#b8c0cc transparent;background:linear-gradient(white 30%,rgba(255,255,255,0)) top/100% 28px no-repeat local,linear-gradient(rgba(255,255,255,0),white 70%) bottom/100% 28px no-repeat local,radial-gradient(farthest-side at 50% 0,rgba(32,40,56,.12),rgba(32,40,56,0)) top/100% 10px no-repeat scroll,radial-gradient(farthest-side at 50% 100%,rgba(32,40,56,.16),rgba(32,40,56,0)) bottom/100% 12px no-repeat scroll;background-color:white}
.list-scroll::-webkit-scrollbar{width:8px;height:8px}.list-scroll::-webkit-scrollbar-thumb{background:#b8c0cc;border-radius:8px}.list-scroll::-webkit-scrollbar-track{background:transparent}
.list-scroll:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}
@media (min-width:640px){.support-inbox-list{max-height:min(60vh,520px);overflow-y:auto;overscroll-behavior:contain}}
.tablewrap[role="region"]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}
/* lists:scroll-paginate end */
/* dashboard:cards-tidy - every Dashboard card header is the same height (a header with a 44px 'See all' button sets it), the insight cards sit straight on the page in the same grid spacing (no accordion), and the 'See all' team list dialog */
.dashboard-grid>.panel>.panel-head,.dash-insights>.panel>.panel-head{min-height:79px}
.dash-more-grid.dash-insights{margin-top:22px;padding:0;gap:22px}
.tp-list-all{margin:0}
@media (max-width:760px){.dashboard-grid>.panel>.panel-head,.dash-insights>.panel>.panel-head{min-height:0}.dash-more-grid.dash-insights{padding:0;gap:16px;margin-top:16px}}
/* dashboard:ratings-menu - Team ratings: a narrow last column with the same ⋮ popup menu as Team builder team cards */
.di-table th.di-menu-cell,.di-table td.di-menu-cell{width:56px;padding:4px 10px;text-align:right}
.di-table td.di-menu-cell .card-menu-btn{min-width:44px;min-height:44px}
@media (max-width:760px){.di-table td.di-menu-cell{width:auto;text-align:right}}

/* waitlist:private */
/* .wl-hint sets display:block, which beat the hidden attribute on the "no contact" warning; keep hidden hints hidden. */
.wl-hint[hidden]{display:none}
/* waitlist:private end */
/* reviews:awards */
/* Season award nominations (optional): the coach page section on the last player's page (one column on phones, 44px selects), the staff Reviews block, the submitted assessment and the player profile line. */
.rv-awards{margin:0 0 12px;padding:14px 16px 12px}
.coach-review-shell main>.rv-awards{order:2}
.rv-awards h2{margin:0 0 4px;font-size:1.125rem}
.rv-awards-help{margin:0 0 12px;font-size:.9375rem;line-height:1.45;color:#3b4658}
.rv-awards-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}
.rv-award{display:flex;flex-direction:column;gap:6px;min-width:0}
.rv-award label{font-weight:600;color:#1f2937}
.rv-award select{width:100%;max-width:100%;min-width:0;min-height:44px;font-size:16px}
.rv-awards-state{min-height:1.4em;margin:10px 0 0;font-size:.875rem;color:#4a5466}
.rv-aw-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;margin:8px 0 0}
.rv-aw-list>div{min-width:0}
.rv-aw-list dt{font-size:.8125rem;color:#4a5466}
.rv-aw-list dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.rv-aw-none{margin:6px 0 0;color:#5f6876}
.rv-awards-staff{margin-top:16px;padding:16px 18px}
.rv-awards-staff h2{margin:0 0 4px;font-size:1.125rem}
.rv-aw-teams{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-top:12px}
.rv-aw-team{min-width:0;padding:12px 14px;border:1px solid var(--line);border-radius:10px}
.rv-aw-team h3{margin:0;font-size:1rem;overflow-wrap:anywhere}
.rv-aw-coach{margin:2px 0 0;font-size:.8125rem;color:#4a5466;overflow-wrap:anywhere}
.rv-awards-sum ul{margin:6px 0 10px;padding-left:20px}
#coach-go-awards{min-height:44px}
.pim-awards{margin:10px 0 0;font-size:.875rem;line-height:1.6;overflow-wrap:anywhere}
.pim-awards .pim-award{margin-right:4px;font-weight:600}
@media (max-width:640px){.rv-awards-grid,.rv-aw-list,.rv-aw-teams{grid-template-columns:1fr}.rv-awards{padding:12px 10px}}
@media (max-height:500px) and (orientation:landscape) and (min-width:560px) and (max-width:900px){.coach-review-shell main>.rv-awards{grid-column:2;order:0}}
/* reviews:awards end */
/* sport-editor:layout - Terminology as grouped rows (meaning left, singular / plural right) and Skills as numbered cards with move / remove on the right. Phones: one column, labels above inputs. */
.sped-terms{display:grid;gap:22px;margin:14px 0 4px}
.sped-tgroup{display:grid;gap:0;min-width:0;border:1px solid #e7eaf0;border-radius:10px;background:#fff;overflow:hidden}
.sped-tgroup-h{margin:0;padding:10px 16px;font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#59677c;background:#f7f9fc;border-bottom:1px solid #e7eaf0}
.sped-term{display:grid;grid-template-columns:minmax(170px,230px) minmax(0,1fr);gap:12px 20px;align-items:start;padding:14px 16px;border-top:1px solid #eef1f6}
.sped-tgroup-h+.sped-term{border-top:0}
.sped-term-name{display:flex;align-items:center;gap:6px;min-height:44px;padding-top:22px;font-size:.9375rem;font-weight:600;color:#1f2937;line-height:1.35;overflow-wrap:anywhere}
.sped-term-single .sped-term-name{padding-top:0}
.sped-term-inputs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;min-width:0}
.sped-term-single .sped-term-inputs{grid-template-columns:minmax(0,1fr)}
.sped-term-field{display:grid;gap:0;align-content:start;min-width:0}
.sped-term-field .sped-field{gap:6px}
.sped .tip-icon{min-height:0;width:18px;height:18px;padding:0;margin-left:2px}
.sped-term-sub{font-size:.8125rem;font-weight:500;color:#59677c}
.sped-term-field .sped-hint{margin:6px 0 0}
.sped-field-error{display:block;margin:6px 0 0;font-size:.8125rem;line-height:1.45;color:#8f1f14;font-weight:500}
.sped input[aria-invalid=true]{border-color:#ad4141;box-shadow:0 0 0 1px #ad4141}
.sped-terms+.sped-radio{margin-top:20px}
.sped-skills-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 16px;margin:12px 0 10px}
.sped-count{margin:0;font-size:.875rem;font-weight:700;color:#1f2937}
.sped-lock-note{flex:1 1 280px;margin:0;padding:8px 12px;border-left:3px solid #c98a2b;background:#fdf8ef;color:#6b4513;font-size:.8125rem;line-height:1.5;border-radius:0 6px 6px 0}
.sped-skill-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.sped-skill-card{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:12px 16px;align-items:start;padding:14px 16px;border:1px solid #e7eaf0;border-radius:10px;background:#fcfdff}
.sped-skill-num{display:grid;place-items:center;width:28px;height:28px;margin-top:24px;border-radius:50%;background:var(--accent-tint);color:var(--accent-text);font-size:.8125rem;font-weight:700}
.sped-skill-fields{display:grid;grid-template-columns:minmax(150px,1fr) minmax(0,2fr);gap:12px 16px;min-width:0}
.sped-skill-name,.sped-skill-hint{display:grid;align-content:start;min-width:0}
.sped-skill-fields .sped-field,.sped-term-field .sped-field{align-content:start}
.sped-skill-tools{display:flex;gap:6px;align-items:center;padding-top:24px}
.sped .sped-move{min-width:44px;min-height:44px;padding:0 10px;font-size:1.05rem;line-height:1}
.sped .sped-move:disabled{opacity:.4}
.sped-empty{padding:16px;border:1px dashed #cfd6e2;border-radius:10px;color:#59677c;font-size:.875rem;text-align:center}
.sped-skill-foot{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:14px}
.sped-skill-foot .sped-hint{margin:0}
@media (max-width:760px){.sped-skill-fields{grid-template-columns:minmax(0,1fr)}}
@media (max-width:560px){
  .sped-terms{gap:18px}
  .sped-term{grid-template-columns:minmax(0,1fr);gap:8px;padding:14px 12px}
  .sped-term-name{min-height:0;padding-top:0}
  .sped-term-inputs{grid-template-columns:minmax(0,1fr);gap:12px}
  .sped-skill-card{grid-template-columns:auto minmax(0,1fr);grid-template-areas:"num tools" "fields fields";align-items:center;padding:12px}
  .sped-skill-num{grid-area:num;margin-top:0}
  .sped-skill-fields{grid-area:fields}
  .sped-skill-tools{grid-area:tools;padding-top:0;justify-content:flex-end}
  .sped-skill-tools .sped-remove{width:auto;margin-left:auto}
}
/* sport-editor:layout end */
/* sport-editor:tidy - a field with helper text is one grid cell (.sped-fwrap) so hints never take the next column; explanations in Rating scale, Ages and the team-size lock are ? tooltips beside
   the label or heading (.sped-label-row / .sped-section-head); number pairs use compact columns; the rating steps are one row of five from tablet width up and 2-3 columns on phones. */
.sped-fwrap{display:grid;align-content:start;min-width:0}
.sped-fwrap.wide{grid-column:1/-1}
.sped-grid>.sped-fwrap>.sped-hint,.sped-grid>.sped-fwrap>.sped-why{margin:6px 0 0}
.sped-label-row,.sped-section-head,.sped-steps-head{display:flex;align-items:center;gap:6px;min-width:0}
.sped-label-row{margin-bottom:6px;font-size:.875rem;font-weight:500}
.sped .sped-grid{align-items:start}
.sped-section-head{margin:0 0 6px}.sped-section-head h3{margin:0}
.sped-steps-head{margin:18px 0 0;font-size:.875rem;font-weight:600;color:#1f2937}
.sped-steps-head+.sped-grid{margin-top:8px}
.sped-grid.sped-grid-num{grid-template-columns:repeat(auto-fill,minmax(160px,220px))}
.sped-grid.sped-steps{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.sped-steps .sped-field{font-weight:400;color:#59677c;font-size:.8125rem}
@media (max-width:560px){
  .sped-grid.sped-grid-num{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sped-grid.sped-grid-num>:only-child{grid-column:1/-1}
  .sped-grid.sped-steps{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}
}
/* sport-editor:tidy end */

/* org:tidy - Organisation page polish. Subscription status strip: the facts (Pilot ends, Time left ...) sit vertically centred against the status text, each label centred over its value; the status badge (PILOT ...) centres its capitals with symmetric padding (text-box trims the font's built-in space above the capitals; browsers without text-box get 3px/1px padding, measured to centre the capitals of DM Sans at this size). Workspace settings: the words beside each switch and the row descriptions live in the row's ? tooltip; each switch keeps its full wording as a visually hidden accessible name. */
.org-stack .plan-status-facts{align-self:center;align-items:stretch}
.org-stack .plan-status-facts>div{display:flex;flex-direction:column;justify-content:center;align-items:flex-start}
.org-stack .plan-status-facts dt{line-height:1.3}
.org-stack .plan-status-facts dd{line-height:1.3}
.org-stack .plan-status-tag span{display:inline-flex;align-items:center;padding:3px 9px 1px}
@supports (text-box:trim-both cap alphabetic){.org-stack .plan-status-tag span{display:inline-block;text-box:trim-both cap alphabetic;padding:7px 9px}}
.org-settings-list .org-row-text:not(:has(.org-row-desc,.org-chips)){display:flex;align-items:center;min-height:44px}
.org-settings-list .org-switch{gap:10px}
@media (max-width:760px){.org-settings-list .org-row:has(.org-switch){grid-template-columns:minmax(0,1fr) auto}.org-settings-list .org-row:has(.org-switch) .org-row-control{justify-content:flex-end}.org-settings-list .org-switch-state{order:2}.org-settings-list .org-switch-track{order:3}}
/* org:tidy end */

/* staff:coach-tables - Coaches table without the Season workload column (stacked labels shift left); Staff page coach-link panel intro/footer padding and row menu */
@media (max-width:1024px){.rv-coaches td:nth-child(5)::before{content:"Coach of"}.rv-coaches td:nth-child(6)::before{content:"Manager of"}.rv-coaches td:nth-child(5){grid-column:auto}.rv-coaches td:nth-child(7)::before{content:none}.rv-coaches td:nth-child(6) .teampick-menu{left:auto;right:0}}
.coach-links .panel-head{flex-wrap:wrap;row-gap:4px}.coach-links .panel-head .coach-links-intro{flex:1 1 100%;margin:0;padding:0;font-size:14px;line-height:1.5;color:var(--muted)}
.coach-links .coach-links-foot{margin:0;padding:12px 20px 16px;border-top:1px solid var(--line);font-size:14px;line-height:1.5;color:var(--muted)}
.coach-links .panel-head+.coach-links-foot{border-top:0}
.coach-links-table th:last-child,.coach-links-table td.stack-menu{width:1%;white-space:nowrap;padding-left:8px;padding-right:12px;text-align:right}
.coach-links .card-menu-btn{min-height:44px;min-width:44px}
.coach-links .card-menu button{min-height:44px}
@media (max-width:640px){.coach-links .coach-links-foot{padding:12px 16px 16px}.coach-links-table td.stack-menu{width:auto;padding:0}}
/* staff:coach-tables end */
/* reviews:timeline */
.rv-head{min-height:79px;box-sizing:border-box;display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line)}
.rv-head h2,.rv-head h3{flex:1;min-width:0;margin:0;padding:0;line-height:1.3;overflow-wrap:anywhere}
.rv-head h2{font-size:1.0625rem}
.rv-head h3{font-size:1rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rv-head .tag{flex:none;white-space:nowrap;font-size:.8125rem;padding:4px 8px;border-radius:999px}
.rv-head .rowmenu{flex:none;margin-right:-8px}
.rv-head-count{background:#f1f3f7;color:#4a5466}
.rv-status-none{background:#f1f3f7;color:#4a5466}
.rv-status-live{background:color-mix(in srgb,var(--blue) 10%,#fff);color:var(--accent-ink)}
.rv-status-ok{background:#dcf5e5;color:#14532d}
.rv-status-warn{background:#fdf0d5;color:#7a3e00}
.rv-status-bad{background:#fde8e6;color:#a1271b}
.rv-prereqs{margin:0 0 16px}
.rv-prereqs .rv-prereq-head{padding:12px 16px 14px}
.rv-prereqs .rv-prereq-head p:first-child{margin-top:0}
.rv-list{padding:0}
.rv-view-only{margin:0;padding:0 16px 4px;font-size:.875rem;color:#4a5466}
.rv-cards{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;padding:4px 12px 12px}
.rv-card{margin:0}
.rv-card.rv-tone-warn{border-left:4px solid #b45309}
.rv-card.rv-tone-bad{border-left:4px solid #b42318}
.rv-card-body{padding:12px 16px 14px}
.rv-meta{display:flex;flex-wrap:wrap;gap:4px 18px;margin:0 0 14px;font-size:.875rem;color:#4a5466}
.rv-card-checks{margin:0 0 14px;padding:10px 12px;border:1px dashed #cfd5df;border-radius:8px}
.rv-checks-title{margin:0 0 8px;font-weight:600;font-size:.875rem;color:#1f2937}
.rv-tl{list-style:none;margin:0;padding:0;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);grid-template-rows:auto auto auto;column-gap:8px;row-gap:6px}
.rv-step{position:relative;display:grid;grid-row:span 3;grid-template-rows:subgrid;justify-items:center;text-align:center;min-width:0}
.rv-step::before{content:"";position:absolute;top:13px;right:50%;width:calc(100% + 8px);height:2px;background:#d5dae3}
.rv-step:first-child::before{display:none}
.rv-step.is-done+.rv-step::before{background:var(--blue)}
.rv-dot{position:relative;z-index:1;width:28px;height:28px;box-sizing:border-box;border-radius:50%;border:2px solid #c3c9d4;background:#fff;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.875rem;line-height:1}
.is-done .rv-dot{background:var(--blue);border-color:var(--blue);color:var(--on-blue)}
.is-current .rv-dot{border-color:var(--blue);box-shadow:0 0 0 4px color-mix(in srgb,var(--blue) 16%,transparent)}
.is-current .rv-dot::after{content:"";width:10px;height:10px;border-radius:50%;background:var(--blue)}
.is-warn .rv-dot{background:#b45309;border-color:#b45309}
.is-bad .rv-dot{background:#b42318;border-color:#b42318}
.rv-step-text{display:flex;flex-direction:column;gap:2px;min-width:0;max-width:100%}
.rv-step-label{font-weight:600;font-size:.875rem;color:#1f2937;overflow-wrap:anywhere}
.is-todo .rv-step-label{font-weight:500;color:#5f6876}
.is-warn .rv-step-label{color:#8a4600}
.is-bad .rv-step-label{color:#a1271b}
.rv-step-detail{font-size:.8125rem;color:#4a5466;overflow-wrap:anywhere}
.rv-step-acts{display:flex;flex-wrap:wrap;justify-content:center;align-self:start;gap:6px}
.rv-step-acts:empty{display:none}
.rv-act-wrap{display:inline-flex}
.rv-tl .rv-act{width:44px;height:44px;min-width:44px;min-height:44px;flex:none;order:0;padding:0;border-radius:10px}
.rv-tl .rv-act:disabled{pointer-events:none;opacity:.5}
.rv-card-why{margin:12px 0 0;font-size:.8125rem;color:#4a5466}
.rv-awards-staff{padding:0}
.rv-aw-body{padding:12px 16px 16px}
.rv-aw-body>.sub{margin:0}
.rv-aw-teams{grid-auto-rows:auto}
.rv-aw-team{display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:0;padding:0;overflow:hidden}
.rv-aw-head{min-height:79px;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:10px 14px;border-bottom:1px solid var(--line)}
.rv-aw-team>.rv-aw-list,.rv-aw-team>.rv-aw-none{margin:0;padding:10px 14px 12px}
@media (max-width:639px){.rv-head{min-height:64px;padding:10px 12px}
.rv-cards{padding:4px 8px 8px;gap:10px}
.rv-card-body{padding:12px 12px 12px}
.rv-tl{grid-auto-flow:row;grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-auto-columns:auto;row-gap:0}
.rv-step{grid-row:auto;grid-template-rows:none;grid-template-columns:28px minmax(0,1fr);column-gap:12px;row-gap:6px;justify-items:start;text-align:left;padding-bottom:16px}
.rv-step:last-child{padding-bottom:0}
.rv-step .rv-dot{grid-column:1;grid-row:1/span 2}
.rv-step-text{grid-column:2;padding-top:4px}
.rv-step-acts{grid-column:2;justify-content:flex-start}
.rv-step::before{display:none}
.rv-step:not(:last-child)::after{content:"";position:absolute;left:13px;top:30px;bottom:2px;width:2px;background:#d5dae3}
.rv-step.is-done:not(:last-child)::after{background:var(--blue)}
.rv-aw-head{min-height:64px;padding:8px 14px}}
/* reviews:timeline end */
/* reviews:checklist-accordion - the per-team "Before the link can be created" checklist is a collapsed <details> accordion with an amber "N steps missing" badge; each fix is a 44px icon button in its step's row, right-aligned */
.rv-card-checks.rv-acc{padding:0 12px}
.rv-acc>.rv-acc-sum{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;min-height:44px;margin:0 -12px;padding:4px 12px;border-radius:8px}
.rv-acc>.rv-acc-sum::-webkit-details-marker{display:none}
.rv-acc>.rv-acc-sum:hover{background:#f5f7fa}
.rv-acc>.rv-acc-sum:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.rv-acc .rv-checks-title{margin:0;flex:1 1 auto;min-width:0}
.rv-acc .rv-acc-badge{flex:none;margin:0;background:#fef3c7;color:#8a4600;border:1px solid #f5d48a;font-size:.75rem;font-weight:600;white-space:nowrap}
.rv-acc .rv-acc-chev{flex:none;width:8px;height:8px;margin:0 4px 3px 2px;border-right:2px solid #5f6876;border-bottom:2px solid #5f6876;transform:rotate(45deg);transition:transform .15s}
.rv-acc[open] .rv-acc-chev{transform:rotate(-135deg);margin-bottom:-3px}
.rv-acc[open]>.rv-checks{padding:4px 0 10px;border-top:1px solid #e4e8ef}
.rv-acc[open]>.rv-acc-sum{margin-bottom:6px}
.rv-acc .rv-checks li{flex-wrap:nowrap;min-height:44px}
.rv-acc .rv-check-mark{flex:none}
.rv-acc .rv-check-text{flex:1 1 auto}
.rv-acc .rv-check-text .rv-why{display:block;margin-top:2px;font-size:.8125rem}
.rv-acc .rv-act-wrap{flex:none;margin-left:auto}
.rv-checks .rv-act{width:44px;height:44px;min-width:44px;min-height:44px;flex:none;padding:0;border-radius:10px}
@media (prefers-reduced-motion:reduce){.rv-acc .rv-acc-chev{transition:none}}
/* reviews:checklist-accordion end */
/* headers:pages-2 - card headings + header padding on Waitlist, Seasons, Coaches, Staff, Organisation, Support, Account match the Dashboard card header (.panel>.panel-head, h2, 20px; 12px 14px under 760px). Scoped: no global .panel-head change. */
.org-stack>.panel>.panel-head,.org-stack>.panel>details>summary.panel-head{padding:20px}
.org-stack>.panel>.panel-head h2,.org-stack>.panel>details>summary.panel-head h2{font-size:.9375rem}
.danger-zone>details>summary.panel-head{flex-wrap:nowrap;min-height:44px;border-bottom:0}.danger-zone>details[open]>summary.panel-head{border-bottom:1px solid var(--line)}.danger-zone>details>summary.panel-head>.sub{flex:0 1 auto;margin:0}
@media (min-width:801px){.support-grid>.panel>.panel-head{min-height:79px}}
@media (max-width:760px){.org-stack>.panel>.panel-head,.org-stack>.panel>details>summary.panel-head{padding:12px 14px}}
/* headers:pages-2 end */
/* headers:pages-1 - Dashboard / Players / Team builder / Approvals: every card header matches the Dashboard standard (20px; 12px 14px at 760px and below; equal 79px min-height for side-by-side cards on wider screens) */
.dir-panel>.panel-head,.approvals-panel>.panel-head,.workspace>aside.panel>.panel-head,.workspace .teams>.teams-empty>.panel-head{padding:20px}
.workspace .teams>.team>.team-title{padding:20px}
.workspace .teams>.teams-empty{grid-column:1/-1}
.workspace .teams>.team>.team-title>.team-drag,.workspace .teams>.team>.team-title .team-toggle,.workspace .teams>.team>.team-title>.actions{margin-top:-6px;margin-bottom:-6px}
.workspace .teams>.team>.team-title>.actions{margin-right:-12px}
@media (min-width:761px){.dir-panel>.panel-head,.approvals-panel>.panel-head,.workspace>.panel>.panel-head,.workspace .teams>.panel>.panel-head,.workspace .teams>.team>.team-title{min-height:79px}}
@media (max-width:760px){.dir-panel>.panel-head,.approvals-panel>.panel-head,.workspace>aside.panel>.panel-head,.workspace .teams>.teams-empty>.panel-head,.workspace .teams>.team>.team-title{padding:12px 14px}.workspace .teams>.team>.team-title>.actions{margin-right:-8px}}
/* headers:pages-1 end */
/* waitlist:polish */
.wl-org{display:flex;align-items:center;gap:10px;min-width:0}
.wl-org .auth-eyebrow{overflow-wrap:anywhere}
.wl-avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-weight:700;letter-spacing:.5px;flex-shrink:0;line-height:1;user-select:none}
.wl-avatar-sm{width:32px;height:32px;font-size:.75rem}
.wl-avatar-lg{width:72px;height:72px;font-size:1.5rem;margin:0 auto 16px;box-shadow:0 0 0 4px #fff,0 0 0 5px #e1e6ef}
.wl-soon{background:#fff;border:1px solid var(--line);border-radius:14px;padding:36px 32px 28px;text-align:center;max-width:560px;margin:8px auto 0;box-shadow:0 1px 2px rgba(6,18,31,.04)}
.wl-soon>.auth-eyebrow{display:block}
.wl-soon h1{margin:8px 0 6px;font-size:1.6rem;line-height:1.25;overflow-wrap:anywhere}
.wl-soon-sub{display:inline-block;margin:4px 0 0;padding:4px 12px;border-radius:999px;background:var(--accent-tint);color:#4b5a78;font-size:.8125rem}
.wl-soon-body{text-align:left;margin:22px 0 0;display:grid;gap:12px}
.wl-soon-body p{color:#4f596a;font-size:.9375rem;line-height:1.6}
.wl-soon-body .wl-soon-when{background:var(--accent-wash);border:1px solid var(--accent-border);border-radius:10px;padding:10px 14px;display:flex;flex-wrap:wrap;gap:2px 8px;color:#6b7587}
.wl-soon-when strong{color:var(--accent-ink);font-weight:600}
.wl-soon-body .wl-soon-safe{font-size:.8125rem;color:#6b7587}
.wl-soon .wl-contact{text-align:left;margin-top:18px;padding-top:16px;border-top:1px solid var(--line);overflow-wrap:anywhere}
.wl-soon .wl-find{text-align:left;margin-top:10px}
.wl-soon .wl-find a{display:inline-flex;align-items:center;min-height:44px}
@media(max-width:600px){.wl-soon{padding:26px 18px 18px;border-radius:12px}.wl-avatar-lg{width:64px;height:64px;font-size:1.35rem}.wl-soon h1{font-size:1.4rem}}
.wl-saved{margin:14px 0}
.wl-mgr-note{margin-top:8px}
.wl-settings{min-width:0}
.wl-set-sec{border-top:1px solid var(--line);margin-top:20px;padding-top:18px;min-width:0}
.wl-set-sec:first-child{border-top:0;margin-top:14px;padding-top:0}
.wl-set-h{font-size:.9375rem;margin:0 0 12px;color:#202838}
.wl-set-hrow{display:flex;align-items:center;gap:4px;margin:0 0 12px}
.wl-set-hrow .wl-set-h{margin:0}
.wl-settings .wl-state{margin:0 0 4px}
.wl-set-field{margin:14px 0 0;min-width:0}
.wl-set-lab{display:flex;align-items:center;gap:4px;margin-bottom:8px;font-size:.875rem}
.wl-set-field textarea,.wl-set-field input{width:100%;max-width:100%}
.wl-set-check{display:flex;align-items:center;flex-wrap:wrap;gap:2px;margin-top:14px}
.wl-set-check .sample-choice{margin:0}
.wl-set-link{margin-top:14px;font-size:.875rem}
.wl-set-link input{display:block;width:100%;margin:8px 0 10px}
.wl-set-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
/* header:icon-buttons - waitlist form: compact status line, unsaved-change note, stage reason, Heja default badge */
.wl-settings .wl-state-line{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;margin:0 0 4px;font-size:.875rem;color:#344563}
.wl-state-dot{width:8px;height:8px;border-radius:50%;background:var(--blue);flex:none}
.wl-state-line.is-private .wl-state-dot{background:#b26a00}
.wl-state-line.is-open .wl-state-dot{background:#1f8a4c}
.wl-state-pending{margin:6px 0 0;font-size:.8125rem;font-weight:600;color:#7a5200}
.wl-state-pending:empty{display:none}
.wl-settings #wl-private-reason{margin-top:8px;padding:6px 10px;font-size:.8125rem}
.wl-decl-default{margin-left:8px;padding:2px 8px;border-radius:999px;font-size:.75rem;font-weight:600;color:var(--accent-text);background:var(--accent-tint)}
/* header:icon-buttons - dialog header icon buttons: a link styled like the buttons, a 44px hit area, the private toggle's pressed and unavailable states */
.modal-actions .icon-btn{min-width:40px;min-height:40px}
@media (pointer:fine){.modal-actions #close{min-width:40px;min-height:40px}}
.modal-actions a.icon-btn{border:1px solid var(--line);border-radius:7px;background:#fff;color:inherit;text-decoration:none}
.modal-actions a.icon-btn:hover{background:var(--accent-tint);border-color:#c6cfdf}
.modal-actions .icon-btn:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.modal-actions .wl-private-toggle[aria-disabled=true]{opacity:.55;cursor:not-allowed}
/* header:icon-buttons - decisions moved from the header to the footer: extra (non-main) decisions look like Cancel; destructive ones keep the red */
.dialog-footer .dialog-alt{min-height:44px;min-width:100px;padding:0 18px;border-radius:8px;background:#fff;border:1px solid #cfd6e3;color:#344563;font-weight:600;font-size:.9375rem;cursor:pointer}
.dialog-footer .dialog-alt.danger-action{color:#a12323;border-color:#e2b4b4}
.dialog-footer .dialog-alt:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
@media (max-width:760px){.dialog-footer .dialog-alt{flex:1;min-height:48px}}
.wl-set-warn{margin-top:10px;padding:8px 12px;border-radius:8px;background:#fff7e6;color:#7a5200}
.wl-settings .wl-private-note{margin-top:8px}
.wl-settings .wl-wording{margin:0 0 4px}
.wl-settings fieldset.wl-contact{margin-top:18px!important}
.wl-settings .wl-contact legend{display:flex;align-items:center;gap:2px}
.wl-set-questions .wl-chat-settings{margin-top:0}
.wl-settings+.wl-pos-settings{margin-top:14px}
.wl-set-retention{margin-top:20px}
/* waitlist:polish end */
/* reviews:team-accordion - each team on the Team reviews card is a <details> accordion; the <summary> is the fixed-height header row (name + muted coach/players label on one line, status chip, chevron); the ⋮ menu sits outside the summary, absolutely placed in the same row */
.rv-card{--rv-sum-h:79px;position:relative;overflow:visible}
.rv-team>.rv-team-sum{height:var(--rv-sum-h);min-height:0;box-sizing:border-box;list-style:none;cursor:pointer;flex-wrap:nowrap;overflow:hidden;border-bottom:0;border-radius:inherit}
.rv-team[open]>.rv-team-sum{border-bottom:1px solid var(--line);border-bottom-left-radius:0;border-bottom-right-radius:0}
.rv-team>.rv-team-sum::-webkit-details-marker{display:none}
.rv-team>.rv-team-sum::marker{content:""}
.rv-team>.rv-team-sum:hover{background:#f8f9fb}
.rv-team>.rv-team-sum:focus-visible{outline:3px solid var(--focus-ring);outline-offset:-3px}
.rv-team-sum .rv-team-title{display:flex;align-items:baseline;gap:10px;min-width:0;white-space:nowrap;overflow:hidden;-webkit-line-clamp:unset}
.rv-team-name{flex:0 1 auto;min-width:3ch;overflow:hidden;text-overflow:ellipsis}
.rv-team-meta{flex:0 4 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;font-weight:400;font-size:.8125rem;color:#5f6876}
.rv-team-slot{flex:none;width:44px;height:44px}
.rv-team-chev{flex:none;width:8px;height:8px;margin:0 4px 3px 2px;border-right:2px solid #5f6876;border-bottom:2px solid #5f6876;transform:rotate(45deg);transition:transform .15s}
.rv-team[open] .rv-team-sum .rv-team-chev{transform:rotate(-135deg);margin-bottom:-3px}
.rv-card>.rv-team-menu{position:absolute;top:calc((var(--rv-sum-h) - 44px)/2);right:40px;margin:0;z-index:2}
.rv-team-menu>.card-menu-btn{width:44px;height:44px;padding:0}
.rv-team>.rv-card-body>.rv-card-checks{margin:14px 0 0}
@media (max-width:760px){.rv-card{--rv-sum-h:56px}
.rv-team>.rv-team-sum{padding:8px 12px}
.rv-card>.rv-team-menu{right:36px}
.rv-team-sum .rv-team-title{flex-direction:column;align-items:stretch;gap:2px;line-height:1.25}
.rv-team-name,.rv-team-meta{display:block;flex:none;max-width:100%}}
@media (prefers-reduced-motion:reduce){.rv-team-chev{transition:none}}
/* reviews:team-accordion end */
/* headers:exact - every card header (.panel-head, incl. summary.panel-head and the Reviews card heads, and Team builder .team>.team-title) is exactly 79px tall on screens wider than 760px and 56px on phones (<=760px): fixed height, border-box (the 1px bottom border is inside), content centred on ONE line. Titles never wrap (ellipsis; team names keep the full name in a title attribute); badges, tags, selects and buttons sit centred and are never taller than 44px; the right-side group does not wrap - the title shrinks instead. Extra lines moved out of headers: Coaches with links intro, Workspace settings / Workspace theme "only the owner" notes, Team builder coach/manager line, Team intelligence team picker. */
.panel-head,.team>.team-title{box-sizing:border-box!important;height:79px!important;min-height:0!important;max-height:none!important;padding:0 20px!important;display:flex!important;flex-wrap:nowrap!important;align-items:center!important;justify-content:space-between;gap:12px;row-gap:0!important}
.panel-head>h2,.panel-head>h3{display:block!important;flex:1 1 auto!important;min-width:0!important;margin:0!important;padding:4px 3px 4px 0!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;line-height:1.3}
.panel-head>:not(h2):not(h3){flex:0 0 auto;max-height:44px;margin-top:0;margin-bottom:0;white-space:nowrap}
.panel-head>.flat,.panel-head>button{min-height:44px;max-height:44px}
.panel-head>.tag,.panel-head .tag{max-height:28px;line-height:1.3;white-space:nowrap}
.panel-head>.sub{flex:0 1 auto!important;min-width:0;overflow:hidden;text-overflow:ellipsis;margin:0!important}
.panel-head>select{flex:0 1 auto!important;min-width:0;max-width:55%;height:44px;min-height:0;max-height:44px;text-overflow:ellipsis}
.insights>.insights-pick{padding:14px 18px 0}.insights>.insights-pick>select{display:block;width:100%;min-height:44px}
.team>.team-title>.team-main{display:flex!important;align-items:center;flex:1 1 0;min-width:0}
.team>.team-title .team-head{flex:1 1 0;min-width:0}
.team>.team-title .team-heading{flex-wrap:nowrap!important;white-space:nowrap;overflow:hidden;min-width:0;flex:0 1 auto;padding:4px 3px 4px 0;line-height:1.3}
.team>.team-title .team-heading>*{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.team>.team-title .team-heading>.team-name{flex:0 1 auto;min-width:3.5em;max-width:100%}
.team>.team-title .team-heading>.count{flex:none;overflow:visible}
.team>.team-title>.actions{flex:none;max-height:44px;min-height:44px}
.team>.team-title .actions .tag{white-space:nowrap!important;max-width:8rem!important;overflow:hidden;text-overflow:ellipsis;line-height:1.3!important}
.team>.team-staff{display:flex;flex-wrap:nowrap;justify-content:flex-start;align-items:center;gap:0 16px;order:0;flex-basis:auto;margin:-8px 0 0;padding:0 20px 12px;text-align:left;min-width:0}
.coach-links>.coach-links-intro{margin:0;padding:12px 20px 0;font-size:14px;line-height:1.5;color:var(--muted)}
.coach-links>.coach-links-intro+.coach-links-foot{border-top:0}
.analytics-body>.panel-note:first-child{margin:0 0 12px}
@media (max-width:760px){.panel-head,.team>.team-title{height:56px!important;padding:0 14px!important;gap:8px}.team>.team-staff{padding:0 14px 10px;margin-top:-4px}.coach-links>.coach-links-intro{padding:10px 14px 0}.panel-head>select{max-width:50%}.insights>.insights-pick{padding:12px 14px}}
/* headers:exact end */
/* reviews:steps-polish - Season reviews spacing (team name ↔ coach label 12px, 12px above the first checklist step, 16px above the timeline; header heights unchanged), the fixed "Back to Season reviews" chip (bottom-right, safe-area aware, above phone FABs/bottom bars), and Prepare coach allocation rows with the status dots on the player-name line */
@media (min-width:761px){.rv-team-sum .rv-team-title .rv-team-meta{margin-left:12px}}
.rv-team>.rv-card-body{padding-top:16px}
.rv-acc[open]>.rv-checks{padding-top:12px}
.rv-return{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(20px,calc(12px + env(safe-area-inset-bottom)));z-index:40;display:flex;align-items:center;gap:2px;max-width:calc(100vw - 32px);padding:0 4px 0 0;background:var(--blue);color:var(--on-blue);border-radius:999px;box-shadow:0 8px 22px color-mix(in srgb,var(--blue) 35%,transparent)}
.rv-return>button{min-height:44px;margin:0;border:0;background:transparent;color:inherit;font:inherit;font-weight:600;cursor:pointer;border-radius:999px;box-shadow:none}
.rv-return>.rv-return-go{display:inline-flex;align-items:center;gap:8px;padding:0 10px 0 16px;white-space:nowrap;min-width:0}
.rv-return>.rv-return-go>span:not(.visually-hidden){overflow:hidden;text-overflow:ellipsis}
.rv-return>.rv-return-x{flex:none;width:44px;min-width:44px;padding:0;font-size:1rem;line-height:1;opacity:.9}
.rv-return>button:hover{background:color-mix(in srgb,var(--on-blue) 14%,transparent)}
.rv-return>button:focus-visible{outline:3px solid var(--on-blue);outline-offset:-5px}
@media (max-width:760px){body:has(#add-entry.primary) .rv-return,body:has(#add-season.primary) .rv-return{bottom:calc(84px + env(safe-area-inset-bottom))}body:has(.team-bar) .rv-return{bottom:calc(86px + env(safe-area-inset-bottom))}.rv-return{right:max(12px,env(safe-area-inset-right))}}
@media (forced-colors:active){.rv-return{border:2px solid CanvasText}}
/* UI index (temporary) - start: styles for ui-index.js (owner-only review page). Delete this whole block with that file. */
.uix-link{display:block;width:100%;margin:0 0 12px;padding:8px 10px;border:1px dashed var(--line);border-radius:7px;background:transparent;color:var(--muted);font-size:.75rem;font-weight:550;text-align:left}
.uix-link[aria-current="page"]{color:var(--accent-text);border-color:var(--accent-border)}
.uix-intro{margin:0 0 18px}.uix-intro p{color:inherit}.uix-intro p+p{margin-top:6px}
.uix-tools{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 18px;padding:16px 20px;margin:0 0 20px;overflow:visible}
.uix-search{display:flex;flex-direction:column;gap:6px;flex:1 1 280px;min-width:0}.uix-search label{font-size:.8125rem;font-weight:600}.uix-search input{width:100%;font-size:16px}
.uix-result{flex:0 0 auto;margin:0 0 10px;font-size:.8125rem}
.uix-jump{display:flex;flex-wrap:wrap;gap:6px;flex:1 1 100%}.uix-jump-btn{padding:6px 10px;font-size:.8125rem;min-height:36px}
.uix-section{margin:0 0 20px}
.uix-area{margin:0;padding:16px 20px 6px;font-size:.875rem;font-weight:650}
.uix-group+.uix-group{border-top:1px solid var(--line)}
.uix-none{padding:4px 20px 14px;font-size:.8125rem}
.uix-table{width:100%;border-collapse:collapse;table-layout:fixed}
.uix-table th,.uix-table td{padding:11px 14px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;font-size:.875rem;white-space:normal;overflow-wrap:anywhere}
.uix-table th{font-size:.75rem;font-weight:600}.uix-table tbody tr:last-child td{border-bottom:0}
.uix-table th:first-child,.uix-table td:first-child{padding-left:20px;width:42%}.uix-table th:nth-child(2){width:28%}.uix-table th:nth-child(3){width:14%}.uix-table th:last-child,.uix-table td:last-child{padding-right:20px;text-align:right;width:16%}
.uix-title{font-weight:600}.uix-table .rs-title .sub{margin-top:2px}
.uix-also{display:block;margin-top:4px;font-size:.75rem;color:var(--muted);line-height:1.45}
.uix-warn{display:inline-block;margin-top:6px;padding:2px 8px;border-radius:999px;background:var(--micon-amber-bg);color:var(--micon-amber-fg);font-size:.75rem;font-weight:600;line-height:1.5}
.uix-warn-inline{margin-top:0}
.uix-role{white-space:nowrap}.uix-role[data-role="owner"]{background:var(--micon-violet-bg);color:var(--micon-violet-fg)}.uix-role[data-role="public"]{background:var(--micon-teal-bg);color:var(--micon-teal-fg)}
.uix-open{min-height:40px;min-width:88px}
.uix-why{display:block;max-width:230px;margin:6px 0 0 auto;font-size:.75rem;color:var(--muted);white-space:normal;text-align:right;line-height:1.4}
.uix-return{position:fixed;left:50%;transform:translateX(-50%);bottom:max(20px,calc(12px + env(safe-area-inset-bottom)));z-index:41;display:flex;align-items:center;gap:2px;max-width:calc(100vw - 32px);padding:0 4px 0 0;background:var(--brand-navy);color:#fff;border-radius:999px;box-shadow:0 8px 22px rgba(6,18,31,.3)}
.uix-return>button{min-height:44px;margin:0;border:0;background:transparent;color:inherit;font:inherit;font-weight:600;border-radius:999px;box-shadow:none}
.uix-return>.uix-return-go{padding:0 10px 0 16px;white-space:nowrap}.uix-return>.uix-return-x{width:44px;padding:0}
.uix-return>button:hover{background:rgba(255,255,255,.14)}.uix-return>button:focus-visible{outline:3px solid #fff;outline-offset:-5px}
body:has(.bottom-nav) .uix-return{bottom:calc(var(--mnav-h,64px) + 12px)}
.uix-dialog-back{margin:0 0 12px}.uix-dialog-back .uix-back{padding:6px 12px;font-size:.8125rem;min-height:36px}
.uix-preview-banner{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:10px 16px;background:var(--micon-amber-bg);color:var(--micon-amber-fg);font-size:.875rem;border-bottom:1px solid currentColor}
.uix-preview-banner a{margin-left:auto;color:inherit;font-weight:600}
/* .rs-stack turns rows into cards up to 1100px, so the fixed column widths must go away at the same breakpoint. */
@media (max-width:1100px){.uix-table th:first-child,.uix-table td:first-child,.uix-table th:last-child,.uix-table td:last-child{width:auto;padding:0}.uix-table td.uix-open-cell{flex-direction:column;align-items:flex-end}.uix-why{max-width:160px}}
@media (max-width:760px){.uix-tools{padding:14px 16px}}
@media (forced-colors:active){.uix-return,.uix-warn{border:2px solid CanvasText}}
/* UI index (temporary) - end */
#allocation-form .review-label>.alloc-name-row{display:flex;flex-wrap:nowrap;align-items:center;gap:6px;min-width:0}
#allocation-form .alloc-name-row>.alloc-name{flex:0 1 auto;min-width:0;overflow-wrap:anywhere}
#allocation-form .alloc-name-row>.nc-dot{flex:none;width:11px;height:11px;min-width:0;min-height:0;margin:0;align-self:center}
@media (max-width:640px){#allocation-form .review-label>.alloc-name-row{flex:1 1 100%}}
/* reviews:steps-polish end */
/* teams:categories - team category chip at the start of the one-line coach/manager row (below the fixed-height title row, which is unchanged), the Add/Edit team Category field, and the Team builder filter bar: a .panel whose .panel-head keeps EXACTLY the headers:exact height (79px above 760px, 56px at 760px and below; padding 0 20px / 0 14px; one line, never wraps). On a narrow bar (container under 560px, or any phone) the two selects move into a Filters popover and the "Showing N of M" count is visually hidden (still read out: aria-live). Filtering only hides cards ([hidden]). */
.team>.team-staff>.team-cat{flex:0 1 auto;max-width:42%;padding:1px 8px;border-radius:999px;background:#eef1f7;color:#46506a;font-size:.75rem;font-weight:600;line-height:1.5;letter-spacing:.01em}
.workspace .teams>.team-filter,.workspace .teams>.tf-note,.workspace .teams>.tf-empty{grid-column:1/-1}
.teams>[hidden],.team-filter [hidden]{display:none!important}
.team-filter{position:relative;z-index:6;overflow:visible;container-type:inline-size;container-name:tf}
.team-filter>.panel-head{height:79px!important;padding:0 20px!important;border-bottom:0;justify-content:flex-start;gap:10px}
.team-filter>.panel-head>.tf-search{flex:1 1 180px;min-width:0;max-width:none;height:44px;max-height:44px;margin:0;padding:0 12px 0 36px;border:1px solid var(--line);border-radius:8px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Ccircle cx='8.5' cy='8.5' r='5.5' fill='none' stroke='%235f6876' stroke-width='2'/%3E%3Cpath d='M13 13l4 4' stroke='%235f6876' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat 12px center/16px 16px;font:inherit;font-size:.9375rem;color:inherit}
.team-filter>.panel-head>.tf-search:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}
.team-filter>.panel-head>.tf-selects{display:flex;flex:0 1 auto;align-items:center;gap:8px;min-width:0}
.team-filter .tf-selects>select{flex:0 1 auto;width:auto;min-width:0;max-width:190px;height:44px;min-height:44px;max-height:44px;margin:0;text-overflow:ellipsis}
.team-filter>.panel-head>.tf-count{flex:0 0 auto;color:var(--muted);font-size:.8125rem;white-space:nowrap}
.team-filter>.panel-head>.tf-reset,.team-filter>.panel-head>.tf-more{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;width:44px;min-width:44px;height:44px;min-height:44px;padding:0;margin:0;border:1px solid var(--line);border-radius:8px;background:#fff;color:#46506a;box-shadow:none}
.team-filter>.panel-head>.tf-reset:hover,.team-filter>.panel-head>.tf-more:hover{background:#f3f5f9}
.team-filter>.panel-head>.tf-more{display:none}
.team-filter .tf-badge{position:absolute;top:3px;right:3px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--blue);color:var(--on-blue);font-size:11px;font-weight:700;line-height:16px;text-align:center}
.teams>.tf-note{display:flex;flex-wrap:wrap;align-items:center;gap:0 8px;margin:0;padding:4px 12px;border:1px solid #ecd9a0;border-radius:8px;background:#fff8e6;color:#5c4710;font-size:.875rem}
.teams>.tf-empty{display:flex;flex-direction:column;align-items:center;gap:6px;padding:28px 16px;border:1px dashed #cfd5e0;border-radius:10px;background:#fff;text-align:center}
.teams>.tf-empty>button{min-height:44px;margin-top:6px}
@container tf (max-width:560px){.team-filter>.panel-head>.tf-more{display:inline-flex}.team-filter>.panel-head>.tf-count{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.team-filter>.panel-head>.tf-selects{display:none}.team-filter.tf-open>.panel-head>.tf-selects{display:flex;flex-direction:column;align-items:stretch;position:absolute;top:calc(100% + 6px);right:0;width:min(300px,calc(100vw - 32px));padding:12px;gap:10px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 32px rgba(6,18,31,.18);z-index:30;max-height:none}.team-filter.tf-open .tf-selects>select{width:100%;max-width:none}}
@media (max-width:760px){.team-filter>.panel-head{height:56px!important;padding:0 14px!important;gap:8px}.team-filter>.panel-head>.tf-more{display:inline-flex}.team-filter>.panel-head>.tf-count{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.team-filter>.panel-head>.tf-selects{display:none}.team-filter.tf-open>.panel-head>.tf-selects{display:flex;flex-direction:column;align-items:stretch;position:absolute;top:calc(100% + 6px);right:0;width:min(300px,calc(100vw - 32px));padding:12px;gap:10px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 32px rgba(6,18,31,.18);z-index:30;max-height:none}.team-filter.tf-open .tf-selects>select{width:100%;max-width:none}.team>.team-staff>.team-cat{max-width:38%}}
@media (forced-colors:active){.team>.team-staff>.team-cat,.team-filter .tf-badge{border:1px solid CanvasText}}
.team-cat-field>.team-cat-label{display:flex;align-items:center;gap:6px;min-height:24px}
/* teams:categories end */
/* tidy:small-fixes - Organisation theme Reset / Save theme sit in the right corner; the owner's PlayOps-team message form on Support has no divider line above it; disabled ⋮ menu items show their reason as a hover tooltip (data-tip on the item) */
.form-actions:has(#reset-theme){justify-content:flex-end}
#platform-message-form.support-form{border-top:0;padding-top:0}
.rv-menu-item[data-tip]{cursor:not-allowed}
/* tidy:small-fixes end */
/* categories:dash-approvals - the Team builder category chip (same .team-cat markup) on the Dashboard (Team selection progress rows + See all dialog: in the row's top line right after the team name; Team ratings Team cell, inline) and on Team approvals (Team list Team cell: on its own line under the name so the column does not widen; Team decision summary line). One line, truncates with an ellipsis (fixed em caps, never a % inside a table cell); the Approvals Category select is capped on wide screens. No card header (.panel-head) is touched. */
.tp-top>.team-cat,.di-table .st-title>.team-cat,.rv-approvals td>.team-cat,.profilehero p>.team-cat{display:inline-block;flex:0 1 auto;min-width:0;max-width:10em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;padding:1px 8px;border-radius:999px;background:#eef1f7;color:#46506a;font-size:.75rem;font-weight:600;line-height:1.5;letter-spacing:.01em}
.tp-top:has(>.team-cat)>.tp-open{flex:0 1 auto}.tp-top>.team-cat{max-width:45%;margin-right:auto}
.di-table .st-title>.team-cat,.profilehero p>.team-cat{margin-left:4px}.profilehero p>.team-cat{max-width:16em}
.rv-approvals td>.team-cat{display:block;width:fit-content;margin:3px 0 0}
@media (min-width:761px){.rv-filters>#approval-category{flex:0 1 auto;width:auto;max-width:200px;text-overflow:ellipsis}}
@media (forced-colors:active){.tp-top>.team-cat,.di-table .st-title>.team-cat,.rv-approvals td>.team-cat,.profilehero p>.team-cat{border:1px solid CanvasText}}
/* categories:dash-approvals end */

/* support:docs - Support page help: First steps (numbered cards with a Go to button), Help topics (search box with an aria-live count, a responsive grid of topic cards that open in place as accordions; an open card spans the full width), Who can do what. Header heights stay with headers:exact (no .panel-head rules here). Phones (<=760px): one column, 44px targets, no sideways scroll. */
.sd-start-list{list-style:none;margin:0;padding:16px 20px 20px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.sd-start-item{display:flex;flex-direction:column;gap:10px;padding:14px;border:1px solid var(--line);border-radius:10px;background:#fbfcfe;min-width:0}
.sd-num{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--blue);color:var(--on-blue);font-weight:700;font-size:.8125rem;flex:none}
.sd-start-txt{flex:1 1 auto;min-width:0}.sd-start-txt h3{margin:0 0 4px;font-size:.9375rem;font-weight:600;color:#202838;line-height:1.3}.sd-start-txt p{margin:0;font-size:.8125rem;line-height:1.5;color:#5d6a81}
.sd-start-item>.sd-go{align-self:stretch;justify-content:center;white-space:normal;text-align:center;padding:6px 10px}
.sd-wrap{padding:16px 20px 20px;min-width:0}
.sd-search{position:relative;max-width:520px}.sd-search-ico{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:#79818e;pointer-events:none}
#sd-search{width:100%;box-sizing:border-box;min-height:44px;padding:10px 12px 10px 40px;border:1px solid #d8dfec;border-radius:8px;background:#fff;color:#202838;font:inherit;font-size:.9375rem}
#sd-search:focus{outline:2px solid var(--focus-ring);outline-offset:1px;border-color:var(--blue)}
.sd-count{margin:10px 0 14px;font-size:.8125rem;color:#5f6876}
.sd-viewnote{margin:0 0 14px;padding:10px 12px;border-radius:8px;background:var(--accent-wash);color:#42516a;font-size:.8125rem;line-height:1.5}
.sd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;align-items:start}
.sd-topic{border:1px solid var(--line);border-radius:10px;background:#fff;min-width:0;transition:border-color .15s,box-shadow .15s}
.sd-topic:hover{border-color:var(--accent-border)}.sd-topic.sd-open{grid-column:1/-1;border-color:var(--accent-border);box-shadow:0 2px 10px rgba(32,40,56,.06)}
.sd-topic[hidden]{display:none}
.sd-h{margin:0;font-size:inherit;font-weight:inherit}
.sd-toggle{display:flex;align-items:center;gap:14px;width:100%;min-height:72px;margin:0;padding:14px 16px;border:0;border-radius:10px;background:none;text-align:left;cursor:pointer;color:inherit;font:inherit}
.sd-toggle:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}
.sd-ico{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;background:var(--accent-tint);color:var(--accent-text);flex:none}.sd-ico svg{width:20px;height:20px}
.sd-txt{display:flex;flex-direction:column;gap:3px;flex:1 1 auto;min-width:0}
.sd-title{font-weight:600;font-size:.9375rem;color:#202838;line-height:1.3;overflow-wrap:anywhere}
.sd-sum{font-weight:400;font-size:.8125rem;color:#5f6876;line-height:1.45}
.sd-new{margin-left:6px;padding:2px 7px;border-radius:20px;background:var(--accent-tint);color:var(--accent-ink);font-size:.6875rem;font-weight:700;letter-spacing:.02em;vertical-align:1px}
.sd-chev{flex:none;width:9px;height:9px;margin-right:4px;border-right:2px solid #8a93a3;border-bottom:2px solid #8a93a3;transform:rotate(45deg);transition:transform .15s}
.sd-toggle[aria-expanded="true"] .sd-chev{transform:rotate(-135deg);border-color:var(--blue)}
.sd-body{padding:0 20px 18px 70px}
.sd-steps{list-style:none;counter-reset:sd;margin:0;padding:0;display:grid;gap:10px}
.sd-steps>li{counter-increment:sd;position:relative;padding-left:34px;font-size:.875rem;line-height:1.6;color:#36435a;overflow-wrap:anywhere}
.sd-steps>li::before{content:counter(sd);position:absolute;left:0;top:1px;width:22px;height:22px;border-radius:50%;background:var(--accent-tint);color:var(--accent-text);font-size:.75rem;font-weight:700;display:flex;align-items:center;justify-content:center}
.sd-steps b{font-weight:600;color:#202838}
.sd-who{display:inline-block;margin-right:4px;padding:1px 7px;border-radius:20px;background:#fff3e0;color:#8a4b00;font-size:.6875rem;font-weight:700;vertical-align:1px}
.sd-note{margin:14px 0 0;padding:10px 12px;border-radius:8px;background:#f6f7f9;color:#4b5565;font-size:.8125rem;line-height:1.5}
.sd-actions{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px}
.sd-go{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 16px;border:1px solid #d8dfec;border-radius:8px;background:#fff;color:var(--accent-text);font-weight:600;font-size:.875rem;cursor:pointer;white-space:nowrap}
.sd-go:hover{border-color:var(--blue);background:var(--accent-wash)}.sd-go.primary{background:var(--blue);color:var(--on-blue);border-color:var(--blue)}
.sd-empty{margin:4px 0 0;padding:24px 16px;text-align:center;border:1px dashed #d8dfec;border-radius:10px;color:#5f6876;font-size:.875rem}
.sd-role-list{margin:0;display:grid;gap:8px}
.sd-role{padding:12px 14px;border:1px solid var(--line);border-radius:10px}.sd-role.sd-me{border-color:var(--accent-border);background:var(--accent-wash)}
.sd-role dt{font-weight:600;font-size:.9375rem;color:#202838}.sd-role dd{margin:4px 0 0;font-size:.8125rem;line-height:1.5;color:#5d6a81}
.sd-you{margin-left:6px;padding:2px 8px;border-radius:20px;background:var(--blue);color:var(--on-blue);font-size:.6875rem;font-weight:700}
.sd-topics,.sd-start{margin-bottom:24px}
@media (max-width:760px){.sd-start-list{grid-template-columns:1fr;padding:12px 14px 14px;gap:10px}.sd-start-item{display:grid;grid-template-columns:28px 1fr;gap:4px 12px;padding:14px}.sd-start-item>.sd-go{grid-column:1/-1;align-self:stretch;justify-content:center;width:100%}.sd-wrap{padding:12px 14px 14px}.sd-search{max-width:none}.sd-grid{grid-template-columns:1fr}.sd-toggle{min-height:64px;padding:12px;gap:12px}.sd-body{padding:0 14px 16px}.sd-go{width:100%;justify-content:center}.sd-topics,.sd-start{margin-bottom:12px}}
@media (prefers-reduced-motion:reduce){.sd-topic,.sd-chev{transition:none}}
@media (forced-colors:active){.sd-num,.sd-steps>li::before,.sd-who,.sd-new,.sd-you{border:1px solid CanvasText}}
/* support:docs end */
/* support:audiences - Help topics search and filters: the search box is the full width of the card (44px, a Clear button when filled), then a filter row: Who it's for chips (All, Owners, Staff, Coaches; aria-pressed), a Topic area select, a New only toggle and Reset filters. Each topic card shows its audiences as small labels. Header heights stay with headers:exact (no .panel-head rules here). Phones (<=760px): the chips wrap in their own row, the select is full width, every target is 44px, no sideways scroll. */
.sd-topics .sd-search{max-width:none;width:100%}
#sd-search{padding-right:48px}#sd-search::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none;display:none}
.sd-clear{position:absolute;right:0;top:0;bottom:0;width:44px;min-height:44px;margin:0;padding:0;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:0 8px 8px 0;background:none;color:#5f6876;font-size:1.25rem;line-height:1;cursor:pointer}
.sd-clear:hover{color:#202838}.sd-clear:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}.sd-clear[hidden]{display:none}
.sd-filters{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin-top:12px;min-width:0}
.sd-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}
.sd-flabel{margin-right:4px;font-size:.8125rem;font-weight:600;color:#5d6a81}
.sd-chip{display:inline-flex;align-items:center;min-height:40px;margin:0;padding:0 14px;border:1px solid #d8dfec;border-radius:20px;background:#fff;color:#36435a;font:inherit;font-size:.8125rem;font-weight:600;cursor:pointer;white-space:nowrap}
.sd-chip:hover{border-color:var(--blue)}.sd-chip:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.sd-chip[aria-pressed="true"]{background:var(--blue);border-color:var(--blue);color:var(--on-blue)}
.sd-chip-more{font-weight:400}
.sd-fopts{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-width:0}
.sd-area{margin:0;min-width:0}
#sd-area{min-height:40px;max-width:100%;padding:0 32px 0 12px;border:1px solid #d8dfec;border-radius:8px;background-color:#fff;color:#202838;font:inherit;font-size:.875rem}
#sd-area:focus{outline:2px solid var(--focus-ring);outline-offset:1px;border-color:var(--blue)}
.sd-newonly{display:inline-flex;align-items:center;gap:8px;min-height:40px;margin:0;font-size:.875rem;font-weight:600;color:#36435a;cursor:pointer;white-space:nowrap}
.sd-newonly input{width:18px;height:18px;margin:0;accent-color:var(--blue)}
.sd-reset{min-height:40px;margin:0;padding:0 12px;border:0;border-radius:8px;background:none;color:var(--accent-text);font:inherit;font-size:.875rem;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.sd-reset:hover{background:var(--accent-wash)}.sd-reset[hidden]{display:none}
.sd-for{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.sd-aud{padding:1px 8px;border-radius:20px;background:#f1f3f7;color:#4b5565;font-size:.6875rem;font-weight:600;line-height:1.6}
@media (max-width:760px){.sd-filters{flex-direction:column;align-items:stretch;gap:10px}.sd-flabel{flex:0 0 100%;margin:0}.sd-chip{min-height:44px;padding:0 16px}.sd-chip-more{display:none}.sd-fopts{display:grid;grid-template-columns:1fr auto;gap:8px}.sd-area{grid-column:1/-1}#sd-area{width:100%;min-height:44px}.sd-newonly,.sd-reset{min-height:44px}}
@media (forced-colors:active){.sd-chip[aria-pressed="true"]{border:2px solid Highlight}.sd-aud{border:1px solid CanvasText}}
/* support:audiences end */

/* plans:yearly-trial - three plan cards in the Subscription card: Free trial (30 days of Organisation, no card), Club and Organisation (both billed yearly). The billing line sits under the price; the trial card's button only shows its state (disabled, never a purchase). Header heights stay with headers:exact (no .panel-head rules here). Phones keep the existing one-column grid. */
.plan-billed{margin:-4px 0 0;font-size:.8125rem;font-weight:600;color:#3d4a5c}
.plan-card-trial .plan-best{font-weight:600}
.plan-act.plan-act-state,.plan-act.plan-act-state:disabled{background:#f1f4f8;color:#3d4a5c;border:1px solid #d9e0e8;cursor:default;opacity:1}
.plan-card-trial.is-current .plan-act-state{background:#eaf4ee;color:#1b5130;border-color:#b9d7c4}
/* plans:yearly-trial end */
/* intel:clarity — player intelligence wording and layout: gentle trend colours (up/same/down), rating word + "Based on N reviews", registration/credential chips in the profile header, practice-data chip/tag and grey hatched sample bars, graph title and short bar labels, skills beside the graph, award rows, shared team rows, Team intelligence coverage line, "/ N" on averages, short labels under the profile header icons on phones */
.pim-stat-value .pim-trend[data-trend=up],.dev-title-arrow[data-trend=up],.dev-change[data-trend=up] .dev-amount,.trend-tag[data-trend=up]{background:#e1f2e8;color:#1d6b43}
.pim-stat-value .pim-trend[data-trend=down],.dev-title-arrow[data-trend=down],.dev-change[data-trend=down] .dev-amount,.trend-tag[data-trend=down]{background:#fff1d6;color:#8a4b00}
.pim-stat-value .pim-trend[data-trend=same],.trend-tag[data-trend=same]{background:#e9ecf1;color:#4a5466}
.trend-tag[data-trend=none]{background:#f1f3f6;color:#5d6573}
.dir-table .c-trend .trend-tag{white-space:nowrap}
.pim-rating-word{font-size:.875rem;font-weight:600;color:#3b4557}
.pim-based{margin:4px 0 0;font-size:.75rem;color:var(--muted)}
.pim-sub>.pim-reg.is-on{border-color:#9fd3b3;background:#e7f5ec;color:#1d6b43;font-weight:600}
.pim-sub>.pim-reg.is-off{border-color:#d5dae2;background:#f3f5f8;color:#4a5466}
.pim-sub>.pim-cred{border-color:var(--accent-border);background:var(--accent-tint);color:var(--accent-ink);font-weight:600}
.pim-sub>.pim-practice,.practice-tag{border:1px dashed #9aa3b2;background:#f3f4f7;color:#4a5466;font-weight:600}
.practice-tag{display:inline-block;padding:1px 8px;border-radius:999px;font-size:.75rem}
.dev-practice,.sq-practice,.di-practice{margin:0 0 8px}
.di-practice{padding:0 18px}
.pim-dev{display:grid;gap:12px 24px;margin:0 0 16px}
@media (min-width:720px){.pim-dev{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);align-items:start}}
.pim-dev .pim-graph{margin:0}
.pim-graph-title{margin-top:4px}
.pim-chart .pim-bar-sample{background:repeating-linear-gradient(135deg,#e3e6eb 0 6px,#d2d6dd 6px 9px)}
.pim-chart .pim-bar-sample:hover{background:repeating-linear-gradient(135deg,#d6dae1 0 6px,#c4c9d2 6px 9px)}
.pim-chart .pim-bar-sample b{color:#5d6573}
.pim-chart .pim-bar>span{overflow:visible;text-overflow:clip}
.pim-chart .pim-bar-teams{position:absolute;top:100%;left:0;width:100%;font-style:normal;font-size:.6875rem;line-height:1.2;color:#5d6573;white-space:nowrap}
.pim-chart:has(.pim-bar-teams){margin-bottom:56px}
.pim-caption{margin:-10px 0 0;padding:0 4px;font-size:.75rem;color:var(--muted)}
.pim-skills{min-width:0}
.pim-skill-list{list-style:none;margin:6px 0 0;padding:0}
.pim-skill{display:flex;justify-content:space-between;gap:12px;padding:7px 4px;border-bottom:1px solid var(--line);font-size:.875rem}
.pim-skill:last-child{border-bottom:0}
.pim-skill-name{min-width:0;overflow-wrap:anywhere}
.pim-skill-score{flex:none;white-space:nowrap}
.pim-skill-was{color:var(--muted);font-size:.8125rem}
.pim-skill-arrow{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;margin-left:4px;border-radius:999px;background:#e9ecf1;color:#4a5466;font-size:.8125rem}
.pim-skill-arrow[data-trend=up]{background:#e1f2e8;color:#1d6b43}
.pim-skill-arrow[data-trend=down]{background:#fff1d6;color:#8a4b00}
.pim-skill-more summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-size:.875rem;font-weight:600;color:var(--accent-text)}
ul.pim-awards{list-style:none;margin:10px 0 14px;padding:0;display:grid;gap:6px}
.pim-awards .pim-award-item{display:block;line-height:1.75;overflow-wrap:anywhere}
.pim-awards .pim-award{display:inline;margin-right:4px;padding:1px 10px;border:1px solid #e2bd6b;border-radius:999px;background:#fff8e8;color:#6b4a00;font-size:.8125rem}
.pim-award-by{color:#4a5466}
.season-timeline .pim-team-cell{display:block}
.season-timeline .pim-shared-team{display:block;margin-top:2px}
.insight-cover{margin:14px 0 9px;font-size:.875rem;color:#3b4557;overflow-wrap:anywhere}
.of-max{font-weight:400;color:var(--muted)}
.pim-act-label{display:none}
@media (max-width:640px){
.modalhead:has(#preview-placement) .modal-actions .icon-btn.pim-act{flex:1 1 0;width:auto;min-width:48px;max-width:76px;height:56px;min-height:56px;flex-direction:column;gap:2px}
.modalhead:has(#preview-placement) .modal-actions .pim-act-label{display:block;font-size:.6875rem;line-height:1.1;font-weight:600;white-space:nowrap}
}
/* intel:clarity end */
/* webapp:standalone - PlayOps opened from a phone home screen (index.html sets viewport-fit=cover, so env(safe-area-inset-*) is live; it is 0 on desktops and phones without a notch). The bottom team bar, floating Add buttons, toast and the "Back to Season reviews" chip already pad for the home indicator; this keeps the page clear of the notch in landscape and the sticky phone top bar clear of the status bar. */
body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
@media (max-width:900px){.sidebar{padding-top:calc(6px + env(safe-area-inset-top))}}
@media (max-width:760px) and (max-height:500px){.sidebar{padding-top:calc(2px + env(safe-area-inset-top))}}
/* webapp:standalone end */
/* reviews:awards-summary - Reviews page season awards summary: a bar (summary line; By award / By team toggle, aria-pressed, 44px; Download awards (CSV) icon button for owners and managers), a note for players nominated for more than one award, then one block per award (title + count, a 3-column table or an empty line). The card header itself is unchanged (headers:exact 79/56). */
.rv-aws-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px}
.rv-aws-bar>.sub{flex:1 1 260px;min-width:0;margin:0;font-size:.875rem;color:#4a5466}
.rv-aws-tools{display:flex;align-items:center;gap:8px;flex:none}
.rv-aws-toggle{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.rv-aws-toggle>button{min-height:44px;border:0;border-radius:0;padding:0 14px;background:#fff;white-space:nowrap}
.rv-aws-toggle>button+button{border-left:1px solid var(--line)}
.rv-aws-toggle>button[aria-pressed="true"]{background:var(--blue);color:var(--on-blue)}
#download-awards-csv{width:44px;height:44px;min-height:44px;padding:0;display:inline-flex;align-items:center;justify-content:center}
.rv-aws-multi-note{margin:10px 0 0;font-size:.875rem;color:#3b4658}
.rv-aws-awards{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px;margin-top:12px}
.rv-aws-award{min-width:0;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.rv-aws-ahead{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:2px 12px;padding:10px 14px;border-bottom:1px solid var(--line);background:#f8f9fb}
.rv-aws-ahead h3{margin:0;font-size:1rem;overflow-wrap:anywhere}
.rv-aws-count{margin:0;font-size:.8125rem;color:#4a5466}
.rv-aws-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:.875rem}
.rv-aws-table th{text-align:left;white-space:normal;overflow-wrap:anywhere;font-size:.75rem;font-weight:600;color:#4a5466;padding:8px 14px 6px;border-bottom:1px solid var(--line)}
.rv-aws-table td{padding:8px 14px;vertical-align:top;color:#202838;overflow-wrap:anywhere;border-bottom:1px solid var(--line)}
.rv-aws-table tr:last-child td{border-bottom:0}
.rv-aws-name{display:block;font-weight:600}
.rv-aws-multi{display:block;margin-top:2px;font-size:.75rem;color:#4a5466}
.rv-aws-award>.rv-aw-none{margin:0;padding:10px 14px 12px}
@media (max-width:640px){.rv-aws-awards{grid-template-columns:1fr}.rv-aws-bar>.sub{flex-basis:100%}.rv-aws-tools{width:100%;justify-content:space-between}.rv-aws-table th,.rv-aws-table td{padding-left:10px;padding-right:10px}}
@media (forced-colors:active){.rv-aws-toggle>button[aria-pressed="true"]{border:2px solid Highlight}}
/* reviews:awards-summary end */
/* intel:insights */
.pim-ins,.pim-sot{min-width:0;max-width:100%;margin:0 0 16px}
.pim-ins{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fafbfd}
.pim-ins .pim-plain-head{display:flex;align-items:center;gap:6px}
.pim-ins-list{display:grid;gap:6px;margin:8px 0 0}
.pim-ins-row{display:grid;grid-template-columns:minmax(88px,auto) minmax(0,1fr);gap:4px 12px;font-size:.875rem}
.pim-ins-row dt{color:var(--muted);font-weight:600}.pim-ins-row dd{margin:0;min-width:0;overflow-wrap:anywhere;font-weight:600;color:#202838}
.pim-ins-gain{margin:8px 0 0;font-size:.875rem;color:#1d6b43}
.pim-sot-scroll{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:6px;border:1px solid var(--line);border-radius:10px}
.pim-sot-scroll:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.pim-sot-table{border-collapse:collapse;width:100%;min-width:max-content;font-size:.875rem}
.pim-sot-table caption{caption-side:top;text-align:left;padding:6px 10px;color:var(--muted);font-size:.8125rem}
.pim-sot-table th,.pim-sot-table td{padding:7px 10px;border-top:1px solid var(--line);text-align:left;white-space:nowrap;font-weight:400}
.pim-sot-table thead th{font-weight:600;color:var(--muted);font-size:.8125rem}
.pim-sot-table tbody th{font-weight:600;color:#202838;position:sticky;left:0;background:#fff;max-width:11rem;white-space:normal;overflow-wrap:anywhere}
.pim-sot-table thead th:first-child{position:sticky;left:0;background:#fff}
.pim-sot-table td .pim-skill-arrow{margin-left:2px}
.pim-sot-changed{margin-top:6px}.pim-sot-practice{margin:4px 0}
.pim-sot-scroll table.pim-sot-table.stack-table{display:table;white-space:nowrap}
.pim-sot-scroll table.pim-sot-table.stack-table thead{position:static;width:auto;height:auto;overflow:visible;clip:auto;display:table-header-group}
.pim-sot-scroll table.pim-sot-table.stack-table tbody{display:table-row-group;padding:0;gap:0}
.pim-sot-scroll table.pim-sot-table.stack-table tr{display:table-row;padding:0;border:0;border-radius:0;background:none}
.pim-sot-scroll table.pim-sot-table.stack-table td,.pim-sot-scroll table.pim-sot-table.stack-table th{display:table-cell;padding:7px 10px;border:0;border-top:1px solid var(--line);white-space:nowrap;font-size:.875rem;text-align:left}
.pim-sot-scroll table.pim-sot-table.stack-table td::before{content:none;display:none}
.pim-sot-scroll table.pim-sot-table.stack-table caption{display:table-caption}
/* intel:insights end */
/* returning:list - Not re-registered yet (Seasons strip and dialog) */
.rt-strip{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 16px;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:#fff}.rt-strip .sub,.rt-figure .sub{display:inline;color:var(--muted)}.rt-strip>button{min-height:44px}.rt-strip .tip-icon{vertical-align:middle}
.rt-figure{margin:0 0 10px;font-size:1.05rem}.rt-teams{margin:0 0 14px}.rt-teams summary{cursor:pointer;min-height:44px;display:flex;align-items:center;color:var(--accent-text)}.rt-table{width:100%;border-collapse:collapse}.rt-table th,.rt-table td{text-align:left;padding:6px 8px;border-top:1px solid var(--line)}
.rt-tools{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 4px}.rt-tools input{flex:1 1 200px;min-width:0;min-height:44px}.rt-tools button{min-height:44px}.rt-emails{width:100%;margin:6px 0}.rt-contact a{overflow-wrap:anywhere}.rt-list .empty{padding:12px 0}
@media (max-width:640px){.rt-tools button{flex:1 1 100%}.rt-strip>button{width:100%}}
/* returning:list end */
/* intel:chart-labels - season labels under the profile graph bars never break mid-year ("202 / 4"); they stay on one line, centred under the bar, and may overhang a narrow bar */
.pim-chart .pim-bar>span{white-space:nowrap;overflow-wrap:normal;word-break:normal;width:auto;min-width:100%;left:50%;transform:translateX(-50%);text-align:center}
/* intel:chart-labels end */
/* mobile:nav - phones and tablets (<=900px; app.js mobile:nav): a slim sticky top bar (menu button, page title + season, Set up, account), the sidebar as a slide-in drawer (85% wide, max 340px, scrim, body scroll locked, no motion when reduced motion is asked for) and a fixed Quick navigation bar at the bottom (icon + short label, 58px + the home-indicator safe area; 44px with labels beside the icons on short landscape screens). --mnav-h is the space the bar takes: page content, the Team builder team bar, the floating Add buttons, the toast and the Back to Season reviews chip all sit above it. While a text field has focus on a touch screen the bar steps aside for the keyboard (--mnav-h:0). Dialogs open in the top layer and cover the bar. Desktop (>900px) is unchanged: the parts below are display:none there. */
.nav-toggle,.mtitle,.bottom-nav,.mnav-scrim,.drawer-only{display:none}
@media (max-width:900px){
body{--bn-h:58px;--mnav-h:0px}
body:has(.bottom-nav){--mnav-h:calc(var(--bn-h) + env(safe-area-inset-bottom,0px))}
body.mnav-open{overflow:hidden}
.shell>.sidebar+div{padding-bottom:var(--mnav-h)}
.shell>.sidebar+div>.topbar{position:sticky;top:0;z-index:35;display:flex;flex-wrap:nowrap;justify-content:flex-start;align-items:center;gap:6px;height:auto;min-height:56px;padding:calc(6px + env(safe-area-inset-top,0px)) 10px 6px 6px;background:#fff;border-bottom:1px solid var(--line)}
.topbar>.nav-toggle{display:inline-flex;flex:none;width:44px;height:44px;border:0;border-radius:10px;background:transparent;color:#2b3546}
.topbar>.nav-toggle:hover{background:#f1f3f7}
.topbar>.mtitle{display:flex;flex-direction:column;justify-content:center;flex:1 1 auto;min-width:0;line-height:1.2}
.mtitle>.mtitle-page{font-size:1.0625rem;font-weight:700;color:#202838;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mtitle>.mtitle-season{font-size:.75rem;color:#566074;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mtitle>.mtitle-season:empty{display:none}
.shell .topbar>.topright{width:auto;flex:none;gap:6px;justify-content:flex-end}
.shell .topbar>.topright>#season-picker,.shell .topbar>.topright>#signout{display:none!important}
.shell>.sidebar{position:fixed!important;top:0;bottom:0;left:0;z-index:90;width:min(85vw,340px);height:auto;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:calc(14px + env(safe-area-inset-top,0px)) 12px calc(14px + env(safe-area-inset-bottom,0px)) calc(12px + env(safe-area-inset-left,0px));border-right:1px solid var(--line);border-bottom:0;background:#fff;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;box-shadow:8px 0 32px rgba(6,18,31,.2);transform:translateX(-105%);visibility:hidden;transition:transform .24s ease,visibility 0s linear .24s}
.shell>.sidebar.is-open{transform:none;visibility:visible;transition:transform .24s ease,visibility 0s}
.shell>.sidebar.mnav-instant{transition:none}
.shell>.sidebar .brand{flex:none;padding:4px 52px 12px 8px;font-size:1.5rem}
.shell>.sidebar .brand .wordmark{display:inline}
.shell>.sidebar .drawer-close{display:inline-flex;position:absolute;top:calc(8px + env(safe-area-inset-top,0px));right:8px;width:44px;height:44px;border:0;border-radius:10px;background:transparent;color:#2b3546}
.shell>.sidebar .drawer-close:hover{background:#f1f3f7}
.shell>.sidebar .drawer-club{display:block;flex:none;margin:0 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:.9375rem;font-weight:600;color:#202838;overflow-wrap:anywhere}
.shell>.sidebar .drawer-club .sub{display:block;font-size:.75rem;font-weight:400;color:#566074}
.shell>.sidebar .drawer-season{display:grid;flex:none;gap:4px;margin:0 0 14px;font-size:.8125rem;font-weight:600;color:#4a5466}
.shell>.sidebar .drawer-season select{width:100%;min-height:44px;font-size:16px;font-weight:400}
.shell>.sidebar .navlabel{display:block;flex:none;padding:0 8px 6px;font-size:.6875rem;letter-spacing:.06em;color:#566074}
.shell>.sidebar .nav{flex:none;flex-direction:column;gap:2px;margin:0;padding:0;overflow:visible;-webkit-mask-image:none!important;mask-image:none!important}
.shell>.sidebar .nav button{width:100%;min-height:48px;padding:0 12px;gap:14px;border-radius:10px;white-space:nowrap;font-size:1rem;box-shadow:none}
.shell>.sidebar .nav button svg{display:inline-block;flex:none;width:20px;height:20px}
.shell>.sidebar .drawer-item{display:flex;align-items:center;gap:14px;width:100%;min-height:48px;margin:0;padding:0 12px;border:0;border-radius:10px;background:transparent;color:#2b3546;font-size:1rem;text-align:left}
.shell>.sidebar .drawer-item:hover{background:#f1f3f7}
.shell>.sidebar .drawer-item svg{flex:none;width:20px;height:20px}
.shell>.sidebar .drawer-setup{flex:none;margin-top:6px}
.shell>.sidebar .sidebar-bottom{display:block;flex:none;margin-top:auto;padding-top:14px}
.shell>.sidebar .sidebar-bottom .club{display:none}
.shell>.sidebar .user{display:flex;padding:12px 0 4px}
.shell>.sidebar .userbtn{min-height:48px;padding:6px 8px}
.shell>.sidebar .drawer-signout{color:#a32a2a}
.mnav-scrim{display:block;position:fixed;inset:0;z-index:85;background:rgba(17,24,39,.45);opacity:0;pointer-events:none;transition:opacity .24s ease}
body.mnav-open .mnav-scrim{opacity:1;pointer-events:auto}
.bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:45;height:var(--mnav-h);padding:0 env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);background:#fff;border-top:1px solid var(--line);box-shadow:0 -4px 16px rgba(6,18,31,.06)}
.bottom-nav>.bn-item{position:relative;isolation:isolate;flex:1 1 0;min-width:0;height:var(--bn-h);min-height:44px;margin:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:6px 2px 5px;border:0;border-radius:0;background:transparent;color:#566074;font-size:.6875rem;font-weight:600;line-height:1.1;box-shadow:none}
.bottom-nav>.bn-item svg{flex:none;width:22px;height:22px}
.bottom-nav>.bn-item>.bn-label{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bottom-nav>.bn-item.bn-on{color:color-mix(in srgb,var(--blue) 70%,#000)}
.bottom-nav>.bn-item.bn-on::before{content:"";position:absolute;z-index:-1;top:5px;left:50%;width:52px;height:30px;margin-left:-26px;border-radius:999px;background:color-mix(in srgb,var(--blue) 13%,#fff)}
.bottom-nav>.bn-item:focus-visible{outline:3px solid var(--focus-ring);outline-offset:-4px;border-radius:12px}
body:has(.bottom-nav) #toast{bottom:calc(var(--mnav-h) + 14px)}
body:has(.bottom-nav) .rv-return{bottom:calc(var(--mnav-h) + 12px)}
}
@media (max-width:760px){
body:has(.bottom-nav) .team-bar{bottom:var(--mnav-h);padding-bottom:10px}
body:has(.bottom-nav):has(.team-bar) #toast,body:has(.bottom-nav):has(.team-bar) .rv-return{bottom:calc(var(--mnav-h) + 82px)}
}
@media (max-width:760px) and (min-height:501px){
body:has(.bottom-nav) #add-entry.primary,body:has(.bottom-nav) #add-season.primary{bottom:calc(var(--mnav-h) + 16px)}
body:has(.bottom-nav):has(#add-entry.primary) #toast,body:has(.bottom-nav):has(#add-season.primary) #toast,body:has(.bottom-nav):has(#add-entry.primary) .rv-return,body:has(.bottom-nav):has(#add-season.primary) .rv-return{bottom:calc(var(--mnav-h) + 84px)}
}
@media (max-width:760px) and (max-height:600px){body:has(.bottom-nav) .team-bar{padding-bottom:4px}body:has(.bottom-nav):has(.team-bar) #toast,body:has(.bottom-nav):has(.team-bar) .rv-return{bottom:calc(var(--mnav-h) + 56px)}}
@media (max-width:900px) and (max-height:500px){
body{--bn-h:44px}
.shell>.sidebar+div>.topbar{min-height:48px;padding-top:calc(2px + env(safe-area-inset-top,0px));padding-bottom:2px}
.bottom-nav>.bn-item{flex-direction:row;gap:6px;padding:0 4px;font-size:.75rem}
.bottom-nav>.bn-item svg{width:20px;height:20px}
.bottom-nav>.bn-item.bn-on::before{top:7px;left:6px;right:6px;width:auto;margin-left:0}
}
@media (max-width:900px) and (pointer:coarse){body.mnav-typing{--mnav-h:0px}body.mnav-typing .bottom-nav{display:none}}
@media (max-width:900px) and (prefers-reduced-motion:reduce){.shell>.sidebar,.shell>.sidebar.is-open,.mnav-scrim{transition:none}}
@media (max-width:900px) and (max-height:320px){.shell>.sidebar+div>.topbar{position:static}}
@media (max-width:900px) and (forced-colors:active){.bottom-nav{border-top:1px solid CanvasText}.bottom-nav>.bn-item.bn-on{outline:2px solid Highlight;outline-offset:-4px}.shell>.sidebar{border-right:2px solid CanvasText}}
/* mobile:nav end */
/* mobile:global-polish - phones: page title-row buttons sit on the right; the bottom nav shows the active page by colouring its icon and label (no background pill) */
@media (max-width:900px){
.heading{flex-direction:row;flex-wrap:wrap;align-items:flex-start;justify-content:space-between}
.heading>div:first-child{min-width:0;flex:1 1 170px}
.heading .actions{flex:0 1 auto;margin-left:auto;justify-content:flex-end;flex-wrap:wrap}
.bottom-nav>.bn-item.bn-on::before{content:none;display:none}
.bottom-nav>.bn-item.bn-on{color:var(--accent-text)}
.bottom-nav>.bn-item.bn-on svg{color:var(--accent-text);stroke-width:2.4}
.bottom-nav>.bn-item.bn-on .bn-label{font-weight:700}
}
/* mobile:global-polish end */
/* mobile:seasons - Seasons page on phones (<=760px): compact stat tiles (value + label; details and tips are hidden like the other card-list pages), the Returned strip on one line (figure left, Details button right), filters lined up with the card rows (14px gutter), the edit/create dialog notes sit close to the fields */
.sn-start-note{margin:14px 0 0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.rt-lead{margin:8px 0 0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
@media (max-width:760px){
.sn-stats{gap:8px;margin-bottom:12px}
.sn-stats .stat{padding:10px 12px}
.sn-stats .stat small,.sn-stats .tip-icon{display:none}
.sn-stats .stat label{margin-bottom:0}
.sn-stats .stat strong{font-size:1.3rem;font-variant-numeric:tabular-nums}
.sn-stats+.rt-strip{flex-wrap:nowrap;gap:8px;margin:0 0 12px;padding:4px 4px 4px 14px}
.sn-stats+.rt-strip>span{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-variant-numeric:tabular-nums}
.sn-stats+.rt-strip>button{width:auto;flex:none}
.seasons-list-panel .widefilters{padding:12px 14px}
.seasons-list-panel .rs-seasons td[data-label=Year],.seasons-list-panel .rs-seasons td[data-label=Players],.seasons-list-panel .rs-seasons td[data-label=Teams]{font-variant-numeric:tabular-nums}
}
/* mobile:seasons end */
/* mobile:reviews - Season reviews on phones: one short intro line in Create coach links (explanation in its tooltip), award tables become stacked cards (name, then Team:/Coach: lines) at <=560px with the award count under its title, team accordion headers give the name the full first line (coach label + status chip on the second) at <=480px, tidy Review schedule / Assessment skills dialog spacing */
section.rv-prereqs>.rv-prereq-head{padding:14px 20px 16px}
section.rv-prereqs>.rv-prereq-head>.rv-order-note{margin:0}
.rv-sched-form>.form-grid{margin-top:16px}
.rv-sched-form>.rv-sched-note{margin-top:12px}
.rv-sched-form p .tip-icon,#framework-form p .tip-icon{vertical-align:middle}
@media (max-width:760px){section.rv-prereqs>.rv-prereq-head{padding:12px 14px 14px}}
@media (max-width:560px){.rv-aws-ahead{flex-direction:column;align-items:flex-start;gap:2px;padding:10px 14px}
.rv-aws-table thead{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.rv-aws-table,.rv-aws-table tbody,.rv-aws-table tr,.rv-aws-table td{display:block;width:auto}
.rv-aws-table tr{padding:10px 14px;border-bottom:1px solid var(--line)}
.rv-aws-table tr:last-child{border-bottom:0}
.rv-aws-table td{padding:0!important;border:0!important;overflow-wrap:anywhere}
.rv-aws-table td[data-label]{margin-top:2px;font-size:.8125rem;color:#3b4658}
.rv-aws-table td[data-label]::before{content:attr(data-label) ": ";color:#5f6876}}
@media (max-width:480px){.rv-team>.rv-team-sum{display:grid!important;grid-template-columns:minmax(0,1fr) auto 44px 14px;grid-template-rows:auto auto;column-gap:8px;row-gap:2px;align-content:center;align-items:center}
.rv-team>.rv-team-sum>.rv-team-title{display:contents!important}
.rv-team-sum .rv-team-name{grid-column:1/3;grid-row:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25;font-weight:700}
.rv-team-sum .rv-team-meta{grid-column:1;grid-row:2;white-space:nowrap;line-height:1.25}
.rv-team-sum .rv-status{grid-column:2;grid-row:2;justify-self:end;margin-left:0}
.rv-team-sum .rv-team-slot{grid-column:3;grid-row:1/3}
.rv-team-sum .rv-team-chev{grid-column:4;grid-row:1/3;justify-self:center}}
@media (max-width:374px){.rv-awards-staff .rv-head-count>.rv-hc-word{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}
/* mobile:reviews end */
/* mobile:approvals - Approvals page (.ap-mob) and its dialogs: tighter filters, tips inline with headings, no clipped table on desktop */
.readiness-panel[aria-label="Roster readiness"]>h3{display:flex;align-items:center;gap:6px;margin:0}
.readiness-panel[aria-label="Roster readiness"]>h3+ul,.readiness-panel[aria-label="Roster readiness"]>h3+p{margin-top:10px}
dialog .ap-staff{margin:12px 0 4px;overflow-wrap:anywhere}
#allocation-form h3{display:flex;align-items:center;gap:6px;margin-bottom:8px}
#approve-roster-form .ap-lbl{display:flex;align-items:center;gap:6px}dialog .ap-staff strong{white-space:nowrap}
@media (min-width:1025px){.ap-mob .rv-approvals .readiness-summary{min-width:140px;max-width:200px}.ap-mob .rv-approvals td:first-child{white-space:normal;min-width:130px;overflow-wrap:normal}.ap-mob .rv-approvals th:nth-child(3){white-space:normal;min-width:80px}.ap-mob .rv-approvals th,.ap-mob .rv-approvals td{padding-left:12px;padding-right:12px}.ap-mob .rv-approvals th:first-child,.ap-mob .rv-approvals td:first-child{padding-left:20px}}
@media (min-width:761px) and (max-width:1024px){.ap-mob .rv-filters{display:flex;flex-wrap:wrap;gap:10px}.ap-mob .rv-filters>input{flex:1 1 100%;min-width:0}.ap-mob .rv-filters>select{flex:1 1 0;min-width:0;width:auto;max-width:none}.ap-mob .rv-filters>button{flex:none;padding:0 16px}}
@media (max-width:640px){dialog textarea[aria-label="Handover pack"]{max-height:none!important;height:calc(100dvh - 210px);min-height:240px;margin:12px 0 0!important}}
@media (max-width:760px){.ap-mob .rv-filters{padding:12px 14px;gap:8px}.ap-mob .rv-approvals tr{padding:12px 14px}.ap-mob .rv-approvals td{font-variant-numeric:tabular-nums}}
/* mobile:approvals end */
/* mobile:waitlist */
.wl-match-pool,.wl-entry-correct{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wl-set-lead,.wl-entry-lead{margin:0 0 10px}
.wl-match-note .tip-icon,.wl-set-lead .tip-icon,.wl-entry-lead .tip-icon,.wl-entry-noack .tip-icon,.wl-mgr-note .tip-icon,.wl-set-retention .tip-icon,.wl-corrections h3 .tip-icon{vertical-align:middle}
@media (max-width:760px){
.wl-list-panel .widefilters{padding:12px 14px}
.wl-list-panel .rs-stack.rs-wl tbody tr{padding:12px 14px}
.wl-list-panel .rs-stack.rs-wl td.rs-menu .card-menu-btn{min-width:44px;min-height:44px;margin:-10px -12px -10px 0}
.wl-list-panel .rs-stack.rs-wl td[data-label]{font-variant-numeric:tabular-nums}
.wl-settings .wl-set-sec{margin-top:16px;padding-top:14px}
.wl-settings .wl-set-sec:first-child{margin-top:10px;padding-top:0}
}
/* mobile:waitlist end */
/* mobile:dashboard - phones (<=760px): every Dashboard card body lines up with its 14px header padding; short stat tiles of equal height with tabular numbers; Team progress waiting box keeps its short button on the right; Team ratings rows become compact cards (team name + ⋮ on one line, Average and Rated side by side, Positions to cover below) instead of a 3-column grid with a stray ⋮ row; Squad breakdown tabs share one row */
@media (max-width:760px){
.dash-stats{gap:8px;margin-bottom:12px}
.dash-stats .stat{padding:10px 12px;display:flex;flex-direction:column;min-width:0}
.dash-stats .stat label{margin:0 0 2px;line-height:1.3}
.dash-stats .stat strong{font-variant-numeric:tabular-nums;line-height:1.2}
.dash-stats .stat small{margin-top:auto;padding-top:2px;line-height:1.3}
.dashboard-grid .tp-body{padding:12px 14px 14px}
.dashboard-grid .tp-summary{margin-bottom:10px}
.dashboard-grid .tp-waiting{padding:8px 8px 8px 12px;flex-wrap:nowrap}
.dashboard-grid .tp-waiting p{flex:1 1 auto;min-width:0}
.dashboard-grid .tp-waiting .tp-cta{flex:0 0 auto;margin-left:auto}
.dashboard-grid .dashboard-list{padding:4px 14px 10px}
.dashboard-grid .dashboard-list .dev-row{padding:8px 0;border-radius:0}
.dashboard-grid .dev-practice{margin:0}
.dashboard-grid .nu-all{margin-top:0}
.dashboard-grid .squadcard .sq-tabs{padding:12px 14px 0;flex-wrap:nowrap}
.dashboard-grid .squadcard .sq-tabs button{flex:1 1 0;min-width:0;padding:6px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dashboard-grid .squadcard .sq-panel{padding:12px 14px 14px}
.dashboard-grid .squadcard .sq-extra{margin-top:12px;padding-top:10px}
.dash-insights .di-card .analytics-body{padding:6px 14px 14px}
.dash-insights .di-card .insight-row strong{font-variant-numeric:tabular-nums}
.dash-insights .di-cta{margin-top:10px}
.dash-insights .di-empty{padding:12px 14px 14px;margin:0}
.dash-insights .di-practice{margin:0;padding:10px 14px 0}
.dash-insights .tablewrap{overflow:visible}
.dash-insights .di-table tr{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 44px;align-items:start;gap:4px 12px;padding:10px 14px 12px}
.dash-insights .di-table .st-title{grid-column:1/3;grid-row:1;align-self:center;margin:0;overflow-wrap:anywhere}
.dash-insights .di-table td{padding:0}
.dash-insights .di-table td.di-menu-cell{grid-column:3;grid-row:1;width:44px;padding:0;margin:-4px 0}
.dash-insights .di-table td.di-menu-cell .card-menu-btn{margin:0}
.dash-insights .di-table td[data-label]{font-variant-numeric:tabular-nums;font-size:.875rem;color:#202838}
.dash-insights .di-table td.st-wide{grid-column:1/-1;margin-top:2px}
.dash-insights .di-table td.st-wide::before{font-size:.75rem}
}
/* mobile:dashboard end */
/* mobile:support - Support and Account pages. Account (all widths): the action row, sessions gap and count line moved from inline styles to classes. Phones (<=760px): card bodies use the 14px header gutter; First steps are one-line rows (number, title + short line, a 44px arrow button whose accessible name stays "Go to ..."); Help topics become one bordered list with divider rows and 32px icons; the empty inbox line sits tight; Account actions are a 2-column grid and session cards line up with the card gutter. */
.acct-actions{justify-content:flex-start;flex-wrap:wrap;gap:10px;margin-top:18px}
.acct-sessions{margin-top:24px}
.acct-count{margin:12px 0}
.acct-profile .insight-row strong{min-width:0;overflow-wrap:anywhere;text-align:right}
@media (min-width:761px) and (max-width:900px){.sd-start-list{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.sd-start-item{padding:12px}}
@media (max-width:760px){
.support-grid{gap:12px}
#help-contacts>.analytics-body,.sd-roles>.analytics-body,.acct-profile>.analytics-body,.acct-sessions>.analytics-body{padding:12px 14px 14px}
.support-inbox-list>p:only-child{margin:8px 0 0}
.sd-start-list{gap:8px}
.sd-start-item{grid-template-columns:28px minmax(0,1fr) 44px;align-items:center;gap:0 12px;padding:10px 10px 10px 12px}
.sd-start-txt h3{margin:0 0 2px}
.sd-start-txt p{font-size:.8125rem;line-height:1.4}
.sd-start-item>.sd-go{grid-column:3;grid-row:1;align-self:center;justify-content:center;width:44px;min-width:44px;height:44px;padding:0;font-size:0;line-height:0}
.sd-start-item>.sd-go::after{content:"";width:8px;height:8px;margin-left:-3px;border-top:2px solid currentColor;border-right:2px solid currentColor;transform:rotate(45deg)}
.sd-grid{gap:0;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.sd-grid:not(:has(.sd-topic:not([hidden]))){border:0}
.sd-topic{margin-top:-1px;border-width:1px 0 0;border-radius:0}
.sd-topic.sd-open{box-shadow:none}
.sd-toggle{min-height:56px;padding:12px;gap:12px;border-radius:0}
.sd-ico{width:32px;height:32px;border-radius:8px}
.sd-for{margin-top:2px}
.sd-count{margin:10px 0}
.acct-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.acct-actions>button{width:100%;min-height:44px;white-space:normal;line-height:1.2;padding:6px 8px}
.acct-sessions{margin-top:12px}
.acct-count{margin:0 0 10px;font-size:.875rem}
.acct-sessions table.acct-table tbody{padding:0}
.acct-sessions table.acct-table td[data-label]::before{min-width:56px}
.acct-sessions .acct-signout{margin:12px 0 0}
.acct-sessions .acct-signout>button{width:100%}
}
/* mobile:support end */
/* mobile:staff - Staff page (staff-ui.js staffView, wrapper .staff-page): long names, emails and titles wrap instead of widening the tables; on phones the member, invitation and coach cards hide empty rows, the filters sit in two rows, and invitation status lines stack on the right */
.staff-page .staff-members td,.staff-page .staff-invites td{white-space:normal;overflow-wrap:break-word}
.staff-page .staff-members td[data-label="Email"],.staff-page .staff-invites td[data-label="Email"]{overflow-wrap:anywhere}
.staff-page .staff-members td[data-label="Role"],.staff-page .staff-invites td[data-label="Role"]{white-space:nowrap}
.staff-page .staff-members td.stack-primary,.staff-page .staff-invites td.stack-primary{min-width:140px}
.staff-page .staff-members td[data-label="Title"]{max-width:260px}
.staff-page .invite-status{font-variant-numeric:tabular-nums}
.staff-page .invite-email-status{margin-top:2px}
@media (max-width:640px){
.staff-page .widefilters:has(#staff-search){grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;padding:12px 12px 0}
.staff-page .widefilters:has(#staff-search)>select{min-width:0}
.staff-page .widefilters:has(#staff-search) #reset-staff-filters{grid-column:auto;padding:0 14px}
.staff-page table:has(td.stack-primary) td.is-empty{display:none}
.staff-page table:has(td.stack-primary) td.stack-primary,.staff-page table:has(td.stack-primary) td.stack-menu{align-self:center}
.staff-page .staff-invites table td[data-label="Status"]{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px;text-align:right}
.staff-page .staff-invites table td[data-label="Status"]::before{grid-row:1/span 2;text-align:left}
.staff-page .staff-invites table td[data-label="Status"]>span{grid-column:2}
.staff-page .staff-invites .invite-email-status{font-size:.8125rem}
.staff-page table:has(td.stack-primary) tbody{padding:12px}
.staff-page .coach-links-table td.stack-menu .card-menu-btn{margin:-8px 0}
}
@media (max-width:379px){.staff-page .widefilters:has(#staff-search){grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.staff-page .widefilters:has(#staff-search) #reset-staff-filters{grid-column:1/-1}}
/* mobile:staff end */
/* mobile:coaches - Coaches page on phones and tablets. Cards (<=1024px): 16px side padding, a 44px ⋮ button, 44px team pickers. Phones (<=760px): compact stat cards, a two-row filter bar (search + Reset, then the two selects side by side), panel header padding matching the cards; on narrow phones (<=420px) Coach of / Manager of sit as label + full-width picker rows so team names are not squashed. Coach profile / add-edit / team picker dialogs get tighter spacing. Scoped to .co-stats, .co-mob, .co-profile, .co-pick, .co-form-note. */
@media (max-width:1024px){
.co-mob .rv-coaches tr{padding:12px 16px}
.co-mob .rv-coaches td:last-child{top:0;right:4px}
.co-mob .rv-coaches .card-menu-btn{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0}
.co-mob .rv-coaches td:first-child .sub{margin-top:0}
.co-mob .teampick-btn{min-height:44px}
.co-mob .rv-filters{padding:12px 16px}
.co-mob .panel-head{padding-left:16px;padding-right:16px}
}
@media (max-width:760px){
.co-stats{gap:10px;margin-bottom:16px}
.co-stats .stat{padding:12px 14px}
.co-stats .stat label{margin-bottom:4px}
.co-mob .rv-filters{display:flex;flex-wrap:wrap;gap:8px}
.co-mob .rv-filters>input{flex:1 1 calc(100% - 92px);min-width:0;width:auto}
.co-mob .rv-filters>#reset-coach-filters{order:1;flex:0 0 auto;padding:0 14px;white-space:nowrap}
.co-mob .rv-filters>select{order:2;flex:1 1 calc(50% - 4px);width:auto}
.co-profile .stats{gap:10px;margin-bottom:16px}
.co-profile .stat{padding:12px 14px}
.co-profile .profilehero h2{overflow-wrap:anywhere}
.co-profile .empty{padding:12px 0;text-align:left}
.co-pick p,.co-form-note{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
}
@media (max-width:420px){
.co-mob .rv-coaches td:nth-child(5),.co-mob .rv-coaches td:nth-child(6){grid-column:1/-1;display:grid;grid-template-columns:84px minmax(0,1fr);align-items:center;gap:8px}
.co-mob .rv-coaches td:nth-child(5)::before,.co-mob .rv-coaches td:nth-child(6)::before{margin:0}
}
/* mobile:coaches end */
/* mobile:players - Players directory + Player profile on phones/tablets: each player is a 3-line card (name + rating / positions · years · team / trend + change), rating shows as 3.8/5 with a short "Rating" label, filters line up with the rows, and the profile's headings, captions and collapsible sections share one left edge with the rating tile on its own row */
.dir-table .dir-of{display:none}
@media (max-width:900px){
.dir-table td{font-variant-numeric:tabular-nums}
.dir-table tr{padding:6px 52px 10px 14px;row-gap:2px}
.dir-table tr::before{content:"";order:8;flex:0 0 100%;height:0}
.dir-table .c-cur{order:2;margin-left:auto;white-space:nowrap}
.dir-table .c-cur .dir-of{display:inline;font-weight:400;color:#646b75;font-size:.75rem}
.dir-table .c-pos{order:5}.dir-table .c-exp{order:6}.dir-table .c-team{order:7}
.dir-table .c-trend{order:9}.dir-table .c-last{order:10;white-space:nowrap}
.dir-table .c-player .sub{order:11}
.dir-table.nopos .c-exp::before{content:none;margin:0}
.dir-table .c-trend:has(.trend-tag:empty){display:none}
.dir-filters{padding:10px 14px}
.modalbody:has(.pim-summary) .pim-plain-head,.modalbody:has(.pim-summary) .pim-caption,.modalbody:has(.pim-summary) .pim-toggle,.modalbody:has(.pim-summary) .pim-body{padding-left:0;padding-right:0}
.modalbody:has(.pim-summary) .pim-stats{display:flex;flex-wrap:wrap}
.modalbody:has(.pim-summary) .pim-stat{flex:1 1 40%;min-width:0}
.modalbody:has(.pim-summary) .pim-stat-rating{flex-basis:100%}
.modalbody:has(.pim-summary) .pim-stat-value{font-variant-numeric:tabular-nums}
}
@media (min-width:641px) and (max-width:900px){
.dir-filters{display:flex;flex-wrap:nowrap;gap:8px}
.dir-filters>input{flex:2 1 0;min-width:0;width:auto}
.dir-filters>select{flex:1.3 1 0;min-width:0;width:auto}
.dir-filters>#selection-filters{white-space:nowrap}
}
@media (max-width:900px) and (max-height:500px) and (orientation:landscape){
.dir-stats{gap:8px;margin-bottom:12px}
.dir-stats .stat{padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.dir-stats .stat label{margin:0;font-size:.75rem;line-height:1.25;flex:1;min-width:0}
.dir-stats .stat strong{font-size:1.35rem;letter-spacing:-.5px}
.dir-stats .stat small{display:none}
.dir-stats .stat .tip-icon{position:relative;top:auto;right:auto;margin:0 0 0 4px;display:inline-flex}
}
@media (max-width:370px){
.dir-stats{grid-template-columns:minmax(0,1fr);gap:6px}
.dir-stats .stat{padding:8px 14px}
}
/* mobile:players end */
/* mobile:teambuilder - Team builder: team cards fill the row on landscape phones and tablets (no half-empty grid, names not cut short); Compare teams tables keep readable columns inside their own scroll box; Suggested teams division link reads inline; Send for approval has no empty gap above its buttons */
@media (min-width:761px) and (max-width:1100px){.workspace .teams{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}}
.cmp-intro{margin:0}.cmp-intro .tip-icon,.cmp-depth .tip-icon,.approval-request-hint .tip-icon{vertical-align:middle;margin-left:2px}
.cmp-wrap{margin-top:12px}.cmp-depth{margin:20px 0 0;font-size:1rem}.cmp-foot{margin:16px 0 0;font-size:.875rem;color:#5b6577}
.comparison-table.team-compare td{min-width:112px;font-variant-numeric:tabular-nums}.comparison-table.team-compare .sub{display:block;white-space:nowrap}
/* tb:pool-drawer Compare teams: wider dialog; the table fills it; the metric column takes its content's width and wraps long labels (never overflows into the team columns, never clipped);
   the team columns share the rest (long team names and gap lists wrap). Wider than the dialog (many teams, phones): the table scrolls in its own box with the metric column sticky. */
@media (min-width:761px){dialog:has(.team-compare){width:min(980px,94vw)}}
.comparison-table.team-compare{width:100%;min-width:100%}
.comparison-table.team-compare th[scope=row],.comparison-table.team-compare thead th:first-child{position:sticky;left:0;z-index:1;min-width:8.5rem;max-width:none;width:auto;white-space:normal;overflow-wrap:break-word;background:#fff;box-shadow:1px 0 0 var(--line)}
.comparison-table.team-compare thead th:first-child{background:#fafbfc}
.comparison-table.team-compare thead th{white-space:normal;overflow-wrap:break-word;vertical-align:bottom}
.comparison-table.team-compare td{white-space:normal;overflow-wrap:break-word}
@media (max-width:640px){.comparison-table.team-compare th[scope=row],.comparison-table.team-compare thead th:first-child{width:8.5rem;min-width:8.5rem}.comparison-table.team-compare td,.comparison-table.team-compare thead th:not(:first-child){min-width:7rem}}
dialog .rec-hint .link-btn{display:inline;min-height:0;padding:0;vertical-align:baseline;text-decoration:underline;text-underline-offset:2px}
dialog:has(#approval-request-form) .dialog-footer-msg:empty{display:none}
@media (max-width:760px){.cmp-depth{margin-top:16px}.comparison-table.team-compare th,.comparison-table.team-compare td{padding:10px}}
/* mobile:teambuilder end */
/* tb:pool-drawer: dragging is mouse-only, so touch screens don't get the "You can also drag…" hint (Add and the ⋮ menu are their way in). */
@media (pointer:coarse){.tb2-drag-hint{display:none}}
/* mobile:organisation - Organisation page on phones (<=760px): compact stat tiles (the Plan tile keeps its status line), card heads and bodies share a 16px gutter, Details rows at 44px (no tall gaps), colour swatches lined up label-left/swatch-right, setting-row category tags hidden (the ? holds the detail; the "Default for your sport" status stays), plan card ? sits beside the plan name, the export "What's included" disclosure is a 44px target; the activity dialog filters stack */
.plan-card-top .plan-badges{margin-left:auto}
.plan-card-top{justify-content:flex-start}
.export-more{margin:0 0 4px}
.export-more summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:8px;font-weight:600;color:#344563;list-style:none}
.export-more summary::-webkit-details-marker{display:none}
.export-more summary::before{content:"\25B8";color:#626a75}
.export-more[open] summary::before{content:"\25BE"}
.export-more summary:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px;border-radius:6px}
.export-more .export-cols{margin:4px 0 12px}
.activity-intro{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin:0}
.org-stack .plan-foot{display:flex;align-items:center;gap:6px}
.plan-head-tip{display:flex;align-items:center;gap:6px;margin:0 0 8px}
.plan-head-tip>h3{margin:0!important}
.plan-status h3>.tip-icon{vertical-align:middle}
@media (min-width:641px) and (max-width:1000px){.org-stack .plan-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){
#org-stats{gap:8px;margin-bottom:0}
#org-stats .stat{padding:10px 12px}
#org-stats .stat small,#org-stats .tip-icon{display:none}
#org-stats .stat:nth-child(3) small{display:block}
#org-stats .stat label{margin-bottom:0}
#org-stats .stat strong{font-size:1.3rem;font-variant-numeric:tabular-nums}
.org-stack{gap:16px;margin-top:16px}
.org-stack>.panel>.panel-head,.org-stack>.panel>details>summary.panel-head{padding-left:16px;padding-right:16px}
.org-stack>.panel>.analytics-body,.org-stack>.panel>details>.analytics-body{padding:16px}
.org-stack .plan-page{gap:20px}
.org-stack .plan-status{padding:14px}
.org-stack .plan-card{padding:14px}
.org-details .org-fields .insight-row{margin:0;min-height:44px;align-items:center;gap:12px}
.org-details .org-section-head{margin-bottom:4px}
.org-details .analytics-body>.org-section+.org-section{margin-top:16px}
.org-details .org-section{padding-top:16px}
.org-settings-card .org-row-title .tag:not(.org-default-tag){display:none}
.org-settings-card .org-row-title{gap:4px 8px;flex-wrap:nowrap}
.org-settings-card .org-row-title h3{min-width:0}
.org-settings-card .org-row-title .tip-icon{flex:none}
.participant-settings .org-row-title{flex-wrap:wrap}
.org-settings-card .org-row{column-gap:12px}
.org-stack .danger-zone summary.panel-head{padding-left:16px;padding-right:16px}
.activity-filters{grid-template-columns:minmax(0,1fr)!important;gap:8px}
dialog:has(#activity-filters) .modalhead{flex-wrap:wrap;row-gap:8px;position:sticky}
dialog:has(#activity-filters) .modalhead h2{flex:1 1 100%;min-width:0;padding-right:52px;align-self:center;min-height:44px;display:flex;align-items:center}
dialog:has(#activity-filters) .modal-actions{flex:1 1 100%;flex-wrap:nowrap;justify-content:stretch;gap:8px}
dialog:has(#activity-filters) .modal-actions [data-plabel]{flex:1 1 0;min-width:0;padding:0 8px;overflow:hidden}
dialog:has(#activity-filters) .modal-actions [data-plabel]::after{overflow:hidden;text-overflow:ellipsis}
dialog:has(#activity-filters) .modal-actions #close{position:absolute;top:calc(10px + env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right))}
}
/* mobile:organisation end */
/* mobile:dialogs-global - (1) an empty dialog footer message no longer reserves a blank line above the Save buttons (it stays in the page, hidden, so later messages still appear); (2) on narrow phones, dialogs with two or more labelled header buttons show those buttons as icons only, so the dialog title isn't crushed (each button keeps its aria-label and tooltip) */
.dialog-footer .dialog-footer-msg:empty{min-height:0;height:0;margin:0;padding:0}
@media (max-width:480px){
dialog:not(:has(#activity-filters)) .modalhead:has(.modal-actions [data-plabel] ~ [data-plabel]) .modal-actions [data-plabel]{padding:0;width:44px;min-width:44px}
dialog:not(:has(#activity-filters)) .modalhead:has(.modal-actions [data-plabel] ~ [data-plabel]) .modal-actions [data-plabel]::after{content:none}
.modalhead h2{min-width:0;overflow-wrap:anywhere}
}
/* mobile:dialogs-global end */
/* sweep:form */
#public-intake .wl-mixed,#public-intake .wl-decls{margin:18px 0 0;padding:12px 14px;min-width:0;border:1px solid #dfe5ef;border-radius:10px}
#public-intake .wl-mixed legend,#public-intake .wl-decls legend{padding:0 6px;font-weight:600;font-size:.95rem}
#public-intake .wl-mixed-opts{display:flex;flex-wrap:wrap;gap:4px 22px}
#public-intake .wl-mixed-opts .wl-check{flex:0 0 auto;align-items:center}
#public-intake .wl-mixed-opts input,#public-intake .wl-decls input{width:22px;height:22px;flex:0 0 auto;margin:2px 0 0}
#public-intake .wl-decl .wl-opt{font-size:.875rem}
#public-intake .wl-primary-note{margin:4px 0 10px}
#public-intake .wl-emergency{margin-top:4px}
.wl-decl-settings{margin-top:6px}
.wl-decl-settings .wl-decl-title{font-weight:600}
.wl-decl-row{border:1px solid #dfe5ef;border-radius:10px;padding:10px 12px;margin:10px 0;background:#fafbfd}
.wl-decl-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.wl-decl-head strong{flex:1 1 140px;min-width:0}
.wl-decl-head select{width:auto;min-height:40px}
.wl-decl-tools{display:inline-flex;gap:4px}
.wl-decl-tools .icon-btn{min-width:40px;min-height:40px}
.wl-decl-row textarea{width:100%}
.wl-decl-add{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.tag-emergency{background:#fff4e5;color:#8a4b00;margin-left:6px}
.rs-stack td.rs-title .tag-emergency{margin-left:0}
.iu-emergency-missing{margin:12px 0;border-left:4px solid #d98200}
.iu-decls .insight-row span:last-child{white-space:nowrap}
@media (max-width:480px){.wl-decl-head strong{flex-basis:100%}.iu-decls .insight-row span:last-child{white-space:normal}}
/* sweep:form end */
/* season:single-confirm - phones show the dialog's main action once, in the labelled bottom bar; the in-dialog copy of "Complete season / Move to …" (#confirm-stage-text) is only needed on desktop, where the header action is icon-only */
@media (max-width:760px){dialog:has(.modal-actions #confirm-stage) p:has(> #confirm-stage-text){display:none}}
/* season:single-confirm end */

/* dots:no-unregistered */
/* The red not-registered dot is gone (owner): no markup carries .nc-off any more; no dot means not registered. */
/* dots:no-unregistered end */
/* dots:static */
/* Player dots are plain indicators for every role (owner: no accidental taps): no pointer, even on hover (beats .nc-dot:hover{cursor:pointer}). */
span.nc-dot,span.nc-dot:hover{cursor:default}
/* dots:static end */
/* handover:email */
.modalbody label.handover-emergency{display:inline-flex;align-items:center;gap:8px;margin:12px 0 4px;font-weight:600;min-height:44px}
.modalbody label.handover-emergency input{width:20px;height:20px;margin:0}
.modalbody .handover-email-why{margin:0 0 8px}
/* handover:email end */
/* teams:names - team names: one line, ellipsis only when the name truly does not fit, full name in a title. Team builder: the name is the rename button on every device (editors, open draft teams); a pencil shows on hover/keyboard focus (no space is reserved for it otherwise) and touch screens get a dotted underline instead; the rename box fills the title area (44px, 16px text). The division label and age-band chip shrink before the name, and on narrow cards (<=440px: phones and most desktop columns) they leave the title row so the name gets the room (the outside-band warning chip stays). Header heights are unchanged (headers:exact). */
.team>.team-title .team-heading>.division-label,.team>.team-title .team-heading>.age-band-tag{flex-shrink:60;min-width:2.6em}
@container (max-width:440px){.team>.team-title .team-heading>.division-label,.team>.team-title .team-heading>.age-band-tag{display:none}}
.team>.team-title .team-heading>button.team-name{display:inline-flex;align-items:center;gap:4px;min-height:44px;min-width:3.5em;max-width:100%;padding:0 2px 0 0;margin:0;border:0;border-radius:6px;background:none;font:inherit;font-weight:inherit;color:inherit;cursor:pointer;text-decoration:none;-webkit-tap-highlight-color:transparent}
.team>.team-title .team-heading>button.team-name:hover{background:none;text-decoration:none}
.team>.team-title button.team-name>.team-name-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.team>.team-title button.team-name:hover>.team-name-text{text-decoration:underline dotted;text-underline-offset:3px}
.team>.team-title button.team-name>.team-name-pencil{display:none;flex:none;color:#4b5565}
.team>.team-title button.team-name:hover>.team-name-pencil,.team>.team-title button.team-name:focus-visible>.team-name-pencil{display:block}
.team>.team-title button.team-name:focus-visible{outline:3px solid var(--focus-ring);outline-offset:-3px}
@media (hover:none){.team>.team-title button.team-name>.team-name-text{text-decoration:underline dotted #8b94a3;text-underline-offset:3px}}
.team>.team-title .team-heading.is-renaming{flex:1 1 auto;overflow:visible;padding-right:0}
.team>.team-title .team-heading.is-renaming>:not(.team-name-input){display:none}
.team>.team-title .team-heading>.team-name-input{flex:1 1 auto;box-sizing:border-box;width:100%;min-width:0;max-width:none;height:44px;margin:0;padding:0 10px;border:2px solid var(--blue);border-radius:8px;background:#fff;color:#202838;font:inherit;font-size:16px;font-weight:600;overflow:visible;text-overflow:clip}
.team>.team-title .team-heading>.team-name-input:focus{outline:none;box-shadow:0 0 0 2px var(--focus-ring)}
.tn-trunc{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
.tp-open>strong.tn-trunc{display:block;overflow-wrap:normal}
td .tn-trunc{max-width:min(22rem,58vw)}
.dash-insights .di-table .st-title{overflow-wrap:normal}
#insights-team,#coverage-team,#placement-destination,.panel-head>select{text-overflow:ellipsis}
/* teams:names end */

/* wizard:form-step - the early waitlist form questions and the per-team coach / team manager questions in Set up your club (onboarding-ui.js) */
.wiz .wiz-team-of{margin:0 0 6px;font-size:.875rem;font-weight:600;color:var(--muted)}
.wiz .wiz-staff-rest{margin:8px 0 0}
.wiz .wiz-staff-done{min-height:44px}
.wiz .wiz-coc-text{margin:-4px 0 12px;font-style:italic;overflow-wrap:anywhere}
.wiz .wiz-chips li{overflow-wrap:anywhere;max-width:100%}
.wiz #wiz-form-link{width:100%;min-width:0;font-size:1rem}
/* wizard:form-step end */
/* metrics:icons - every metric card (.stat from the shared stat() helper) shows a decorative icon tile on the left spanning the card's content height; one tint per meaning, light tiles on the light card surface, dark variants for a dark theme, smaller tile on phones */
:root{--micon-blue-bg:var(--accent-tint);--micon-blue-fg:var(--accent-text);--micon-green-bg:#e3f4ea;--micon-green-fg:#1d8048;--micon-amber-bg:#fcf0d9;--micon-amber-fg:#a86400;--micon-violet-bg:#efe9fc;--micon-violet-fg:#6f3fd2;--micon-teal-bg:#dff3f1;--micon-teal-fg:#0d7a74;--micon-rose-bg:#fde7eb;--micon-rose-fg:#bf3653;--micon-indigo-bg:#e8e9fb;--micon-indigo-fg:#4549c2;--micon-orange-bg:#fdebdf;--micon-orange-fg:#bb5016;--micon-slate-bg:#edf0f4;--micon-slate-fg:#526077}
:root[data-theme="dark"]{--micon-blue-bg:color-mix(in srgb,var(--blue) 30%,#06121f);--micon-blue-fg:color-mix(in srgb,var(--blue) 40%,#fff);--micon-green-bg:#16352a;--micon-green-fg:#7fd6a2;--micon-amber-bg:#3a2c12;--micon-amber-fg:#f2c26b;--micon-violet-bg:#2c2147;--micon-violet-fg:#c3a8ff;--micon-teal-bg:#123634;--micon-teal-fg:#72d4cb;--micon-rose-bg:#3f1a24;--micon-rose-fg:#ff9fb3;--micon-indigo-bg:#22244a;--micon-indigo-fg:#a9acff;--micon-orange-bg:#3d2414;--micon-orange-fg:#ffb07f;--micon-slate-bg:#252c38;--micon-slate-fg:#b5c0d2}
.stats .stat:has(>.micon){display:flex;flex-direction:row;align-items:stretch;justify-content:flex-start;gap:14px}
.stat>.stat-body{flex:1 1 auto;min-width:0}
.stat>.micon{flex:0 0 auto;align-self:stretch;width:60px;min-height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--micon-bg);color:var(--micon-fg)}
.stat>.micon svg{width:24px;height:24px;stroke-width:1.8}
.stat>.micon-blue{--micon-bg:var(--micon-blue-bg);--micon-fg:var(--micon-blue-fg)}
.stat>.micon-green{--micon-bg:var(--micon-green-bg);--micon-fg:var(--micon-green-fg)}
.stat>.micon-amber{--micon-bg:var(--micon-amber-bg);--micon-fg:var(--micon-amber-fg)}
.stat>.micon-violet{--micon-bg:var(--micon-violet-bg);--micon-fg:var(--micon-violet-fg)}
.stat>.micon-teal{--micon-bg:var(--micon-teal-bg);--micon-fg:var(--micon-teal-fg)}
.stat>.micon-rose{--micon-bg:var(--micon-rose-bg);--micon-fg:var(--micon-rose-fg)}
.stat>.micon-indigo{--micon-bg:var(--micon-indigo-bg);--micon-fg:var(--micon-indigo-fg)}
.stat>.micon-orange{--micon-bg:var(--micon-orange-bg);--micon-fg:var(--micon-orange-fg)}
.stat>.micon-slate{--micon-bg:var(--micon-slate-bg);--micon-fg:var(--micon-slate-fg)}
@media (min-width:761px){.stat-body>small{display:block;margin:4px 0 0}}
@media (forced-colors:active){.stat>.micon{border:1px solid CanvasText}}
@media (max-width:760px){
.stats .stat:has(>.micon){gap:10px}
.stat>.micon{width:34px;min-height:34px;border-radius:9px}
.stat>.micon svg{width:18px;height:18px}
.dash-stats .stat>.stat-body{display:flex;flex-direction:column}
}
@media (max-width:640px){
.dir-stats .stat>.stat-body{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:8px}
}
@media (max-width:900px) and (max-height:500px) and (orientation:landscape){
.dir-stats .stat>.stat-body{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:8px}
}
@media (max-width:370px){
.stats .stat:has(>.micon){gap:8px}
.stat>.micon{width:30px;min-height:30px;border-radius:8px}
.stat>.micon svg{width:16px;height:16px}
}
/* metrics:icons end */
/* positions:two-selects */
#public-intake .wl-pos2{margin:14px 0 6px}
#public-intake .wl-pos2 select{width:100%;min-height:48px}
#public-intake .wl-pos2 select:disabled{opacity:.6;cursor:not-allowed}
#correct-entry-form .iu-pos2{margin-top:12px}
#correct-entry-form .iu-pos2 select{width:100%;min-height:44px}
#correct-entry-form .iu-pos-extra{margin:6px 0 0;font-size:.875rem;color:#5e6b7f}
.avatar[data-avatar-long]{letter-spacing:-.03em}
/* positions:two-selects end */
/* metrics:square - metric card icon tiles are square and vertically centred (not stretched to the card height), and coloured by POSITION in each page's metric row: 1st blue, 2nd green, 3rd amber, 4th violet, repeating; the icon still follows the meaning; overrides the per-meaning tones of the metrics:icons block */
.stats>.stat:has(>.micon){align-items:stretch}
.stats>.stat>.micon{align-self:center;width:64px;height:64px;min-height:0;aspect-ratio:1/1;border-radius:12px}
.stats>.stat>.micon svg{width:28px;height:28px}
.stats>.stat:nth-child(4n+1)>.micon{--micon-bg:var(--micon-blue-bg);--micon-fg:var(--micon-blue-fg)}
.stats>.stat:nth-child(4n+2)>.micon{--micon-bg:var(--micon-green-bg);--micon-fg:var(--micon-green-fg)}
.stats>.stat:nth-child(4n+3)>.micon{--micon-bg:var(--micon-amber-bg);--micon-fg:var(--micon-amber-fg)}
.stats>.stat:nth-child(4n+4)>.micon{--micon-bg:var(--micon-violet-bg);--micon-fg:var(--micon-violet-fg)}
@media (max-width:760px){
.stats>.stat>.micon{width:40px;height:40px;border-radius:10px}
.stats>.stat>.micon svg{width:20px;height:20px}
}
@media (max-width:370px){
.stats>.stat>.micon{width:36px;height:36px;border-radius:9px}
.stats>.stat>.micon svg{width:18px;height:18px}
}
/* metrics:square end */
/* tb2:preview - Team builder (preview) page (tb2-ui.js): owner-only nav item with a Preview badge, team tabs (neutral / blue when full / green once sent for approval), a clear-glass sport field with a slow light-blue shimmer (none with prefers-reduced-motion), Team overview card and the Unplaced players drawer (right side; bottom sheet on phones). Scoped to .tb2-* classes. */
.nav .tb2-nav .tb2-nav-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav .tb2-nav .tb2-badge{flex:none;padding:1px 6px;font-size:.625rem}
.tb2-badge{display:inline-flex;align-items:center;margin-left:auto;padding:1px 7px;border-radius:999px;background:var(--micon-blue-bg,var(--accent-tint));color:var(--accent-ink);font-size:.6875rem;font-weight:700;letter-spacing:.02em;line-height:1.5}
.tb2-badge--head{margin:0;align-self:center;font-size:.75rem;padding:3px 9px}
.tb2-page{--tb2-blue:var(--accent-ink);--tb2-blue-bg:var(--accent-tint);--tb2-blue-line:var(--blue);--tb2-green:#17693b;--tb2-green-bg:#e3f4ea;--tb2-green-line:#1d8048;--tb2-ink:#1f2a3d;--tb2-soft:#4a566d}
.tb2-body{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:start;margin-top:20px}
.tb2-main{min-width:0}
.tb2-tabsbar{display:flex;align-items:center;gap:6px;margin-bottom:12px;min-width:0}
.tb2-tabs{display:flex;gap:4px;flex:1 1 auto;min-width:0;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;border-bottom:1px solid var(--line);padding:2px 2px 0}
.tb2-tabs::-webkit-scrollbar{display:none}
.tb2-arrow{flex:none;width:36px;min-height:40px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--tb2-soft);font-size:1.25rem;line-height:1;cursor:pointer}
.tb2-arrow:disabled{opacity:.4;cursor:default}
.tb2-tab{flex:none;display:inline-flex;align-items:center;gap:8px;max-width:240px;min-height:44px;padding:8px 14px;border:0;border-bottom:3px solid transparent;border-radius:8px 8px 0 0;background:transparent;color:var(--tb2-soft);font:inherit;font-size:.9rem;font-weight:500;cursor:pointer}
.tb2-tab:hover{background:#f1f3f7}
.tb2-tab:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}
.tb2-tab-name{min-width:0;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tb2-tab-count{flex:none;padding:1px 7px;border-radius:999px;background:#edf0f4;color:#4a566d;font-size:.75rem;font-weight:600}
.tb2-tab.is-selected{color:var(--tb2-ink);font-weight:700;border-bottom-color:#4a566d;background:#fff}
.tb2-tab--full{background:var(--tb2-blue-bg);color:var(--tb2-blue)}
.tb2-tab--full .tb2-tab-count{background:var(--accent-tint-2);color:var(--tb2-blue)}
.tb2-tab--full:hover{background:var(--accent-tint-2)}
.tb2-tab--full.is-selected{background:var(--tb2-blue-bg);color:var(--tb2-blue);border-bottom-color:var(--tb2-blue-line)}
.tb2-tab--sent,.tb2-tab--approved{background:var(--tb2-green-bg);color:var(--tb2-green)}
.tb2-tab--sent .tb2-tab-count,.tb2-tab--approved .tb2-tab-count{background:#cdebd8;color:var(--tb2-green)}
.tb2-tab--sent:hover,.tb2-tab--approved:hover{background:#d6efdf}
.tb2-tab--sent.is-selected,.tb2-tab--approved.is-selected{background:var(--tb2-green-bg);color:var(--tb2-green);border-bottom-color:var(--tb2-green-line)}
.tb2-dot{flex:none;width:8px;height:8px;border-radius:50%;background:#9aa3b2}
.tb2-dot--review{background:#c27c0e}
.tb2-dot--approved{background:#1d8048}
.tb2-unplaced{flex:none;min-height:40px;padding:0 14px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--tb2-ink);font-weight:600;white-space:nowrap;cursor:pointer}
.tb2-unplaced[aria-expanded="true"]{border-color:var(--blue);color:var(--tb2-blue)}
.tb2-fieldcard{overflow:visible;padding:18px}
.tb2-ft{display:flex;align-items:center;gap:6px 12px;flex-wrap:wrap;margin:0 0 12px;padding:8px 12px;border:1px dashed var(--accent-border);border-radius:10px;background:var(--accent-wash)}
.tb2-ft-label{margin:0;font-size:.8rem;color:#4a566d}
.tb2-ft-label b{color:var(--tb2-ink)}
.tb2-ft-tabs{display:flex;gap:4px;flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:thin;padding:2px}
.tb2-ft-tab{flex:none;min-height:36px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:#fff;color:#4a566d;font:inherit;font-size:.8rem;font-weight:600;cursor:pointer;white-space:nowrap}
.tb2-ft-tab.is-on{border-color:var(--blue);background:var(--tb2-blue-bg);color:var(--tb2-blue)}
.tb2-ft-tab:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}
.tb2-ft-banner{margin:0 0 12px;padding:8px 12px;border-radius:8px;background:#fff8ec;color:#6b4a12;font-size:.8rem}
.tb2-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.tb2-title{min-width:0;flex:1 1 260px}
.tb2-name{margin:0;font-size:1.35rem;line-height:1.25;min-width:0}
.tb2-name .team-name{display:inline-flex;align-items:center;gap:8px;max-width:100%;border:0;background:none;padding:0;font:inherit;color:inherit;cursor:pointer;overflow:hidden}
.tb2-name .team-name-text,.tb2-name span.team-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tb2-name .team-name-pencil{flex:none;color:var(--accent-text);opacity:.75}
.tb2-name .team-name-input{font:inherit;width:min(100%,420px);padding:4px 8px;border:1px solid var(--blue);border-radius:6px}
.tb2-staff{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:6px 0 0;font-size:.85rem;color:var(--tb2-soft)}
.tb2-sep{color:#5f6876}
.tb2-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tb2-menu-wrap{position:relative;display:inline-flex}
.tb2-menu-wrap>.team-menu{margin:0}
.tb2-btn{min-height:40px;padding:0 14px;border-radius:8px;background:#fff;font-weight:600;font-size:.875rem;cursor:pointer}
.tb2-btn:disabled{opacity:.5;cursor:default}
.tb2-btn--danger{border:1px solid #d64545;color:#b42318}
.tb2-btn--danger:hover:not(:disabled){background:#fdeceb}
.tb2-btn--danger-solid{min-height:44px;border:1px solid #b42318;background:#b42318;color:#fff}
.tb2-btn--blue{border:1px solid var(--blue);color:var(--tb2-blue)}
.tb2-btn--blue:hover:not(:disabled){background:var(--tb2-blue-bg)}
.tb2-field{position:relative;border-radius:18px;min-height:440px;isolation:isolate}
.tb2-glass{position:absolute;inset:0;z-index:0;border-radius:inherit;overflow:hidden;pointer-events:none;background:linear-gradient(160deg,color-mix(in srgb,var(--accent-tint) 92%,transparent),color-mix(in srgb,var(--accent-tint-2) 62%,transparent) 55%,color-mix(in srgb,var(--accent-tint) 85%,transparent));border:1px solid color-mix(in srgb,var(--blue) 18%,transparent);box-shadow:inset 0 1px 0 rgba(255,255,255,.95),inset 0 0 0 1px rgba(255,255,255,.45),0 12px 32px -16px color-mix(in srgb,var(--blue) 35%,transparent);-webkit-backdrop-filter:blur(10px) saturate(1.2);backdrop-filter:blur(10px) saturate(1.2)}
.tb2-glass::after{content:'';position:absolute;inset:0;background:linear-gradient(105deg,transparent 30%,color-mix(in srgb,var(--accent-ring) 30%,transparent) 44%,rgba(255,255,255,.45) 50%,color-mix(in srgb,var(--accent-ring) 30%,transparent) 56%,transparent 70%);background-size:260% 100%;background-position:160% 0;animation:tb2-shimmer 9s linear infinite}
@keyframes tb2-shimmer{from{background-position:160% 0}to{background-position:-60% 0}}
.tb2-lines{position:absolute;inset:14px;width:calc(100% - 28px);height:calc(100% - 28px);fill:none;stroke:color-mix(in srgb,var(--blue) 30%,transparent);stroke-width:1.5}
.tb2-lines *{vector-effect:non-scaling-stroke}
.tb2-rows{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:space-around;gap:22px;min-height:440px;padding:30px 22px}
.tb2-row{display:flex;flex-direction:column;align-items:center;gap:8px}
.tb2-zone{padding:2px 10px;border-radius:999px;background:rgba(255,255,255,.75);color:#3d4a63;font-size:.6875rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.tb2-row-cards{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;width:100%}
.tb2-spot{width:13.75rem;max-width:100%}
.tb2-spot>.player{height:100%;box-sizing:border-box;padding:10px 8px 10px 10px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 6px 16px -10px rgba(6,18,31,.35)}
.tb2-spot>.player.over-cap{border-color:#d64545}
.tb2-spot .positions,.tb2-pool .positions{display:none}
.tb2-spot .avatar,.tb2-pool .avatar{width:34px;height:34px;font-size:.7rem}
.tb2-open{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:7.5rem;min-height:58px;border:1.5px dashed color-mix(in srgb,var(--blue) 38%,transparent);border-radius:12px;background:rgba(255,255,255,.35);color:#3d4a63;font-size:.8rem}
.tb2-add{position:relative;width:13.75rem;max-width:100%;box-sizing:border-box;padding:10px;border:1.5px dashed color-mix(in srgb,var(--blue) 55%,transparent);border-radius:12px;background:rgba(255,255,255,.7)}
.tb2-add-label{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--tb2-blue);font-size:.875rem;margin-bottom:6px}
.tb2-plus{display:inline-flex;align-items:center;justify-content:center;flex:none;width:24px;height:24px;border-radius:50%;background:var(--tb2-blue-bg);color:var(--tb2-blue);font-weight:700}
.tb2-add input{width:100%;min-height:40px;box-sizing:border-box}
.tb2-add-list{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:30;margin:0;padding:4px;list-style:none;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 30px rgba(6,18,31,.18);max-height:280px;overflow-y:auto}
.tb2-opt{display:flex;align-items:center;gap:8px;min-height:44px;padding:4px 8px;border-radius:8px;cursor:pointer}
.tb2-opt[aria-selected="true"],.tb2-opt:hover{background:var(--tb2-blue-bg)}
.tb2-opt .avatar{width:28px;height:28px;font-size:.65rem;flex:none}
.tb2-opt-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.tb2-opt-where{flex:none;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;color:#4a566d}
.tb2-add-msg{margin:6px 0 0;font-size:.75rem;color:#4a566d}
.tb2-add-msg:empty{display:none}
.tb2-add--full{display:flex;gap:8px;align-items:flex-start;border-color:#e0a23a;background:#fff8ec}
.tb2-add--full p{margin:0;font-size:.8rem;color:#6b4a12}
.tb2-bench{margin-top:16px;padding:12px;border:1px dashed #cfd6e3;border-radius:12px;background:#fafbfc}
.tb2-bench-title{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:.875rem}
.tb2-bench-title span:first-of-type{padding:0 7px;border-radius:999px;background:#edf0f4;font-size:.75rem}
.tb2-bench-hint{font-weight:400;color:#5f6876;font-size:.75rem;margin-left:auto}
.tb2-bench .tb2-row-cards{justify-content:flex-start}
.tb2-empty{padding:30px 16px;text-align:center;color:#5f6876}
.tb2-overview .panel-head h2{font-size:1.05rem}
.tb2-ov-body{padding:4px 18px 18px}
.tb2-ov-stats{margin:0}
.tb2-ov-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}
.tb2-ov-row dt{color:#4a566d;font-size:.875rem}
.tb2-ov-row dd{margin:0;text-align:right;color:var(--tb2-ink)}
.tb2-ov-row strong{font-size:1.15rem}
.tb2-ov-rating dd{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px 8px}
.tb2-star{color:#8a5a00}
.tb2-of{font-size:.8rem;color:#5f6876;font-weight:500}
.tb2-norating{font-size:.875rem;color:#5f6876;font-weight:500}
.tb2-trend{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:999px;font-size:.75rem;font-weight:700}
.tb2-trend--up{background:var(--tb2-green-bg);color:var(--tb2-green)}
.tb2-trend--down{background:#fde7eb;color:#a32a44}
.tb2-trend--flat{background:#edf0f4;color:#4a566d}
.tb2-since{flex-basis:100%;font-size:.7rem;color:#5f6876}
.tb2-ov-section{margin-top:16px}
.tb2-ov-section h3{display:flex;justify-content:space-between;margin:0 0 10px;font-size:.875rem}
.tb2-ov-section h3 span{font-weight:500;color:#5f6876}
.tb2-chips{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.tb2-chip{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:32px;box-sizing:border-box;padding:0 8px;border-radius:8px;font-size:.75rem;font-weight:700}
.tb2-chip.is-on{background:var(--tb2-green-bg);color:var(--tb2-green)}
.tb2-chip.is-off{background:#fff;color:#8a5a00;border:1px dashed #d9a441}
.tb2-notes-label{display:block;font-weight:700;font-size:.875rem;margin-bottom:8px}
.tb2-notes{width:100%;box-sizing:border-box;min-height:96px;padding:10px;border:1px solid #cfd6e3;border-radius:8px;font:inherit;font-size:.9rem;resize:vertical}
.tb2-notes[readonly]{background:#f6f7f9}
.tb2-notes-state{min-height:1.2em;margin:4px 0 0;font-size:.75rem;color:var(--tb2-green)}
.tb2-send{margin-top:16px}
.tb2-send-btn{width:100%;min-height:48px;border-radius:10px;font-weight:700}
.tb2-send-why{margin:8px 0 0;font-size:.8rem;color:#4a566d;text-align:center}
.tb2-drawer{position:fixed;top:0;right:0;bottom:0;z-index:60;display:flex;flex-direction:column;width:min(400px,92vw);background:#fff;border-left:1px solid var(--line);box-shadow:-16px 0 40px rgba(6,18,31,.18)}
.tb2-drawer[hidden]{display:none}
.tb2-drawer-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 18px;border-bottom:1px solid var(--line)}
.tb2-drawer-head h2{margin:0;font-size:1.05rem}
.tb2-drawer-head h2 span{color:#5f6876;font-weight:500}
.tb2-drawer-close{flex:none;width:44px;height:44px;border:1px solid var(--line);border-radius:8px;background:#fff}
.tb2-drawer-filters{display:flex;gap:8px;padding:12px 18px}
.tb2-drawer-filters input{flex:1;min-width:0;min-height:40px}
.tb2-drawer-note{margin:0 18px 8px;padding:8px 10px;border-radius:8px;background:#fff8ec;color:#6b4a12;font-size:.8rem}
.tb2-drawer-list{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 18px 18px}
.tb2-pool{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.tb2-pool-item{display:flex;align-items:center;gap:8px}
.tb2-pool-item[hidden]{display:none}
.tb2-pool-item>.player{flex:1;min-width:0;padding:8px;border:1px solid var(--line);border-radius:10px;background:#fff}
.tb2-pool-add{flex:none}
.tb2-pool-empty{padding:20px 0;text-align:center;color:#5f6876}
.tb2-confirm{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;flex-wrap:wrap}
.tb2-confirm .primary{min-height:44px;border-radius:8px}
.tb2-fill-list{margin:12px 0 0;padding:0;list-style:none;display:grid;gap:8px;max-height:50vh;overflow-y:auto}
.tb2-fill-list li{display:flex;align-items:center;gap:10px}
.tb2-fill-list .avatar{flex:none;width:32px;height:32px;font-size:.65rem}
.tb2-fill-list .sub{display:block;font-size:.75rem;color:#5f6876}
@media (min-width:1101px){.tb2-overview{position:sticky;top:calc(var(--sticky-top,0px) + 12px)}}
@media (max-width:1100px){.tb2-body{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){
.tb2-tabsbar{flex-wrap:wrap}
.tb2-ft-tabs{flex-basis:100%}
.tb2-ft-tab{min-height:44px}
.tb2-tabs{flex-basis:calc(100% - 84px)}
.tb2-unplaced{flex-basis:100%;order:3}
.tb2-tab{max-width:200px;padding:8px 10px}
.tb2-tab-name{max-width:120px}
.tb2-fieldcard{padding:12px}
.tb2-actions{width:100%}
.tb2-actions .tb2-btn{flex:1 1 auto}
.tb2-field,.tb2-rows{min-height:0}
.tb2-rows{padding:18px 10px;gap:16px}
.tb2-row-cards{flex-direction:column;align-items:stretch;gap:6px}
.tb2-spot,.tb2-add{width:auto}
.tb2-open{width:auto;min-height:40px}
.tb2-spot>.player{padding:6px 6px 6px 8px}
.tb2-drawer{top:auto;left:0;right:0;bottom:var(--sticky-bottom,0px);width:auto;max-height:78vh;max-height:78dvh;border-left:0;border-top:1px solid var(--line);border-radius:16px 16px 0 0;box-shadow:0 -16px 40px rgba(6,18,31,.2)}
}
@media (prefers-reduced-motion:reduce){.tb2-glass::after{animation:none;background-position:50% 0;opacity:.6}.tb2-tabs{scroll-behavior:auto}}
/* tb2:preview end */
/* positions:tertiary */
@media(min-width:720px){#public-intake#public-intake .intake-section .form-grid.wl-pos2,#public-intake#public-intake .form-grid.wl-pos2{grid-template-columns:repeat(3,minmax(0,1fr))}}
#player-editor .iu-pos2 select,#entry-form .iu-pos2 select{width:100%;min-height:44px}
#player-editor .iu-pos2,#entry-form .iu-pos2{margin-top:12px}
#player-editor .iu-pos2 select:disabled,#entry-form .iu-pos2 select:disabled,#correct-entry-form .iu-pos2 select:disabled{opacity:.6;cursor:not-allowed}
#player-editor .iu-pos-extra,#entry-form .iu-pos-extra,#correct-entry-form .iu-pos-extra{margin:6px 0 0;font-size:.875rem;color:#5e6b7f}
#player-editor .iu-pos-extra p,#entry-form .iu-pos-extra p,#correct-entry-form .iu-pos-extra p{margin:4px 0}
#player-editor .iu-pos-rm,#entry-form .iu-pos-rm,#correct-entry-form .iu-pos-rm{display:inline-flex;align-items:center;gap:4px;min-height:32px;padding:2px 10px;margin:2px 4px 2px 0;border:1px solid #cfd6e2;border-radius:999px;background:#fff;color:#202838;font:inherit;font-size:.8125rem;cursor:pointer}
#player-editor .iu-pos-rm:focus-visible,#entry-form .iu-pos-rm:focus-visible,#correct-entry-form .iu-pos-rm:focus-visible{outline:3px solid var(--focus-ring);outline-offset:1px}
/* positions:tertiary end */
/* tb2:perspective - owner: the field recedes away from the viewer (top narrower than the bottom, like a 3D pitch) and is closer to square. Only the glass + line art tilts; player cards stay flat and readable, with upper rows tucked in to follow the narrowing sides. */
.tb2-field{aspect-ratio:1/.92;perspective:1100px;perspective-origin:50% 0}
.tb2-rows{min-height:100%;box-sizing:border-box}
.tb2-glass{top:-7%;transform:rotateX(24deg);transform-origin:50% 100%;will-change:transform}
.tb2-rows>.tb2-row:first-child{padding-inline:9%}
.tb2-rows>.tb2-row:nth-child(2):not(:last-child){padding-inline:4.5%}
.tb2-rows>.tb2-row:only-child{padding-inline:4%}
@media (max-width:760px){.tb2-field{aspect-ratio:auto;perspective:900px}.tb2-glass{top:-3%;transform:rotateX(14deg)}.tb2-rows>.tb2-row:first-child{padding-inline:6%}.tb2-rows>.tb2-row:nth-child(2):not(:last-child){padding-inline:3%}.tb2-rows>.tb2-row:only-child{padding-inline:2%}}
@media (prefers-reduced-motion:reduce){.tb2-glass{will-change:auto}}
/* tb2:perspective end */
/* tb2:perspective2 - owner: tilt the field further so it can be shorter, and shrink player cards row by row toward the far (top) end so they still fit the narrowing pitch. zoom (not transform) so the smaller cards also take less layout space. */
.tb2-field{aspect-ratio:1/.74;perspective:1000px}
.tb2-glass{top:-24%;transform:rotateX(40deg)}
.tb2-rows{gap:12px;padding-block:22px 26px}
.tb2-rows>.tb2-row:first-child{padding-inline:15%;zoom:.8}
.tb2-rows>.tb2-row:nth-child(2):not(:last-child){padding-inline:8%;zoom:.9}
.tb2-rows>.tb2-row:nth-child(3):not(:last-child){padding-inline:4%;zoom:.95}
.tb2-rows>.tb2-row:only-child{padding-inline:6%;zoom:1}
@media (max-width:760px){.tb2-field{aspect-ratio:auto;perspective:800px}.tb2-glass{top:-8%;transform:rotateX(24deg)}.tb2-rows>.tb2-row:first-child{padding-inline:8%;zoom:.88}.tb2-rows>.tb2-row:nth-child(2):not(:last-child){padding-inline:4%;zoom:.94}.tb2-rows>.tb2-row:nth-child(3):not(:last-child){padding-inline:2%;zoom:.97}.tb2-rows>.tb2-row:only-child{padding-inline:2%;zoom:1}}
/* tb2:perspective2 end */
/* tb2:perspective-phone - phones: two cards per row so the tilted field stays short, and every row stays inside the narrowing sides. */
@media (max-width:760px){.tb2-rows .tb2-row-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.tb2-rows .tb2-row-cards>*{min-width:0}.tb2-rows>.tb2-row:last-child:not(:only-child){padding-inline:2%}}
/* tb2:perspective-phone end */
/* tb2:perspective-names - phones: names on field cards stay on one line (ellipsis, full name already in the card's aria-label and the profile button), with a smaller avatar so two cards fit per row. */
@media (max-width:760px){.tb2-rows .player{padding:8px 8px;min-width:0}.tb2-rows .player .person{gap:8px;min-width:0}.tb2-rows .player .person>div{min-width:0}.tb2-rows .player .avatar{width:28px;height:28px;font-size:.66rem}.tb2-rows .player [data-profile]{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-break:normal;overflow-wrap:normal}}
/* tb2:perspective-names end */
/* tb2:perspective3 - owner: much more tilt, rows pulled closer together and cards shrinking toward the attacking (far, top) end; subtler shimmer; Field type row sits under Team overview in the right column. */
.tb2-field{aspect-ratio:1/.6;perspective:900px}
.tb2-glass{top:-64%;transform:rotateX(56deg)}
.tb2-rows{gap:4px;padding-block:30px 18px;justify-content:space-evenly}
.tb2-rows .tb2-row{gap:4px}
.tb2-rows>.tb2-row:first-child{padding-inline:24%;zoom:.7}
.tb2-rows>.tb2-row:nth-child(2):not(:last-child){padding-inline:13%;zoom:.82}
.tb2-rows>.tb2-row:nth-child(3):not(:last-child){padding-inline:6%;zoom:.91}
.tb2-rows>.tb2-row:last-child:not(:only-child){padding-inline:2%;zoom:1}
.tb2-rows>.tb2-row:only-child{padding-inline:10%;zoom:.9}
.tb2-glass::after{opacity:.35;animation-duration:16s}
.tb2-side{display:flex;flex-direction:column;gap:16px;min-width:0}
.tb2-side .tb2-ft{margin:0}
.tb2-side .tb2-ft-tabs{flex-wrap:wrap;overflow:visible;flex-basis:100%}
@media (min-width:1101px){.tb2-side{position:sticky;top:calc(var(--sticky-top,0px) + 12px)}.tb2-side .tb2-overview{position:static}}
@media (max-width:760px){.tb2-field{aspect-ratio:auto;perspective:700px}.tb2-glass{top:-16%;transform:rotateX(34deg)}.tb2-rows>.tb2-row:first-child{padding-inline:5%;zoom:.86}.tb2-rows>.tb2-row:nth-child(2):not(:last-child){padding-inline:6%;zoom:.9}.tb2-rows>.tb2-row:nth-child(3):not(:last-child){padding-inline:3%;zoom:.95}.tb2-rows>.tb2-row:only-child{padding-inline:4%;zoom:1}.tb2-side .tb2-ft-tabs{flex-wrap:nowrap;overflow-x:auto}}
@media (prefers-reduced-motion:reduce){.tb2-glass::after{opacity:.25}}
/* tb2:perspective3 end */
/* tb2:perspective4 - owner: even more tilt; the "team is full" note is a small pill beside the header actions (full text in its tooltip) instead of a card on the field. */
.tb2-field{aspect-ratio:auto;min-height:clamp(320px,34vw,460px);width:100%;max-width:100%;min-width:0;perspective:800px;overflow:visible}
.tb2-rows .tb2-row-cards{flex-wrap:wrap;min-width:0}
.tb2-rows .tb2-row{min-width:0}
.tb2-field{display:flex;flex-direction:column}
.tb2-field>.tb2-rows{flex:1 1 auto;padding-block:50px 20px;justify-content:space-between}
.tb2-glass{top:-92%;transform:rotateX(64deg)}
.tb2-rows{padding-block:26px 14px}
.tb2-rows>.tb2-row:first-child{padding-inline:27%;zoom:.66}
.tb2-rows>.tb2-row:nth-child(2):not(:last-child){padding-inline:15%;zoom:.8}
.tb2-full-pill{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border-radius:999px;background:var(--tb2-blue-bg,var(--accent-tint));color:var(--tb2-blue,var(--accent-ink));font-size:.8rem;font-weight:650;white-space:nowrap;cursor:help}
.tb2-full-pill:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
@media (max-width:760px){.tb2-glass{top:-22%;transform:rotateX(40deg)}.tb2-rows>.tb2-row:first-child{padding-inline:6%;zoom:.84}.tb2-rows>.tb2-row:nth-child(2):not(:last-child){padding-inline:4%;zoom:.9}}
/* tb2:perspective4 end */
/* tb2:bench - Team builder (preview): the bench is the substitutes strip under the field (the sport's word, a count and a fixed tooltip), compact cards that wrap; spot badge when a player plays a non-preferred spot; 'No position' tag; swap mode (selected card, target outlines, swap bar) and drag-over targets. */
.tb2-bench{margin-top:12px;padding:10px 12px;border:1px solid var(--accent-border);border-top:3px solid color-mix(in srgb,var(--blue) 45%,transparent);border-radius:0 0 14px 14px;background:linear-gradient(180deg,var(--accent-wash),#fafbfd)}
.tb2-bench .tb2-bench-title{display:flex;align-items:center;gap:6px;margin:0 0 8px;font-size:.8125rem;font-weight:700;color:#24324d}
.tb2-bench .tb2-bench-title .tb2-bench-count{padding:0;border-radius:0;background:none;font-size:.8125rem;font-weight:500;color:#5f6876}
.tb2-bench .tb2-bench-tip{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;border:1px solid #c5cfdf;background:#fff;color:#5f6876;font-size:.7rem;font-weight:700;cursor:help}
.tb2-bench .tb2-bench-tip:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.tb2-bench .tb2-row-cards{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:stretch;gap:8px}
.tb2-bench .tb2-spot{width:11.5rem}
.tb2-bench .tb2-spot>.player{padding:6px 6px 6px 8px;box-shadow:none}
.tb2-bench .tb2-spot .avatar{width:28px;height:28px;font-size:.65rem}
.tb2-bench .tb2-bench-empty{margin:0;padding:6px 0;color:#5f6876;font-size:.8rem}
.tb2-spot .positions:has(.tb2-nopos){display:block}
.tb2-nopos{display:inline-block;margin-top:2px;padding:0 6px;border-radius:999px;background:#fff4e0;color:#7a4a00;font-size:.6875rem;font-weight:600}
.tb2-spot{position:relative}
.tb2-spot-code{position:absolute;top:-7px;left:8px;z-index:2;padding:0 6px;border-radius:999px;background:var(--blue);color:var(--on-blue);font-size:.625rem;font-weight:700;line-height:14px}
.tb2-fieldcard .tb2-spot .avatar{cursor:pointer}
.tb2-swapbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 10px;padding:8px 12px;border-radius:10px;background:var(--accent-tint);border:1px solid var(--accent-border)}
.tb2-swapbar .tb2-swapbar-text{margin:0;font-size:.875rem;font-weight:600;color:var(--accent-ink)}
.tb2-spot.is-swap-src>.player{outline:3px solid var(--blue);outline-offset:2px;box-shadow:0 0 0 6px color-mix(in srgb,var(--blue) 18%,transparent)}
.tb2-spot.is-target>.player{outline:2px dashed color-mix(in srgb,var(--blue) 75%,transparent);outline-offset:2px}
.tb2-spot .tb2-target-btn{position:absolute;inset:0;z-index:3;width:100%;height:100%;margin:0;padding:0;border:0;border-radius:12px;background:transparent;cursor:pointer}
.tb2-spot .tb2-target-btn:hover,.tb2-spot .tb2-target-btn:focus-visible{background:color-mix(in srgb,var(--blue) 10%,transparent);outline:2px solid var(--focus-ring);outline-offset:2px}
.tb2-open.is-target{font:inherit;font-size:.8rem;cursor:pointer;border-style:solid;border-color:color-mix(in srgb,var(--blue) 75%,transparent);background:color-mix(in srgb,var(--accent-tint) 85%,transparent)}
.tb2-open.is-target:hover,.tb2-open.is-target:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;background:#fff}
.tb2-bench.is-target{border-color:color-mix(in srgb,var(--blue) 75%,transparent);border-style:dashed}
.tb2-bench .tb2-bench-to{min-height:40px;padding:0 12px;border:1.5px dashed color-mix(in srgb,var(--blue) 75%,transparent);border-radius:10px;background:#fff;color:var(--accent-ink);font:inherit;font-size:.8rem;font-weight:600;cursor:pointer}
.tb2-bench .tb2-bench-to:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.tb2-spot.tb2-drag-over>.player,.tb2-open.tb2-drag-over{outline:3px solid var(--blue);outline-offset:2px}
.tb2-bench.tb2-drag-over{background:var(--accent-tint);border-color:var(--blue)}
@media (max-width:760px){.tb2-bench{padding:8px}.tb2-bench .tb2-row-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.tb2-bench .tb2-row-cards>*{min-width:0;width:auto}.tb2-swapbar{padding:6px 8px}.tb2-swapbar .tb2-swapbar-text{font-size:.8125rem}}
@media (prefers-reduced-motion:reduce){.tb2-spot .tb2-target-btn,.tb2-open.is-target{transition:none}}
/* tb2:bench end */
/* tb2:rowfit - desktop: the middle row keeps three full cards on one line (the deep tilt's side inset was too wide for a full netball midcourt). */
@media (min-width:761px){.tb2-rows>.tb2-row:nth-child(2):not(:last-child){padding-inline:5%}.tb2-rows>.tb2-row:first-child{padding-inline:20%}}
/* tb2:rowfit end */
/* tb2:menufix - the ⋮ menu (position:fixed, placed by popupMenu) must open at its button. A CSS perspective on .tb2-field made the field the containing block for fixed menus (menu landed far below), so the perspective now lives on .tb2-persp, a wrapper around the glass only (no menus inside it). Row zoom is driven by --tb2z so a menu inside a shrunken row undoes it (zoom also scales fixed left/top). Same visual sizes as before. */
.tb2-field{perspective:none}
.tb2-persp{position:absolute;inset:0;z-index:0;pointer-events:none;border-radius:inherit;perspective:800px;perspective-origin:50% 0}
.tb2-persp>.tb2-glass{transform:rotateX(64deg)}
.tb2-rows>.tb2-row{zoom:var(--tb2z,1)}
.tb2-rows>.tb2-row:first-child{--tb2z:.66}
.tb2-rows>.tb2-row:nth-child(2):not(:last-child){--tb2z:.8}
.tb2-rows>.tb2-row:nth-child(3):not(:last-child){--tb2z:.91}
.tb2-rows>.tb2-row:last-child:not(:only-child){--tb2z:1}
.tb2-rows>.tb2-row:only-child{--tb2z:.9}
.tb2-rows .card-menu{zoom:calc(1 / var(--tb2z,1))}
@media (max-width:760px){.tb2-persp{perspective:700px}.tb2-persp>.tb2-glass{transform:rotateX(40deg)}.tb2-rows>.tb2-row:first-child{--tb2z:.84}.tb2-rows>.tb2-row:nth-child(2):not(:last-child){--tb2z:.9}.tb2-rows>.tb2-row:nth-child(3):not(:last-child){--tb2z:.95}.tb2-rows>.tb2-row:only-child{--tb2z:1}}
/* tb2:menufix end */
/* tb2:default - field builder as the default Team builder: the Team intelligence 'Team rating' label stays on one line (the value side shrinks and wraps its sub-text),
   Clear field's aria-disabled look (kept focusable so its fixed data-tip shows), and a focus ring on the avatar (position tooltip, tap or Enter to swap) */
.tb2-ov-row dt{flex:0 0 auto;white-space:nowrap}
.tb2-ov-row dd{flex:1 1 auto;min-width:0}
.tb2-ov-rating strong{white-space:nowrap}
.tb2-btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed}
.tb2-btn--danger[aria-disabled="true"]:hover{background:#fff}
.tb2-spot .avatar[data-tb2-avatar]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.tb2-confirm-msg:empty{display:none}
.tb2-confirm-msg{margin:0 0 8px;color:#b42318;font-size:.875rem}
/* tb2:default end */
/* tb:merged - one Team builder page: the Field / List switch in the header (a two-button radio group, icon + word), the Team intelligence card as the List view's right column and its team name line */
.heading .actions .tb-switch{display:inline-flex;align-items:center;gap:2px;flex:none;padding:3px;border:1px solid #dfe5ef;border-radius:12px;background:#f4f6fa}
.heading .actions .tb-switch .tb-switch-btn{width:auto!important;min-width:44px;height:38px;min-height:38px;padding:0 12px!important;gap:6px;border:0;border-radius:9px;background:transparent;color:#3d4a60;font:inherit;font-size:.875rem;font-weight:600;cursor:pointer;box-shadow:none}
.heading .actions .tb-switch .tb-switch-btn svg{width:18px;height:18px}
.heading .actions .tb-switch .tb-switch-btn.is-on{background:#fff;color:var(--accent-text);box-shadow:0 1px 3px rgba(6,18,31,.14)}
.heading .actions .tb-switch .tb-switch-btn:not(.is-on):hover{background:#e9edf5;border-color:transparent;color:var(--accent-text)}
.tb2-ov-team{margin:0 0 6px;font-weight:600;color:var(--tb2-ink,#1f2a3d);overflow-wrap:anywhere}
.tb-page--list .workspace>.tb2-overview{min-width:0}
/* tb:merged end */
/* tb:pool-drawer - one Player pool drawer for both views (the List view's sticky pool card is gone, so nothing can slide over the Team intelligence card). List view: the same two
   columns as the Field view (teams | Team intelligence 340px) above 1100px, one column below with the Team intelligence card flowing after the teams. The drawer is a modal overlay with
   a backdrop; while a card is dragged out of it the backdrop lets the pointer through (body.tb2-pool-dragging) so the team cards and field spots below take the drop. */
.tb-page--list .workspace{grid-template-columns:minmax(0,1fr) 340px;gap:20px}
.tb-page--list .workspace>.tb-list-main{display:flex;flex-direction:column;gap:16px;min-width:0}
/* List view: one team card per row at every width (the more specific selector beats the general .workspace .teams grids). */
.tb-page--list .workspace .teams{grid-template-columns:minmax(0,1fr);align-items:start}
@media (min-width:761px){.tb2-drawer{width:min(420px,92vw)}}
@media (max-width:1100px){.tb-page--list .workspace{grid-template-columns:minmax(0,1fr);gap:16px}.tb-page--list .workspace>.tb2-overview{grid-column:auto;position:static}}
.tb-poolbar{margin:0;overflow:visible}
.tb-poolbar-row{display:flex;align-items:center;justify-content:space-between;gap:12px;box-sizing:border-box;min-height:79px;padding:12px 20px}
.tb-poolbar-hint{flex:1 1 auto;min-width:0;margin:0;color:#4a566d;font-size:.875rem;line-height:1.45}
.tb-poolbar .tb2-unplaced{flex:none;order:0;min-height:44px}
@media (max-width:760px){.tb-poolbar-row{flex-wrap:wrap;min-height:0;padding:10px 12px;gap:8px}.tb-poolbar .tb2-unplaced{flex:1 1 100%}}
.tb2-drawer-backdrop{position:fixed;inset:0;z-index:59;background:rgba(6,18,31,.42)}
.tb2-drawer-backdrop[hidden]{display:none}
body.tb2-pool-dragging .tb2-drawer-backdrop{pointer-events:none;background:rgba(6,18,31,.14)}
.tb2-drawer-filters{flex-wrap:wrap}
.tb2-drawer-filters>input{flex:1 1 100%;min-width:0}
.tb2-drawer-selects{display:flex;flex:1 1 100%;gap:8px;min-width:0}
.tb2-drawer-selects>select{flex:1 1 0;min-width:0;min-height:40px;text-overflow:ellipsis}
.tb2-drawer-selects>.tb2-pool-more{flex:none;min-height:40px;white-space:nowrap}
.tb2-drawer-filtered{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 18px 8px;color:#4a566d;font-size:.8125rem}
.tb2-drawer-to{margin:0 18px 10px;color:#4a566d;font-size:.8125rem;line-height:1.45}
.tb2-drawer-note[hidden]{display:none}
.tb2-pool-item>.player[draggable="true"]{cursor:grab}
.tb2-pool-item>.player[draggable="true"]:active{cursor:grabbing}
@media (max-width:760px){.tb2-drawer-filters>input,.tb2-drawer-selects>select{font-size:16px;min-height:44px}.tb2-drawer-selects>.tb2-pool-more{min-height:44px}}
/* tb:pool-drawer end */
/* tb:header-dots - Team builder: the dot legend sits as compact dots left of Add team (definitions on hover/focus); Add team is the blue primary action with a + icon; Field view's team tabs live in a card the same height as List view's search/filter card so both views line up with the Team intelligence card. */
.nc-legend-dots{display:inline-flex;align-items:center;gap:8px;padding:0 6px;margin-right:2px}
.nc-legend-dots .nc-dot{width:12px;height:12px;margin:0;cursor:help}
#add-team.primary{background:var(--blue);border-color:var(--blue);color:var(--on-blue)}
#add-team.primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}
#add-team.primary svg{stroke:currentColor;color:var(--on-blue)}
.tb2-tabscard{margin-bottom:16px;overflow:visible}
.tb2-tabscard>.panel-head{height:79px;padding:0 20px;border-bottom:0;box-sizing:border-box}
.tb2-tabscard .tb2-tabsbar{margin:0;flex:1 1 auto;flex-wrap:nowrap;min-width:0}
@media (max-width:760px){.tb2-tabscard>.panel-head{height:auto!important;max-height:none!important;min-height:56px;padding:8px 12px!important}.tb2-tabscard .tb2-tabsbar{flex-wrap:wrap;height:auto!important;max-height:none!important;row-gap:8px}.nc-legend-dots{gap:5px;padding:0 2px 0 0;margin-right:0;flex:none}.nc-legend-dots .nc-dot{width:10px;height:10px}}
/* tb:header-dots end */
/* tb:players-list - Team builder Field view: the field is an optional placement tool with compact tokens (avatar circle with the spot code + short name; no ⋮ menu) and open spots of the same size, rows that wrap so a full AFL lineup fits; the Players list under the field (every player on the team once, spot badge on placed cards, fixed tooltip); swap-mode and drag-over states for tokens and the list. */
.tb2-rows .tb2-row-cards.tb2-tok-row{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:stretch;gap:8px;min-width:0}
.tb2-rows .tb2-row-cards.tb2-tok-row>*{min-width:0}
.tb2-slot{position:relative;flex:none;width:5.75rem}
.tb2-token{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;box-sizing:border-box;width:100%;min-height:62px;padding:6px 4px;border:1px solid #d6deeb;border-radius:12px;background:#fff;box-shadow:0 6px 14px -10px rgba(6,18,31,.45);color:var(--tb2-ink,#1f2a3d);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:manipulation}
.tb2-token[role="note"]{cursor:default}
.tb2-token:hover{border-color:var(--accent-ring)}
.tb2-token:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.tb2-token.is-over{border-color:#d64545}
.tb2-tok-av{display:inline-flex;align-items:center;justify-content:center;flex:none;width:32px;height:32px;border-radius:50%;background:var(--accent-tint);color:var(--accent-ink);font-size:.72rem;font-weight:800;line-height:1}
.tb2-tok-av[data-long]{font-size:.6rem}
.tb2-tok-name{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;font-weight:600;line-height:1.2}
.tb2-rows .tb2-tok-row .tb2-open{flex:none;width:5.75rem;min-height:62px;box-sizing:border-box;padding:4px;font-size:.75rem;text-align:center}
.tb2-slot.is-swap-src>.tb2-token{outline:3px solid var(--blue);outline-offset:2px;box-shadow:0 0 0 6px color-mix(in srgb,var(--blue) 18%,transparent)}
.tb2-slot.is-target>.tb2-token{outline:2px dashed color-mix(in srgb,var(--blue) 75%,transparent);outline-offset:2px}
.tb2-slot .tb2-target-btn{position:absolute;inset:0;z-index:3;width:100%;height:100%;margin:0;padding:0;border:0;border-radius:12px;background:transparent;cursor:pointer}
.tb2-slot .tb2-target-btn:hover,.tb2-slot .tb2-target-btn:focus-visible{background:color-mix(in srgb,var(--blue) 10%,transparent);outline:2px solid var(--focus-ring);outline-offset:2px}
.tb2-slot.tb2-drag-over>.tb2-token{outline:3px solid var(--blue);outline-offset:2px}
.tb2-plist{margin-top:12px;padding:10px 12px;border:1px solid var(--accent-border);border-radius:14px;background:linear-gradient(180deg,var(--accent-wash),#fafbfd)}
.tb2-plist-title{display:flex;align-items:center;gap:6px;margin:0 0 10px;font-size:.8125rem;font-weight:700;color:#24324d}
.tb2-plist-count{font-weight:500;color:#5f6876}
.tb2-plist-tip{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;border:1px solid #c5cfdf;background:#fff;color:#5f6876;font-size:.7rem;font-weight:700;cursor:help}
.tb2-plist-tip:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.tb2-plist-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));align-items:stretch;gap:12px 8px}
.tb2-plist-cards>*{min-width:0}
.tb2-plist .tb2-spot{width:auto;max-width:100%}
.tb2-plist .tb2-spot>.player{padding:6px 6px 6px 8px;box-shadow:none}
.tb2-plist .tb2-spot .avatar{width:28px;height:28px;font-size:.65rem}
.tb2-plist .tb2-spot.is-placed>.player{border-color:var(--accent-border);background:var(--accent-wash)}
.tb2-plist .tb2-add{width:auto}
.tb2-plist .player [data-profile]{white-space:normal;overflow-wrap:break-word;word-break:normal;line-height:1.25}
@media (min-width:761px){.tb2-rows>.tb2-row:first-child{--tb2z:.8;zoom:.8}.tb2-rows>.tb2-row:nth-child(2):not(:last-child){--tb2z:.9;zoom:.9}.tb2-rows>.tb2-row:only-child{--tb2z:1;zoom:1}}
.tb2-plist-empty{margin:0;padding:6px 0;color:#5f6876;font-size:.8rem}
.tb2-plist.is-target{border-color:color-mix(in srgb,var(--blue) 75%,transparent);border-style:dashed}
.tb2-plist.tb2-drag-over{background:var(--accent-tint);border-color:var(--blue)}
@media (max-width:760px){.tb2-slot,.tb2-rows .tb2-tok-row .tb2-open{width:4.6rem}.tb2-token,.tb2-rows .tb2-tok-row .tb2-open{min-height:54px}.tb2-tok-av{width:28px;height:28px;font-size:.66rem}.tb2-tok-name{font-size:.6875rem}.tb2-rows .tb2-row-cards.tb2-tok-row{gap:6px}.tb2-plist{padding:8px}.tb2-plist-cards{grid-template-columns:minmax(0,1fr);gap:12px}.tb2-plist-cards>.tb2-add,.tb2-plist-cards>.tb2-plist-empty{grid-column:1/-1}.tb2-plist .player [data-profile]{font-size:.875rem}}
@media (prefers-reduced-motion:reduce){.tb2-slot .tb2-target-btn{transition:none}}
/* tb:players-list end */
/* wizard:next */
.wn-start{margin-bottom:24px}.wn-start>.panel-head{padding:16px 20px}.wn-start-lead{padding:14px 20px 4px}.wn-start-count{display:inline-block;margin-left:6px;font-weight:600;color:#2f3c51}
.wn-steps{list-style:none;margin:0;padding:8px 20px 16px;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}
.wn-step{display:flex;gap:10px;align-items:flex-start;padding:10px;border:1px solid var(--line);border-radius:8px}.wn-step.wn-next{border-color:color-mix(in srgb,var(--blue) 45%,#fff);background:color-mix(in srgb,var(--blue) 5%,#fff)}
.wn-tick{flex:0 0 26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:650;background:#eef0f5;color:#5f6876}.wn-step.wn-done .wn-tick{background:#e3f4ea;color:#1d8048}
.wn-body{display:flex;flex-direction:column;gap:2px;min-width:0}.wn-link{border:0;background:transparent;padding:2px 0;text-align:left;color:var(--accent-text);font-weight:600;min-height:32px}.wn-link:hover{background:transparent;text-decoration:underline}.wn-step.wn-done .wn-link{color:#2f3c51}
.wn-sub{font-size:.8125rem;color:var(--muted);line-height:1.45}
.wn-noplayers{padding:18px 20px;margin-bottom:20px}.wn-noplayers h2{margin-bottom:6px}.wn-noplayers p{max-width:62ch}.wn-noplayers-note{margin-top:6px}
.wn-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.wn-actions button{min-height:44px}
@media (max-width:760px){.wn-steps{grid-template-columns:1fr;padding:6px 14px 14px}.wn-start>.panel-head,.wn-start-lead{padding-left:14px;padding-right:14px}.wn-noplayers{padding:14px}.wn-actions button{flex:1 1 100%}}
:root[data-theme="dark"] .wn-step.wn-next{background:color-mix(in srgb,var(--blue) 14%,transparent)}:root[data-theme="dark"] .wn-tick{background:#252c38;color:#b5c0d2}:root[data-theme="dark"] .wn-step.wn-done .wn-tick{background:#16352a;color:#7fd6a2}:root[data-theme="dark"] .wn-start-count,:root[data-theme="dark"] .wn-step.wn-done .wn-link{color:inherit}
/* wizard:next end */

/* wizard:v2 */
.wiz-team-list{margin:0;padding:0;list-style:none;display:grid;gap:6px}
.wiz-team-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:6px 12px;border:1px solid var(--line);border-radius:10px;overflow-wrap:anywhere}
.wiz-team-list li.on{border-color:var(--blue)}
.wiz-team-list .wiz-team-text{display:grid;gap:2px;min-width:0}
.wiz-team-list .wiz-team-text .wl-opt{font-size:.8125rem}
.wiz .wiz-team-edit{min-height:44px;min-width:44px;flex:none}
.wiz .wiz-team-add,.wiz .wiz-team-save{min-height:44px}
.wiz-choices{display:grid;gap:10px}
.wiz-choices label.wiz-pick{display:flex;align-items:flex-start;gap:12px;min-height:64px;padding:14px;cursor:pointer;font-weight:400}
.wiz-choices label.wiz-pick input[type=radio]{flex:none;width:22px;height:22px;margin:2px 0 0;accent-color:var(--blue)}
.wiz-choices label.wiz-pick:has(input:checked){border-color:var(--blue);box-shadow:0 0 0 1px var(--blue)}
.wiz-choices label.wiz-pick:has(input:focus-visible){outline:2px solid var(--focus-ring);outline-offset:2px}
.wiz-choices .wiz-pick-text{display:grid;gap:4px;min-width:0;overflow-wrap:anywhere}
.wiz-staff-team{padding:12px 14px!important;border:1px solid var(--line)!important;border-radius:12px;gap:10px!important}
.wiz-staff-team legend{padding:0 6px!important;font-size:1rem!important}
.wiz-staff-team label:not(.wiz-same){display:block;min-height:0;font-weight:500}
.wiz-staff-team .wiz-have{margin:0}
.wiz #wiz-staff-form{display:grid;gap:14px}
.wiz-invite-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:12px;align-items:end}
.wiz-invites{margin:0;padding:0;list-style:none;display:grid;gap:14px}
.wiz-invites li{display:grid;gap:8px;overflow-wrap:anywhere}
.wiz-invites p{margin:0}
.wiz-badge-row{display:flex;align-items:center;gap:12px;margin-top:4px}
.wiz-badge{flex:none;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;font-weight:700;font-size:.9375rem}
.wiz-badge-row .wiz-hint{margin:0}
.wiz-next-list{margin:0;padding-left:1.4em;display:grid;gap:2px}
.wiz-next-list .link-btn{text-align:left}
.wiz-more summary .wl-opt{margin-left:.3em}
@media (max-width:640px){
.wiz-invite-row{grid-template-columns:minmax(0,1fr)}
.wiz-team-list li{padding:6px 10px}
}
:root[data-theme="dark"] .wiz-choices label.wiz-pick{background:transparent}
/* wizard:v2 end */
/* teams:remove */
.team-menu [data-team-remove]{color:#b42318}
.team-menu [data-team-remove][aria-disabled="true"]{color:var(--muted);cursor:not-allowed}
.wiz .wiz-team-remove,.wiz .wiz-team-remove-go{min-height:44px;min-width:44px;flex:none}
.wiz .wiz-team-remove{color:#b42318}
.wiz .wiz-team-remove[aria-disabled="true"]{color:var(--muted);cursor:not-allowed;text-decoration:none}
.wiz .wiz-team-confirm{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;flex:none;max-width:100%}
.wiz .wiz-team-confirm-q{font-size:.875rem;color:var(--ink,inherit)}
.wiz .wiz-team-remove-go{color:#b42318;font-weight:600}
.co-no-email{color:var(--muted);font-style:normal}
.rv-no-email{margin-top:8px}
.wiz-team-list li:has(.wiz-team-confirm){flex-wrap:wrap}
/* teams:remove end */
/* org:logo */
.wl-avatar.wl-logo{display:inline-block;object-fit:contain;border-radius:10px;background:#fff;border:1px solid #e1e6ef}
.wl-avatar-lg.wl-logo{display:block;border-radius:14px}
.club-logo-row{display:flex;align-items:center;gap:10px;min-width:0}
.club-logo{flex:none;width:32px;height:32px;object-fit:contain;border-radius:8px;background:#fff;border:1px solid var(--line)}
.club-logo-text{flex:1;min-width:0}
.org-logo-box{margin-top:20px;border-top:1px solid var(--line);padding-top:20px}
.org-logo-box h3{margin:0 0 12px}
.org-logo-row{display:flex;align-items:flex-start;gap:16px}
.org-logo-frame{flex:none;display:inline-flex;align-items:center;justify-content:center;width:72px;height:72px;overflow:hidden;border-radius:14px;border:1px solid var(--line);background:#fff}
.org-logo-img{display:block;width:100%;height:100%;object-fit:contain}
.org-logo-initials{border:0;font-weight:700;font-size:1.5rem;letter-spacing:.5px}
.org-logo-side{flex:1;min-width:0}
.org-logo-hint{margin:0 0 10px;font-size:.875rem;color:#2b3546}
.org-logo-actions{display:flex;flex-wrap:wrap;gap:8px}
.org-logo-rules{margin:8px 0 0;font-size:.8125rem;color:#566074}
.org-logo-msg,.org-logo-err{margin:8px 0 0;font-size:.875rem}
.org-logo-msg{color:#166534}.org-logo-err{color:#b42318;font-weight:600}
.org-logo-msg:empty,.org-logo-err:empty{display:none}
.org-logo-wiz{margin-top:4px;border-top:0;padding-top:0}
.org-logo-wiz .org-logo-frame{width:56px;height:56px;border-radius:12px}
.org-logo-wiz .org-logo-initials{font-size:1.125rem}
@media(max-width:600px){.org-logo-row{gap:12px}.org-logo-actions button{flex:1 1 auto;min-height:44px}}
/* org:logo end */
/* wizard:polish */
/* walkthrough polish: 'Preview the form' is a secondary (outline) action so it doesn't compete with Next; on desktop the Back/Next bar stays visible at the bottom of the guide while long screens (Teams, Coaches and team managers) scroll. */
#wiz-preview-form.button-link{background:#fff;color:var(--accent-text);border:1px solid var(--line);font-weight:600}
#wiz-preview-form.button-link:hover{background:var(--accent-tint);border-color:#c6cfdf}
@media (min-width:761px){.wiz-nav{position:sticky;bottom:0;z-index:2;background:#fff;box-shadow:0 -1px 0 var(--line)}}
/* wizard:polish end */
/* brand:logo */
/* The earlier PlayOps brand update: the mark image replaces the old drawn "t" beside the wordmark; the full logo sits on the sign-in story panel (white-ink version on its navy) and on the light account and staff-invite pages. */
.logo-mark{display:block;flex:none;object-fit:contain}
.auth-logo{display:block;width:min(320px,100%);height:auto;object-fit:contain}
.auth-story>.auth-logo{align-self:flex-start;width:min(300px,100%)}
.intake-shell>header>.auth-logo{width:min(200px,52vw)}
@media (max-width:760px){.auth-story>.auth-logo{width:min(220px,70vw)}.intake-shell>header>.auth-logo{width:min(160px,46vw)}}
/* brand:logo end */
/* brand:size */
/* Bigger brand: the mark is sized by height (it is wider than tall); the full stop in the wordmark uses the logo's aqua-green; larger full logo on the sign-in and account pages. */
:root{--brand-aqua:#14b89f}
.wordmark-dot{color:var(--brand-aqua)}
.brand .logo-mark{height:36px;width:auto}
.auth-story>.auth-logo{width:min(400px,100%)}
.intake-shell>header>.auth-logo{width:min(260px,60vw)}
@media (max-width:760px){.brand .logo-mark{height:30px}.auth-story>.auth-logo{width:min(300px,80vw)}.intake-shell>header>.auth-logo{width:min(200px,54vw)}}
/* Pages with the full logo in an .intake-shell header (staff invitation: join, sign in and join, invitation unavailable; account access pages): the app's generic main padding (32px 34px on desktop, 14px 12px on phones) and the old 52px header gap
   put about 100px of empty space between the logo and the heading at 1440 and inset the content from the logo. They now use the waitlist page's spacing: a 16px gap under the header on desktop (phones keep their 10px), no top or side padding on main. */
.intake-shell:has(>header>.auth-logo)>main{padding-top:0;padding-left:0;padding-right:0}
@media (min-width:761px){.intake-shell:has(>header>.auth-logo)>header{margin-bottom:16px}}
/* brand:size end */
/* brand:playops */
/* PlayOps wordmark (icons/playops-logo-*.svg, about 5.77:1) replaces the old mark image and "tactic." text. Sized by height: 26px in the sidebar,
   the phone/tablet bar and the public page headers; larger on the startup screen and the sign-in / account pages (auth-logo, sized by width). */
.brand-logo{display:block;flex:none;height:26px;width:auto;max-width:100%;object-fit:contain}
.brand{line-height:0}
.startup .brand .brand-logo{height:34px}
.coach-review-shell header .brand .brand-logo,.intake-shell header .brand .brand-logo{height:28px}
.auth-story>.auth-logo{width:min(340px,100%)}
.intake-shell>header>.auth-logo{width:min(240px,60vw)}
@media (max-width:900px){.sidebar .brand .brand-logo{height:24px}}
@media (max-width:760px){.shell>.sidebar .brand .brand-logo{height:26px}.coach-review-shell header .brand .brand-logo,.intake-shell header .brand .brand-logo{height:24px}.auth-story>.auth-logo{width:min(240px,64vw)}.intake-shell>header>.auth-logo{width:min(200px,54vw)}}
/* brand:playops end */
