:root{--navy:#0d2b45;--blue:#175c8f;--cyan:#2a9dba;--bg:#f4f7fa;--card:#fff;--line:#dfe7ee;--text:#17212b;--muted:#667787;--ok:#1b7f5a;--warn:#ad6a00;--danger:#b42318;--shadow:0 6px 22px rgba(13,43,69,.08)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:Segoe UI,Arial,sans-serif;color:var(--text);font-size:14px}.topbar{height:64px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:12px;font-weight:800;letter-spacing:.3px}.logo{width:38px;height:38px;border-radius:10px;background:#fff;color:var(--navy);display:grid;place-items:center;font-weight:900}.season-select{display:flex;align-items:center;gap:8px}.season-select select{background:#173e5e;color:#fff;border:1px solid #376784;padding:8px 10px;border-radius:8px}.layout{display:grid;grid-template-columns:220px 1fr;min-height:calc(100vh - 64px)}.sidebar{background:#fff;border-right:1px solid var(--line);padding:18px 12px}.nav a{display:flex;align-items:center;gap:10px;padding:10px 12px;margin:3px 0;border-radius:9px;color:#304455;text-decoration:none;font-weight:600}.nav a:hover{background:#eef5f9;color:var(--navy)}.main{padding:24px;max-width:1500px;width:100%}.page-title{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:18px}.page-title h1{margin:0;font-size:26px;color:var(--navy)}.subtitle{color:var(--muted);margin-top:5px}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:var(--shadow)}.card h2,.card h3{margin:0 0 12px;color:var(--navy)}.metric{font-size:30px;font-weight:800;color:var(--navy)}.metric-label{color:var(--muted);font-size:13px;margin-top:4px}.hero-match{background:linear-gradient(135deg,#0d2b45,#175c8f);color:#fff}.hero-match h2{color:#fff}.hero-match .big{font-size:24px;font-weight:800;margin:8px 0}.hero-match .meta{display:flex;gap:18px;flex-wrap:wrap;color:#dceaf3}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff}table{width:100%;border-collapse:collapse;min-width:720px}th{background:#eef3f7;color:#415666;text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.4px;padding:10px 11px;border-bottom:1px solid var(--line)}td{padding:10px 11px;border-bottom:1px solid #edf1f4;vertical-align:middle}tr:last-child td{border-bottom:0}tr:hover td{background:#fbfdfe}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:9px;padding:9px 13px;font-weight:700;text-decoration:none;cursor:pointer;background:var(--navy);color:#fff}.btn:hover{filter:brightness(1.08)}.btn.secondary{background:#e8f0f5;color:var(--navy)}.btn.ok{background:var(--ok)}.btn.danger{background:var(--danger)}.btn.small{padding:6px 9px;font-size:12px}.actions{display:flex;gap:8px;flex-wrap:wrap}.badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:700;background:#eaf0f4;color:#4d6070}.badge.ok{background:#e7f6ef;color:var(--ok)}.badge.warning{background:#fff3d9;color:var(--warn)}.badge.danger{background:#fde8e6;color:var(--danger)}.badge.muted{background:#eef1f3;color:#65727d}.badge.blue{background:#e3f0f8;color:#175c8f}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.field{display:flex;flex-direction:column;gap:5px}.field.span-2{grid-column:span 2}.field.span-4{grid-column:span 4}label{font-size:12px;color:#586a78;font-weight:700}input,select,textarea{width:100%;border:1px solid #cfdbe4;border-radius:8px;padding:9px 10px;background:#fff;color:var(--text);font:inherit}textarea{min-height:90px;resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid rgba(42,157,186,.2);border-color:var(--cyan)}.check{display:flex;align-items:center;gap:7px}.check input{width:auto}.status-select{min-width:130px}.copybox{background:#0f1d28;color:#e9f2f7;border-radius:10px;padding:14px;white-space:pre-wrap;line-height:1.5;min-height:120px}.alert-list{display:grid;gap:8px}.alert-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-radius:9px;background:#f7f9fb}.alert-item strong{font-size:18px}.empty{padding:35px;text-align:center;color:var(--muted)}.message{padding:12px 14px;border-radius:9px;background:#e7f6ef;color:var(--ok);margin-bottom:14px}.section-title{display:flex;align-items:center;justify-content:space-between;margin:22px 0 10px}.section-title h2{margin:0;color:var(--navy);font-size:19px}.position{font-size:11px;color:var(--muted);font-weight:700}.nowrap{white-space:nowrap}.right{text-align:right}.center{text-align:center}.muted{color:var(--muted)}.danger-text{color:var(--danger)}.warning-text{color:var(--warn)}.ok-text{color:var(--ok)}
@media(max-width:1000px){.layout{grid-template-columns:1fr}.sidebar{display:none}.grid-4,.grid-3,.grid-2{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr 1fr}.field.span-4{grid-column:span 2}.main{padding:16px}}@media(max-width:650px){.topbar{padding:0 12px}.brand span:last-child{display:none}.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.field.span-2,.field.span-4{grid-column:span 1}.main{padding:12px}.page-title{flex-direction:column}.season-select label{display:none}}

.logo-image-wrap{overflow:hidden;background:#fff;padding:2px}.logo-image-wrap img{width:100%;height:100%;object-fit:contain;display:block;border-radius:8px}.dashboard-title-wrap{display:flex;align-items:center;gap:14px}.dashboard-club-logo{width:62px;height:62px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:14px;padding:5px;box-shadow:var(--shadow)}.logo-manager-card{display:flex;align-items:center;gap:20px}.logo-manager-preview{flex:0 0 130px;width:130px;height:130px;border:1px dashed #b9c9d5;border-radius:16px;background:#f8fafc;display:grid;place-items:center;overflow:hidden}.logo-manager-image{width:100%;height:100%;object-fit:contain;padding:8px}.logo-manager-placeholder{width:86px;height:86px;border-radius:18px;background:var(--navy);color:#fff;display:grid;place-items:center;font-size:30px;font-weight:900}.logo-manager-content{flex:1;min-width:0}.logo-upload-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px}.logo-upload-form input[type=file]{max-width:460px}.logo-help{margin-top:8px;color:var(--muted);font-size:12px}.error-message{background:#fde8e6;color:var(--danger)}
@media(max-width:650px){.logo-manager-card{align-items:flex-start;flex-direction:column}.logo-manager-preview{width:108px;height:108px;flex-basis:108px}.dashboard-club-logo{width:52px;height:52px}}


/* V2.4 - vincoli robusti logo e correzione cache/layout */
.brand{min-width:0}
.logo.logo-image-wrap{flex:0 0 40px;width:40px!important;height:40px!important;max-width:40px!important;max-height:40px!important;padding:3px!important;overflow:hidden!important;border-radius:10px!important;background:#fff!important}
.logo.logo-image-wrap img{width:34px!important;height:34px!important;max-width:34px!important;max-height:34px!important;object-fit:contain!important;display:block!important;margin:auto!important}
.dashboard-title-wrap{display:flex!important;align-items:center!important;gap:14px!important;min-height:68px}
.dashboard-club-logo{flex:0 0 68px!important;width:68px!important;height:68px!important;max-width:68px!important;max-height:68px!important;object-fit:contain!important;display:block!important;background:#fff!important;border:1px solid var(--line)!important;border-radius:14px!important;padding:5px!important;box-shadow:var(--shadow)!important}
@media(max-width:650px){.logo.logo-image-wrap{flex-basis:36px;width:36px!important;height:36px!important;max-width:36px!important;max-height:36px!important}.logo.logo-image-wrap img{width:30px!important;height:30px!important;max-width:30px!important;max-height:30px!important}.dashboard-club-logo{flex-basis:54px!important;width:54px!important;height:54px!important;max-width:54px!important;max-height:54px!important}}

/* V2.5 - foto documento fronte/retro in Tesseramenti */
.registrations-table{min-width:1180px}.doc-photo-cell{min-width:300px}.doc-side-row{display:grid;grid-template-columns:48px auto 1fr;align-items:center;gap:7px;margin:4px 0}.doc-side-label{font-size:12px;font-weight:800;color:var(--navy)}.doc-upload-inline{display:inline;margin:0}.hidden-file-input{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;clip-path:inset(50%)!important}.doc-preview-btn{white-space:nowrap;background:var(--blue)}.doc-storage-note{margin-top:12px;color:var(--muted);font-size:12px}.doc-preview-modal{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;padding:24px}.doc-preview-modal.open{display:flex}.doc-preview-backdrop{position:absolute;inset:0;background:rgba(9,25,38,.72);backdrop-filter:blur(2px)}.doc-preview-dialog{position:relative;z-index:1;width:min(980px,94vw);height:min(780px,90vh);background:#fff;border-radius:16px;box-shadow:0 24px 80px rgba(0,0,0,.34);display:flex;flex-direction:column;overflow:hidden}.doc-preview-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;border-bottom:1px solid var(--line);color:var(--navy)}.doc-preview-close{border:0;background:#edf3f7;color:var(--navy);width:36px;height:36px;border-radius:9px;font-size:24px;line-height:1;cursor:pointer}.doc-preview-body{flex:1;min-height:0;padding:18px;background:#eef3f7;display:grid;place-items:center;overflow:auto}.doc-preview-body img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;background:#fff;box-shadow:0 4px 24px rgba(0,0,0,.12)}body.modal-open{overflow:hidden}@media(max-width:650px){.doc-preview-modal{padding:8px}.doc-preview-dialog{width:98vw;height:88vh}.doc-side-row{grid-template-columns:44px auto 1fr}.doc-preview-btn{padding:6px 7px}}

/* V2.6 - Convocazioni: colonna Convocato sempre visibile e flag piu leggibile */
.callups-grid{grid-template-columns:minmax(0,1.8fr) minmax(300px,.8fr);align-items:start}
.callups-table-wrap{width:100%;overflow-x:auto}
.callups-table{width:100%;min-width:0;table-layout:fixed}
.callups-col-player{width:37%}.callups-col-position{width:19%}.callups-col-status{width:27%}.callups-col-selected{width:17%}
.callups-table th,.callups-table td{overflow:hidden;text-overflow:ellipsis}
.callups-table .status-select{width:100%;min-width:0;padding-left:9px;padding-right:30px}
.callup-selected-head,.callup-selected-cell{text-align:center!important;padding-left:8px!important;padding-right:8px!important;overflow:visible!important}
.callup-checkbox-label{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-width:88px;padding:5px 8px;border:1px solid #d5e1e9;border-radius:9px;background:#f8fbfd;color:#405464;font-size:12px;font-weight:700;cursor:pointer;user-select:none;transition:.15s ease}
.callup-checkbox-label:hover{border-color:#9fc5d8;background:#f0f8fb}
.callup-checkbox{width:23px!important;height:23px!important;min-width:23px!important;max-width:23px!important;padding:0!important;margin:0!important;accent-color:var(--blue);cursor:pointer;flex:0 0 23px}
.callup-row.is-selected td{background:#eef8fc}
.callup-row.is-selected .callup-checkbox-label{background:#e2f2f9;border-color:#8cc5dd;color:var(--navy)}
.callup-row.is-selected:hover td{background:#e7f5fb}
@media(max-width:1250px){.callups-grid{grid-template-columns:1fr}.callups-messages{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.callups-table{min-width:650px}.callups-messages{grid-template-columns:1fr}.callup-checkbox-label{min-width:80px}.callup-checkbox-label span{display:none}}

/* V2.8 - evidenza infortuni nelle convocazioni */
.injury-icon{display:none;margin-right:8px;color:#c62828;font-size:18px;line-height:1;vertical-align:-1px;font-weight:900}
.callup-row.is-injured td{background:#fff0f0!important;border-bottom-color:#f3c7c7}
.callup-row.is-injured td:first-child{box-shadow:inset 4px 0 0 #d32f2f}
.callup-row.is-injured:hover td{background:#ffe8e8!important}
.callup-row.is-injured .injury-icon{display:inline-block}
.callup-row.is-injured .status-select{border-color:#e09a9a;background:#fff7f7;color:#a61b1b;font-weight:700}
.callup-row.is-injured .callup-checkbox-label{border-color:#edc5c5}

/* V2.9 - gestione giocatori svincolati */
.roster-summary{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.badge.released{background:#fbe9e7;color:#a61b1b;border:1px solid #efc5c0}
.released-row td{background:#f7f7f7!important;color:#6f777e}
.released-row td:first-child{box-shadow:inset 4px 0 0 #b42318}
.released-row:hover td{background:#f1f1f1!important}
.released-row strong{color:#5f656b}
.roster-actions form,.registration-actions form{display:inline;margin:0}
.roster-table{min-width:1080px}
.registrations-table{min-width:1320px}
.player-status-card{display:flex;align-items:center;justify-content:space-between;gap:18px}
.released-status-card{border-color:#efc5c0;background:#fffafa}
@media(max-width:650px){.player-status-card{align-items:flex-start;flex-direction:column}.roster-summary{width:100%}}

/* V2.11 - donut interattivo per il limite di 18 convocati */
.callup-capacity-card{overflow:hidden}
.callup-capacity-title{align-items:center}
.callup-capacity-content{display:flex;align-items:center;gap:20px;min-width:0}
.callup-donut{--callup-fill:0%;--callup-donut-color:#c77a00;position:relative;flex:0 0 156px;width:156px;height:156px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--callup-donut-color) 0 var(--callup-fill),#e4ebf0 var(--callup-fill) 100%);transition:background .2s ease;box-shadow:inset 0 0 0 1px rgba(13,43,69,.04)}
.callup-donut::after{content:"";position:absolute;inset:17px;border-radius:50%;background:#fff;box-shadow:0 0 0 1px #e6edf2}
.callup-donut-inner{position:relative;z-index:1;display:grid;place-items:center;line-height:1;text-align:center;color:var(--navy)}
.callup-donut-inner strong{font-size:38px;letter-spacing:-1.5px}
.callup-donut-inner span{margin-top:3px;font-size:13px;font-weight:800;color:var(--muted)}
.callup-donut-inner small{margin-top:9px;font-size:14px;font-weight:900;color:var(--callup-donut-color)}
.callup-capacity-copy{min-width:0;display:grid;gap:5px}
.callup-capacity-copy>strong{font-size:18px;color:var(--navy);line-height:1.2}
.callup-capacity-copy .subtitle{margin-top:0;line-height:1.45}
@media(max-width:1380px) and (min-width:1251px){.callup-capacity-content{gap:14px}.callup-donut{flex-basis:128px;width:128px;height:128px}.callup-donut::after{inset:14px}.callup-donut-inner strong{font-size:32px}.callup-capacity-copy>strong{font-size:16px}}
@media(max-width:650px){.callup-capacity-content{align-items:center;gap:14px}.callup-donut{flex-basis:120px;width:120px;height:120px}.callup-donut::after{inset:13px}.callup-donut-inner strong{font-size:30px}.callup-capacity-copy>strong{font-size:16px}}

/* V2.21 - Distinta: layout master UISP replicato dal riferimento fornito */
.lineup-editor-grid{align-items:start}.lineup-savebar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:16px 0}.lineup-preview-card{margin-top:18px}.lineup-preview-heading{margin-top:0}.lineup-preview-warning{margin-top:7px;color:#a61b1b;background:#fff0f0;border:1px solid #efc5c0;border-radius:8px;padding:6px 9px;font-size:12px;font-weight:700}
.official-sheet-wrap{overflow:auto;padding:10px;background:#eef2f5;border-radius:12px;border:1px solid #dce4ea}
.official-sheet{position:relative;width:794px;height:1123px;margin:0 auto;background:#fff;color:#000;border:1px solid #b7b7b7;box-shadow:0 6px 18px rgba(0,0,0,.14);font-family:Arial,Helvetica,sans-serif;overflow:hidden;box-sizing:border-box}
.official-sheet-inner{position:relative;width:100%;height:100%;box-sizing:border-box;background:#fff}
.official-logo-box{position:absolute;left:63px;top:37px;width:174px;height:187px;display:flex;align-items:center;justify-content:center;padding:0;border:0!important;background:#fff}
.official-logo-box img{display:block;max-width:174px;max-height:187px;object-fit:contain}.official-logo-placeholder{width:150px;height:150px;display:grid;place-items:center;border:2px solid #000;font-weight:800;font-size:34px}
.official-meta{position:absolute;left:284px;top:48px;width:495px;height:151px;border:1px solid #000;box-sizing:border-box;background:#fff;display:flex;flex-direction:column}
.official-meta-row{display:grid;box-sizing:border-box;border-bottom:1px solid #000;min-height:0}.official-meta-row:last-child{border-bottom:0}.official-meta-row>*{display:flex;align-items:center;min-width:0;height:100%;box-sizing:border-box;padding:0 7px;border-right:1px solid #000;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.official-meta-row>*:last-child{border-right:0}.official-meta-row>span,.official-meta-row>b{font-weight:800}.official-meta-row>strong{font-weight:400}
.official-meta-title{height:34px;grid-template-columns:135px 1fr}.official-meta-title strong{justify-content:center;font-size:18px;font-weight:800}.official-meta-title span{font-size:14px}
.official-match-row{height:24px;grid-template-columns:135px 165px 34px 1fr}.official-match-row strong{font-size:12px}.official-match-row b{justify-content:center;font-size:13px}.official-match-row span{font-size:13px}
.official-date-row{height:23px;grid-template-columns:135px 165px 34px 1fr}.official-date-row strong{font-size:12px}.official-date-row b{justify-content:center;font-size:13px}.official-date-row span{font-size:13px}
.official-meta-simple{grid-template-columns:135px 1fr}.official-meta-simple:nth-child(4){height:24px}.official-meta-simple:nth-child(5){height:23px}.official-meta-simple:nth-child(6){height:23px}.official-meta-simple span{font-size:13px}.official-meta-simple strong{font-size:12px}
.official-roster-table,.official-staff-table{border-collapse:collapse;table-layout:fixed;box-sizing:border-box;background:#fff;color:#000}
.official-starters-table{position:absolute;left:20px;top:266px;width:758px}.official-roster-table .col-no{width:5.1%}.official-roster-table .col-name{width:33.6%}.official-roster-table .col-cap{width:7.6%}.official-roster-table .col-year{width:8.6%}.official-roster-table .col-card{width:15%}.official-roster-table .col-doc{width:16.4%}.official-roster-table .col-phone{width:13.7%}
.official-roster-table th,.official-roster-table td{box-sizing:border-box;padding:0 5px!important;border-right:1px solid #000!important;border-bottom:1px solid #000!important;background:#fff!important;color:#000!important;font-size:12px!important;font-family:Arial,Helvetica,sans-serif!important;line-height:1!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.official-roster-table th{height:20px;background:#000!important;color:#fff!important;text-align:center!important;font-weight:800!important}.official-starters-table td{height:19px}.official-bench-table{position:absolute;left:20px;top:515px;width:758px}.official-bench-table td{height:19px}.official-roster-table td:first-child,.official-roster-table td:nth-child(3),.official-roster-table td:nth-child(4),.official-roster-table td:nth-child(5),.official-roster-table td:nth-child(6),.official-roster-table td:nth-child(7){text-align:center!important}.official-roster-table td:nth-child(2){text-align:left!important}.official-roster-table tr>*:last-child{border-right:0!important}.official-sheet tr:hover td{background:#fff!important}
.official-section-bar{position:absolute;left:20px;width:758px;height:20px;display:flex;align-items:center;justify-content:center;background:#000;color:#fff;font:800 12px/1 Arial,Helvetica,sans-serif;border:1px solid #000;box-sizing:border-box}.official-bench-bar{top:495px}.official-staff-bar{top:666px;height:21px}
.official-staff-table{position:absolute;left:20px;top:687px;width:758px}.official-staff-table .staff-role{width:23.8%}.official-staff-table .staff-name{width:31.5%}.official-staff-table .staff-card{width:14.6%}.official-staff-table .staff-doc{width:16.4%}.official-staff-table .staff-phone{width:13.7%}.official-staff-table th,.official-staff-table td{height:19px;box-sizing:border-box;border-right:1px solid #000;border-bottom:1px solid #000;padding:0 5px;font:400 12px/1 Arial,Helvetica,sans-serif;vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.official-staff-table th{font-weight:800;text-align:left}.official-staff-table td:nth-child(3),.official-staff-table td:nth-child(4),.official-staff-table td:nth-child(5){text-align:center}.official-staff-table tr>*:last-child{border-right:0}
/* V2.21 - bordo continuo nelle zone indicate sul modello: lati blocco giocatori/dirigenti e fondo */
.official-main-outline{position:absolute;left:20px;top:266px;width:758px;height:516px;box-sizing:border-box;border-left:1px solid #000;border-right:1px solid #000;border-bottom:1px solid #000;pointer-events:none;z-index:4}
.official-footer{position:absolute;left:23px;top:803px;width:755px;height:153px;display:grid;grid-template-columns:371px 384px;border:1px solid #000!important;box-sizing:border-box;background:#fff}.official-signature{border-right:1px solid #000;display:grid;grid-template-rows:48px 1fr}.official-black-label{display:flex;align-items:center;justify-content:center;text-align:center;background:#000;color:#fff;font:800 14px/1.05 Arial,Helvetica,sans-serif}.official-sign-space{background:#fff}.official-referee{display:grid;grid-template-rows:48px 79px 24px}.official-referee>div{box-sizing:border-box;border-bottom:1px solid #000;padding:0 8px;display:flex;align-items:center;font:700 14px/1 Arial,Helvetica,sans-serif}.official-referee .ref-phone{padding:0;display:grid;grid-template-columns:159px 1fr;border-bottom:0}.official-referee .ref-phone strong{height:100%;display:flex;align-items:center;justify-content:center;background:#000;color:#fff}.official-referee .ref-phone span{height:100%;background:#fff;border-left:1px solid #000}
.official-bottom-banner{position:absolute;left:120px;top:964px;width:543px;height:91px;display:flex;align-items:center;justify-content:center;background:#fff;border:0!important;padding:0;overflow:hidden}.official-bottom-banner img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}
@media(max-width:1100px){.official-sheet-wrap{padding:8px}.official-sheet{margin-left:0}}
@media print{
  @page{size:A4 portrait;margin:8mm}
  html,body{margin:0!important;padding:0!important;background:#fff!important;width:auto!important;min-width:0!important}
  .topbar,.sidebar,.page-title,.lineup-editor-grid,.lineup-savebar,.lineup-preview-heading{display:none!important}
  .layout,.main,.lineup-preview-card,.official-sheet-wrap{display:block!important;margin:0!important;padding:0!important;width:auto!important;max-width:none!important;border:0!important;box-shadow:none!important;background:#fff!important;overflow:visible!important}
  .official-sheet{display:block!important;position:relative!important;left:auto!important;top:auto!important;width:194mm!important;height:274.2mm!important;margin:0 auto!important;border:0!important;box-shadow:none!important;transform:scale(.9238)!important;transform-origin:top left!important;overflow:hidden!important}
  body{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
}

/* V2.23 - accessi e ruoli */
.topbar-right{display:flex;align-items:center;gap:18px;margin-left:auto}.user-menu{display:flex;align-items:center;gap:9px;color:#fff;font-size:13px}.user-role-badge{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:4px 8px;background:#d7e8f3;color:#17354a}.user-role-badge.admin{background:#ffe1a6;color:#704500}.user-role-badge.operator{background:#d7f1e3;color:#17613c}.logout-btn{border:1px solid rgba(255,255,255,.35);background:transparent;color:#fff;border-radius:8px;padding:6px 9px;cursor:pointer}.logout-btn:hover{background:rgba(255,255,255,.12)}
.auth-page{margin:0;min-height:100vh;background:linear-gradient(135deg,#0e3048,#154f75 55%,#e7f0f5);font-family:Arial,sans-serif}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{width:min(430px,100%);background:#fff;border-radius:18px;box-shadow:0 24px 70px rgba(4,26,42,.28);padding:28px}.setup-card{width:min(760px,100%)}.auth-brand{display:flex;align-items:center;gap:15px;margin-bottom:22px}.auth-brand img,.auth-logo-fallback{width:62px;height:62px;object-fit:contain;border-radius:13px;background:#f2f7fa}.auth-logo-fallback{display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:900;color:#0e3550}.auth-brand h1{margin:0 0 3px;font-size:25px;color:#0f3048}.auth-form{display:grid;gap:14px}.auth-submit{width:100%;justify-content:center;margin-top:4px}.permission-note{background:#f2f7fa;border-left:4px solid #2a789f;padding:12px 14px;border-radius:8px;color:#345268;line-height:1.45}.operator-note{border-left-color:#2a789f}.access-denied-card{max-width:650px}.access-denied-card h2{margin-top:0}
@media(max-width:850px){.topbar-right{gap:8px}.user-role-badge{display:none}.user-menu strong{display:none}}


/* V2.24 - utenti operativi multipli e convocazioni compatte */
.access-admin-panel{padding:14px;border:1px solid var(--line);border-radius:11px;background:#f8fbfd}.access-admin-panel h3,.operator-add-box h3{margin:0 0 12px;color:var(--navy)}
.access-subtitle{margin-top:18px!important}.operator-users-list{display:grid;gap:9px}.operator-user-row{display:grid;grid-template-columns:minmax(190px,1.15fr) minmax(220px,1.35fr) 130px auto;gap:10px;align-items:end;padding:11px;border:1px solid var(--line);border-radius:11px;background:#fff}.operator-user-row .field{min-width:0}.operator-active-toggle{height:38px;display:flex;align-items:center;gap:8px;padding:0 10px;border:1px solid #d6e0e7;border-radius:8px;background:#f8fbfd;white-space:nowrap}.operator-active-toggle input{width:auto}.operator-user-actions{display:flex;gap:7px;align-items:center;height:38px}.operator-add-box{margin-top:16px;padding:14px;border:1px dashed #a9c5d6;border-radius:11px;background:#f7fbfd}.compact-empty{padding:18px!important;border:1px dashed var(--line);border-radius:10px;background:#fafcfd}
.callups-match-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.callups-match-header h2{margin-bottom:4px}.callups-top-actions{flex:0 0 auto;justify-content:flex-end}.callups-table th{padding-top:7px!important;padding-bottom:7px!important}.callups-table td{padding-top:5px!important;padding-bottom:5px!important}.callups-table .status-select{height:32px;padding-top:4px!important;padding-bottom:4px!important}.callup-checkbox-label{padding:3px 7px!important;min-height:32px;min-width:82px}.callup-checkbox{width:19px!important;height:19px!important;min-width:19px!important;max-width:19px!important;flex-basis:19px!important}.injury-icon{font-size:16px!important;margin-right:6px!important}
@media(max-width:1000px){.operator-user-row{grid-template-columns:1fr 1fr}.operator-user-actions{height:auto}.callups-match-header{align-items:stretch;flex-direction:column}.callups-top-actions{justify-content:flex-start}}
@media(max-width:650px){.operator-user-row{grid-template-columns:1fr}.operator-active-toggle{height:34px}.callups-top-actions .btn{flex:1 1 auto}}


/* V2.25 - Calendario stile Outlook con viste Mese / Settimana / Elenco */
.calendar-page-title{margin-bottom:12px}.outlook-calendar-shell{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}.outlook-calendar-toolbar{min-height:62px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 14px;border-bottom:1px solid var(--line);background:#fff}.calendar-toolbar-left{display:flex;align-items:center;gap:9px;min-width:0}.calendar-new-btn{white-space:nowrap}.calendar-today-btn,.calendar-nav-group button,.calendar-view-button,.calendar-panel-close{border:1px solid #cfdbe4;background:#fff;color:var(--navy);font:700 13px/1 Segoe UI,Arial,sans-serif;cursor:pointer}.calendar-today-btn{height:36px;border-radius:8px;padding:0 13px}.calendar-today-btn:hover,.calendar-nav-group button:hover,.calendar-view-button:hover{background:#eef5f9}.calendar-today-btn:disabled,.calendar-nav-group button:disabled{opacity:.4;cursor:default;background:#f7f9fb}.calendar-nav-group{display:flex;border:1px solid #cfdbe4;border-radius:8px;overflow:hidden}.calendar-nav-group button{width:36px;height:34px;border:0;border-right:1px solid #cfdbe4;font-size:23px;font-weight:400}.calendar-nav-group button:last-child{border-right:0}.calendar-period-title{font-size:20px;font-weight:700;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:4px}.calendar-view-switcher{position:relative;flex:0 0 auto}.calendar-view-button{height:36px;border-radius:8px;padding:0 12px;display:flex;align-items:center;gap:8px}.calendar-view-menu{display:none;position:absolute;right:0;top:42px;z-index:60;width:230px;padding:6px;background:#fff;border:1px solid var(--line);border-radius:11px;box-shadow:0 14px 38px rgba(13,43,69,.18)}.calendar-view-menu.open{display:grid}.calendar-view-menu button{border:0;background:#fff;text-align:left;border-radius:8px;padding:10px 11px;cursor:pointer;color:var(--text);display:grid;gap:2px}.calendar-view-menu button:hover,.calendar-view-menu button.active{background:#edf5fa}.calendar-view-menu button strong{color:var(--navy);font-size:13px}.calendar-view-menu button span{color:var(--muted);font-size:11px}.calendar-view-panel{background:#fff}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:1px solid var(--line);background:#f8fafc}.calendar-weekdays>div{padding:9px 10px;text-align:center;color:#536878;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;border-right:1px solid #edf1f4}.calendar-weekdays>div:last-child{border-right:0}.calendar-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:repeat(6,minmax(112px,1fr));min-height:672px}.calendar-day-cell{min-width:0;padding:6px;border-right:1px solid #e6edf2;border-bottom:1px solid #e6edf2;background:#fff;overflow:hidden}.calendar-day-cell:nth-child(7n){border-right:0}.calendar-day-cell:nth-last-child(-n+7){border-bottom:0}.calendar-day-cell.outside{background:#f8fafb}.calendar-day-cell.outside .calendar-day-number{color:#a4b0b9}.calendar-day-cell.today{background:#f4f9fc}.calendar-day-number{height:24px;display:flex;justify-content:flex-end;align-items:flex-start;color:#415666;font-size:12px;font-weight:700}.calendar-day-cell.today .calendar-day-number span{display:grid;place-items:center;min-width:24px;height:24px;padding:0 5px;border-radius:999px;background:var(--blue);color:#fff}.calendar-day-events{display:grid;gap:4px}.calendar-event{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 22px;border-left:3px solid var(--blue);border-radius:5px;background:#eaf3f9;overflow:hidden;min-width:0}.calendar-event.away{border-left-color:#7b61a8;background:#f1edf7}.calendar-event.played{border-left-color:var(--ok);background:#eaf6f0}.calendar-event-main{min-width:0;text-decoration:none;color:#17354a;padding:5px 4px 5px 6px}.calendar-event-top{display:flex;align-items:center;justify-content:space-between;gap:4px;font-size:9px;font-weight:800;color:#5c7180;text-transform:uppercase}.calendar-event-result{color:var(--ok);font-size:10px}.calendar-event-title{font-size:11px;font-weight:800;line-height:1.18;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}.calendar-vs{color:#748692}.calendar-event-meta{font-size:9px;color:#667b8a;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event-edit{display:flex;align-items:center;justify-content:center;text-decoration:none;color:#607786;font-size:12px;border-left:1px solid rgba(23,92,143,.12)}.calendar-event-edit:hover{background:rgba(255,255,255,.55);color:var(--navy)}.calendar-week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-height:590px}.calendar-week-day{min-width:0;border-right:1px solid var(--line);background:#fff}.calendar-week-day:last-child{border-right:0}.calendar-week-day.today{background:#f7fbfd}.calendar-week-header{height:82px;padding:10px 8px;text-align:center;border-bottom:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center}.calendar-week-header span{font-size:11px;font-weight:800;text-transform:uppercase;color:#667987}.calendar-week-header strong{font-size:24px;line-height:1;color:var(--navy);margin:4px 0}.calendar-week-header small{font-size:10px;color:var(--muted)}.calendar-week-day.today .calendar-week-header strong{width:34px;height:34px;border-radius:999px;background:var(--blue);color:#fff;display:grid;place-items:center}.calendar-week-events{display:grid;gap:8px;padding:9px;align-content:start}.calendar-week-events .calendar-event{grid-template-columns:minmax(0,1fr) 24px}.calendar-week-events .calendar-event-main{padding:8px 6px 8px 8px}.calendar-week-events .calendar-event-title{white-space:normal;font-size:12px}.calendar-week-events .calendar-event-meta{white-space:normal;font-size:10px}.outlook-list-table{border:0;border-radius:0}.calendar-add-panel{scroll-margin-top:82px}.calendar-add-title{margin-top:20px}.calendar-panel-close{width:34px;height:34px;border-radius:8px;font-size:22px;line-height:1}.calendar-panel-close:hover{background:#eef5f9}
@media(max-width:1150px){.outlook-calendar-toolbar{align-items:flex-start}.calendar-toolbar-left{flex-wrap:wrap}.calendar-period-title{flex-basis:100%;order:10;margin-left:0}.calendar-month-grid{grid-template-rows:repeat(6,minmax(102px,1fr));min-height:612px}.calendar-event-edit{display:none}.calendar-event{grid-template-columns:minmax(0,1fr)}}
@media(max-width:780px){.outlook-calendar-toolbar{flex-direction:column;align-items:stretch}.calendar-view-switcher{align-self:flex-end;margin-top:-46px}.calendar-new-btn{padding-left:10px;padding-right:10px}.calendar-month-grid{min-width:760px}.calendar-weekdays{min-width:760px}.calendar-view-panel{overflow-x:auto}.calendar-week-grid{min-width:900px}.calendar-period-title{font-size:18px}.calendar-day-cell{min-height:100px}}

/* V2.26 - aggiornamento software integrato */
.software-update-card{border:1px solid #c8ddd8;background:linear-gradient(135deg,#fff 0%,#f7fbfa 100%)}
.software-update-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:16px}
.software-update-heading h2{margin:2px 0 6px}.update-eyebrow{font-size:11px;letter-spacing:.12em;font-weight:900;color:#157a6e}
.installed-version{flex:0 0 auto;border-radius:999px;background:#0d2b45;color:#fff;padding:8px 13px;font-weight:800;font-size:13px}
.software-update-form{display:flex;align-items:flex-end;gap:16px;padding:15px;border-radius:12px;background:#fff;border:1px solid #dce6eb}
.update-file-picker{flex:1}.update-file-picker label{display:block;font-weight:800;margin-bottom:7px}.update-file-picker input[type=file]{width:100%;padding:9px;border:1px solid #cbd8df;border-radius:8px;background:#fff}
.update-install-btn{white-space:nowrap;min-height:42px;background:#157a6e}.update-install-btn:hover{background:#10685e}
.update-path-line{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;font-size:12px;color:#657785}.update-path-line code{background:#edf3f6;border-radius:6px;padding:5px 8px;color:#29485f}
.update-safety-note{margin-top:12px;font-size:13px;line-height:1.45;color:#536873}.update-inline-status{margin:10px 0 14px;border-radius:9px;padding:10px 12px;font-size:13px}.update-inline-status.success{background:#e8f6f1;color:#176451}.update-inline-status.error{background:#fff0ef;color:#973d38}
.global-update-notice{margin:0;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 22px;font-size:13px;border-bottom:1px solid rgba(0,0,0,.06)}.global-update-notice.success{background:#dff5eb;color:#185f4d}.global-update-notice.error{background:#ffebe9;color:#943934}.global-update-notice div{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.global-update-notice button{border:0;background:transparent;color:inherit;font-size:22px;line-height:1;cursor:pointer;padding:0 4px}
@media(max-width:760px){.software-update-heading,.software-update-form{flex-direction:column;align-items:stretch}.installed-version{align-self:flex-start}.update-install-btn{width:100%}}


/* V2.27 - stato disponibilita immediato nelle convocazioni */
.callup-player-name{display:inline-flex;align-items:center;min-width:0}
.callup-status-icon{display:none;align-items:center;justify-content:center;flex:0 0 20px;width:20px;height:20px;margin-right:7px;border-radius:50%;font-size:13px;line-height:1;font-weight:900}
.callup-row.is-available td{background:#f0faf5;border-bottom-color:#d8eee3}
.callup-row.is-available td:first-child{box-shadow:inset 4px 0 0 #1b7f5a}
.callup-row.is-available:hover td{background:#e8f7f0}
.callup-row.is-available .status-available-icon{display:inline-flex;background:#dff3e9;color:#146947}
.callup-row.is-available .status-select{border-color:#9ed2b9;background:#f7fcf9;color:#146947;font-weight:700}
.callup-row.is-available .callup-checkbox-label{border-color:#abd8c1;background:#edf9f3;color:#146947}
.callup-row.is-unavailable td{background:#fff7e8;border-bottom-color:#f1dfbc}
.callup-row.is-unavailable td:first-child{box-shadow:inset 4px 0 0 #d18400}
.callup-row.is-unavailable:hover td{background:#fff2d9}
.callup-row.is-unavailable .status-unavailable-icon{display:inline-flex;background:#ffe5b5;color:#965c00}
.callup-row.is-unavailable .status-select{border-color:#e7bd74;background:#fffaf1;color:#855200;font-weight:700}
.callup-row.is-unavailable .callup-checkbox-label{border-color:#ead8b8;background:#fffaf2;color:#855200}
.callup-row.is-injured .status-injured-icon{display:inline-flex;background:#f9d8d8;color:#b42318}
.callup-row.is-injured .injury-icon{display:none!important}
.callup-row.is-available.is-selected td{background:#e6f6ee!important}
.callup-row.is-available.is-selected:hover td{background:#dff2e9!important}
@media(max-width:650px){.callup-status-icon{flex-basis:18px;width:18px;height:18px;margin-right:5px;font-size:12px}}


/* V2.28 - doppio indicatore Convocati / Disponibili */
.callup-metrics-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.callup-metric-block{min-width:0;display:grid;justify-items:center;text-align:center;gap:7px;padding:10px 8px 11px;border:1px solid #e2e9ef;border-radius:12px;background:#f9fbfc}
.callup-metric-label{font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.45px;color:var(--muted)}
.callup-donut.callup-donut-compact{flex:0 0 118px;width:118px;height:118px}
.callup-donut.callup-donut-compact::after{inset:13px}
.callup-donut.callup-donut-compact .callup-donut-inner strong{font-size:31px}
.callup-donut.callup-donut-compact .callup-donut-inner span{font-size:11px}
.callup-donut.callup-donut-compact .callup-donut-inner small{font-size:12px;margin-top:7px}
.availability-donut{--callup-donut-color:#2a9dba}
.callup-metric-status{font-size:12px;line-height:1.25;color:var(--navy);min-height:30px;display:flex;align-items:center;justify-content:center}
.callup-capacity-summary{display:grid;gap:4px;margin-top:11px;padding-top:10px;border-top:1px solid #e7edf2}
.callup-capacity-summary .subtitle{margin:0;font-size:12px;line-height:1.35}
@media(max-width:1380px) and (min-width:1251px){.callup-metrics-grid{gap:9px}.callup-metric-block{padding-left:5px;padding-right:5px}.callup-donut.callup-donut-compact{flex-basis:104px;width:104px;height:104px}.callup-donut.callup-donut-compact::after{inset:12px}.callup-donut.callup-donut-compact .callup-donut-inner strong{font-size:28px}}
@media(max-width:420px){.callup-metrics-grid{gap:8px}.callup-metric-block{padding:8px 4px}.callup-donut.callup-donut-compact{flex-basis:100px;width:100px;height:100px}.callup-donut.callup-donut-compact::after{inset:11px}.callup-donut.callup-donut-compact .callup-donut-inner strong{font-size:27px}.callup-metric-status{font-size:11px}}

/* V2.29 - Stato Dirigente e alert disponibilita oltre 18 */
.callup-row.is-management td{background:#f1f3ff!important;border-bottom-color:#d8dcf3}
.callup-row.is-management td:first-child{box-shadow:inset 4px 0 0 #5965b3}
.callup-row.is-management:hover td{background:#e9ecff!important}
.callup-row.is-management .status-management-icon{display:inline-flex;background:#dfe3ff;color:#35418f}
.callup-row.is-management .status-select{border-color:#aeb6e5;background:#f7f8ff;color:#35418f;font-weight:700}
.callup-row.is-management .callup-checkbox-label{border-color:#d2d6ef;background:#f8f8fd;color:#596078}
.callup-row.is-management .callup-checkbox{opacity:.45}
.availability-donut.is-over-limit{box-shadow:0 0 0 4px rgba(180,35,24,.10),inset 0 0 0 1px rgba(180,35,24,.12)}
.callup-metric-status.danger-text{color:#b42318;font-weight:900}
.availability-alert{color:#b42318!important;font-weight:800;padding:5px 7px;border-radius:7px;background:#fff0f0}


/* V2.30 - alert Da rispondere + accesso rapido alla distinta */
.callup-row.is-awaiting td{background:#fffbea!important;border-bottom-color:#eadfae}
.callup-row.is-awaiting td:first-child{box-shadow:inset 4px 0 0 #c89b00}
.callup-row.is-awaiting:hover td{background:#fff6cf!important}
.callup-row.is-awaiting .status-awaiting-icon{display:inline-flex;background:#fff0ad;color:#7b5e00}
.callup-row.is-awaiting .status-select{border-color:#d8c066;background:#fffdf3;color:#715800;font-weight:800}
.callup-row.is-awaiting .callup-checkbox-label{border-color:#e3d599;background:#fffdf5;color:#715800}
.callup-row.is-awaiting .callup-player-name{color:#5d4a00}
.callups-top-actions .btn{white-space:nowrap}
@media(max-width:1100px){.callups-match-header{flex-direction:column}.callups-top-actions{justify-content:flex-start;flex-wrap:wrap}}

/* V2.31 - Distinta visuale stile formazione */
.lineup-matchbar{padding:13px 16px;margin-bottom:16px}.lineup-matchbar-form{display:grid;grid-template-columns:minmax(280px,1.05fr) minmax(280px,1fr);gap:18px;align-items:end}.lineup-match-summary{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;min-height:48px;text-align:right}.lineup-match-summary strong{font-size:16px;color:var(--navy)}.lineup-match-summary strong span{font-size:11px;margin:0 7px;color:var(--muted)}.lineup-match-summary small{margin-top:4px;color:var(--muted)}
.formation-app{display:grid;grid-template-columns:270px minmax(540px,1fr) 290px;gap:16px;align-items:start}.formation-roster-panel,.formation-details-panel{padding:14px}.formation-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}.formation-panel-head h2{margin:0 0 2px;font-size:18px}.formation-panel-head .subtitle{margin:0}.formation-help-dot{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:#e8f0f5;color:var(--navy);font-weight:900;cursor:help}
.formation-search-wrap{position:relative;margin-bottom:10px}.formation-search-wrap span{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:#718493;font-size:17px}.formation-search-wrap input{padding-left:31px;background:#f8fafb}
.formation-roster-list{display:grid;gap:6px;max-height:650px;overflow:auto;padding-right:3px}.formation-player-card{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:8px;border:1px solid #dce6ed;border-radius:10px;background:#fff;min-height:52px;transition:.16s ease;overflow:hidden}.formation-player-card:hover{border-color:#9cb9cc;box-shadow:0 4px 12px rgba(13,43,69,.07)}.formation-player-card.dragging{opacity:.5}.formation-player-card.is-starter{background:#eaf7f0;border-color:#a9d8c3}.formation-player-number-wrap{padding-left:6px}.formation-player-number{width:36px!important;height:36px!important;padding:4px!important;text-align:center;font-weight:900;border-radius:50%!important;background:#f1f5f8!important;color:var(--navy)!important;-moz-appearance:textfield}.formation-player-number::-webkit-outer-spin-button,.formation-player-number::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.formation-player-main{border:0;background:transparent;text-align:left;min-width:0;padding:7px 0;cursor:pointer;color:var(--text)}.formation-player-main strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}.formation-player-main span{display:block;font-size:10px;font-weight:800;color:var(--muted);margin-top:3px}.formation-player-state{margin-right:7px;padding:4px 7px;border-radius:999px;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.25px;background:#edf2f5;color:#617483}.formation-player-state.starter{background:#d6f0e2;color:#176746}.formation-roster-tip{font-size:11px;color:var(--muted);line-height:1.4;padding:10px 2px 0}
.formation-main-panel{display:grid;gap:12px;min-width:0}.formation-toolbar{padding:10px 12px;display:flex;align-items:center;gap:12px;justify-content:space-between}.formation-selector{display:flex;align-items:center;gap:8px}.formation-selector label{font-size:12px}.formation-selector select{width:110px;font-weight:900;color:var(--navy);padding:7px 9px}.formation-toolbar-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:center}.formation-counter{display:flex;align-items:baseline;gap:4px;white-space:nowrap;border-radius:10px;background:#fff6de;color:#8a5c00;padding:7px 10px}.formation-counter strong{font-size:20px}.formation-counter span{font-size:11px;font-weight:800}.formation-counter.complete{background:#e4f5ec;color:#176746}.formation-counter.warning{background:#fff6de;color:#8a5c00}
.football-pitch-shell{display:grid;place-items:center;padding:2px}.football-pitch{position:relative;width:min(100%,720px);aspect-ratio:68/92;border-radius:15px;overflow:hidden;background:#2f9659;box-shadow:0 12px 28px rgba(13,43,69,.16),inset 0 0 0 1px rgba(255,255,255,.25)}.pitch-stripes{position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,.035) 0,rgba(255,255,255,.035) 11.5%,rgba(0,0,0,.028) 11.5%,rgba(0,0,0,.028) 23%)}.pitch-outline{position:absolute;inset:4.5%;border:2px solid rgba(255,255,255,.62)}.pitch-halfway{position:absolute;left:4.5%;right:4.5%;top:50%;height:2px;background:rgba(255,255,255,.62)}.pitch-center-circle{position:absolute;left:50%;top:50%;width:19%;aspect-ratio:1;border:2px solid rgba(255,255,255,.62);border-radius:50%;transform:translate(-50%,-50%)}.pitch-center-dot,.pitch-penalty-dot{position:absolute;width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.78);transform:translate(-50%,-50%)}.pitch-center-dot{left:50%;top:50%}.pitch-penalty-dot{left:50%}.pitch-penalty-dot-top{top:13%}.pitch-penalty-dot-bottom{top:87%}.pitch-box{position:absolute;left:22%;width:56%;height:17%;border:2px solid rgba(255,255,255,.62)}.pitch-box-top{top:4.5%;border-top:0}.pitch-box-bottom{bottom:4.5%;border-bottom:0}.pitch-goal-box{position:absolute;left:37%;width:26%;height:8%;border:2px solid rgba(255,255,255,.62)}.pitch-goal-box-top{top:4.5%;border-top:0}.pitch-goal-box-bottom{bottom:4.5%;border-bottom:0}.pitch-goal{position:absolute;left:43%;width:14%;height:1.8%;border:2px solid rgba(255,255,255,.7)}.pitch-goal-top{top:2.7%;border-bottom:0}.pitch-goal-bottom{bottom:2.7%;border-top:0}
.formation-slot{position:absolute;z-index:3;width:118px;min-height:80px;transform:translate(-50%,-50%);display:grid;place-items:center;text-align:center;cursor:pointer;border-radius:12px;transition:.16s ease}.formation-slot:hover,.formation-slot.active{background:rgba(255,255,255,.12);box-shadow:0 0 0 2px rgba(255,255,255,.5)}.formation-slot.drag-over{background:rgba(255,255,255,.24);box-shadow:0 0 0 3px #fff}.formation-slot-empty{display:grid;justify-items:center;gap:2px}.formation-slot-plus{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.95);display:grid;place-items:center;color:#23784a;font-size:26px;font-weight:500;box-shadow:0 3px 9px rgba(0,0,0,.15)}.formation-slot-empty small{font-size:9px;font-weight:900;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.35)}.formation-slot-player{position:relative;display:grid;justify-items:center;gap:1px;width:110px}.formation-slot-avatar{width:43px;height:43px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#0d2b45,#1c6599);color:#fff;border:3px solid rgba(255,255,255,.95);font-size:17px;font-weight:900;box-shadow:0 5px 12px rgba(0,0,0,.2)}.formation-slot-player strong{max-width:108px;background:rgba(255,255,255,.96);color:#0d2b45;border-radius:7px;padding:3px 7px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 2px 7px rgba(0,0,0,.15)}.formation-slot-player small{font-size:8px;color:#fff;font-weight:800;text-shadow:0 1px 3px rgba(0,0,0,.55)}.formation-slot-role{position:absolute;right:15px;top:0;min-width:22px;height:18px;border-radius:999px;display:grid;place-items:center;background:#fff1bc;color:#684d00;font-size:8px;font-weight:900;border:1px solid rgba(104,77,0,.18)}.formation-slot-remove{position:absolute;left:13px;top:0;width:19px;height:19px;border:0;border-radius:50%;background:#fff;color:#a61b1b;font-weight:900;cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.18);line-height:1;padding:0}.formation-slot-remove:hover{background:#fde8e6}
.formation-bench-panel{padding:12px 14px}.formation-bench-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:9px}.formation-bench-head h3{margin:0;font-size:16px}.formation-bench-head .subtitle{font-size:11px}.formation-bench-strip{display:flex;gap:7px;overflow-x:auto;padding:3px 1px 6px;min-height:55px}.formation-bench-player{flex:0 0 auto;border:1px solid #dbe5ec;border-radius:9px;background:#f8fafb;color:var(--navy);display:grid;grid-template-columns:25px auto 18px;align-items:center;gap:6px;padding:6px 8px;cursor:pointer}.formation-bench-player:hover{background:#edf5f8;border-color:#a6c0d0}.formation-bench-player>span{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:#e2ebf1;font-weight:900;font-size:11px}.formation-bench-player strong{font-size:11px;white-space:nowrap}.formation-bench-player small{font-size:9px;font-weight:900;color:var(--muted)}.formation-bench-panel .lineup-preview-warning{margin-top:7px}
.formation-details-panel{position:sticky;top:80px}.formation-detail-section{display:grid;gap:5px;margin-bottom:11px}.formation-detail-section.compact{margin-bottom:8px}.formation-detail-section select{padding:7px 8px;font-size:12px}.formation-detail-divider{height:1px;background:#e6edf2;margin:14px 0}.formation-staff-title{font-size:14px!important;margin-bottom:9px!important}.formation-staff-list{display:grid}.formation-staff-empty{padding:18px 5px;font-size:12px}.formation-save-box{margin-top:16px;padding-top:14px;border-top:1px solid #e6edf2;display:grid;gap:7px}.formation-save-btn{width:100%}.formation-save-box small{color:var(--muted);font-size:10px;text-align:center;line-height:1.35}
.lineup-preview-collapsible{padding:0;overflow:hidden}.lineup-preview-summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:15px;padding:16px 18px;cursor:pointer}.lineup-preview-summary::-webkit-details-marker{display:none}.lineup-preview-summary>div{display:grid;gap:3px}.lineup-preview-summary strong{font-size:16px;color:var(--navy)}.lineup-preview-summary span{font-size:11px;color:var(--muted)}.lineup-preview-summary-action{background:#e8f0f5!important;color:var(--navy)!important;padding:6px 9px;border-radius:8px;font-weight:800}.lineup-preview-collapsible[open] .lineup-preview-summary{border-bottom:1px solid var(--line)}.lineup-preview-collapsible[open] .lineup-preview-summary-action{font-size:0}.lineup-preview-collapsible[open] .lineup-preview-summary-action:after{content:'Nascondi anteprima';font-size:11px}.lineup-preview-content{padding:12px 18px 18px}
@media(max-width:1280px){.formation-app{grid-template-columns:245px minmax(500px,1fr)}.formation-details-panel{grid-column:1/-1;position:static;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.formation-details-panel>.formation-panel-head,.formation-details-panel>.formation-detail-divider,.formation-details-panel>.formation-staff-title{grid-column:1/-1}.formation-staff-list{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 10px}.formation-save-box{grid-column:1/-1}}
@media(max-width:900px){.lineup-matchbar-form{grid-template-columns:1fr}.lineup-match-summary{align-items:flex-start;text-align:left}.formation-app{grid-template-columns:1fr}.formation-roster-list{max-height:320px}.formation-details-panel{grid-template-columns:1fr 1fr}.formation-staff-list{grid-template-columns:1fr 1fr}.formation-toolbar{flex-wrap:wrap}.football-pitch{width:min(100%,640px)}}
@media(max-width:620px){.lineup-page-actions{width:100%}.lineup-page-actions .btn{flex:1}.formation-details-panel{grid-template-columns:1fr}.formation-staff-list{grid-template-columns:1fr}.formation-toolbar{align-items:stretch}.formation-toolbar-actions{order:3;width:100%}.formation-toolbar-actions .btn{flex:1}.football-pitch{border-radius:10px}.formation-slot{width:88px;min-height:68px}.formation-slot-player{width:84px}.formation-slot-avatar{width:36px;height:36px;font-size:14px}.formation-slot-player strong{max-width:82px;font-size:9px;padding:3px 5px}.formation-slot-player small{display:none}.formation-slot-role{right:8px}.formation-slot-remove{left:7px}.formation-bench-player{grid-template-columns:23px auto 16px;padding:5px 6px}}
@media print{.formation-app,.lineup-matchbar,.lineup-preview-summary{display:none!important}.lineup-preview-collapsible:not([open])>.lineup-preview-content{display:block!important}}


/* V2.32 - Distinta più compatta: campo vicino ai convocati e dettagli sotto la rosa */
.formation-app{
  grid-template-columns:300px minmax(0,560px);
  column-gap:10px;
  row-gap:12px;
  justify-content:start;
  align-items:start;
}
.formation-roster-panel{grid-column:1;grid-row:1}
.formation-main-panel{grid-column:2;grid-row:1 / span 2;width:100%;max-width:560px}
.formation-details-panel{
  grid-column:1;
  grid-row:2;
  position:static;
  display:block;
  align-self:start;
  padding:14px;
}
.formation-details-panel>.formation-panel-head,
.formation-details-panel>.formation-detail-divider,
.formation-details-panel>.formation-staff-title,
.formation-details-panel>.formation-staff-list,
.formation-details-panel>.formation-save-box{grid-column:auto}
.formation-staff-list{display:grid;grid-template-columns:1fr;gap:0}
.football-pitch-shell{place-items:start center;padding:0}
.football-pitch{width:min(100%,500px)}
.formation-bench-panel{max-width:560px}

@media(max-width:1000px){
  .formation-app{grid-template-columns:280px minmax(0,520px);column-gap:9px}
  .formation-main-panel{max-width:520px}
  .football-pitch{width:min(100%,470px)}
}
@media(max-width:860px){
  .formation-app{grid-template-columns:1fr;gap:12px}
  .formation-roster-panel{grid-column:1;grid-row:1}
  .formation-details-panel{grid-column:1;grid-row:2;display:block}
  .formation-main-panel{grid-column:1;grid-row:3;max-width:none}
  .formation-roster-list{max-height:320px}
  .football-pitch-shell{place-items:center}
  .football-pitch{width:min(100%,500px)}
  .formation-staff-list{grid-template-columns:1fr 1fr;gap:0 10px}
}
@media(max-width:620px){
  .formation-staff-list{grid-template-columns:1fr}
  .football-pitch{width:min(100%,460px)}
}

/* V2.33 - Distinta: convocati compatti, panchina su due righe, anteprima a destra */
.formation-app{
  grid-template-columns:minmax(290px,310px) minmax(450px,500px) minmax(280px,340px);
  column-gap:9px;
  row-gap:12px;
  justify-content:start;
  align-items:start;
}
.formation-roster-panel{grid-column:1;grid-row:1;padding:11px}
.formation-main-panel{grid-column:2;grid-row:1 / span 2;width:100%;max-width:500px}
.formation-details-panel{grid-column:1;grid-row:2;position:static;padding:12px}
.formation-preview-panel{
  grid-column:3;
  grid-row:1 / span 2;
  align-self:start;
  min-width:0;
  padding:0;
  overflow:hidden;
  position:sticky;
  top:76px;
}

/* Tutti i convocati visibili senza scrollbar interna. Due colonne compatte. */
.formation-roster-list{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:5px;
  max-height:none;
  overflow:visible;
  padding-right:0;
}
.formation-player-card{
  position:relative;
  grid-template-columns:30px minmax(0,1fr);
  min-height:40px;
  gap:4px;
  border-radius:8px;
  padding-right:3px;
}
.formation-player-number-wrap{padding-left:3px}
.formation-player-number{width:27px!important;height:27px!important;font-size:11px!important;padding:2px!important}
.formation-player-main{padding:4px 16px 4px 0;line-height:1.05}
.formation-player-main strong{display:flex;align-items:center;gap:5px;font-size:11px;min-width:0}
.formation-player-main span:not(.formation-role-dot){font-size:8px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.formation-player-state{display:none}
.formation-player-card.is-starter::after{
  content:'T';
  position:absolute;
  right:3px;
  top:3px;
  width:15px;
  height:15px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:#1b7f5a;
  color:#fff;
  font-size:8px;
  font-weight:900;
}
.formation-roster-tip{padding-top:7px;font-size:10px}
.formation-panel-head{margin-bottom:8px}
.formation-search-wrap{margin-bottom:7px}
.formation-search-wrap input{padding-top:7px;padding-bottom:7px}

/* Pallino ruolo: portieri arancione, difensori verde, centrocampisti azzurro, attaccanti rosso. */
.formation-role-dot{display:inline-block!important;flex:0 0 9px;width:9px;height:9px;border-radius:50%;margin:0!important;box-shadow:0 0 0 1px rgba(13,43,69,.12)}
.formation-role-dot.role-portiere{background:#f39a2e}
.formation-role-dot.role-difensore{background:#35a66f}
.formation-role-dot.role-centrocampista{background:#35aee2}
.formation-role-dot.role-attaccante{background:#dc4a4a}
.formation-role-dot.role-altro{background:#9ba8b2}

/* Campo leggermente compatto e panchina disposta su due righe (7/8 elementi). */
.football-pitch{width:min(100%,485px)}
.formation-bench-panel{max-width:500px;padding:10px 12px}
.formation-bench-strip{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:6px;
  overflow:visible;
  min-height:0;
  padding:2px 0 4px;
}
.formation-bench-player{
  min-width:0;
  width:100%;
  grid-template-columns:23px minmax(0,1fr) 14px;
  gap:5px;
  padding:5px 6px;
}
.formation-bench-player>span{width:23px;height:23px;font-size:10px}
.formation-bench-player strong{font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.formation-bench-player small{font-size:8px}

/* Anteprima ufficiale sempre a destra del campo e ridimensionata al pannello. */
.formation-preview-panel .lineup-preview-summary{padding:11px 12px}
.formation-preview-panel .lineup-preview-summary strong{font-size:14px}
.formation-preview-panel .lineup-preview-summary span{font-size:10px}
.formation-preview-panel .lineup-preview-content{padding:8px 10px 10px}
.formation-preview-panel .lineup-preview-heading{margin:0 0 7px;gap:6px}
.formation-preview-panel .lineup-preview-heading .btn{padding:6px 8px;font-size:10px}
.formation-preview-panel .official-sheet-wrap{
  width:100%;
  padding:0;
  overflow:hidden;
  border-radius:8px;
  min-height:0;
}
.formation-preview-panel .official-sheet{margin:0!important;transform-origin:top left}
.formation-preview-panel .lineup-preview-warning{font-size:10px;padding:5px 6px;margin:0}

@media(max-width:1320px){
  .formation-app{grid-template-columns:300px minmax(0,500px);column-gap:9px}
  .formation-roster-panel{grid-column:1;grid-row:1}
  .formation-details-panel{grid-column:1;grid-row:2}
  .formation-main-panel{grid-column:2;grid-row:1 / span 2;max-width:500px}
  .formation-preview-panel{grid-column:2;grid-row:3;position:static;max-width:500px;width:100%}
}
@media(max-width:860px){
  .formation-app{grid-template-columns:1fr;gap:12px}
  .formation-roster-panel{grid-column:1;grid-row:1}
  .formation-details-panel{grid-column:1;grid-row:2}
  .formation-main-panel{grid-column:1;grid-row:3;max-width:none}
  .formation-preview-panel{grid-column:1;grid-row:4;max-width:none;width:100%}
  .football-pitch{width:min(100%,485px)}
}
@media(max-width:620px){
  .formation-roster-list{grid-template-columns:1fr}
  .formation-bench-strip{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* V2.34 - Formazione: colori squadra e stato Allenatore */
.formation-slot-avatar{
  background:linear-gradient(145deg,#35b8e6,#249dce)!important;
  color:#0d2b45!important;
  border:3px solid #f4d43a!important;
  box-shadow:0 5px 12px rgba(0,0,0,.22),0 0 0 1px rgba(13,43,69,.16)!important;
}
.callup-row.is-coach td{background:#fffbea!important;border-bottom-color:#eadb87}
.callup-row.is-coach td:first-child{box-shadow:inset 4px 0 0 #f4c430}
.callup-row.is-coach:hover td{background:#fff4bf!important}
.callup-row.is-coach .status-coach-icon{display:inline-flex;background:#0d2b45;color:#f4d43a;border:1px solid #f4d43a}
.callup-row.is-coach .status-select{border-color:#d2b535;background:#fffdf0;color:#0d2b45;font-weight:800}
.callup-row.is-coach .callup-checkbox-label{border-color:#e5d998;background:#fffdf5;color:#6c6470}
.callup-row.is-coach .callup-checkbox{opacity:.45}


/* V2.35 - Distinta: convocati più leggibili, cognomi sul campo, anteprima più grande */
@media(min-width:1321px){
  .formation-app{
    grid-template-columns:minmax(370px,390px) minmax(445px,475px) minmax(395px,430px);
    column-gap:10px;
  }
  .formation-main-panel{max-width:475px}
  .formation-bench-panel{max-width:475px}
  .football-pitch{width:min(100%,465px)}
  .formation-preview-panel{min-width:395px;max-width:430px;width:100%}
}
.formation-roster-panel{padding:13px}
.formation-roster-list{gap:6px}
.formation-player-card{min-height:44px;grid-template-columns:32px minmax(0,1fr);gap:6px;padding-right:4px}
.formation-player-number{width:29px!important;height:29px!important;font-size:11px!important}
.formation-player-main{padding:5px 17px 5px 0}
.formation-player-main strong{
  font-size:12px;
  white-space:normal;
  overflow:visible;
  text-overflow:clip;
  line-height:1.12;
}
.formation-player-main span:not(.formation-role-dot){font-size:8.5px}
.formation-role-dot{flex-basis:10px;width:10px;height:10px}
.formation-preview-panel .lineup-preview-summary{padding:13px 14px}
.formation-preview-panel .lineup-preview-summary strong{font-size:15px}
.formation-preview-panel .lineup-preview-summary span{font-size:10.5px}
.formation-preview-panel .lineup-preview-content{padding:10px 12px 12px}
.formation-preview-panel .lineup-preview-heading .btn{padding:7px 9px;font-size:10.5px}
@media(max-width:1320px) and (min-width:861px){
  .formation-roster-panel{min-width:320px}
  .formation-roster-list{grid-template-columns:repeat(2,minmax(0,1fr))}
}


/* V2.36 - selettore 1/2 colonne convocati */
.formation-roster-head-actions{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.roster-columns-toggle{padding:5px 7px!important;font-size:9px!important;white-space:nowrap}
.formation-roster-list.roster-one-column{grid-template-columns:1fr!important}
.formation-roster-list.roster-two-columns{grid-template-columns:repeat(2,minmax(0,1fr))!important}
/* Sul campo: solo numero, cognome e sigla della posizione tattica. */
.formation-slot-player>small{display:none!important}
@media(max-width:620px){.formation-roster-list.roster-two-columns{grid-template-columns:1fr!important}.roster-columns-toggle{display:none}}

/* V2.38 - logo istituzionale UISP Pescara nella schermata di accesso */
.auth-brand .uisp-login-logo{width:72px;height:72px;flex:0 0 72px;object-fit:contain;border-radius:50%;background:transparent;box-shadow:0 5px 16px rgba(4,26,42,.16)}
@media(max-width:650px){.auth-brand .uisp-login-logo{width:64px;height:64px;flex-basis:64px}}


/* V2.39 - Campi e località */
.venue-location-card .section-title{align-items:flex-start}
.venue-location-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;margin-top:14px}
.venue-location-row{display:grid;grid-template-columns:minmax(0,1fr) 130px;gap:10px;align-items:center;padding:8px 10px;border:1px solid #dbe5ec;border-radius:10px;background:#f8fbfd}
.venue-location-row strong{font-size:13px;line-height:1.2}
.venue-location-row select{width:100%;padding:7px 8px;border:1px solid #cad8e2;border-radius:8px;background:#fff;font-weight:700}
.venue-location-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:12px}
@media (max-width:900px){.venue-location-grid{grid-template-columns:1fr}.venue-location-actions{align-items:stretch;flex-direction:column}.venue-location-actions .btn{width:100%}}


/* V2.40 - Impostazioni compatte e appuntamento automatico */
.settings-compact{display:grid;gap:10px}
.settings-compact>.card,.settings-compact>.grid{margin-top:0!important;margin-bottom:0!important}
.settings-compact .card{padding:13px 14px;border-radius:11px}
.settings-compact h2{font-size:16px;margin-top:0;margin-bottom:5px}
.settings-compact h3{font-size:13px;margin:5px 0 7px}
.settings-compact .subtitle,.settings-compact .logo-help{font-size:10.5px;line-height:1.35}
.settings-compact .section-title{margin:8px 0 7px}
.settings-compact .section-title h2{font-size:16px}
.settings-compact .form-grid{gap:7px 9px}
.settings-compact .field{gap:3px}
.settings-compact label{font-size:10.5px}
.settings-compact input,.settings-compact select,.settings-compact textarea{padding:6px 8px;border-radius:7px;font-size:12px}
.settings-compact textarea{min-height:64px}
.settings-compact .btn{padding:7px 10px;font-size:11px;border-radius:8px}
.settings-compact .btn.small{padding:5px 8px;font-size:10px}
.settings-compact .software-update-heading{margin-bottom:8px;gap:12px}
.settings-compact .software-update-heading h2{margin:1px 0 3px}
.settings-compact .installed-version{padding:6px 10px;font-size:11px}
.settings-compact .software-update-form{gap:10px;padding:9px;border-radius:9px}
.settings-compact .update-file-picker label{margin-bottom:4px}
.settings-compact .update-file-picker input[type=file]{padding:6px;font-size:11px}
.settings-compact .update-path-line,.settings-compact .update-safety-note{margin-top:7px;font-size:10.5px}
.settings-compact .permission-note{padding:8px 10px;font-size:10.5px;margin:9px 0!important}
.settings-compact .access-admin-panel{padding:0}
.settings-compact .operator-users-list{gap:6px}
.settings-compact .operator-user-row{padding:7px 8px;gap:7px}
.settings-compact .operator-add-box{margin-top:9px;padding-top:9px}
.settings-compact .logo-manager-card{gap:12px;align-items:center}
.settings-compact .logo-manager-preview{width:82px;height:82px;flex-basis:82px;border-radius:11px}
.settings-compact .logo-upload-form{gap:7px;margin-top:7px}
.settings-compact .venue-location-grid{gap:5px 8px;margin-top:8px}
.settings-compact .venue-location-row{grid-template-columns:minmax(0,1fr) 112px;gap:7px;padding:5px 7px;border-radius:8px}
.settings-compact .venue-location-row strong{font-size:11px}
.settings-compact .venue-location-row select{padding:5px 6px;font-size:11px}
.settings-compact .venue-location-actions{gap:10px;margin-top:7px}
.settings-compact .alert-item{padding:7px 9px}
.settings-compact .alert-item strong{font-size:13px}
.settings-compact code{font-size:10.5px}
input[readonly][type=time]{background:#f3f7fa;color:#405b6d;font-weight:800}
@media(max-width:760px){.settings-compact .logo-manager-preview{width:72px;height:72px;flex-basis:72px}}

/* V2.41 - esiti calendario e sezione Finanziaria */
.outcome-choice-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
.outcome-choice{position:relative;cursor:pointer}
.outcome-choice input{position:absolute;opacity:0;pointer-events:none}
.outcome-choice span{display:flex;align-items:center;justify-content:center;min-height:38px;border:1px solid #cedae3;border-radius:9px;background:#fff;font-size:11px;font-weight:800;color:#536878;transition:.15s ease}
.outcome-choice input:checked+span{box-shadow:0 0 0 2px rgba(13,43,69,.08)}
.outcome-choice.win input:checked+span{background:#e5f6ec;border-color:#56b77d;color:#196a3d}
.outcome-choice.draw input:checked+span{background:#eef1f3;border-color:#9ea9b1;color:#4f5d67}
.outcome-choice.loss input:checked+span{background:#fde9e8;border-color:#df746f;color:#9b2f2b}
.outcome-choice.none input:checked+span{background:#edf5fa;border-color:#8bb7d2;color:#245f83}
.calendar-event.outcome-win{border-left-color:#2d9b61!important;background:#e7f6ed!important}
.calendar-event.outcome-draw{border-left-color:#7d8991!important;background:#eef1f3!important}
.calendar-event.outcome-loss{border-left-color:#d84f49!important;background:#fdebea!important}
.calendar-event.outcome-win .calendar-event-result{color:#196a3d}
.calendar-event.outcome-draw .calendar-event-result{color:#596770}
.calendar-event.outcome-loss .calendar-event-result{color:#a1322e}
.outlook-list-table tr.calendar-list-win td{background:#edf8f1}
.outlook-list-table tr.calendar-list-draw td{background:#f2f4f5}
.outlook-list-table tr.calendar-list-loss td{background:#fff0ef}
.outlook-list-table tr.calendar-list-win td:first-child{box-shadow:inset 4px 0 0 #2d9b61}
.outlook-list-table tr.calendar-list-draw td:first-child{box-shadow:inset 4px 0 0 #7d8991}
.outlook-list-table tr.calendar-list-loss td:first-child{box-shadow:inset 4px 0 0 #d84f49}

.finance-page-title{margin-bottom:12px}
.finance-metrics{margin-bottom:12px}
.finance-metric-card{padding:16px;position:relative;overflow:hidden}
.finance-metric-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#8aa1b1}
.finance-metric-card.income:before{background:#2d9b61}
.finance-metric-card.expense:before{background:#d84f49}
.finance-metric-card.registrations:before{background:#d79a20}
.finance-metric-card.balance:before{background:#268eb9}
.finance-metric-card.balance.negative:before{background:#d84f49}
.finance-metric-card .metric{font-size:25px;margin-top:4px}
.finance-metric-note{font-size:10px;color:var(--muted);margin-top:3px}
.finance-main-grid{grid-template-columns:minmax(0,1.7fr) minmax(280px,.9fr);gap:12px;margin-bottom:12px}
.finance-entry-card,.finance-auto-card,.finance-ledger-card{padding:15px}
.finance-section-title{margin:0 0 11px}
.finance-section-title .subtitle{font-size:10.5px;margin-top:2px}
.finance-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px 10px}
.money-input{display:grid;grid-template-columns:32px 1fr;align-items:center;border:1px solid #cfdbe4;border-radius:8px;overflow:hidden;background:#fff}
.money-input span{height:100%;display:grid;place-items:center;background:#f1f5f8;color:#536878;font-weight:800;border-right:1px solid #dbe4ea}
.money-input input{border:0;border-radius:0}
.money-input:focus-within{outline:2px solid rgba(42,157,186,.2);border-color:var(--cyan)}
.finance-operator-note{margin-top:10px;font-size:10.5px}
.finance-auto-row{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:11px;border-radius:10px;background:#fff7e3;border:1px solid #efdda6;margin-bottom:9px}
.finance-auto-row>div:first-child{display:grid;gap:3px}
.finance-auto-row strong{font-size:12px;color:#5f4814}
.finance-auto-row span{font-size:9.5px;color:#7b704d;line-height:1.3}
.finance-auto-amount{font-size:16px!important;font-weight:900!important;white-space:nowrap}
.finance-auto-detail{display:flex;justify-content:space-between;gap:10px;padding:7px 2px;border-bottom:1px solid #edf1f4;font-size:11px}
.finance-auto-detail.total{border-bottom:0;padding-top:10px;font-size:12px;color:var(--navy)}
.finance-auto-help{margin-top:9px;padding:8px 9px;border-radius:8px;background:#f4f8fa;color:#667987;font-size:9.5px;line-height:1.35}
.finance-direction{display:inline-flex;padding:4px 7px;border-radius:999px;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.03em}
.finance-direction.income{background:#e4f5eb;color:#17663b}
.finance-direction.expense{background:#fde8e6;color:#a0342f}
.finance-amount{font-weight:900;white-space:nowrap}
.finance-amount.income{color:#1d7c4b}
.finance-amount.expense,.finance-auto-amount.expense{color:#b63c36}
.finance-table td{vertical-align:middle}
@media(max-width:1050px){.finance-main-grid{grid-template-columns:1fr}.finance-form{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-form .span-4{grid-column:span 2}}
@media(max-width:680px){.outcome-choice-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-form{grid-template-columns:1fr}.finance-form .span-2,.finance-form .span-4{grid-column:span 1}}

/* V2.42 - quote tesseramenti come entrata e costo UISP separato */
.finance-auto-row.income{background:#eaf8f0;border-color:#bfe7cf}
.finance-auto-row.income strong{color:#17663b}
.finance-auto-row.income span{color:#52705f}
.finance-auto-amount.income{color:#1d7c4b}
.finance-uisp-cost-row{margin-top:12px;background:#fff0ef;border-color:#f0cac6}
.finance-uisp-cost-row strong{color:#8d302b}
.finance-uisp-cost-row span{color:#7e5a57}
.finance-positive{color:#1d7c4b}.finance-negative{color:#b63c36}


/* V2.43 - categorie finanziarie, certificati medici e risultati dashboard */
.finance-category-manager{display:flex;gap:8px;align-items:flex-end;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.finance-category-manager .field{flex:1}.finance-category-manager .btn{white-space:nowrap}
.registrations-title-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.registration-count-card{display:flex;align-items:center;gap:10px;padding:9px 13px;border:1px solid #cfe0ea;border-radius:11px;background:#f5fafc;color:var(--navy)}
.registration-count-card strong{font-size:22px;line-height:1}.registration-count-card span{font-size:12px;font-weight:700;color:var(--muted)}
.medical-file-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:6px}.medical-file-row form{margin:0}.medical-file-row .btn{white-space:nowrap}
.dashboard-result{font-weight:900;font-size:16px;white-space:nowrap}.dashboard-result-row td{vertical-align:middle}.dashboard-result-badge{min-width:78px;text-align:center}
@media(max-width:650px){.registrations-title-actions{justify-content:flex-start}.finance-category-manager{align-items:stretch;flex-direction:column}}

.dashboard-compact-table{min-width:100%!important}.dashboard-compact-table th,.dashboard-compact-table td{padding:8px 7px}


/* V2.44 - ordinamento lista Tesseramenti */
.registration-sort-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 16px;margin-bottom:14px;box-shadow:var(--shadow)}
.registration-sort-form{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
.registration-sort-title{font-weight:800;color:var(--navy);align-self:center;margin-right:4px}
.registration-sort-field{display:flex;flex-direction:column;gap:5px;min-width:170px}
.registration-sort-field select{min-width:170px}
.registration-sort-summary{margin-left:auto;align-self:center;padding:8px 11px;border-radius:9px;background:#eef5f9;color:var(--navy);font-size:12px;font-weight:800;white-space:nowrap}
@media(max-width:800px){.registration-sort-summary{margin-left:0;width:100%;white-space:normal}.registration-sort-field{flex:1 1 180px}}


/* V2.45 - export PDF elenco giocatori attivi e codice fiscale anagrafica */

/* V2.46 - codice fiscale nella lista Tesseramenti */
.fiscal-code-cell{white-space:nowrap;min-width:150px}.fiscal-code-value{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9rem;letter-spacing:.02em}


/* V2.47 - filtri compatti e tabelle Rosa/Tesseramenti piu dense */
.compact-table-card{padding:10px!important}
.compact-sort-bar{display:flex;align-items:center;justify-content:flex-end;min-height:32px;margin:0 0 7px;padding:0 1px;background:transparent;border:0;box-shadow:none}
.compact-sort-form{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex-wrap:wrap;margin:0}
.compact-sort-title{font-size:11px;font-weight:900;line-height:1;color:var(--navy);text-transform:uppercase;letter-spacing:.35px}
.compact-sort-form label{font-size:11px;line-height:1;color:var(--muted);font-weight:700}
.compact-sort-form select{width:auto;min-width:105px;height:29px;padding:3px 26px 3px 7px;border-radius:7px;font-size:12px;line-height:1.1;background:#fff}
.compact-sort-form select[name="direction"]{min-width:112px}

/* neutralizza il vecchio box V2.44 se presente in pagine/cache miste */
.registration-sort-card{padding:6px 8px!important;margin-bottom:7px!important;border-radius:9px!important;box-shadow:none!important}
.registration-sort-form{gap:5px!important}
.registration-sort-title{font-size:11px!important;margin-right:1px!important}
.registration-sort-field{gap:2px!important;min-width:105px!important}
.registration-sort-field select{min-width:105px!important;height:29px!important;padding:3px 7px!important;font-size:12px!important}
.registration-sort-summary{display:none!important}

/* Tesseramenti: righe e controlli piu bassi, larghezze ridotte */
.registrations-table{min-width:1190px!important;font-size:12.5px}
.registrations-table th{padding:6px 7px!important;font-size:10.5px!important;line-height:1.1}
.registrations-table td{padding:5px 7px!important;line-height:1.15}
.registrations-table td strong{line-height:1.1}
.registrations-table .position{margin-top:2px;font-size:10px;line-height:1.05}
.registrations-table .badge{padding:3px 6px;font-size:10.5px;line-height:1.15}
.registrations-table .btn.small{padding:4px 6px;font-size:10.5px;border-radius:7px;line-height:1.1}
.registrations-table .actions{gap:4px}
.registrations-table .registration-actions{flex-wrap:nowrap}
.registrations-table .doc-photo-cell{min-width:218px!important}
.registrations-table .doc-side-row{grid-template-columns:37px auto 1fr;gap:4px;margin:2px 0}
.registrations-table .doc-side-label{font-size:10.5px}
.registrations-table .medical-file-row{gap:4px;margin-top:3px;flex-wrap:nowrap}
.registrations-table .fiscal-code-cell{min-width:130px!important}
.registrations-table .fiscal-code-value{font-size:11.5px}
.compact-registrations-wrap{border-radius:9px}

/* Rosa: stesso principio di densita e filtro */
.compact-roster-table{min-width:960px!important;font-size:12.5px}
.compact-roster-table th{padding:6px 7px!important;font-size:10.5px!important;line-height:1.1}
.compact-roster-table td{padding:6px 7px!important;line-height:1.15}
.compact-roster-table .badge{padding:3px 6px;font-size:10.5px;line-height:1.15}
.compact-roster-table .btn.small{padding:4px 7px;font-size:10.5px;border-radius:7px;line-height:1.1}
.compact-roster-table .actions{gap:4px;flex-wrap:nowrap}
.compact-roster-table .muted{font-size:10.5px;margin-top:2px}
.compact-roster-wrap{border-radius:9px}

@media(max-width:800px){
  .compact-sort-bar{justify-content:flex-start}
  .compact-sort-form{justify-content:flex-start}
  .compact-sort-form select{min-width:102px}
}

/* V2.48 - Statistiche: profilo singolo giocatore con menu e grafici a torta */
.stats-page-title{margin-bottom:12px}.stats-team-strip{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap;margin-bottom:10px}.stats-team-metric{display:flex;align-items:center;gap:8px;min-width:150px;padding:7px 10px;border:1px solid var(--line);border-radius:9px;background:#fff}.stats-team-metric span{font-size:11px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.25px}.stats-team-metric strong{font-size:20px;color:var(--navy);margin-left:auto}.stats-selector-card{padding:10px 12px;margin-bottom:10px;box-shadow:none}.stats-selector-form{display:flex;align-items:end;gap:10px}.stats-player-field{width:min(460px,100%)}.stats-player-field select{padding:7px 9px;font-weight:700;color:var(--navy)}.stats-player-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:15px 18px;margin-bottom:10px}.stats-player-kicker{font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.7px;color:var(--muted)}.stats-player-head h2{margin:2px 0 7px;font-size:24px}.stats-player-meta{display:flex;gap:6px;flex-wrap:wrap}.stats-player-rate{text-align:right;display:grid;gap:1px;min-width:160px}.stats-player-rate strong{font-size:32px;line-height:1;color:var(--navy)}.stats-player-rate span{font-size:11px;color:var(--muted)}
.stats-metrics-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px;margin-bottom:10px}.stats-metric-card{padding:12px 13px;box-shadow:none;position:relative;overflow:hidden}.stats-metric-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--blue)}.stats-metric-card.warning:before{background:#d79a20}.stats-metric-card.danger:before{background:var(--danger)}.stats-metric-card span{display:block;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}.stats-metric-card strong{display:block;font-size:27px;line-height:1.05;margin-top:5px;color:var(--navy)}.stats-metric-card small{display:block;font-size:10px;color:var(--muted);margin-top:4px;line-height:1.25}
.stats-donut-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:10px}.stats-chart-card{padding:13px 14px;box-shadow:none;display:grid;justify-items:center;gap:10px}.stats-chart-title{font-size:13px;font-weight:900;color:var(--navy);text-align:center}.stats-donut{--stats-value:0%;position:relative;width:148px;height:148px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--stats-color) 0 var(--stats-value),#e5ebf0 var(--stats-value) 100%)}.stats-donut:after{content:"";position:absolute;inset:17px;border-radius:50%;background:#fff;border:1px solid #e5ebf0}.stats-donut-presence{--stats-color:#2f9b69}.stats-donut-callup{--stats-color:#2a9dba}.stats-donut-goal{--stats-color:#315f9b}.stats-donut-hole{position:relative;z-index:1;display:grid;justify-items:center;line-height:1}.stats-donut-hole strong{font-size:29px;color:var(--navy)}.stats-donut-hole span{font-size:10px;font-weight:800;color:var(--muted);margin-top:5px;text-transform:uppercase}.stats-chart-legend{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.stats-chart-legend span{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);min-width:0}.stats-chart-legend strong{margin-left:auto;color:var(--navy)}.legend-dot{width:8px;height:8px;border-radius:50%;flex:0 0 8px;background:#cbd5dd}.legend-dot.presence{background:#2f9b69}.legend-dot.callup{background:#2a9dba}.legend-dot.goal{background:#315f9b}.legend-dot.neutral{background:#cbd5dd}
.stats-history-card{padding:13px 14px;box-shadow:none}.stats-history-title{margin:0 0 9px}.stats-history-table{min-width:790px}.stats-history-table th{padding:7px 8px;font-size:10px}.stats-history-table td{padding:7px 8px;font-size:12px}.stats-check{display:inline-flex;align-items:center;justify-content:center;min-width:28px;padding:2px 6px;border-radius:999px;font-size:10px;font-weight:900}.stats-check.yes{background:#e7f6ef;color:var(--ok)}.stats-check.no{background:#eef1f3;color:#7a8790}
@media(max-width:1200px){.stats-metrics-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:850px){.stats-donut-grid{grid-template-columns:1fr}.stats-chart-card{grid-template-columns:130px minmax(0,1fr);justify-items:start}.stats-chart-title{grid-column:1/-1;text-align:left}.stats-donut{width:124px;height:124px}.stats-donut:after{inset:14px}.stats-chart-legend{align-self:center}}@media(max-width:650px){.stats-team-strip{display:grid;grid-template-columns:1fr 1fr}.stats-team-metric:last-child{grid-column:1/-1}.stats-player-head{align-items:flex-start;flex-direction:column}.stats-player-rate{text-align:left}.stats-metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stats-chart-card{grid-template-columns:1fr;justify-items:center}.stats-chart-title{text-align:center}.stats-chart-legend{width:min(280px,100%)}.stats-selector-form{display:block}}@media(max-width:390px){.stats-metrics-grid{grid-template-columns:1fr}.stats-team-strip{grid-template-columns:1fr}.stats-team-metric:last-child{grid-column:auto}}

/* V2.51 - multi-squadra */
.club-switch-btn{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;border:1px solid rgba(255,255,255,.28);border-radius:8px;color:#fff;text-decoration:none;font-size:12px;font-weight:800;white-space:nowrap;background:rgba(255,255,255,.07)}
.club-switch-btn:hover{background:rgba(255,255,255,.14)}
.club-choice-page{min-height:100vh}
.club-choice-shell{width:min(920px,calc(100% - 32px));margin:0 auto;padding:42px 0}
.club-choice-head{display:flex;align-items:center;gap:16px;margin-bottom:28px;color:#fff}
.club-choice-head h1{margin:0 0 4px;font-size:30px}
.club-choice-head .subtitle{color:#c8d8e4}
.club-choice-user{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-size:13px}
.club-choice-user span{color:#a9c1d2;font-size:11px;text-transform:uppercase;font-weight:800;letter-spacing:.06em}
.club-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.club-choice-form{margin:0}
.club-choice-card{width:100%;min-height:330px;border:0;border-radius:22px;background:#fff;padding:28px 24px 24px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;box-shadow:0 16px 40px rgba(0,0,0,.18);transition:transform .16s ease,box-shadow .16s ease;text-align:center;color:#0d2b45}
.club-choice-card:hover{transform:translateY(-3px);box-shadow:0 20px 48px rgba(0,0,0,.24)}
.club-choice-logo-wrap{width:190px;height:190px;display:flex;align-items:center;justify-content:center}
.club-choice-logo-wrap img{max-width:100%;max-height:100%;object-fit:contain;display:block}
.club-choice-placeholder{width:150px;height:150px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#edf3f7;color:#0d2b45;font-size:42px;font-weight:900}
.club-choice-name{font-size:23px;font-weight:950;letter-spacing:.02em}
.club-choice-action{font-size:12px;font-weight:800;color:#5c7180;text-transform:uppercase;letter-spacing:.05em}
.club-choice-footer{display:flex;align-items:center;justify-content:space-between;margin-top:20px;color:#aec2d0;font-size:12px}
.operator-team-access{display:flex;flex-direction:column;gap:4px;min-width:180px;font-size:12px}
.operator-team-access label,.team-access-create label{display:inline-flex;align-items:center;gap:6px;font-weight:700}
.team-access-label{font-size:10px;color:#71818d;text-transform:uppercase;font-weight:900;letter-spacing:.05em}
.team-access-create{display:flex;flex-wrap:wrap;gap:10px 16px;padding-top:6px}
@media(max-width:760px){.club-choice-grid{grid-template-columns:1fr}.club-choice-card{min-height:280px}.club-choice-head{align-items:flex-start;flex-wrap:wrap}.club-choice-user{margin-left:0;width:100%;align-items:flex-start}.club-choice-logo-wrap{width:150px;height:150px}}
