:root{
  --bg: #f6f7f9;
  --panel: #ffffff;
  --text: #111827;
  --muted: #6b7280;
  --border: #e5e7eb;
  --primary: #2563eb;
  --primary-weak: #e8efff;
  --danger: #b42318;
  --danger-weak: #fdecec;
  --radius: 14px;
  --radius-sm: 10px;
  --gap: 16px;
  --topbar-h: 60px;
  --sidebar-w: 200px;
  --sidebar-w-collapsed: 74px;
  --font: ui-sans-serif, system-ui, -apple-system, "Segoe UI Variable", "Segoe UI", Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";
}

html[data-theme="dark"]{
  --bg: #0b1220;
  --panel: #0f1a2b;
  --text: #e5e7eb;
  --muted: #9ca3af;
  --border: #20304a;
  --primary: #60a5fa;
  --primary-weak: #0b2a4e;
  --danger: #fca5a5;
  --danger-weak: #3b0f18;
}

*{box-sizing:border-box;}
[hidden]{display:none !important;}
body{
  margin:0;
  font-family:var(--font);
  color:var(--text);
  background:var(--bg);
  text-rendering:optimizeLegibility;
}

a{color:inherit; text-decoration:none;}
.link{color:var(--primary); font-weight:800;}
.link:hover{text-decoration:underline;}

.app{
  display:grid;
  grid-template-columns: var(--sidebar-w) 1fr;
  grid-template-rows: var(--topbar-h) 1fr;
  grid-template-areas:
    "topbar topbar"
    "sidebar main";
  min-height:100vh;
  transition: grid-template-columns .18s ease;
}

.topbar{
  grid-area: topbar;
  height:var(--topbar-h);
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 18px;
  background:var(--panel);
  border-bottom:1px solid var(--border);
}

/* Sticky sidebar (desktop): full-height; starts under topbar when visible */
@media (min-width: 721px){
  .sidebar{
    position:sticky;
    top:var(--sidebar-top, var(--topbar-h));
    height:calc(100vh - var(--sidebar-top, var(--topbar-h)));
    overflow:auto;
    align-self:start;
  }
}

.topbar__left, .topbar__right{display:flex; align-items:center; gap:12px;}

.creditPill{
  display:flex;
  align-items:center;
  gap:10px;
  height:38px;
  padding:0 12px;
  border-radius:999px;
  border:1px solid var(--border);
  background:var(--panel);
}
.creditPill:hover{background:var(--primary-weak);}
.creditPill:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
.creditPill__title{font-weight:900; font-size:12px; color:var(--muted); text-transform:uppercase; letter-spacing:.5px;}
.creditPill__value{font-weight:900; font-size:14px; color:var(--text);}

html[data-theme="dark"] .creditPill{
  background:rgba(255,255,255,0.03);
  border-color:#2b3f5f;
}

.brand{display:flex; align-items:center; gap:10px; padding:6px 8px; border-radius:var(--radius-sm);}
.brand:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
.brand__logo{
  width:42px;
  height:42px;
  display:block;
  object-fit:contain;
  border-radius:12px;
}
.brand__name{font-weight:700; letter-spacing:0.2px;}

.iconBtn{
  border:1px solid var(--border);
  background:var(--panel);
  color:var(--text);
  height:38px; width:38px;
  border-radius:12px;
  display:grid; place-items:center;
  padding:0;
  cursor:pointer;
}
.iconBtn:hover{background:var(--primary-weak);}
.iconBtn:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}

html[data-theme="dark"] .iconBtn{
  background:rgba(255,255,255,0.03);
  border-color:#2b3f5f;
}

.icon{width:20px; height:20px; display:inline-block;}
.icon svg{width:100%; height:100%;}

@keyframes abSpin{
  from{transform:rotate(0deg)}
  to{transform:rotate(180deg)}
}

.iconBtn.is-spin .icon{animation:abSpin .18s linear;}

.profile{position:relative;}
.profile__btn{
  border:1px solid var(--border);
  background:var(--panel);
  color:var(--text);
  border-radius:999px;
  height:38px;
  padding:0 10px 0 6px;
  display:flex;
  align-items:center;
  gap:8px;
  cursor:pointer;
}
.profile__btn:hover{background:var(--primary-weak);}
.profile__btn:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
.profile__avatar{
  width:28px; height:28px;
  display:grid; place-items:center;
  border-radius:999px;
  background:var(--primary-weak);
  color:var(--primary);
  font-weight:800;
}
.profile__name{color:var(--text); font-weight:600; font-size:14px; max-width:140px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.profile__chev{opacity:.75;}

.menuOverlay{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.28);
  z-index:80;
}

.menu{
  position:fixed;
  left:var(--menu-left, auto);
  top:var(--menu-top, auto);
  width:240px;
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:8px;
  z-index:81;
}

.menu__meta{
  padding:10px 10px 8px;
  border-radius:14px;
  border:1px solid var(--border);
  background:var(--bg);
  margin-bottom:6px;
}
.menu__metaLabel{font-weight:900; font-size:12px; color:var(--muted); letter-spacing:.2px;}
.menu__metaValue{margin-top:4px; font-weight:900; color:var(--text);}
.menu__item{
  display:flex;
  align-items:center;
  gap:10px;
  padding:10px 10px;
  border-radius:12px;
  font-weight:600;
  color:var(--text);
}
.menu__item:hover{background:var(--primary-weak);}
.menu__item:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}

.menu__block{margin-top:6px; padding-top:8px; border-top:1px solid var(--border);}
.menu__title{font-weight:900; color:var(--muted); font-size:12px; padding:6px 10px 2px;}
.menu__field{display:flex; flex-direction:column; gap:6px; padding:6px 10px;}
.menu__label{font-weight:900; font-size:12px; color:var(--muted);}
.menu__actions{padding:6px 10px 10px;}
.menu__actions .btn{width:100%;}

.sidebar{
  grid-area: sidebar;
  background:var(--panel);
  border-right:1px solid var(--border);
  padding:12px;
  display:flex;
  flex-direction:column;

  /* Scrollbar (auto-hide) */
  scrollbar-width: thin;
  scrollbar-color: transparent transparent;
}

/* WebKit scrollbar styling (auto-hide) */
.sidebar::-webkit-scrollbar{width:10px; height:10px;}
.sidebar::-webkit-scrollbar-track{background:transparent;}
.sidebar::-webkit-scrollbar-thumb{
  background:transparent;
  border-radius:999px;
  border:3px solid transparent;
  background-clip:content-box;
}

/* Show scrollbar only on hover */
.sidebar:hover{scrollbar-color: rgba(17,24,39,.18) transparent;}
html[data-theme="dark"] .sidebar:hover{scrollbar-color: rgba(0,0,0,.38) transparent;}

.sidebar:hover::-webkit-scrollbar-thumb{background:rgba(17,24,39,.18);}
html[data-theme="dark"] .sidebar:hover::-webkit-scrollbar-thumb{background:rgba(0,0,0,.38);}

.sidebar:hover::-webkit-scrollbar-thumb:hover{background:rgba(17,24,39,.28);}
html[data-theme="dark"] .sidebar:hover::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.52);}

.sideNav{display:flex; flex-direction:column; gap:6px; flex:1 1 auto;}
.sideNav__divider{height:1px; background:var(--border); margin:10px 8px 6px; border-radius:999px;}
.sideNav__sectionTitle{padding:4px 10px 2px; font-weight:900; font-size:12px; color:var(--muted); letter-spacing:.3px;}
.sideNav__item{
  display:flex;
  align-items:center;
  gap:12px;
  padding:10px 10px;
  border-radius:14px;
  border:1px solid transparent;
  position:relative;
}
.sideNav__item:hover{background:var(--primary-weak);}
.sideNav__item:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
.sideNav__item.is-active{
  border-color:var(--border);
  background:var(--primary-weak);
}
.sideNav__label{
  font-weight:700;
  font-size:14px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.main{
  grid-area: main;
  padding:20px;
}

.sidebarSponsor{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-top:14px;
  padding:8px;
  border-radius:var(--radius);
  border:1px solid var(--border);
  background:var(--bg);
}
.sidebarSponsor:hover{background:var(--primary-weak);}
.sidebarSponsor:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
.sidebarSponsor__label{font-weight:1000; font-size:10px; color:var(--muted); letter-spacing:.15px;}
.sidebarSponsor__logo{margin-top:0; max-width:64px; height:auto; display:block; flex:0 0 auto;}
.sidebarSponsor__logo--dark{display:none;}
html[data-theme="dark"] .sidebarSponsor__logo--light{display:none;}
html[data-theme="dark"] .sidebarSponsor__logo--dark{display:block;}

/* Collapsed sidebar: only icons (no section titles/dividers/sponsor) */
.app[data-sidebar-state="collapsed"] .sideNav__sectionTitle{display:none;}
.app[data-sidebar-state="collapsed"] .sideNav__divider{display:none;}
.app[data-sidebar-state="collapsed"] .sidebarSponsor{display:none;}

.page{max-width:1100px; margin:0 auto;}
.page--wide{max-width:1400px;}
.pageHeader{display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin:8px 0 16px;}
.pageHeader--sticky{position:sticky; top:0; z-index:10; background:var(--bg); padding:8px 0 12px; border-bottom:1px solid var(--border);}
.pageHeader__actions{display:flex; gap:10px; flex-wrap:wrap; justify-content:flex-end;}

/* Anchor targets under sticky header */
#rettifica{scroll-margin-top:80px;}

.h1{margin:0; font-size:24px; letter-spacing:-0.3px;}
.h2{margin:18px 0 10px; font-size:16px; letter-spacing:-0.2px;}
.h2--tight{margin:0;}
.muted{margin:6px 0 0; color:var(--muted);}
.mt-12{margin-top:12px;}
.mt-8{margin-top:8px;}
.mt-18{margin-top:18px;}
.mb-12{margin-bottom:12px;}

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  height:38px;
  padding:0 12px;
  border-radius:12px;
  border:1px solid var(--border);
  background:var(--panel);
  color:var(--text);
  font:inherit;
  font-weight:700;
  cursor:pointer;
}
.btn:hover{background:var(--primary-weak);}
.btn:disabled{opacity:.55; cursor:not-allowed;}
.btn:disabled:hover{background:var(--panel);}
.btn:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
.btn--secondary{border-color:transparent; background:var(--primary-weak);}
.btn--danger{border-color:rgba(180,35,24,.35); background:rgba(180,35,24,.10); color:var(--danger);}
.btn--danger:hover{background:rgba(180,35,24,.14);}
.btn--sm{height:32px; padding:0 10px; border-radius:12px; font-size:13px;}

/* Rich text editor (solo per campi specifici) */
.richText{display:flex; flex-direction:column; gap:8px;}
.richText__toolbar{display:none; gap:8px; flex-wrap:wrap; align-items:center;}
.richText__btn{
  height:34px;
  padding:0 10px;
  border-radius:12px;
  border:1px solid var(--border);
  background:var(--panel);
  font-weight:800;
  cursor:pointer;
}
.richText__btn:hover{background:var(--primary-weak);}
.richText__btn:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
.richText__sep{width:1px; height:22px; background:var(--border); border-radius:999px; display:inline-block;}
.richText__editor{
  display:none;
  min-height:140px;
  padding:10px 12px;
  border-radius:var(--radius-sm);
  border:1px solid var(--border);
  background:var(--panel);
  outline:none;
}
.richText__editor:focus{border-color:rgba(37,99,235,.55);}
.richText[data-richtext-readonly="1"] .richText__toolbar{display:none;}
.richText__textarea{display:block;}
.richText.is-ready .richText__toolbar{display:flex;}
.richText.is-ready .richText__editor{display:block;}
.richText.is-ready .richText__textarea{display:none;}
.richText__editor ul, .richText__editor ol{padding-left:18px; margin:8px 0;}
.richText__editor p{margin:0 0 8px;}

.authSection__head{display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:8px;}

.grid{
  display:grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap:var(--gap);
  margin-top:12px;
}

.grid--2{grid-template-columns: repeat(2, minmax(0,1fr));}
@media (max-width: 720px){
  .grid--2{grid-template-columns: 1fr;}
}

.grid--lezioni{grid-template-columns: repeat(5, minmax(0,1fr));}
@media (max-width: 920px){
  .grid--lezioni{grid-template-columns: repeat(2, minmax(0,1fr));}
}
@media (max-width: 560px){
  .grid--lezioni{grid-template-columns: 1fr;}
}

.card{
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:14px;
  min-height:92px;
}
.card:hover{background:var(--primary-weak);}
.card__title{font-weight:800;}
.card__desc{margin-top:6px; color:var(--muted); font-size:14px;}

/* Status cards */
.statusCard{
  display:inline-block;
  padding:8px 12px;
  border-radius:14px;
  border:1px solid var(--border);
  background:var(--panel);
  font-weight:900;
  font-size:13px;
  line-height:1.1;
  white-space:normal;
  text-align:center;
  max-width:240px;
}
.statusCard--green{border-color:rgba(16,185,129,.45); background:rgba(16,185,129,.08); color:rgb(6,95,70);}
.statusCard--yellow{border-color:rgba(234,179,8,.55); background:rgba(234,179,8,.10); color:rgb(113,63,18);}
.statusCard--red{border-color:rgba(239,68,68,.55); background:rgba(239,68,68,.08); color:rgb(153,27,27);}
.statusCard--blue{border-color:rgba(59,130,246,.45); background:rgba(59,130,246,.08); color:rgb(29,78,216);}
.statusCard--gray{border-color:rgba(148,163,184,.55); background:rgba(148,163,184,.10); color:rgb(51,65,85);}

@media (max-width: 560px){
  .statusCard{max-width:170px; padding:7px 10px; font-size:12px;}
}

html[data-theme="dark"] .statusCard{background:rgba(255,255,255,.02); border-color:#2b3f5f; color:var(--text);}
html[data-theme="dark"] .statusCard--green{border-color:rgba(16,185,129,.35); background:rgba(16,185,129,.12); color:#a7f3d0;}
html[data-theme="dark"] .statusCard--yellow{border-color:rgba(234,179,8,.40); background:rgba(234,179,8,.12); color:#fde68a;}
html[data-theme="dark"] .statusCard--red{border-color:rgba(239,68,68,.40); background:rgba(239,68,68,.12); color:#fecaca;}
html[data-theme="dark"] .statusCard--blue{border-color:rgba(59,130,246,.35); background:rgba(59,130,246,.12); color:#bfdbfe;}
html[data-theme="dark"] .statusCard--gray{border-color:rgba(148,163,184,.35); background:rgba(148,163,184,.10); color:#e5e7eb;}

/* Auth (login) */
.authWrap{
  min-height:100vh;
  padding:28px 18px;
  display:grid;
  place-items:center;
  position:relative;
  overflow:hidden;
}
.authWrap--fancy{padding:40px 18px;}
.authWrap--social{padding:44px 18px;}
.authWrap::before{
  content:"";
  position:absolute;
  inset:-40px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220' viewBox='0 0 220 220'%3E%3Cg fill='none' stroke='%2391a4c4' stroke-opacity='0.28'%3E%3Ccircle cx='26' cy='30' r='2'/%3E%3Ccircle cx='94' cy='66' r='2'/%3E%3Ccircle cx='172' cy='44' r='2'/%3E%3Ccircle cx='58' cy='132' r='2'/%3E%3Ccircle cx='148' cy='146' r='2'/%3E%3Ccircle cx='198' cy='188' r='2'/%3E%3Ccircle cx='24' cy='198' r='2'/%3E%3Ccircle cx='112' cy='194' r='2'/%3E%3Ccircle cx='206' cy='104' r='2'/%3E%3C/g%3E%3C/svg%3E");
  background-repeat:repeat;
  background-position:0 0;
  animation:authFloat 18s linear infinite;
  pointer-events:none;
}
.authWrap::after{
  content:"";
  position:absolute;
  inset:0;
  background:var(--bg);
  opacity:.78;
  pointer-events:none;
}
.authWrap > *{position:relative; z-index:1;}

.authBlobs{
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:0;
}

.authBlob{
  position:absolute;
  width:520px;
  height:520px;
  border-radius:999px;
  filter:blur(62px);
  opacity:.55;
  background:rgba(37,99,235,.20);
  transform:translate3d(0,0,0);
}

.authBlob--a{left:-180px; top:-160px; animation:blobA 22s ease-in-out infinite;}
.authBlob--b{right:-220px; top:30%; width:620px; height:620px; background:rgba(16,185,129,.16); animation:blobB 26s ease-in-out infinite;}
.authBlob--c{left:18%; bottom:-240px; width:700px; height:700px; background:rgba(234,179,8,.14); animation:blobC 28s ease-in-out infinite;}

@keyframes authFloat{
  from{transform:translate3d(0,0,0)}
  to{transform:translate3d(-220px,-220px,0)}
}

@keyframes blobA{
  0%{transform:translate3d(0,0,0) scale(1)}
  50%{transform:translate3d(120px,70px,0) scale(1.06)}
  100%{transform:translate3d(0,0,0) scale(1)}
}
@keyframes blobB{
  0%{transform:translate3d(0,0,0) scale(1)}
  50%{transform:translate3d(-120px,-60px,0) scale(1.05)}
  100%{transform:translate3d(0,0,0) scale(1)}
}
@keyframes blobC{
  0%{transform:translate3d(0,0,0) scale(1)}
  50%{transform:translate3d(60px,-90px,0) scale(1.08)}
  100%{transform:translate3d(0,0,0) scale(1)}
}

html[data-theme="dark"] .authWrap::before{filter:brightness(.85);}
html[data-theme="dark"] .authWrap::after{opacity:.86;}
html[data-theme="dark"] .authBlob{opacity:.42;}

/* Social-style login */
.socialCard{
  width:min(420px, 100%);
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:calc(var(--radius) + 4px);
  padding:22px;
}

.socialHeader{display:flex; flex-direction:column; align-items:center; text-align:center; gap:10px; margin-bottom:14px;}
.socialLogo{
  width:62px;
  height:62px;
  border-radius:18px;
  border:1px solid var(--border);
  background:var(--primary-weak);
  object-fit:contain;
}
.socialTitle{font-weight:1000; letter-spacing:-0.6px; font-size:22px; line-height:1.1;}
.socialSub{font-weight:800; font-size:13px; margin:0;}

.socialForm{display:flex; flex-direction:column; gap:14px; margin-top:10px;}
.socialRow{display:flex; align-items:center; justify-content:flex-start; margin-top:-4px;}
.socialSubmit{width:100%; justify-content:center;}

@media (max-width: 520px){
  .authWrap--social{padding:30px 14px;}
  .socialCard{padding:18px;}
  .socialTitle{font-size:20px;}
}

.authShell{
  width:min(980px, 100%);
  display:grid;
  grid-template-columns: 1.05fr .95fr;
  gap:18px;
  align-items:stretch;
}

.authIntro{
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:24px;
  display:flex;
  flex-direction:column;
  gap:18px;
}

.authIntro__copy{margin-top:6px;}
.authIntro__headline{font-weight:1000; letter-spacing:-0.6px; font-size:28px; line-height:1.1;}
.authIntro__sub{font-weight:700; font-size:14px;}

.authBrand--big .authBrand__logo{width:58px; height:58px; border-radius:18px;}
.authBrand--big .authBrand__title{font-size:22px;}

.authCard{
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:22px;
}
.authCard__head{display:flex; flex-direction:column; gap:4px;}
.authCard__title{font-weight:1000; font-size:18px; letter-spacing:-0.3px;}
.authCard__subtitle{font-size:13px; margin:0;}
.authCard__msg{margin-top:12px;}
.authBrand{display:flex; align-items:center; gap:14px;}
.authBrand__logo{width:54px; height:54px; border-radius:16px; border:1px solid var(--border); background:var(--primary-weak); object-fit:contain;}
.authBrand__title{font-weight:1000; letter-spacing:-0.6px; font-size:22px; line-height:1.1;}
.authBrand__subtitle{margin-top:4px; color:var(--muted); font-weight:800; font-size:13px; letter-spacing:.2px;}

.authForm{margin-top:16px; display:flex; flex-direction:column; gap:14px;}
.authActions{display:flex; align-items:center; justify-content:flex-end; gap:10px; margin-top:6px;}
.authActions .btn{min-height:44px;}
.authFoot{margin-top:12px; font-size:13px;}

.authRow{display:flex; align-items:center; justify-content:space-between; gap:12px;}

.input--lg{height:46px; font-size:15px;}

.inputWrap{position:relative;}
.input--pw{padding-right:46px;}
.pwToggle{
  position:absolute;
  right:8px;
  top:50%;
  transform:translateY(-50%);
  width:34px;
  height:34px;
  border-radius:12px;
  border:1px solid var(--border);
  background:var(--bg);
  color:var(--muted);
  display:grid;
  place-items:center;
  cursor:pointer;
}
.pwToggle:hover{background:var(--primary-weak); color:var(--text);}
.pwToggle:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
.pwToggle svg{width:18px; height:18px;}

.btn--lg{height:46px; padding:0 16px; font-weight:900;}

.checkRow{display:flex; align-items:center; gap:10px; margin-top:-4px; user-select:none;}
.checkRow__box{width:18px; height:18px; accent-color:var(--primary);}
.checkRow__label{font-weight:800; color:var(--text);}

@media (max-width: 520px){
  .authWrap--fancy{padding:26px 14px;}
  .authShell{grid-template-columns: 1fr;}
  .authIntro{padding:18px;}
  .authIntro__headline{font-size:22px;}
  .authCard{padding:18px;}
  .authBrand__title{font-size:20px;}
}

@media (max-width: 860px){
  .authShell{grid-template-columns: 1fr;}
  .authBadges{margin-top:8px;}
}

.table__actions{white-space:nowrap;}
.table__center{text-align:center; vertical-align:middle;}

/* Action button micro-animations (no shadow/glow) */
.btn--anim{transition:transform .12s ease, background-color .12s ease, border-color .12s ease;}
.btn--anim:hover{transform:translateY(-1px);}
.btn--anim:active{transform:translateY(0);}

/* Calendar (lezioni) */
.calendar{margin-top:12px;}
.calendar__head{display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;}
.calendar__month{font-weight:900;}
.calendar__nav{display:flex; align-items:center; gap:8px;}

.calendarGrid{display:grid; grid-template-columns:repeat(7, minmax(0,1fr)); gap:8px; margin-top:10px;}
.calendarDow{color:var(--muted); font-weight:900; font-size:12px; text-align:center; padding:6px 0;}
.calendarEmpty{min-height:64px; border:1px dashed transparent; border-radius:14px;}

.calendarDay{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:8px;
  min-height:64px;
  padding:10px;
  border-radius:14px;
  border:1px solid var(--border);
  background:var(--panel);
  font:inherit;
  cursor:pointer;
}
.calendarDay:hover{background:var(--primary-weak);}
.calendarDay:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
.calendarDay.is-past{opacity:.7;}
.calendarDay.is-selected{border-color:rgba(59,130,246,.55); background:rgba(59,130,246,.06);}
.calendarDay.is-selected:hover{background:rgba(59,130,246,.10);}
.calendarDay__num{font-weight:900;}
.calendarDay__badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;
  height:22px;
  padding:0 7px;
  border-radius:999px;
  border:1px solid rgba(59,130,246,.35);
  background:rgba(59,130,246,.10);
  color:rgb(29,78,216);
  font-weight:900;
  font-size:12px;
}

html[data-theme="dark"] .calendarDay.is-selected{border-color:rgba(96,165,250,.60); background:rgba(96,165,250,.14);}
html[data-theme="dark"] .calendarDay.is-selected:hover{background:rgba(96,165,250,.18);}
html[data-theme="dark"] .calendarDay__badge{border-color:rgba(96,165,250,.40); background:rgba(96,165,250,.18); color:#bfdbfe;}

@media (max-width: 520px){
  .calendarGrid{gap:6px;}
  .calendarEmpty{min-height:54px; border-radius:12px;}
  .calendarDay{min-height:54px; padding:8px; border-radius:12px;}
  .calendarDay__badge{min-width:20px; height:20px; padding:0 6px; font-size:11px;}
}

/* Calendar badge tooltip (reuse .help) */
.help.help--badge{margin-left:0;}
.help.help--badge .help__tip{left:auto; right:0; transform:none; min-width:260px;}

.lessonCards{display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:var(--gap); margin-top:12px;}
@media (max-width: 820px){
  .lessonCards{grid-template-columns: 1fr;}
}

.lessonCard{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:12px;
}
.lessonCard.is-highlight{border-color:rgba(59,130,246,.55); background:rgba(59,130,246,.06);}
.lessonCard.is-invalid{border-color:rgba(234,179,8,.45); background:rgba(234,179,8,.06);}
.lessonCard__title{font-weight:900;}
.lessonCard__meta{margin-top:8px; display:flex; flex-direction:column; gap:6px;}
.lessonCard__actions{display:flex; align-items:flex-start; gap:8px; flex:0 0 auto;}
.lessonCard__actions .deleteConfirmRow{margin-top:0;}

.section{margin-top:18px;}
.list{margin:10px 0 0; padding-left:18px; color:var(--text);}
.list li{margin:8px 0;}
.kbd{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size:12px; padding:2px 6px; border:1px solid var(--border); border-radius:8px; background:var(--panel);}

/* /check (pagina pubblica attestato) */
.checkProgram{font-weight:600; line-height:1.45;}
.checkProgram ul, .checkProgram ol{padding-left:18px; margin:8px 0;}
.checkProgram p{margin:0 0 8px;}
.checkProgram p:last-child{margin-bottom:0;}
.checkProgram a{color:var(--primary); text-decoration:underline;}

.formInline{margin:0;}

.panel{
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:12px;
}
.panel--info{border-color:rgba(59,130,246,.35); background:rgba(59,130,246,.06);}
.panel--warn{border-color:rgba(234,179,8,.35); background:rgba(234,179,8,.06);}
.panel--danger{border-color:rgba(180,35,24,.30); background:rgba(180,35,24,.06);}
.panel--spaced{margin-top:16px;}
.panel__row{display:flex; align-items:center; justify-content:space-between; gap:16px; padding:10px 6px; border-top:1px solid var(--border);}
.panel__row:first-child{border-top:none;}
.panel__label{color:var(--muted); font-weight:700;}
.panel__value{font-weight:700;}

.tableWrap{padding:0; overflow:auto; border-radius:var(--radius);}
.tableWrap .table th, .tableWrap .table td{white-space:nowrap;}

.table{width:100%; border-collapse:separate; border-spacing:0;}
.table th, .table td{padding:12px 10px; text-align:left; border-top:1px solid var(--border);}
.table thead th{border-top:none; color:var(--muted); font-size:13px; font-weight:800; letter-spacing:.2px;}

.row--clickable{cursor:pointer;}
.row--clickable:hover{background:var(--primary-weak);}
.row--clickable:focus-visible{outline:2px solid var(--primary); outline-offset:-2px; border-radius:10px;}

.row--clickable.row--action{background:rgba(234,179,8,.10);}
.row--clickable.row--action:hover{background:rgba(234,179,8,.14);}

.pill{display:inline-flex; align-items:center; height:26px; padding:0 10px; border-radius:999px; border:1px solid var(--border); background:var(--panel); font-weight:800; font-size:12px;}
.pill--warn{border-color:rgba(234,179,8,.35); background:rgba(234,179,8,.10); color:rgb(161,98,7);}
.pill--ok{border-color:rgba(34,197,94,.35); background:rgba(34,197,94,.10); color:rgb(21,128,61);}
.pill--danger{border-color:rgba(180,35,24,.30); background:rgba(180,35,24,.10); color:var(--danger);}
.pill--info{border-color:rgba(59,130,246,.35); background:rgba(59,130,246,.10); color:rgb(29,78,216);}

html[data-theme="dark"] .pill--warn{border-color:rgba(234,179,8,.40); background:rgba(234,179,8,.12); color:#fde68a;}
html[data-theme="dark"] .pill--ok{border-color:rgba(16,185,129,.35); background:rgba(16,185,129,.12); color:#a7f3d0;}
html[data-theme="dark"] .pill--danger{border-color:rgba(239,68,68,.40); background:rgba(239,68,68,.12); color:#fecaca;}
html[data-theme="dark"] .pill--info{border-color:rgba(96,165,250,.40); background:rgba(96,165,250,.16); color:#bfdbfe;}

.docList__status{display:flex; align-items:center; gap:8px; flex-wrap:wrap;}

/* details/summary styled like button */
.detailsSummary{display:inline-flex; align-items:center; gap:8px; cursor:pointer; list-style:none;}
.detailsSummary::-webkit-details-marker{display:none;}

.error{max-width:520px; margin:48px auto; background:var(--panel); border:1px solid var(--border); border-radius:var(--radius); padding:18px;}
.error__code{font-weight:900; font-size:44px; letter-spacing:-1px;}
.error__actions{margin-top:14px;}

.overlay{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.35);
}

.form{background:var(--panel); border:1px solid var(--border); border-radius:var(--radius); padding:12px;}
.tableFilters{margin:12px 0 12px;}
.tableFilters--narrow{max-width:780px; margin-right:auto;}
@media (max-width: 820px){
  .tableFilters--narrow{max-width:none;}
}

/* Multipick (search + multi-select) */
.multiPick{border:1px solid var(--border); border-radius:12px; background:var(--panel);}
.multiPick[open]{border-color:rgba(37,99,235,.35);}
.multiPick__summary{list-style:none; cursor:pointer; padding:10px 10px; display:flex; align-items:center; justify-content:space-between; gap:10px; font-weight:800;}
.multiPick__summary::-webkit-details-marker{display:none;}
.multiPick__summaryText{display:flex; flex-direction:column; gap:2px; min-width:0;}
.multiPick__summaryTop{display:flex; align-items:center; gap:8px; min-width:0;}
.multiPick__count{font-weight:900; color:var(--muted); font-size:12px; white-space:nowrap;}
.multiPick__hint{font-weight:800; color:var(--muted); font-size:12px;}
.multiPick__chev{width:18px; height:18px; color:var(--muted); flex:0 0 auto;}
.multiPick__panel{border-top:1px solid var(--border); padding:10px;}
.multiPick__list{margin-top:10px; display:flex; flex-direction:column; gap:8px; max-height:260px; overflow:auto; padding-right:6px;}
.multiPick__list--tall{max-height:360px;}
.multiPick__opt{display:flex; align-items:flex-start; gap:10px; padding:10px; border-radius:12px; border:1px solid var(--border); background:var(--panel); cursor:pointer;}
.multiPick__opt:hover{background:var(--primary-weak);}
.multiPick__opt input{width:18px; height:18px; margin-top:1px;}
.multiPick__opt.is-hidden{display:none;}
.multiPick__opt.is-disabled{opacity:.55; cursor:not-allowed;}
.multiPick__opt.is-disabled:hover{background:var(--panel);}
.multiPick__optText{display:flex; flex-direction:column; gap:2px; min-width:0;}
.multiPick__optTitle{font-weight:900;}
.multiPick__optMeta{font-weight:800; color:var(--muted); font-size:12px;}
.multiPickSelected{margin-top:10px; display:flex; flex-wrap:wrap; gap:8px;}
.multiPickChip{display:inline-flex; align-items:center; gap:8px; padding:6px 10px; border-radius:999px; border:1px solid var(--border); background:var(--panel); font-weight:900; font-size:12px;}
.multiPickChip__x{display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px; border-radius:999px; border:1px solid var(--border); background:transparent; color:var(--muted);}
.multiPickChip:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}

html[data-theme="dark"] .multiPickChip{background:rgba(255,255,255,.03); border-color:rgba(148,163,184,.22);}
html[data-theme="dark"] .multiPickChip__x{border-color:rgba(148,163,184,.22); background:rgba(255,255,255,.03); color:var(--text);}

/* Participants picker layout */
.pickGrid{display:grid; grid-template-columns: 1.6fr 1fr; gap:12px; align-items:start;}
.pickSelectedPanel{padding:12px;}
.pickSelectedPanel__title{font-weight:900; margin-bottom:8px; display:flex; align-items:center; justify-content:space-between; gap:10px;}
.pickSelectedPanel__list{display:flex; flex-direction:column; gap:8px;}
.pickSelectedPanel__empty{color:var(--muted); font-weight:800; font-size:13px;}

/* Simple iframe modal */
.modalBackdrop{position:fixed; inset:0; background:rgba(0,0,0,.35);}
.modal{position:fixed; inset:12px; background:var(--panel); border:1px solid var(--border); border-radius:var(--radius); display:flex; flex-direction:column;}
.modal__header{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 12px; border-bottom:1px solid var(--border);}
.modal__title{font-weight:900;}
.modal__body{flex:1 1 auto;}
.modal__iframe{width:100%; height:100%; border:0; border-radius:0 0 var(--radius) var(--radius);}

/* Inline embedded iframe (used in chiusura partecipanti) */
.inlineEmbed{border:1px solid var(--border); border-radius:12px; background:var(--panel); overflow:hidden;}
.inlineEmbed__head{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 12px; border-bottom:1px solid var(--border);}
.inlineEmbed__title{font-weight:800;}
.inlineEmbed__body{height:380px;}
.inlineEmbed__frame{width:100%; height:100%; border:0; display:block;}

/* Partecipanti: no-bold typography (cards + chips + count) */
.participantsPick__count{font-weight:600;}
.participantsPick .multiPick__optTitle{font-weight:600;}
.participantsPick .multiPick__optMeta{font-weight:600;}
.participantsPick .multiPickChip{font-weight:600; font-size:13px;}
.participantsPick .pickSelectedPanel__title{font-weight:700;}

@media (max-width: 720px){
  .pickGrid{grid-template-columns: 1fr;}
  .inlineEmbed__body{height:440px;}
}
.formGrid{display:grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap:12px;}
.formGrid--1{grid-template-columns: 1fr;}
.formGrid--3{grid-template-columns: repeat(3, minmax(0,1fr));}
.formGrid--4{grid-template-columns: repeat(4, minmax(0,1fr));}
.field{display:flex; flex-direction:column; gap:6px;}
.field--full{grid-column:1 / -1;}
.field--span2{grid-column: span 2;}
.field__label{font-weight:800; font-size:13px; color:var(--muted);}
.field__error{margin-top:6px; color:var(--danger); font-weight:800; font-size:13px;}
.embedCompact{padding:12px;}
.embedCompact__title{font-weight:900; font-size:18px;}
.fieldBox{
  border:1px solid var(--border);
  border-radius:12px;
  padding:12px;
  background:var(--panel);
}
.input{
  width:100%;
  border:1px solid var(--border);
  border-radius:12px;
  padding:10px 10px;
  background:var(--panel);
  color:var(--text);
  font:inherit;
}
.input:focus{outline:none; border-color:rgba(37,99,235,.55);}

/* Edizioni: Aziende picker (coerente con campi form) */
.aziendePick__head{justify-content:space-between; gap:12px;}
.aziendePick__title{font-weight:900;}
.aziendePick__count{margin-left:8px;}
.aziendePick__hintTitle{font-weight:800; font-size:12px;}

/* Keep the whole picker compact: fixed height + internal scrolling */
.aziendePick{display:flex; flex-direction:column; gap:12px; height:420px; overflow:hidden;}
.aziendePick .multiPickSelected{
  margin:0;
  padding:0;
  max-height:84px;
  overflow:auto;
}
.aziendePick__search{margin:0;}
.aziendePick .multiPick__list{flex:1 1 auto; max-height:none; overflow:auto;}

/* Chip style (only inside Aziende picker) */
.aziendePick .multiPickChip{font-weight:700; font-size:13px;}

/* Codice fiscale: always appear uppercase */
.input--cf{text-transform:uppercase; letter-spacing:.4px;}

/* Inline row helpers */
.row--inline{display:flex; align-items:center; gap:10px; flex-wrap:wrap;}
.validationForm__actions{justify-content:flex-end; margin-top:10px;}
.check{display:inline-flex; align-items:center; gap:8px; font-weight:800;}
.check input{width:18px; height:18px;}

/* Category chips (Docenti -> Autorizzazioni) */
.catChoices{display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:2px;}
.catChoice{position:relative; display:inline-flex;}
.catChoice input{
  position:absolute;
  inset:0;
  opacity:0;
  cursor:pointer;
}
.catChoice__label{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:10px 12px;
  border-radius:999px;
  border:1px solid var(--border);
  background:var(--panel);
  font-weight:900;
  font-size:13px;
  user-select:none;
}
.catChoice:hover .catChoice__label{background:var(--primary-weak);}
.catChoice input:focus-visible + .catChoice__label{outline:2px solid var(--primary); outline-offset:2px;}
.catChoice input:checked + .catChoice__label{border-color:rgba(37,99,235,.35); background:var(--primary-weak);}
.catChoice input:checked + .catChoice__label::before{content:"✓"; font-weight:900;}
.catChoice input:disabled + .catChoice__label{opacity:.6; cursor:not-allowed;}
.catChoice input:disabled{cursor:not-allowed;}

/* Modern select dropdown (no shadow/gradient) */
select.input{
  -webkit-appearance:none;
  -moz-appearance:none;
  appearance:none;
  padding-right:42px;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--muted) 50%),
    linear-gradient(135deg, var(--muted) 50%, transparent 50%);
  background-position:
    calc(100% - 18px) calc(50% - 2px),
    calc(100% - 12px) calc(50% - 2px);
  background-size:6px 6px, 6px 6px;
  background-repeat:no-repeat;
}
select.input:hover{border-color:rgba(107,114,128,.55);}
select.input:focus{border-color:rgba(37,99,235,.55);}

/* Custom select (modern dropdown list) */
.cSelect{position:relative; width:100%;}
.cSelect__native{
  position:absolute;
  width:1px;
  height:1px;
  opacity:0;
  pointer-events:none;
  left:0;
  top:0;
}
.cSelect__btn{
  width:100%;
  border:1px solid var(--border);
  border-radius:12px;
  padding:10px 12px;
  background:var(--panel);
  color:var(--text);
  font:inherit;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  cursor:pointer;
  text-align:left;
}
.cSelect__btn:hover{border-color:rgba(107,114,128,.55);}
.cSelect__btn:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
.cSelect__value{min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.cSelect__chev{width:18px; height:18px; flex:0 0 auto; color:var(--muted);}
.cSelect__chev svg{width:100%; height:100%;}

.cSelect.is-open{z-index:80;}
.cSelect.is-open .cSelect__btn{border-bottom-left-radius:0; border-bottom-right-radius:0; border-bottom-color:transparent;}

.cSelect__menu{
  position:absolute;
  left:0;
  right:0;
  top:100%;
  margin-top:-1px;
  background:var(--panel);
  border:1px solid var(--border);
  border-top:1px solid var(--border);
  border-top-left-radius:0;
  border-top-right-radius:0;
  border-bottom-left-radius:12px;
  border-bottom-right-radius:12px;
  padding:6px;
  max-height:260px;
  overflow:auto;
  z-index:81;
}

/* Active border across both button + list */
.cSelect:focus-within .cSelect__btn{border-color:rgba(37,99,235,.55);}
.cSelect.is-open .cSelect__menu{border-color:rgba(37,99,235,.55);}

.cSelect__opt{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:10px 10px;
  border-radius:10px;
  border:1px solid transparent;
  background:transparent;
  cursor:pointer;
  font:inherit;
  color:var(--text);
}
.cSelect__opt:hover{background:var(--primary-weak);}
.cSelect__opt:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
.cSelect__opt.is-active{background:var(--primary-weak); border-color:rgba(37,99,235,.20);}
.cSelect__opt.is-selected{border-color:rgba(37,99,235,.22);}
.cSelect__check{width:18px; height:18px; flex:0 0 auto; color:var(--primary); opacity:0;}
.cSelect__opt.is-selected .cSelect__check{opacity:1;}

.cSelect.is-disabled .cSelect__btn{opacity:.6; cursor:not-allowed;}

/* Table: name with optional mini logo */
.tableNameWithLogo{display:flex; align-items:center; gap:10px; min-width:0;}
.tableMiniLogo{
  height:22px;
  width:auto;
  max-width:70px;
  border-radius:8px;
  object-fit:contain;
  border:1px solid rgba(107,114,128,.35);
  background:var(--panel);
  flex:0 0 auto;
  display:block;
}
.formActions{
  display:flex;
  justify-content:flex-end;
  gap:10px;
  position:sticky;
  bottom:0;
  z-index:5;
  background:var(--panel);
  border-top:1px solid var(--border);
  padding:12px;
  margin:12px -12px -12px;
  border-bottom-left-radius:var(--radius);
  border-bottom-right-radius:var(--radius);
}

.formActions--transparent{
  position:static;
  background:transparent;
  border-top:0;
  padding:0;
  margin:10px 0 0;
}

/* Page forms: keep actions paired and same size */
.formActions--page{
  position:static;
  margin:12px 0 0;
  border-radius:var(--radius);
  display:grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.formActions--page.formActions--three{grid-template-columns: repeat(3, minmax(0, 1fr));}
.formActions--page.formActions--single{grid-template-columns: 1fr;}
.formActions--page .btn{width:100%;}

/* Searchable combo (comuni) */
.fileDrop{
  margin-top:8px;
  position:relative;
  border:none;
  border-radius:var(--radius);
  padding:0;
  background:transparent;
  display:grid;
  gap:10px;
}
.fileDrop.is-over .fileDrop__box{outline:2px solid var(--border); outline-offset:2px;}
.fileDrop__native{
  position:absolute;
  width:1px;
  height:1px;
  opacity:0;
  pointer-events:none;
}
.fileDrop__box{
  border:1px dashed var(--border);
  border-radius:calc(var(--radius) - 4px);
  padding:12px 12px;
  min-height:86px;
  display:grid;
  place-items:center;
  text-align:center;
  gap:8px;
  cursor:pointer;
}
.fileDrop__box:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
.fileDrop__icon{
  width:36px;
  height:36px;
  border:1px solid var(--border);
  border-radius:14px;
  display:grid;
  place-items:center;
}
.fileDrop__icon svg{width:22px; height:22px;}
.fileDrop__title{font-weight:600;}
.fileDrop__sub{font-weight:600;}
.fileDrop__preview{margin-top:2px;}

.field__req{font-weight:900;}

.fieldLabelRow{display:flex; align-items:center; justify-content:space-between; gap:10px;}
.fieldLabelRow__actions{display:inline-flex; align-items:center; gap:10px; flex-wrap:wrap; justify-content:flex-end;}

.help{display:inline-flex; align-items:center; position:relative; margin-left:6px;}
.help__icon{
  display:inline-grid;
  place-items:center;
  width:18px;
  height:18px;
  border-radius:999px;
  border:1px solid var(--border);
  font-size:12px;
  line-height:1;
  color:var(--text);
  background:var(--panel);
}
.help:focus-visible{outline:2px solid var(--primary); outline-offset:2px; border-radius:999px;}
.help__tip{
  position:absolute;
  left:50%;
  transform:translateX(-50%);
  bottom:calc(100% + 8px);
  min-width:240px;
  max-width:360px;
  padding:10px 12px;
  border-radius:12px;
  background:#111;
  color:#fff;
  font-size:12px;
  line-height:1.35;
  font-weight:600;
  border:1px solid rgba(255,255,255,0.08);
  display:none;
  z-index:200;
}
.help:hover .help__tip, .help:focus-within .help__tip{display:block;}

.help.help--status{margin-left:0;}
.help.help--status .help__tip{min-width:auto; max-width:none; padding:8px 10px;}

.popovers{position:fixed; inset:0; z-index:220; pointer-events:none;}
.popoverBackdrop{position:absolute; inset:0; pointer-events:auto; background:transparent; border:0; padding:0;}
.popover{
  position:absolute;
  pointer-events:auto;
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:12px;
  width:320px;
}
.popover__title{font-weight:700; margin:0 0 10px;}
.popover__actions{display:grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap:10px;}
.popover__actions .btn{width:100%;}

.fileCards{display:block; margin-top:8px;}
.fileCard{
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:12px;
  background:var(--panel);
  width:100%;
  position:relative;
}
.fileCard:hover{background:var(--primary-weak);}
.fileCard:focus-within{outline:2px solid var(--primary); outline-offset:2px;}
.fileCard__link{display:block; padding-right:44px;}
.fileCard__title{font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.fileCard__meta{margin-top:6px;}
.fileCard__x{
  position:absolute;
  top:10px;
  right:10px;
  width:34px;
  height:34px;
  border-radius:12px;
  border:1px solid rgba(180,35,24,.30);
  background:rgba(180,35,24,.06);
  color:var(--danger);
  font-size:20px;
  line-height:1;
  cursor:pointer;
}
.fileCard__x:hover{background:rgba(180,35,24,.10);}
.fileCard__x:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
.fileCard.is-removed{border-color:rgba(180,35,24,.30); background:rgba(180,35,24,.06);}
.fileCard.is-removed .fileCard__link{opacity:.65; pointer-events:none;}

.fileConfirm{margin-top:10px; padding-top:10px; border-top:1px solid var(--border);}
.fileConfirm__title{font-weight:900;}
.fileConfirm__actions{display:grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap:10px; margin-top:10px;}
.fileConfirm__actions .btn{width:100%;}

.filePreviewCard{
  border:1px solid var(--border);
  border-radius:14px;
  padding:10px;
  background:var(--panel);
  display:flex;
  gap:10px;
  align-items:center;
  width:100%;
  position:relative;
}
.filePreviewCard:hover{background:var(--primary-weak);}
.filePreviewCard:focus-within{outline:2px solid var(--primary); outline-offset:2px;}
.filePreviewCard.is-removed{border-color:rgba(180,35,24,.30); background:rgba(180,35,24,.06);}
.filePreviewCard.is-removed .filePreviewCard__link{opacity:.65; pointer-events:none;}

.filePreviewCard__link{display:flex; align-items:center; gap:10px; width:100%; padding-right:44px; color:inherit; text-decoration:none;}
.filePreviewCard__body{min-width:0;}
.filePreviewCard__thumb svg{width:22px; height:22px;}
.filePreviewCard__thumb{width:44px; height:44px; border-radius:12px; border:1px solid var(--border); background:var(--primary-weak); overflow:hidden; display:flex; align-items:center; justify-content:center;}
.filePreviewCard__thumb img{width:100%; height:100%; object-fit:cover; display:block;}
.filePreviewCard__name{font-weight:700; font-size:13px; max-width:520px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.filePreviewCard__size{margin-top:4px; font-size:12px; color:var(--muted); font-weight:800;}
.filePreviewCard__x{
  position:absolute;
  top:10px;
  right:10px;
  width:34px;
  height:34px;
  border-radius:12px;
  border:1px solid rgba(180,35,24,.30);
  background:rgba(180,35,24,.06);
  color:var(--danger);
  font-size:20px;
  line-height:1;
  cursor:pointer;
}
.filePreviewCard__x:hover{background:rgba(180,35,24,.10);}
.filePreviewCard__x:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
.cCombo{position:relative;}
.cCombo.is-disabled{opacity:.75;}
.cCombo__menu{
  position:absolute;
  left:0;
  right:0;
  top:calc(100% + 6px);
  z-index:40;
  max-height:260px;
  overflow:auto;
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:12px;
  padding:6px;
}
.cCombo__opt{
  width:100%;
  text-align:left;
  border:1px solid transparent;
  background:transparent;
  border-radius:10px;
  padding:10px 10px;
  cursor:pointer;
  color:var(--text);
}
.cCombo__opt:hover{background:var(--soft);}
.cCombo__opt:focus{outline:none; border-color:var(--accent); background:var(--soft);}
.cCombo__empty{padding:10px; color:var(--muted);}

.deleteConfirmRow{
  margin-top:10px;
  padding:12px;
  border:1px solid rgba(180,35,24,.30);
  background:rgba(180,35,24,.06);
  border-radius:var(--radius);
}
.deleteConfirmRow__title{font-weight:900;}
.deleteConfirmRow__actions{display:grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap:10px; margin-top:10px;}
.deleteConfirmRow__actions .btn{width:100%;}

/* Confirmation popover (overlay above the button) */
.confirmAnchor{position:relative; display:inline-flex; align-items:center; justify-content:flex-end;}
.confirmPopover{
  position:absolute;
  right:0;
  bottom:calc(100% + 10px);
  z-index:70;
  width:min(380px, calc(100vw - 24px));
  padding:12px;
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
}
.confirmPopover__title{font-weight:900;}
.confirmPopover__actions{display:grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap:10px; margin-top:10px;}
.confirmPopover__actions .btn{width:100%;}

.confirmRow{
  margin-top:10px;
  padding:12px;
  border:1px solid rgba(59,130,246,.35);
  background:rgba(59,130,246,.06);
  border-radius:var(--radius);
}
.confirmRow__title{font-weight:900;}
.confirmRow__actions{display:grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap:10px; margin-top:10px;}
.confirmRow__actions .btn{width:100%;}

.preBox{margin:0; white-space:pre-wrap; font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace; font-size:13px; line-height:1.45;}

.tooltip{
  position:fixed;
  z-index:50;
  pointer-events:none;
  background:#0b0f18;
  color:white;
  padding:8px 10px;
  border-radius:10px;
  font-weight:700;
  font-size:12px;
  max-width:220px;
}

.toasts{
  position:fixed;
  right:18px;
  top:calc(var(--topbar-h) + 12px);
  z-index:60;
  display:flex;
  flex-direction:column;
  gap:10px;
}

.toast{
  width:340px;
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:12px;
  display:flex;
  align-items:flex-start;
  gap:12px;
  cursor:pointer;
  user-select:none;
  transform:translateY(-2px);
  opacity:0;
  animation:toastIn .16s ease forwards;
}
.toast__msg{font-weight:700;}
.toast__meta{margin-top:4px; color:var(--muted); font-size:13px;}

.toast:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}

.toast__icon{
  width:34px;
  height:34px;
  border-radius:12px;
  display:grid;
  place-items:center;
  border:1px solid var(--border);
  flex:0 0 auto;
}
.toast__icon svg{width:18px; height:18px;}

.toast__body{min-width:0;}

.toast--success{border-color:rgba(34,197,94,.35);}
.toast--success .toast__icon{background:rgba(34,197,94,.10); color:rgb(22,163,74);}

.toast--error{border-color:rgba(244,63,94,.35);}
.toast--error .toast__icon{background:rgba(244,63,94,.10); color:rgb(190,18,60);}

.toast--info{border-color:rgba(59,130,246,.35);}
.toast--info .toast__icon{background:rgba(59,130,246,.10); color:rgb(37,99,235);}

.toast--warning{border-color:rgba(234,179,8,.35);}
.toast--warning .toast__icon{background:rgba(234,179,8,.14); color:rgb(202,138,4);}

.toast--out{opacity:0; transform:translateY(-4px); transition:opacity .14s ease, transform .14s ease;}

@keyframes toastIn{
  from{opacity:0; transform:translateY(-4px)}
  to{opacity:1; transform:translateY(0)}
}

/* Sidebar collapsed (dock) */
.app[data-sidebar-state="collapsed"]{
  grid-template-columns: var(--sidebar-w-collapsed) 1fr;
}
.app[data-sidebar-state="collapsed"] .sideNav__label{display:none;}
.app[data-sidebar-state="collapsed"] .sideNav__item{justify-content:center; padding:12px 10px;}

/* Mobile sidebar overlay */
@media (max-width: 920px){
  .grid{grid-template-columns: repeat(2, minmax(0,1fr));}
}
@media (max-width: 720px){
  .app{grid-template-columns: 1fr !important; grid-template-areas: "topbar" "main";}
  .app[data-sidebar-state="collapsed"]{grid-template-columns: 1fr !important;}
  .sidebar{
    position:fixed;
    top:var(--topbar-h);
    left:0;
    height:calc(100vh - var(--topbar-h));
    width:100vw;
    z-index:55;
    transform:translateX(-105%);
    transition:transform .18s ease;
    display:none;
    border-right:none;
    padding:14px;
  }
  .app[data-sidebar-mode="overlay"] .sidebar{display:block; transform:translateX(0);}
  .app[data-sidebar-mode="overlay"] .sideNav__label{display:inline;}
  .app[data-sidebar-mode="overlay"] .sideNav__item{justify-content:flex-start; padding:12px 12px;}
  .overlay{z-index:54;}
  .main{padding:16px;}
  .pageHeader{flex-direction:column; align-items:stretch;}
  .toasts{right:12px; left:12px;}
  .toast{width:auto;}
  .formGrid{grid-template-columns: 1fr;}
}

/* =========================
   Attestato (dev template)
   ========================= */

.certPreviewWrap{
  position:relative;
  border:1px solid var(--border);
  border-radius:var(--radius);
  background:#fff;
  overflow:hidden;
  height:520px;
  -webkit-user-select:none;
  user-select:none;
}
.checkPage .certPreviewWrap{height:min(520px, 62vh);}
@media (max-width: 560px){
  .certPreviewWrap{height:420px;}
  .checkPage .certPreviewWrap{height:min(420px, 58vh);}
}

@media (max-width: 560px){
  .checkPage .panel__row{flex-direction:column; align-items:flex-start; gap:6px;}
  .checkPage .panel__value{width:100%; word-break:break-word;}
}

.certPreviewCanvas{
  --certPreviewScale:.42;
  transform:scale(var(--certPreviewScale));
  transform-origin: top left;
  width:calc(100% / var(--certPreviewScale));
  pointer-events:none;
  -webkit-user-select:none;
  user-select:none;
}

.certPreviewWrap .certPrint{margin-top:0;}
.certPreviewWrap .certPage{margin:0; width:min(900px, 100%);}

.certPreviewOverlay{
  position:absolute;
  inset:-30%;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:22px;
  pointer-events:none;
  z-index:12;
  font-weight:950;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:rgba(15,23,42,.22);
  text-align:center;
  padding:18px;
  transform:rotate(-18deg);
  font-size:clamp(18px, 3.6vw, 44px);
  -webkit-user-select:none;
  user-select:none;
}

.certPreviewOverlay__line{white-space:nowrap;}

.certPreviewWrap img{
  -webkit-user-drag:none;
}

.certPrint{
  margin-top:16px;
}

.certPage{
  background:#fff;
  margin:16px auto;
  width:min(900px, 100%);
  --certInset: 6mm;
  padding: var(--certInset);
  box-sizing: border-box;
}

.certFrame{
  position:relative;
  --certFrameGap: 1mm;
  --certPad: 18mm;
  --certGap: 14mm;
  border:2px solid var(--certBorder1, #111);
  padding:var(--certPad);
  min-height:calc(297mm - (var(--certInset) * 2));
  box-sizing:border-box;
  display:flex;
  flex-direction:column;
  gap:var(--certGap);
  background:#fff;
  overflow:hidden;
}

.certFrame::before{
  content:"";
  position:absolute;
  inset:var(--certFrameGap);
  border:2px solid var(--certBorder2, #111);
  pointer-events:none;
  z-index:3;
}

.certFrame > :not(.certWatermark):not(.certCornerBrand):not(.certProtocol):not(.certQr){position:relative; z-index:2;}

.certWatermark{
  position:absolute;
  left:46%;
  top:44%;
  transform:translate(-50%, -50%);
  width:140mm;
  height:140mm;
  object-fit:contain;
  opacity:0.12;
  filter:grayscale(1);
  pointer-events:none;
  z-index:1;
}

.certHeader{
  text-align:center;
}

.certLogos{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:4mm;
  margin-bottom:6mm;
}

.certLogoSlot{flex:0 1 33%; display:flex; align-items:center; justify-content:center; min-width:0;}
.certLogo{max-height:18mm; max-width:100%; object-fit:contain; display:block;}
.certLogoPlaceholder{width:100%; height:18mm;}

.certTitle{
  font-weight:800;
  letter-spacing:0.06em;
  font-size:clamp(22px, 3vw, 34px);
  line-height:1.15;
  margin-bottom:6mm;
  display:-webkit-box;
  line-clamp:2;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}

.certCourseTitle{
  font-weight:700;
  font-size:clamp(18px, 2.6vw, 28px);
  line-height:1.2;
  display:-webkit-box;
  line-clamp:2;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
  margin:0 auto;
  max-width:100%;
}

.certNormativa{
  margin-top:4mm;
  font-style:italic;
  font-size:clamp(11px, 1.7vw, 14px);
  line-height:1.25;
  color:#222;
  display:-webkit-box;
  line-clamp:2;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}

.certBody{
  flex:1;
  display:flex;
  flex-direction:column;
  gap:10mm;
}

.certLead{
  text-align:center;
  font-size:18px;
}

.certPerson{
  text-align:center;
}

.certPersonBig{
  font-size:clamp(18px, 2.4vw, 28px);
  line-height:1.25;
  overflow-wrap:anywhere;
}

.certText{
  text-align:center;
  font-size:clamp(13px, 1.9vw, 16px);
  line-height:1.45;
  overflow-wrap:anywhere;
}

.certText__extra{margin-top:3mm;}

.certFooter{
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  align-items:stretch;
  gap:6mm;
  padding-bottom:12mm;
}

.certPlace{
  font-size:14px;
}

.certProtocol{
  position:absolute;
  left:calc(var(--certFrameGap) + 4mm);
  bottom:calc(var(--certFrameGap) + 4mm);
  font-size:12px;
  color:#111;
  z-index:4;
}

.certQr{
  position:absolute;
  left:auto;
  right:calc(var(--certFrameGap) + 4mm);
  bottom:calc(var(--certFrameGap) + 4mm);
  width:20mm;
  height:20mm;
  display:block;
  z-index:4;
  transform:none;
  text-decoration:none;
  background:transparent;
}

.certQr__svg,
.certQr__svg svg{display:block; width:100%; height:100%;}

.certSignatures{
  display:grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap:10mm;
  align-items:end;
}

.certSig{min-width:0; text-align:center;}
.certSig__title{font-size:12px; font-weight:400;}
.certSig__name{margin-top:0; font-size:12px; color:#333;}
.certSig__space{height:6mm;}
.certSig__imgWrap{height:24mm; display:flex; align-items:center; justify-content:center;}
.certSig__img{max-height:24mm; max-width:100%; object-fit:contain; display:block;}

.certSectionTitle{
  text-align:center;
  font-size:13px;
  font-weight:700;
  letter-spacing:0.02em;
}

.certProgram{
  margin-top:6mm;
  font-size:13px;
  line-height:1.22;
  overflow-wrap:anywhere;
  word-break:break-word;
}

.certPageNumber{font-size:12px;}

/* Pagina 1 (Attestato): firme più in alto */
.certPage--attestato .certFrame{--certGap:12mm;}
.certPage--attestato .certBody{flex:1;}

/* Pagina 2 (Programma): massima densità */
.certPage--program .certFrame{--certPad:14mm; --certGap:8mm;}
.certPage--program .certTitle{font-size:clamp(18px, 2.1vw, 22px); margin-bottom:2mm;}
.certPage--program .certCourseTitle{font-size:clamp(14px, 1.9vw, 18px); line-height:1.18;}
.certPage--program .certNormativa{margin-top:2mm; font-size:clamp(10px, 1.35vw, 12px); line-height:1.2;}
.certPage--program .certBody{gap:3mm;}
.certPage--program .certSectionTitle{font-size:12px;}
.certPage--program .certProgram{margin-top:1mm; padding-right:46mm; padding-bottom:28mm; line-height:1.14;}
.certPage--program .certFooter{padding-bottom:4mm; align-items:flex-start;}

.certCornerBrand{
  position:absolute;
  right:14mm;
  bottom:12mm;
  display:flex;
  flex-direction:column;
  gap:3mm;
}

.certCornerBrand__slot{
  width:30mm;
  height:12mm;
  display:flex;
  align-items:center;
  justify-content:flex-end;
}

.certCornerBrand__logo{max-width:30mm; max-height:12mm; object-fit:contain; display:block;}
.certCornerBrand__ph{width:30mm; height:12mm; border:1px dashed rgba(0,0,0,0.15); border-radius:6px;}

.certProgram p{margin:0 0 2mm;}
.certProgram ul, .certProgram ol{margin:0 0 2mm; padding-left:14px;}
.certProgram li{margin:0 0 1mm;}
.certProgram u{text-decoration:underline;}
.certProgram em, .certProgram i{font-style:italic;}
.certProgram strong, .certProgram b{font-weight:800;}

@page{size:A4 portrait; margin:0;}

@media print{
  html, body{width:210mm; height:297mm;}
  .pageHeader, .panel, form.panel{display:none !important;}
  .certPrint{margin-top:0 !important;}
  .certPage{margin:0; width:210mm; padding: var(--certInset);}
  .certFrame{min-height:auto; height:calc(297mm - (var(--certInset) * 2));}
  .certPage + .certPage{page-break-before:always;}

  .certQr{left:auto !important; right:calc(var(--certFrameGap) + 4mm) !important; bottom:calc(var(--certFrameGap) + 4mm) !important;}
}
