:root{--sidebar:#0a0a0a;--bg:#fff;--panel:#fff;--line:#d9dde3;--muted:#667085;--text:#111827;--soft:#f5f6f8;--danger:#b42318;--ok:#067647;--warn:#b54708;--accent:#1f2937}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Arial,Helvetica,sans-serif;font-size:14px}a{color:#1d4ed8;text-decoration:none}a:hover{text-decoration:underline}.app{min-height:100vh;display:grid;grid-template-columns:235px minmax(0,1fr)}.sidebar{background:var(--sidebar);color:#fff;padding:22px 14px;position:sticky;top:0;height:100vh;overflow:auto}.brand{font-size:20px;font-weight:700;padding:0 10px 18px;border-bottom:1px solid #262626;margin-bottom:14px}.brand small{display:block;color:#aaa;font-size:11px;font-weight:400;margin-top:5px}.nav a{display:block;color:#ddd;padding:10px 11px;border-radius:6px;margin:2px 0;text-decoration:none}.nav a:hover,.nav a.active{background:#262626;color:#fff}.nav .sep{height:1px;background:#262626;margin:12px 6px}.userbox{margin-top:20px;padding:12px 10px;border-top:1px solid #262626;color:#bbb;font-size:12px}.userbox strong{color:#fff;display:block;margin-bottom:3px}.main{min-width:0}.topbar{border-bottom:1px solid var(--line);padding:15px 24px;display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:0;background:#fff;z-index:5}.topbar h1{font-size:20px;margin:0}.content{padding:24px;max-width:1500px}.flash{padding:11px 13px;border-radius:6px;margin-bottom:14px;border:1px solid}.flash.success{background:#ecfdf3;border-color:#abefc6;color:#05603a}.flash.error{background:#fef3f2;border-color:#fecdca;color:#912018}.flash.warning{background:#fffaeb;border-color:#fedf89;color:#93370d}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.toolbar.right{justify-content:flex-end}.btn{display:inline-block;border:1px solid #cbd0d6;background:#fff;color:#111827;border-radius:5px;padding:8px 11px;font-weight:600;font-size:13px;cursor:pointer;text-decoration:none;line-height:1.2}.btn:hover{background:#f3f4f6;text-decoration:none}.btn.primary{background:#111827;color:#fff;border-color:#111827}.btn.danger{color:#fff;background:#b42318;border-color:#b42318}.btn.small{padding:5px 8px;font-size:12px}.btn.ghost{border-color:transparent}.panel{border:1px solid var(--line);border-radius:8px;background:#fff;margin-bottom:18px;overflow:hidden}.panel-head{padding:13px 16px;border-bottom:1px solid var(--line);background:#fafafa;display:flex;justify-content:space-between;align-items:center;gap:12px}.panel-head h2,.panel-head h3{margin:0;font-size:15px}.panel-body{padding:16px}.grid-kpi{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.kpi{border:1px solid var(--line);border-radius:8px;padding:16px;background:#fff}.kpi .label{color:var(--muted);font-size:12px}.kpi .value{font-size:28px;font-weight:700;margin-top:7px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}.filterbar{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:10px;align-items:end;padding:14px;border:1px solid var(--line);border-radius:8px;background:#fafafa;margin-bottom:16px}.field label{display:block;font-weight:600;font-size:12px;margin-bottom:5px}.field input,.field select,.field textarea{width:100%;border:1px solid #cbd0d6;border-radius:5px;padding:8px 9px;background:#fff;color:#111827;font:inherit}.field textarea{min-height:90px;resize:vertical}.field input[type=color]{padding:2px;height:38px}.field .help{font-size:11px;color:var(--muted);margin-top:4px}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.form-grid .span2{grid-column:span 2}.form-grid .span3{grid-column:1/-1}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:7px}.data{width:100%;border-collapse:collapse;min-width:760px}.data th,.data td{border-bottom:1px solid #eceef1;padding:9px 10px;text-align:left;vertical-align:middle}.data th{background:#f7f7f8;font-size:12px;white-space:nowrap}.data tr:last-child td{border-bottom:0}.data input,.data select,.toolbar select,.toolbar input[type=file]{border:1px solid #cbd0d6;border-radius:5px;padding:6px 7px;background:#fff;color:#111827;font:inherit}.toolbar select{max-width:360px}.data .actions{white-space:nowrap;text-align:right}.muted{color:var(--muted)}.badge{display:inline-block;padding:3px 7px;border-radius:999px;background:#eef2f6;font-size:11px;font-weight:700}.badge.ok{background:#dcfae6;color:#05603a}.badge.warn{background:#fef0c7;color:#93370d}.badge.danger{background:#fee4e2;color:#912018}.grade-chip{display:inline-block;width:120px;text-align:center;border:1px solid rgba(0,0,0,.18);padding:4px 8px;border-radius:4px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.photo{width:88px;height:110px;object-fit:cover;border:1px solid var(--line);border-radius:6px;background:#f3f4f6}.avatar{width:38px;height:46px;object-fit:cover;border-radius:4px;border:1px solid var(--line)}.empty{padding:24px;text-align:center;color:var(--muted)}.login-shell{min-height:100vh;display:grid;place-items:center;background:#f3f4f6;padding:20px}.login-card{width:min(440px,100%);background:#fff;border:1px solid var(--line);border-radius:10px;padding:26px;box-shadow:0 12px 28px rgba(0,0,0,.07)}.login-card h1{margin:0 0 6px;font-size:24px}.login-card p{color:var(--muted)}.login-card .field{margin:13px 0}.danger-zone{border-color:#fda29b}.danger-zone .panel-head{background:#fef3f2}.inline-form{display:inline}.note{padding:11px 13px;border-radius:6px;background:#f7f7f8;border:1px solid var(--line);color:#344054}.definition{display:grid;grid-template-columns:190px 1fr;gap:8px 16px}.definition dt{font-weight:700}.definition dd{margin:0}.budo-header{display:grid;grid-template-columns:auto 1fr;gap:20px;align-items:start}.budo-name{font-size:28px;font-weight:700;margin-bottom:6px}.sortlink{color:#111827}.sortlink:hover{text-decoration:none}.nowrap{white-space:nowrap}.text-right{text-align:right}.w-auto{width:auto!important}@media(max-width:1050px){.grid-kpi{grid-template-columns:repeat(2,1fr)}.filterbar{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:repeat(2,1fr)}.form-grid .span3{grid-column:1/-1}}@media(max-width:760px){.app{display:block}.sidebar{height:auto;position:relative;padding:12px}.brand{margin-bottom:8px}.nav{display:flex;flex-wrap:wrap;gap:3px}.nav a{padding:8px}.nav .sep{display:none}.userbox{margin-top:8px}.topbar{position:relative;padding:12px 14px}.content{padding:14px}.grid-kpi,.two-col,.filterbar,.form-grid{grid-template-columns:1fr}.form-grid .span2,.form-grid .span3{grid-column:auto}.budo-header{grid-template-columns:1fr}}@media print{.sidebar,.topbar,.toolbar,.no-print{display:none!important}.app{display:block}.content{padding:0}.panel{break-inside:avoid}.table-wrap{overflow:visible}.data{min-width:0;font-size:11px}}

.exam-table .data{min-width:1180px}.exam-table select,.exam-table input{width:100%;min-width:125px}.exam-table td:nth-child(4) input{min-width:90px}.preview-chip{margin-top:6px}
/* Dashboard: la scadenza certificato resta visibile e aderente al bordo destro anche su viewport stretti. */
.certificate-table{min-width:0}.certificate-table th:last-child,.certificate-table td:last-child{text-align:right;white-space:nowrap;width:1%}.certificate-table td:first-child{overflow-wrap:anywhere}
