:root{
  --bg:#f4f6f8;--panel:#fff;--ink:#17202a;--muted:#65717d;--line:#d9e0e6;
  --brand:#1e3a5f;--brand2:#315d89;--danger:#a2252a;--warn:#8a5b00;--ok:#17633a;
  --radius:10px;--shadow:0 1px 3px rgba(10,30,50,.09)
}
*{box-sizing:border-box}
html{font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:15px}
body{margin:0;min-width:0}
a{color:#174f85;text-decoration:none}a:hover{text-decoration:underline}
.app{min-height:100vh;display:grid;grid-template-columns:250px minmax(0,1fr)}
.sidebar{background:var(--brand);color:#fff;padding:20px 14px;position:sticky;top:0;height:100vh;overflow:auto}
.brand{font-size:1.15rem;font-weight:750;letter-spacing:.02em;margin:0 8px 22px}.brand small{display:block;font-size:.73rem;color:#c9d8e7;font-weight:500;margin-top:4px}
.nav a{display:block;color:#e8f0f7;padding:9px 11px;border-radius:7px;margin:2px 0}.nav a:hover,.nav a.active{background:rgba(255,255,255,.12);text-decoration:none}.nav .group{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:#a9bfd2;margin:18px 10px 6px}
.main,.content,.card,.table-wrap{min-width:0}
.topbar{background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 24px;position:sticky;top:0;z-index:3}
.content{padding:24px;max-width:1600px;margin:auto;width:100%}
.page-title{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;min-width:0}.page-title>div:first-child{min-width:0;flex:1 1 auto}.page-title h1{font-size:1.65rem;margin:0;overflow-wrap:anywhere}.page-title p{color:var(--muted);margin:5px 0 0;overflow-wrap:anywhere}
.actions,.row-actions{display:flex;gap:8px;align-items:center}.actions{flex-wrap:wrap}.page-title>.actions{justify-content:flex-end;flex:0 1 auto}.row-actions{gap:5px;flex-wrap:nowrap}.row-actions form{display:inline-flex;margin:0;flex:0 0 auto}.row-actions .btn,.row-actions button{white-space:nowrap;flex:0 0 auto}
.btn,button{appearance:none;border:1px solid var(--brand);background:var(--brand);color:#fff;padding:8px 13px;border-radius:7px;font-weight:650;cursor:pointer;font-size:.9rem;line-height:1.2;max-width:100%}.btn:hover,button:hover{background:var(--brand2);text-decoration:none}.btn.secondary,button.secondary{background:#fff;color:var(--brand);border-color:#aebcca}.btn.danger,button.danger{background:var(--danger);border-color:var(--danger)}.btn.small,button.small{padding:5px 9px;font-size:.8rem}
.grid{display:grid;gap:16px;min-width:0}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;overflow:hidden}.card h2,.card h3{margin-top:0}.card>.table-wrap{margin-left:-18px;margin-right:-18px;margin-bottom:-18px;border-left:0;border-right:0;border-bottom:0;border-radius:0;box-shadow:none}.card>table{min-width:0;table-layout:auto}.metric .value{font-size:2rem;font-weight:760}.metric .label{color:var(--muted);font-size:.86rem}
.table-wrap{overflow-x:auto;overflow-y:visible;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);-webkit-overflow-scrolling:touch}
table{border-collapse:collapse;width:100%;min-width:680px;table-layout:auto}table.compact{min-width:0}table.fluid-second th:nth-child(2),table.fluid-second td:nth-child(2){width:100%;min-width:160px}table.fluid-second th:not(:nth-child(2)),table.fluid-second td:not(:nth-child(2)){width:1%;white-space:nowrap}table.fluid-second td:nth-child(2){white-space:normal;overflow-wrap:anywhere}
table.fit-row{min-width:0;table-layout:auto}table.fit-row th:not(.flex-col),table.fit-row td:not(.flex-col){width:1%;white-space:nowrap}table.fit-row th.flex-col,table.fit-row td.flex-col{width:100%;min-width:150px;white-space:normal;overflow-wrap:anywhere}table.fit-row td.actions-col{white-space:nowrap}
table.requirements-table{min-width:0;table-layout:auto}table.requirements-table th:nth-child(4),table.requirements-table td:nth-child(4){width:100%;min-width:220px;white-space:normal;overflow-wrap:anywhere}table.requirements-table th:not(:nth-child(4)),table.requirements-table td:not(:nth-child(4)){width:1%;white-space:nowrap}table.requirements-table td.actions-col{white-space:nowrap}table.requirements-table .row-actions{flex-wrap:nowrap}
table.catalog-table{min-width:0}table.catalog-table th:nth-child(3),table.catalog-table td:nth-child(3){width:100%;min-width:200px;white-space:normal;overflow-wrap:anywhere}table.catalog-table th:not(:nth-child(3)),table.catalog-table td:not(:nth-child(3)){width:1%;white-space:nowrap}
table.event-activities{min-width:0;table-layout:auto}table.event-activities th:nth-child(2),table.event-activities td:nth-child(2){width:100%;min-width:210px;white-space:normal}table.event-activities th:not(:nth-child(2)),table.event-activities td:not(:nth-child(2)){width:1%;white-space:nowrap}table.event-activities td:nth-child(2) select{display:block;width:100%;min-width:190px;max-width:none}table.event-activities th:nth-child(3),table.event-activities td:nth-child(3){width:12rem;min-width:10rem}table.event-activities .teacher-select{display:block;width:12rem;max-width:12rem;min-width:10rem;height:3.65rem;min-height:3.65rem;overflow-y:auto;padding-top:3px;padding-bottom:3px}table.event-activities .credit-input{width:5.2rem;min-width:5.2rem;padding-left:7px;padding-right:7px}table.event-activities .free-activity-input{display:block;width:100%;min-width:190px;border:1px solid #bfcad4;border-radius:7px;padding:9px 10px;background:#fff;color:var(--ink);font:inherit}table.event-activities .free-teacher-input{min-width:10rem;width:12rem;max-width:12rem}table.event-activities select:not([data-activity-reference]){max-width:13rem}
th,td{padding:10px 12px;text-align:left;border-bottom:1px solid #e7ebef;vertical-align:top;max-width:100%}th{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:#4f5c68;background:#f8fafb;position:sticky;top:0;z-index:1}tr:hover td{background:#fbfcfd}td:last-child{white-space:normal}.nowrap{white-space:nowrap}.wrap{white-space:normal;overflow-wrap:anywhere}.muted{color:var(--muted)}
.badge{display:inline-block;padding:3px 7px;border-radius:999px;background:#e8edf2;color:#344454;font-size:.75rem;font-weight:700}.badge.ok{background:#dff2e8;color:var(--ok)}.badge.warn{background:#fff0ce;color:var(--warn)}.badge.danger{background:#f7dddd;color:var(--danger)}.badge.info{background:#dcebf7;color:#24557c}
.flash{padding:11px 14px;border-radius:8px;margin:0 0 14px;border:1px solid;overflow-wrap:anywhere}.flash.success{background:#e6f5ec;border-color:#a9d7bb;color:#155c35}.flash.warning{background:#fff4d8;border-color:#e9cd83;color:#6f4b00}.flash.error{background:#fbe5e5;border-color:#e0a7a7;color:#81242a}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field.full{grid-column:1/-1}.field label{font-weight:680;font-size:.86rem}.field input,.field select,.field textarea{width:100%;min-width:0;border:1px solid #bfcad4;border-radius:7px;padding:9px 10px;background:#fff;color:var(--ink);font:inherit}.field select[multiple]{min-height:92px}.field textarea{min-height:90px;resize:vertical}.field .hint{font-size:.78rem;color:var(--muted)}
.checklist{display:flex;flex-wrap:wrap;gap:10px}.check{display:flex;align-items:center;gap:6px}.check input{width:auto}
.toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;background:#fff;border:1px solid var(--line);padding:12px;border-radius:9px;margin-bottom:14px;min-width:0}.toolbar .field{min-width:140px;flex:1 1 160px}.toolbar>button,.toolbar>.btn{flex:0 0 auto}
.tabs{display:flex;gap:5px;border-bottom:1px solid var(--line);margin-bottom:16px;overflow:auto}.tabs a{padding:9px 12px;color:#45525e;border-bottom:3px solid transparent;white-space:nowrap}.tabs a.active{border-color:var(--brand);color:var(--brand);font-weight:700}
.login-shell{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#173552,#315d89)}.login-card{width:min(430px,100%);background:#fff;border-radius:14px;padding:28px;box-shadow:0 16px 40px rgba(0,0,0,.2)}.login-card h1{margin-top:0}.login-card .field{margin:12px 0}.login-card button{width:100%;margin-top:8px}.login-note{font-size:.82rem;color:var(--muted);margin-top:18px}
.error-list{background:#fbe5e5;color:#81242a;border:1px solid #e0a7a7;padding:12px 18px;border-radius:8px}.progress{height:10px;background:#e8edf2;border-radius:99px;overflow:hidden}.progress span{display:block;height:100%;background:var(--brand)}.split{display:grid;grid-template-columns:minmax(0,2fr) minmax(260px,1fr);gap:16px}.code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.85rem}.empty{padding:28px;text-align:center;color:var(--muted)}.mobile-menu{display:none}.footer{padding:20px 24px;color:var(--muted);font-size:.78rem}

td:last-child form{display:inline-flex;flex-wrap:wrap;gap:5px;margin:2px 0}
td:last-child>.btn,td:last-child>button{margin:2px 0}
.card table.fluid-second{width:100%}

.activity-type{font-size:.75rem;font-weight:700;color:var(--muted);text-transform:uppercase}.move-buttons{display:flex;gap:4px;flex-wrap:nowrap;align-items:center}.move-buttons button{white-space:nowrap}
@media(max-width:1180px){.grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(2,minmax(0,1fr))}.split{grid-template-columns:1fr}.page-title{align-items:stretch}.page-title>.actions{max-width:48%}}
@media(max-width:920px){.app{grid-template-columns:210px minmax(0,1fr)}.sidebar{padding-left:10px;padding-right:10px}.content{padding:18px}.grid.cols-2{grid-template-columns:1fr}.page-title{flex-direction:column}.page-title>.actions{max-width:none;justify-content:flex-start;width:100%}.page-title>.actions>*{flex:1 1 auto;text-align:center}.card table.compact{font-size:.92rem}}
@media(max-width:780px){.app{display:block}.sidebar{display:none;position:fixed;z-index:10;width:270px;left:0}.sidebar.open{display:block}.mobile-menu{display:inline-block}.content{padding:14px}.topbar{padding:10px 14px}.grid.cols-2,.grid.cols-3,.grid.cols-4,.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.page-title>.actions>*{flex:1 1 150px}.actions{align-items:stretch}.row-actions{align-items:center}.row-actions .btn,.row-actions button{flex:0 0 auto;text-align:center}.toolbar{align-items:stretch}.toolbar .field{flex-basis:100%;min-width:0}.toolbar>button,.toolbar>.btn{flex:1 1 120px;text-align:center}th,td{padding:8px}.card{padding:14px}.card>.table-wrap{margin-left:-14px;margin-right:-14px;margin-bottom:-14px}table.fit-row,table.catalog-table,table.event-activities,table.requirements-table{font-size:.88rem}}
@media(max-width:520px){html{font-size:14px}.content{padding:10px}.topbar{flex-wrap:wrap}.page-title h1{font-size:1.4rem}.page-title>.actions>*{flex-basis:100%}.login-card{padding:20px}.card{padding:12px}.card>.table-wrap{margin-left:-12px;margin-right:-12px;margin-bottom:-12px}}
@media print{.sidebar,.topbar,.actions,.toolbar,.footer,.btn,button{display:none!important}.app{display:block}.content{padding:0}.card,.table-wrap{box-shadow:none;border-color:#bbb}.table-wrap{overflow:visible}table{min-width:0}}

/* AKIDO 2.0 - requisiti, presenze ed esami semplificati */
.dual-list{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:12px;align-items:center;min-width:0}
.dual-list .field{min-width:0}.dual-list select{width:100%;min-width:0}
.dual-list-actions{display:flex;flex-direction:column;gap:8px;align-items:stretch}.dual-list-actions button{white-space:nowrap}
.attendance-table{min-width:1100px}.attendance-table th:not(:first-child),.attendance-table td:not(:first-child){min-width:145px}.attendance-table th:first-child,.attendance-table td:first-child{min-width:180px}
.attendance-meta{font-size:.74rem;line-height:1.3;margin-top:6px;white-space:normal}.exam-yes{color:var(--brand);font-weight:750}
.exam-results{min-width:780px}.exam-matter-cell{min-width:360px}.exam-matter-row{display:grid;grid-template-columns:minmax(220px,1fr) 6rem;gap:12px;align-items:center;padding:7px 0;border-bottom:1px solid #edf0f2}.exam-matter-row:last-child{border-bottom:0}
.grade-input{width:6rem!important;min-width:6rem!important}.grade-ok{background:#e6f5ec!important;border-color:#78b88f!important}.grade-bad{background:#fbe5e5!important;border-color:#d98d91!important}
.event-activities td:nth-child(2){min-width:260px}.event-activities td:nth-child(3){vertical-align:middle}
.event-activities .teacher-select{height:3.65rem;max-height:3.65rem;overflow-y:auto}
.requirements-table td.actions-col,.requirements-table th:last-child{white-space:nowrap}
@media(max-width:780px){.dual-list{grid-template-columns:1fr}.dual-list-actions{flex-direction:row;flex-wrap:wrap}.dual-list-actions button{flex:1 1 140px}.exam-matter-row{grid-template-columns:minmax(170px,1fr) 5.5rem}.grade-input{width:5.5rem!important;min-width:5.5rem!important}}

/* AKIDO 3.0 - Documentazione, soci e destinatari attività */
.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap}.section-heading h2{margin-top:0;margin-bottom:4px}.section-heading .row-actions{flex-wrap:nowrap}
.documentation-section .table-wrap{margin-top:12px}.documentation-section video{display:block;width:min(100%,900px);max-height:70vh;background:#000;border-radius:8px}
.activity-quals{display:flex;gap:6px;align-items:center;justify-content:center;white-space:nowrap}.mini-check{display:inline-flex;align-items:center;gap:3px;font-size:.78rem;font-weight:700}.mini-check input{width:auto;margin:0}
.event-activities th:nth-child(4),.event-activities td:nth-child(4){width:6rem;min-width:6rem;text-align:center}
.event-activities th:nth-child(5),.event-activities td:nth-child(5){width:5.5rem;min-width:5.5rem}
.member-incomplete{background:#fff8e6}
@media(max-width:780px){.section-heading{display:block}.section-heading .row-actions{margin-top:10px;flex-wrap:wrap}.activity-quals{justify-content:flex-start}}

.inline-form{display:inline-flex;margin:0}
/* AKIDO 3.2 - controllo e bonifica dati didattici */
.danger-text{color:var(--danger);font-weight:700}

.warning-text{color:var(--warn);font-weight:650}
.inline-note-form{display:flex;gap:6px;align-items:center;flex-wrap:nowrap;min-width:320px}.inline-note-form input[type="text"]{min-width:240px;flex:1 1 320px;border:1px solid #bfcad4;border-radius:7px;padding:7px 9px;background:#fff;color:var(--ink);font:inherit}.inline-note-form button{flex:0 0 auto;white-space:nowrap}
@media(max-width:780px){.inline-note-form{min-width:260px}.inline-note-form input[type="text"]{min-width:180px}}

/* AKIDO 3.2.3 - programmazione materie */
.planning-intro p{margin-bottom:10px}.planning-legend{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;font-size:.84rem;color:var(--muted)}.planning-legend>span{display:inline-flex;align-items:center;gap:5px}.planning-metrics{margin:0 0 16px}.planning-section{margin-top:16px}.planning-section .section-heading{margin-bottom:10px}.planning-matrix{min-width:980px}.planning-matrix th.planning-category,.planning-matrix td.planning-category{min-width:145px;max-width:190px}.planning-matrix th.planning-matter,.planning-matrix td.planning-matter{min-width:280px;white-space:normal}.planning-matrix th.planning-year,.planning-matrix td.planning-year{width:104px;min-width:104px;text-align:center;vertical-align:middle}.planning-matrix td.planning-empty{color:var(--muted)}.planning-cell-details{display:block}.planning-cell-details summary{cursor:pointer;list-style:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:28px}.planning-done-dates{line-height:1.35}.planning-done-dates small{font-size:.7rem;font-weight:700}.planning-cell-details summary::-webkit-details-marker{display:none}.planning-cell-details[open] summary{margin-bottom:7px}.planning-done{display:inline-block;font-weight:800;color:var(--ok);white-space:nowrap}.planning-future-dates{line-height:1.45}.planning-future-date{display:inline-block;padding:2px 6px;border:1px solid #e0a7a7;border-radius:6px;background:#fbe5e5;color:var(--danger);font-weight:800;line-height:1.25;white-space:nowrap}.planning-future-date small{font-size:.7rem;font-weight:800}.planning-planned{display:inline-block;font-size:.72rem;font-weight:750;color:#8a5a00;white-space:nowrap}.planning-detail{min-width:240px;text-align:left;white-space:normal;background:#fff;border:1px solid var(--line);border-radius:7px;padding:7px}.planning-occurrence{padding:6px 0;border-bottom:1px solid #edf0f2;line-height:1.35}.planning-occurrence:first-child{padding-top:0}.planning-occurrence:last-child{padding-bottom:0;border-bottom:0}.planning-occurrence a{font-weight:650}.planning-occurrence .badge{font-size:.66rem;padding:2px 5px}
@media(max-width:780px){.planning-matrix{min-width:900px}.planning-detail{min-width:210px}.planning-legend{display:grid;grid-template-columns:1fr 1fr}}

/* Link testuali nelle tabelle: stessa resa del testo, ma chiaramente interattivi al passaggio. */
.table-name-link{color:inherit;text-decoration:none}
.table-name-link:hover,.table-name-link:focus-visible{text-decoration:underline}

.select-col{width:42px;text-align:center}.select-col input{width:auto;min-width:0}.bulk-actions-card{margin-bottom:14px}.bulk-submit-field{justify-content:end}
/* AKIDO 3.2.15 - creazione utenti e password */
.password-input-row{display:flex;gap:8px;align-items:center;min-width:0}.password-input-row input{flex:1 1 auto}.password-input-row button{flex:0 0 auto;white-space:nowrap}.password-visibility{display:inline-flex!important;align-items:center;gap:7px;width:max-content;font-weight:500!important;cursor:pointer}.password-visibility input{width:auto!important;min-width:0;margin:0}
@media(max-width:520px){.password-input-row{flex-direction:column;align-items:stretch}.password-input-row button{width:100%}}

/* AKIDO 3.2.17 - manutenzione didattica */
.didactic-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.didactic-tabs .btn{min-width:150px;text-align:center}.didactic-intro p{margin-bottom:0}.didactic-check{align-self:center;margin:0 4px 5px 0;white-space:nowrap}.didactic-maintenance-table{min-width:1500px}.didactic-maintenance-table th:nth-child(3),.didactic-maintenance-table td:nth-child(3){min-width:260px;white-space:normal}.didactic-maintenance-table td select{min-width:145px}.didactic-maintenance-table .didactic-center{text-align:center;vertical-align:middle}.didactic-maintenance-table .didactic-center input{width:auto}.didactic-note{min-width:220px;border:1px solid #bfcad4;border-radius:7px;padding:7px 9px;background:#fff;color:var(--ink);font:inherit}.grade-maintenance-table{min-width:1050px}.grade-maintenance-table td:nth-child(3){min-width:260px}.grade-maintenance-input{width:6.5rem;min-width:6.5rem;border:1px solid #bfcad4;border-radius:7px;padding:7px 9px;background:#fff;color:var(--ink);font:inherit}.legacy-results-table{min-width:900px}.legacy-credits-table{min-width:1150px}.legacy-credits-table td:nth-child(2) select{min-width:190px}.credit-maintenance-input{width:6rem;min-width:6rem;border:1px solid #bfcad4;border-radius:7px;padding:7px 9px;background:#fff;color:var(--ink);font:inherit}.legacy-credits-table input[type="date"]{min-width:145px;border:1px solid #bfcad4;border-radius:7px;padding:7px 9px;background:#fff;color:var(--ink);font:inherit}
@media(max-width:780px){.didactic-tabs .btn{flex:1 1 160px}.didactic-maintenance-table{min-width:1350px}.grade-maintenance-table{min-width:980px}.legacy-credits-table{min-width:1050px}}

/* AKIDO 3.2.19 - proposta tessera */
.member-card-suggestion{display:flex;gap:8px;align-items:center;min-width:0}.member-card-suggestion input{flex:1 1 auto;min-width:0}.member-card-suggestion button{flex:0 0 auto;white-space:nowrap}
@media(max-width:520px){.member-card-suggestion{flex-direction:column;align-items:stretch}.member-card-suggestion button{width:100%}}
