:root{--violet:#730997;--deep:#301042;--ink:#202c43;--muted:#687287;--border:#e1e4ec;--pale:#f3ebf8}*{box-sizing:border-box}body{margin:0;font:15px/1.55 'Segoe UI',Arial,sans-serif;background:#f5f6fa;color:var(--ink)}h1,h2,h3,h4,p{margin-top:0}h1{font-size:25px;margin:2px 0}h2{font-size:30px;line-height:1.25;letter-spacing:-.6px;margin-bottom:12px}h3{font-size:20px;margin-bottom:15px}a{color:var(--violet);text-decoration:none}a:hover{text-decoration:underline}.brand{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:20px 38px;background:white;border-bottom:1px solid var(--border);min-height:130px}.brand .brand-title{flex:1;min-width:0}.brand img{object-fit:contain}.cvi{width:96px;height:94px}.anpas{width:126px;height:70px}.eyebrow{font-size:11px;font-weight:800;letter-spacing:1.5px;color:var(--violet)}.muted,.small{color:var(--muted)}.small{font-size:12px}.shell{display:flex;max-width:1800px;margin:auto}aside{width:245px;min-width:245px;background:var(--deep);padding:26px 17px;color:white;min-height:calc(100vh - 134px)}.identity{padding:0 12px 23px;border-bottom:1px solid #ffffff25}.identity span{display:block;font-size:12px;color:#cfb9de}nav{display:flex;flex-direction:column;gap:4px;margin:18px 0}nav a{display:block;padding:9px 12px;color:#e8dbef;font-size:14px;border-radius:8px}nav a:hover,nav a.selected{background:#ffffff18;text-decoration:none;color:white}aside .small{color:#c0aacd;margin:28px 12px}main{min-width:0;flex:1;padding:36px;max-width:1555px}.pagehead{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:20px}.pagehead p{margin-bottom:0}.card{background:white;border:1px solid var(--border);border-radius:14px;padding:25px;margin-bottom:24px;box-shadow:0 4px 15px #2d1f4a04}.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}.stat{padding:18px}.stat span{font-size:12px;color:var(--muted)}.stat strong{display:block;font-size:38px;color:var(--deep);line-height:1.3}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.inline{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin:16px 0}.inline label{margin-bottom:0}.inline input,.inline select{min-width:100px;max-width:250px}label{display:block;font-size:13px;font-weight:600;margin-bottom:16px}input,select,textarea{display:block;width:100%;padding:10px 12px;border:1px solid #cfd4df;border-radius:7px;font:14px 'Segoe UI',Arial,sans-serif;color:var(--ink);background:#fff;margin-top:6px}input:focus,select:focus,textarea:focus{outline:2px solid #d9b5ee;border-color:var(--violet)}input[type=checkbox]{width:17px;height:17px;margin:0;accent-color:var(--violet)}input[type=file]{max-width:300px}.check{display:flex;align-items:center;gap:10px}.check input{display:inline-block}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;background:var(--violet);border-radius:7px;padding:10px 17px;font:600 13px 'Segoe UI',Arial,sans-serif;color:white;cursor:pointer;min-height:40px;white-space:normal}.button:hover,button:hover{filter:brightness(.94);text-decoration:none}.secondary{background:var(--pale);color:var(--violet);border-color:#e2d0ee}.danger{background:#fff0f0;color:#a92132;border-color:#f3d1d4}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:#697388;font-size:11px;text-transform:uppercase;letter-spacing:.4px;background:#fafbfe}th,td{padding:14px 12px;border-bottom:1px solid var(--border);vertical-align:top}tr:last-child td{border-bottom:0}.tablewrap{overflow:auto}table form button{font-size:11px;min-height:32px;padding:6px 10px}.badge{display:inline-block;border-radius:5px;background:var(--pale);color:var(--violet);font-size:10px;letter-spacing:.2px;padding:5px 8px;font-weight:700;white-space:nowrap}.state-attestati-emessi,.state-validata,.state-programmata{background:#e7f4ec;color:#22734e}.state-da-validare,.state-inviata{background:#fff1d8;color:#9a6812}.notice{border:1px solid #e2ccec;background:#f5edf9;padding:14px 17px;border-radius:9px;margin:15px 0}.notice.error{background:#fff0f0;color:#982536;border-color:#f0ccd4}.notice.success{background:#eaf7ef;color:#1b6843;border-color:#c5e8d1}.auth{max-width:580px;margin:36px auto}.auth form{margin-top:23px}.empty{text-align:center;color:var(--muted);padding:30px}details{margin-top:12px}summary{cursor:pointer;color:var(--violet);font-weight:600}details[open]>summary{margin-bottom:16px}.participant{border:1px solid var(--border);border-radius:9px;padding:15px;margin:12px 0}.participant summary{font-size:13px}.workflow{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 24px}.workflow span{background:#eae1ef;padding:7px 10px;font-size:11px;color:#685175;border-radius:5px}.checks{color:#956826}dl{display:grid;grid-template-columns:130px 1fr;gap:10px;font-size:14px}dt{color:var(--muted)}dd{margin:0}pre{font:13px/1.7 'Segoe UI',Arial,sans-serif;white-space:pre-wrap;overflow-wrap:anywhere}footer{font-size:11px;color:var(--muted);text-align:center;margin-top:32px;padding:15px}code{font-size:13px;background:var(--pale);padding:3px 6px}@media(max-width:1100px){.stats{grid-template-columns:repeat(3,1fr)}main{padding:24px}aside{width:210px;min-width:210px}.brand{padding:18px 24px}}@media(max-width:760px){.brand{gap:12px;padding:15px}.cvi{width:62px;height:66px}.anpas{width:78px;height:42px}.brand h1{font-size:18px}.brand .muted{display:none}.shell{display:block}aside{width:100%;min-height:0;padding:12px}aside nav{flex-direction:row;flex-wrap:wrap;margin:8px 0;gap:0}aside nav a{font-size:12px;padding:7px}.identity{padding:3px 8px 9px}aside .small{display:none}main{padding:18px}.stats{grid-template-columns:repeat(2,1fr)}.grid{grid-template-columns:1fr}.pagehead{align-items:flex-start;flex-direction:column}.card{padding:17px}h2{font-size:25px}.inline{align-items:stretch}.inline label{width:100%}.inline input,.inline select{max-width:none}.workflow{gap:4px}.workflow span{font-size:10px}}

[hidden]{display:none!important}

/* Course sections are progressively enhanced: readable even without JS. */
.class-tabs [hidden] { display: none !important; }
.tab-list { gap: 8px; flex-wrap: wrap; }
.tab-list [role="tab"] { background: #eee5f3; color: #55236d; border: 1px solid transparent; padding: 12px 16px; cursor: pointer; }
.tab-list [role="tab"][aria-selected="true"] { background: #7414a1; color: white; border-color: #7414a1; }
.tab-list [role="tab"]:focus-visible { outline: 3px solid #ba83d4; outline-offset: 3px; }

.pending-badge { display:inline-flex; align-items:center; justify-content:center; min-width:20px; height:20px; padding:0 5px; border-radius:999px; background:#c62b43; color:white; font-size:12px; font-weight:700; vertical-align:middle; }
.pending-badge[hidden] { display:none !important; }
.pending-links { display:flex; flex-wrap:wrap; gap:12px; }
.pending-links a { flex:1 1 210px; padding:12px; background:#f5eff9; border-radius:8px; color:#55236d; }
.pending-links strong { margin-left:8px; }
.calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:8px; margin-top:20px; }
.calendar-day { min-height:130px; padding:10px; border:1px solid #ded5e5; border-radius:8px; background:#fff; overflow-wrap:anywhere; }
.calendar-day h4 { margin:0 0 10px; font-size:14px; }
.calendar-today { border:2px solid #7414a1; background:#faf5fd; }
.calendar-event { display:flex; flex-direction:column; gap:4px; padding:8px; margin-bottom:8px; background:#eee5f3; border-radius:6px; font-size:12px; }
@media(max-width:1000px) { .calendar-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:550px) { .calendar-grid { grid-template-columns:1fr; } }

/* Session indicator belongs to the shared header, before the ANPAS logo. */
.brand .idle-timer{flex:0 0 auto;display:flex;align-items:center;gap:10px;margin:0;padding:8px 14px;border:1px solid var(--border);border-radius:999px;background:#fafbfe;color:var(--muted);white-space:nowrap;font-size:12px}
.idle-timer b{color:var(--deep);font-size:16px;font-variant-numeric:tabular-nums;letter-spacing:.5px}
.brand .idle-timer.expiring{background:#fff7e8;border-color:#e7c581;color:#784700}
.idle-timer.expiring b{color:#784700}
@media(max-width:760px){.brand{display:grid;grid-template-columns:auto minmax(0,1fr) auto;column-gap:12px;row-gap:8px}.brand .cvi{grid-column:1;grid-row:1}.brand .brand-title{grid-column:2;grid-row:1}.brand .anpas{grid-column:3;grid-row:1}.brand .idle-timer{grid-column:2 / 4;grid-row:2;justify-self:end;padding:5px 11px;font-size:11px}.idle-timer b{font-size:14px}}

.auth fieldset{border:0;padding:0;margin:0;min-width:0}.auth fieldset:disabled{opacity:.6}
