:root{--bg:#f7f8fa;--surface:#fff;--ink:#20242d;--muted:#8b909d;--line:#e9ebf0;--purple:#7459e8;--purple-light:#f1efff;--orange:#f58c4d;--green:#31a97c;--blue:#5087e8;--yellow:#f0b52d;--radius:14px}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font-family:"DM Sans",sans-serif;font-size:14px}.app-shell{display:none;min-height:100vh}.app-shell.authenticated{display:flex}.login-screen{min-height:100vh;display:grid;place-items:center;padding:30px;background:radial-gradient(circle at 20% 10%,#f0edff 0,#f7f8fa 35%)}.login-screen.hidden{display:none}.login-card{width:min(420px,100%);background:#fff;border:1px solid var(--line);border-radius:18px;padding:34px;box-shadow:0 20px 60px #51428b12}.login-brand{display:flex;gap:11px;align-items:center;margin-bottom:45px}.login-brand>div:last-child strong,.login-brand>div:last-child span{display:block}.login-brand>div:last-child strong{font:700 15px "Space Grotesk"}.login-brand>div:last-child span{font-size:10px;color:var(--muted);margin-top:2px}.login-card h1{font:700 27px "Space Grotesk";letter-spacing:-1px;margin:0}.login-copy{color:#9499a5;font-size:13px;line-height:1.5;margin:10px 0 25px}.login-card label{display:block;font-size:11px;font-weight:700;color:#5f6470;margin:15px 0 7px}.login-card input{width:100%;border:1px solid #e2e4ea;border-radius:8px;padding:12px;outline:0;font:13px "DM Sans"}.login-card input:focus{border-color:var(--purple);box-shadow:0 0 0 3px #7459e812}.login-button{width:100%;margin-top:17px;display:flex;justify-content:center;align-items:center;gap:8px}.login-button span{margin:0}.login-error{color:#d35c57;font-size:11px;min-height:15px;margin:9px 0 0}.demo-hint{text-align:center;color:#a0a4ae;font-size:10px;margin:22px 0 0}.demo-hint strong{color:#7463bf}.sidebar{width:244px;background:#fff;border-right:1px solid var(--line);padding:28px 15px 18px;display:flex;flex-direction:column;flex-shrink:0}.brand{display:flex;align-items:center;gap:11px;padding:0 13px;margin-bottom:31px}.brand-mark{background:var(--purple);color:white;font:700 21px "Space Grotesk";width:31px;height:31px;border-radius:9px;display:grid;place-items:center;letter-spacing:-2px}.brand-mark span{color:#ffc06b}.brand strong,.brand span{display:block}.brand strong{font:700 15px "Space Grotesk"}.brand span{font-size:10px;color:var(--muted);margin-top:2px}.club-selector{background:#f8f8fb;border:1px solid #eeeef4;padding:10px 9px;border-radius:10px;display:flex;align-items:center;gap:9px;margin:0 4px 29px}.club-avatar{width:29px;height:29px;border-radius:8px;background:#20242d;color:#fff;display:grid;place-items:center;font-size:10px;font-weight:700}.club-selector-copy{flex:1}.club-selector-copy span,.club-selector-copy strong{display:block}.club-selector-copy span{font-size:9px;color:var(--muted)}.club-selector-copy strong{font-size:11px;margin-top:2px}.chevron{color:#a0a2ac}.main-nav{display:flex;flex-direction:column;gap:3px}.nav-label{color:#a4a7b2;font-size:9px;letter-spacing:1.2px;font-weight:700;padding:0 13px 9px}.nav-label-spaced{margin-top:24px}.nav-item{border:0;background:transparent;padding:11px 13px;color:#777d8a;text-align:left;border-radius:8px;font:500 13px "DM Sans";display:flex;align-items:center;gap:12px;cursor:pointer}.nav-item:hover{background:#fafafd;color:var(--purple)}.nav-item.active{background:var(--purple-light);color:var(--purple);font-weight:700}.nav-icon{font-size:17px;width:15px;text-align:center;font-family:Arial}.nav-count{margin-left:auto;font-size:10px;color:#999fad;background:#f2f2f5;padding:2px 7px;border-radius:10px}.nav-count.accent{background:#f9e5d6;color:#c96b36}.sidebar-bottom{margin-top:auto}.help-card{background:#faf8ff;border:1px solid #ede8ff;border-radius:10px;padding:12px 10px;display:flex;gap:9px;align-items:center;margin-bottom:19px}.help-icon{width:22px;height:22px;background:#ded5ff;color:var(--purple);border-radius:50%;display:grid;place-items:center;font-weight:700}.help-card strong,.help-card span{display:block}.help-card strong{font-size:10px}.help-card span{font-size:9px;color:#9994ac;margin-top:3px}.help-card .arrow{margin-left:auto;color:var(--purple);font-size:16px}.user-profile{border-top:1px solid var(--line);padding:18px 3px 0;display:flex;align-items:center;gap:9px}.user-avatar,.activity-avatar{height:32px;width:32px;display:grid;place-items:center;border-radius:50%;font-size:10px;font-weight:700}.user-avatar{background:#ffd9c4;color:#b65b32}.user-profile strong,.user-profile span{display:block}.user-profile strong{font-size:11px}.user-profile span{font-size:10px;color:var(--muted);margin-top:2px}.more-btn{border:0;background:transparent;margin-left:auto;color:#a2a4ac;letter-spacing:1px}.main-content{flex:1;min-width:0;padding:0 47px 52px;max-width:1500px}.topbar{height:76px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.breadcrumb{font-size:12px;color:#a2a6b0}.breadcrumb strong{color:#3b3e47}.slash{padding:0 10px;color:#ccc}.top-actions{display:flex;align-items:center;gap:22px}.icon-button{background:transparent;border:0;color:#727785;font-size:19px;position:relative;cursor:pointer}.notification i{height:5px;width:5px;border-radius:50%;background:#f58251;position:absolute;right:-1px;top:0;border:1px solid #fff}.date-pill{border:1px solid var(--line);border-radius:7px;padding:8px 11px;font-size:10px;letter-spacing:.5px;color:#666b77}.date-pill span{padding-left:12px;color:#999}.page-section{display:none;padding-top:40px}.page-section.active{display:block}.page-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:29px}.eyebrow{font-size:9px;letter-spacing:1.25px;color:#a1a4af;font-weight:700;margin:0 0 9px}.page-heading h1{font:700 31px "Space Grotesk";letter-spacing:-1.2px;margin:0}.subheading{color:#9499a5;margin:9px 0 0;font-size:13px}.wave{font-size:20px;color:var(--orange);display:inline-block;transform:rotate(15deg);margin-left:4px}.primary-button{border:0;border-radius:8px;background:var(--purple);color:#fff;font:600 12px "DM Sans";padding:11px 15px;cursor:pointer;box-shadow:0 3px 8px #7459e82c}.primary-button span{font-size:18px;vertical-align:-2px;margin-right:5px}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.stat-card,.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.stat-card{padding:18px 19px 17px}.stat-top{display:flex;align-items:center;justify-content:space-between;color:#858a96;font-size:11px}.stat-icon{height:25px;width:25px;border-radius:7px;display:grid;place-items:center;font-size:14px}.violet{color:#7b64df;background:#eeeaff}.orange{color:#e47d40;background:#fff0e8}.blue{color:#4b7edd;background:#eaf1ff}.yellow{color:#c08b14;background:#fff6da}.stat-value{font:700 25px "Space Grotesk";margin:16px 0 8px}.stat-value small{font:500 10px "DM Sans";color:#a1a5af}.stat-trend{font-size:10px;font-weight:700}.stat-trend span{font-weight:400;color:#a3a6b0;margin-left:4px}.positive{color:#36a981}.neutral{color:#717682}.content-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:18px;margin-bottom:18px}.panel{padding:21px}.panel-header{display:flex;justify-content:space-between;align-items:start;margin-bottom:16px}.panel h2{font:700 15px "Space Grotesk";margin:0}.panel-header p{color:#9b9faa;font-size:10px;margin:5px 0 0}.text-button,.icon-link{border:0;background:none;color:var(--purple);font:600 11px "DM Sans";cursor:pointer}.text-button span{font-size:16px;margin-left:4px}.icon-link{font-size:17px}.text-button.danger-button{color:#d35c57}.training-row{border-top:1px solid #f0f1f4;display:flex;align-items:center;gap:12px;padding:12px 0}.day-block{background:#f6f4ff;border-radius:8px;width:39px;text-align:center;padding:6px 0}.day-block strong,.day-block span{display:block}.day-block strong{font:700 15px "Space Grotesk";color:var(--purple)}.day-block span{font-size:8px;color:#a2a0bc;margin-top:2px}.training-info{flex:1}.training-info strong,.training-info span{display:block}.training-info strong{font-size:11px}.training-info span{color:#999eaa;font-size:10px;margin-top:4px}.team-badge{border-radius:5px;padding:5px 7px;font-size:8px;font-weight:700;white-space:nowrap}.senior{color:#6c55d7;background:#eeeaff}.sub21{color:#ce7039;background:#fff0e7}.juvenil{color:#318c6a;background:#e5f6ee}.row-menu{border:0;background:transparent;color:#aaa;font-size:12px;letter-spacing:1px}.league-row{display:flex;align-items:center;padding:11px 0;border-top:1px solid #f0f1f4;gap:10px}.league-logo{height:29px;width:29px;background:#eef0ff;color:#6375ce;border-radius:8px;display:grid;place-items:center;font:700 13px "Space Grotesk"}.league-logo.green{color:#32916b;background:#e5f6ee}.league-logo.pink{color:#d16f98;background:#ffedf3}.league-copy{flex:1}.league-copy strong,.league-copy span{display:block}.league-copy strong{font-size:11px}.league-copy span{font-size:10px;color:#9b9faa;margin-top:4px}.league-result{text-align:right}.league-result strong,.league-result span{display:block}.league-result strong{font:700 16px "Space Grotesk"}.league-result span{font-size:9px;color:#34a27a;margin-top:3px}.bottom-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:18px}.activity-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid #f0f1f4}.activity-item p{font-size:10px;margin:0;line-height:1.4;color:#656a76}.activity-item p strong{color:#343740}.activity-item p span{display:block;color:#acafb8;font-size:9px;margin-top:3px}.blue-bg{background:#e5edff;color:#4d77ce}.orange-bg{background:#ffeadf;color:#ca7144}.violet-bg{background:#eeeaff;color:#715bd1}.fantasy-widget{background:#6e56db;color:#fff;position:relative;overflow:hidden;padding:23px 25px}.fantasy-widget:after{content:"";position:absolute;width:200px;height:200px;border:1px solid #ffffff2e;border-radius:50%;right:-85px;top:-90px}.fantasy-decoration{position:absolute;right:25px;top:26px;color:#f9c365;font-size:26px}.fantasy-widget .eyebrow{color:#d5caff}.fantasy-widget h2{font-size:20px;margin-top:24px}.fantasy-widget h2 em{color:#ffbf67;font-style:normal}.fantasy-copy{font-size:11px;line-height:1.5;color:#ddd6ff;width:75%;margin:11px 0 21px}.fantasy-footer{display:flex;align-items:center;justify-content:space-between}.mini-avatars{display:flex}.mini-avatars span{height:24px;width:24px;border:2px solid #6e56db;background:#c9bcfa;border-radius:50%;display:grid;place-items:center;font-size:7px;color:#513dae;margin-right:-4px}.mini-avatars span:nth-child(2){background:#ffd1bb}.mini-avatars span:nth-child(3){background:#bbebd6}.mini-avatars span:last-child{background:#8976e3;color:#fff}.light-button{border:0;background:#fff;color:#624bd0;border-radius:6px;padding:8px 10px;font:700 10px "DM Sans";cursor:pointer}.team-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}.team-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:23px;position:relative;overflow:hidden}.team-card:before{content:"";height:5px;position:absolute;top:0;left:0;right:0;background:var(--purple)}.team-sub21:before{background:var(--orange)}.team-juvenil:before{background:var(--green)}.team-card-top{display:flex;justify-content:space-between;align-items:center}.team-status{font-size:10px;color:#3aa77f}.team-card h2{font:700 22px "Space Grotesk";margin:25px 0 6px}.team-card p{font-size:11px;color:#969aa6}.team-meta{display:flex;justify-content:space-between;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:15px 0;margin-top:25px;color:#9a9ea8;font-size:9px}.team-meta strong{display:block;font:700 18px "Space Grotesk";color:#333741;margin-bottom:3px}.roster{display:flex;margin:18px 0}.roster span,.rank-avatar{height:28px;width:28px;border:2px solid white;border-radius:50%;background:#e8efff;color:#5d78bc;display:grid;place-items:center;font-size:8px;font-weight:700;margin-left:-4px}.roster span:first-child{margin-left:0}.roster span:last-child{background:#f0eff5;color:#888}.outline-button,.full-button{border:1px solid #e5e5ec;background:#fff;border-radius:7px;width:100%;padding:10px;color:#6653c9;font:600 10px "DM Sans";cursor:pointer}.calendar-toolbar{display:flex;align-items:center;gap:13px;margin-bottom:16px;color:#5f6470}.calendar-arrow{border:1px solid var(--line);background:#fff;width:28px;height:28px;border-radius:6px;font-size:18px;color:#888}.toolbar-spacer{flex:1}.filter-button,.season-pill{border:1px solid var(--line);background:#fff;color:#747986;border-radius:6px;padding:8px 10px;font:500 10px "DM Sans"}.calendar-panel{padding:0;overflow:hidden}.week-head{display:grid;grid-template-columns:repeat(7,1fr);background:#fafafd;border-bottom:1px solid var(--line)}.week-head span{text-align:center;padding:15px 0;font-size:9px;color:#a1a5ae;line-height:1.7}.week-head b{font:700 16px "Space Grotesk";color:#4c515d}.week-events{display:grid;grid-template-columns:repeat(7,1fr);min-height:260px;padding:15px 7px;gap:7px}.event{border-radius:7px;padding:8px;background:#eeeaff;color:#6853ce;height:max-content;font-size:9px}.event b,.event span{display:block}.event span{margin-top:5px;line-height:1.3}.event-sub21{background:#fff0e7;color:#c67442}.event-juvenil{background:#e6f6ef;color:#368d6a}.league-tabs{display:flex;gap:23px;border-bottom:1px solid var(--line);margin-bottom:20px}.league-tabs button{border:0;background:none;padding:0 0 12px;color:#9b9fa9;font:600 11px "DM Sans";cursor:pointer}.league-tabs .active{color:var(--purple);border-bottom:2px solid var(--purple)}.standings-panel{padding-bottom:10px}.season-pill{color:#777}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:11px}th{text-align:left;color:#a7aab3;font-size:9px;font-weight:600;padding:10px 12px;border-bottom:1px solid var(--line)}td{padding:14px 12px;border-bottom:1px solid #f0f1f3;color:#666b77}td:first-child{color:#a5a8b0;width:35px}td:nth-child(n+3),th:nth-child(n+3){text-align:center}.own td{color:#5e4bc7;font-weight:700;background:#faf9ff}.club-dot{display:inline-block;background:var(--purple);width:8px;height:8px;border-radius:50%;margin-right:8px}.club-dot.gray{background:#aab0bc}.club-dot.green-dot{background:#52ac82}.fantasy-hero{background:linear-gradient(105deg,#6048cf,#8367ee);color:#fff;border-radius:14px;padding:27px 31px;display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;position:relative;overflow:hidden}.fantasy-hero:after{content:"✦";font-size:170px;color:#ffffff12;position:absolute;right:12%;top:-68px}.fantasy-hero .eyebrow{color:#d9d0ff}.fantasy-hero h2{font:700 26px "Space Grotesk";margin:0 0 5px}.fantasy-hero p{font-size:11px;color:#d9d4ff;margin:0}.green-text{color:#8eebc2}.hero-score{font:700 33px "Space Grotesk";z-index:1}.hero-score span{font-size:10px;font-weight:500}.fantasy-columns{display:grid;grid-template-columns:1.3fr 1fr;gap:18px}.fantasy-player{display:flex;align-items:center;border-top:1px solid #f0f1f4;padding:13px 0;gap:10px}.player-photo{height:35px;width:35px;border-radius:9px;display:grid;place-items:center;font-size:9px;font-weight:700;background:#e6eeff;color:#5274bf}.photo-two{background:#fff0e7;color:#c16c3d}.photo-three{background:#eeeaff;color:#705bd0}.photo-four{background:#e5f6ee;color:#398d69}.fantasy-player div:nth-child(2){flex:1}.fantasy-player strong,.fantasy-player span{display:block}.fantasy-player strong{font-size:11px}.fantasy-player span{font-size:9px;color:#a0a4ad;margin-top:3px}.fantasy-player>b{font:700 13px "Space Grotesk"}.fantasy-player small,.player-card small{font:500 8px "DM Sans";color:#a1a4ae}.ranking-row{display:flex;align-items:center;gap:10px;border-top:1px solid #f0f1f4;padding:12px 0}.ranking-row .rank{width:14px;color:#a5a8b1;font:700 12px "Space Grotesk"}.rank-avatar{margin:0;background:#fff0d1;color:#b0831d}.rank-avatar.purple{background:#eeeaff;color:#6b55cb}.rank-avatar.blue-rank{background:#e3efff;color:#5576bd}.ranking-row strong{font-size:11px;flex:1}.ranking-row>b{font:700 13px "Space Grotesk"}.own-rank{background:#faf9ff;margin:0 -8px;padding-left:8px;padding-right:8px;border-radius:6px}.full-button{margin-top:15px}.players-toolbar{display:flex;gap:10px;margin-bottom:17px}.search-box{border:1px solid var(--line);border-radius:6px;flex:1;color:#a4a8b2;padding:8px 10px}.search-box input{border:0;outline:0;margin-left:8px;font:11px "DM Sans"}.players-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.player-card{border:1px solid #eff0f3;padding:14px;display:flex;align-items:center;gap:11px;border-radius:9px}.large-avatar{height:38px;width:38px;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:700}.player-card strong,.player-card span{display:block}.player-card strong{font-size:11px}.player-card span{font-size:9px;color:#9da1ac;margin-top:3px}.player-card>b{margin-left:auto;font:700 13px "Space Grotesk"}.green-bg{background:#e4f6ed;color:#398c68}.toast{position:fixed;bottom:24px;right:26px;background:#252936;color:#fff;border-radius:8px;padding:12px 17px;font-size:11px;opacity:0;transform:translateY(10px);transition:.25s;pointer-events:none}.toast.show{opacity:1;transform:translateY(0)}@media(max-width:1000px){.sidebar{width:205px}.main-content{padding:0 25px 40px}.stats-grid{grid-template-columns:repeat(2,1fr)}.content-grid,.bottom-grid{grid-template-columns:1fr}.team-cards{grid-template-columns:1fr}.fantasy-columns{grid-template-columns:1fr}}@media(max-width:650px){.sidebar{width:65px;padding:20px 8px}.brand{padding:0;justify-content:center}.brand>div:last-child,.club-selector-copy,.chevron,.nav-label,.nav-item{font-size:0}.brand-mark{width:35px;height:35px}.club-selector{padding:8px 7px;justify-content:center;margin:0 0 25px}.nav-item{justify-content:center;padding:12px 0}.nav-icon{font-size:17px}.nav-count{display:none}.help-card,.user-profile>div:not(.user-avatar){display:none}.user-profile{justify-content:center}.more-btn{display:block;font-size:9px;padding:4px 0}.main-content{padding:0 14px 30px}.topbar{height:62px}.date-pill{display:none}.page-section{padding-top:28px}.page-heading{display:block}.page-heading h1{font-size:26px}.primary-button{margin-top:20px}.stats-grid{gap:9px}.stat-card{padding:13px}.stat-value{font-size:21px;margin-top:13px}.stat-trend span{display:none}.content-grid,.bottom-grid{gap:12px}.panel{padding:16px}.team-cards{gap:12px}.fantasy-hero{padding:21px}.hero-score{font-size:24px}.players-grid{grid-template-columns:1fr}.week-head span{font-size:7px}.week-events{min-height:190px;padding:8px 3px;gap:3px}.event{font-size:8px;padding:5px}.event span{display:none}}
.edit-profile-button{border:0;background:transparent;color:var(--purple);font:600 10px "DM Sans";cursor:pointer;padding:4px 0;margin-left:auto}.modal-backdrop{display:none;position:fixed;inset:0;background:#24203666;z-index:10;padding:20px;place-items:center}.modal-backdrop.open{display:grid}.profile-modal{width:min(440px,100%);background:#fff;border-radius:14px;padding:25px;box-shadow:0 20px 80px #17122540}.modal-header{display:flex;justify-content:space-between;align-items:start;margin-bottom:20px}.modal-header h2{font:700 21px "Space Grotesk";margin:0}.modal-close{border:0;background:#f5f4f8;color:#7f8190;border-radius:50%;font-size:20px;width:28px;height:28px;line-height:20px;cursor:pointer}.profile-modal label{display:block;font-size:11px;font-weight:700;color:#5f6470;margin:13px 0 6px}.profile-modal input,.profile-modal select{width:100%;border:1px solid #e2e4ea;border-radius:7px;padding:10px;outline:0;background:#fff;font:12px "DM Sans"}.profile-modal input:focus,.profile-modal select:focus{border-color:var(--purple)}.profile-modal input[readonly]{background:#f7f7f9;color:#999}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}.modal-actions .outline-button{width:auto;padding:10px 15px;color:#717583}.modal-actions .primary-button{margin:0}
.user-avatar.has-photo{background-size:cover;background-position:center;color:transparent}.field-hint{display:block;color:#a0a4ae;font-size:9px;margin-top:5px}
.club-selector{border:1px solid #eeeef4;width:calc(100% - 8px);font:inherit;text-align:left;cursor:pointer;color:inherit}.settings-team{border-top:1px solid var(--line);padding-top:8px;margin-top:14px}.settings-team label{margin-top:8px}.settings-modal{max-height:90vh;overflow:auto}
.edit-player{border:0;background:#f1efff;color:var(--purple);border-radius:5px;padding:6px 8px;font:600 9px "DM Sans";cursor:pointer;margin-left:auto}
.team-modal-league{color:#9297a3;font-size:12px;margin:0 0 20px}.team-modal-stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:16px 0;margin-bottom:18px;text-align:center}.team-modal-stats div+div{border-left:1px solid var(--line)}.team-modal-stats strong,.team-modal-stats span{display:block}.team-modal-stats strong{font:700 20px "Space Grotesk"}.team-modal-stats span{color:#9da1ac;font-size:9px;margin-top:4px}
.match-game{border:1px solid var(--line);border-radius:10px;margin:14px 0;padding:12px}.match-game legend{font-weight:700;color:var(--ink)}.player-pair{border-left:4px solid;padding:8px 10px;margin:8px 0}.player-pair.home{border-color:#4169e1;background:#4169e10d}.player-pair.away{border-color:#d94b5b;background:#d94b5b0d}.player-pair strong{display:block;font-size:11px;margin-bottom:5px}.player-pair label{display:inline-block;width:49%;padding-right:8px}.player-pair select{width:100%;margin-top:4px}
.home-team{color:#4169e1}.away-team{color:#d94b5b}.match-row{display:flex;justify-content:space-between;gap:14px;padding:12px 0;border-top:1px solid var(--line);font-size:12px}.match-row>span{color:var(--muted);font-size:10px}
.federation-board{background:linear-gradient(115deg,#0759d5,#08cdbd);border-radius:16px;padding:25px 28px 30px;color:#fff;margin-bottom:20px}.federation-heading{display:flex;align-items:center;justify-content:center;gap:9px;font-size:19px;position:relative}.federation-back{position:absolute;left:0;border:0;background:none;color:#fff;font-size:32px;cursor:pointer}.federation-chevron{font-size:18px}.federation-season{position:absolute;right:0;text-align:left;font-size:10px;font-weight:500;line-height:1.5}.federation-season b{font-size:16px}.federation-tabs{display:flex;justify-content:center;gap:40px;border-bottom:1px solid #ffffff88;margin:28px 0 16px}.federation-tabs button{border:0;background:none;color:#bce4f2;padding:0 18px 14px;font:600 13px "DM Sans";cursor:pointer}.federation-tabs button.active{color:#fff;border-bottom:2px solid #fff}.federation-board .league-tabs{justify-content:center;margin-bottom:20px}.federation-board .league-tabs button{background:#ffffff22;color:#fff;border-color:#ffffff66}.federation-board .league-tabs button.active{background:#fff;color:#0759d5}.round-selector{margin-top:14px}.round-selector strong{display:block;font-size:13px;margin-bottom:9px}.round-selector>div{display:flex;gap:7px;overflow-x:auto;padding-bottom:5px}.round-selector button{min-width:39px;border:0;border-radius:7px;background:#fff;color:#102b67;padding:9px 10px;font-weight:700;cursor:pointer}.round-selector button.active{background:#8ef4e2}.federation-results{display:grid;gap:12px}.federation-match-card{background:#fff;color:var(--ink);border-radius:9px;padding:11px 13px;box-shadow:0 3px 9px #003b5728}.federation-match-meta{display:flex;justify-content:space-between;color:#68758a;font-size:9px;margin-bottom:13px}.federation-match-teams{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;text-align:center;font-size:13px}.federation-match-teams .home-team{text-align:right}.federation-match-teams .away-team{text-align:left}.federation-score{font-size:18px;font-weight:800;color:#1e2d4f}.federation-score i{font-style:normal;color:#aab4c2}.federation-match-card .text-button{display:block;margin:11px auto 0}.federation-empty{background:#ffffff22;border:1px dashed #ffffffaa;border-radius:9px;padding:22px;text-align:center;color:#eafffb}.empty-rounds{font-size:11px;color:#d5fffa}
.fantasy-player-main{min-width:0;flex:1}.player-statistics{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}.player-statistics span{display:inline-flex;align-items:baseline;gap:3px;padding:4px 6px;border-radius:5px;background:#f3f5f9;color:#7b8190;font-size:9px;font-weight:700}.player-statistics span b{color:#252a35;font-size:11px}
.rivals-panel{margin-top:24px}.rivals-list{display:grid;gap:10px}.rival-category{border:1px solid var(--line);border-radius:12px;background:#fbfcff;padding:12px}.rival-category h3{margin:0 0 8px;color:var(--purple);font-size:11px;text-transform:uppercase;letter-spacing:.08em}.rival-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 12px;border-radius:9px;background:#fff;box-shadow:0 2px 8px #20242d0d}.rival-row+ .rival-row{margin-top:7px}.rival-row div{display:grid;gap:3px}.rival-row strong{font-size:13px}.rival-row span{font-size:10px;color:var(--muted)}
.club-list-row{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding:10px 0}.club-list-row input{flex:1}.club-list-row>div{display:flex;gap:8px;white-space:nowrap}
.team-actions{display:flex;gap:8px;align-items:center}.rival-category{padding:14px 0;border-top:1px solid var(--line)}.rival-category-title{display:flex;align-items:center;gap:9px;margin-bottom:9px}.rival-category-title h3{margin:0;font-size:13px}.club-logo{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;color:#fff;font-weight:800;background:var(--purple)}.club-logo-1{background:var(--orange)}.club-logo-2{background:var(--green)}.club-logo-3{background:var(--blue)}.club-team-list{display:grid;gap:7px}.rival-row{display:flex;align-items:center;gap:10px;padding:9px 10px;background:#fafbff;border:1px solid var(--line);border-radius:10px}.rival-team-chip{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;color:#fff;font-size:11px;font-weight:800;background:var(--purple)}.team-chip-b{background:var(--orange)}.team-chip-c{background:var(--green)}.rival-team-copy{display:grid;gap:2px;flex:1}.rival-team-copy strong{font-size:12px}.rival-team-copy span{font-size:10px;color:var(--muted)}
.club-card{border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:0 16px;box-shadow:0 4px 14px #20242d08}.club-card-header{display:flex;align-items:center;gap:12px;padding:15px 0 12px;border-bottom:1px solid var(--line)}.club-title{display:flex;align-items:center;gap:8px}.club-title strong{font:700 15px "Space Grotesk";letter-spacing:.2px}.club-edit-button{width:26px;height:26px;border:1px solid #e1ddff;background:#f5f2ff;color:var(--purple);border-radius:7px;padding:0;font:700 15px "DM Sans";line-height:1;cursor:pointer}.club-edit-button:hover{background:#ebe6ff}.club-teams{display:grid;gap:0}.club-team-chip{border:0;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;width:100%;padding:11px 2px;background:transparent;color:var(--ink);text-align:left;cursor:pointer}.club-team-chip:last-child{border-bottom:0}.club-team-chip:hover{background:#faf9ff}.club-team-letter{display:grid;place-items:center;min-width:38px;height:29px;padding:0 7px;border-radius:8px;background:var(--purple);color:#fff;font:700 10px "DM Sans";line-height:1;white-space:nowrap}.club-team-divider{font-size:12px;color:#b1b4bf}.club-team-copy{display:grid;gap:3px;flex:1}.club-team-copy strong{font-size:12px}.club-team-copy span{font-size:10px;color:var(--muted)}.club-team-category{font-size:11px;font-weight:600;color:#737887;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.club-team-arrow{font-size:20px;line-height:1;color:var(--purple);opacity:.8}
.rivals-list{display:grid;gap:16px}.club-card{padding:21px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 4px 14px #20242d08}.club-card-header{padding:0 0 14px;border-bottom:1px solid var(--line);margin-bottom:0}.club-title strong{font:700 15px "Space Grotesk"}.club-team-chip{padding:12px 0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none}.club-team-chip:last-child{border-bottom:0}.club-team-chip:hover{background:#faf9ff}.club-team-letter{min-width:30px;height:30px;border-radius:8px;background:#f0edff;color:var(--purple);font-size:9px}.club-team-copy strong{font-size:11px}.club-team-copy span{font-size:10px;color:#a0a4ae}.club-team-arrow{font-size:17px;color:var(--purple)}
.match-federation-header{margin:0 -21px 18px;padding:18px 20px 20px;background:linear-gradient(115deg,#0759d5,#08cdbd);color:#fff}.match-federation-meta{display:flex;justify-content:space-between;align-items:center;font-size:11px}.match-status{background:#8ef4e2;color:#12345f;border-radius:18px;padding:7px 10px;font-weight:700}.match-status.scheduled{background:#fff;color:#0759d5}.match-federation-league{display:block;text-align:center;margin:16px 0 5px;font-size:14px}.match-federation-date{text-align:center;font-size:11px;opacity:.9}.match-federation-score{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin-top:18px;text-align:center;font-size:11px}.match-federation-score span:first-child{text-align:right}.match-federation-score span:last-child{text-align:left}.match-federation-score strong{font-size:26px}.match-federation-score i{font-style:normal;opacity:.7}.match-settings-grid{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:7px 10px;align-items:center;margin-bottom:15px}.match-settings-grid label{font-size:10px;font-weight:700;color:var(--muted)}.match-settings-grid select,.match-settings-grid input{min-width:0;border:1px solid var(--line);border-radius:7px;padding:8px;font:11px "DM Sans"}.match-games-heading{font:700 14px "Space Grotesk";padding:12px 0 3px;border-top:1px solid var(--line)}.match-game{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;margin:10px 0}.match-game legend{padding:0 7px;color:var(--purple);font-weight:700}.match-game .score-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.match-game .score-fields label{font-size:9px;color:var(--muted)}.match-game .score-fields input{width:100%;margin-top:4px;border:1px solid var(--line);border-radius:7px;padding:8px;font:700 13px "DM Sans";text-align:center}.match-game .player-pair{background:#fafbff;border-left-width:3px}.match-game .player-pair select{border:1px solid var(--line);border-radius:6px;padding:6px;font-size:10px}.club-card-header{padding:0 0 14px;border-bottom:1px solid var(--line);margin-bottom:0}.club-title strong{font:700 15px "Space Grotesk"}.club-team-chip{padding:12px 0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none}.club-team-chip:last-child{border-bottom:0}.club-team-chip:hover{background:#faf9ff}.club-team-letter{min-width:30px;height:30px;border-radius:8px;background:#f0edff;color:var(--purple);font-size:9px}.club-team-copy strong{font-size:11px}.club-team-copy span{font-size:10px;color:#a0a4ae}.club-team-arrow{font-size:17px;color:var(--purple)}
.upcoming-matches-panel{margin-bottom:18px}.upcoming-matches-panel .panel-header{align-items:center}.upcoming-matches-panel .season-pill{color:var(--purple);background:var(--purple-light)}#upcoming-matches-list{display:grid;gap:0}.upcoming-match-row{display:flex;align-items:center;gap:15px;padding:13px 0;border-top:1px solid var(--line)}.upcoming-match-date{display:grid;gap:3px;min-width:82px}.upcoming-match-date strong{font-size:11px}.upcoming-match-date span,.upcoming-match-round{font-size:10px;color:var(--muted)}.upcoming-match-teams{display:grid;grid-template-columns:minmax(120px,1fr) auto minmax(120px,1fr);align-items:center;gap:9px;flex:1;font-size:11px}.upcoming-match-teams .home-team{text-align:right}.upcoming-match-teams .away-team{text-align:left}.upcoming-match-teams>span{color:var(--purple);font-weight:700}.upcoming-match-actions{display:flex;align-items:center;gap:8px;white-space:nowrap}.upcoming-match-actions .primary-button{padding:8px 10px;font-size:10px}.empty-panel-message{color:var(--muted);font-size:11px;margin:4px 0}.club-card-header{padding:0 0 14px;border-bottom:1px solid var(--line);margin-bottom:0}.club-title strong{font:700 15px "Space Grotesk"}.club-team-chip{padding:12px 0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none}.club-team-chip:last-child{border-bottom:0}.club-team-chip:hover{background:#faf9ff}.club-team-letter{min-width:30px;height:30px;border-radius:8px;background:#f0edff;color:var(--purple);font-size:9px}.club-team-copy strong{font-size:11px}.club-team-copy span{font-size:10px;color:#a0a4ae}.club-team-arrow{font-size:17px;color:var(--purple)}
.club-team-line{display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line)}.club-team-line .club-team-chip{border-bottom:0;flex:1}.club-players-button{border:1px solid #e1ddff;background:#f5f2ff;color:var(--purple);border-radius:7px;padding:7px 9px;font:600 10px "DM Sans";cursor:pointer;white-space:nowrap}.club-players-button:hover{background:#ebe6ff}.rival-player-edit-row{display:grid;grid-template-columns:1.5fr 1fr 1fr auto;gap:8px;padding:9px 0;border-bottom:1px solid var(--line)}.rival-player-edit-row input,.rival-player-edit-row select{border:1px solid var(--line);border-radius:7px;padding:8px;font:11px "DM Sans"}.rival-player-edit-row .primary-button{padding:8px 10px;font-size:10px}.club-card-header{padding:0 0 14px;border-bottom:1px solid var(--line);margin-bottom:0}.club-title strong{font:700 15px "Space Grotesk"}.club-team-chip{padding:12px 0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none}.club-team-chip:last-child{border-bottom:0}.club-team-chip:hover{background:#faf9ff}.club-team-letter{min-width:30px;height:30px;border-radius:8px;background:#f0edff;color:var(--purple);font-size:9px}.club-team-copy strong{font-size:11px}.club-team-copy span{font-size:10px;color:#a0a4ae}.club-team-arrow{font-size:17px;color:var(--purple)}
.players-toolbar .filter-button{appearance:auto;cursor:pointer;color:var(--ink);background:#fff}
.empty-state{grid-column:1/-1;color:var(--muted);font-size:12px;margin:8px 0}
.match-card-actions{display:flex;justify-content:center;gap:18px;margin-top:11px}
.match-game .score-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.set-score{min-width:0;border:1px solid var(--line);border-radius:9px;padding:8px;background:#fafbff}
.set-score legend{padding:0 5px;font-size:10px;color:var(--purple)}
.set-score label{display:block;margin-top:5px;font-size:9px;color:var(--muted)}
.set-score input{width:100%;margin-top:3px}
.readonly-match-settings select:disabled,.readonly-match-settings input:disabled,.match-game input:disabled,.match-game select:disabled{background:#f4f5f8;color:var(--ink);opacity:1}
.reserve-summary{background:#fff8e6;border:1px solid #f0d78c;border-radius:10px;padding:10px 12px;margin:4px 0 14px;font-size:11px}.reserve-summary strong{display:block;color:#8a6d1a;margin-bottom:4px}.reserve-summary ul{margin:0;padding-left:16px}.reserve-summary li{margin:2px 0;color:var(--ink)}.reserve-side{background:#fafbff;border:1px solid var(--line);border-radius:12px;padding:10px;margin:8px 0}.reserve-side strong{display:block;font-size:11px;margin-bottom:6px}.reserve-row{display:grid;grid-template-columns:2fr 1fr 2fr;gap:8px;align-items:end;margin:6px 0}.reserve-row label{font-size:9px;color:var(--muted);display:block}.reserve-row select{width:100%;margin-top:4px;border:1px solid var(--line);border-radius:6px;padding:6px;font-size:10px}.reserve-row .reserve-used{display:flex;align-items:center;gap:5px;font-size:10px;padding-bottom:8px}.reserve-row .reserve-used input{margin:0}
option.option-conflict{color:#d94b5b;font-weight:700}
option.option-reserve{color:#7a7a85;font-style:italic}

.match-jump-nav{position:sticky;top:-25px;z-index:2;display:flex;flex-wrap:wrap;gap:6px;margin:12px -25px 0;padding:10px 25px;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 6px 10px -8px #17122530}.match-jump-nav button{flex:1;min-width:70px;border:1px solid var(--line);border-radius:999px;background:#fff;color:#5f6470;font:600 11px "DM Sans";padding:7px 10px;cursor:pointer}.match-jump-nav button:hover{border-color:var(--purple);color:var(--purple)}.match-jump-nav button.active{background:var(--purple-light);border-color:var(--purple);color:var(--purple)}.match-game,#match-reserves-heading{scroll-margin-top:60px}
.game-reserve-note{margin:8px 0 0;padding:7px 10px;border-radius:8px;background:#fff6ee;border:1px solid #f9d6bd;color:#8a4a1f;font-size:11px;line-height:1.4}.match-comments{width:100%;margin:6px 0 14px;border:1px solid var(--line);border-radius:8px;padding:10px;font:12px "DM Sans";resize:vertical;scroll-margin-top:60px}
.upcoming-card{border:1px dashed #8fb3ea;background:#f7fbff}.upcoming-tag{color:#0759d5;font-weight:700}.federation-score.upcoming-vs{font-size:13px;font-weight:700;color:#0759d5;text-transform:uppercase}.round-selector button.pending-round{box-shadow:inset 0 -3px 0 #f58c4d}.round-selector button.pending-round.active{box-shadow:inset 0 -3px 0 #0759d5}.calendar-menu-wrap{position:relative}.calendar-menu-button{cursor:pointer}.calendar-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:5;width:250px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 30px #17122526;padding:8px}.calendar-menu-title{margin:4px 8px 6px;font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase}.calendar-menu-row{display:flex;align-items:center;border-radius:7px}.calendar-menu-row.active{background:var(--purple-light)}.calendar-menu-league{flex:1;text-align:left;border:0;background:none;padding:8px;font:500 12px "DM Sans";color:var(--ink);cursor:pointer}.calendar-menu-row.active .calendar-menu-league{color:var(--purple);font-weight:700}.calendar-menu-star{border:0;background:none;font-size:16px;color:#b8bcc6;padding:4px 8px;cursor:pointer}.calendar-menu-star.is-favorite{color:#f0b52d}.calendar-menu-star:hover{color:#f0b52d}.calendar-menu-hint{margin:6px 8px 2px;font-size:10px;color:var(--muted)}.standings-group td{background:#f4f5f8;font-weight:700;font-size:11px;color:var(--purple)}
#leagues-modal .profile-modal{width:min(560px,100%)}.league-table-head,#league-fields .league-field{display:grid;grid-template-columns:1fr 80px 64px 34px;gap:8px;align-items:center}.league-table-head{margin:18px 0 6px;padding:0 2px;font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase}#league-fields .league-field{padding:8px 0;border-top:1px solid var(--line)}#league-fields .league-field input{width:100%;border:1px solid var(--line);border-radius:7px;padding:8px 9px;font:12px "DM Sans";outline:0}#league-fields .league-field input:focus{border-color:var(--purple);box-shadow:0 0 0 3px #7459e812}#league-fields .league-field input[data-field="abbreviation"]{text-transform:uppercase}#league-fields .league-field input[data-field="competition_rank"]{text-align:center}.league-delete{border:0;background:none;font-size:14px;cursor:pointer;border-radius:6px;padding:6px;opacity:.75}.league-delete:hover:not(:disabled){background:#fdeceb;opacity:1}.league-delete:disabled{opacity:.25;cursor:not-allowed}.league-usage{grid-column:1/-1;font-size:10px;color:var(--muted);margin-top:-2px}#league-fields .new-league .league-usage{color:var(--purple)}.add-league-button{margin-top:12px}
.fed-sync-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin-bottom:14px;font-size:12px;color:#5f6470}.fed-sync-bar[hidden]{display:none}.fed-badge{background:#0759d5;color:#fff;border-radius:5px;padding:3px 7px;font:700 10px "DM Sans";letter-spacing:.5px}.fed-error{color:#d35c57;font-weight:700;cursor:help}.fed-pending{border:0;border-radius:999px;background:#fff1e6;color:#b85a18;font:700 11px "DM Sans";padding:6px 11px;cursor:pointer}.fed-sync-button{margin-left:auto;padding:7px 12px;font-size:11px}.fed-match-info{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;margin:10px 0;padding:9px 12px;border-radius:9px;background:#eef5ff;color:#34507a;font-size:11px;line-height:1.4}.fed-match-info span:not(.fed-badge){flex:1 1 60%}.fed-players-modal{width:min(640px,100%)}.fed-player-row{display:grid;grid-template-columns:1.3fr 1.2fr 1fr auto;gap:8px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}.fed-player-name strong{display:block;font-size:12px}.fed-player-name span{font-size:10px;color:var(--muted)}.fed-player-row select{width:100%;border:1px solid var(--line);border-radius:7px;padding:7px;font:11px "DM Sans"}.fed-player-row select[hidden]{display:none}.fed-player-actions{display:flex;gap:6px;align-items:center}.fed-player-actions .text-button{margin:0}@media (max-width:640px){.fed-player-row{grid-template-columns:1fr}}.league-fed{grid-column:1/-1;display:flex;align-items:center;gap:8px;font-size:10px;font-weight:700;color:#0759d5;margin-top:2px}.league-fed select{flex:1;border:1px solid var(--line);border-radius:7px;padding:6px 8px;font:11px "DM Sans";color:var(--ink)}
#view-ligas .page-heading{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px}#view-ligas .page-heading>div:last-child{display:flex;flex-wrap:wrap;gap:8px;align-items:center}#view-ligas .page-heading .primary-button,#view-ligas .page-heading .outline-button{width:auto;margin:0;padding:10px 14px;font-size:11px;white-space:nowrap}.fed-sync-bar .fed-sync-button{width:auto;flex:0 0 auto}.match-card-actions{flex-wrap:wrap;gap:6px 22px}.match-card-actions .text-button{display:inline-block;margin:0}
.upcoming-matches-panel,.matches-panel{padding-bottom:14px}.match-list{display:grid}.match-list-row{display:grid;grid-template-columns:96px minmax(0,1fr) 110px auto;align-items:center;gap:14px;padding:11px 0;border-top:1px solid var(--line)}.match-list-row.overdue{background:linear-gradient(90deg,#fff7f0,transparent 60%)}.match-list-date strong{display:block;font-size:11px;text-transform:capitalize}.match-list-date span{font-size:10px;color:var(--muted)}.match-list-teams{display:grid;grid-template-columns:minmax(0,1fr) 54px minmax(0,1fr);align-items:center;gap:8px;font-size:11px;min-width:0}.match-list-teams strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.match-list-teams .home-team{text-align:right}.match-list-teams .away-team{text-align:left}.match-list-vs{text-align:center;color:var(--purple);font-weight:700;font-size:10px;text-transform:uppercase}.match-list-score{text-align:center;font-weight:600;color:#9aa0ab;font-size:13px}.match-list-score b{color:#6b7180;font-weight:700}.match-list-score b.winner{color:var(--ink);font-weight:800}.match-list-meta{font-size:10px;color:var(--muted);white-space:nowrap}.match-list-meta em{color:#c46a2a;font-style:normal;font-weight:700}.match-list-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;white-space:nowrap}.link-button{border:0;background:none;padding:4px 0;font:600 11px "DM Sans";color:var(--purple);cursor:pointer}.link-button:hover{text-decoration:underline}.link-button.danger{color:#d35c57}.primary-button.compact{margin:0;padding:7px 11px;font-size:10px;box-shadow:none}.list-more-button{display:block;margin:12px auto 0;border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 16px;font:600 11px "DM Sans";color:var(--purple);cursor:pointer}.list-more-button:hover{border-color:var(--purple)}
@media (max-width:900px){.match-list-row{grid-template-columns:80px minmax(0,1fr);row-gap:6px}.match-list-meta{grid-column:1}.match-list-actions{grid-column:2;justify-content:flex-start}}
.own-team-row td{background:var(--purple-light);font-weight:700;color:var(--purple)}.sanction-cell{color:#d35c57;font-weight:700}
#view-ligas .panel[hidden]{display:none!important}
#view-ligas .round-selector[hidden]{display:none}.board-standings{background:#fff;color:var(--ink);border-radius:12px;padding:6px 16px 10px;box-shadow:0 3px 9px #003b5728;margin-top:6px}.board-standings-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:10px 0 6px}.board-standings-head strong{font:700 14px "Space Grotesk"}.board-standings-head span{font-size:10px;color:var(--muted)}.board-standings table{width:100%;border-collapse:collapse}.board-standings th{font-size:10px;color:var(--muted);font-weight:700;text-align:center;padding:9px 6px;border-bottom:1px solid var(--line)}.board-standings th:nth-child(2){text-align:left}.board-standings td{text-align:center;padding:10px 6px;border-bottom:1px solid var(--line);font-size:12px}.board-standings td:nth-child(2){text-align:left}.board-standings tr:last-child td{border-bottom:0}.board-standings td:first-child{color:var(--muted);width:32px}
.players-toolbar{flex-wrap:wrap}.players-toolbar .search-box{min-width:200px}.players-toolbar .filter-button{width:auto;min-width:160px}.players-count{margin:-6px 0 12px;font-size:11px;color:var(--muted)}
.players-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.player-card{cursor:pointer;transition:border-color .15s,box-shadow .15s}.player-card:hover{border-color:var(--purple);box-shadow:0 4px 14px #7459e814}.player-card-main{min-width:0;flex:1}.player-card-main strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-card .player-card-stats{color:#6b7180}.player-card .edit-player{border:0;background:none;color:var(--purple);font:600 10px "DM Sans";cursor:pointer;padding:4px}
.player-avatar{width:40px;height:40px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;font:700 12px "DM Sans";object-fit:cover}.player-avatar.club{background:var(--purple-light);color:var(--purple)}.player-avatar.rival{background:#eef1f5;color:#6b7180}.player-avatar.xl{width:84px;height:84px;font-size:26px}
.player-detail-modal{width:min(760px,100%)}.player-detail-head{display:flex;align-items:center;gap:18px;margin-bottom:8px}.player-detail-head h2{margin:0 0 8px;font:700 22px "Space Grotesk"}.player-detail-chips{display:flex;flex-wrap:wrap;gap:8px}.player-detail-chips span{background:#f5f6f9;border-radius:8px;padding:5px 9px;font-size:12px;font-weight:600}.player-detail-chips small{display:block;font-size:9px;color:var(--muted);font-weight:700;letter-spacing:.4px}.player-detail-points{margin-left:auto;text-align:right}.player-detail-points b{display:block;font:700 26px "Space Grotesk";color:var(--purple)}.player-detail-points small{font-size:9px;color:var(--muted);font-weight:700}
.player-detail-section{font:700 14px "Space Grotesk";margin:20px 0 8px;display:flex;align-items:center;gap:8px}.player-detail-section span{background:var(--purple-light);color:var(--purple);border-radius:999px;padding:1px 8px;font-size:11px}
.player-stats-table{width:100%;border-collapse:collapse;font-size:12px}.player-stats-table th{font-size:10px;color:var(--muted);padding:8px 6px;border-bottom:1px solid var(--line);text-align:center}.player-stats-table th:first-child{text-align:left}.player-stats-table td{text-align:center;padding:9px 6px;border-bottom:1px solid var(--line)}.player-stats-table .team-cell{text-align:left}.player-stats-table .team-cell strong,.player-stats-table .team-cell span{display:block}.player-stats-table .team-cell span{font-size:10px;color:var(--muted)}.player-stats-table .total-row td{background:#f7f8fb;font-weight:700}
.player-games{display:grid}.player-game-row{display:grid;grid-template-columns:90px minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}.player-game-date strong{display:block;font-size:11px}.player-game-date span,.player-game-match small{font-size:10px;color:var(--muted)}.player-game-match span{display:block;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-tag{border-radius:999px;padding:3px 9px;font-size:10px;font-weight:700}.game-tag.won{background:#e7f7ef;color:#1f8a5b}.game-tag.lost{background:#fdeceb;color:#c24b46}.game-tag.sub{background:#fff1e6;color:#b85a18}
@media (max-width:640px){.player-detail-head{flex-wrap:wrap}.player-detail-points{margin-left:0;text-align:left}.player-game-row{grid-template-columns:1fr auto}}
.fed-match-info span{white-space:pre-line}
.player-stats-table .team-cell{min-width:220px}.player-stats-table .team-cell strong{white-space:nowrap}
.player-stats-table .team-cell strong{color:var(--ink)}
.auth-switch{text-align:center;font-size:12px;color:var(--muted);margin:16px 0 0}.auth-switch .link-button{font-size:12px}#register-form[hidden],#login-form[hidden],.auth-switch[hidden],[hidden].demo-hint{display:none}.auth-choice{display:flex;gap:14px}.auth-choice label{display:flex;align-items:center;gap:6px;margin:0;font-weight:600;color:var(--ink)}.auth-choice input{width:auto}.login-card select{width:100%;border:1px solid #e2e4ea;border-radius:8px;padding:12px;font:13px "DM Sans";background:#fff}
.fx-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}.fx-tabs button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 16px;font:600 12px "DM Sans";color:#5f6470;cursor:pointer}.fx-tabs button.active{background:var(--purple);border-color:var(--purple);color:#fff}.fx-tabs .fx-soon{opacity:.55;cursor:default}
.fx-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.fx-summary div{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px}.fx-summary small{display:block;font-size:9px;font-weight:700;color:var(--muted);letter-spacing:.5px}.fx-summary b{font:700 20px "Space Grotesk"}
.fx-pitch h3{font:700 12px "DM Sans";color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin:16px 0 8px}.fx-pitch h3 small{font-weight:600;text-transform:none;letter-spacing:0}.fx-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.fx-row.reserves .fx-card{background:#fafafc}
.fx-hint{margin:0;font-size:12px;color:#5f6470;background:var(--purple-light);border-radius:9px;padding:9px 12px}.fx-warning{font-size:12px;color:#8a4a1f;background:#fff6ee;border:1px solid #f9d6bd;border-radius:9px;padding:9px 12px}
.fx-card{border:1px solid var(--line);border-radius:12px;padding:11px 12px;background:#fff;display:flex;flex-direction:column;gap:4px;min-height:118px;transition:border-color .15s,box-shadow .15s}.fx-card strong{font-size:13px;line-height:1.2}.fx-card .fx-team{font-size:10px;color:var(--muted)}.fx-card-top{display:flex;align-items:center;gap:6px}.fx-points{margin-left:auto;font:700 14px "Space Grotesk";color:var(--purple)}.fx-points small{font-size:9px;color:var(--muted)}.fx-card-bottom{margin-top:auto;display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700}.fx-card-bottom .link-button{font-size:11px}.fx-card-bottom .fx-swap{margin-left:auto}
.fx-card.empty{align-items:center;justify-content:center;border-style:dashed;color:var(--muted);font-size:12px}.fx-card.selected{border-color:var(--purple);box-shadow:0 0 0 3px #7459e826}.fx-card.fx-target{border-color:#31a97c;box-shadow:0 0 0 3px #31a97c30;cursor:pointer}.fx-card.locked{background:#fbfbfd}.fx-lock{font-size:10px;color:#b85a18;font-weight:700}
.fx-pos{font:700 9px "DM Sans";border-radius:5px;padding:3px 6px;background:#eef1f5;color:#5f6470}.fx-pos.delantero{background:#e8f0ff;color:#2f5fc4}.fx-pos.trasero{background:#fff1e6;color:#b85a18}.fx-pos.ambas{background:#efe9ff;color:var(--purple)}
.fx-offer{display:grid;grid-template-columns:minmax(0,1.6fr) 110px minmax(0,1.4fr);gap:14px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.fx-offer-main{display:flex;gap:10px;align-items:flex-start;min-width:0}.fx-offer-main strong,.fx-offer-main span,.fx-offer-main small{display:block}.fx-offer-main strong{font-size:13px}.fx-offer-main span{font-size:11px;color:#5f6470}.fx-offer-main small{font-size:10px;color:var(--muted)}.fx-offer-price small{display:block;font-size:9px;color:var(--muted);font-weight:700}.fx-offer-price b{font:700 17px "Space Grotesk"}
.fx-bid{display:flex;flex-wrap:wrap;align-items:center;gap:8px;justify-content:flex-end}.fx-bid input{width:90px;border:1px solid var(--line);border-radius:7px;padding:8px;font:700 13px "DM Sans";text-align:right}.fx-my-bid{width:100%;text-align:right;font-size:10px;color:#1f8a5b;font-weight:700}
.fx-columns{display:grid;grid-template-columns:1.2fr 1fr;gap:14px}.fx-table{width:100%;border-collapse:collapse;font-size:12px}.fx-table th{font-size:10px;color:var(--muted);text-align:left;padding:8px;border-bottom:1px solid var(--line)}.fx-table td{padding:10px 8px;border-bottom:1px solid var(--line)}.fx-move{display:grid;grid-template-columns:52px 1fr auto;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--line);font-size:12px}.fx-move span{font-size:10px;color:var(--muted)}.fx-move p{margin:0}.fx-message{padding:28px;text-align:center}.fx-message h2{font:700 18px "Space Grotesk";margin:0 0 6px}
@media (max-width:900px){.fx-summary{grid-template-columns:repeat(2,1fr)}.fx-row{grid-template-columns:1fr}.fx-offer{grid-template-columns:1fr}.fx-bid{justify-content:flex-start}.fx-columns{grid-template-columns:1fr}}
.fx-mine{margin:0;text-align:right;font-size:12px;font-weight:700;color:var(--purple)}
.google-area[hidden],#forgot-form[hidden],#reset-form[hidden],.auth-forgot[hidden],#register-password-field[hidden],.auth-message[hidden]{display:none}.google-area{margin-bottom:6px}#google-signin{display:flex;justify-content:center;min-height:44px}.auth-divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:11px;margin:14px 0 0}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--line)}.auth-forgot{text-align:right;margin:8px 0 0}.auth-forgot .link-button{font-size:11px}.auth-message{font-size:12px;color:#34507a;background:#eef5ff;border-radius:8px;padding:9px 11px;margin:12px 0 0}.auth-message:empty{display:none}
.profile-player{border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:grid;gap:8px}.profile-player-status{margin:0;font-size:12px}.profile-player-status.pending{color:#b85a18}.profile-player-row{display:flex;gap:8px}.profile-player-row input{flex:1}.profile-player-row .outline-button{width:auto}.profile-player .link-button{justify-self:start}.profile-player .link-button[hidden]{display:none}
#nav-usuarios[hidden]{display:none}.claim-card{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;gap:14px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.claim-card small{display:block;font-size:9px;font-weight:700;color:var(--muted);letter-spacing:.4px}.claim-card strong{display:block;font-size:13px}.claim-card span{font-size:11px;color:var(--muted)}.claim-actions{display:flex;gap:10px;align-items:center}.users-panel{margin-top:14px}.users-table{width:100%;border-collapse:collapse;font-size:12px}.users-table th{text-align:left;font-size:10px;color:var(--muted);padding:8px;border-bottom:1px solid var(--line)}.users-table td{padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top}.users-table small,.users-table .muted{color:var(--muted)}.role-tag{font-size:9px;font-weight:700;background:var(--purple-light);color:var(--purple);border-radius:5px;padding:2px 5px}.role-tag.google{background:#eef5ff;color:#2f5fc4}.reset-link{margin-top:6px;display:grid;gap:3px}.reset-link input{width:100%;min-width:260px;border:1px solid var(--line);border-radius:6px;padding:6px;font:11px monospace}.reset-link[hidden]{display:none}
@media (max-width:900px){.claim-card{grid-template-columns:1fr}}
.profile-credentials{border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin-top:10px}.profile-credentials summary{cursor:pointer;font-size:12px;font-weight:700;color:var(--purple)}.profile-credentials input{width:100%}.profile-credentials .outline-button{margin-top:10px;width:auto}

/* Fantasy · pista (titulares) y banquillo (reservas) */
#fx-body > .fx-hint{margin-bottom:12px}
.fx-court{background:linear-gradient(135deg,#0759d5,#08b8c9);border-radius:16px;padding:16px 18px 20px;margin-bottom:14px;box-shadow:0 8px 24px #0759d52e}
.fx-court-head,.fx-bench-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-bottom:6px}.fx-court-head strong{font:700 16px "Space Grotesk";color:#fff}.fx-court-head span{font-size:11px;color:#dff4ff}
.fx-line-label{margin:12px 0 7px;font:700 10px "DM Sans";letter-spacing:.8px;text-transform:uppercase;color:#d7f3ff}
.fx-bench{background:#f1f2f6;border:2px dashed #d5d8e1;border-radius:16px;padding:14px 18px 18px}.fx-bench-head strong{font:700 14px "Space Grotesk";color:#5f6470}.fx-bench-head span{font-size:11px;color:var(--muted)}.fx-bench .fx-row{margin-top:8px}
.fx-card{position:relative;align-items:center;text-align:center;min-height:0;padding:12px 12px 14px;gap:3px}
.fx-card.starter{border:0;box-shadow:0 6px 16px #00265a33}.fx-card.starter.delantero{border-top:4px solid #2f5fc4}.fx-card.starter.trasero{border-top:4px solid #e0782f}.fx-card.starter.ambas{border-top:4px solid var(--purple)}
.fx-card.bench{background:#fafafc;border:1px solid #e3e5ec;box-shadow:none}.fx-card.bench .fx-photo{filter:grayscale(.8);opacity:.75}.fx-card.bench strong{color:#5f6470}.fx-card.bench .fx-points{color:#9aa0ab}
.fx-card-top{width:100%;justify-content:flex-start}.fx-card-top .fx-lock{margin-left:auto;font-size:13px}
.fx-starter-tag,.fx-bench-tag{margin-left:auto;font:700 9px "DM Sans";letter-spacing:.4px;text-transform:uppercase;border-radius:999px;padding:3px 8px}.fx-starter-tag{background:#e7f7ef;color:#1f8a5b}.fx-bench-tag{background:#e9eaef;color:#7a7f8c}.fx-card-top .fx-lock+.fx-starter-tag,.fx-card-top .fx-starter-tag+.fx-lock,.fx-card-top .fx-bench-tag+.fx-lock{margin-left:6px}
.fx-photo{width:72px;height:72px;border-radius:50%;object-fit:cover;display:grid;place-items:center;margin:6px auto 6px;background:var(--purple-light);color:var(--purple);font:700 22px "Space Grotesk";border:3px solid #fff;box-shadow:0 0 0 2px #e3e5ec}
.fx-card.starter .fx-photo{box-shadow:0 0 0 2px #2f5fc433}.fx-photo.empty{background:#eceef3;border-style:dashed}
.fx-card .fx-points{margin:2px 0 0;font:700 18px "Space Grotesk"}
.fx-card-bottom{width:100%;border-top:1px solid var(--line);padding-top:9px;margin-top:8px}.fx-card-bottom>span{margin-right:auto}
.fx-card.empty{min-height:210px;gap:4px}.fx-court .fx-card.empty{background:#ffffff26;border:2px dashed #ffffff8c;color:#fff}.fx-court .fx-card.empty small{color:#dff4ff}
.fx-card.fx-target{box-shadow:0 0 0 4px #31a97c,0 6px 16px #00265a33}.fx-card.selected{box-shadow:0 0 0 4px #fff,0 0 0 7px var(--purple)}
/* Arrastrar fichas del fantasy */
#fx-body .fx-card.starter:not(.locked),#fx-body .fx-card.bench:not(.empty):not(.locked){cursor:grab}
.fx-card .fx-photo{touch-action:none;user-select:none;-webkit-user-drag:none}
.fx-ghost{position:fixed;left:0;top:0;z-index:1000;pointer-events:none;opacity:.92;box-shadow:0 18px 40px #00265a55!important;cursor:grabbing}
body.fx-dragging,body.fx-dragging *{cursor:grabbing!important;user-select:none}
.fx-card.fx-drag-origin{opacity:.35}
.fx-card.fx-drop-hover{transform:scale(1.04);box-shadow:0 0 0 5px #31a97c,0 10px 24px #00265a44!important}
.fx-card{transition:transform .12s,box-shadow .12s,border-color .15s}
.fx-bid .outline-button.compact{width:auto;padding:7px 11px;font-size:10px}.fx-buy-now[disabled]{opacity:.45;cursor:not-allowed}.fx-offer{grid-template-columns:minmax(0,1.4fr) 150px minmax(0,1.6fr)}

/* Porra de partidos */
.porra{margin:12px 0 4px;padding:10px 12px;border-radius:10px;background:#f4f7ff;border:1px solid #dfe7fb;text-align:left}
.porra-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-bottom:8px}.porra-head strong{font-size:12px;color:#1e2d4f}.porra-head span{font-size:10px;color:#68758a}
.porra-chips{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.porra-chip{display:grid;gap:3px;border:1px solid #d6def0;background:#fff;border-radius:9px;padding:7px 8px;cursor:pointer;text-align:left;font-family:"DM Sans";transition:border-color .12s,box-shadow .12s}
.porra-chip:hover:not([disabled]){border-color:var(--purple)}.porra-chip b{font:700 15px "Space Grotesk";color:#1e2d4f}.porra-chip small{font-size:10px;color:#68758a}.porra-chip em{font-style:normal;font-size:11px;font-weight:700;color:#1f8a5b}
.porra-bar{display:block;height:5px;border-radius:3px;background:#e7ebf5;overflow:hidden}.porra-bar i{display:block;height:100%;background:#7aa2f0;border-radius:3px}
.porra-chip.mine{border-color:var(--purple);background:var(--purple-light);box-shadow:0 0 0 2px #7459e833}.porra-chip.mine .porra-bar i{background:var(--purple)}
.porra-chip[disabled]{cursor:default;opacity:.7}
.porra-toggle{border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 10px;font:600 11px "DM Sans";color:#5f6470;cursor:pointer}.porra-toggle.picked{border-color:var(--purple);color:var(--purple);background:var(--purple-light)}
.match-list-porra{grid-column:1/-1}.match-list-porra .porra{margin-top:2px}
.fx-side{display:grid;gap:14px;align-content:start}.porra-win{color:#1f8a5b}.porra-miss{color:#b0b4be;font-weight:600}.fx-move small{color:var(--muted)}
@media (max-width:640px){.porra-chips{grid-template-columns:repeat(2,1fr)}}

/* Escudos */
.crest{--crest-h:250;display:inline-grid;place-items:center;flex:0 0 auto;width:22px;height:22px;border-radius:50%;background:hsl(var(--crest-h) 55% 92%);color:hsl(var(--crest-h) 55% 32%);font:800 9px "DM Sans";letter-spacing:-.2px;box-shadow:inset 0 0 0 1px hsl(var(--crest-h) 40% 80%);overflow:hidden;vertical-align:middle}
.crest img{width:100%;height:100%;object-fit:contain}.crest:has(img){background:#fff;box-shadow:none;border-radius:6px}
.crest.md{width:34px;height:34px;font-size:12px}.crest.md:has(img){border-radius:8px}
.federation-match-teams strong{display:flex;align-items:center;gap:10px}.federation-match-teams .home-team{justify-content:flex-end}.federation-match-teams .away-team{justify-content:flex-start}
.match-list-teams strong{display:flex;align-items:center;gap:7px;min-width:0}.match-list-teams strong span{overflow:hidden;text-overflow:ellipsis}.match-list-teams .home-team{justify-content:flex-end}
.standings-team{display:inline-flex;align-items:center;gap:8px}
.crest-upload{border:0;background:none;padding:0;cursor:pointer}.club-list-row{display:flex;align-items:center;gap:10px}.club-list-row .club-name-input{flex:1}.own-club-row{padding:8px 0;border-bottom:1px solid var(--line);margin-bottom:6px}.own-club-row strong{flex:1;font-size:12px}.own-club-row small{color:var(--muted);font-weight:500}
#view-ligas .page-heading .outline-button#edit-crests-button{display:none}body.is-admin #view-ligas .page-heading .outline-button#edit-crests-button{display:inline-block}

/* Contraste entre partidos */
#federation-results{gap:14px}
.federation-match-card{border:1px solid #dfe6f3;box-shadow:0 6px 18px #00265a2e;padding:13px 16px}
.federation-match-card.upcoming-card{background:#fff;border:1px solid #cfdcf5;border-left:5px solid #7aa2f0}
.federation-match-card:not(.upcoming-card){border-left:5px solid #31a97c}
.federation-match-meta{padding-bottom:9px;margin-bottom:11px;border-bottom:1px solid #edf0f6}
.match-list-row:nth-child(even){background:#f8f9fc}.match-list-row{padding-left:10px;padding-right:10px;border-radius:8px}.match-list-row:hover{background:#f1effd}

/* Porra compacta */
.porra{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:10px 0 2px;padding:6px 8px;background:#f6f8fd;border:1px solid #e3e9f6;border-radius:9px}
.porra-label{font-size:11px;font-weight:700;color:#1e2d4f;white-space:nowrap}.porra-label small{font-weight:600;color:#7b8699;background:#e7ecf6;border-radius:999px;padding:1px 6px;margin-left:2px}
.porra-chips{display:flex;flex-wrap:wrap;gap:5px;flex:1}
.porra-chip{display:inline-flex;align-items:baseline;gap:5px;padding:4px 9px;border-radius:999px;border:1px solid #d6def0;background:linear-gradient(90deg,#dfe8fb var(--pct,0%),#fff var(--pct,0%));grid-template-columns:none}
.porra-chip b{font-size:12px}.porra-chip small{font-size:9px}.porra-chip em{font-size:10px}
.porra-chip.mine{background:linear-gradient(90deg,#d9d0fb var(--pct,0%),var(--purple-light) var(--pct,0%))}
.match-list-porra .porra{margin:0 0 4px}
@media (max-width:640px){.porra-chips{gap:4px}}

/* Equipos · disponibilidad por jornada */
.availability-panel,.usage-panel{margin-top:18px}
.availability-rounds{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:14px}.availability-rounds strong{font-size:12px;margin-right:4px}
.availability-rounds button{min-width:34px;border:1px solid var(--line);background:#fff;border-radius:7px;padding:6px 8px;font:700 11px "DM Sans";cursor:pointer;color:#5f6470}.availability-rounds button.active{background:var(--purple);border-color:var(--purple);color:#fff}
.availability-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.availability-team{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff}
.availability-head{display:flex;align-items:center;gap:10px;padding-bottom:10px;border-bottom:1px solid var(--line)}.availability-head h3{margin:0;font:700 14px "Space Grotesk"}.availability-head p{margin:2px 0 0;font-size:11px;color:var(--muted)}
.availability-team h4{display:flex;align-items:center;gap:6px;margin:12px 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.4px}.availability-team h4 span{border-radius:999px;padding:1px 7px;font-size:10px}
.team-card [data-team-go]{cursor:pointer;border-radius:8px;transition:background .15s}
.team-card .team-meta>span[data-team-go]{padding:2px 6px;margin:-2px -6px}
.team-card [data-team-go]:hover{background:#f4f2ff}
.team-card .roster[data-team-go]{width:max-content;padding:3px;margin-left:-3px}
.roster span.has-photo{padding:0;overflow:hidden;background:#ddd}
.roster span img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.fx-summary .fx-kpi{cursor:pointer;transition:border-color .15s,box-shadow .15s}
.fx-summary .fx-kpi:hover,.fx-summary .fx-kpi:focus-visible{border-color:#cfc6ff;box-shadow:0 4px 14px #7459e81a;outline:0}
.fx-summary small{display:flex !important;align-items:center;gap:6px}
.fx-summary small em{font-style:normal;margin-left:auto;color:var(--purple);font-size:14px;line-height:1}
.fx-kpi-icon{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:7px;font-size:12px;letter-spacing:0}
.fx-kpi-icon.cash{background:#e4f6ec}.fx-kpi-icon.value{background:#e8f0ff}.fx-kpi-icon.points{background:#fff6da}.fx-kpi-icon.rank{background:#f1efff}
.fx-tabs .fx-sobres-tab{position:relative;background:linear-gradient(135deg,#fff8e6,#ffeec8);border-color:#f2d28c;color:#9a6512}
.fx-tabs .fx-sobres-tab.active{background:linear-gradient(135deg,#e7a83a,#c98516);border-color:#c98516;color:#fff}
.fx-sobres-badge{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#e5484d;color:#fff;font:700 10px/18px "DM Sans";font-style:normal;text-align:center;box-shadow:0 0 0 2px #fff;animation:fx-badge-pop 1.6s ease-in-out infinite}
.fx-sobres-badge[hidden]{display:none}
@keyframes fx-badge-pop{0%,100%{transform:scale(1)}50%{transform:scale(1.15)}}
.fx-cash-totals{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:12px}
.fx-cash-totals div{background:#f7f8fb;border-radius:10px;padding:8px 10px}.fx-cash-totals small{display:block;font-size:10px;color:var(--muted)}.fx-cash-totals b{font:700 15px "Space Grotesk"}
.fx-cash-totals .plus b{color:#1f8a5b}.fx-cash-totals .minus b{color:#c0392b}
.fx-cash-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.fx-cash-list li{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:8px;align-items:center;padding:7px 8px;border-radius:9px;background:#fafafd}
.fx-cash-icon{font-size:17px;text-align:center}.fx-cash-text strong{display:block;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fx-cash-text small,.fx-cash-amount small{font-size:10px;color:var(--muted)}
.fx-cash-amount{text-align:right}.fx-cash-amount b{display:block;font:700 13px "Space Grotesk"}.fx-cash-amount b.plus{color:#1f8a5b}.fx-cash-amount b.minus{color:#c0392b}
.fx-cash-list li.inicio{background:#f1efff}
@media (max-width:640px){.fx-cash-totals{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:650px){.fx-sobres-label{display:none}#view-fantasy .fx-tabs .fx-sobres-tab{flex:0 0 auto;padding:8px 10px}}
.history-result.w3{background:#1f9d55;color:#fff}.history-result.w2{background:#6fcf97;color:#0d4d2b}.history-result.w1{background:#c6efd6;color:#1f6b41}.history-result.w0{background:#e05252;color:#fff}
.history-row-wrap{display:flex;align-items:center;gap:4px}.history-row-wrap .history-row{flex:1;min-width:0}
.history-forecast{flex:0 0 auto;width:32px;height:32px;border-radius:9px;border:1px solid #e3dcff;background:#f6f3ff;font-size:15px;cursor:pointer;display:grid;place-items:center}
.history-forecast:hover{background:#ece6ff;border-color:#cbbdff}
.forecast-title{display:flex;align-items:center;gap:10px}
.forecast-note{font-size:12px;color:#5f6470;margin:0 0 12px}
.forecast-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.forecast-game{background:#f8f7fd;border-radius:12px;padding:10px;display:grid;gap:8px}
.forecast-game h4{margin:0;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--purple)}
.forecast-cell{display:grid;justify-items:center;text-align:center;gap:3px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 6px}
.forecast-cell small{font-size:9px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.forecast-cell strong{font-size:12px;line-height:1.2}
.forecast-cell.empty strong{color:var(--muted);font-weight:500}
.forecast-face{width:38px;height:38px;border-radius:50%;object-fit:cover;display:inline-grid;place-items:center;background:#fde8dc;color:#b65b32;font:700 11px "DM Sans";flex:0 0 auto}
.forecast-pct{font-size:10px;font-weight:700;border-radius:999px;padding:1px 7px}
.forecast-pct.high{background:#e4f6ec;color:#1f8a5b}.forecast-pct.mid{background:#fff4dc;color:#a8701a}.forecast-pct.low{background:#f1f1f4;color:#6b6b7b}
.forecast-sub{margin:14px 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}
.forecast-others{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.forecast-others li{display:flex;align-items:center;gap:6px;background:#f7f8fb;border-radius:999px;padding:3px 10px 3px 3px;font-size:12px}
.forecast-others .forecast-face{width:24px;height:24px;font-size:8px}.forecast-others small{color:var(--muted);font-size:10px}
.forecast-h2h{font-size:12px;margin:12px 0 0;color:#5f6470}
@media (max-width:640px){.forecast-grid{grid-template-columns:1fr}.forecast-game{grid-template-columns:auto 1fr 1fr;align-items:center}.forecast-game h4{writing-mode:vertical-rl;transform:rotate(180deg)}}
.fx-mood-line{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:3px 5px;font-size:10px;font-weight:700;margin-top:2px}
.fx-mood-line i{font-style:normal;font-size:8px}.fx-mood-line i.up{color:#1f9d55}.fx-mood-line i.down{color:#e05252}
.fx-mood-bar{flex-basis:100%;height:4px;border-radius:999px;background:#eceef3;overflow:hidden;max-width:90px}
.fx-mood-bar span{display:block;height:100%;border-radius:999px}
.fx-mood-line.m4{color:#1f8a5b}.fx-mood-line.m4 .fx-mood-bar span{background:#1f9d55}
.fx-mood-line.m3{color:#2f8f5f}.fx-mood-line.m3 .fx-mood-bar span{background:#6fcf97}
.fx-mood-line.m2{color:#8a6d12}.fx-mood-line.m2 .fx-mood-bar span{background:#f0b52d}
.fx-mood-line.m1{color:#b85a18}.fx-mood-line.m1 .fx-mood-bar span{background:#f58c4d}
.fx-mood-line.m0{color:#c0392b}.fx-mood-line.m0 .fx-mood-bar span{background:#e05252}
.fx-leaving-tag{flex-basis:100%;font-size:9px;color:#fff;background:#e05252;border-radius:999px;padding:1px 7px;max-width:max-content;margin:2px auto 0}
.fx-card.leaving{box-shadow:0 0 0 2px #e05252 inset}
.fx-hint-mood{background:#f4f9ff;border-color:#d7e6fb}
.fx-market-info{margin-top:16px;border-radius:14px;padding:16px 18px;background:linear-gradient(135deg,#f4f1ff,#eef6ff);border:1px solid #dcd3ff}
.fx-market-info-head{display:flex;gap:12px;align-items:flex-start}
.fx-market-info-icon{font-size:22px;line-height:1}
.fx-market-info h3{font:700 16px "Space Grotesk";margin:0 0 3px}.fx-market-info-head p{margin:0;font-size:12px;color:#5f6470}
.fx-market-info-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}
.fx-market-info-grid>div{background:#fff;border-radius:11px;padding:11px 12px;border:1px solid #ebe7fb}
.fx-market-info-grid b{font-size:13px}.fx-market-info-grid p{font-size:12px;line-height:1.45;color:#4a4f5c;margin:5px 0 8px}
.fx-market-info-grid .fx-buy-envelope{background:linear-gradient(135deg,#c98a4b,#9c5f2a);box-shadow:none}
.fx-market-info-foot{font-size:11px;color:#5f6470;margin:10px 0 0;line-height:1.5}
.fx-sobre-shop{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#ffffff30;border-radius:12px;padding:8px 10px;margin:8px 0;font-size:12px;text-align:left}
.fx-sobre-shop span:nth-child(2){flex:1;min-width:160px}
.fx-sobre-shop .fx-buy-envelope{background:linear-gradient(135deg,#c98a4b,#9c5f2a);box-shadow:none}
@media (max-width:760px){.fx-market-info-grid{grid-template-columns:1fr}}
.availability-team li.doubt{background:#fff8e1}.availability-team li.doubt small{color:#9a6a00;font-weight:700}
.availability-fold{margin:10px 0 0}
.availability-fold summary{display:flex;align-items:center;gap:6px;cursor:pointer;list-style:none;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#1f8a5b;padding:6px 9px;border-radius:7px;background:#f2faf6}
.availability-fold summary::-webkit-details-marker{display:none}
.availability-fold summary::after{content:"▸";margin-left:auto;transition:transform .15s}
.availability-fold[open] summary::after{transform:rotate(90deg)}
.availability-fold summary span{border-radius:999px;padding:1px 7px;font-size:10px;background:#e7f7ef}
.availability-fold[open] summary{margin-bottom:6px}
.availability-fold.blocked summary{color:#c24b46;background:#fdf3f2}
.availability-fold.blocked summary span{background:#fdeceb}
h4.played{color:#2f5fc4}h4.played span{background:#e8f0ff}h4.available{color:#1f8a5b}h4.available span{background:#e7f7ef}h4.blocked{color:#c24b46}h4.blocked span{background:#fdeceb}
.availability-team ul{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.availability-team li{display:grid;gap:1px;padding:6px 9px;border-radius:7px;font-size:12px;background:#f7f8fb}.availability-team li small{font-size:10px;color:var(--muted)}
.availability-team li.played{background:#eef4ff}.availability-team li.own{background:#effaf4}.availability-team li.other{background:#f7f8fb}.availability-team li.warn{background:#fff6ee}.availability-team li.warn small{color:#b85a18;font-weight:700}
.availability-team li.blocked{background:#fdf3f2;color:#8b3b37}.availability-team li.blocked small{color:#b0605b}.availability-team li.none{background:none;color:var(--muted);font-size:11px;padding:2px 0}
.availability-name{font-weight:600}.availability-name small{font-size:9px;font-weight:700;color:var(--muted)}
.usage-table{width:100%;border-collapse:collapse;font-size:12px}.usage-table th{text-align:left;font-size:10px;color:var(--muted);padding:8px;border-bottom:1px solid var(--line)}.usage-table td{padding:8px;border-bottom:1px solid var(--line);vertical-align:top}
.usage-table td b{font:700 14px "Space Grotesk";margin-right:6px}.usage-table td small{font-size:10px;color:var(--muted)}.usage-player strong,.usage-player small{display:block}
.usage-own{background:#f4f2ff}.usage-own small{color:var(--purple)!important}.usage-none{color:#b0b4be}.usage-low small{color:#b85a18!important;font-weight:700}.usage-full{background:#fdf3f2}.usage-full small{color:#c24b46!important;font-weight:700}
/* Disponibilidad compacta: pastillas */
.availability-team ul{display:flex;flex-wrap:wrap;gap:5px}
.availability-team li{display:inline-flex;align-items:baseline;gap:5px;padding:4px 9px;border-radius:999px;font-size:11px;line-height:1.3}
.availability-team li small{font-size:9px}
.availability-team li.blocked{display:grid;width:100%;border-radius:8px;padding:5px 9px}
.availability-team li.none{padding:0}
.usage-table .usage-player{min-width:210px}.usage-table .usage-player strong{color:var(--ink);font-size:12px}.usage-table .usage-player small{font-size:10px;color:var(--muted)}

/* Acciones del recuadro azul */
.board-toolbar{margin-top:14px}.board-toolbar:empty{display:none}
.board-actions{display:flex;flex-wrap:wrap;gap:8px}
.board-actions button{border:1px solid #ffffff99;background:#ffffff22;color:#fff;border-radius:999px;padding:8px 14px;font:700 12px "DM Sans";cursor:pointer}
.board-actions button:hover,.board-actions button.active{background:#fff;color:#0759d5}
.board-actions .board-new{margin-left:auto;font-weight:600;background:none;border-style:dashed}
.board-picker{margin-top:10px;background:#fff;color:var(--ink);border-radius:12px;padding:10px 12px;box-shadow:0 8px 22px #00265a40}
.board-picker>p{margin:0 0 6px;font-size:11px;font-weight:700;color:#68758a;text-transform:uppercase;letter-spacing:.4px}
.board-picker-row{display:grid;grid-template-columns:1fr auto 1fr auto;gap:10px;align-items:center;width:100%;border:0;border-top:1px solid #edf0f6;background:none;padding:9px 6px;font:600 12px "DM Sans";text-align:left;cursor:pointer;border-radius:8px}
.board-picker-row:hover{background:#f1effd}.board-picker-row span{display:flex;align-items:center;gap:6px;min-width:0}.board-picker-row span:first-child{justify-content:flex-end}
.board-picker-row b{font:700 13px "Space Grotesk";color:#0759d5}.board-picker-row small{font-size:10px;color:var(--muted);white-space:nowrap}
.board-picker-empty{margin:4px 0;font-size:12px;color:var(--muted)}
/* Formulario en modo alineación previa */
.lineup-mode .score-fields,.lineup-mode .reserve-used,.lineup-mode [data-reserve-target],.lineup-mode .reserve-row label:last-child,.lineup-mode .match-federation-score strong{display:none}
.lineup-hint{font-size:12px;background:#eef5ff;color:#34507a;border-radius:9px;padding:9px 12px;margin:12px 0 0}
h4.lined{color:var(--purple)}h4.lined span{background:var(--purple-light)}.availability-team li.lined{background:var(--purple-light)}
#match-error{line-height:1.5}

/* Lesiones */
.injury-tag{font-size:9px;font-weight:700;color:#c24b46;background:#fdeceb;border-radius:999px;padding:2px 6px;margin-left:4px;vertical-align:middle}
.injury-box{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0 0;padding:9px 12px;border:1px dashed #e3c3c0;border-radius:10px}
.injury-box input{flex:1;min-width:180px;border:1px solid var(--line);border-radius:7px;padding:7px 9px;font:12px "DM Sans"}
.injury-box.injured{border-style:solid;background:#fdf3f2;color:#8b3b37;font-size:12px}.injury-box.injured span{flex:1}
.injury-box .outline-button.compact{width:auto;padding:7px 11px;font-size:11px}
.fx-injury{font-size:13px;margin-left:4px}
.availability-result{margin-left:auto;font:800 16px "Space Grotesk";border-radius:8px;padding:4px 10px}.availability-result.won{background:#e7f7ef;color:#1f8a5b}.availability-result.lost{background:#fdeceb;color:#c24b46}.availability-team.finished{background:#fbfcfe}
.availability-result{white-space:nowrap;flex:0 0 auto}

/* Admin-only y resumen */
.admin-only{display:none!important}body.is-admin .admin-only{display:inline-flex!important}
.stat-card.clickable{cursor:pointer}.stat-card.clickable:hover{box-shadow:0 6px 18px #51428b18}
button.training-row{width:100%;border:0;background:none;text-align:left;cursor:pointer;font:inherit;border-radius:10px}button.training-row:hover{background:#f7f6fe}
#summary-teams .league-row{display:flex;align-items:center;gap:12px}#summary-teams .league-copy{flex:1;min-width:0}#summary-teams .league-copy span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
/* Entrenamientos */
.calendar-toolbar .outline-button.compact{width:auto;padding:7px 12px;font-size:11px;margin-left:8px}
.training-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.training-day{min-height:150px;border:1px solid var(--line);border-radius:10px;padding:8px;display:flex;flex-direction:column;gap:6px;background:#fff}
.training-day.today{border-color:var(--purple);box-shadow:0 0 0 2px #7459e822}
.training-day-head{display:flex;align-items:baseline;gap:6px;font-size:11px;color:var(--muted);text-transform:uppercase}.training-day-head b{font:700 18px "Space Grotesk";color:var(--ink)}
.training-event{display:grid;gap:2px;text-align:left;border:0;border-left:4px solid var(--purple);background:#f4f2ff;border-radius:7px;padding:7px 8px;cursor:pointer;font-family:"DM Sans"}
.training-event b{font-size:12px}.training-event span{font-size:11px;font-weight:700}.training-event small{font-size:9px;color:var(--muted)}.training-event em{font-style:normal;font-size:10px;font-weight:700;color:#1f8a5b}
.training-event.team-1{border-left-color:#2f5fc4;background:#eef4ff}.training-event.team-2{border-left-color:#e0782f;background:#fff4ec}.training-event.team-3{border-left-color:#31a97c;background:#ecf8f2}
.training-add{margin-top:auto;border:1px dashed var(--line);background:none;border-radius:7px;color:var(--muted);font-size:16px;cursor:pointer;padding:4px}.training-add:hover{border-color:var(--purple);color:var(--purple)}
.training-stats-panel{margin-top:16px}
.attendance-table{width:100%;border-collapse:collapse;font-size:12px}.attendance-table th{text-align:left;font-size:10px;color:var(--muted);padding:8px;border-bottom:1px solid var(--line)}.attendance-table td{padding:8px;border-bottom:1px solid var(--line)}
.attendance-table td:last-child{display:flex;align-items:center;gap:8px}.attendance-bar{width:80px;height:6px;border-radius:3px;background:#eceef3;overflow:hidden}.attendance-bar i{display:block;height:100%;background:#31a97c}
.training-form-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.training-form-row label{font-size:11px;font-weight:700;color:#5f6470}.training-form input,.training-form select,.training-form textarea{width:100%}
#training-repeat-field[hidden]{display:none}
.attendance-modal{width:min(620px,100%)}.attendance-info{font-size:12px;color:#5f6470;margin:0 0 10px}
.attendance-summary{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.attendance-summary span{font-size:11px;font-weight:700;border-radius:999px;padding:4px 10px;background:#f1f2f6;color:#5f6470}
.attendance-summary .asistio{background:#e7f7ef;color:#1f8a5b}.attendance-summary .justificada{background:#fff4e0;color:#a8701a}.attendance-summary .falta{background:#fdeceb;color:#c24b46}
.attendance-bulk{text-align:right;margin-bottom:4px}
.attendance-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-top:1px solid var(--line)}.attendance-row span strong,.attendance-row span small{display:block}.attendance-row span strong{font-size:12px}.attendance-row span small{font-size:10px;color:var(--muted)}
.attendance-buttons{display:flex;gap:4px}.attendance-buttons button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 10px;font:600 11px "DM Sans";color:#5f6470;cursor:pointer}
.attendance-buttons button.asistio.active{background:#31a97c;border-color:#31a97c;color:#fff}.attendance-buttons button.justificada.active{background:#f0b52d;border-color:#f0b52d;color:#fff}.attendance-buttons button.falta.active{background:#d35c57;border-color:#d35c57;color:#fff}
.attendance-buttons button[disabled]{cursor:default}
@media (max-width:900px){.training-week{grid-template-columns:1fr}.training-day{min-height:0}}
/* Convocatorias */
.availability-team li.clickable{cursor:pointer}.availability-team li.clickable:hover{outline:2px solid var(--purple)}
.callup-hint{font-size:10px;color:var(--muted);margin:10px 0 0}
.attendance-table td strong{color:var(--ink);white-space:nowrap}
.profile-injury{display:flex;flex-wrap:wrap;align-items:center;gap:8px;border-top:1px solid var(--line);padding-top:8px}.profile-injury[hidden]{display:none}.profile-injury input{flex:1;min-width:150px}.profile-injury span{flex:1;font-size:12px;color:#8b3b37}.profile-injury .outline-button.compact{width:auto;padding:7px 11px;font-size:11px}
body:not(.is-admin) .admin-only{display:none!important}body.is-admin .team-actions.admin-only{display:flex!important}body.is-admin .manage-team.admin-only{display:block!important}

/* Encuadre de fotos */
.photo-picker{display:flex;align-items:center;gap:12px}.photo-picker input{flex:1;min-width:0}
.photo-preview{width:52px;height:52px;border-radius:50%;overflow:hidden;flex:0 0 auto;display:grid;place-items:center;background:var(--purple-light);color:var(--purple);font-size:14px}.photo-preview img{width:100%;height:100%;object-fit:cover}
#crop-modal{z-index:60}.crop-modal{width:min(380px,100%)}.crop-help{font-size:12px;color:#5f6470;margin:0 0 12px}
.crop-viewport{position:relative;width:min(320px,80vw);aspect-ratio:1;margin:0 auto;overflow:hidden;border-radius:12px;background:#1f2230;cursor:grab;touch-action:none;user-select:none}
.crop-viewport:active{cursor:grabbing}
.crop-viewport img{position:absolute;left:0;top:0;transform-origin:0 0;max-width:none;pointer-events:none}
.crop-guide{position:absolute;inset:0;pointer-events:none;border-radius:12px;box-shadow:inset 0 0 0 2px #ffffffcc;background:radial-gradient(circle at center,transparent 0 69%,#00000040 70%)}
.crop-zoom{display:flex;align-items:center;gap:10px;margin:14px auto 0;width:min(320px,80vw);color:var(--muted);font-weight:700}.crop-zoom input{flex:1;accent-color:var(--purple)}
#view-clubs .page-heading .outline-button{width:auto;padding:10px 14px;font-size:11px}.club-title{display:flex;align-items:center;gap:10px}
#first-password-modal{z-index:70}.role-tag.pending{background:#fff4e0;color:#a8701a}

/* Mercado: foto y versión móvil */
.fx-offer-photo{width:52px;height:52px;border-radius:50%;flex:0 0 auto;object-fit:cover;display:grid;place-items:center;background:var(--purple-light);color:var(--purple);font:700 16px "Space Grotesk"}
.fx-offer-main>div{min-width:0}.fx-offer-main .fx-pos{display:inline-block;margin-bottom:3px}
.fx-offer-main strong,.fx-offer-main span:not(.fx-pos),.fx-offer-main small{overflow-wrap:anywhere}
@media (max-width:640px){
  .fx-offer{grid-template-columns:1fr;gap:10px;padding:14px 12px;margin:0 -4px;border-radius:12px}
  .fx-offer:nth-child(even){background:#f8f9fc}
  .fx-offer-price{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}
  .fx-offer-price small:first-child{width:auto}
  .fx-bid{justify-content:flex-start;gap:6px}
  .fx-bid input{width:80px}
  .fx-bid .primary-button.compact,.fx-bid .outline-button.compact{flex:1 1 auto;padding:9px 10px}
  .fx-my-bid{text-align:left}.fx-mine{text-align:left}
  .fx-summary{gap:8px}.fx-summary b{font-size:17px}
}
.fx-offer-main span.fx-offer-photo{display:grid;place-items:center;color:var(--purple);font:700 16px "Space Grotesk"}

/* Perfil en la barra superior: solo en el móvil */
.mobile-profile{display:none;position:relative}
.mobile-profile-button{border:0;background:none;padding:0;cursor:pointer}
.mobile-profile-button .user-avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background-size:cover;background-position:center;background-color:var(--purple-light);color:var(--purple);font:700 12px "DM Sans"}
.mobile-profile-button .user-avatar.has-photo{color:transparent}
.mobile-profile-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:60;width:210px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 30px #17122526;padding:8px}
.mobile-profile-menu[hidden]{display:none}
.mobile-profile-menu p{margin:2px 6px 8px;padding-bottom:8px;border-bottom:1px solid var(--line)}.mobile-profile-menu p strong,.mobile-profile-menu p span{display:block}.mobile-profile-menu p strong{font-size:13px}.mobile-profile-menu p span{font-size:11px;color:var(--muted)}
.mobile-profile-menu button{display:block;width:100%;text-align:left;border:0;background:none;padding:9px 8px;border-radius:8px;font:600 13px "DM Sans";color:var(--ink);cursor:pointer}.mobile-profile-menu button:hover{background:#f5f4fb}.mobile-profile-menu button.danger{color:#d35c57}

/* Móvil: menú como barra inferior de iconos */
@media (max-width:650px){
  .app-shell.authenticated{flex-direction:column}
  .sidebar{position:fixed;left:0;right:0;bottom:0;width:100%;height:auto;flex-direction:row;padding:4px 4px calc(4px + env(safe-area-inset-bottom, 0px));border-right:0;border-top:1px solid var(--line);box-shadow:0 -4px 16px #00000012;z-index:50}
  .sidebar .brand,.sidebar .club-selector,.sidebar .sidebar-bottom,.sidebar .nav-label{display:none}
  .main-nav{flex-direction:row;width:100%;gap:2px;justify-content:space-between}
  .main-nav .nav-item{flex:1 1 0;min-width:0;padding:10px 0;justify-content:center;font-size:0;position:relative}
  .main-nav .nav-item[hidden]{display:none}
  .main-nav .nav-icon{font-size:19px}
  .main-nav .nav-count{display:none}.main-nav #claims-count:not([hidden]){display:block;position:absolute;top:4px;right:calc(50% - 16px);font-size:9px;padding:1px 5px}
  .main-content{padding-bottom:84px}
  .mobile-profile{display:block}
  .topbar .date-pill{display:none}
}

/* Fantasy: lesionados */
.fx-card.injured{box-shadow:0 0 0 2px #e8a9a5,0 6px 16px #00265a33}.fx-card.bench.injured{box-shadow:0 0 0 2px #e8a9a5}
.fx-photo-wrap{position:relative;margin:6px auto}.fx-photo-wrap .fx-photo{margin:0;filter:grayscale(.5)}
.fx-injury-badge{position:absolute;right:-4px;bottom:-2px;width:28px;height:28px;border-radius:50%;background:#fff;display:grid;place-items:center;font-size:15px;box-shadow:0 2px 6px #0003}
.fx-injury-line{display:inline-block;font-size:10px;font-weight:700;color:#c24b46;background:#fdeceb;border-radius:999px;padding:2px 8px;margin-top:2px}
.fx-injury-line.inline{margin:0 0 3px 6px}
.fx-hint-warning{background:#fdf3f2!important;color:#8b3b37!important}

/* Plantilla rival (vista de estadísticas) */
#rival-players-modal.roster-view #add-rival-player{display:none}
.roster-tools{text-align:right;margin-bottom:6px}.roster-tools .outline-button.compact{width:auto;padding:7px 12px;font-size:11px}
.roster-row{display:grid;grid-template-columns:40px minmax(0,1fr) auto auto;gap:10px;align-items:center;width:100%;border:0;border-top:1px solid var(--line);background:none;padding:9px 4px;text-align:left;cursor:pointer;font-family:"DM Sans";border-radius:8px}
.roster-row:hover{background:#f7f6fe}.roster-name strong,.roster-name small{display:block}.roster-name strong{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster-name small{font-size:10px;color:var(--muted)}
.roster-stats{font-size:11px;color:#5f6470;white-space:nowrap}.roster-points{text-align:right}.roster-points b{display:block;font:700 15px "Space Grotesk";color:var(--purple)}.roster-points small{font-size:9px;color:var(--muted)}
@media (max-width:640px){.roster-row{grid-template-columns:36px minmax(0,1fr) auto}.roster-stats{grid-column:2;font-size:10px}.roster-points{grid-row:1;grid-column:3}}
.favorite-star{border:0;background:#ffffff26;color:#fff;border-radius:999px;width:32px;height:32px;font-size:18px;line-height:1;cursor:pointer;transition:transform .12s,background .12s}.favorite-star:hover{background:#ffffff40;transform:scale(1.08)}.favorite-star.is-favorite{color:#ffd54a;background:#ffffff33;cursor:default}
.federation-back{display:none}

/* Resumen: tarjetas de color */
.stat-card.stat-players,.stat-card.stat-trainings,.stat-card.stat-match,.stat-card.stat-fantasy{border:0;color:#fff;position:relative;overflow:hidden;transition:transform .15s,box-shadow .15s}
.stat-card.stat-players{background:linear-gradient(135deg,#1f9d6f,#43c59e)}
.stat-card.stat-trainings{background:linear-gradient(135deg,#ef7d3c,#f5a65b)}
.stat-card.stat-match{background:linear-gradient(115deg,#0759d5,#08cdbd)}
.stat-card.stat-fantasy{background:#6e56db}
.stat-card.stat-players .stat-top,.stat-card.stat-trainings .stat-top,.stat-card.stat-match .stat-top,.stat-card.stat-fantasy .stat-top{color:#ffffffd9}
.stat-card.stat-players .stat-value small,.stat-card.stat-trainings .stat-value small,.stat-card.stat-match .stat-value small,.stat-card.stat-fantasy .stat-value small{color:#ffffffcc}
.stat-card.stat-players .stat-trend,.stat-card.stat-trainings .stat-trend,.stat-card.stat-match .stat-trend,.stat-card.stat-fantasy .stat-trend{color:#fff}
.stat-card.stat-players .stat-icon,.stat-card.stat-trainings .stat-icon,.stat-card.stat-match .stat-icon,.stat-card.stat-fantasy .stat-icon{background:#ffffff33;color:#fff}
.stat-card.clickable:hover{transform:translateY(-2px);box-shadow:0 10px 24px #00000022}
.stat-card.clickable::after{content:"→";position:absolute;right:16px;bottom:14px;font-size:14px;opacity:.7}
/* Iconos del menú con el color de su sección (como las tarjetas del Resumen) */
.nav-item .nav-icon{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:8px;transition:background .15s}
.nav-item[data-view="jugadores"] .nav-icon{color:#1f9d6f;background:#e6f6ef}
.nav-item[data-view="entrenamientos"] .nav-icon{color:#ef7d3c;background:#fff0e6}
.nav-item[data-view="ligas"] .nav-icon{color:#0759d5;background:#e6f0ff}
.nav-item[data-view="fantasy"] .nav-icon{color:#6e56db;background:#efebff}
.nav-item[data-view="jugadores"].active .nav-icon{color:#fff;background:linear-gradient(135deg,#1f9d6f,#43c59e)}
.nav-item[data-view="entrenamientos"].active .nav-icon{color:#fff;background:linear-gradient(135deg,#ef7d3c,#f5a65b)}
.nav-item[data-view="ligas"].active .nav-icon{color:#fff;background:linear-gradient(115deg,#0759d5,#08cdbd)}
.nav-item[data-view="fantasy"].active .nav-icon{color:#fff;background:#6e56db}
@media (max-width:650px){.main-nav .nav-item .nav-icon{width:36px;height:36px;border-radius:10px}.main-nav .nav-item{padding:5px 0}}

/* Iconos restantes del menú */
.nav-item[data-view="resumen"] .nav-icon{color:#4b4f5c;background:#eef0f4}
.nav-item[data-view="equipos"] .nav-icon{color:#d6457a;background:#fdeaf1}
.nav-item[data-view="clubs"] .nav-icon{color:#c48a12;background:#fdf3dc}
.nav-item[data-view="usuarios"] .nav-icon{color:#5b6b85;background:#edf1f7}
.nav-item[data-view="resumen"].active .nav-icon{color:#fff;background:linear-gradient(135deg,#3a3f4f,#6b7082)}
.nav-item[data-view="equipos"].active .nav-icon{color:#fff;background:linear-gradient(135deg,#d6457a,#f0739c)}
.nav-item[data-view="clubs"].active .nav-icon{color:#fff;background:linear-gradient(135deg,#c48a12,#f0b52d)}
.nav-item[data-view="usuarios"].active .nav-icon{color:#fff;background:linear-gradient(135deg,#4a5a75,#7d8ba3)}
/* Botón de inicio en la barra superior */
.topbar{gap:12px}.topbar .breadcrumb{flex:1}
.home-button{flex:0 0 auto;width:36px;height:36px;border-radius:10px;border:0;background:linear-gradient(135deg,#3a3f4f,#6b7082);color:#fff;font:700 18px Arial;cursor:pointer;display:grid;place-items:center;box-shadow:0 3px 8px #00000022}
.home-button:hover{transform:translateY(-1px)}

/* Resumen: tus estadísticas (franja compacta) */
.my-stats{display:grid;grid-template-columns:minmax(0,2.3fr) minmax(0,.8fr) minmax(0,1.4fr);gap:10px;margin-bottom:14px}.my-stats[hidden]{display:none}
.me-block{border:1px solid var(--line);background:#fff;border-radius:14px;padding:10px 14px;text-align:left;cursor:pointer;font-family:"DM Sans";display:grid;gap:2px;align-content:center;transition:border-color .15s,box-shadow .15s}
.me-block:hover{border-color:var(--purple);box-shadow:0 6px 16px #7459e81a}
.me-block small{font-size:9px;font-weight:700;letter-spacing:.5px;color:var(--muted)}.me-block strong{font-size:13px;color:var(--ink)}.me-block span{font-size:11px;color:#6b7180}
.me-player{display:flex;align-items:center;gap:12px}
.me-photo{width:46px;height:46px;border-radius:50%;object-fit:cover;flex:0 0 auto;display:grid;place-items:center;background:linear-gradient(135deg,#1f9d6f,#43c59e);color:#fff;font:700 15px "Space Grotesk"}
.me-copy{display:grid;gap:1px;min-width:0;flex:1}.me-copy strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.me-injured{color:#c24b46}
.me-numbers{display:flex;gap:14px}.me-numbers span{display:grid;text-align:center;font-size:9px;font-weight:700;color:var(--muted)}.me-numbers b{font:700 17px "Space Grotesk";color:var(--ink)}.me-numbers .me-points b{color:var(--purple)}
.me-small strong{font:700 20px "Space Grotesk";color:#ef7d3c}
.me-next strong{font-size:12px}.me-badge{font-style:normal;font-size:10px;font-weight:700;border-radius:999px;padding:2px 8px;justify-self:start}.me-badge.lined{background:#efebff;color:var(--purple)}.me-badge.callup{background:#e6f0ff;color:#0759d5}
@media (max-width:900px){.my-stats{grid-template-columns:1fr 1fr}.me-player{grid-column:1/-1}}
@media (max-width:520px){.me-player{flex-wrap:wrap}.me-numbers{width:100%;justify-content:space-between}}
/* Móvil: cabecera del recuadro azul sin solapes */
@media (max-width:650px){
  .federation-heading{flex-wrap:wrap;font-size:17px;row-gap:4px;text-align:center}
  .federation-heading strong{max-width:calc(100% - 44px)}
  .federation-season{position:static;width:100%;text-align:center;order:3;font-size:10px;opacity:.9}
  .federation-season br{display:none}.federation-season b{font-size:12px;margin-left:4px}
  .league-tabs{justify-content:flex-start;flex-wrap:nowrap;overflow-x:auto;gap:14px;scrollbar-width:none}
  .league-tabs::-webkit-scrollbar{display:none}
  .league-tabs button{white-space:nowrap;flex:0 0 auto}
}

/* Selector de ligas tipo píldora */
#league-tabs.league-tabs{display:flex;width:max-content;max-width:100%;margin:18px auto 20px;padding:4px;gap:4px;border:0;border-radius:999px;background:#00265a40;box-shadow:inset 0 0 0 1px #ffffff2e;overflow-x:auto;scrollbar-width:none}
#league-tabs.league-tabs::-webkit-scrollbar{display:none}
#league-tabs.league-tabs button{position:relative;flex:0 0 auto;border:0;border-radius:999px;background:transparent;color:#ffffffd9;padding:8px 18px;font:700 12px "DM Sans";letter-spacing:.4px;white-space:nowrap;cursor:pointer;transition:background .15s,color .15s}
#league-tabs.league-tabs button:hover{background:#ffffff1f;color:#fff}
#league-tabs.league-tabs button.active{background:#fff;color:#0759d5;box-shadow:0 3px 10px #00265a40}
#league-tabs .league-fav{font-style:normal;font-size:10px;margin-left:5px;color:#ffd54a}
#league-tabs button.active .league-fav{color:#f0a500}
@media (max-width:650px){#league-tabs.league-tabs button{padding:8px 13px;font-size:11px}}
/* Móvil: orden de la barra inferior */
@media (max-width:650px){
  .main-nav .nav-item[data-view="resumen"]{order:0}
  .main-nav .nav-item[data-view="ligas"]{order:1}
  .main-nav .nav-item[data-view="fantasy"]{order:2}
  .main-nav .nav-item[data-view="entrenamientos"]{order:3}
  .main-nav .nav-item[data-view="equipos"]{order:4}
  .main-nav .nav-item[data-view="clubs"]{order:5}
  .main-nav .nav-item[data-view="jugadores"]{order:6}
  .main-nav .nav-item[data-view="usuarios"]{order:7}
}

/* Mercado: ficha reorganizada */
.fx-offer{cursor:default}.fx-offer-main{cursor:pointer;align-items:center}
.fx-offer-info{display:grid;gap:5px;min-width:0}
.fx-offer-title{display:flex;align-items:center;gap:8px;min-width:0}.fx-offer-title strong{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fx-offer-title .fx-pos{margin:0}
.fx-offer-tags{display:flex;flex-wrap:wrap;gap:5px}
.fx-tag{font-size:10px;font-weight:700;border-radius:6px;padding:2px 7px;background:#f1f2f6;color:#5f6470;white-space:nowrap}
.fx-tag.club{background:#fdeaf1;color:#b8325f}.fx-tag.league{background:#e6f0ff;color:#0759d5}.fx-tag.owners{background:#efebff;color:var(--purple)}.fx-tag.injured{background:#fdeceb;color:#c24b46}
.fx-offer-stats{display:flex;gap:12px;font-size:11px;color:var(--muted)}.fx-offer-stats b{color:var(--ink);font:700 13px "Space Grotesk"}
.fx-offer-main:hover strong{color:var(--purple);text-decoration:underline}
.fx-card[data-fx-player]{cursor:pointer}
/* Ficha del jugador: bloque fantasy */
.player-fantasy-box{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;margin:10px 0 4px;padding:10px 14px;border-radius:12px;background:#6e56db;color:#fff}
.player-fantasy-box span{display:grid}.player-fantasy-box small{font-size:9px;font-weight:700;opacity:.8;letter-spacing:.4px}.player-fantasy-box b{font:700 15px "Space Grotesk"}
.player-fantasy-box .fx-badge-title{font-size:11px;font-weight:800;letter-spacing:.6px;opacity:.9}

/* Fantasy: consejo del día */
.fx-tip{display:flex;align-items:center;gap:14px;margin-bottom:14px;padding:12px 16px;border-radius:14px;background:linear-gradient(135deg,#fff7e0,#ffeeca);border:1px solid #f4d58d;box-shadow:0 4px 14px #f0b52d26;animation:fx-tip-in .35s ease}
.fx-tip[hidden]{display:none}
.fx-tip-icon{font-size:24px}.fx-tip div{flex:1}.fx-tip strong{font-size:11px;letter-spacing:.5px;text-transform:uppercase;color:#a8701a}.fx-tip p{margin:2px 0 0;font-size:13px;color:#5b4410;line-height:1.4}
.fx-tip-close{border:0;background:#fff;color:#a8701a;font:700 12px "DM Sans";border-radius:999px;padding:8px 14px;cursor:pointer;box-shadow:0 2px 6px #a8701a26;white-space:nowrap}
@keyframes fx-tip-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@media (max-width:520px){.fx-tip{flex-wrap:wrap}.fx-tip-close{width:100%}}

.fx-tips-button{width:auto!important;padding:10px 14px;font-size:12px;background:#fff7e0;border-color:#f4d58d;color:#a8701a}
.fx-tips-list{margin:0;padding-left:20px;display:grid;gap:10px}.fx-tips-list li{font-size:13px;line-height:1.45;color:#3a3f4f;padding:2px 4px}
.fx-tips-list li.today{background:#fff7e0;border-radius:8px;padding:6px 8px}.fx-tips-list em{font-style:normal;font-size:10px;font-weight:700;color:#a8701a;background:#fff;border-radius:999px;padding:1px 7px;margin-left:4px}

/* Ranking por división */
.division-abbr{font-size:9px;font-weight:700;color:#0759d5;background:#e6f0ff;border-radius:5px;padding:1px 5px;margin-left:4px;vertical-align:middle}
.division-points{margin-left:auto;display:flex;gap:10px;text-align:right}.division-points span{display:grid}.division-points small{font-size:8px;font-weight:700;color:var(--muted)}.division-points b{font:700 13px "Space Grotesk";color:var(--ink)}
.division-points span:first-child b{color:var(--purple)}
.fx-mult{font-size:9px;color:#fff;background:#f0a500;border-radius:5px;padding:1px 5px;margin-left:2px}
.fx-tabs .fx-tips-button{background:#fff7e0;border-color:#f4d58d;color:#a8701a}.fx-tabs .fx-tips-button:hover{background:#ffeeca}

/* Equipos: historial y próximos partidos en cada tarjeta */
.team-history{margin:14px 0 12px;padding-top:12px;border-top:1px solid var(--line)}
.team-history h4{display:flex;justify-content:space-between;align-items:baseline;margin:10px 0 6px;font-size:10px;letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}
.team-history h4:first-child{margin-top:0}.team-history h4 span{font-size:10px;color:#5f6470;letter-spacing:0}
.history-row{display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:8px;align-items:center;width:100%;border:0;background:none;padding:6px 4px;border-radius:8px;text-align:left;cursor:pointer;font-family:"DM Sans"}
.history-row:hover{background:#f6f5fd}.history-row small{font-size:10px;color:var(--muted)}
.history-rival{display:flex;align-items:center;gap:6px;min-width:0;font-size:11px;font-weight:600;color:var(--ink)}.history-rival span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.history-result{font-style:normal;font:800 12px "Space Grotesk";border-radius:6px;padding:2px 8px;white-space:nowrap}
.history-result.won{background:#e7f7ef;color:#1f8a5b}.history-result.lost{background:#fdeceb;color:#c24b46}
.history-result.next{font:700 10px "DM Sans";background:#e6f0ff;color:#0759d5}.history-result.pending{font:700 10px "DM Sans";background:#fff1e6;color:#b85a18}
.history-empty{font-size:11px;color:var(--muted);margin:2px 4px}
.history-more{display:block;margin:6px auto 0;border:0;background:none;color:var(--purple);font:700 11px "DM Sans";cursor:pointer}
/* Móvil: texto un poco más grande (escala todo el contenido de forma uniforme) */
@media (max-width:650px){
  .main-content{zoom:1.12}
  .modal-backdrop .profile-modal{zoom:1.1}
  .login-card{zoom:1.08}
  .mobile-profile-menu{zoom:1.05}
}
/* Móvil: filas de partidos con los equipos a todo el ancho */
@media (max-width:650px){
  .match-list-row{grid-template-columns:1fr auto;row-gap:6px;padding:10px 8px}
  .match-list-date{grid-column:1/-1;display:flex;gap:8px;align-items:baseline}
  .match-list-date strong{font-size:11px}
  .match-list-teams{grid-column:1/-1;grid-template-columns:minmax(0,1fr) 40px minmax(0,1fr)}
  .match-list-teams strong{font-size:11px}
  .match-list-meta{grid-column:1}
  .match-list-actions{grid-column:2;justify-content:flex-end}
  .match-list-porra{grid-column:1/-1}
}
/* Móvil: un poco más grande aún */
@media (max-width:650px){
  .main-content{zoom:1.2}
  .modal-backdrop .profile-modal{zoom:1.16}
  .login-card{zoom:1.12}
  .mobile-profile-menu{zoom:1.1}
}
/* Móvil: barra inferior con letras en lugar de iconos (mismos colores) */
@media (max-width:650px){
  .main-nav .nav-item .nav-icon{font-size:0;width:40px;height:40px;border-radius:12px}
  .main-nav .nav-item .nav-icon::before{font:800 20px/1 "Space Grotesk",sans-serif;letter-spacing:-.5px}
  .main-nav .nav-item[data-view="resumen"] .nav-icon::before{content:"R"}
  .main-nav .nav-item[data-view="ligas"] .nav-icon::before{content:"C"}
  .main-nav .nav-item[data-view="fantasy"] .nav-icon::before{content:"F"}
  .main-nav .nav-item[data-view="entrenamientos"] .nav-icon::before{content:"E"}
  .main-nav .nav-item[data-view="equipos"] .nav-icon::before{content:"M"}
  .main-nav .nav-item[data-view="clubs"] .nav-icon::before{content:"C"}
  .main-nav .nav-item[data-view="jugadores"] .nav-icon::before{content:"J"}
  .main-nav .nav-item[data-view="usuarios"] .nav-icon::before{content:"U"}
  .main-nav .nav-item:not(.active) .nav-icon{box-shadow:inset 0 0 0 1.5px currentColor}
  .main-nav .nav-item.active .nav-icon{box-shadow:0 4px 10px #0000002e;transform:translateY(-2px)}
  .main-nav .nav-item.active{background:transparent}
}

/* Mis equipos: selector y favorito */
.team-filter{display:flex;align-items:center;gap:10px;margin:-8px 0 18px}
.team-switch{display:flex;gap:4px;padding:4px;border-radius:999px;background:#eceef3;overflow-x:auto;scrollbar-width:none}
.team-switch::-webkit-scrollbar{display:none}
.team-switch button{flex:0 0 auto;border:0;border-radius:999px;background:transparent;color:#5f6470;padding:8px 16px;font:700 12px "DM Sans";white-space:nowrap;cursor:pointer}
.team-switch button:hover{color:var(--ink)}
.team-switch button.active{background:#fff;color:#d6457a;box-shadow:0 2px 8px #0000001a}
.favorite-star.light{background:#fdeaf1;color:#d6457a;width:36px;height:36px}
.favorite-star.light.is-favorite{background:#fff4d6;color:#f0a500}
.team-card[hidden]{display:none!important}
/* Barra inferior: casita en Resumen; letra + icono pequeño en el resto */
@media (max-width:650px){
  .main-nav .nav-item .nav-icon{font-size:11px;width:44px;gap:1px;grid-auto-flow:column;align-items:center;justify-content:center}
  .main-nav .nav-item .nav-icon::before{font-size:18px}
  .main-nav .nav-item[data-view="resumen"] .nav-icon{font-size:20px}
  .main-nav .nav-item[data-view="resumen"] .nav-icon::before{content:none}
}
.team-switch button{min-width:44px}

/* Clubs: selector de provincia */
#view-clubs .team-filter{margin:-8px 0 18px}
.province-switch button.active{color:#c48a12}
.province-switch button small{font-size:10px;color:var(--muted);font-weight:600}
.favorite-star.light.province{background:#fdf3dc;color:#c48a12}
.favorite-star.light.province.is-favorite{background:#fff4d6;color:#f0a500}

/* Pase de lista: otros equipos */
.attendance-switch{margin:4px 0 10px;width:max-content;max-width:100%}
.attendance-switch button.active{color:#ef7d3c}
.attendance-summary .guests{background:#efebff;color:var(--purple)}
.attendance-guest-hint{font-size:11px;color:#5f6470;background:#f6f5fb;border-radius:8px;padding:7px 10px;margin:0 0 6px}
.attendance-guests-title{margin:14px 0 4px;font-size:10px;letter-spacing:.5px;text-transform:uppercase;color:var(--purple)}
.attendance-row.guest strong{color:var(--purple)}
.extra-badge{color:var(--purple);font-weight:800}
/* Usuario conectado arriba del menú (ordenador) */
.sidebar-user{margin:0 0 18px;margin-top:0!important}
.sidebar-user .user-profile{border-top:0;border:1px solid var(--line);border-radius:12px;padding:10px;background:#faf9ff}
.sidebar-user .user-profile .edit-profile-button,.sidebar-user .user-profile .more-btn{white-space:nowrap}
.sidebar-user .user-profile{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 10px;align-items:center}
.sidebar-user .user-profile>div:not(.user-avatar){min-width:0}
.sidebar-user .user-profile strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-user .user-profile .edit-profile-button{grid-column:1/2;justify-self:start;margin-top:6px}
.sidebar-user .user-profile .more-btn{grid-column:2/3;justify-self:end;margin-top:6px}
.sidebar-user .user-profile .edit-profile-button,.sidebar-user .user-profile .more-btn{font-size:11px}

/* Pase de lista: jugadores federados de otros clubs */
.attendance-summary .guests.outside{background:#e6f6ef;color:#1f8a5b}
.attendance-guests-title.outside{color:#1f8a5b;display:flex;gap:6px;align-items:center}.attendance-guests-title span{background:#e6f6ef;border-radius:999px;padding:0 7px}
.attendance-row.outside strong{color:#1f8a5b}
.attendance-add{display:flex;gap:8px;margin-top:8px}.attendance-add input{flex:1;min-width:0;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:12px "DM Sans"}
.attendance-add .outline-button.compact{width:auto;padding:8px 12px;font-size:11px}
.guest-ok{font-style:normal;font-size:11px;font-weight:700;color:#1f8a5b}

/* Entrenamientos: número de asistentes */
.training-event em.attendees,.training-info em.attendees{font-style:normal;font-size:11px;font-weight:800;color:#1f8a5b;background:#e7f7ef;border-radius:999px;padding:2px 8px;justify-self:start;margin-top:3px;display:inline-block}
.training-event em.attendees.none{color:#9aa0ab;background:#f1f2f6}

/* Fantasy: bienvenida y sorteo */
#fx-welcome-modal{z-index:65}.fx-welcome{width:min(560px,100%)}
.fx-welcome h2{font:700 22px "Space Grotesk";margin:4px 0 8px}
.fx-welcome-intro{font-size:13px;line-height:1.5;color:#3a3f4f;margin:0 0 12px}
.fx-welcome-value{display:flex;justify-content:space-between;align-items:center;background:#6e56db;color:#fff;border-radius:12px;padding:10px 14px;margin-bottom:10px}.fx-welcome-value span{font-size:12px;opacity:.85}.fx-welcome-value b{font:700 20px "Space Grotesk"}
.fx-welcome-group h4{margin:12px 0 4px;font-size:10px;letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}
.fx-welcome-player{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto auto;gap:8px;align-items:center;padding:6px 0;border-top:1px solid var(--line)}
.fx-welcome-player strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fx-welcome-player small{font-size:10px;color:var(--muted)}.fx-welcome-player b{font:700 12px "Space Grotesk"}
.fx-welcome-note{font-size:12px;color:#8a4a1f;background:#fff6ee;border-radius:9px;padding:9px 12px;margin:12px 0 0}

/* Plantilla rival: añadir jugador visible */
.roster-tools{display:flex;gap:8px;flex-wrap:wrap}.roster-tools .primary-button.compact{width:auto;padding:8px 14px;font-size:12px}
.roster-hint{font-size:11px;color:var(--muted);margin:6px 0 10px}
img.player-avatar.rival{object-fit:cover}
/* Fantasy: fichas más compactas */
.fx-card{padding:9px 9px 10px}
.fx-card .fx-photo{width:56px;height:56px;font-size:18px;margin:4px auto}
.fx-card strong{font-size:12px;line-height:1.2}
.fx-card .fx-points{font-size:15px}
.fx-card-bottom{padding-top:6px;margin-top:5px;font-size:11px}
@media (max-width:650px){
  .fx-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  .fx-card{padding:6px 4px 6px;border-radius:12px;gap:1px}
  .fx-card-top{justify-content:center;gap:3px}
  .fx-card-top .fx-starter-tag,.fx-card-top .fx-bench-tag{display:none}
  .fx-card .fx-pos{font-size:8px;padding:1px 5px}
  .fx-card .fx-photo{width:40px;height:40px;font-size:13px;border-width:2px;margin:3px auto}
  .fx-card strong{font-size:9px;line-height:1.15;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.3em}
  .fx-card .fx-team{font-size:8px;line-height:1.2}
  .fx-card .fx-injury-line{display:none}
  .fx-card .fx-points{font-size:12px;margin:0}
  .fx-card .fx-points small{font-size:8px}
  .fx-card-bottom{flex-wrap:wrap;justify-content:center;gap:2px 6px;padding-top:4px;margin-top:3px;font-size:9px}
  .fx-card-bottom>span{width:100%;text-align:center}
  .fx-card-bottom .link-button{font-size:9px;padding:0}
  .fx-card.empty{min-height:120px}
}

/* Fantasy: botones con icono y arrastre táctil */
.fx-icon-actions{margin-left:auto;display:flex;gap:6px}
.fx-icon-btn{width:30px;height:30px;border-radius:50%;border:0;display:grid;place-items:center;font:700 15px "DM Sans";cursor:pointer;transition:transform .1s}
.fx-icon-btn:active{transform:scale(.92)}
.fx-icon-btn.fx-swap{background:#ece8ff;color:var(--purple)}.fx-icon-btn.fx-swap.active{background:var(--purple);color:#fff}
.fx-icon-btn.fx-sell{background:#fdecec;color:#d64545}
.fx-card{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.fx-card.fx-armed{transform:scale(1.05);box-shadow:0 10px 24px #0003}
@media (max-width:650px){
  .fx-card-bottom{flex-direction:column;gap:4px}
  .fx-icon-actions{margin:0 auto;gap:8px}
  .fx-icon-btn{width:28px;height:28px;font-size:14px}
}

/* Fantasy · Mercado: fichas como las de Mi equipo */
.fx-market-grid{margin-top:12px}
.fx-card.market{background:#fff;border:1px solid var(--line);border-top:4px solid var(--purple-light)}
.fx-card.market.delantero{border-top-color:#2f6fe4}.fx-card.market.trasero{border-top-color:#ef7d3c}.fx-card.market.ambas{border-top-color:#7c5cff}
.fx-card.market.owned{opacity:.7}
.fx-bids-tag{margin-left:auto;font-size:10px;font-weight:700;color:#8a4a1f;background:#fff4e6;border-radius:999px;padding:1px 7px}
.fx-offer-mini{font-size:10px;color:var(--muted)}
.fx-card .fx-price{color:#1f8a5b}
.fx-card.market .fx-bid{display:flex;flex-direction:column;gap:5px;width:100%;margin-top:6px;border-top:1px solid var(--line);padding-top:7px}
.fx-bid-range{font-size:10px;color:var(--muted)}
.fx-bid-row{display:flex;gap:5px;align-items:center}
.fx-bid-row input{flex:1;min-width:0;border:1px solid var(--line);border-radius:8px;padding:5px 6px;font:700 12px "Space Grotesk";text-align:center}
.fx-icon-btn.fx-bid-btn{background:#fff4e6;color:#8a4a1f;flex:0 0 auto}
.fx-card.market .fx-buy-now{width:100%;padding:7px 6px;font-size:11px}
.fx-card.market .fx-my-bid{font-size:10px;color:var(--purple)}
.fx-card.market .fx-mine{font-size:11px;font-weight:700;color:var(--purple);margin:6px 0 0}
@media (max-width:650px){
  .fx-card.market .fx-offer-mini{font-size:8px}
  .fx-card.market .fx-bids-tag{font-size:8px;padding:0 4px}
  .fx-card.market .fx-bid{gap:3px;padding-top:4px;margin-top:3px}
  .fx-bid-range{font-size:7.5px;line-height:1.2}
  .fx-bid-row{gap:3px}
  .fx-bid-row input{font-size:10px;padding:4px 2px;border-radius:6px}
  .fx-icon-btn.fx-bid-btn{width:24px;height:24px;font-size:11px}
  .fx-card.market .fx-buy-now{font-size:9px;padding:5px 2px;border-radius:8px}
  .fx-card.market .fx-my-bid{font-size:8px}
}

.fx-card.market .fx-bid{align-items:stretch;min-width:0}
.fx-bid-row{width:100%;min-width:0}
.fx-bid-row input{width:0}
.fx-bid-range{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:650px){.fx-bid-range{font-size:8px}}
/* Fantasy: sombreado ligero según la posición (mismos colores que DEL / TRA / AMB) */
.fx-card.delantero:not(.empty){background:linear-gradient(180deg,#e8f0ff 0%,#fff 62%)}
.fx-card.trasero:not(.empty){background:linear-gradient(180deg,#fff1e6 0%,#fff 62%)}
.fx-card.ambas:not(.empty){background:linear-gradient(180deg,#efe9ff 0%,#fff 62%)}
.fx-card.bench.delantero{background:linear-gradient(180deg,#e8f0ff 0%,#fafafc 62%)}
.fx-card.bench.trasero{background:linear-gradient(180deg,#fff1e6 0%,#fafafc 62%)}
.fx-card.bench.ambas{background:linear-gradient(180deg,#efe9ff 0%,#fafafc 62%)}
.fx-card .fx-photo{border-color:#fff}

/* Fantasy: ventana emergente (vender) */
.fx-popover{position:fixed;z-index:80;width:min(240px,calc(100vw - 16px));background:#fff;border-radius:12px;padding:12px 14px;box-shadow:0 12px 32px #0000002e,0 0 0 1px #0000000d;font-size:12px;color:var(--ink);animation:fxPop .12s ease-out}
.fx-popover strong{display:block;font:700 13px "Space Grotesk";margin-bottom:4px}
.fx-popover p{margin:0 0 10px;line-height:1.4;color:#4a5060}
.fx-popover-actions{display:flex;gap:6px;justify-content:flex-end}
.fx-popover-actions .compact{width:auto;padding:7px 12px;font-size:12px}
.fx-popover::after{content:"";position:absolute;left:calc(var(--arrow-x) - 6px);bottom:-6px;width:12px;height:12px;background:#fff;transform:rotate(45deg);box-shadow:3px 3px 4px #0000000d}
.fx-popover.below::after{bottom:auto;top:-6px;box-shadow:-2px -2px 3px #0000000d}
@keyframes fxPop{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
/* Ficha del jugador: más compacta y con scroll propio (el botón de cerrar siempre visible) */
#player-detail-modal .player-detail-modal{max-height:calc(100dvh - 40px);overflow-y:auto;padding-top:0}
#player-detail-modal .modal-header{position:sticky;top:0;z-index:2;background:#fff;padding:14px 0 8px;margin-bottom:4px}
.player-detail-modal .player-avatar.xl{width:68px;height:68px;font-size:22px}
.player-detail-head{gap:14px}
.player-detail-head h2{font-size:20px;margin-bottom:6px}
.player-detail-chips span{font-size:11px;padding:4px 8px}
.player-detail-points b{font-size:22px}
.player-detail-section{margin:14px 0 6px}
.player-stats-table{font-size:12px}
.player-game-row{padding:7px 0;gap:8px;font-size:12px}
@media (max-width:650px){
  #player-detail-modal{padding:10px;place-items:start center}
  #player-detail-modal .player-detail-modal{zoom:1;max-height:calc(100dvh - 20px);padding:0 14px 16px;border-radius:16px}
  #player-detail-modal .modal-header{padding:10px 0 6px}
  #player-detail-modal .modal-close{width:34px;height:34px;font-size:20px}
  .player-detail-head{display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:10px;align-items:center}
  .player-detail-modal .player-avatar.xl{width:56px;height:56px;font-size:18px}
  .player-detail-head h2{font-size:16px;margin:0 0 5px}
  .player-detail-chips{gap:4px}
  .player-detail-chips span{font-size:9.5px;padding:3px 6px;border-radius:6px}
  .player-detail-chips small{font-size:7.5px}
  .player-detail-points{margin:0;text-align:right;align-self:start}
  .player-detail-points b{font-size:18px}
  .player-detail-points small{font-size:7.5px}
  .player-fantasy-box{gap:4px 12px;padding:8px 10px;font-size:11px;margin-top:8px}
  .player-fantasy-box b{font-size:13px}
  .injury-box{padding:6px 8px;margin-top:8px;font-size:11px}
  .injury-box input{font-size:12px;padding:6px 8px}
  .injury-box button{font-size:11px;padding:6px 10px}
  .player-detail-section{font-size:13px;margin:12px 0 4px}
  #player-detail-modal .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .player-stats-table{font-size:10.5px;min-width:0}
  .player-stats-table th,.player-stats-table td{padding:5px 4px}
  .player-game-row{grid-template-columns:minmax(0,1fr) auto;gap:2px 8px;padding:6px 0;font-size:11px}
  .player-game-date{grid-column:1/-1;display:flex;gap:6px;align-items:baseline}
  .player-game-date strong{font-size:11px}.player-game-date span{font-size:10px}
  .player-game-match{grid-column:1/-1;min-width:0}
  .player-game-match span{display:block;font-size:11px;line-height:1.3}
  .player-game-match small{font-size:9.5px}
  .player-game-row .game-tag{font-size:9.5px;justify-self:start}
  .player-game-row .open-match-sheet{font-size:11px;justify-self:end}
}
@media (max-width:650px){#player-detail-modal .player-detail-modal{max-height:calc(100dvh - 88px)}}

/* App instalable */
.install-app-button{grid-column:1/-1;margin-top:6px;border:0;border-radius:9px;background:#efebff;color:var(--purple);font:700 12px "DM Sans";padding:8px;cursor:pointer}
.install-app-button[hidden],.install-app-item[hidden]{display:none!important}
.install-ios{width:min(420px,100%)}
.install-ios-icon{display:block;width:84px;height:84px;border-radius:20px;margin:6px auto 12px;box-shadow:0 6px 18px #0000002a}
.install-ios ol{margin:0 0 10px;padding-left:20px;line-height:1.7;font-size:14px}
.install-ios p{font-size:13px;color:var(--muted)}
.ios-share{display:inline-grid;place-items:center;width:22px;height:22px;border:1.5px solid var(--purple);border-radius:5px;color:var(--purple);font-size:12px}

/* Marca de la aplicación: Frontenis Manager (el club activo va debajo, en el selector) */
.brand-logo{width:34px;height:34px;border-radius:10px;flex:0 0 auto;box-shadow:0 3px 8px #4b34b833}
.brand strong{text-transform:uppercase;letter-spacing:.2px}
.login-brand .brand-logo{width:38px;height:38px}
/* Ligas (móvil): las fichas de partido no se salen del marco azul */
#federation-results,#upcoming-matches-list{grid-template-columns:minmax(0,1fr)}
.federation-match-card{min-width:0;max-width:100%;box-sizing:border-box}
.federation-match-card *{min-width:0}
@media (max-width:650px){
  .federation-board{padding:18px 12px 20px}
  .federation-match-card{padding:10px 10px}
  .federation-match-meta{flex-wrap:wrap;gap:2px 8px;font-size:10px}
  .federation-match-teams{gap:6px}
  .federation-match-teams strong{font-size:13px;overflow-wrap:anywhere}
  .federation-match-card .porra{flex-wrap:wrap}
  .federation-match-card .porra *{flex-wrap:wrap}
}

/* Jugadores: precio en el fantasy */
.division-points .fantasy-price b{color:#1f8a5b}
.division-points .fantasy-price small{color:#1f8a5b}
.player-card .division-points .fantasy-price b{color:#1f8a5b}
.division-points .player-elo b,.division-points .player-elo small{color:#0b72d9}
#players-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}
#players-grid .player-card{min-width:0}
@media (max-width:650px){#players-grid{grid-template-columns:minmax(0,1fr)}#players-grid .player-card{padding:10px;gap:8px}}

/* Fantasy: plantilla de un manager */
.fx-manager-link{border:0;background:none;padding:0;font:inherit;color:var(--purple);font-weight:700;cursor:pointer;text-align:left;text-decoration:underline;text-decoration-color:#6e56db55;text-underline-offset:3px}
.fx-manager-modal{width:min(520px,100%);max-height:calc(100dvh - 40px);overflow-y:auto}
.fx-manager-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;background:#6e56db;color:#fff;border-radius:12px;padding:10px 12px}
.fx-manager-summary small{display:block;font-size:9px;opacity:.8;font-weight:700}.fx-manager-summary b{font:700 17px "Space Grotesk"}
.fx-manager-group{margin:14px 0 4px;font-size:10px;letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}
.fx-manager-player{width:100%;display:grid;grid-template-columns:40px minmax(0,1fr) auto auto;gap:10px;align-items:center;border:0;border-top:1px solid var(--line);background:none;padding:7px 4px;text-align:left;cursor:pointer;font:inherit;color:inherit}
.fx-manager-player:hover{background:#f7f6ff}
.fx-manager-player .fx-photo{width:40px;height:40px;margin:0;font-size:13px;border-width:2px}
.fx-manager-name strong{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fx-manager-name small{font-size:10px;color:var(--muted)}
.fx-manager-name .fx-pos{font-size:8px;padding:1px 5px}
.fx-manager-num{display:grid;text-align:right}.fx-manager-num b{font:700 14px "Space Grotesk";color:var(--purple)}.fx-manager-num small{font-size:8px;color:var(--muted);font-weight:700}
.fx-manager-num.price b{color:#1f8a5b}
@media (max-width:650px){#fx-manager-modal .fx-manager-modal{zoom:1;max-height:calc(100dvh - 88px)}#fx-manager-modal{place-items:start center;padding:10px}.fx-manager-player{gap:7px;grid-template-columns:36px minmax(0,1fr) auto auto}.fx-manager-player .fx-photo{width:36px;height:36px}.fx-manager-name strong{font-size:12px}}

/* Aviso de versión nueva */
.update-banner{position:fixed;left:50%;transform:translateX(-50%);bottom:20px;z-index:90;display:flex;align-items:center;gap:12px;background:#1f2230;color:#fff;border-radius:999px;padding:8px 8px 8px 16px;font-size:13px;box-shadow:0 10px 30px #0004;white-space:nowrap}
.update-banner button{border:0;border-radius:999px;background:#ffd84a;color:#1f2230;font:700 12px "DM Sans";padding:8px 14px;cursor:pointer}
@media (max-width:650px){.update-banner{bottom:84px;font-size:12px}}

/* Altas con aprobación */
#register-form select,#register-form textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:10px;padding:11px 12px;font:14px "DM Sans";background:#fff;margin-bottom:12px}
#register-form textarea{resize:vertical}
.register-approval-note{font-size:12px;background:#f3f0ff;color:var(--purple);border-radius:9px;padding:8px 11px}
.auth-success{display:block;color:#1f8a5b;background:#e7f7ef;border-radius:9px;padding:9px 12px;font-weight:600}
.signup-card{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1.3fr) auto;gap:12px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}
.signup-card small{display:block;font-size:9px;font-weight:700;color:var(--muted);letter-spacing:.4px}
.signup-card strong{display:block;font-size:13px}.signup-card span{display:block;font-size:11px;color:var(--muted)}
.signup-note{grid-column:1/-1;order:5;margin:0;background:#fff8e6;border-radius:9px;padding:8px 11px;font-size:12px;color:#5a4a1a}
.signup-card .claim-actions{order:4}
@media (max-width:650px){.signup-card{grid-template-columns:1fr 1fr}.signup-who{grid-column:1/-1}.signup-card .claim-actions{grid-column:1/-1;order:6}}

/* Resumen · próximo partido como ficha de Ligas */
.stat-card.stat-match .stat-top b{color:#fff;font-weight:800}
.next-match-mini{background:#fff;color:var(--ink);border-radius:10px;padding:8px 10px;margin:8px 0 6px;border-left:4px solid #7aa2f0;box-shadow:0 4px 12px #00265a33}
.next-match-meta{display:flex;justify-content:space-between;gap:6px;font-size:10px;color:var(--muted);margin-bottom:5px}
.next-match-teams{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:6px}
.next-match-teams span{display:flex;align-items:center;gap:5px;min-width:0}
.next-match-teams .away{flex-direction:row-reverse;text-align:right}
.next-match-teams strong{font-size:11px;line-height:1.15;color:#2f5fc4;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.next-match-teams .away strong{color:#d6457a}
.next-match-teams i{font-style:normal;font:700 11px "Space Grotesk";color:#2f5fc4}
.next-match-teams .club-crest{flex:0 0 auto}
.stat-card.stat-match .stat-trend{font-size:11px}
/* Ficha resaltada al llegar desde el Resumen */
.federation-match-card.match-highlight{animation:matchPulse 2.4s ease-out}
@keyframes matchPulse{0%,30%{box-shadow:0 0 0 4px #ffd84a,0 6px 18px #00265a2e}100%{box-shadow:0 6px 18px #00265a2e}}

@media (max-width:650px){.federation-match-teams strong{overflow-wrap:normal;word-break:normal;hyphens:auto;font-size:12px}}
.next-match-teams strong{font-size:10.5px;overflow-wrap:anywhere}
@media (max-width:650px){.federation-match-teams strong{font-size:11px}.federation-match-teams{gap:4px}}

/* Resumen: 3 tarjetas de colores + tarjeta de fantasy a lo ancho */
.stats-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
#summary-fantasy{margin-bottom:18px;cursor:pointer}
#summary-fantasy .mini-avatars img{width:30px;height:30px;border-radius:50%;object-fit:cover;border:2px solid #fff;margin-left:-8px}
#summary-fantasy .mini-avatars img:first-child{margin-left:0}
.bottom-grid{grid-template-columns:minmax(0,1fr)}
@media (max-width:650px){.stats-grid{grid-template-columns:minmax(0,1fr)}}
#summary-fantasy .mini-avatars img{width:28px;height:28px;border:2px solid #6e56db;margin-left:0;margin-right:-6px;background:#c9bcfa}
#summary-fantasy .mini-avatars span{width:28px;height:28px;margin-right:-6px;font-size:8px}

/* Racha de los últimos 5 partidos */
.team-form{display:flex;gap:4px;margin-top:5px}
.form-dot{width:18px;height:18px;border-radius:5px;display:grid;place-items:center;font:700 10px "DM Sans";font-style:normal;color:#fff}
.form-dot.V{background:#22a06b}.form-dot.E{background:#f0922b}.form-dot.D{background:#e05252}
.form-dot.empty{background:#eceef3}
.league-copy .team-form{display:flex}
#summary-teams .league-copy .team-form{display:flex;overflow:visible}
#summary-teams .league-row{flex-wrap:wrap}.summary-porra{flex-basis:100%;min-width:0}.summary-porra .porra{margin:0}
.me-next .porra{margin:2px 0;background:#fff}
.me-next-row{display:flex;align-items:center;gap:6px}.me-next-row .me-next-card{flex:1;min-width:0}
#summary-teams .history-forecast{align-self:center}
.summary-porra .porra-chips,.me-next .porra-chips{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));flex-basis:100%}
.summary-porra .porra-chips{grid-template-columns:repeat(2,minmax(0,1fr))}
.summary-porra .porra-chip,.me-next .porra-chip{justify-content:center;padding:4px 4px;min-width:0;white-space:nowrap}
@media (max-width:640px){.summary-porra .porra-chips,.me-next .porra-chips{grid-template-columns:repeat(2,minmax(0,1fr))}}

.form-dot.win-clean{background:#22a06b}.form-dot.win-tight{background:#f0922b}.form-dot.loss-tight{background:#f08a8a}.form-dot.loss-clean{background:#d63c3c}.form-dot.draw{background:#9aa0ab}

/* Mi equipo: precio en verde, como en el Mercado */
.fx-card-bottom .fx-card-price{font:700 14px "Space Grotesk";color:#1f8a5b}
@media (max-width:650px){.fx-card-bottom .fx-card-price{font-size:12px}}
.fx-icon-btn.fx-sell svg{display:block}

/* Fantasy: dinero en verde y barras comparativas */
.fx-summary .money b{color:#1f8a5b}
.fx-compare{display:block;margin-top:7px}
.fx-compare-track{position:relative;display:block;height:6px;border-radius:999px;background:#eceef3;overflow:visible}
.fx-compare-fill{position:absolute;left:0;top:0;bottom:0;border-radius:999px;background:var(--purple)}
.fx-summary .money .fx-compare-fill{background:#22a06b}
.fx-compare-avg{position:absolute;top:-3px;width:2px;height:12px;background:#1f2230;border-radius:2px;opacity:.55}
.fx-compare small{display:block;margin-top:4px;font-size:9px;font-weight:600;color:var(--muted);letter-spacing:0}

/* Resumen · tus estadísticas: una línea por división + precio fantasy */
.me-divisions{display:grid;gap:4px;min-width:0}
.me-div-row{display:grid;grid-template-columns:52px repeat(3,34px) minmax(56px,auto) minmax(46px,auto);align-items:center;gap:6px}
.me-div-row .me-rank{background:#f3f0ff;border-radius:6px;padding:2px 6px;color:#7b6fb0}.me-div-row .me-rank b{font-size:13px;color:var(--purple)}
.me-div-row em{font-style:normal;font:700 10px "DM Sans";color:#2f5fc4;background:#e8f0ff;border-radius:6px;padding:3px 0;text-align:center}
.me-div-row span{display:flex;align-items:baseline;gap:3px;justify-content:flex-end;font-size:9px;font-weight:700;color:var(--muted)}
.me-div-row b{font:700 15px "Space Grotesk";color:var(--ink)}
.me-div-row .me-points b{color:var(--purple)}
.me-div-empty{font-size:12px;color:var(--muted)}
.me-fantasy{display:grid;text-align:center;padding-left:12px;border-left:1px solid var(--line);margin-left:4px}
.me-fantasy small{font-size:9px;font-weight:700;color:var(--muted)}
.me-fantasy b{font:700 17px "Space Grotesk";color:#1f8a5b;white-space:nowrap}
@media (max-width:650px){
  .me-divisions{width:100%}
  .me-div-row{grid-template-columns:44px repeat(3,minmax(0,1fr)) minmax(0,1.4fr) minmax(0,1.1fr);gap:4px}
  .me-fantasy{width:100%;border-left:0;border-top:1px solid var(--line);margin:4px 0 0;padding:6px 0 0;display:flex;justify-content:space-between;align-items:center}
}
/* Tus estadísticas: en pantallas medianas la ficha ocupa toda la fila y nada se solapa */
@media (max-width:1280px){
  .my-stats{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .my-stats .me-player{grid-column:1/-1}
}
.me-player .me-copy{min-width:140px}
.me-player .me-divisions{flex:0 1 auto}
@media (min-width:651px) and (max-width:820px){
  .me-player{flex-wrap:wrap}
  .me-player .me-divisions{order:3;width:100%}
  .me-player .me-fantasy{margin-left:auto}
}

/* Resumen · tu equipo: selector de favorito y próximo partido con fondo azul muy claro */
.me-block.me-next{background:#eef4ff;border-color:#d6e3fb;cursor:default;align-content:start;gap:5px}
.me-next-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.me-next-head small{font-size:9px;font-weight:700;color:#2f5fc4;letter-spacing:.5px}
.me-team-pick{display:flex;gap:3px;background:#fff;border-radius:999px;padding:2px}
.me-team-pick button{border:0;background:none;border-radius:999px;width:26px;height:22px;font:700 11px "DM Sans";color:#5f6470;cursor:pointer}
.me-team-pick button.active{background:#2f5fc4;color:#fff}
.me-next-when{font-size:11px;color:#2f5fc4}
.me-next-when b{font-weight:800}
.me-next-card{cursor:pointer}
.me-next-card .next-match-mini{margin:0;box-shadow:0 2px 8px #2f5fc41f}
.me-next-status{font-size:11px;color:var(--muted)}
.me-next .me-badge{justify-self:start}
/* Bloque personal: estadísticas a lo ancho; debajo asistencia (estrecha) y tu equipo (ancho) */
.my-stats{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
.my-stats .me-player{grid-column:1/-1}
@media (max-width:650px){.my-stats{grid-template-columns:minmax(0,1fr)}}

/* Tu equipo: fondo blanco como el resto de bloques del jugador */
.me-block.me-next{background:#fff;border-color:var(--line)}
.me-next-head small,.me-next-when{color:var(--muted)}
.me-next-when b{color:var(--ink)}
.me-team-pick{background:#f1f2f6}
#summary-stats{margin-top:18px}

/* Clasificación de Managers: tendencia, valor en verde y fotos en movimientos */
.fx-table td.fx-rank{white-space:nowrap}
.fx-trend{font-style:normal;font-size:9px;margin-left:5px;vertical-align:1px}
.fx-trend.up{color:#22a06b}.fx-trend.down{color:#e05252}.fx-trend.same{color:#c3c7d0}
.fx-table td.fx-money{color:#1f8a5b;font-weight:700}
.fx-move-photo{width:22px;height:22px;border-radius:50%;object-fit:cover;vertical-align:middle;margin-right:6px;display:inline-grid;place-items:center;background:var(--purple-light);color:var(--purple);font:700 8px "DM Sans"}

@media (max-width:650px){.fx-tips-label{display:none}.fx-tips-button{padding-left:12px;padding-right:12px}}
@media (max-width:650px){
  #view-fantasy .fx-tabs{flex-wrap:nowrap;gap:5px}
  #view-fantasy .fx-tabs button{padding:8px 11px;font-size:12px;white-space:nowrap}
  #view-fantasy .fx-tabs .fx-tips-button{flex:0 0 auto;margin-left:auto;padding:8px 10px}
}

.fx-manager-link{display:inline-flex;align-items:center;gap:8px}
.fx-manager-face{width:26px;height:26px;border-radius:50%;object-fit:cover;flex:0 0 auto;display:inline-grid;place-items:center;background:var(--purple-light);color:var(--purple);font:700 9px "DM Sans";text-decoration:none}

/* Fantasy · mercado: sobre sorpresa con los más fichados */
.fx-sobre{position:relative;margin-top:16px;border-radius:18px;padding:58px 16px 18px;background:linear-gradient(160deg,#7c5cff 0%,#5a3fd6 55%,#3d2a9e 100%);color:#fff;overflow:hidden;box-shadow:0 10px 26px #3d2a9e40}
.fx-sobre::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(45deg,#ffffff08 0 12px,transparent 12px 24px);pointer-events:none}
.fx-sobre-flap{position:absolute;left:0;right:0;top:0;height:46px;background:linear-gradient(180deg,#8f74ff,#6b4fe6);clip-path:polygon(0 0,100% 0,50% 100%);filter:drop-shadow(0 3px 4px #0003)}
.fx-sobre-seal{position:absolute;left:50%;bottom:-2px;transform:translate(-50%,50%);width:40px;height:40px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffe36b,#f2b705 70%,#c98f00);color:#5a3fd6;display:grid;place-items:center;font:800 13px "Space Grotesk";box-shadow:0 3px 8px #0004;z-index:2}
.fx-sobre-head{position:relative;text-align:center;margin:8px 0 14px}
.fx-sobre-head h2{margin:0;font:700 18px "Space Grotesk";color:#fff}
.fx-sobre-head p{margin:4px auto 0;max-width:460px;font-size:12px;color:#e6defe}
.fx-sobre-cards{position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:12px}
.fx-sobre-card{position:relative;display:grid;justify-items:center;gap:3px;padding:10px 8px 9px;border-radius:12px;background:#fff;color:var(--ink);text-align:center;cursor:pointer;overflow:hidden;transform:rotate(var(--tilt));box-shadow:0 6px 14px #0003;border-top:4px solid #7c5cff;transition:transform .2s;animation:fxSobreIn .5s ease-out both;animation-delay:var(--delay)}
.fx-sobre-card.delantero{border-top-color:#2f6fe4}.fx-sobre-card.trasero{border-top-color:#ef7d3c}
.fx-sobre-card:hover{transform:rotate(0) translateY(-4px) scale(1.04);z-index:1}
.fx-sobre-card::after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;background:linear-gradient(100deg,transparent,#ffffff99,transparent);transform:skewX(-20deg);animation:fxSobreShine 3.6s ease-in-out infinite;animation-delay:calc(var(--delay) * 4)}
.fx-sobre-card .fx-pos{justify-self:start}
.fx-sobre-card .fx-photo{width:52px;height:52px;font-size:15px}
.fx-sobre-card strong{font-size:11.5px;line-height:1.2}
.fx-sobre-card small{font-size:10px;color:var(--muted)}
@keyframes fxSobreIn{from{opacity:0;transform:translateY(24px) rotate(0)}to{opacity:1;transform:rotate(var(--tilt))}}
@keyframes fxSobreShine{0%,60%{left:-60%}100%{left:130%}}
@media (max-width:640px){
  .fx-sobre{padding:52px 10px 14px}
  .fx-sobre-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
  .fx-sobre-card{padding:7px 4px}
  .fx-sobre-card .fx-photo{width:40px;height:40px;font-size:12px}
  .fx-sobre-card strong{font-size:10px}
  .fx-sobre-card small{font-size:8.5px}
}

/* Sobres sorpresa: niveles oro / plata / bronce */
.fx-env-mini{position:relative;display:inline-block;width:34px;height:24px;border-radius:4px;flex:0 0 auto;box-shadow:0 2px 5px #0003;overflow:hidden}
.fx-env-mini::before{content:"";position:absolute;left:0;right:0;top:0;height:13px;background:#00000024;clip-path:polygon(0 0,100% 0,50% 100%)}
.fx-env-mini.oro,.fx-env-big.oro,.fx-env-tile.oro{background:linear-gradient(135deg,#ffe98a,#f2b705 55%,#c98f00)}
.fx-env-mini.plata,.fx-env-big.plata,.fx-env-tile.plata{background:linear-gradient(135deg,#ffffff,#cfd6df 55%,#98a3b1)}
.fx-env-mini.bronce,.fx-env-big.bronce,.fx-env-tile.bronce{background:linear-gradient(135deg,#f6c99c,#cd7f32 55%,#9a5a1f)}
.fx-sobre-tiers{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 12px}
.fx-tier{display:flex;align-items:center;gap:8px;background:#ffffff1a;border:1px solid #ffffff33;border-radius:12px;padding:8px 10px}
.fx-tier p{margin:0;font-size:11px;color:#e6defe;line-height:1.25}
.fx-tier p b{display:block;font:700 13px "Space Grotesk";color:#fff}
.fx-sobre-gift{position:relative;margin:0 0 12px;padding:9px 12px;border-radius:12px;background:#fff3c4;color:#5a4300;font-size:12px;text-align:center}
.fx-sobre-sub{position:relative;margin:4px 0 10px;font:700 12px "DM Sans";text-transform:uppercase;letter-spacing:.5px;color:#e6defe;text-align:center}
.fx-sobre-mine{position:relative;margin:0 0 12px;padding:10px;border-radius:14px;background:#ffffff26;text-align:center}
.fx-sobre-mine > b{display:block;font-size:13px;margin-bottom:8px}
.fx-sobre-mine-row{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}
.fx-env-tile{position:relative;display:grid;justify-items:center;gap:3px;min-width:130px;padding:12px 14px 10px;border:0;border-radius:12px;color:#3a2a00;cursor:pointer;box-shadow:0 6px 16px #0004;animation:fxEnvWiggle 2.4s ease-in-out infinite}
.fx-env-tile.plata{color:#38414d}.fx-env-tile.bronce{color:#3d2208}
.fx-env-tile .fx-env-mini{width:46px;height:32px;background:#ffffff80}
.fx-env-tile strong{font:700 13px "Space Grotesk";text-transform:capitalize}
.fx-env-tile small{font-size:10px;opacity:.85}
.fx-env-tile:hover{animation:none;transform:scale(1.06)}
@keyframes fxEnvWiggle{0%,80%,100%{transform:rotate(0)}84%{transform:rotate(-4deg)}88%{transform:rotate(4deg)}92%{transform:rotate(-3deg)}96%{transform:rotate(2deg)}}
.fx-env-modal .fx-env-stage{display:grid;justify-items:center;gap:16px;padding:24px;max-width:340px;width:100%;text-align:center}
.fx-env-big{position:relative;width:200px;height:136px;border-radius:12px;box-shadow:0 16px 40px #0006}
.fx-env-big::before{content:"";position:absolute;left:0;right:0;top:0;height:76px;background:#00000024;clip-path:polygon(0 0,100% 0,50% 100%)}
.fx-env-big .fx-sobre-seal{position:absolute;top:76px;bottom:auto;left:50%;transform:translate(-50%,-50%)}
.fx-env-big.shaking{animation:fxEnvShake .5s ease-in-out infinite}
@keyframes fxEnvShake{0%,100%{transform:rotate(0) scale(1)}25%{transform:rotate(-5deg) scale(1.03)}75%{transform:rotate(5deg) scale(1.03)}}
.fx-env-msg{margin:0;color:#fff;font-size:15px;text-shadow:0 1px 4px #0008}
.fx-env-reveal{position:relative;display:grid;place-items:center;width:240px;height:240px}
.fx-env-rays{position:absolute;inset:0;border-radius:50%;background:repeating-conic-gradient(from 0deg,#ffffff66 0 10deg,transparent 10deg 20deg);animation:fxRays 8s linear infinite;mask:radial-gradient(circle,#000 30%,transparent 70%);-webkit-mask:radial-gradient(circle,#000 30%,transparent 70%)}
.fx-env-reveal.oro .fx-env-rays{background:repeating-conic-gradient(from 0deg,#ffd84a99 0 10deg,transparent 10deg 20deg)}
.fx-env-reveal.bronce .fx-env-rays{background:repeating-conic-gradient(from 0deg,#e0995499 0 10deg,transparent 10deg 20deg)}
@keyframes fxRays{to{transform:rotate(360deg)}}
.fx-env-card{--tilt:0deg;--delay:0s;width:150px;padding:14px 10px 12px;animation:fxEnvFlip .7s ease-out both}
.fx-env-card::after{display:none}
.fx-env-card .fx-photo{width:72px;height:72px;font-size:20px}
.fx-env-card strong{font-size:14px}
@keyframes fxEnvFlip{from{opacity:0;transform:rotateY(90deg) scale(.6)}to{opacity:1;transform:rotateY(0) scale(1)}}
@media (max-width:640px){
  .fx-sobre-tiers{grid-template-columns:1fr}
  .fx-tier{padding:6px 10px}
}
.fx-env-modal{background:#1a1230e0;z-index:60}

/* Sobres: cómo se ganan, reclamar y tip */
.fx-sobre-how{position:relative;margin:0 0 12px;font-size:11.5px;line-height:1.5;color:#e6defe;text-align:center}
.fx-sobre-how b{color:#fff}
.fx-sobre-gift .primary-button{margin:6px auto 0;display:inline-block;width:auto}
.fx-sobre-keep{display:block;margin-top:8px;font-size:11px;color:#e6defe}
.fx-env-tip{width:min(440px,100%)}
.fx-env-tip-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.fx-env-tip-row p{margin:0;flex:1;font-size:13px;line-height:1.4}
.fx-env-tip-row .primary-button{width:auto;margin:0}
.fx-env-tip-note{font-size:12px;color:var(--muted);margin:12px 0 0}

/* Ventanas de consejos del fantasy: cabecera y botón de cerrar siempre a la vista, y se llega al final en el móvil */
#fx-tips-modal .profile-modal,#fx-env-tip .profile-modal{zoom:1;max-height:calc(100dvh - 40px);overflow-y:auto;padding-top:0;padding-bottom:0;overscroll-behavior:contain}
#fx-tips-modal .modal-header,#fx-env-tip .modal-header{position:sticky;top:0;z-index:2;background:#fff;margin:0 -25px 14px;padding:18px 25px 12px;border-bottom:1px solid var(--line);align-items:center}
#fx-tips-modal .modal-close,#fx-env-tip .modal-close{width:38px;height:38px;flex:0 0 auto;background:var(--purple);color:#fff;font-size:24px;line-height:1;box-shadow:0 4px 12px #6e56db55}
#fx-tips-modal .modal-close:hover,#fx-env-tip .modal-close:hover{filter:brightness(1.1)}
.fx-modal-footer,#fx-env-tip .modal-actions{position:sticky;bottom:0;z-index:2;background:#fff;margin:14px -25px 0;padding:12px 25px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:9px}
.fx-modal-footer .primary-button{width:auto;margin:0}
@media (max-width:650px){
  #fx-tips-modal,#fx-env-tip{place-items:start center;padding:10px 10px 0}
  #fx-tips-modal .profile-modal,#fx-env-tip .profile-modal{max-height:calc(100dvh - 96px);padding-left:16px;padding-right:16px}
  #fx-tips-modal .modal-header,#fx-env-tip .modal-header{margin:0 -16px 12px;padding:14px 16px 10px}
  .fx-modal-footer,#fx-env-tip .modal-actions{margin:12px -16px 0;padding:10px 16px 12px}
  .fx-modal-footer .primary-button,#fx-env-tip .modal-actions button{flex:1}
}

/* Todas las ventanas: botón de cerrar bien visible; en el móvil, cabecera y botones fijos y se llega al final */
.modal-close{display:grid;place-items:center;width:36px;height:36px;flex:0 0 auto;background:var(--purple);color:#fff;font-size:24px;line-height:1;box-shadow:0 4px 12px #6e56db55}
.modal-close:hover{filter:brightness(1.1)}
@media (max-width:650px){
  .modal-backdrop:not(#player-detail-modal):not(#crop-modal){place-items:start center;padding:10px 10px 0}
  .modal-backdrop:not(#player-detail-modal):not(#crop-modal) .profile-modal{max-height:calc((100dvh - 96px) / 1.16);overflow-y:auto;overscroll-behavior:contain;padding:0 18px}
  .modal-backdrop:not(#player-detail-modal) .profile-modal:not(:has(> .modal-header)){padding-top:16px}
  .modal-backdrop:not(#player-detail-modal):not(#crop-modal) .profile-modal > .modal-header{position:sticky;top:0;z-index:3;background:#fff;margin:0 -18px 12px;padding:14px 18px 10px;border-bottom:1px solid var(--line);align-items:center}
  .modal-backdrop:not(#player-detail-modal):not(#crop-modal) .profile-modal .modal-actions{position:sticky;bottom:0;z-index:3;background:#fff;margin:14px -18px 0;padding:10px 18px 12px;border-top:1px solid var(--line)}
  .modal-backdrop:not(#player-detail-modal):not(#crop-modal) .profile-modal:not(:has(.modal-actions)){padding-bottom:16px}
}

/* Disponibilidad por jornada: botones de convocar / desconvocar (admin) */
.callup-btn{border:0;border-radius:999px;padding:2px 8px;margin-left:4px;font:700 10px "DM Sans";cursor:pointer;white-space:nowrap;align-self:center}
.callup-btn.on{background:#1f9d55;color:#fff}
.callup-btn.off{background:#fde3e1;color:#c0392b}
.callup-btn:hover{filter:brightness(1.08)}
.callup-btn.absence-btn.off{background:#f1f1f4;color:#6b6b7b}
.availability-team li.me{box-shadow:inset 3px 0 0 var(--accent, #6c4cf1)}
.availability-team li.blocked .callup-btn{justify-self:start;margin:3px 0 0}
.availability-team li.lined{background:#fff7e0}

/* Delegados: ven lo que pueden gestionar (convocar, alinear, entrenamientos) */
.staff-only{display:none!important}body.is-staff .staff-only{display:inline-flex!important}
body.is-external .club-selector{cursor:default}body.is-external .club-selector .chevron{display:none}
.register-club-note{margin:6px 0 0;padding:8px 10px;border-radius:8px;background:#eef4ff;color:#3d5a99;font-size:11px;line-height:1.45}
.role-tag.external{background:#e8f0ff;color:#2f5fc4}
/* Usuarios (superadmin): clubs gestionados */
.clubs-admin-list{display:grid;gap:6px}
.club-admin-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:10px}
.club-admin-row.managed{background:#f5f2ff;border-color:#e2dafc}
.club-admin-copy{flex:1;min-width:0;display:grid;gap:2px}.club-admin-copy strong{font-size:12px}.club-admin-copy small{font-size:11px;color:var(--muted)}
.club-admin-state{font-size:11px;font-weight:700;color:var(--purple)}
#users-club-filter{margin-left:8px}
/* Configuración del club: equipos variables y fantasy */
.settings-team-head{display:flex;align-items:center;justify-content:space-between}
.settings-add-team{margin-top:12px;width:auto}
.settings-modal .settings-check{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;font-size:12px;font-weight:700}
.settings-modal .settings-check input{width:auto;margin:0;flex:0 0 auto}.settings-check small{flex-basis:100%;color:var(--muted);font-size:11px;font-weight:400}
.clubs-admin-others{margin-top:10px}.clubs-admin-others summary{cursor:pointer;font-size:12px;font-weight:700;color:var(--purple);padding:6px 0}.clubs-admin-others .clubs-admin-list{margin-top:6px}
.claim-club-change{display:block;margin-top:4px;color:#b25a00;font-size:11px;font-weight:600}
/* Usuario de otro club: sin las secciones internas del club (fantasy de socios, gestión, entrenos, actividad) */
body.is-external .nav-item[data-view="equipos"],body.is-external #view-resumen .content-grid,body.is-external #summary-stats,body.is-external #view-resumen .bottom-grid{display:none!important}
.role-tag.delegado{background:#e3f6ec;color:#1f7a47}

/* Avisos al móvil */
.push-button{background:#fff7e0;color:#a8701a}
.push-modal{width:min(460px,100%)}
.push-status{margin:0 0 12px;padding:10px 12px;border-radius:10px;background:#f5f4f8;font-size:13px;line-height:1.45}
.push-status.on{background:#e3f6ec;color:#1f7a47}
.push-status.warn{background:#fff3c4;color:#5a4300}
.push-status.off{background:#fdf3f2;color:#8b3b37}
#push-body > .primary-button,#push-body > .outline-button{width:100%;margin:0 0 6px}
.push-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.push-actions .outline-button{width:auto}
.push-subtitle{margin:18px 0 8px;font:700 12px "DM Sans";text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}
.push-prefs{display:grid;gap:6px}
.profile-modal label.push-pref{display:flex;align-items:center;gap:10px;margin:0;padding:9px 12px;border:1px solid var(--line);border-radius:10px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer}
.profile-modal label.push-pref input{width:18px;height:18px;flex:0 0 auto;accent-color:var(--purple)}
.push-note{font-size:12px;color:var(--muted);margin:12px 0 0}

/* Racha: degradado de verdes según partidas ganadas (3, 2, 1) y rojo con 0 */
.form-dot.w3{background:#1f9d55;color:#fff}
.form-dot.w2{background:#6fcf97;color:#0d4d2b}
.form-dot.w1{background:#c6efd6;color:#1f6b41}
.form-dot.w0{background:#e05252;color:#fff}
.team-form.mini{gap:2px;margin-top:3px}
.team-form.mini .form-dot{width:13px;height:13px;border-radius:3px;font-size:8px}
/* Clasificación: equipo pulsable y modo virtual */
button.standings-team{display:flex;align-items:center;gap:8px;border:0;background:none;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer}
button.standings-team > span{display:grid}
button.standings-team:hover .standings-name{color:var(--purple);text-decoration:underline}
.standings-virtual{display:grid;justify-items:center;gap:6px;margin-top:12px;text-align:center}
.standings-virtual p{margin:0;font-size:12px;color:var(--muted);max-width:520px}
.standings-virtual .outline-button{width:auto}
[data-team-sheet]{cursor:pointer}
.federation-match-teams [data-team-sheet]:hover,.match-list-teams [data-team-sheet]:hover span{text-decoration:underline}
/* Ficha de equipo */
.team-sheet{width:min(580px,100%);max-height:calc(100dvh - 40px);overflow-y:auto}
.team-sheet-head{background:#f6f4ff;border-radius:12px;padding:12px;align-items:center}
.team-sheet-head.own{background:#eef4ff}
.team-sheet-head .league-result small{display:block;font-size:10px;color:var(--muted);margin-top:2px}
.team-sheet-title{margin:16px 0 8px;font:700 12px "DM Sans";text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}
.team-sheet-table{width:100%;font-size:12px}
.team-sheet-table td,.team-sheet-table th{padding:5px 6px;text-align:center}
.team-sheet-table td:nth-child(2),.team-sheet-table th:nth-child(2){text-align:left}
.team-sheet-table tr.current td{background:#efebff;font-weight:700}
.team-sheet-matches{display:grid;gap:5px}
.team-sheet-match{display:grid;grid-template-columns:34px 52px minmax(0,1fr) auto auto;align-items:center;gap:8px;border:1px solid var(--line);background:#fff;border-radius:10px;padding:7px 10px;font:12px "DM Sans";color:var(--ink);text-align:left;cursor:pointer}
.team-sheet-match:hover{border-color:var(--purple)}
.team-sheet-match.pending{background:#f7f8fb}
.tsm-round{font-weight:700;color:var(--purple)}
.tsm-date{color:var(--muted);font-size:11px}
.tsm-rival{display:flex;align-items:center;gap:6px;min-width:0;color:var(--muted)}
.tsm-rival b{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tsm-result{font:700 13px "Space Grotesk"}
.tsm-result.pending{grid-column:span 2;font:600 11px "DM Sans";color:#2f5fc4}
@media (max-width:650px){
  .team-sheet-match{grid-template-columns:30px minmax(0,1fr) auto auto;gap:6px}
  .tsm-date{display:none}
}

.fx-sobre-mine.empty{display:flex;align-items:center;gap:12px;background:#f6f6f9;border:1.5px dashed #cfd2dc;color:#5f6470}
.fx-sobre-mine.empty b{display:block;font-size:14px;color:#3b3f4a}
.fx-sobre-mine.empty small{display:block;font-size:11px;color:var(--muted);margin-top:3px}
.fx-env-mini.empty{flex:0 0 auto;width:46px;height:32px;background:#dfe2ea;box-shadow:none}
.fx-sobre-mine.empty{text-align:left;padding:12px 14px}
/* Previsión: una fila por partida, trasero primero y delantero después */
.forecast-grid{grid-template-columns:1fr}
.forecast-game{grid-template-columns:76px minmax(0,1fr) minmax(0,1fr);align-items:center}
.forecast-game h4{writing-mode:horizontal-tb;transform:none}
.forecast-cell{grid-template-columns:auto minmax(0,1fr);grid-template-areas:"face label" "face name" "face pct";justify-items:start;text-align:left;column-gap:8px}
.forecast-cell .forecast-face{grid-area:face}.forecast-cell small{grid-area:label}.forecast-cell strong{grid-area:name}.forecast-cell .forecast-pct{grid-area:pct}
@media (max-width:640px){.forecast-game{grid-template-columns:22px minmax(0,1fr) minmax(0,1fr);gap:6px}.forecast-game h4{writing-mode:vertical-rl;transform:rotate(180deg)}.forecast-cell{grid-template-columns:1fr;grid-template-areas:"label" "face" "name" "pct";justify-items:center;text-align:center}}

.history-crests{display:inline-flex;align-items:center;gap:3px;flex:0 0 auto}
.history-crests i{font-style:normal;color:var(--muted);font-size:10px}

.history-rival-name.home{color:#2f5fc4}.history-rival-name.away{color:#c24b46}
.history-row.upcoming{grid-template-columns:72px minmax(0,1fr)}

.fx-habitual{display:flex;flex-wrap:wrap;justify-content:center;gap:3px;margin-top:1px}
.fx-habitual span{font-size:9px;font-weight:600;color:#6b6f7b;background:#f1f2f6;border-radius:999px;padding:1px 6px;white-space:nowrap}
.fx-habitual span b{font-weight:800}
.fx-habitual span.main{background:var(--purple-light);color:var(--purple);box-shadow:inset 0 0 0 1px #d9d0ff}

.fx-help-btn{border:0;background:#fff;border-radius:999px;width:24px;height:24px;font-size:13px;line-height:1;cursor:pointer;vertical-align:middle;box-shadow:0 1px 4px #0002;margin-left:4px}
.fx-help-btn:hover{transform:scale(1.1)}
.fx-mood-help p{font-size:13px;line-height:1.5;color:#4a4f5c}
.fx-help-title{font:700 14px "Space Grotesk";margin:16px 0 6px}
.fx-help-table{width:100%;font-size:13px;margin:6px 0}.fx-help-table td{padding:7px 8px;text-align:left}.fx-help-table td:last-child{text-align:right;font:700 14px "Space Grotesk";width:60px}
.fx-help-table .plus{color:#1f8a5b}.fx-help-table .minus{color:#c0392b}
.fx-help-note{font-size:12px !important;background:#f6f7fb;border-radius:9px;padding:8px 10px}
.fx-help-levels{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.fx-help-levels .fx-mood-line{flex-direction:column;gap:0;background:#f7f8fb;border-radius:9px;padding:5px 9px;margin:0}
.fx-help-levels small{font-size:9px;font-weight:500;color:var(--muted)}
.fx-help-list{margin:4px 0;padding-left:18px;font-size:13px;line-height:1.5;color:#4a4f5c}.fx-help-list li{margin:3px 0}
.fx-help-now{background:#fdf0ef;border-radius:9px;padding:8px 10px;color:#8b3b37 !important}

.callup-help{margin:10px 0 0;font-size:11px;color:#5f6470}
.callup-help summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:4px;font-weight:700;color:var(--purple);padding:4px 10px;border-radius:999px;background:var(--purple-light)}
.callup-help summary::-webkit-details-marker{display:none}
.callup-help[open] summary{margin-bottom:6px}
.callup-help p{margin:4px 0;line-height:1.45}

/* Fantasy: hueco de entrenador (delegados del club) */
.fx-coach{display:flex;justify-content:center;margin:6px 0 4px}
.fx-coach-pick{display:flex;align-items:center;gap:10px;min-width:min(280px,100%);background:#fff;border:1px solid #ffffffb3;border-radius:999px;padding:5px 14px 5px 5px;cursor:pointer;font:inherit;color:var(--ink);box-shadow:0 4px 12px #0000001f;text-align:left}
.fx-coach.empty .fx-coach-pick{background:#ffffff26;border:2px dashed #ffffff8c;color:#fff;box-shadow:none}
.fx-coach-photo{width:40px;height:40px;flex:none;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:var(--purple-light);color:var(--purple);font:700 13px "Space Grotesk";border:2px solid #fff}
.fx-coach-photo.empty{background:#ffffff33;border-style:dashed;font-size:18px}
.fx-coach-name{display:flex;flex-direction:column;flex:1;min-width:0;line-height:1.2}
.fx-coach-name small{font-size:9px;letter-spacing:.6px;font-weight:700;color:var(--muted)}
.fx-coach.empty .fx-coach-name small{color:#dff4ff}
.fx-coach-name strong{font:700 14px "Space Grotesk";white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fx-coach-action{font-size:11px;font-weight:700;color:var(--purple)}
.fx-coach.empty .fx-coach-action{color:#fff}
.fx-coach-list{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}
.fx-coach-option{display:flex;align-items:center;gap:8px;border:0;background:none;border-radius:8px;padding:5px;cursor:pointer;font:inherit;color:inherit;text-align:left}
.fx-coach-option:hover{background:#f7f6ff}.fx-coach-option.current{background:#efeaff}
.fx-coach-option .fx-coach-photo{width:32px;height:32px;font-size:11px}
.fx-coach-option>span:not(.fx-coach-photo){display:flex;flex-direction:column;flex:1;min-width:0}
.fx-coach-option small{color:var(--muted);font-size:10px}
.fx-coach-option b{color:var(--purple)}
.fx-manager-coach{cursor:default;grid-template-columns:40px minmax(0,1fr)}.fx-manager-coach:hover{background:none}
.fx-popover.wide{width:min(320px,calc(100vw - 16px))}
.fx-specs{display:flex;flex-wrap:wrap;gap:3px;margin-top:3px}
.fx-spec{font-size:10px;font-weight:700;padding:1px 6px;border-radius:999px;background:#efeaff;color:var(--purple);white-space:nowrap}
.fx-coach.empty .fx-spec{background:#ffffff33;color:#fff}
.fx-coach-bonus{font:700 12px "Space Grotesk";color:#1f8a5b;background:#e6f6ee;border-radius:999px;padding:2px 8px;white-space:nowrap}
.fx-coach-option:disabled{cursor:default;opacity:.9}
.fx-coach-option b{white-space:nowrap;font-size:11px}
.fx-coach-option.confirm{background:#fff1ea}.fx-coach-option.confirm b{color:#c2410c}
.fx-coach-random{width:100%;border:1px dashed #d5d8e1;margin-bottom:6px}
.fx-coach-random .fx-coach-photo{font-size:16px}
.fx-spec-help{margin:0 0 10px;font-size:11px;color:#4a5060}.fx-spec-help summary{cursor:pointer;font-weight:700;color:var(--purple)}.fx-spec-help p{margin:4px 0}

.fx-coach-modal .fx-coach-intro{margin:0 0 10px;font-size:13px;color:#4a5060;line-height:1.4}
.fx-coach-modal .fx-coach-option{width:100%;padding:8px}
.fx-coach-modal .fx-coach-option .fx-coach-photo{width:40px;height:40px;font-size:13px}
.fx-coach-modal .fx-coach-option strong{font-size:14px}
.fx-coach-modal .fx-coach-option b{font-size:12px}
.fx-coach-modal .fx-spec-help{font-size:12px}
@media (max-width:650px){#fx-coach-modal{place-items:start center;padding:10px}#fx-coach-modal .fx-coach-modal{zoom:1;max-height:calc(100dvh - 88px)}}
/* Móvil: si las pestañas del fantasy no caben, se desplazan dentro de su fila (no ensanchan la página). */
@media (max-width:650px){.fx-tabs{overflow-x:auto;scrollbar-width:none;max-width:100%}.fx-tabs::-webkit-scrollbar{display:none}.fx-tabs button{flex:0 0 auto}}

/* Usuarios: botones de acciones */
.user-actions{display:flex;flex-wrap:wrap;gap:6px}
.user-btn{border:1px solid var(--line);background:#fff;border-radius:8px;padding:5px 8px;font:600 11px "DM Sans";color:#4a5060;cursor:pointer;white-space:nowrap}
.user-btn:hover{border-color:var(--purple);color:var(--purple)}
.user-btn.on{background:#efeaff;border-color:var(--purple);color:var(--purple)}
.user-btn.danger{color:#c0392b;border-color:#f3c9c4}.user-btn.danger:hover{background:#fdeceb;border-color:#c0392b;color:#c0392b}
/* Usuarios: tarjetas como las de Jugadores; el lápiz despliega las opciones. */
.users-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:10px;align-items:start}
.user-card{border:1px solid #eff0f3;border-radius:9px;padding:12px;background:#fff;transition:border-color .15s,box-shadow .15s}
.user-card[hidden]{display:none}
.user-card.open{border-color:var(--purple);box-shadow:0 4px 14px #7459e814}
.user-card-top{display:flex;align-items:center;gap:11px;cursor:pointer}
.user-card-main{flex:1;min-width:0}
.user-card .user-name{display:block;font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.user-sub{display:block;font-size:10px;color:#6b7180;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.user-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.user-tags:empty{display:none}
.user-tags .role-tag{white-space:nowrap}
.user-edit{flex:0 0 auto;width:36px;height:36px;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:15px;cursor:pointer}
.user-edit:hover,.user-card.open .user-edit{border-color:var(--purple);background:var(--purple-light)}
.user-menu{margin-top:12px;padding-top:12px;border-top:1px solid var(--line);display:grid;gap:12px}
.user-menu[hidden]{display:none}
.user-info{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font-size:12px}
.user-info dt{font-size:9px;font-weight:700;letter-spacing:.6px;color:var(--muted);text-transform:uppercase;padding-top:2px}
.user-info dd{margin:0;color:var(--ink);word-break:break-word}
.user-group{display:flex;flex-direction:column;gap:4px}
.user-group small{font-size:9px;font-weight:700;letter-spacing:.6px;color:var(--muted)}
.user-group>div{display:flex;flex-wrap:wrap;gap:6px}
.user-actions{gap:14px}
@media (max-width:650px){
  .user-actions{display:grid;gap:10px}
  .user-group>div{display:grid;grid-template-columns:1fr 1fr;gap:6px}
  .user-btn{padding:9px 8px;font-size:12px;text-align:center}
}

/* Jugadores: el mismo lápiz que en Usuarios. */
.player-card .edit-player.user-edit{width:36px;height:36px;padding:0;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:15px;color:inherit}
.player-card .edit-player.user-edit:hover{border-color:var(--purple);background:var(--purple-light)}

/* Mis equipos: delegados (de la federación) */
.team-delegates{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:10px 0 4px}
.team-delegates small{font-size:9px;font-weight:700;letter-spacing:.6px;color:var(--muted);width:100%}
.team-delegate{display:inline-flex;align-items:center;gap:6px;background:#f5f3ff;border-radius:999px;padding:3px 10px 3px 3px;font-size:12px;font-weight:600;color:var(--ink)}
.team-delegate img,.team-delegate i{width:24px;height:24px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:var(--purple-light);color:var(--purple);font:700 9px "Space Grotesk";font-style:normal}

/* Competición: pestañas Ligas y partidos / Clubs */
.competition-tabs{margin:-12px 0 18px}

/* Competición · Ranking de jugadores (oficial y ELO) */
.ranking-head{flex-wrap:wrap;align-items:center}.ranking-head>div:first-child{display:grid;gap:2px}
.ranking-actions{display:flex;gap:6px;flex-wrap:wrap}
.ranking-chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 11px;font:600 11px "DM Sans";color:#5f6470;cursor:pointer}
.ranking-chip.active{border-color:var(--purple);color:var(--purple);background:var(--purple-light)}
.ranking-chip.elo:not(.active){border-color:#cbbdff;color:var(--purple)}
.ranking-table td:nth-child(6) b{font:700 13px "Space Grotesk";color:var(--purple)}
.ranking-player{display:flex;align-items:center;gap:8px;border:0;background:none;padding:0;cursor:pointer;text-align:left;min-width:0;max-width:100%;font-family:"DM Sans"}
.ranking-player .player-avatar{width:28px;height:28px;font-size:10px;flex:0 0 28px}
.ranking-player span{display:grid;min-width:0}.ranking-player strong{font-size:12px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ranking-player small{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ranking-player:hover strong{color:var(--purple)}
.ranking-club td{background:#faf8ff}
.ranking-me td{background:var(--purple-light)}.ranking-me td:first-child{box-shadow:inset 3px 0 0 var(--purple);color:var(--purple);font-weight:700}
.ranking-prov{font-style:normal;color:var(--muted);margin-left:1px}
.ranking-last{font-weight:700;color:var(--muted)}.ranking-last.up{color:#1f8a5b}.ranking-last.down{color:#d35c57}
.ranking-empty{color:var(--muted);padding:18px 6px!important;text-align:center!important}
.ranking-help{text-align:left;max-width:620px;background:#f6f8fd;border:1px solid #e3e9f6;border-radius:10px;padding:10px 14px;font-size:12px;color:#3d4556;display:grid;gap:6px}
.ranking-help p{margin:0}.ranking-formula{font:700 13px "Space Grotesk";color:var(--purple);text-align:center;background:#fff;border-radius:8px;padding:8px}
@media (max-width:640px){
  .ranking-table th,.ranking-table td{padding:8px 3px!important}
  .ranking-player .player-avatar{width:22px;height:22px;flex:0 0 22px;font-size:8px}
  .ranking-player{gap:6px}
  .ranking-player strong{max-width:150px}
}
@media (max-width:640px){
  .federation-tabs{gap:4px;justify-content:space-around}
  .federation-tabs button{padding:0 6px 12px;font-size:12px}
}

/* Resumen · «Tu equipo» con posición en liga y trayectoria (sustituye a «Nuestros equipos») */
#summary-teams-panel[hidden]{display:none}
.content-grid.single{grid-template-columns:1fr}
.me-team-league{display:flex;align-items:center;gap:10px;border:1px solid var(--line);background:#fff;border-radius:10px;padding:6px 10px;cursor:pointer;text-align:left;font-family:"DM Sans";min-width:0}
.me-team-league:hover{border-color:#cbbdff}
.me-team-pos{display:grid;justify-items:center;min-width:34px}
.me-team-pos b{font:700 18px "Space Grotesk";color:var(--purple);line-height:1}
.me-team-pos small{font-size:9px;font-weight:700;color:var(--muted)}
.me-team-copy{display:grid;flex:1;min-width:0}
.me-team-copy strong{font-size:12px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.me-team-copy small{font-size:10px;color:var(--muted)}
.me-team-league .team-form{flex:0 0 auto}
@media (max-width:420px){.me-team-league{flex-wrap:wrap}.me-team-league .team-form{flex-basis:100%;margin-left:44px}}

/* Resumen · «Tu equipo»: caja del próximo partido con el azul de Competición */
.me-next-match{display:grid;gap:6px;background:linear-gradient(115deg,#0759d5,#08cdbd);border-radius:12px;padding:10px 12px 12px;color:#fff}
.me-next-match .me-next-when{color:#ffffffd9}.me-next-match .me-next-when b{color:#fff}
.me-next-match .me-next-card .next-match-mini{box-shadow:0 4px 12px #00265a33}
.me-next-match .history-forecast{background:#ffffff26;border-color:#ffffff66}.me-next-match .history-forecast:hover{background:#ffffff40}
.me-next-match .porra{background:#ffffffeb;border-color:transparent}
.me-next-match .me-next-status{color:#ffffffd9}
.me-next-match .me-badge{background:#fff}

/* Resumen · porra compacta: solo lo más votado + botón para ver las opciones */
.porra-compact{align-items:center}
.porra-top{font-size:11px;color:#3d4556}.porra-top b{font:700 13px "Space Grotesk";color:#1e2d4f}.porra-top small{color:var(--muted);font-weight:600}
.porra-mine{font-size:11px;color:var(--purple);background:var(--purple-light);border-radius:999px;padding:2px 8px}.porra-mine b{font-weight:800}
.porra-more{margin-left:auto;border:1px solid #d6def0;background:#fff;border-radius:999px;padding:4px 11px;font:600 11px "DM Sans";color:#5f6470;cursor:pointer;white-space:nowrap}
.porra-more:hover{border-color:var(--purple);color:var(--purple)}
.porra-more.cta{background:var(--purple);border-color:var(--purple);color:#fff}
.porra-compact-open{display:grid;gap:4px}.porra-compact-open .porra{margin:0}.porra-compact-open .porra-more{justify-self:end;margin:0}
.me-next-match .porra-compact-open .porra-more{background:#ffffff26;border-color:#ffffff66;color:#fff}

/* Resumen · banner de próximos partidos de las ligas */
.upcoming-banner{background:linear-gradient(115deg,#0759d5,#08cdbd);border-radius:16px;padding:18px 20px 16px;color:#fff;margin-bottom:18px;display:grid;gap:10px}
.up-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;flex-wrap:wrap}
.up-head .eyebrow{color:#ffffffbf;margin:0 0 2px}.up-head h2{margin:0;font:700 20px "Space Grotesk";color:#fff}
.up-picker{display:flex;gap:4px;background:#ffffff22;border-radius:999px;padding:3px;flex-wrap:wrap}
.up-picker button{border:0;background:none;color:#fff;border-radius:999px;padding:5px 12px;font:700 11px "DM Sans";cursor:pointer}
.up-picker button.active{background:#fff;color:#0759d5}
.up-list{display:grid;gap:5px}
.up-day{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:#ffffffcc;margin:6px 0 1px}
.up-row{display:grid;grid-template-columns:44px 52px minmax(0,1fr);align-items:center;gap:8px;background:#fff;border:0;border-radius:10px;padding:7px 10px;cursor:pointer;text-align:left;font-family:"DM Sans";color:var(--ink);box-shadow:0 3px 9px #00265a26}
.up-row:hover{box-shadow:0 0 0 2px #ffffffaa,0 3px 9px #00265a26}
.up-row.ours{box-shadow:inset 4px 0 0 var(--purple),0 3px 9px #00265a26}
.up-time{font:700 13px "Space Grotesk";color:#0759d5}
.up-league{font-size:10px;font-weight:700;color:#2f5fc4;background:#e8f0ff;border-radius:6px;padding:3px 0;text-align:center}
.up-match{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px}
.up-match i{font-style:normal;font-size:10px;font-weight:700;color:var(--muted)}
.up-team{display:flex;align-items:center;gap:6px;min-width:0}.up-team.home{justify-content:flex-end;text-align:right}
.up-team strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.up-team.own strong{color:var(--purple)}
.up-empty{margin:0;font-size:12px;color:#ffffffd9}
.up-more{justify-self:center;border:1px solid #ffffff88;background:#ffffff22;color:#fff;border-radius:999px;padding:6px 14px;font:600 11px "DM Sans";cursor:pointer}
@media (max-width:640px){
  .upcoming-banner{padding:14px 12px}
  .up-row{grid-template-columns:38px 40px minmax(0,1fr);gap:6px;padding:7px 8px}
  .up-match{grid-template-columns:1fr;gap:2px}.up-match i{display:none}
  .up-team.home{justify-content:flex-end;text-align:left;flex-direction:row-reverse}
}

/* Competición · fotos y vídeos de los partidos */
.media-btns{display:inline-flex;gap:4px}
.match-card-actions{align-items:center}
.media-btn{display:inline-flex;align-items:center;gap:3px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:3px 8px;font:600 11px "DM Sans";color:#5f6470;cursor:pointer;line-height:1.2}
.media-btn i{font-style:normal;font-size:10px;color:var(--muted)}
.media-btn b{font-size:11px;color:var(--ink)}
.media-btn:not(.has){opacity:.75}.media-btn:hover{border-color:var(--purple);opacity:1}
.media-btn.has{border-color:#cbbdff;background:var(--purple-light)}.media-btn.has b{color:var(--purple)}
.match-list-actions .media-btns{margin-right:4px}
.media-modal{max-width:720px}
.media-title{display:flex;align-items:center;gap:8px;font-size:16px}.media-title span{min-width:0}.media-title b{color:var(--purple);margin:0 4px}
.media-tabs{display:flex;gap:6px;margin:4px 0 12px}
.media-tabs button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 14px;font:600 12px "DM Sans";color:#5f6470;cursor:pointer}
.media-tabs button.active{border-color:var(--purple);background:var(--purple-light);color:var(--purple)}
.media-tabs b{font-weight:800}
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px}
.media-photo{position:relative;margin:0;aspect-ratio:1;border-radius:10px;overflow:hidden;background:#eef1f7}
.media-photo-view{display:block;width:100%;height:100%;border:0;padding:0;cursor:zoom-in;background:none}
.media-photo img{width:100%;height:100%;object-fit:cover;display:block}
.media-del{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;border:0;background:#000000a6;color:#fff;font-size:15px;line-height:1;cursor:pointer}
.media-add{aspect-ratio:1;border:2px dashed #cbbdff;border-radius:10px;display:grid;place-items:center;text-align:center;font:600 12px "DM Sans";color:var(--purple);cursor:pointer;background:#faf8ff;padding:6px}
.media-add:hover{background:var(--purple-light)}.media-add.busy{cursor:progress;opacity:.8}
.media-empty{font-size:12px;color:var(--muted);margin:10px 0 0}
.media-videos{display:grid;gap:8px}
.media-video{position:relative;display:flex;align-items:center}
.media-video a{flex:1;display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:6px;text-decoration:none;color:var(--ink);min-width:0}
.media-video a:hover{border-color:#cbbdff}
.media-video img{width:96px;height:54px;object-fit:cover;border-radius:6px;flex:0 0 96px}
.media-video-icon{width:54px;height:54px;border-radius:6px;background:var(--purple-light);color:var(--purple);display:grid;place-items:center;font-size:20px;flex:0 0 54px}
.media-video a span{display:grid;min-width:0;padding-right:28px}.media-video strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.media-video small{font-size:11px;color:var(--muted)}
.media-video .media-del{top:50%;transform:translateY(-50%);right:8px}
.media-video-form{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto;gap:6px;margin-top:12px}
.media-video-form input{margin:0}
@media (max-width:640px){.media-video-form{grid-template-columns:1fr}.media-grid{grid-template-columns:repeat(3,1fr);gap:5px}}
.photo-viewer{position:fixed;inset:0;z-index:2000;background:#0b0d12f2;display:none;place-items:center;padding:40px 10px}
.photo-viewer.open{display:grid}
.photo-viewer img{max-width:100%;max-height:calc(100vh - 110px);border-radius:8px;box-shadow:0 10px 40px #0008}
.photo-viewer p{position:absolute;bottom:14px;left:0;right:0;text-align:center;color:#ffffffcc;font-size:12px;margin:0}
.viewer-close{position:absolute;top:10px;right:14px;border:0;background:none;color:#fff;font-size:32px;cursor:pointer}
.viewer-nav{position:absolute;top:50%;transform:translateY(-50%);border:0;background:#ffffff22;color:#fff;font-size:30px;width:44px;height:60px;border-radius:10px;cursor:pointer}
.viewer-nav.prev{left:10px}.viewer-nav.next{right:10px}

/* Fotos y vídeos por partida: selector de destino, secciones y ficha del partido */
.media-target{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:8px}
.media-target span{font-size:11px;font-weight:700;color:var(--muted);margin-right:4px}
.media-target button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:4px 10px;font:600 11px "DM Sans";color:#5f6470;cursor:pointer}
.media-target button.active{background:var(--purple);border-color:var(--purple);color:#fff}
.media-add.wide{aspect-ratio:auto;padding:12px;margin-bottom:4px}
.media-section{display:flex;align-items:baseline;gap:8px;margin:14px 0 6px;font:700 13px "Space Grotesk";color:var(--ink)}
.media-section small{font:600 11px "DM Sans";color:var(--muted)}
.media-section b{margin-left:auto;font-size:11px;color:var(--purple);background:var(--purple-light);border-radius:999px;padding:1px 8px}
.media-video-form{margin:0 0 4px}
.media-move{margin:0 4px 0 0;width:auto;font-size:11px;padding:4px 6px;border-radius:8px;flex:0 0 auto}
.media-video .media-del{position:static;transform:none;flex:0 0 24px}
.media-video{gap:4px}.media-video a span{padding-right:0}
.viewer-bar{position:absolute;bottom:12px;left:0;right:0;display:flex;justify-content:center;align-items:center;gap:10px;color:#ffffffcc;font-size:12px;flex-wrap:wrap;padding:0 10px}
.viewer-bar select{width:auto;margin:0;padding:4px 8px;font-size:12px;border-radius:8px;background:#ffffff22;color:#fff;border:1px solid #ffffff55}
.viewer-bar select option{color:#20242d}
.sheet-media{display:grid;gap:6px;margin-top:8px}
.sheet-media:empty{display:none}
.sheet-media.general{margin:0 0 12px}
.sheet-photos{display:flex;gap:5px;flex-wrap:wrap}
.sheet-photos button{width:58px;height:58px;border:0;padding:0;border-radius:8px;overflow:hidden;cursor:zoom-in;background:#eef1f7}
.sheet-photos img{width:100%;height:100%;object-fit:cover;display:block}
.sheet-photos .sheet-more{cursor:pointer;font:700 13px "Space Grotesk";color:var(--purple);background:var(--purple-light)}
.sheet-videos{display:flex;flex-direction:column;gap:3px}
.sheet-videos a{font-size:12px;color:var(--purple);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sheet-videos a:hover{text-decoration:underline}
.sheet-media-actions{display:flex;gap:6px;flex-wrap:wrap}
.sheet-media-actions button{border:1px dashed #cbbdff;background:#faf8ff;border-radius:999px;padding:4px 10px;font:600 11px "DM Sans";color:var(--purple);cursor:pointer}
.sheet-media-actions button:hover{background:var(--purple-light)}
.sheet-media-empty{margin:0;font-size:11px;color:var(--muted)}
.media-video{flex-wrap:wrap}.media-video a{flex:1 1 200px}
.media-modal select.media-move{width:auto;max-width:120px;min-width:0;flex:0 0 auto;margin:0;height:auto;padding:5px 6px;font-size:11px}
@media (max-width:640px){
  .media-video{flex-wrap:nowrap}.media-video a{flex:1 1 0;gap:8px;padding:5px}
  .media-video img{width:60px;height:40px;flex:0 0 60px}.media-video-icon{width:40px;height:40px;flex:0 0 40px;font-size:15px}
  .media-modal select.media-move{max-width:88px}
}

/* Resumen · últimas fotos de los partidos */
.latest-photos{margin-bottom:18px}.latest-photos[hidden]{display:none}
.latest-photos-strip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(170px,1fr);gap:12px;overflow-x:auto;padding:2px 2px 8px;scroll-snap-type:x proximity}
.latest-photo{margin:0;display:grid;gap:6px;scroll-snap-align:start;min-width:0}
.latest-photo-img{position:relative;display:block;width:100%;aspect-ratio:4/3;border:0;padding:0;border-radius:12px;overflow:hidden;cursor:zoom-in;background:#eef1f7}
.latest-photo-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s}
.latest-photo-img:hover img{transform:scale(1.04)}
.latest-game{position:absolute;left:6px;bottom:6px;background:#000000a6;color:#fff;font:700 10px "DM Sans";border-radius:999px;padding:3px 8px;max-width:calc(100% - 12px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.latest-photo figcaption{display:grid;gap:2px;min-width:0}
.latest-photo figcaption button{border:0;background:none;padding:0;text-align:left;cursor:pointer;font-family:"DM Sans";min-width:0}
.latest-photo figcaption strong{display:block;font-size:12px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.latest-photo figcaption strong b{color:var(--purple)}
.latest-photo figcaption button:hover strong{color:var(--purple)}
.latest-photo figcaption small{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:640px){.latest-photos-strip{grid-auto-columns:72%}}
.latest-players{display:grid;gap:1px;font-size:11px;font-weight:600;color:#3d4556;min-width:0}
.latest-players span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.latest-players i{font-style:normal;font-size:9px;font-weight:700;color:var(--muted);margin-right:2px}
.viewer-bar{flex-direction:column;gap:6px}.viewer-players{color:#fff;font-size:13px;font-weight:700;text-align:center}
.latest-players .latest-change{font-size:10px;font-weight:700;color:#b5651d}
/* Últimas fotos: local en azul y visitante en rojo, como en los marcadores */
.latest-photo .side-home,.latest-players .side-home{color:#4169e1}
.latest-photo .side-away,.latest-players .side-away{color:#d94b5b}
.latest-players .latest-change{font-weight:700}
.viewer-players .side-home{color:#9db8ff}.viewer-players .side-away{color:#ff9aa5}
.fx-lock-soon{font-size:10px;font-weight:700;color:#b5651d;background:#fff4e6;border-radius:999px;padding:1px 6px;white-space:nowrap}
/* Últimas fotos y vídeos: vídeos con miniatura, selector de partida y recorte de caras en el visor */
.latest-video{cursor:pointer}
.latest-play{position:absolute;inset:0;margin:auto;width:42px;height:42px;border-radius:50%;background:#000000a6;color:#fff;display:grid;place-items:center;font-size:16px;padding-left:3px;pointer-events:none}
.latest-video-tile{position:absolute;inset:0;display:grid;align-content:center;justify-items:center;gap:4px;padding:10px 12px 26px;background:linear-gradient(135deg,#2f3550,#4a3f7a);color:#fff;text-align:center}
.latest-video-tile b{font:700 13px "DM Sans"}.latest-video-tile small{font-size:11px;opacity:.8;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.latest-move{width:auto;justify-self:start;margin:2px 0 0;padding:2px 6px;font-size:11px;border-radius:7px;border:1px solid var(--line);background:#fff;color:var(--muted)}
.latest-move.general{border-color:#f0a33a;color:#b86b00;background:#fff7ea}
.viewer-hint{color:#ffffff99;font-size:11px}
.viewer-face-toggle{border:1px solid #ffffff55;background:#ffffff22;color:#fff;border-radius:8px;padding:4px 10px;font:600 12px "DM Sans";cursor:pointer}
.viewer-faces{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.viewer-faces[hidden]{display:none}
.viewer-faces button{border:0;background:#f5c518;color:#20242d;border-radius:999px;padding:4px 10px;font:700 12px "DM Sans";cursor:pointer}

/* Caras de jugadores: foto entera con zoom/arrastre, marco fijo y lista de jugadores de la partida */
.face-modal{position:fixed;inset:0;z-index:2100;background:#0b0d12;color:#fff;display:none;grid-template-rows:auto auto minmax(0,1fr) auto auto;gap:8px;padding:12px max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}
.face-modal.open{display:grid}
.face-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.face-head div{display:grid;min-width:0}.face-head strong{font:700 16px "Space Grotesk"}.face-head small{font-size:11px;color:#ffffffaa;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.face-done{border:0;background:#7459e8;color:#fff;border-radius:999px;padding:8px 18px;font:700 13px "DM Sans";cursor:pointer}
.face-help{margin:0;font-size:11px;color:#ffffffaa}
.face-stage{position:relative;overflow:hidden;border-radius:12px;background:#000;touch-action:none;cursor:grab;min-height:220px}
.face-stage:active{cursor:grabbing}
.face-stage img{position:absolute;left:0;top:0;transform-origin:0 0;user-select:none;-webkit-user-drag:none;max-width:none}
.face-frame{position:absolute;left:50%;top:50%;width:min(42%,42vh);aspect-ratio:1;transform:translate(-50%,-50%);border:3px solid #f5c518;border-radius:10px;box-shadow:0 0 0 9999px #00000080;pointer-events:none}
.face-frame::after{content:"";position:absolute;inset:18%;border:1px dashed #f5c51888;border-radius:50%}
.face-zoom{display:flex;align-items:center;gap:8px}
.face-zoom input{flex:1;margin:0}
.face-zoom button{border:1px solid #ffffff44;background:#ffffff1a;color:#fff;border-radius:8px;min-width:36px;height:34px;font:700 16px "DM Sans";cursor:pointer}
.face-zoom .face-reset{font-size:11px;padding:0 10px}
.face-players{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-height:34vh;overflow:auto}
.face-players h5{margin:0 0 5px;font:700 11px "DM Sans";letter-spacing:.3px}
.face-players .side-home{color:#9db8ff}.face-players .side-away{color:#ff9aa5}
.face-players p{margin:0;color:#ffffff66;font-size:11px}
.face-player{display:grid;grid-template-columns:38px minmax(0,1fr);grid-template-rows:auto auto;column-gap:8px;align-items:center;width:100%;margin-bottom:5px;border:1px solid #ffffff2e;background:#ffffff12;border-radius:10px;padding:5px 8px;color:#fff;text-align:left;cursor:pointer;font-family:"DM Sans"}
.face-player.home{border-left:3px solid #4169e1}.face-player.away{border-left:3px solid #d94b5b}
.face-player:hover{background:#ffffff22}
.face-player img,.face-player span{grid-row:1/3;width:38px;height:38px;border-radius:50%;object-fit:cover;background:#ffffff26;display:grid;place-items:center;font:700 12px "DM Sans"}
.face-player b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.face-player small{font-size:10px;color:#ffffff99}
.face-player.saved{border-color:#31a97c;background:#31a97c26}.face-player.saved small{color:#7be0b5;font-weight:700}
.face-player:disabled{opacity:.5;cursor:progress}
@media (max-width:640px){.face-players{grid-template-columns:1fr 1fr;gap:6px}.face-frame{width:min(60%,40vh)}}

/* Ficha del jugador: el admin puede poner, cambiar o quitar la foto */
.pd-photo{display:grid;justify-items:center;gap:6px}
.pd-photo-actions{display:flex;gap:4px;flex-wrap:wrap;justify-content:center}
.pd-photo-btn{border:1px solid var(--line);background:#fff;border-radius:999px;padding:3px 9px;font:600 11px "DM Sans";color:#5f6470;cursor:pointer;white-space:nowrap}
.pd-photo-btn:hover{border-color:var(--purple);color:var(--purple)}
.pd-photo-btn.remove:hover{border-color:#d94b5b;color:#d94b5b}
.ranking-player .player-avatar{object-fit:cover}
.pd-photo-actions .pd-photo-btn{width:auto;height:auto;min-height:0;line-height:1.3;margin:0;box-shadow:none}
/* Clasificación de managers: caja y sobres sin abrir */
.fx-table .fx-cash{color:#1f8a5b}
.fx-env-cell{white-space:nowrap}
.fx-env-chip{display:inline-flex;align-items:center;gap:1px;border-radius:999px;padding:1px 6px;margin:1px 2px 1px 0;font-size:11px;line-height:1.4}
.fx-env-chip b{font-size:10px;margin-left:1px}
.fx-env-chip.oro{background:#fff6d6;color:#8a6500}.fx-env-chip.plata{background:#eef1f6;color:#5b6577}.fx-env-chip.bronce{background:#fbeee3;color:#9a5a2a}
.fx-env-none{color:var(--muted)}
@media (max-width:640px){.fx-table th,.fx-table td{padding-left:3px;padding-right:3px}.fx-env-chip{padding:1px 4px;font-size:10px}}
.fx-table .fx-money{white-space:nowrap}
@media (max-width:640px){.fx-table .fx-money{font-size:11px}.fx-table th{font-size:9px}.fx-table .fx-manager-face{display:none}}
/* Ficha de un manager: posición, puntos, valor, caja y sobres */
.fx-manager-summary{grid-template-columns:repeat(auto-fit,minmax(78px,1fr))}
.fx-manager-summary b.fx-cash{color:#b8ffd9}
.fx-manager-summary .fx-env-chip{font:600 11px "DM Sans"}
.fx-manager-summary .fx-env-none{color:#ffffffb3}

/* Resumen · porra en «Próximos partidos» y bloque «Últimos resultados» */
.up-item{background:#fff;border-radius:10px;box-shadow:0 3px 9px #00265a26;overflow:hidden}
.up-item:hover{box-shadow:0 0 0 2px #ffffffaa,0 3px 9px #00265a26}
.up-item.ours{box-shadow:inset 4px 0 0 var(--purple),0 3px 9px #00265a26}
.up-item .up-row,.up-item .up-row:hover,.up-item .up-row.ours{width:100%;background:none;box-shadow:none;border-radius:0}
.up-item .porra{margin:0 8px 7px 10px;padding:4px 8px;gap:4px 8px}
.up-item .porra-compact-open{margin:0 8px 7px 10px;display:grid;gap:4px}.up-item .porra-compact-open .porra{margin:0}.up-item .porra-compact-open .porra-more{justify-self:end}
.up-item .porra-label{font-size:11px}
.results-banner{background:linear-gradient(115deg,#1e2d4f,#4a3fb0)}
.results-banner .up-picker button.active{color:#1e2d4f}
.res-row{grid-template-columns:52px minmax(0,1fr)}
.res-score{font:700 14px "Space Grotesk";color:#1e2d4f;background:#eef1f8;border-radius:6px;padding:2px 7px;white-space:nowrap}
.up-team.lost strong{color:var(--muted);font-weight:600}
.porra-hits{font-size:11px;font-weight:700;color:#1f9d55}.porra-hits.none{color:var(--muted);font-weight:600}
.porra-past .porra-mine.hit{background:#e3f6ea;color:#1f7a45}.porra-past .porra-mine.miss{background:#fdeaea;color:#c43c3c}
.me-results{display:grid;gap:4px}
.me-results>small{font-size:10px;font-weight:700;letter-spacing:.5px;color:var(--muted)}
.me-result{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;border:1px solid var(--line);background:#fff;border-radius:9px;padding:5px 9px;cursor:pointer;text-align:left;font-family:"DM Sans";color:var(--ink)}
.me-result:hover{border-color:#cbbdff}
.me-result-copy{display:grid;min-width:0}.me-result-copy strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.me-result-copy small{font-size:10px;color:var(--muted)}
.me-result-score{font:700 14px "Space Grotesk"}.me-result-score.win{color:#1f9d55}.me-result-score.loss{color:#d63c3c}
@media (max-width:640px){
  .res-row{grid-template-columns:40px minmax(0,1fr)}
  .res-row .up-match{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"home score" "away score";column-gap:8px}
  .res-row .up-team.home{grid-area:home}.res-row .up-team.away{grid-area:away}.res-row .res-score{grid-area:score}
  .up-item .porra-top,.up-item .porra-hits{font-size:10px}
}

/* Entrenamientos · habituales de otros equipos y «no habituales» */
.attendance-guests-title.regulars{color:#0759d5;display:flex;gap:6px;align-items:center;margin-top:10px}.attendance-guests-title.regulars span{background:#e6f0ff}
.regular-hint{display:block;font-style:normal;font-size:10px;color:#a3591d;background:#fff4e8;border-radius:6px;padding:3px 7px;margin-top:3px}
.regular-hint .link-button{font-size:10px;padding:0;color:#c0601c;text-decoration:underline}
.not-regular-btn{border:1px dashed #cfd5e2!important;background:#fff!important;color:var(--muted)!important}
.not-regular-list{margin:6px 0 4px;font-size:11px}.not-regular-list summary{cursor:pointer;color:var(--muted);font-weight:700}.not-regular-list summary span{background:#eef1f8;border-radius:999px;padding:0 7px;margin-left:4px}
/* Resumen · tus entrenos de cualquier equipo */
.my-trainings{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px;padding:8px 10px;background:#fff6ef;border-radius:10px;font-size:11px}
.my-trainings-total{color:#a3591d;margin-right:4px}.my-trainings-total b{font:700 18px "Space Grotesk";color:#ef7d3c}
.my-trainings-team{background:#fff;border:1px solid #f4dcc8;border-radius:999px;padding:2px 9px;color:#5f6470}.my-trainings-team b{color:#ef7d3c}
.my-trainings-team.own{border-color:#ef7d3c}
.me-extra{display:block;font-size:10px;font-weight:700;color:var(--purple);margin-top:2px}

/* Resumen · clasificación de asistencia a entrenos */
.training-rank{display:grid;gap:3px;margin:0 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:12px}
.tr-rank-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:4px}.tr-rank-head strong{font-size:13px}.tr-rank-head small{font-size:10px;color:var(--muted)}
.tr-rank-row{display:grid;grid-template-columns:28px 26px minmax(0,1fr) auto;align-items:center;gap:8px;padding:4px 6px;border-radius:8px}
.tr-rank-row.me{background:#fff1e6;box-shadow:inset 3px 0 0 #ef7d3c}
.tr-rank-pos{font:700 12px "Space Grotesk";color:var(--muted);text-align:right}.tr-rank-row.me .tr-rank-pos{color:#ef7d3c}
.tr-rank-photo{width:26px;height:26px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:#f1edff;color:var(--purple);font-size:9px;font-weight:700}
.tr-rank-name{display:grid;min-width:0}.tr-rank-name strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tr-rank-name small{font-size:10px;color:var(--muted)}
.tr-rank-name em{font-style:normal;font-size:9px;font-weight:700;color:#fff;background:#ef7d3c;border-radius:999px;padding:1px 6px;margin-left:4px;vertical-align:1px}
.tr-rank-total{font:700 15px "Space Grotesk";color:#ef7d3c}
.tr-rank-gap{text-align:center;color:var(--muted);font-size:11px;line-height:1}
.tr-rank-none{margin:4px 0 0;font-size:11px;color:var(--muted)}

/* Resumen · bloque único de entrenamientos (arriba con ficha, en su panel sin ficha) */
.me-block.me-trainings{cursor:default;align-content:start;gap:8px;padding:12px 14px}
.trb-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.trb-head small{display:block;font-size:10px;font-weight:700;letter-spacing:.5px;color:var(--muted)}.trb-head span{font-size:11px;color:#5f6470}
.trb-head .text-button{white-space:nowrap;padding:0}
.trb-me{display:flex;align-items:center;gap:12px;padding:8px 10px;background:#fff6ef;border-radius:10px}
.trb-pct{display:grid;text-align:center;min-width:64px}.trb-pct b{font:700 24px "Space Grotesk";color:#ef7d3c;line-height:1}.trb-pct small{font-size:9px;color:#a3591d;margin-top:3px}
.trb-me-copy{display:grid;gap:5px;min-width:0}.trb-me-copy strong{font-size:12px;font-weight:600;color:#5f6470}.trb-me-copy strong b{font:700 16px "Space Grotesk";color:#ef7d3c}
.trb-teams{display:flex;flex-wrap:wrap;gap:4px}
.trb-section{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--muted);margin-top:2px}
.trb-soon .training-row{width:100%;border:0;border-top:1px solid #f0f1f4;background:none;padding:8px 0;text-align:left;cursor:pointer;font-family:"DM Sans"}
.trb-soon .training-row:first-child{border-top:0}
.trb-soon .empty-panel-message{margin:2px 0;font-size:11px}
.trb-head+.trb-me,.me-trainings .training-rank{margin:0}
#summary-trainings-block .trb-head{margin-bottom:10px}#summary-trainings-block .training-rank{margin-top:10px}
#summary-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:650px){#summary-stats{grid-template-columns:minmax(0,1fr)}}
#view-resumen .content-grid[hidden]{display:none}

/* Entrenamientos · asistencia como clasificación con caras */
.ts-podium{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:end;margin-bottom:14px}
.ts-podium-card{position:relative;display:grid;justify-items:center;gap:2px;border:1px solid var(--line);background:linear-gradient(180deg,#fff,#fff6ef);border-radius:14px;padding:14px 8px 12px;cursor:pointer;font-family:"DM Sans";color:var(--ink);text-align:center;min-width:0}
.ts-podium-card.p1{order:2;padding-top:20px;border-color:#f3c76b;background:linear-gradient(180deg,#fff,#fff3d6)}.ts-podium-card.p2{order:1}.ts-podium-card.p3{order:3}
.ts-podium-card.me{box-shadow:0 0 0 2px #ef7d3c}
.ts-medal{position:absolute;top:6px;left:8px;font-size:20px}
.ts-podium-photo{width:58px;height:58px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:#f1edff;color:var(--purple);font-weight:700;font-size:16px;border:3px solid #fff;box-shadow:0 3px 10px #0000001f}
.ts-podium-card.p1 .ts-podium-photo{width:72px;height:72px}
.ts-podium-card strong{font-size:12px;margin-top:4px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ts-podium-card small{font-size:10px;color:var(--muted)}
.ts-podium-card>b{font:700 24px "Space Grotesk";color:#ef7d3c;line-height:1.1}.ts-podium-label{font-size:10px;color:#a3591d}
.ts-podium-card em,.ts-name em{font-style:normal;font-size:9px;font-weight:700;color:#fff;background:#ef7d3c;border-radius:999px;padding:1px 6px;margin-left:4px;vertical-align:1px}
.ts-list{display:grid;gap:2px}
.ts-row{display:grid;grid-template-columns:30px 34px minmax(0,1.4fr) minmax(0,1.6fr) 120px 34px;align-items:center;gap:10px;border:0;border-bottom:1px solid var(--line);background:none;padding:7px 8px;border-radius:0;cursor:pointer;text-align:left;font-family:"DM Sans";color:var(--ink)}
.ts-row:hover{background:#faf9ff}
.ts-row.me{background:#fff1e6;box-shadow:inset 3px 0 0 #ef7d3c;border-radius:8px}
.ts-pos{font:700 12px "Space Grotesk";color:var(--muted);text-align:right}.ts-row.me .ts-pos{color:#ef7d3c}
.ts-photo{width:34px;height:34px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:#f1edff;color:var(--purple);font-size:10px;font-weight:700}
.ts-name{display:grid;min-width:0}.ts-name strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ts-name small{font-size:10px;color:var(--muted)}
.ts-chips{display:flex;flex-wrap:wrap;gap:4px}.ts-chips i{font-style:normal;font-size:10px;font-weight:700;border-radius:999px;padding:2px 7px;background:#eef1f8;color:#5f6470}
.ts-chips i.ok{background:#e3f6ea;color:#1f7a45}.ts-chips i.exc{background:#fff4dc;color:#a3741d}.ts-chips i.miss{background:#fdeaea;color:#c43c3c}.ts-chips i.extra{background:var(--purple-light);color:var(--purple)}
.ts-pct{display:flex;align-items:center;gap:6px}.ts-pct .attendance-bar{flex:1;width:auto}.ts-pct b{font-size:11px;min-width:32px;text-align:right}
.ts-total{font:700 17px "Space Grotesk";color:#ef7d3c;text-align:right}
@media (max-width:700px){
  .ts-podium{gap:6px}.ts-podium-card{padding:12px 4px 10px}.ts-podium-photo{width:46px;height:46px}.ts-podium-card.p1 .ts-podium-photo{width:56px;height:56px}
  .ts-podium-card strong{font-size:10px;white-space:normal;line-height:1.2}.ts-podium-card>b{font-size:20px}.ts-medal{font-size:16px;left:5px}
  .ts-row{grid-template-columns:24px 32px minmax(0,1fr) 30px;grid-template-areas:"pos photo name total" "pos photo chips total" "pos photo pct total";row-gap:3px;gap:3px 8px}
  .ts-pos{grid-area:pos}.ts-photo{grid-area:photo;width:32px;height:32px}.ts-name{grid-area:name}.ts-chips{grid-area:chips}.ts-pct{grid-area:pct}.ts-total{grid-area:total}
}

/* Resumen · tarjeta verde a lo ancho con las caras de los mejores del ranking */
#summary-stats{grid-template-columns:minmax(0,1fr)}
.stat-players-body{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap}
.stat-top-ranked{display:grid;gap:6px;margin-right:22px}.stat-top-ranked>small{font-size:10px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:#ffffffd9}
.stat-top-ranked>div{display:flex;gap:14px}
.stat-ranked{display:grid;grid-template-columns:38px auto;grid-template-rows:auto auto auto;column-gap:8px;align-items:center;cursor:pointer}
.stat-ranked img,.stat-ranked i{grid-row:1/4;width:38px;height:38px;border-radius:50%;object-fit:cover;border:2px solid #ffffffcc;display:grid;place-items:center;background:#ffffff33;font-style:normal;font-size:12px;font-weight:700;box-shadow:0 2px 6px #0000002e}
.stat-ranked b{font:700 13px "Space Grotesk";line-height:1}.stat-ranked em{font-style:normal;font-size:12px;font-weight:600;line-height:1.2;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat-ranked small{font-size:9px;color:#ffffffcc;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stat-ranked:hover img,.stat-ranked:hover i{transform:scale(1.08)}
@media (max-width:650px){.stat-top-ranked{margin-right:0;width:100%}.stat-top-ranked>div{justify-content:space-between;gap:6px}.stat-ranked{grid-template-columns:32px auto;column-gap:6px}.stat-ranked img,.stat-ranked i{width:32px;height:32px}.stat-ranked em,.stat-ranked small{max-width:62px}}

/* Sobres en el móvil: rayos más ligeros (sin máscara) para que no se atasque la animación */
.fx-env-rays{mask:none;-webkit-mask:none;background:radial-gradient(circle,#ffffff55 0 30%,transparent 68%);animation:fxEnvPulse 1.6s ease-in-out infinite;will-change:transform}
.fx-env-reveal.oro .fx-env-rays{background:radial-gradient(circle,#ffd84aaa 0 30%,transparent 68%)}
.fx-env-reveal.bronce .fx-env-rays{background:radial-gradient(circle,#e09954aa 0 30%,transparent 68%)}
@keyframes fxEnvPulse{0%,100%{transform:scale(.9);opacity:.8}50%{transform:scale(1.08);opacity:1}}
@media (prefers-reduced-motion:reduce){.fx-env-rays,.fx-env-big.shaking,.fx-env-card{animation:none}}

/* Navegación (menú lateral del ordenador y barra inferior del móvil): botones como la pelota del logo
   (bola con brillo y sombra) y, en Resumen, el propio logo FM. Convocatorias pasa a la G de Gestión. */
@media all{
  .main-nav .nav-item[data-view="resumen"] .nav-icon::before{content:none}
  .main-nav .nav-item[data-view="ligas"] .nav-icon::before{content:"C"}
  .main-nav .nav-item[data-view="fantasy"] .nav-icon::before{content:"F"}
  .main-nav .nav-item[data-view="entrenamientos"] .nav-icon::before{content:"E"}
  .main-nav .nav-item[data-view="clubs"] .nav-icon::before{content:"C"}
  .main-nav .nav-item[data-view="jugadores"] .nav-icon::before{content:"J"}
  .main-nav .nav-item[data-view="usuarios"] .nav-icon::before{content:"U"}
  .main-nav .nav-item .nav-icon{--ball:#8b909d;--ball-light:#c5c8d0;--ball-dark:#5f6470;font-size:0;width:40px;height:40px;border-radius:50%;color:var(--ball-dark);background:radial-gradient(circle at 34% 28%,#fff 0 7%,color-mix(in srgb,var(--ball-light) 45%,#fff) 26%,color-mix(in srgb,var(--ball-light) 70%,#fff) 62%,color-mix(in srgb,var(--ball) 45%,#fff) 100%);box-shadow:0 3px 6px #0000001f,inset -3px -4px 8px #0000000f;transition:transform .15s,box-shadow .15s}
  .main-nav .nav-item .nav-icon::before{font:800 italic 19px/1 "Space Grotesk",sans-serif;letter-spacing:-.5px;transform:rotate(-8deg)}
  .main-nav .nav-item.active .nav-icon{color:#fff;background:radial-gradient(circle at 34% 28%,#ffffffcc 0 6%,var(--ball-light) 24%,var(--ball) 64%,var(--ball-dark) 100%);box-shadow:0 6px 12px #00000038,inset -4px -5px 9px #0000002b;transform:translateY(-3px)}
  .main-nav .nav-item.active .nav-icon::before{text-shadow:0 1px 2px #00000040}
  .main-nav .nav-item[data-view="ligas"] .nav-icon{--ball:#0b72d9;--ball-light:#3fb6f0;--ball-dark:#064aa8}
  .main-nav .nav-item[data-view="fantasy"] .nav-icon{--ball:#6e56db;--ball-light:#9d8bf0;--ball-dark:#4a35b0}
  .main-nav .nav-item[data-view="entrenamientos"] .nav-icon{--ball:#ef7d3c;--ball-light:#f9b06e;--ball-dark:#c8571c}
  .main-nav .nav-item[data-view="equipos"] .nav-icon{--ball:#d6457a;--ball-light:#f483a8;--ball-dark:#a82a58}
  .main-nav .nav-item[data-view="equipos"] .nav-icon::before{content:"G"}
  .main-nav .nav-item[data-view="clubs"] .nav-icon{--ball:#d39a14;--ball-light:#f5c94a;--ball-dark:#9c6f05}
  .main-nav .nav-item[data-view="jugadores"] .nav-icon{--ball:#1f9d6f;--ball-light:#5fd4a8;--ball-dark:#137351}
  .main-nav .nav-item[data-view="usuarios"] .nav-icon{--ball:#5b6b85;--ball-light:#97a4ba;--ball-dark:#3e4b61}
  /* Resumen: el logo de la app (la pelota amarilla con FM) */
  .main-nav .nav-item:not(.active) .nav-icon{box-shadow:0 3px 6px #0000001f,inset -3px -4px 8px #0000000f}
  .main-nav .nav-item[data-view="resumen"] .nav-icon,.main-nav .nav-item[data-view="resumen"]:not(.active) .nav-icon{font-size:0;background:url(/icons/icon-192.png) center 47%/142% no-repeat;box-shadow:0 3px 6px #0000002e;filter:saturate(.55) brightness(1.05);opacity:.85}
  .main-nav .nav-item[data-view="resumen"].active .nav-icon{filter:none;opacity:1;box-shadow:0 6px 12px #00000038}
}
/* En el ordenador, pelotas más pequeñas que en el móvil */
@media (min-width:651px){
  .main-nav .nav-item .nav-icon{width:30px;height:30px}
  .main-nav .nav-item .nav-icon::before{font-size:14px}
  .main-nav .nav-item.active .nav-icon{transform:translateY(-1px);box-shadow:0 4px 9px #00000033,inset -3px -4px 7px #0000002b}
  .main-nav .nav-item[data-view="resumen"].active .nav-icon{box-shadow:0 4px 9px #00000033}
}
/* Botón de inicio de la cabecera: también la pelota FM */
.home-button{font-size:0;border-radius:50%;background:url(/icons/icon-192.png) center 47%/142% no-repeat;box-shadow:0 3px 8px #0000002e;transition:transform .15s}
.home-button:hover{transform:translateY(-1px) rotate(-8deg)}

/* Fantasy · explicaciones debajo de la plantilla y aviso de quién se va */
.fx-team-notes{display:grid;gap:8px;margin-top:14px}.fx-team-notes .fx-hint{margin:0}
.fx-leave-tip{width:min(440px,100%)}
.fx-leave-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.fx-leave-photo{width:46px;height:46px;border-radius:50%;object-fit:cover;flex:0 0 auto;display:grid;place-items:center;background:#f1edff;color:var(--purple);font-weight:700}
.fx-leave-row p{margin:0;display:grid;gap:2px}.fx-leave-row b{font-size:14px}.fx-leave-row span{font-size:12px;color:var(--muted)}
.fx-leave-note{font-size:13px;line-height:1.45;color:#5f6470;margin:12px 0 4px}
.fx-leave-tip .modal-actions{display:flex;justify-content:flex-end;gap:9px;flex-wrap:wrap}
/* Despedidas: lo que paga la máquina por cada uno */
.fx-leave-row .fx-leave-pay{margin-left:auto;font:700 15px "Space Grotesk";color:#1f9d6f;white-space:nowrap}

/* Tus estadísticas: ficha y equipo habitual; ranking y ELO apilados (sin PP) para que quepa en móviles estrechos */
.me-copy .me-teams{font-size:11px;color:#5f6470;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.me-copy .me-teams b{color:var(--ink);font-weight:700}
.me-div-row{grid-template-columns:52px repeat(2,34px) minmax(78px,auto) minmax(70px,auto)}
.me-div-row .me-stack{display:grid;justify-items:end;gap:0;line-height:1.05}
.me-div-row .me-stack small{font-size:8.5px;font-weight:700;color:var(--muted);letter-spacing:.2px;white-space:nowrap}
.me-div-row .me-elo b{color:#0b72d9}
.me-fantasy .me-owners{font-style:normal;font-size:10px;font-weight:600;color:var(--muted);white-space:nowrap}
@media (max-width:650px){
  .me-div-row{grid-template-columns:40px repeat(2,minmax(0,.8fr)) minmax(0,1.6fr) minmax(0,1.4fr);gap:6px}
  .me-fantasy{display:grid;grid-template-columns:auto 1fr auto;gap:8px}
  .me-fantasy .me-owners{text-align:center}
}

/* Tus estadísticas: cabecera tipo tabla (PJ · PG · RANKING · ELO) y enlaces a los rankings */
.me-div-head span{font-size:8.5px;font-weight:800;letter-spacing:.4px;color:var(--muted)}
.me-div-head em{background:none!important}
.me-div-row [data-goto-ranking]{cursor:pointer}
.me-div-head .me-head-link{color:var(--purple)}.me-div-head .me-head-link.elo{color:#0b72d9}
.me-div-row .me-stack[data-goto-ranking]{border-radius:6px;padding:1px 4px}.me-div-row .me-stack[data-goto-ranking]:hover{background:#f3f0ff}
.me-div-row .me-elo[data-goto-ranking]:hover{background:#e8f2ff}
/* Ficha de jugador: ELO y enlaces */
.pd-rank-link{border:0;background:none;padding:2px 4px;border-radius:6px;cursor:pointer;font:inherit;color:inherit;display:inline-grid;justify-items:center;line-height:1.1}
.pd-rank-link:hover{background:#f3f0ff}.pd-rank-link.elo b{color:#0b72d9}.pd-rank-link.elo:hover{background:#e8f2ff}.pd-rank-link small{font-size:9px;color:var(--muted)}
.pd-rank-links{display:inline-flex;gap:6px;margin-left:10px;vertical-align:middle}
.pd-rank-links button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:3px 10px;font:600 11px "DM Sans";color:var(--purple);cursor:pointer}
.pd-rank-links button+button{color:#0b72d9}.pd-rank-links button:hover{border-color:currentColor}
.player-detail-points{display:grid;gap:6px}
.pd-points-link{border:0;background:none;padding:0;cursor:pointer;display:grid;justify-items:inherit;text-align:inherit;font:inherit;color:inherit}
.pd-points-link.elo b{color:#0b72d9;font-size:18px}
/* Ficha del partido (solo lectura): marcador con caras */
.match-pretty .match-settings-grid,.match-pretty .match-game .game-players,.match-pretty .match-game .score-fields{display:none}
.match-pretty .match-game{padding:6px 10px 10px;margin:10px 0}
.match-pretty .match-game legend{font:700 13px "Space Grotesk";color:var(--purple);padding:0 6px}
.match-pretty .match-jump-nav{flex-wrap:nowrap;overflow-x:auto;gap:5px;padding:8px 16px;scrollbar-width:none}
.match-pretty .match-jump-nav::-webkit-scrollbar{display:none}
.match-pretty .match-jump-nav button{flex:0 0 auto;min-width:0;padding:6px 12px}
.mv-game{display:grid;gap:6px}
.mv-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:7px 9px;border-radius:10px;background:#f7f8fb;border-left:4px solid #5087e8}
.mv-row.away{border-left-color:#e05a5a}
.mv-row.won{background:#eefaf3}
.mv-side{display:grid;gap:5px;min-width:0}
.mv-team{font-size:9.5px;font-weight:800;letter-spacing:.3px;text-transform:uppercase;color:var(--muted)}
.mv-row.won .mv-team{color:#1f7a45}
.mv-player{display:flex;align-items:center;gap:8px;min-width:0}
.mv-player .player-avatar{width:32px;height:32px;min-width:32px;font-size:10px;flex:0 0 auto}
.mv-player span{display:grid;min-width:0}
.mv-player strong{font-size:12.5px;line-height:1.2;color:var(--ink);overflow-wrap:anywhere}
.mv-player small{font-size:10px;color:var(--muted)}
.mv-sets{display:flex;gap:4px}
.mv-sets b{min-width:28px;text-align:center;font:700 16px "Space Grotesk";color:#a0a5b1;background:#fff;border-radius:7px;padding:4px 0}
.mv-sets b.w{color:var(--ink);box-shadow:inset 0 0 0 2px #31a97c}
.mv-empty{margin:4px 0;font-size:12px;color:var(--muted)}
@media (max-width:650px){.pd-rank-links{display:flex;margin:6px 0 0}}

/* Miniaturas de vídeo: si no hay imagen, se ve el recuadro de la plataforma */
.thumb-fallback{display:none}
.no-thumb>img[data-thumb-fallback]{display:none}
.no-thumb>.thumb-fallback,a:not(:has(img[data-thumb-fallback]))>.thumb-fallback{display:grid}
.sheet-videos{display:flex;flex-direction:row;flex-wrap:wrap;gap:6px}
.sheet-video{position:relative;display:block;width:132px;height:74px;border-radius:9px;overflow:hidden;background:linear-gradient(135deg,#2b2350,#6e56db);text-decoration:none;color:#fff;box-shadow:0 2px 6px #0000001f}
.sheet-video img{width:100%;height:100%;object-fit:cover;display:block}
.sheet-video-tile{position:absolute;inset:0;place-items:center;font:700 12px "DM Sans";color:#ffffffcc}
.sheet-video i{position:absolute;top:50%;left:50%;transform:translate(-50%,-62%);width:28px;height:28px;border-radius:50%;background:#000000a6;display:grid;place-items:center;font-style:normal;font-size:12px;padding-left:2px}
.sheet-video small{position:absolute;left:0;right:0;bottom:0;padding:10px 6px 4px;font-size:10px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:linear-gradient(transparent,#000000b3)}
/* Ficha bonita: reservas y árbitro con foto */
.match-pretty #match-reserves,.match-pretty #reserve-summary{display:none}
.mv-reserves{display:grid;gap:10px;margin:6px 0 14px}
.mv-reserves-side{display:grid;gap:6px;padding:8px 10px;border-radius:10px;background:#f7f8fb}
.mv-reserve small{font-size:10px}.mv-reserve.played small{color:#1f7a45;font-weight:600}
.mv-reserve:not(.played){opacity:.75}
.mv-referee{display:flex;align-items:center;gap:10px;margin:-6px 0 12px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:#fff}
.mv-referee-photo{width:44px;height:44px;border-radius:50%;overflow:hidden;flex:0 0 44px;display:grid;place-items:center;background:#1f2430;color:#f6d743;font:700 13px "Space Grotesk";box-shadow:0 0 0 3px #f6d74355}
.mv-referee-photo img{width:100%;height:100%;object-fit:cover}
.mv-referee-copy{display:grid;flex:1;min-width:0}.mv-referee-copy small{font-size:9.5px;font-weight:800;letter-spacing:.4px;color:var(--muted)}.mv-referee-copy strong{font-size:13px}
.mv-referee-edit{font:600 11px "DM Sans";color:var(--purple);border:1px solid var(--line);border-radius:999px;padding:4px 10px;cursor:pointer;white-space:nowrap}

/* Resumen · entrenamientos en tres líneas (tus entrenos, próximos y los que más entrenan, con scroll horizontal) */
.trb-line{display:flex;align-items:center;gap:8px;min-width:0}
.trb-me-line{flex-wrap:wrap;background:#fff1e6;border-radius:10px;padding:7px 10px}
.trb-me-line strong{font-size:12px;font-weight:600;color:#a3591d}.trb-me-line strong b{font:700 16px "Space Grotesk";color:#ef7d3c}
.trb-label{flex:0 0 auto;font-size:9.5px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;color:var(--muted);width:62px;line-height:1.2}
.trb-scroll{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;min-width:0;flex:1;padding:2px 1px 4px;scroll-snap-type:x proximity}
.trb-scroll::-webkit-scrollbar{display:none}
.trb-none{font-size:11px;color:var(--muted)}
.trb-soon-card{flex:0 0 auto;display:flex;align-items:center;gap:7px;border:1px solid var(--line);background:#fff;border-radius:10px;padding:5px 9px 5px 5px;cursor:pointer;font-family:"DM Sans";color:var(--ink);scroll-snap-align:start}
.trb-soon-card:hover{border-color:#f5a65b}
.trb-day{display:grid;justify-items:center;min-width:34px;padding:2px 4px;border-radius:7px;background:#fff1e6;color:#a3591d;font-size:9px;font-weight:700;text-transform:uppercase;line-height:1.1}.trb-day b{font:700 15px "Space Grotesk";color:#ef7d3c}
.trb-soon-copy{display:grid;text-align:left;line-height:1.15}.trb-soon-copy strong{font-size:12px}.trb-soon-copy small{font-size:10px;color:var(--muted);white-space:nowrap}.trb-soon-copy em{font-style:normal;font-size:9.5px;color:#1f7a45}
.trb-rank-card{position:relative;flex:0 0 auto;display:grid;justify-items:center;gap:1px;width:58px;padding:5px 2px 4px;border-radius:10px;scroll-snap-align:start}
.trb-rank-card.me{background:#fff1e6;box-shadow:inset 0 0 0 1.5px #ef7d3c}
.trb-rank-card i{position:absolute;top:2px;left:3px;font:700 9px "Space Grotesk";font-style:normal;color:var(--muted)}
.trb-rank-card img,.trb-rank-face{width:34px;height:34px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:#f1edff;color:var(--purple);font-size:10px;font-weight:700}
.trb-rank-card small{font-size:10px;font-weight:600;max-width:54px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.trb-rank-card b{font:700 13px "Space Grotesk";color:#ef7d3c;line-height:1}
.me-trainings .trb-line+.trb-line{margin-top:2px}

/* Ficha bonita: sin el campo de fecha (ya está en la cabecera) y vídeos en fila */
.match-pretty label[for="match-date"],.match-pretty #match-date,.match-pretty #match-date+.field-hint{display:none}
.mv-comments{margin:4px 0 14px;padding:9px 12px;border-radius:10px;background:#f7f8fb;font-size:12.5px;line-height:1.45;white-space:pre-wrap;scroll-margin-top:60px}
.sheet-media .sheet-videos{display:flex;flex-direction:row;flex-wrap:wrap}
.sheet-videos a.sheet-video{flex:0 0 132px;color:#fff;text-decoration:none}
.sheet-video-tile{place-items:start;padding:7px 8px;font-size:11px}

/* Resumen · partidos en tarjetas con scroll horizontal (próximos y resultados, de todas las ligas y de tu equipo) */
.up-scroll{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x proximity;padding:2px 2px 8px;scrollbar-width:thin;scrollbar-color:#ffffff66 transparent}
.mc-card{flex:0 0 236px;display:flex;flex-direction:column;scroll-snap-align:start;min-width:0}
.mc-main{display:grid;gap:5px;width:100%;border:0;background:none;padding:9px 11px 7px;text-align:left;cursor:pointer;font-family:"DM Sans";color:var(--ink)}
.mc-top{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:600;color:var(--muted)}.mc-top .up-league{padding:2px 6px}
.mc-team{display:flex;align-items:center;gap:7px;min-width:0}
.mc-team strong{flex:1;min-width:0;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mc-team b{font:700 17px "Space Grotesk";color:var(--ink);min-width:16px;text-align:right}
.mc-team.own strong{color:var(--purple)}
.mc-team.lost strong{color:var(--muted);font-weight:600}.mc-team.lost b{color:#a0a5b1}
.mc-porra{margin-top:auto}.mc-porra:empty{display:none}
.mc-card .porra,.mc-card .porra-compact-open{margin:0 8px 8px}
.mc-media{display:flex;gap:4px;margin-left:auto;flex:0 0 auto}
.mc-media-btn{display:inline-flex;align-items:center;gap:2px;padding:1px 6px;border-radius:999px;background:#fff1dc;color:#9a5a00;font-size:11px;line-height:16px;cursor:pointer}
.mc-media-btn b{font:700 10px "DM Sans"}.mc-media-btn:hover{background:#ffe2b3}
.mc-chip{align-self:flex-start;margin:0 11px 6px;font-size:10px;font-weight:700;color:#1f7a45;background:#e3f6ea;border-radius:999px;padding:2px 8px}
.mc-extra{display:flex;align-items:center;justify-content:space-between;gap:6px;margin:0 10px 6px}
.mc-extra .me-badge,.mc-extra .me-next-status{font-size:10px}
.mc-extra .me-next-status{color:var(--muted)}
.me-banner{margin:4px 0 0;padding:10px 10px 4px;border-radius:12px;gap:6px}
.me-banner-head{font-size:10px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:#ffffffe0}.me-banner-head b{color:#fff}
@media (max-width:650px){.mc-card{flex-basis:78%}}
.mc-top{white-space:nowrap;min-width:0}.mc-top .up-league{flex:0 0 auto}.mc-when{overflow:hidden;text-overflow:ellipsis}
/* Resumen · entrenamientos: el calendario con la bola de la E (como en el menú) */
.trb-head{align-items:center}
.trb-ball{width:32px;height:32px;border:0;border-radius:50%;cursor:pointer;color:#fff;font:800 italic 15px/1 "Space Grotesk",sans-serif;background:radial-gradient(circle at 34% 28%,#ffffffcc 0 6%,#f9b06e 24%,#ef7d3c 64%,#c8571c 100%);box-shadow:0 3px 7px #0000002e,inset -3px -4px 7px #0000002b;text-shadow:0 1px 2px #00000040;transition:transform .15s}
.trb-ball:hover{transform:translateY(-1px) rotate(-8deg)}
/* Rankings en móviles estrechos: el nombre completo en dos líneas en vez de cortado */
@media (max-width:650px){
  .ranking-player strong{max-width:none;white-space:normal;overflow:visible;text-overflow:clip;line-height:1.2;overflow-wrap:anywhere}
  .ranking-player small{white-space:normal;line-height:1.2}
  .ranking-table td:nth-child(2){min-width:120px}
}
@media (max-width:650px){.ranking-table{font-size:11px}.ranking-table th,.ranking-table td{padding:7px 2px!important}.ranking-table td:nth-child(2){min-width:0;width:44%}}
@media (max-width:650px){.ranking-player strong{overflow-wrap:normal;word-break:normal;hyphens:none}.ranking-table td:nth-child(2){width:auto}.ranking-table th:nth-child(5),.ranking-table td:nth-child(5){display:none}}
@media (max-width:650px){#board-ranking .table-wrap{margin-left:-12px;margin-right:-12px}.ranking-table td:nth-child(7),.ranking-table th:nth-child(7){padding-right:6px!important}}

/* Entrenamientos · selector de semana con más gracia (barra naranja, flechas como bolas) */
.calendar-toolbar{background:linear-gradient(115deg,#ef7d3c,#f5a65b);border-radius:14px;padding:8px 10px;gap:8px;color:#fff;box-shadow:0 6px 16px #ef7d3c33}
.calendar-toolbar .calendar-arrow{width:36px;height:36px;border:0;border-radius:50%;background:radial-gradient(circle at 34% 28%,#fff 0 8%,#fff4ea 40%,#ffd9bd 100%);color:#c8571c;font:800 20px/1 "Space Grotesk";cursor:pointer;box-shadow:0 3px 7px #00000026;display:grid;place-items:center;transition:transform .15s}
.calendar-toolbar .calendar-arrow:hover{transform:scale(1.08)}
.calendar-toolbar .calendar-arrow:active{transform:scale(.94)}
#training-week-label{display:grid;line-height:1.15;min-width:120px;text-align:center}
#training-week-label b{font:700 16px "Space Grotesk";color:#fff}
#training-week-label small{font-size:10px;font-weight:700;letter-spacing:.3px;color:#ffffffd9;text-transform:uppercase}
.calendar-toolbar #training-today{background:#fff;color:#c8571c;border:0;border-radius:999px;font-weight:700}
.calendar-toolbar #training-today[hidden]{display:none}
.calendar-toolbar .filter-button{background:#ffffffe6;border:0;border-radius:999px;color:#a3591d;font-weight:600}
@media (max-width:900px){
  /* Los 7 días en horizontal con scroll (asoma el siguiente) */
  .training-week{display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(132px,42%);overflow-x:auto;scroll-snap-type:x mandatory;gap:8px;padding-bottom:6px;scrollbar-width:none}
  .training-week::-webkit-scrollbar{display:none}
  .training-day{min-height:170px;scroll-snap-align:start}
  .training-day.today{background:#fffaf5}
}
@media (max-width:650px){
  .calendar-toolbar{flex-wrap:wrap;justify-content:center}
  .calendar-toolbar .toolbar-spacer{display:none}
  .calendar-toolbar .filter-button{flex:1 1 100%;margin:0}
  #training-week-label{flex:1}
}

/* Resumen (escritorio): entrenamientos en una fila entera; filas horizontales arrastrables con el ratón */
@media (min-width:651px){
  .my-stats{grid-template-columns:minmax(0,1fr)}
  .my-stats .me-trainings{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,auto) minmax(0,1fr);grid-template-areas:"head head" "me me" "soon rank";gap:8px 18px}
  .my-stats .me-trainings>.trb-head{grid-area:head;margin:0}
  .my-stats .me-trainings>.trb-me-line{grid-area:me}
  .my-stats .me-trainings>.trb-line:not(.trb-me-line){grid-area:soon}
  .my-stats .me-trainings>.trb-line:not(.trb-me-line)+.trb-line:not(.trb-me-line){grid-area:rank}
  .my-stats .me-trainings>.trb-line+.trb-line{margin-top:0}
  .my-stats .me-trainings>.trb-line:not(.trb-me-line):last-child:nth-child(3){grid-column:1/-1}
}
@media (min-width:651px) and (max-width:1100px){
  .my-stats .me-trainings{grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "me" "soon" "rank"}
}
.up-scroll,.trb-scroll{cursor:grab}
.up-scroll.dragging,.trb-scroll.dragging,.training-week.dragging{cursor:grabbing;scroll-snap-type:none;user-select:none}
.up-scroll.dragging *,.trb-scroll.dragging *{cursor:grabbing}

/* Tarjetas de partido del Resumen: local en azul royal y visitante en rojo, como en el resto de marcadores */
.mc-team.home strong{color:#4169e1}.mc-team.away strong{color:#d94b5b}
.mc-team.own strong{font-weight:800}
.mc-team.lost strong{font-weight:600;opacity:.6}

/* Tu equipo: puesto en la clasificación oficial (barras) y en la virtual (porcentaje) */
.st-icon{width:13px;height:13px;flex:0 0 auto;fill:currentColor;vertical-align:-2px}
svg.st-icon[fill="none"]{fill:none}
.me-team-pos{grid-template-columns:auto auto;align-items:center;column-gap:3px;padding:3px 6px;border-radius:8px;min-width:46px}
.me-team-pos .st-icon{grid-row:1;width:11px;height:11px}
.me-team-pos small{grid-column:1/-1}
.me-team-pos.official{color:var(--purple);background:#f4f1ff}
.me-team-pos.virtual{color:#0b8f86;background:#e6f7f5}.me-team-pos.virtual b{color:#0b8f86}
.me-team-pos:hover{box-shadow:inset 0 0 0 1.5px currentColor}
.me-team-league{gap:7px}
.ranking-chip .st-icon{margin-right:3px}
@media (max-width:420px){.me-team-league .team-form{margin-left:0}}

/* Multimedia: barra de accesos rápidos, filtros y rejilla de fotos y vídeos */
.latest-head-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.mm-quick{border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 12px;font:600 11px "DM Sans";color:var(--ink);cursor:pointer;white-space:nowrap}
.mm-quick:hover{border-color:#0b9fb0}
.mm-quick.active{background:linear-gradient(115deg,#0b9fb0,#2fc6d4);border-color:transparent;color:#fff}
.mm-quick.all{background:#e6f8fa;border-color:#bfeaf0;color:#077180}.mm-quick.all span{font-size:13px}
.mm-quickbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}
.mm-kinds{display:flex;gap:4px;margin-left:auto;background:#eef0f4;border-radius:999px;padding:3px}
.mm-kinds button{border:0;background:none;border-radius:999px;padding:6px 12px;font:600 11px "DM Sans";color:#5f6470;cursor:pointer}
.mm-kinds button b{font-weight:700;color:var(--muted);margin-left:2px}
.mm-kinds button.active{background:#fff;color:#077180;box-shadow:0 1px 4px #0000001a}.mm-kinds button.active b{color:#0b9fb0}
.mm-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:10px;align-items:end;background:linear-gradient(115deg,#0b9fb0,#2fc6d4);border-radius:14px;padding:12px 14px;margin-bottom:12px;box-shadow:0 6px 16px #0b9fb033}
.mm-filters label{display:grid;gap:4px;min-width:0}
.mm-filters label span{font-size:9.5px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:#ffffffd9}
.mm-filters select{width:100%;min-width:0;border:0;border-radius:9px;padding:8px 10px;font:600 12px "DM Sans";color:var(--ink);background:#fff}
.mm-filters select:disabled{opacity:.6}
.mm-clear{border:0;border-radius:999px;background:#ffffff33;color:#fff;font:700 11px "DM Sans";padding:8px 12px;cursor:pointer;white-space:nowrap}
.mm-clear:hover{background:#ffffff55}
.mm-player{display:flex;align-items:center;gap:10px;background:#e6f8fa;border-radius:12px;padding:8px 12px;margin-bottom:10px}
.mm-player>span{display:grid}.mm-player strong{font-size:13px}.mm-player small{font-size:10.5px;color:var(--muted)}
.mm-count{font-size:11px;color:var(--muted);margin:0 0 10px;font-weight:600}
.mm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px 12px}
#multimedia-body .list-more-button{margin-top:18px}
@media (max-width:900px){.mm-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.mm-clear{grid-column:1/-1}}
@media (max-width:650px){.mm-kinds{margin-left:0;width:100%;justify-content:space-between}.mm-kinds button{flex:1}.mm-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 8px}.latest-head-actions .mm-quick{padding:5px 10px}}
/* Bola de Multimedia (M, turquesa) */
@media all{
  .main-nav .nav-item[data-view="multimedia"] .nav-icon{--ball:#0b9fb0;--ball-light:#4fd6e3;--ball-dark:#077180}
  .main-nav .nav-item[data-view="multimedia"] .nav-icon::before{content:"M"}
}
@media (max-width:650px){.main-nav .nav-item[data-view="multimedia"]{order:6}}

/* Gestión · botones de convocar / no disponible: icono + texto; en el móvil, solo el icono en un círculo */
.callup-btn i{font-style:normal;margin-right:3px}
@media (max-width:650px){
  .availability-team li{max-width:100%;align-items:center;flex-wrap:nowrap}
  .availability-team li>small{min-width:0;flex:1}
  .availability-team li .availability-name{min-width:0}
  .callup-btn{flex:0 0 30px;width:30px;height:30px;padding:0;margin-left:2px;display:inline-grid;place-items:center;font-size:14px;line-height:1}
  .callup-btn i{margin:0}
  .callup-btn .cb-text{display:none}
  .callup-btn.on:not(.absence-btn){box-shadow:0 2px 5px #1f9d5555}
  .availability-team li.blocked{display:flex;flex-wrap:wrap;align-items:center}
  .availability-team li.blocked>small{flex:1 1 100%;order:2}
  .availability-team li.blocked .callup-btn{margin:0 0 0 4px}
}
@media (max-width:650px){
  .availability-team li:has(.callup-btn){display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;column-gap:4px;width:100%;border-radius:12px;padding:5px 6px 5px 10px}
  .availability-team li:has(.callup-btn)>small{grid-column:1/-1;grid-row:2;order:0}
  .availability-team li:has(.callup-btn) .availability-name{grid-row:1}
}

/* Equipo (Gestión + Entrenamientos): la bola E naranja; pestañas de Equipo en naranja */
@media all{
  .main-nav .nav-item[data-view="equipos"] .nav-icon{--ball:#ef7d3c;--ball-light:#f9b06e;--ball-dark:#c8571c}
  .main-nav .nav-item[data-view="equipos"] .nav-icon::before{content:"E"}
}
.team-tabs button.active{background:linear-gradient(115deg,#ef7d3c,#f5a65b);border-color:#ef7d3c}
#view-jugadores .page-heading .primary-button{align-self:end}
@media (max-width:650px){.competition-tabs{flex-wrap:nowrap}.competition-tabs button{flex:1 1 auto;padding:8px 8px;white-space:nowrap;font-size:11.5px}}

/* Móvil: barra inferior con el nombre de cada sección debajo de su pelota */
@media (max-width:650px){
  .main-nav .nav-item{flex-direction:column;align-items:center;gap:3px;padding:4px 0 2px;font:700 9.5px/1.1 "DM Sans",sans-serif;letter-spacing:-.1px;color:#6b7080;white-space:nowrap;overflow:hidden}
  .main-nav .nav-item .nav-icon{width:34px;height:34px;flex:0 0 auto}
  .main-nav .nav-item .nav-icon::before{font-size:16px}
  .main-nav .nav-item.active{color:var(--ink)}
  .main-nav .nav-item.active .nav-icon{transform:translateY(-2px)}
  .main-nav #claims-count:not([hidden]){top:1px}
}
@media (max-width:360px){.main-nav .nav-item{font-size:8.5px;letter-spacing:-.3px}}

/* Fantasy: de socios / general */
.fx-kinds{display:inline-flex;gap:4px;padding:4px;margin:0 0 12px;border-radius:999px;background:var(--surface);border:1px solid var(--line)}
.fx-kinds[hidden]{display:none}
.fx-kinds button{border:0;background:transparent;padding:7px 16px;border-radius:999px;font:600 13px "DM Sans";color:var(--ink);opacity:.7;cursor:pointer}
.fx-kinds button.active{background:var(--purple);color:#fff;opacity:1}
.fx-manager-club{margin-left:6px;font-size:10px;font-weight:700;opacity:.6}
.fx-general-toggle{margin:0 0 12px}.fx-general-toggle[hidden]{display:none}
.fx-soon-panel{text-align:center;padding:40px 20px}
.fx-admin{border:1px dashed var(--line);border-radius:10px;padding:8px 12px;background:var(--surface)}
.fx-admin summary{cursor:pointer;font-weight:600;font-size:12px;color:var(--muted)}
.fx-admin[open] summary{margin-bottom:6px}
.fx-maint-tag{margin-left:6px;color:#c96b36;font-size:11px}
/* La barra de pestañas del fantasy se desplaza en el móvil (overflow) y recortaba el contador de sobres: hueco dentro */
#view-fantasy .fx-tabs{padding:8px 8px 2px 2px;margin-top:-8px}
/* Solo el superadmin: ligas, escudos, clubs y equipos rivales, sincronizar con la federación */
body:not(.is-superadmin) .superadmin-only{display:none!important}
.settings-team.synced{background:var(--bg)}.settings-synced{font-size:11px;font-weight:600;color:var(--green)}
.settings-team-locked{margin:4px 0 0;font-size:13px;color:var(--ink)}
/* Fantasy general por ligas */
.fx-league-choose{max-width:640px;margin:0 auto}.fx-league-choose p{color:var(--muted);font-size:14px}
.fx-league-options{display:grid;gap:10px;margin:14px 0}
.fx-league-option{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);cursor:pointer;text-align:left;font:inherit}
.fx-league-option strong{font-size:15px}.fx-league-option small{color:var(--muted);font-size:12px}
.fx-league-option:hover{border-color:var(--green)}.fx-league-option.suggested{border:2px solid var(--green)}
.fx-league-warn{font-size:13px!important;background:var(--bg);border-radius:10px;padding:10px 12px}
.fx-league-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 10px;font-size:13px;color:var(--muted)}
.fx-league-bar b{color:var(--ink)}
.fx-league-change{background:none;border:0;padding:0;color:var(--green);font:inherit;font-size:12px;text-decoration:underline;cursor:pointer}
.fx-welcome-face{width:34px;height:34px;border-radius:50%;object-fit:cover;display:inline-grid;place-items:center;background:var(--purple-light);color:var(--purple);font:700 11px "DM Sans"}

/* Sobre de charla técnica (viernes): tile verde azulado y escena animada del motivador */
.fx-env-mini.charla,.fx-env-tile.charla{background:linear-gradient(135deg,#9df0df,#14a38b 55%,#0b6e5e)}
.fx-env-tile.charla{color:#05352d}
.fx-env-chip.charla{background:#d9f7f0;color:#0b6e5e}
.fx-sobre-talk{position:relative;display:flex;align-items:center;gap:10px;margin:0 0 12px;padding:9px 12px;border-radius:12px;background:#d9f7f0;color:#08453a;font-size:12px;line-height:1.4}
.fx-talk-modal{background:#0d2a26e8}
.fx-talk-stage{display:grid;justify-items:center;gap:14px;width:min(440px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto;padding:20px;border-radius:20px;background:linear-gradient(160deg,#103d36,#0a2522);color:#fff;box-shadow:0 20px 50px #0008}
.fx-talk-coach{display:flex;align-items:center;gap:12px;width:100%}
.fx-talk-coach h2{margin:0;font:700 20px "Space Grotesk"}
.fx-talk-coach p{margin:2px 0 0;font-size:13px;color:#cdeee6}
.fx-talk-coach .eyebrow{color:#7fe0cb;margin:0}
.fx-talk-face{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;object-fit:cover;flex:0 0 auto;background:#ffffff26;border:2px solid #ffffffb0;font:700 15px "Space Grotesk";color:#fff}
.fx-talk-face.coach{width:64px;height:64px;border-color:#7fe0cb;background:linear-gradient(135deg,#f08a3e,#c4501b);font-size:20px}
.fx-talk-list{display:grid;grid-template-columns:1fr;gap:6px;width:100%}
.fx-talk-pick{display:grid;grid-template-columns:40px 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center;text-align:left;padding:8px 10px;border-radius:12px;border:1px solid #ffffff2e;background:#ffffff12;color:#fff;cursor:pointer;transition:transform .15s,background .15s}
.fx-talk-pick .fx-talk-face{grid-row:1/3;width:40px;height:40px;font-size:13px}
.fx-talk-pick strong{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fx-talk-pick small{font-size:11px;color:#cdeee6}
.fx-talk-pick:hover,.fx-talk-pick:focus-visible{background:#14a38b55;transform:translateX(3px)}
.fx-talk-pick.leaving{border-color:#ff8a7a;background:#ff8a7a22}
.fx-talk-later{background:transparent;color:#cdeee6;border-color:#ffffff55}
.fx-talk-scene{position:relative;width:100%;height:230px;border-radius:16px;overflow:hidden;background:linear-gradient(180deg,#2f8f7f 0,#1f6f62 62%,#c8743f 62%,#a85a2c 100%)}
.fx-talk-court{position:absolute;left:0;right:0;bottom:38%;height:3px;background:#ffffffaa}
.fx-talk-actor{position:absolute;bottom:14px;display:grid;justify-items:center;gap:4px;width:110px}
.fx-talk-actor small{font-size:11px;font-weight:700;text-shadow:0 1px 3px #000a;text-align:center;line-height:1.15}
.fx-talk-actor .fx-talk-face{width:72px;height:72px;font-size:22px;box-shadow:0 6px 16px #0006}
.fx-talk-actor.coach{left:8%;animation:fxTalkWalk .7s ease-out both,fxTalkNod .5s ease-in-out .8s 6}
.fx-talk-actor.player{right:8%;animation:fxTalkIn .6s ease-out .2s both}
.fx-talk-emoji{position:absolute;top:-6px;right:12px;font-size:24px;filter:drop-shadow(0 2px 3px #0006)}
.fx-talk-bubble{position:absolute;top:14px;left:12px;right:12px;margin:0 auto;max-width:300px;padding:9px 12px;border-radius:14px;background:#fff;color:#123;font:600 13px "DM Sans";text-align:center;opacity:0;box-shadow:0 6px 16px #0004}
.fx-talk-bubble::after{content:"";position:absolute;bottom:-8px;left:22%;border:8px solid transparent;border-top-color:#fff;border-bottom:0}
.fx-talk-bubble.b0{animation:fxTalkSay 1.25s ease-in-out .7s both}
.fx-talk-bubble.b1{animation:fxTalkSay 1.25s ease-in-out 1.95s both}
.fx-talk-bubble.b2{animation:fxTalkLast .4s ease-out 3.2s both}
.fx-talk-spark{position:absolute;right:calc(8% + 40px);bottom:70px;font-size:20px;color:#ffd84a;opacity:0}
.fx-talk-scene.done .fx-talk-actor.player{animation:fxTalkJump .6s ease-out 2}
.fx-talk-scene.done .fx-talk-actor.coach{animation:none}
.fx-talk-scene.done .fx-talk-spark.s1{animation:fxTalkSpark .9s ease-out both;--sx:-50px;--sy:-70px}
.fx-talk-scene.done .fx-talk-spark.s2{animation:fxTalkSpark .9s ease-out .12s both;--sx:40px;--sy:-80px}
.fx-talk-scene.done .fx-talk-spark.s3{animation:fxTalkSpark .9s ease-out .24s both;--sx:0px;--sy:-100px}
.fx-talk-meter{position:relative;width:100%;height:22px;border-radius:999px;background:#ffffff22;overflow:visible}
.fx-talk-meter-fill{position:absolute;left:0;top:0;bottom:0;border-radius:999px;background:linear-gradient(90deg,#f5b84a,#7be0a0);transition:width 1.2s cubic-bezier(.2,.9,.3,1.2)}
.fx-talk-value{position:absolute;right:10px;top:50%;transform:translateY(-50%);font:700 13px "Space Grotesk";text-shadow:0 1px 2px #0008}
.fx-talk-plus{position:absolute;right:-6px;top:-26px;font:700 16px "Space Grotesk";font-style:normal;color:#7be0a0;opacity:0}
.fx-talk-meter.up .fx-talk-plus{animation:fxTalkPlus 1.4s ease-out both}
.fx-talk-msg{text-align:center}
@keyframes fxTalkWalk{from{transform:translateX(-140px)}to{transform:none}}
@keyframes fxTalkNod{0%,100%{transform:rotate(0)}50%{transform:rotate(-4deg) translateY(-3px)}}
@keyframes fxTalkIn{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}
@keyframes fxTalkSay{0%{opacity:0;transform:translateY(8px) scale(.9)}15%,85%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-6px)}}
@keyframes fxTalkLast{from{opacity:0;transform:translateY(8px) scale(.9)}to{opacity:1;transform:none}}
@keyframes fxTalkJump{0%,100%{transform:none}40%{transform:translateY(-22px) scale(1.06)}}
@keyframes fxTalkSpark{0%{opacity:0;transform:none scale(.4)}30%{opacity:1}100%{opacity:0;transform:translate(var(--sx),var(--sy)) scale(1.3) rotate(90deg)}}
@keyframes fxTalkPlus{0%{opacity:0;transform:translateY(8px) scale(.6)}25%{opacity:1;transform:scale(1.2)}100%{opacity:0;transform:translateY(-14px)}}
@media (prefers-reduced-motion:reduce){.fx-talk-actor,.fx-talk-bubble,.fx-talk-spark,.fx-talk-plus{animation:none!important;opacity:1}.fx-talk-bubble.b0,.fx-talk-bubble.b1{display:none}}

/* Ingresos audiovisuales (patrocinio NETFLIX): aviso por cobrar y animación de la tele */
.fx-tv-banner{display:flex;align-items:center;gap:12px;margin:0 0 14px;padding:10px 12px;border-radius:14px;background:linear-gradient(110deg,#141414,#3a0a0d);color:#fff;box-shadow:0 6px 18px #e5091433;animation:fxTvGlow 2.4s ease-in-out infinite}
.fx-tv-banner>span:nth-child(2){display:grid;flex:1;min-width:0}
.fx-tv-banner small{color:#f3c9cb}
.fx-tv-banner .primary-button{background:#e50914;border-color:#e50914;color:#fff;flex-shrink:0}
.fx-tv-banner-icon{font-size:26px}
.fx-tv-modal{background:#070707ee}
.fx-tv-stage{position:relative;display:grid;justify-items:center;gap:14px;width:min(400px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto;padding:20px;border-radius:20px;background:radial-gradient(circle at 50% 0,#3a0a0d,#101010 70%);color:#fff;text-align:center;box-shadow:0 20px 50px #000a}
.fx-tv-stage .eyebrow{margin:0;color:#ff8a90}
.fx-tv{position:relative;width:min(300px,100%);padding:10px 10px 22px;border-radius:16px;background:#262626;box-shadow:inset 0 0 0 2px #3c3c3c,0 10px 24px #0009}
.fx-tv::after{content:"";position:absolute;left:50%;bottom:-12px;width:90px;height:12px;transform:translateX(-50%);border-radius:0 0 8px 8px;background:#1b1b1b}
.fx-tv-led{position:absolute;right:16px;bottom:8px;width:6px;height:6px;border-radius:50%;background:#e50914;box-shadow:0 0 6px #e50914}
.fx-tv-screen{position:relative;aspect-ratio:16/10;overflow:hidden;border-radius:8px;background:#000}
.fx-tv-static{position:absolute;inset:-50%;background:repeating-radial-gradient(circle at 30% 40%,#fff3 0 1px,#0000 1px 3px),repeating-linear-gradient(0deg,#fff1 0 2px,#0000 2px 4px);animation:fxTvStatic .2s steps(3) infinite,fxTvOff .3s 1.1s forwards}
.fx-tv-line{position:absolute;left:0;right:0;top:50%;height:2px;background:#fff;transform:scaleX(0);box-shadow:0 0 12px #fff;animation:fxTvLine .7s 1.1s ease-out forwards}
.fx-tv-show{position:absolute;inset:0;display:grid;place-content:center;gap:4px;opacity:0;animation:fxTvOn .5s 1.6s ease-out forwards}
.fx-tv-logo{font:900 clamp(30px,10vw,44px)/1 "Bebas Neue","Arial Narrow",Impact,sans-serif;letter-spacing:.06em;color:#e50914;text-shadow:0 0 18px #e5091488;transform:scaleY(1.15);animation:fxTvLogo 1.2s 1.6s ease-out}
.fx-tv-show small{color:#bbb;font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.fx-tv-amount{margin-top:6px;font:800 22px "Space Grotesk";color:#fff;opacity:0}
.fx-tv-stage.paid .fx-tv-amount{animation:fxTvPop .5s ease-out forwards}
.fx-tv-bills{position:relative;width:100%;height:0}
.fx-tv-bills i{position:absolute;left:50%;top:-120px;font-size:24px;font-style:normal;opacity:0}
.fx-tv-stage.paid .fx-tv-bills i{animation:fxTvBill 1.1s calc(.35s + var(--i) * .13s) ease-in forwards}
.fx-tv-cash{display:grid;gap:2px;min-width:180px;padding:10px 18px;border-radius:14px;background:#1f1f1f;box-shadow:inset 0 0 0 1px #333}
.fx-tv-cash small{color:#aaa;font-size:11px;letter-spacing:.08em}
.fx-tv-counter{font:800 26px "Space Grotesk";color:#5fdc8a;font-variant-numeric:tabular-nums}
.fx-tv-counter.bump{animation:fxTvPop .45s ease-out}
.fx-tv-msg{font-size:14px;line-height:1.45}
@keyframes fxTvGlow{50%{box-shadow:0 6px 26px #e5091466}}
@keyframes fxTvStatic{0%{transform:translate(0,0)}33%{transform:translate(-6%,4%)}66%{transform:translate(5%,-3%)}}
@keyframes fxTvOff{to{opacity:0}}
@keyframes fxTvLine{0%{transform:scaleX(0)}55%{transform:scaleX(1);height:2px;opacity:1}100%{transform:scaleX(1);height:100%;top:0;opacity:0}}
@keyframes fxTvOn{to{opacity:1}}
@keyframes fxTvLogo{0%{transform:scale(2.2,2.5);opacity:0;filter:blur(6px)}60%{transform:scale(.95,1.1);opacity:1;filter:none}100%{transform:scaleY(1.15)}}
@keyframes fxTvPop{0%{transform:scale(.6);opacity:0}70%{transform:scale(1.15);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes fxTvBill{0%{opacity:0;transform:translate(calc((var(--i) - 4) * 14px),0) rotate(0)}20%{opacity:1}100%{opacity:0;transform:translate(calc((var(--i) - 4) * -4px),150px) rotate(calc((var(--i) - 4) * 40deg)) scale(.6)}}
@media (prefers-reduced-motion:reduce){
  .fx-tv-banner,.fx-tv-static,.fx-tv-line,.fx-tv-show,.fx-tv-logo,.fx-tv-stage.paid .fx-tv-bills i,.fx-tv-stage.paid .fx-tv-amount,.fx-tv-counter.bump{animation:none}
  .fx-tv-static,.fx-tv-line{display:none}
  .fx-tv-show,.fx-tv-stage.paid .fx-tv-amount{opacity:1}
}

/* Competición → Clubs: clubs plegados; la plantilla distingue ficha / ha jugado en la categoría */
.club-card-header{cursor:pointer;user-select:none}
.club-card-header .club-title{flex:1;min-width:0}
.club-card-count{font-size:11px;color:var(--muted);white-space:nowrap}
.club-card-toggle{color:var(--purple);font-size:14px;transition:transform .2s}
.club-card.open .club-card-toggle{transform:rotate(180deg)}
.club-card:not(.open) .club-teams{display:none}
.club-card:not(.open) .club-card-header{border-bottom:0;padding-bottom:0}
.rivals-list .club-card{padding:16px 21px}
.roster-tag{display:inline-block;padding:1px 6px;border-radius:6px;font-size:9px;font-weight:700;letter-spacing:.02em;vertical-align:1px}
.roster-tag.ficha{background:#eaf7ef;color:#1d7a43}
.roster-tag.guest{background:#fff1dd;color:#a35a00}
.roster-row.guest{background:#fffaf2}
.roster-legend{margin:0 0 6px;font-size:11px;color:var(--muted);line-height:1.6}


/* Entrenamientos: apuntarse (Voy / No voy) y reclamar asistencia */
.attendance-me{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 12px;padding:12px 14px;border-radius:12px;background:#f0edff;border:1px solid #e1ddff}
.attendance-me.locked{background:#f6f7f9;border-color:var(--line)}
.attendance-me>span{display:grid;gap:2px;flex:1;min-width:180px}
.attendance-me strong{font-size:13px}
.attendance-me small{font-size:11px;color:var(--muted)}
.attendance-me .attendance-buttons .voy.active{background:#1d7a43;border-color:#1d7a43;color:#fff}
.attendance-me .attendance-buttons .no_voy.active{background:#8a8f9c;border-color:#8a8f9c;color:#fff}
.attendance-going{margin:0 0 12px;padding:10px 14px;border-radius:12px;background:#eaf7ef}
.attendance-going>strong{font-size:12px;color:#1d7a43}
.attendance-going>strong small{color:var(--muted);font-weight:500}
.attendance-going-faces{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.attendance-going-faces span{display:grid;justify-items:center;gap:2px;width:46px}
.attendance-going-faces img,.attendance-going-faces i{width:32px;height:32px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:#fff;color:#1d7a43;font:700 11px "DM Sans";font-style:normal}
.attendance-going-faces small{font-size:9px;color:#43614f;max-width:46px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.attendance-claims{margin:0 0 12px;padding:10px 14px;border-radius:12px;background:#fff5e6;border:1px solid #ffd9a3}
.attendance-claims>strong{font-size:12px;color:#a35a00}
.attendance-claims .attendance-row{border-top:1px solid #ffe3bd}
.rsvp-tag{font-weight:700}
.rsvp-tag.voy{color:#1d7a43}
.rsvp-tag.no{color:#8a8f9c}
.rsvp-tag.claim{color:#a35a00}
.training-event .rsvp-count,.training-event .claim-count{display:inline-block;margin:3px 4px 0 0;padding:1px 6px;border-radius:6px;font-size:10px;font-style:normal;font-weight:700;background:#eaf7ef;color:#1d7a43}
.training-event .claim-count{background:#fff1dd;color:#a35a00}
.trb-soon-card.going{box-shadow:inset 0 0 0 2px #1d7a43}
.club-card-count b{color:var(--ink)}

/* Club propio en Clubs, «n+x» en las tarjetas de Equipo y caritas en Gestión */
.club-card.own{border-color:#d9d2ff;box-shadow:0 4px 18px #6d4cff1a}
.club-own-tag{padding:2px 7px;border-radius:6px;background:var(--purple);color:#fff;font:700 9px "DM Sans";letter-spacing:.04em}
.team-meta-extra{font-style:normal;font-size:.62em;color:#a35a00;margin-left:1px}
.mini-face{display:inline-grid;place-items:center;width:22px;height:22px;margin-right:6px;border-radius:50%;object-fit:cover;vertical-align:middle;background:#ece9fb;color:var(--purple);font:700 8px "DM Sans";flex-shrink:0}
.availability-name{display:inline-flex;align-items:center;flex-wrap:wrap}
.usage-table .usage-player{position:relative;padding-left:40px}
.usage-table .usage-player .mini-face{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:24px;height:24px;margin:0}

/* Competición → Parejas */
.pair-cell{display:flex;align-items:center;gap:10px;min-width:0}
.pair-faces{display:flex;flex-shrink:0}
.pair-faces .player-avatar{width:30px;height:30px;font-size:10px;border:2px solid #fff;box-shadow:0 1px 3px #0002}
.pair-faces .player-avatar+.player-avatar{margin-left:-10px}
.pair-copy{display:grid;gap:2px;min-width:0;text-align:left}
.pair-names{display:flex;flex-direction:column;align-items:flex-start;gap:1px}
.pair-name{border:0;background:none;padding:0;font:700 12px "DM Sans";color:var(--ink);cursor:pointer;text-align:left}
.pair-name:hover{color:var(--purple)}
.pair-name small{font-weight:600;font-size:10px;color:#0b72d9}
.pair-copy>small{font-size:10px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
