/* ============================================================================
   VESTITO "EASY" - foglio di transizione (678a, 05/10/2026)
   Caricato SOLO a vestito easy acceso, dopo assets/portal/skins/easy.css
   (CRML_Portal_Assets::enqueue_skin). I vecchi fogli del portale bloccano con
   !important misure e colori dei componenti (pulsanti, pastiglie, etichette,
   schede): finche esistono, qui il vestito easy li supera.
   Regole di questo file, tutte verificate dal generatore:
   - ogni selettore sta sotto .crml-portal.crml-ez (prefisso ripetuto per vincere
     sulla specificita dei vecchi fogli): a vestito spento non tocca nulla;
   - solo aspetto: mai display, position, visibility;
   - va CANCELLATO, portando le regole in easy.css senza !important, quando i
     vecchi fogli vengono ritirati.
   Sta fuori da skins/ perche il controllo dei vestiti vieta !important.
   ============================================================================ */

/* ============================================================================
   771a (14/10/2026) - Parte con !important di portal.css, portal-modern.css e portal-v2-skin.css,
   ritirati dal portale. Subito dopo easy.css, prima del resto di portal-fix-light.css (stesso
   ordine verificato dalla simulazione della cascata su 91 pagine a 390/768/1280, anche :hover/:focus).
   Scritto da ritira2.py, non a mano. Si cancella man mano che il vestito prende queste regole.
   ============================================================================ */

/* ---- da portal.css (con !important, o vietate nel vestito: position e display:none sulla SPA) ---- */
.crml-portal-header {
  position: relative;
}
.crml-portal-header::after {
  position: absolute;
}
.crml-nav {
  display: none !important;
}
.crml-bottom {
  display: none !important;
}
@media print {
  .crml-portal-nav,
  .crml-portal-bottom-nav,
  .crml-portal-actions {
    display:none !important;
  }
  .crml-portal-wrap {
    max-width:100%!important;
    padding:0!important;
  }
  .crml-portal {
    padding:10px!important;
  }
}
@media(prefers-reduced-motion:reduce) {
  .crml-portal *,
  .crml-portal *::before,
  .crml-portal *::after {
    animation-duration:.01ms!important;
    transition-duration:.01ms!important;
  }
}
@media (prefers-color-scheme: dark) {
  :root {
    --crml-bg:             #f8fafc !important;
    --crml-card:           #ffffff !important;
    --crml-card2:          #f1f5f9 !important;
    --crml-text:           #0f172a !important;
    --crml-muted:          #64748b !important;
    --crml-border:         rgba(15,23,42,.08) !important;
    --crml-border-med:     rgba(15,23,42,.12) !important;
    --crml-soft:           rgba(15,23,42,.04) !important;
    --crml-soft2:          rgba(15,23,42,.06) !important;
    --crml-shadow:         0 4px 6px -1px rgba(15,23,42,.10), 0 12px 40px -4px rgba(15,23,42,.12) !important;
    --crml-shadow-card:    0 2px 6px rgba(15,23,42,.08), 0 8px 20px rgba(15,23,42,.10) !important;
    --crml-shadow-pop:     0 8px 24px -4px rgba(190,24,93,.18) !important;
  }
  .crml-portal {
    background: #ffffff !important;
  }
  .crml-bottom {
    background: rgba(255,255,255,.96) !important;
    border-color: rgba(15,23,42,.08) !important;
    box-shadow: 0 8px 32px rgba(15,23,42,.12) !important;
  }
  .crml-bottom-item.is-active::after {
    background: #be185d !important;
  }
  .crml-badge-dot.mini {
    border-color: rgba(255,255,255,.96) !important;
  }
  .crml-nav {
    background: #ffffff !important;
  }
  .crml-portal-body {
    background: #f8fafc !important;
  }
  .crml-note-box {
    background: #f1f5f9 !important;
  }
  .crml-compose-card {
    background: #ffffff !important;
  }
  .crml-lezione-card {
    background: #ffffff !important;
  }
  .crml-input,
  .crml-select,
  textarea.crml-input {
    background: #ffffff !important;
    border-color: rgba(15,23,42,.16) !important;
    color: #0f172a !important;
  }
  .crml-flash {
    background: #f1f5f9 !important;
  }
  img {
    opacity: 1 !important;
  }
}
@media (max-width: 480px) {
  .crml-card,
  .crml-compose-card,
  .crml-lezione-card,
  .crml-home-card {
    padding: 12px !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  .crml-portal-body [style*="display:flex"][style*="gap"]/*771s<*/,
.crml-portal-body [style*="display:flex"].crml-s-04d9ba2:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-0505fd4:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-0797c22:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-089cb59:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-0b29b8f:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-0cbf4d9:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-0d5d043:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-0f435aa:where(:not([style]),[style="display:flex;flex-direction:column"]),
.crml-portal-body [style*="display:flex"].crml-s-0f4d90c:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-0f58e9e:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-10fafea:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-114b3e2:where(:not([style]),[style="display:flex"],[style="display:flex;flex-direction:column"],[style="display:flex;flex-wrap:wrap"],[style="display:grid"]),
.crml-portal-body [style*="display:flex"].crml-s-13cd20e:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-140f6d5:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-15ac060:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-16c7ab7:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-17ace17:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-186be9e:where(:not([style]),[style="display:flex;flex-wrap:wrap"],[style="display:inline-flex"]),
.crml-portal-body [style*="display:flex"].crml-s-1dae738:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-1dc8fbd:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-21dc1ac:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-2400603:where(:not([style]),[style="display:flex;flex-direction:column"]),
.crml-portal-body [style*="display:flex"].crml-s-25ce4cb:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-292a69e:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-292ed55:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-2950389:where(:not([style]),[style="display:flex;flex-direction:column"]),
.crml-portal-body [style*="display:flex"].crml-s-2b84781:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-2c4a939:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-2ece98c:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-2fc50fc:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-302b9e8:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-304cd5c:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"],[style="display:grid"]),
.crml-portal-body [style*="display:flex"].crml-s-37177bf:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-378aed6:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-3a60db9:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-3b2d71f:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-408c599:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-42c5437:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-4347959:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-46d050f:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-4751c40:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-480a941:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-4a74223:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-4b31098:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-4fcd8e3:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-51ade0c:where(:not([style]),[style="display:flex;flex-direction:column"]),
.crml-portal-body [style*="display:flex"].crml-s-589526c:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-58e2757:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-59aa91b:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-5a912a4:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-5bc8f0f:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-614df65:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-6212910:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-628fb95:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-62b82ea:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-6333ede:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-668389a:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-672209a:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-68154c6:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-6c7cbaf:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"],[style="display:inline-flex"]),
.crml-portal-body [style*="display:flex"].crml-s-6ceb8de:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-7544b64:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-764c26a:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-790b9c1:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-79e090b:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"],[style="display:inline-flex"]),
.crml-portal-body [style*="display:flex"].crml-s-7b547b6:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-7baf6e0:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-7dfc491:where(:not([style]),[style="display:flex;flex-wrap:nowrap"]),
.crml-portal-body [style*="display:flex"].crml-s-7e3e0c7:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-7e7782c:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-84b9b89:where(:not([style]),[style="display:flex;flex-direction:column"]),
.crml-portal-body [style*="display:flex"].crml-s-8510f8e:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-87a7e65:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-899fce1:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-8addbfd:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-8b331f1:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-8b69a54:where(:not([style]),[style="display:flex;flex-direction:column"]),
.crml-portal-body [style*="display:flex"].crml-s-8e84759:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-94acc14:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-959bb52:where(:not([style]),[style="display:flex"],[style="display:flex;flex-direction:column"],[style="display:flex;flex-wrap:wrap"],[style="display:inline-flex"]),
.crml-portal-body [style*="display:flex"].crml-s-9772c1f:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-99f6da4:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-9acc4a9:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-9e13778:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-9f5164e:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-9fce660:where(:not([style]),[style="display:flex;flex-direction:column"]),
.crml-portal-body [style*="display:flex"].crml-s-9fd74fb:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-a39f5d1:where(:not([style]),[style="display:flex;flex-direction:column"],[style="display:flex;flex-wrap:wrap"],[style="display:grid"]),
.crml-portal-body [style*="display:flex"].crml-s-a59d8d3:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-aace3ee:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"],[style="display:none"]),
.crml-portal-body [style*="display:flex"].crml-s-adc2c58:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-b051d8a:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-b0d7ec3:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-b27a18f:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-b546373:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-b578a9c:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-b74d88d:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-b839f19:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-bca5e3e:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-c293d57:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-c2e18bb:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-c4273a2:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"],[style="display:inline-flex"]),
.crml-portal-body [style*="display:flex"].crml-s-c4d635b:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-c73003b:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-c7a5832:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-c97ad89:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-cc27224:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-ce849f3:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-cfb7697:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-d12ddb9:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-d3ba1fb:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-d824e88:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-d9f9847:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-da8dbf1:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-dc107c2:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-de17895:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-e1626c0:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-e4e7c45:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-e5491b8:where(:not([style]),[style="display:flex;flex-direction:column"],[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-e894433:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-e933ba7:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-ea52f62:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-ec3cd36:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-ed257f1:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-f17b270:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-f3073ef:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-f53b63c:where(:not([style]),[style="display:flex"],[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-f972786:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-fa384dc:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-fa61317:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-fa77d76:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-fa90f08:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-faa504b:where(:not([style]),[style="display:flex"]),
.crml-portal-body [style*="display:flex"].crml-s-fd70fdd:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-fd77db1:where(:not([style]),[style="display:flex;flex-wrap:wrap"]),
.crml-portal-body [style*="display:flex"].crml-s-fe53571:where(:not([style]),[style="display:flex;flex-direction:column"],[style="display:flex;flex-wrap:wrap"])/*>771s*/ {
    flex-wrap: wrap !important;
  }
  .crml-portal-body [style*="grid-template-columns"]/*771s<*/,
.crml-portal-body .crml-s-16abc0b:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-33ac303:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-3ad6bca:where(:not([style])),
.crml-portal-body .crml-s-3c9c161:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-488347a:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-53ad08a:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-706db47:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-730f2aa:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-76e2f3f:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-88af268:where(:not([style])),
.crml-portal-body .crml-s-8bdca33:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-9281e2a:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-b407c3f:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-c9ad1b3:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-d9245c1:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-de651e8:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-e237a62:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-e6bbbd6:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-efa01d0:where(:not([style]),[style="display:grid"]),
.crml-portal-body .crml-s-fd5a63c:where(:not([style]),[style="display:grid"])/*>771s*/ {
    grid-template-columns: 1fr !important;
  }
  .crml-portal-body [style*="grid-column:1/-1"]/*771s<*/,
.crml-portal-body .crml-s-096f8a3:where(:not([style])),
.crml-portal-body .crml-s-1b9b41e:where(:not([style])),
.crml-portal-body .crml-s-292ed55:where(:not([style]),[style="display:flex;flex-wrap:wrap"])/*>771s*/ {
    grid-column: auto !important;
  }
  .crml-portal-body table {
    font-size: 12px !important;
  }
  .crml-portal-body input[type="text"],
  .crml-portal-body input[type="email"],
  .crml-portal-body input[type="tel"],
  .crml-portal-body input[type="date"],
  .crml-portal-body input[type="number"],
  .crml-portal-body input[type="search"],
  .crml-portal-body select,
  .crml-portal-body textarea {
    width: 100% !important;
    min-width: 0 !important;
  }
  .crml-portal-body .crml-btn {
    width: 100% !important;
  }
  .crml-flash {
    font-size: 12px !important;
    padding: 10px 12px !important;
  }
  .crml-form-actions {
    gap: 8px !important;
  }
}
@media (max-width: 767px) {
  .crml-portal-wrap {
    margin: 0 !important;
    padding: 0 !important;
  }
  .crml-portal {
    border: none !important;
    border-radius: 0 !important;
    background: var(--crml-bg) !important;
  }
  .crml-portal:where(:not(:focus-visible)) {
    box-shadow: none !important;
  }
  .crml-portal-header {
    position: relative;
  }
  .crml-portal-header::before {
    position: absolute;
  }
  .crml-nav {
    position: sticky !important;
    top: 0 !important;
    z-index: 50 !important;
    background: rgba(255,255,255,.92) !important;
    backdrop-filter: blur(20px) saturate(180%) !important;
    -webkit-backdrop-filter: blur(20px) saturate(180%) !important;
    border-bottom: 1px solid rgba(13,27,62,.06) !important;
    padding: 0 !important;
    gap: 0 !important;
    box-shadow: 0 1px 3px rgba(13,27,62,.04) !important;
  }
  .crml-nav-item {
    padding: 10px 14px !important;
    font-size: 12px !important;
    min-height: 44px !important;
    border-bottom: 2.5px solid transparent !important;
    color: var(--crml-muted) !important;
    gap: 5px !important;
    transition: all .2s cubic-bezier(.4,0,.2,1) !important;
  }
  .crml-nav-item:active {
    background: var(--crml-primary-weak) !important;
  }
  .crml-nav-item.is-active {
    color: var(--crml-primary) !important;
    border-bottom-color: var(--crml-primary) !important;
    background: transparent !important;
    font-weight: 800 !important;
  }
  .crml-home-quick-link:active {
    transform: scale(.92) !important;
    box-shadow: 0 1px 4px rgba(13,27,62,.1) !important;
  }
  .crml-btn:active {
    transform: scale(.96) !important;
    box-shadow: 0 2px 8px rgba(34,80,214,.15) !important;
  }
  .crml-badge-dot {
    font-size: 10px !important;
    font-weight: 800 !important;
    min-width: 20px !important;
    height: 20px !important;
    box-shadow: 0 2px 6px rgba(220,38,38,.3) !important;
    animation: crml-badge-pulse 2s infinite !important;
  }
  .crml-chat-wrap {
    border-radius: 0 !important;
    border: none !important;
  }
  .crml-chat-wrap:where(:not(:focus-visible)) {
    box-shadow: none !important;
  }
  .crml-chat-sidebar {
    background: var(--crml-bg) !important;
  }
  .crml-chat-sidebar.is-hidden {
    display: none !important;
  }
  .crml-chat-contact {
    border-radius: 0 !important;
    border-bottom: 1px solid rgba(13,27,62,.05) !important;
    padding: 14px 16px !important;
  }
  .crml-chat-contact:active {
    background: var(--crml-primary-weak) !important;
  }
  .crml-flash {
    border-radius: 12px !important;
  }
}
@media (max-width: 380px) {
  .crml-portal-header {
    padding: 12px 10px 10px !important;
    min-height: 52px !important;
  }
  .crml-portal-title {
    font-size: 15px !important;
  }
  .crml-portal-logo {
    width: 34px !important;
    height: 34px !important;
    font-size: 16px !important;
  }
  .crml-portal-body {
    padding: 10px 8px 24px !important;
  }
  .crml-home-quick-grid {
    gap: 6px !important;
  }
  .crml-home-quick-link {
    padding: 12px 6px 10px !important;
    border-radius: 14px !important;
  }
  .crml-home-quick-icon {
    font-size: 24px !important;
  }
  .crml-home-quick-label {
    font-size: 9px !important;
  }
  .crml-nav-item {
    padding: 8px 10px !important;
    font-size: 11px !important;
  }
  .crml-lezione-meta-grid {
    grid-template-columns: 1fr !important;
  }
}
@media (min-width: 640px) and (max-width: 1023px) {
  .crml-chat-wrap {
    height: 520px !important;
  }
}
@supports (padding-top: env(safe-area-inset-top)) {
  @media (max-width: 767px) {
    .crml-nav {
      top: 0 !important;
    }
  }
}

/* ---- da portal-modern.css (con !important, o vietate nel vestito: position e display:none sulla SPA) ---- */
.crml-portal .crml-btn-primary,
.crml-portal button[type="submit"]:not(.crml-btn-secondary):not(.crml-btn-danger),
.crml-portal input[type="submit"]:not(.crml-btn-secondary) {
  color: #fff !important;
}
.crml-portal .crml-btn-primary:hover,
.crml-portal button[type="submit"]:not(.crml-btn-secondary):not(.crml-btn-danger):hover {
  box-shadow: 0 14px 40px rgba(186, 90, 135, 0.4) !important;
  color: #fff !important;
}
.crml-portal .crml-btn-danger:hover {
  background: var(--cp-danger) !important;
  color: #fff !important;
}

/* ---- da portal-v2-skin.css (con !important, o vietate nel vestito: position e display:none sulla SPA) ---- */
body.crml-portal-v2 .crml-portal-nav,
body.crml-portal-v2 .crml-portal-topnav,
body.crml-portal-v2 [class*="crml-portal-nav"] {
  background: rgba(255, 255, 255, .85) !important;
  border-radius: 16px !important;
  border: 1px solid var(--crml-border-soft) !important;
  box-shadow: 0 2px 10px rgba(91, 33, 182, .08) !important;
  padding: 8px !important;
  margin-bottom: 22px !important;
}
body.crml-portal-v2 .crml-portal-nav a,
body.crml-portal-v2 .crml-portal-nav button {
  border-radius: 10px !important;
  font-weight: 500 !important;
  padding: 8px 14px !important;
  font-size: 13px !important;
  text-decoration: none !important;
  color: var(--crml-muted) !important;
  border: 0 !important;
  background: transparent !important;
}
body.crml-portal-v2 .crml-portal-nav a:hover {
  background: var(--crml-primary-weak) !important;
  color: var(--crml-primary) !important;
}
body.crml-portal-v2 .crml-portal-nav a.active,
body.crml-portal-v2 .crml-portal-nav a[aria-current="page"],
body.crml-portal-v2 .crml-portal-nav a.is-active {
  background: var(--p2-grad) !important;
  color: #fff !important;
  box-shadow: 0 4px 12px rgba(124, 58, 237, .3) !important;
}
body.crml-portal-v2 [class*="page-header"]:not(.crml-p2-hero):not(.crml-page-header-existing),
body.crml-portal-v2 .crml-view-header,
body.crml-portal-v2 .crml-subview-hero {
  background: var(--p2-grad) !important;
  color: #fff !important;
  border-radius: 22px !important;
  padding: 26px 32px !important;
  margin-bottom: 20px !important;
  box-shadow: var(--p2-shadow-lg) !important;
  border: 0 !important;
}
body.crml-portal-v2 [class*="page-header"] h1,
body.crml-portal-v2 [class*="page-header"] h2,
body.crml-portal-v2 .crml-view-header h1,
body.crml-portal-v2 .crml-view-header h2 {
  color: #fff !important;
  font-weight: 500 !important;
  font-size: 26px !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
  margin: 0 !important;
}
body.crml-portal-v2 .crml-card:hover {
  box-shadow: var(--p2-shadow-sm) !important;
  border-color: var(--crml-border) !important;
}
body.crml-portal-v2 .crml-btn,
body.crml-portal-v2 .crml-btn-primary,
body.crml-portal-v2 button.button-primary,
body.crml-portal-v2 a.button-primary {
  font-size: 13px !important;
}
body.crml-portal-v2 .crml-btn:hover,
body.crml-portal-v2 .crml-btn-primary:hover,
body.crml-portal-v2 button.button-primary:hover {
  box-shadow: 0 7px 18px rgba(124, 58, 237, .36) !important;
  color: #fff !important;
}
body.crml-portal-v2 .crml-btn-secondary:hover,
body.crml-portal-v2 .crml-btn-ghost:hover,
body.crml-portal-v2 .crml-btn-outline:hover {
  background: var(--crml-primary-weak) !important;
  border-color: var(--crml-primary-light) !important;
  color: var(--crml-primary-dark) !important;
}
body.crml-portal-v2 .crml-btn-xs {
  padding: 4px 9px !important;
  font-size: 11px !important;
  border-radius: 7px !important;
}
body.crml-portal-v2 .crml-btn-success,
body.crml-portal-v2 button.button-success {
  background: var(--p2-grad-ok) !important;
  box-shadow: 0 3px 10px rgba(16, 185, 129, .28) !important;
  color: #fff !important;
}
body.crml-portal-v2 .crml-alert-link:hover,
body.crml-portal-v2 .crml-link-sm:hover,
body.crml-portal-v2 a.crml-link:hover {
  color: var(--crml-primary-dark) !important;
  text-decoration: underline !important;
}
body.crml-portal-v2 .crml-status-badge.status-da_recuperare,
body.crml-portal-v2 .crml-status-badge.status-in_attesa,
body.crml-portal-v2 .crml-status-badge.status-proposta_maestro,
body.crml-portal-v2 .crml-status-badge.status-proposta_allievo,
body.crml-portal-v2 .crml-status-badge.status-proposta_recupero,
body.crml-portal-v2 .crml-status-badge.warning,
body.crml-portal-v2 .crml-status-badge.pending {
  background: #fef3c7 !important;
  color: #78350f !important;
}
body.crml-portal-v2 .crml-portal-wrap table,
body.crml-portal-v2 .widefat,
body.crml-portal-v2 table.crml-table {
  border-collapse: separate !important;
}
body.crml-portal-v2 .crml-portal-wrap table thead th,
body.crml-portal-v2 .widefat thead th {
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  padding: 12px 14px !important;
  border-bottom: 1px solid var(--crml-border) !important;
  text-align: left !important;
}
body.crml-portal-v2 .crml-portal-wrap table tbody td,
body.crml-portal-v2 .widefat tbody td {
  padding: 12px 14px !important;
  border-bottom: 1px solid var(--crml-border-soft) !important;
  color: var(--crml-text) !important;
}
body.crml-portal-v2 .crml-portal-wrap table tbody tr:last-child td {
  border-bottom: 0 !important;
}
body.crml-portal-v2 .crml-portal-wrap table tbody tr:hover,
body.crml-portal-v2 .widefat tbody tr:hover {
  background: var(--crml-primary-weak) !important;
}
body.crml-portal-v2 .crml-portal-wrap input[type="text"],
body.crml-portal-v2 .crml-portal-wrap input[type="email"],
body.crml-portal-v2 .crml-portal-wrap input[type="tel"],
body.crml-portal-v2 .crml-portal-wrap input[type="number"],
body.crml-portal-v2 .crml-portal-wrap input[type="search"],
body.crml-portal-v2 .crml-portal-wrap input[type="password"],
body.crml-portal-v2 .crml-portal-wrap input[type="date"],
body.crml-portal-v2 .crml-portal-wrap input[type="time"],
body.crml-portal-v2 .crml-portal-wrap input[type="datetime-local"],
body.crml-portal-v2 .crml-portal-wrap input[type="url"],
body.crml-portal-v2 .crml-portal-wrap textarea,
body.crml-portal-v2 .crml-portal-wrap select {
  font-family: inherit !important;
  outline: none !important;
}
body.crml-portal-v2 .crml-portal-wrap input:focus,
body.crml-portal-v2 .crml-portal-wrap textarea:focus,
body.crml-portal-v2 .crml-portal-wrap select:focus {
  outline: none !important;
  border-color: var(--crml-primary) !important;
  box-shadow: 0 0 0 3px var(--crml-primary-weak) !important;
}
body.crml-portal-v2 .crml-portal-wrap input[type="checkbox"],
body.crml-portal-v2 .crml-portal-wrap input[type="radio"] {
  accent-color: var(--crml-primary) !important;
}
body.crml-portal-v2 .crml-portal h2,
body.crml-portal-v2 .crml-portal-wrap h2 {
  margin-bottom: 8px !important;
}
body.crml-portal-v2 .crml-chat-bubble.me,
body.crml-portal-v2 .crml-chat-msg--me,
body.crml-portal-v2 .crml-chat-msg.out,
body.crml-portal-v2 .crml-chat-msg.own,
body.crml-portal-v2 .message-out {
  background: var(--p2-grad-blue) !important;
  color: #fff !important;
  border-bottom-right-radius: 4px !important;
}
body.crml-portal-v2 .crml-chat-bubble.other,
body.crml-portal-v2 .crml-chat-msg--other,
body.crml-portal-v2 .crml-chat-msg.in,
body.crml-portal-v2 .crml-chat-msg:not(.own):not(.me):not(.out),
body.crml-portal-v2 .message-in {
  background: var(--crml-surface) !important;
  color: var(--crml-text) !important;
  border: 1px solid var(--crml-border-soft) !important;
  border-bottom-left-radius: 4px !important;
}
body.crml-portal-v2 .crml-chat-input input {
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}
body.crml-portal-v2 .crml-chat-conv-list li,
body.crml-portal-v2 .crml-conv-item,
body.crml-portal-v2 [class*="conversation-item"] {
  border-radius: 10px !important;
  transition: background .15s !important;
  padding: 10px 12px !important;
}
body.crml-portal-v2 .crml-chat-conv-list li:hover,
body.crml-portal-v2 .crml-conv-item:hover {
  background: var(--crml-primary-weak) !important;
}
body.crml-portal-v2 .crml-conv-item.active,
body.crml-portal-v2 [class*="conversation-item"].is-active {
  background: var(--crml-primary-weak) !important;
  border-left: 3px solid var(--crml-primary) !important;
}
body.crml-portal-v2 .crml-badge-unread,
body.crml-portal-v2 .crml-unread-count,
body.crml-portal-v2 [class*="unread"] {
  background: var(--p2-grad-pink) !important;
  color: #fff !important;
  font-weight: 700 !important;
  border-radius: 999px !important;
  padding: 1px 7px !important;
  font-size: 10px !important;
}
body.crml-portal-v2 .fc-toolbar-title {
  font-weight: 700 !important;
  color: var(--crml-text) !important;
  font-size: 18px !important;
}
body.crml-portal-v2 .fc-event {
  border-radius: 6px !important;
  border: 0 !important;
  font-weight: 500 !important;
  padding: 2px 6px !important;
}
body.crml-portal-v2 .crml-tabs,
body.crml-portal-v2 [role="tablist"]:not(.role-pills):not(.crml-p2-tabs) {
  border-bottom: 1px solid var(--crml-border) !important;
}
body.crml-portal-v2 .crml-tab,
body.crml-portal-v2 [role="tab"]:not(.role-pill) {
  padding: 10px 16px !important;
  font-weight: 500 !important;
  color: var(--crml-muted) !important;
  border-bottom: 2px solid transparent !important;
  background: transparent !important;
  font-size: 13px !important;
}
body.crml-portal-v2 .crml-tab:hover,
body.crml-portal-v2 [role="tab"]:hover:not(.role-pill) {
  color: var(--crml-primary) !important;
  background: var(--crml-primary-weak) !important;
}
body.crml-portal-v2 .crml-tab.active,
body.crml-portal-v2 [role="tab"][aria-selected="true"]:not(.role-pill) {
  color: var(--crml-primary) !important;
  border-bottom-color: var(--crml-primary) !important;
}
body.crml-portal-v2 .crml-list-item,
body.crml-portal-v2 [class*="lesson-row"],
body.crml-portal-v2 [class*="recupero-row"],
body.crml-portal-v2 [class*="booking-row"],
body.crml-portal-v2 [class*="payment-row"],
body.crml-portal-v2 .crml-row,
body.crml-portal-v2 .crml-item-row {
  background: var(--crml-surface) !important;
  border: 1px solid var(--crml-border-soft) !important;
  border-radius: 12px !important;
  padding: 14px 16px !important;
  transition: all .15s !important;
}
body.crml-portal-v2 .crml-list-item:hover,
body.crml-portal-v2 [class*="lesson-row"]:hover,
body.crml-portal-v2 [class*="recupero-row"]:hover,
body.crml-portal-v2 .crml-row:hover {
  border-color: var(--crml-primary-light) !important;
  box-shadow: 0 2px 8px rgba(124, 58, 237, .1) !important;
}
body.crml-portal-v2 [class*="info-line"],
body.crml-portal-v2 .crml-info-banner,
body.crml-portal-v2 .crml-hint-banner {
  background: var(--crml-primary-weak) !important;
  border-left: 3px solid var(--crml-primary) !important;
  border-radius: 10px !important;
  padding: 10px 14px !important;
  color: var(--crml-primary-dark) !important;
  font-size: 13px !important;
}
body.crml-portal-v2 [class*="portal-header"] h1,
body.crml-portal-v2 [class*="portal-header"] h2 {
  color: #fff !important;
}
body.crml-portal-v2 .crml-lezione-card,
body.crml-portal-v2 .crml-lesson-card {
  padding: 16px !important;
}
body.crml-portal-v2 .crml-lezione-card:hover {
  border-color: var(--crml-primary-light) !important;
}
body.crml-portal-v2 .crml-trial-card,
body.crml-portal-v2 [class*="trial-lesson"] {
  background: var(--crml-surface) !important;
  border: 1px solid var(--crml-border-soft) !important;
  border-radius: 14px !important;
  padding: 16px !important;
}
body.crml-portal-v2 .crml-empty-state,
body.crml-portal-v2 .crml-empty,
body.crml-portal-v2 .crml-no-data {
  text-align: center !important;
  padding: 40px 20px !important;
  color: var(--crml-muted-soft) !important;
  background: var(--crml-surface) !important;
  border-radius: 14px !important;
  border: 2px dashed var(--crml-border) !important;
}
body.crml-portal-v2 .crml-pagination a,
body.crml-portal-v2 .crml-pagination button {
  padding: 0 10px !important;
  border-radius: 8px !important;
  background: var(--crml-surface) !important;
  border: 1px solid var(--crml-border) !important;
  color: var(--crml-text) !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  text-decoration: none !important;
}
body.crml-portal-v2 .crml-pagination a:hover {
  background: var(--crml-primary-weak) !important;
  border-color: var(--crml-primary-light) !important;
  color: var(--crml-primary) !important;
}
body.crml-portal-v2 .crml-pagination a.active,
body.crml-portal-v2 .crml-pagination a[aria-current] {
  background: var(--p2-grad-blue) !important;
  color: #fff !important;
  border-color: transparent !important;
}
@media (max-width: 768px) {
  body.crml-portal-v2 .crml-portal-nav {
    overflow-x: auto !important;
    flex-wrap: nowrap !important;
  }
  body.crml-portal-v2 .crml-portal-nav a {
    white-space: nowrap !important;
    flex-shrink: 0 !important;
  }
}
@media (max-width: 480px) {
  body.crml-portal-v2 [class*="page-header"] h1,
  body.crml-portal-v2 [class*="portal-header"] h1 {
    font-size: 20px !important;
  }
}
@media print {
  body.crml-portal-v2::before {
    display: none !important;
  }
  body.crml-portal-v2 .crml-portal-nav {
    display: none !important;
  }
}

/* ============================================================================
   771a (14/10/2026) - Resto di portal-fix-light.css, ritirato dal portale.
   Regole che il vestito easy non puo ancora sostituire: battono con !important altri fogli
   vecchi (portal.css, portal-modern.css, portal-v2-skin.css) e lo stile in linea del PHP.
   Stanno qui, in testa al foglio di transizione e subito dopo easy.css: simulazione della
   cascata su 91 pagine a 390/768/1280 (anche :hover/:focus) e confronto = nessuna differenza.
   Si cancellano insieme ai vecchi fogli. Scritto da ritira.py, non a mano.
   ============================================================================ */

/* ────────────────────────────────────────────────────────────────────
   Card outer + wrap
   ──────────────────────────────────────────────────────────────────── */

html body[class] .crml-lezione-card,
html body[class] .crml-disp-wrap {
  -webkit-backdrop-filter: none !important;
}

/* Pseudo elementi decorativi (ORB, nebulose, particelle): off dentro */
html body[class] .crml-lezione-card::before,
html body[class] .crml-lezione-card::after,
html body[class] .crml-disp-wrap::before,
html body[class] .crml-disp-wrap::after {
  display: none !important;
  content: none !important;
}

/* ────────────────────────────────────────────────────────────────────
   Titoli + label + valori
   ──────────────────────────────────────────────────────────────────── */

/* ────────────────────────────────────────────────────────────────────
   Sezioni interne (meta-grid + sec + header)
   ──────────────────────────────────────────────────────────────────── */

/* ────────────────────────────────────────────────────────────────────
   FIX BLOCKER: textarea + input nativi nere su nere
   ──────────────────────────────────────────────────────────────────── */

html body[class] .crml-lezione-card textarea,
html body[class] .crml-lezione-card input[type="text"],
html body[class] .crml-lezione-card input[type="email"],
html body[class] .crml-lezione-card input[type="tel"],
html body[class] .crml-lezione-card input[type="number"],
html body[class] .crml-lezione-card input[type="date"],
html body[class] .crml-lezione-card input[type="time"],
html body[class] .crml-lezione-card input[type="datetime-local"],
html body[class] .crml-lezione-card input[type="search"],
html body[class] .crml-lezione-card input[type="password"],
html body[class] .crml-lezione-card input[type="url"],
html body[class] .crml-lezione-card input:not([type]),
html body[class] .crml-lezione-card select,
html body[class] .crml-disp-wrap textarea,
html body[class] .crml-disp-wrap input[type="text"],
html body[class] .crml-disp-wrap input[type="email"],
html body[class] .crml-disp-wrap input[type="tel"],
html body[class] .crml-disp-wrap input[type="number"],
html body[class] .crml-disp-wrap input[type="date"],
html body[class] .crml-disp-wrap input[type="time"],
html body[class] .crml-disp-wrap input[type="datetime-local"],
html body[class] .crml-disp-wrap input[type="search"],
html body[class] .crml-disp-wrap input[type="password"],
html body[class] .crml-disp-wrap input[type="url"],
html body[class] .crml-disp-wrap input:not([type]),
html body[class] .crml-disp-wrap select {
  -webkit-backdrop-filter: none !important;
}

html body[class] .crml-lezione-card textarea:focus,
html body[class] .crml-lezione-card input:focus,
html body[class] .crml-lezione-card select:focus,
html body[class] .crml-disp-wrap textarea:focus,
html body[class] .crml-disp-wrap input:focus,
html body[class] .crml-disp-wrap select:focus {
  background: #ffffff !important;
  color: #0f172a !important;
  -webkit-text-fill-color: #0f172a !important;
  border-color: #2563eb !important;
  outline: 2px solid rgba(37, 99, 235, 0.25) !important;
  outline-offset: 1px !important;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12) !important;
}

html body[class] .crml-lezione-card textarea::placeholder,
html body[class] .crml-lezione-card input::placeholder,
html body[class] .crml-disp-wrap textarea::placeholder,
html body[class] .crml-disp-wrap input::placeholder {
  color: #9ca3af !important;
  -webkit-text-fill-color: #9ca3af !important;
  opacity: 1 !important;
}

html body[class] .crml-lezione-card select option,
html body[class] .crml-disp-wrap select option {
  ;
}

/* ────────────────────────────────────────────────────────────────────
   FIX BLOCKER (v3.14.239): regola Kubio
   "[data-kubio] input/select/textarea { background: rgba(--kubio-color-5,1) }"
   forza sfondo nero/viola scuro su TUTTI i campi form del portale.
   I fix scoped sopra (.crml-lezione-card / .crml-disp-wrap) coprivano solo
   alcune pagine. Filtri Comunicazioni staff (.crml-comm-staff-filters),
   search conversazioni (.crml-conv-search) e altre form del portale staff
   restavano colpiti (select "Tutti i corsi" / "Tutti i maestri" nere su nere).
   Override universale scoped a .crml-portal-wrap → copre staff, allievo,
   maestro, tutore. Lasciati intatti i fix granulari sopra (override piu'
   specifici per pagine che usano border/padding diversi).
   ──────────────────────────────────────────────────────────────────── */

html body[class] .crml-portal-wrap select:focus,
html body[class] .crml-portal-wrap input:focus,
html body[class] .crml-portal-wrap textarea:focus {
  background: #ffffff !important;
  color: #0f172a !important;
  -webkit-text-fill-color: #0f172a !important;
  border-color: #2563eb !important;
  outline: 2px solid rgba(37, 99, 235, 0.25) !important;
  outline-offset: 1px !important;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12) !important;
}

html body[class] .crml-portal-wrap input::placeholder,
html body[class] .crml-portal-wrap textarea::placeholder {
  color: #9ca3af !important;
  -webkit-text-fill-color: #9ca3af !important;
  opacity: 1 !important;
}

/* ────────────────────────────────────────────────────────────────────
   Tabella disponibilita
   ──────────────────────────────────────────────────────────────────── */

html body[class] .crml-disp-wrap table {
  background: #ffffff !important;
  color: #0f172a !important;
  border-collapse: collapse !important;
}
html body[class] .crml-disp-wrap thead tr,
html body[class] .crml-disp-wrap thead th {
  background: #f8fafc !important;
  background-color: #f8fafc !important;
  background-image: none !important;
  color: #0f172a !important;
  -webkit-text-fill-color: #0f172a !important;
  text-shadow: none !important;
}
html body[class] .crml-disp-wrap tbody td {
  background: #ffffff !important;
  background-color: #ffffff !important;
  color: #0f172a !important;
  -webkit-text-fill-color: #0f172a !important;
  border-bottom: 1px solid #f1f5f9 !important;
}

/* Box "Aggiungi fascia" verde chiaro */
html body[class] .crml-disp-wrap .crml-disp-add {
  ;
}

/* ────────────────────────────────────────────────────────────────────
   Alert success/warning + status badge + back link
   ──────────────────────────────────────────────────────────────────── */

/* ────────────────────────────────────────────────────────────────────
   Bottoni dentro le 2 card (preserva primary, fixa ghost)
   ──────────────────────────────────────────────────────────────────── */

html body[class] .crml-lezione-card .crml-btn-ghost,
html body[class] .crml-disp-wrap .crml-btn-ghost {
  ;
}

/* ════════════════════════════════════════════════════════════════════
   v3.7.175 — Estensione fix nucleare a .crml-compose-card
   (vista "Comunica assenza" maestro/allievo, vista "Componi messaggio",
   vista "Proponi recupero", e altre card form portale).
   Stesso pattern: html body[class] .crml-compose-card → 0,2,2 + !important
   per battere portal-v2-skin.css / Vivid / AURA / Glass.
   ════════════════════════════════════════════════════════════════════ */

html body[class] .crml-compose-card {
  padding: 24px !important;
}

/* Input / select / textarea / date / time → tema chiaro forzato */
html body[class] .crml-compose-card input[type="text"],
html body[class] .crml-compose-card input[type="email"],
html body[class] .crml-compose-card input[type="tel"],
html body[class] .crml-compose-card input[type="number"],
html body[class] .crml-compose-card input[type="date"],
html body[class] .crml-compose-card input[type="time"],
html body[class] .crml-compose-card input[type="search"],
html body[class] .crml-compose-card input[type="password"],
html body[class] .crml-compose-card input[type="url"],
html body[class] .crml-compose-card select,
html body[class] .crml-compose-card textarea,
html body[class] .crml-compose-card .crml-input {
  -webkit-text-fill-color: #1f2937 !important;
  text-shadow: none;
}
html body[class] .crml-compose-card input:focus,
html body[class] .crml-compose-card select:focus,
html body[class] .crml-compose-card textarea:focus,
html body[class] .crml-compose-card .crml-input:focus {
  outline: none !important;
  border-color: #ec4899 !important;
  box-shadow: 0 0 0 4px rgba(236, 72, 153, 0.12) !important;
}
html body[class] .crml-compose-card input::placeholder,
html body[class] .crml-compose-card textarea::placeholder {
  color: #94a3b8 !important;
  -webkit-text-fill-color: #94a3b8 !important;
  opacity: 1 !important;
}
/* Force browser native date/time picker icon to dark (prevents white-on-white) */
html body[class] .crml-compose-card input[type="date"]::-webkit-calendar-picker-indicator,
html body[class] .crml-compose-card input[type="time"]::-webkit-calendar-picker-indicator {
  filter: none !important;
  opacity: 0.7 !important;
  cursor: pointer !important;
}

/* Layout 2 colonne (date inizio/fine, ora inizio/fine) */

html body[class] .crml-compose-card .crml-input-full {
  width: 100% !important;
}

/* FIX checkbox row "Invia notifica..." rotto in verticale lettera per lettera.
   Causa: .crml-check ereditava un width:29.6px (probabile collasso flex-shrink).
   Fix: forziamo display:flex, align-items:center, width:100%, gap. */
html body[class] .crml-compose-card .crml-check,
html body[class] .crml-compose-card label.crml-check {
  max-width: 100% !important;
}
html body[class] .crml-compose-card .crml-check input[type="checkbox"] {
  accent-color: #ec4899 !important;
}

/* Form actions row */
html body[class] .crml-compose-card .crml-form-actions {
  gap: 10px !important;
}

/* Storico assenze comunicate (sezione sotto la card) */

/* ════════════════════════════════════════════════════════════════════
   v3.7.176 — Estensione fix nucleare a .crml-card + .crml-note-box
   dentro .crml-portal-wrap. Coperture aggiuntive per:
   - Lezioni Prova maestro (vista trial assegnati): .crml-card scuro
   - Statistiche maestro (placeholder): .crml-card scuro
   - Pagamenti maestro (note "Nessun documento"): .crml-note-box scuro
   - tutti i .crml-empty-state, .crml-info-box dentro portale.
   Scope ristretto a .crml-portal-wrap per NON toccare admin (.crml-card
   e simili sono usate anche nelle pagine admin con un design diverso).
   ════════════════════════════════════════════════════════════════════ */

/* Tutti i testi figli ereditano colore scuro leggibile */
html body[class] .crml-portal-wrap .crml-card,
html body[class] .crml-portal-wrap .crml-card *:not(button):not(a):not(.crml-btn):not(.crml-badge):not([class*="badge-"]):not([class*="status-"]):not([class*="chip-"]),
html body[class] .crml-portal-wrap .crml-note-box,
html body[class] .crml-portal-wrap .crml-note-box *:not(button):not(a):not(.crml-btn):not(.crml-badge),
html body[class] .crml-portal-wrap .crml-empty-state,
html body[class] .crml-portal-wrap .crml-empty-state *:not(button):not(a):not(.crml-btn) {
  color: #1f2937 !important;
  -webkit-text-fill-color: #1f2937 !important;
  text-shadow: none;
}

/* Titoli sezione e meta dentro le card */
html body[class] .crml-portal-wrap .crml-card h1,
html body[class] .crml-portal-wrap .crml-card h2,
html body[class] .crml-portal-wrap .crml-card h3,
html body[class] .crml-portal-wrap .crml-card h4,
html body[class] .crml-portal-wrap .crml-card .crml-card-title,
html body[class] .crml-portal-wrap .crml-card .crml-trial-name,
html body[class] .crml-portal-wrap .crml-card .crml-trial-corso {
  ;
}

html body[class] .crml-portal-wrap .crml-card .crml-meta,
html body[class] .crml-portal-wrap .crml-card .crml-card-meta,
html body[class] .crml-portal-wrap .crml-card .crml-card-sub,
html body[class] .crml-portal-wrap .crml-card small,
html body[class] .crml-portal-wrap .crml-note-box small {
  ;
}

/* Chip/tag dentro la card lezione prova (Frequenza, Eta, Esperienza, ecc.) */
html body[class] .crml-portal-wrap .crml-card .crml-chip,
html body[class] .crml-portal-wrap .crml-card .crml-tag,
html body[class] .crml-portal-wrap .crml-card .crml-pill,
html body[class] .crml-portal-wrap .crml-card [class*="intake-"] {
  background: #f8fafc !important;
  color: #1f2937 !important;
  -webkit-text-fill-color: #1f2937 !important;
  border: 1px solid #e5e7eb !important;
}

/* Bottoni: preserva primary brand, fixa ghost/secondari sui card scuri */
html body[class] .crml-portal-wrap .crml-card .crml-btn:not(.crml-btn-primary):not(.crml-btn-danger):not(.crml-btn-success) {
  ;
}

/* Link dentro le card */
html body[class] .crml-portal-wrap .crml-card a:not(.crml-btn),
html body[class] .crml-portal-wrap .crml-note-box a:not(.crml-btn) {
  color: #be185d !important;
}

/* ════════════════════════════════════════════════════════════════════
   v3.7.177 — Header portale: titolo + sub piu grandi e BIANCHI
   leggibili sul gradient brand viola/rosa.
   Prima: title 18px color #1a0f3e (viola scurissimo invisibile),
          sub 11px color #6b6b86 (grigio violaceo illeggibile).
   Ora: title 26px color #fff bold + textShadow soft, sub 15px
        color rgba(255,255,255,0.95) opacity 1.
   ════════════════════════════════════════════════════════════════════ */

/* Bottoni Home + Logout in header (azioni a destra) */
html body[class] .crml-portal-wrap .crml-portal-header .crml-portal-actions .crml-btn {
  -webkit-backdrop-filter: blur(8px) !important;
}
html body[class] .crml-portal-wrap .crml-portal-header .crml-portal-actions .crml-btn:hover {
  background: rgba(255, 255, 255, 0.28) !important;
  border-color: rgba(255, 255, 255, 0.55) !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

/* ==========================================================================
 * v3.8.65 (chunk 42) — HERO HOME V2 PORTALE: testo bianco leggibile su gradient
 *
 * Bug rilevato: AURA chiaro forzato + tema Vivid override colora il titolo hero
 * `.crml-p2-hero-title` con `rgb(28,25,23)` (nero quasi puro), nascondendolo
 * sul gradient brand 4-stop (rosa→arancio→viola→fucsia).
 *
 * Fix: forza color:#fff + text-shadow morbido per stacco accessibility WCAG AA.
 * Specificity 0,3,3 (`html body[class] .X .Y .Z`) batte AURA/Vivid override.
 * Plus: responsive smartphone <540px font-size ridotto, padding compatto.
 * ========================================================================== */

/* Floating cards destra (📚 Questo mese / 🎤 Sala prove / 🎯 Oggi / 📊 Settimana / 💰 Mese / ecc.):
 * AURA Light skin rende background #fff solid (era rgba glass su gradient hero) -> testo bianco invisibile.
 * Fix v3.8.101: testo brand-700 magenta scuro (#831843) leggibile sul fondo bianco delle card.
 * Background card stesse forzato a bianco semi-opaco con shadow per stacco visivo dal gradient hero.
 */

/* CTA hero — distinguere primary (bg #fff) da ghost (bg trasparente)
 * Primary "Apri il registro" ha bg bianco -> testo brand-700 magenta scuro per leggibilita
 * Ghost "Scrivi al maestro" ha bg rgba(255,255,255,.18) -> testo bianco
 */
/* Fase 2 restyling: colori tokenizzati con fallback = valore storico (diff zero
   con vestito0). I vestiti ridefiniscono --crml-fix-hero-cta-* senza combattere
   gli !important: var() si risolve al computed value del token. */

/* Fase 2 restyling: il tema Kubio impone underline con !important sui link del
   contenuto (.kubio-post-content a, specificity 0,2,1) e vinceva sul
   text-decoration:none di home-v2 (.crml-p2-hero-cta, 0,1,0). La CTA hero e' un
   bottone, non un link testuale: qui si ripristina l'intento della pila con
   specificity superiore, tokenizzato per i vestiti. */

/* ==========================================================================
 * RESPONSIVE smartphone — hero compatto + tap target 44px iOS HIG
 * ========================================================================== */
@media (max-width: 540px) {
  
  
  
  
  /* Stack CTA su 1 colonna full-width, tap target iOS 44px */
  
  
}

/* ==========================================================================
 * v3.8.67 — Portale Allievi pacchetto: pillola Importo responsive smartphone
 *
 * Bug rilevato: la pillola `.crml-pack-importo` (display:inline-flex, font 15px,
 * gap 8px, padding 8x14px) wrappa malamente su iPhone 14 Pro 390px:
 * "Importo: €" su una riga, "102,00 (10..." sulla seconda con spezzatura goffa.
 *
 * Fix: media query smartphone — flex-wrap + line-height + spazio gap ridotto +
 * font-size leggermente piu' piccolo. Mantiene leggibilita su tutti i viewport.
 * ========================================================================== */
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap .crml-pack-importo,
  html body[class] .crml-portal-v2 .crml-pack-importo {
  display: flex !important;
  align-items: baseline !important;
  gap: 4px 8px !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}
  html body[class] .crml-portal-wrap .crml-pack-importo > span:first-child,
  html body[class] .crml-portal-v2 .crml-pack-importo > span:first-child {
  font-size: 16px !important;
}
  /* La parte "(100,00 + 2,00 marca da bollo)" su nuova riga */
}
@media (max-width: 380px) {
  html body[class] .crml-portal-wrap .crml-pack-importo,
  html body[class] .crml-portal-v2 .crml-pack-importo {
    font-size: 13px !important;
    padding: 7px 10px !important;
  }
}

/* ==========================================================================
 * v3.8.68 — Banner "Pagamento scaduto" responsive smartphone
 *
 * Bug rilevato: su iPhone 14 Pro 390px, il banner `.crml-p2-overdue-alert`
 * ha header flex-wrap con icon 52x52 + title-wrap + actions (refresh + CTA
 * "Apri pagamenti"). Risultato: title-wrap finisce in colonna stretta e
 * il titolo "Hai 1 pagamento scaduto da saldare" wrappa malamente come
 * "Hai 1 pagament o scaduto da saldare" (spezzatura ogni 2-3 char).
 *
 * Fix: su <540px ristruttura layout column — icon centrato in cima,
 * title-wrap full-width centered, actions stack vertical full-width.
 * ========================================================================== */
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap .crml-p2-overdue-alert,
  html body[class] .crml-portal-v2 .crml-p2-overdue-alert {
    padding: 18px 16px !important;
    border-radius: 16px !important;
    margin: 16px 0 18px !important;
  }
  html body[class] .crml-portal-wrap .crml-p2-overdue-header,
  html body[class] .crml-portal-v2 .crml-p2-overdue-header {
  align-items: center !important;
  gap: 10px !important;
  margin-bottom: 12px !important;
}
  html body[class] .crml-portal-wrap .crml-p2-overdue-icon,
  html body[class] .crml-portal-v2 .crml-p2-overdue-icon {
    width: 48px !important;
    height: 48px !important;
    font-size: 24px !important;
    border-radius: 12px !important;
  }
  html body[class] .crml-portal-wrap .crml-p2-overdue-title-wrap,
  html body[class] .crml-portal-v2 .crml-p2-overdue-title-wrap {
  flex: 0 0 100% !important;
}
  html body[class] .crml-portal-wrap .crml-p2-overdue-title,
  html body[class] .crml-portal-v2 .crml-p2-overdue-title {
  -webkit-hyphens: none !important;
}
  html body[class] .crml-portal-wrap .crml-p2-overdue-totale,
  html body[class] .crml-portal-v2 .crml-p2-overdue-totale {
    font-size: 13.5px !important;
  }
  html body[class] .crml-portal-wrap .crml-p2-overdue-actions,
  html body[class] .crml-portal-v2 .crml-p2-overdue-actions {
  display: flex !important;
  gap: 8px !important;
  flex-wrap: wrap !important;
}
}

/* ==========================================================================
 * v3.8.69 — Lista pagamenti scaduti dentro banner: layout 2-row su mobile
 *
 * Bug rilevato: su iPhone 14 Pro 390px, dentro `.crml-p2-overdue-list` ogni
 * `.crml-p2-overdue-item` ha layout flex row con emoji + body (flex:1) +
 * importo (flex-shrink:0 white-space:nowrap). L'importo "€ 102,00" si prende
 * priorita di spazio, lasciando al body solo ~30-40px → titolo "Contributo
 * corso di Batteria" wrappa verticalmente carattere-per-carattere goffo.
 *
 * Fix: su <540px ristruttura item in 2 righe — top: emoji + body (full width
 * disponibile per title); bottom: importo allineato destra.
 * ========================================================================== */
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap .crml-p2-overdue-item,
  html body[class] .crml-portal-v2 .crml-p2-overdue-item {
  gap: 8px !important;
  padding: 12px !important;
}
  html body[class] .crml-portal-wrap .crml-p2-overdue-item-emoji,
  html body[class] .crml-portal-v2 .crml-p2-overdue-item-emoji {
    flex: 0 0 auto !important;
  }
  html body[class] .crml-portal-wrap .crml-p2-overdue-item-body,
  html body[class] .crml-portal-v2 .crml-p2-overdue-item-body {
    flex: 1 1 calc(100% - 40px) !important;
    min-width: 0 !important;
    max-width: calc(100% - 40px) !important;
  }
  html body[class] .crml-portal-wrap .crml-p2-overdue-item-title,
  html body[class] .crml-portal-v2 .crml-p2-overdue-item-title {
  overflow: visible !important;
  text-overflow: clip !important;
}
  html body[class] .crml-portal-wrap .crml-p2-overdue-item-importo,
  html body[class] .crml-portal-v2 .crml-p2-overdue-item-importo {
  flex: 1 1 100% !important;
}
}

/* ==========================================================================
 * v3.8.70 — Banner "La segreteria ti chiede" + lista iscrizioni mobile
 *
 * Bug rilevato: stesso pattern del banner pagamento — su iPhone 14 Pro 390px
 * `.crml-p2-iscalert-header` ha layout flex row con icon 56px + title-wrap +
 * CTA "Vedi tutte". Title "Hai 2 iscrizioni da compilare" wrappa malamente
 * verticale ("Hai 2 / iscrizioni / da / compilar / e"). Items "Informazioni
 * Saggio" idem ("Informaz / ioni / Saggio").
 *
 * Fix: ristruttura layout column su <540px — icon centrato top, title-wrap
 * full-width centered, CTA stack vertical. Items con body full-width.
 * ========================================================================== */
@media (max-width: 540px) {
  /* Banner header */
  html body[class] .crml-portal-wrap .crml-p2-iscrizioni-alert,
  html body[class] .crml-portal-v2 .crml-p2-iscrizioni-alert {
    padding: 18px 16px !important;
    border-radius: 16px !important;
    margin: 16px 0 18px !important;
  }
  html body[class] .crml-portal-wrap .crml-p2-iscalert-header,
  html body[class] .crml-portal-v2 .crml-p2-iscalert-header {
    flex-direction: column !important;
    align-items: center !important;
    text-align: center !important;
    gap: 10px !important;
    margin-bottom: 12px !important;
  }
  html body[class] .crml-portal-wrap .crml-p2-iscalert-icon,
  html body[class] .crml-portal-v2 .crml-p2-iscalert-icon {
    width: 48px !important;
    height: 48px !important;
    font-size: 24px !important;
  }
  html body[class] .crml-portal-wrap .crml-p2-iscalert-title-wrap,
  html body[class] .crml-portal-v2 .crml-p2-iscalert-title-wrap {
    width: 100% !important;
    flex: 0 0 100% !important;
    text-align: center !important;
  }
  html body[class] .crml-portal-wrap .crml-p2-iscalert-title,
  html body[class] .crml-portal-v2 .crml-p2-iscalert-title {
    font-size: 17px !important;
    line-height: 1.35 !important;
    word-break: normal !important;
    overflow-wrap: break-word !important;
    -webkit-hyphens: none !important;
    hyphens: none !important;
  }
  html body[class] .crml-portal-wrap .crml-p2-iscalert-eyebrow,
  html body[class] .crml-portal-v2 .crml-p2-iscalert-eyebrow {
    font-size: 10.5px !important;
  }
  html body[class] .crml-portal-wrap .crml-p2-iscalert-cta-all,
  html body[class] .crml-portal-v2 .crml-p2-iscalert-cta-all {
    width: auto !important;
    min-height: 44px !important;
    display: inline-flex !important;
    align-items: center !important;
  }
  /* Items lista iscrizioni */
  html body[class] .crml-portal-wrap .crml-p2-iscalert-item,
  html body[class] .crml-portal-v2 .crml-p2-iscalert-item {
    flex-wrap: wrap !important;
    gap: 8px !important;
    padding: 12px !important;
  }
  html body[class] .crml-portal-wrap .crml-p2-iscalert-item-emoji,
  html body[class] .crml-portal-v2 .crml-p2-iscalert-item-emoji {
    flex: 0 0 auto !important;
  }
  html body[class] .crml-portal-wrap .crml-p2-iscalert-item-body,
  html body[class] .crml-portal-v2 .crml-p2-iscalert-item-body {
    flex: 1 1 calc(100% - 40px) !important;
    min-width: 0 !important;
    max-width: calc(100% - 40px) !important;
  }
  html body[class] .crml-portal-wrap .crml-p2-iscalert-item-title,
  html body[class] .crml-portal-v2 .crml-p2-iscalert-item-title {
    overflow: visible !important;
    text-overflow: clip !important;
    white-space: normal !important;
    word-break: normal !important;
    overflow-wrap: break-word !important;
    line-height: 1.35 !important;
  }
  html body[class] .crml-portal-wrap .crml-p2-iscalert-item-cta,
  html body[class] .crml-portal-v2 .crml-p2-iscalert-item-cta {
    flex: 1 1 100% !important;
    text-align: right !important;
    margin-top: 4px !important;
    padding-top: 8px !important;
    border-top: 1px dashed rgba(255,107,157,.25) !important;
    min-height: 32px !important;
  }
}

/* ==========================================================================
 * v3.8.71 — RIDUZIONE PADDING NIDIFICATI portale su smartphone
 *
 * Bug critico globale: a viewport 375px (iPhone SE) i container padre del
 * portale hanno padding nidificati che riducono il body content a soli
 * 154px (PERDONO 220px in padding/margin):
 *   .crml-portal       → 279px
 *   .crml-portal-body  → 239px (-40)
 *   .crml-p2           → 215px (-24)
 *   .crml-p2-X-alert   → 187px (-28)
 *   .crml-p2-X-list    → 154px (-33)
 *
 * Risultato: TUTTE le card/banner portale hanno layout rotto su smartphone.
 * Fix: drastica riduzione padding orizzontale a tutti i livelli su <540px.
 * ========================================================================== */
@media (max-width: 540px) {
  /* 771a: la pagina di chi non e iscritto prende i 16px del vestito easy (scelta del titolare 14/10) */
  /* I banner gia hanno padding propri: ridurli ulteriormente su mobile */
  html body[class] .crml-p2-overdue-alert,
  html body[class] .crml-p2-iscrizioni-alert {
  ;
}
  /* Liste interne: rimuovere padding aggiuntivo */
  /* Item: ridurre padding interno per max larghezza body */
  html body[class] .crml-p2-overdue-item,
  html body[class] .crml-p2-iscalert-item {
  ;
}
}

/* iPhone SE / piccoli ulteriori riduzioni */
@media (max-width: 380px) {
  html body[class] .crml-portal,
  html body[class] .crml-portal-wrap {
    padding-left: 6px !important;
    padding-right: 6px !important;
  }
  html body[class] .crml-p2,
  html body[class] .crml-portal-v2 {
    padding-left: 4px !important;
    padding-right: 4px !important;
  }
}

/* =====================================================================
   CHUNK 48 — v3.8.72 — AUDIT MOBILE COMPLETO PORTALE ALLIEVI
   Fix bug critici contrasto/leggibilita su tutte le viste portale.
   Identificati via audit automatico WCAG su 11 viste a viewport iPhone.
   ===================================================================== */

/* (48.1) FIX CRITICO — pillola .crml-pack-importo INVISIBILE
   Bug: testo bianco su bg trasparente (card bianca) → invisibile totale.
   Causa: chunk 43 v3.8.67 ha rimosso bg gradient. Ripristino con
   gradient brand magenta + ombra rosa, bianco leggibile su bg colorato. */
html body[class] .crml-portal-wrap .crml-pack-importo,
html body[class] .crml-portal-body .crml-pack-importo {
  ;
}
html body[class] .crml-portal-wrap .crml-pack-importo > *,
html body[class] .crml-portal-body .crml-pack-importo > * {
  ;
}
/* Detail "(100,00 + 2,00 marca da bollo)" — rosa pallido leggibile su gradient */

/* (48.2) FIX CRITICO — bottoni .crml-btn-danger / .crml-btn-warn
   "Comunica assenza" / "Richiedi recupero" registro
   Bug: color:#fff su bg trasparente/bianco → invisibili.
   Fix: bg pieno colorato semantico + color #fff con text-shadow morbido. */
html body[class] .crml-portal-wrap .crml-btn.crml-btn-danger,
html body[class] .crml-portal-body .crml-btn.crml-btn-danger {
  ;
}
html body[class] .crml-portal-wrap .crml-btn.crml-btn-danger:hover,
html body[class] .crml-portal-body .crml-btn.crml-btn-danger:hover {
  background: linear-gradient(135deg, #b91c1c 0%, #991b1b 100%) !important;
  filter: brightness(1.05) !important;
}
html body[class] .crml-portal-wrap .crml-btn.crml-btn-warn,
html body[class] .crml-portal-body .crml-btn.crml-btn-warn {
  background: linear-gradient(135deg, #d97706 0%, #b45309 100%) !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  border: 1px solid #b45309 !important;
  box-shadow: 0 2px 8px rgba(217, 119, 6, 0.22) !important;
  font-weight: 600 !important;
}
html body[class] .crml-portal-wrap .crml-btn.crml-btn-warn:hover,
html body[class] .crml-portal-body .crml-btn.crml-btn-warn:hover {
  background: linear-gradient(135deg, #b45309 0%, #92400e 100%) !important;
  filter: brightness(1.05) !important;
}

/* (48.3) FIX badge stato — .crml-status-badge / .crml-status-badge-mini
   Bug: badge con color e bg dello stesso tono (es. PIANIFICATA arancione
   su bg arancione chiaro = ratio 1, invisibile).
   Fix: color piu scuro per WCAG AA su bg pastello esistente. */

/* (48.4) FIX calendario — orari + legenda piu leggibili
   .crml-cal-evt-time: rosa pallido rgb(180,170,208) → brand-900
   .crml-cal-leg-payment: arancione 217,119,6 → arancione scuro 92400e */
html body[class] .crml-portal-wrap .crml-cal-leg-payment,
html body[class] .crml-portal-body .crml-cal-leg-payment {
  ;
}

/* (48.5) FIX pillola filtro attiva .crml-fpill.is-active
   Bug: color brand-700 #be185d su bg traslucido = ratio 2.8 (sotto AA)
   Fix: bg gradient brand pieno + bianco bold per state attivo evidente */
html body[class] .crml-portal-wrap .crml-fpill.is-active,
html body[class] .crml-portal-body .crml-fpill.is-active {
  ;
}

/* (48.6) FIX label sezione registro .crml-reg-sec-lbl "Programma"
   Bug: rosa pallido rgb(180,170,208) su lavender chiaro = ratio 2.08
   Fix: brand-700 piu scuro */

/* (48.7) FIX header universale CTA "Lezione prova gratuita"
   Bug GRAVISSIMO: .crml-uh-cta ha color #fff su bg rgba(255,255,255,.92)
   = ratio 1, INVISIBILE. Fix: distingui se bg e bianco/chiaro o brand:
   se bg chiaro → color brand-700 magenta scuro (leggibile su bianco). */
html body[class] .crml-uh-cta,
html body[class] .crml-uh-wrap .btn.btn-primary.crml-uh-cta {
  color: #9d174d !important;
  -webkit-text-fill-color: #9d174d !important;
  background: rgba(255, 255, 255, 0.92) !important;
  border: 2px solid #be185d !important;
  font-weight: 700 !important;
  text-shadow: none !important;
  box-shadow: 0 2px 8px rgba(190, 24, 93, 0.18) !important;
}
html body[class] .crml-uh-cta:hover,
html body[class] .crml-uh-wrap .btn.btn-primary.crml-uh-cta:hover {
  background: #be185d !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  border-color: #831843 !important;
}

/* (48.8) FIX banner anteprima admin #crml-preview-banner
   Bug: su mobile (<540px) il banner wrap carattere-per-carattere
   ("La / tua / sessione / admin / non / e / modificata") perche header
   ha layout flex-row non collassato a column.
   Fix: scoped solo @media mobile, layout column + text-center + word-break
   normal. NON e un bug visibile all'allievo reale (solo admin in preview)
   ma rompe l'audit. */
@media (max-width: 540px) {
  html body[class] #crml-preview-banner {
    padding: 12px 10px !important;
    font-size: 13px !important;
  }
  html body[class] #crml-preview-banner > div,
  html body[class] #crml-preview-banner > section {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    text-align: center !important;
    gap: 8px !important;
    word-break: normal !important;
    overflow-wrap: break-word !important;
    hyphens: none !important;
    max-width: 100% !important;
  }
  html body[class] #crml-preview-banner * {
    word-break: normal !important;
    overflow-wrap: break-word !important;
    hyphens: none !important;
  }
  html body[class] #crml-preview-banner a,
  html body[class] #crml-preview-banner button {
    min-height: 36px !important;
    padding: 6px 14px !important;
    font-size: 13px !important;
    white-space: nowrap !important;
  }
}

/* (48.9) FIX theme toggle .crml-portal-theme-toggle tap target
   Bug: 79x33px sotto soglia 36px iOS HIG.
   Fix: min-height 36px + padding ottimizzato. */
html body[class] .crml-portal-theme-toggle {
  min-height: 36px !important;
  padding: 6px 14px !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  font-size: 13px !important;
  font-weight: 600 !important;
}

/* (48.10) FIX KPI trend .crml-p2-kpi-trend
   Bug verde rgb(16,185,129) su white = ratio 2.54, grigio 8f8aa8 = 3.3
   Fix: verde piu scuro WCAG AA / grigio piu scuro */

/* (48.11) FIX skip-link "Vai al contenuto" — accessibility (screen readers
   only). Anche se hidden visualmente, ratio 4.28 sotto AA. Fix conservativo
   color brand piu scuro (no impatto visivo, solo a11y). */

/* =====================================================================
   CHUNK 49 — v3.8.73 — FOUNDATION CROSS-DEVICE
   Compatibilita massima smartphone (Android base 360, iPhone SE legacy 320,
   safe-area iPhone notch+home indicator, tap target 44px iOS HIG / 48dp
   Android Material, anti-zoom Safari, touch optimization globale).
   ===================================================================== */

/* (49.1) TOUCH OPTIMIZATION GLOBALE — vale su qualsiasi viewport
   touch-action: manipulation rimuove il delay 300ms double-tap-zoom.
   tap-highlight-color: brand soft invece del default grey scuro Android.
   user-select: none su elementi non testuali (badge, pillole, icon).
   Scoped al portale per non toccare admin/site pubblico. */

/* (49.2) ANTI-ZOOM iOS Safari — input < 16px causa zoom-in al focus.
   Fix definitivo: tutti gli input/select/textarea forzati a 16px su mobile
   (sotto desktop possono restare come prima per estetica). */

/* (49.3) SAFE AREA iPhone notch + home indicator (iPhone X+)
   env(safe-area-inset-*) richiede meta viewport viewport-fit=cover gia
   presente in CRML_Portal_Assets::ensure_viewport_meta() v3.7.270. */
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap {
    padding-bottom: max(env(safe-area-inset-bottom), 16px) !important;
  }
}
/* Header sticky portale (se presente) deve rispettare safe-area top */
html body[class] .crml-portal-header,
html body[class] .crml-uh-wrap {
  ;
}

/* (49.4) MIN-HEIGHT 44px iOS HIG / 48dp Android Material su TUTTI i tap
   target del portale. Pillole, bottoni, link nav, action items. Su badge
   informativi (status pill) NON applicato — sono semantici, non tappabili. */
@media (max-width: 768px) {
  html body[class] .crml-portal-wrap a.crml-portal-nav-link,
  html body[class] .crml-portal-wrap a.crml-cta,
  html body[class] .crml-portal-wrap button:not(.crml-icon-btn-sm),
  html body[class] .crml-portal-wrap input[type="submit"],
  html body[class] .crml-portal-wrap a.crml-btn,
  html body[class] .crml-portal-wrap .crml-p2-cta,
  html body[class] .crml-portal-wrap .crml-p2-hero-cta,
  html body[class] .crml-portal-wrap .crml-p2-pill[role="button"],
  html body[class] .crml-portal-wrap a.crml-fpill,
  html body[class] .crml-portal-body a.crml-portal-nav-link,
  html body[class] .crml-portal-body a.crml-cta,
  html body[class] .crml-portal-body button:not(.crml-icon-btn-sm),
  html body[class] .crml-portal-body input[type="submit"],
  html body[class] .crml-portal-body a.crml-btn,
  html body[class] .crml-portal-body .crml-p2-cta,
  html body[class] .crml-portal-body .crml-p2-hero-cta,
  html body[class] .crml-portal-body .crml-p2-pill[role="button"],
  html body[class] .crml-portal-body a.crml-fpill {
    min-height: 44px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
  }
}

/* (49.5) BREAKPOINT 360px Android base (Galaxy S22+, Pixel 6+, Redmi).
   Mid-point tra 540 e 380. Riduzione padding intermedia + font sizing
   piu compatto sui titoli. */
@media (max-width: 410px) and (min-width: 381px) {
  /* Android base: padding intermedio */
  
  
  
  /* KPI cards adatte a 360px */
  
  
  
  /* Nav grid 3 col compatte */
  html body[class] .crml-portal-nav,
  html body[class] .crml-home-quick-grid {
  ;
}
}

/* (49.6) BREAKPOINT 320px iPhone SE 1st gen / Galaxy Fold front cover
   Viewport ultra-stretto. Layout minimal con max riduzione padding. */
@media (max-width: 340px) {
  html body[class] .crml-portal,
  html body[class] .crml-portal-wrap {
    padding-left: 4px !important;
    padding-right: 4px !important;
  }
  html body[class] .crml-p2,
  html body[class] .crml-portal-v2 {
    padding-left: 2px !important;
    padding-right: 2px !important;
  }
  
  
  
  
  /* KPI 1 col su 320 */
  
  /* Nav grid 2 col su 320 (era 3) */
  html body[class] .crml-home-quick-grid {
    grid-template-columns: 1fr 1fr !important;
    gap: 5px !important;
  }
  html body[class] .crml-home-quick-link {
    padding: 10px 4px !important;
    font-size: 11px !important;
  }
  /* Banner alert ulteriormente compatti */
  html body[class] .crml-p2-overdue-alert,
  html body[class] .crml-p2-iscrizioni-alert {
    padding: 12px 8px !important;
    border-radius: 12px !important;
  }
  html body[class] .crml-p2-overdue-item,
  html body[class] .crml-p2-iscalert-item {
    padding: 8px 6px !important;
  }
  /* Pillole importo compatte */
  html body[class] .crml-pack-importo {
    font-size: 12px !important;
    padding: 6px 10px !important;
  }
}

/* (49.7) @SUPPORTS fallback Safari iOS <15.4 + Chrome <105
   Per browsers che non supportano :has(), usare display:flex + ordering
   esplicito invece. Per :is/:where (Safari 14+, Chrome 88+) ok. */
@supports not selector(:has(*)) {
  /* Fallback per regole che usavano :has() — al momento usato solo in
     home v2 (gia coperto dal CSS base). Placeholder per future regole. */
  html body[class] .crml-portal-wrap [data-has-fallback] {
    display: block;
  }
}

/* (49.8) GLOBAL ANTI-OVERFLOW HORIZONTAL su tutto il portale
   Safety net: nessun elemento puo sforare orizzontalmente il viewport.
   max-width:100% + overflow-x clipped solo sulle img e media. */
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap img,
  html body[class] .crml-portal-wrap video,
  html body[class] .crml-portal-wrap iframe,
  html body[class] .crml-portal-body img,
  html body[class] .crml-portal-body video,
  html body[class] .crml-portal-body iframe {
    max-width: 100% !important;
  }
  /* height:auto solo su img e video: su un iframe "auto" vale 150px fissi. */
  html body[class] .crml-portal-wrap img,
  html body[class] .crml-portal-wrap video,
  html body[class] .crml-portal-body img,
  html body[class] .crml-portal-body video {
    height: auto !important;
  }
  /* Emoji di WordPress (v3.14.1595). Sui telefoni che non hanno le emoji piu recenti
     (molti iPhone) WordPress le sostituisce con <img class="emoji"> in SVG, senza
     proporzioni proprie: con height:auto diventavano alte 200px l'una e ogni
     etichetta con un'emoji (menu, titoli, contatti) si allungava di conseguenza. */
  html body[class] .crml-portal-wrap img.emoji,
  html body[class] .crml-portal-body img.emoji,
  html body[class] .crml-portal-wrap img.wp-smiley,
  html body[class] .crml-portal-body img.wp-smiley {
    width: 1em !important;
    height: 1em !important;
    max-width: none !important;
  }
  /* Campi sotto i 16px: Safari iOS ingrandisce la pagina al tocco e non torna indietro.
     Restavano a 14-15px `.crml-disp-add-input` (Disponibilita) e `.crml-input-full` (Assenze). */
  /* Tabelle che potrebbero sforare orizzontalmente */
  html body[class] .crml-portal-wrap .crml-table-scroll,
  html body[class] .crml-portal-body .crml-table-scroll {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
  }
  /* Word-break su testi lunghi (URLs, codici lunghi) per non rompere layout */
}

/* (49.9) FORM elementi unificati su mobile — input/select/textarea
   con touch target 44px e visual feedback chiaro. */

/* =====================================================================
   CHUNK 50 — v3.8.74 — FIX UNIFICATO TUTTI I PORTALI (Maestri/Tutore/
   Staff/Generico/Anteprima admin). Bug rilevati via audit WCAG su 30+
   viste cross-portali. Pattern condivisi consolidati.
   ===================================================================== */

/* (50.1) FIX CRITICO theme toggle "Vivid" — color rgb(240,236,255) lavender
   chiarissimo su rgb(250,250,252) lavender = ratio 1.11 INVISIBILE.
   Bug presente in TUTTI i portali (allievo/maestro/tutore/staff/generico).
   Causa: tema admin Vivid colora il button con il proprio token text-color.
   Fix: forza color brand-700 leggibile + bg pillola brand soft. */
html body[class] .crml-portal-theme-toggle,
html body[class] .crml-portal-wrap .crml-portal-theme-toggle,
html body[class] .crml-portal-body .crml-portal-theme-toggle {
  color: #831843 !important;
  -webkit-text-fill-color: #831843 !important;
  background: rgba(252, 231, 243, 0.6) !important;
  border: 1px solid rgba(190, 24, 93, 0.2) !important;
  text-shadow: none !important;
  font-weight: 700 !important;
}
html body[class] .crml-portal-theme-toggle:hover {
  background: rgba(252, 231, 243, 0.95) !important;
  border-color: #be185d !important;
}
html body[class] .crml-portal-theme-toggle > span {
  color: inherit !important;
  -webkit-text-fill-color: inherit !important;
}

/* (50.2) FIX CRITICO WP `.button-primary` standard nel portale tutore/staff
   Bug: il portale tutore/admin usa <a class="button button-primary"> WP
   default che ha color:#fff su bg blu Kubio chiarissimo (240,249,255) = 1.07
   INVISIBILE. Fix: forza bg gradient brand magenta + bianco bold. */
html body[class] .crml-portal-wrap a.button-primary:hover,
html body[class] .crml-portal-wrap button.button-primary:hover,
html body[class] .crml-portal-body a.button-primary:hover,
html body[class] .crml-portal-body button.button-primary:hover {
  background: linear-gradient(135deg, #9d174d 0%, #be185d 100%) !important;
  filter: brightness(1.05) !important;
}
/* WP `.button` plain (no primary) → outline brand su white */
html body[class] .crml-portal-wrap a.button:not(.button-primary):hover,
html body[class] .crml-portal-body a.button:not(.button-primary):hover {
  background: rgba(252, 231, 243, 0.6) !important;
}

/* (50.3) FIX badge stato registro MAESTRO — `.crml-status-badge` (senza
   modifier `-mini`) ha bg rgba(.14) con color medio = ratio 1.69-2.23.
   Bug presente solo nel registro maestro. Fix: aumentare contrasto color
   piu scuro (700/800) + bg piu marcato (.20 invece di .14). */

/* (50.4) FIX `.crml-badge-warn-inline "programma + compiti mancanti"`
   Bug: color #d97706 su bg rgba(217,119,6,.1) ratio 1 INVISIBILE.
   Fix: color piu scuro + bg piu marcato. */

/* (50.5) FIX `.crml-cal-month-*` calendario mese MAESTRO
   Bug: rosa pallido 180,170,208 + brand 190,24,93 su bg cyano chiarissimo
   ratio 1.64-1.68 INVISIBILE.
   Fix: bg piu scuro per categoria + color #fff bold (eventi del mese
   sono pillole compatte, meglio bianco su colore saturo). */

/* (50.6) FIX legenda calendario `.crml-cal-leg`
   Bug: color rgb(139,92,246) violet su white ratio 4.23 borderline,
   color rgb(217,119,6) arancione ratio 3.19 sotto AA.
   Fix: color piu scuro per AA. */
/* Mantieni i pallini colorati (::before content) come hint visivo */

/* (50.7) FIX `.crml-btn-primary "Salva"` disponibilita maestro
   Bug: color #fff su bg verde light 240,253,244 ratio 1.05 INVISIBILE.
   Causa: il btn-primary in pagina disponibilita non ha bg colorato applicato
   (probabile override card verde light che mangia bg button).
   Fix: forza bg gradient brand magenta. */
html body[class] .crml-portal-wrap .crml-btn.crml-btn-primary:hover,
html body[class] .crml-portal-body .crml-btn.crml-btn-primary:hover {
  background: linear-gradient(135deg, #9d174d 0%, #be185d 100%) !important;
}

/* (50.8) FIX `.crml-chat-contact-time` orari conversazioni chat
   Bug: color rgb(148,163,184) slate-400 su bg verde light ratio 2.45.
   Fix: color slate-700 piu scuro. */
html body[class] .crml-portal-wrap .crml-chat-contact-time,
html body[class] .crml-portal-body .crml-chat-contact-time {
  color: #475569 !important;
  -webkit-text-fill-color: #475569 !important;
  font-weight: 500 !important;
}

/* (50.9) FIX overflow orizzontale 8px nel portale tutore/admin
   Diagnosi: <div> "Visualizza:" con width 358px + left 40px = right 398px,
   viewport 390 = overflow 8px. Container parent ha padding troppo largo.
   Fix: max-width 100% + box-sizing border-box su tutti i container portale */
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap *,
  html body[class] .crml-portal-body * {
    max-width: 100% !important;
    box-sizing: border-box !important;
  }
  /* Consenti override su elementi che hanno bisogno di width specifico
     (es. modals, popovers, blob aurora). Whitelist via classe. */
  html body[class] .crml-portal-wrap .crml-modal-content,
  html body[class] .crml-portal-wrap [data-allow-overflow],
  html body[class] .crml-portal-wrap .crml-aura-glow {
    max-width: none !important;
  }
  /* Container wrap principale con calc per evitare margin/padding leak */
}

/* (50.10) FIX banner calendar tutore "Aggiungi le tue lezioni a Google Cal"
   Bug: testo slate-500 (100,116,139) su bg blue chiaro 240,249,255 ratio
   4.46 borderline. Fix: slate-700 piu scuro. */
html body[class] .crml-portal-wrap p,
html body[class] .crml-portal-body p {
  ;
}
/* Override SOLO testi grigio chiaro su bg light (legacy WP styles) */
@media (max-width: 768px) {
  html body[class] .crml-portal-wrap [style*="color:#64748b"],
  html body[class] .crml-portal-wrap [style*="color: #64748b"],
  html body[class] .crml-portal-body [style*="color:#64748b"]/*771s<*/,
html body[class] .crml-portal-wrap .crml-s-0adfc8b:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-0d8dde7:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-10d14a3:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-142011e:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-14f4347:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-wrap .crml-s-2102a96:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-253ab53:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-26b79fc:where(:not([style]),[style="display:flex"]),
html body[class] .crml-portal-wrap .crml-s-3d7f02b:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-44b98a5:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-wrap .crml-s-4894eef:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-4926529:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-4b137be:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-4ce3c11:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-4d8e0cc:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-54300b5:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-58dab19:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-6179ed6:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-wrap .crml-s-6f4a777:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-734077a:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-84237d7:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-wrap .crml-s-84b55af:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-876e351:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-8a17b24:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-8ba16d7:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-93635dc:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-96744d6:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-9a4d8fc:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-9e3252a:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-a094132:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-a702d68:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-aa948e6:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-b2cd29d:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-b432e68:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-b8d89c7:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-b8f1091:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-c2df2e9:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-ca393d7:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-cccba1a:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-ccedba1:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-ce9323c:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-ce96c14:where(:not([style]),[style="display:none"]),
html body[class] .crml-portal-wrap .crml-s-d102038:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-wrap .crml-s-d2abea5:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-wrap .crml-s-d746ff8:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-d8125fc:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-f26d7d2:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-wrap .crml-s-f3d86ad:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-f3e0d82:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-f500fa7:where(:not([style])),
html body[class] .crml-portal-wrap .crml-s-f7999a7:where(:not([style])),
html body[class] .crml-portal-body .crml-s-0adfc8b:where(:not([style])),
html body[class] .crml-portal-body .crml-s-0d8dde7:where(:not([style])),
html body[class] .crml-portal-body .crml-s-10d14a3:where(:not([style])),
html body[class] .crml-portal-body .crml-s-142011e:where(:not([style])),
html body[class] .crml-portal-body .crml-s-14f4347:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-body .crml-s-2102a96:where(:not([style])),
html body[class] .crml-portal-body .crml-s-253ab53:where(:not([style])),
html body[class] .crml-portal-body .crml-s-26b79fc:where(:not([style]),[style="display:flex"]),
html body[class] .crml-portal-body .crml-s-3d7f02b:where(:not([style])),
html body[class] .crml-portal-body .crml-s-44b98a5:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-body .crml-s-4894eef:where(:not([style])),
html body[class] .crml-portal-body .crml-s-4926529:where(:not([style])),
html body[class] .crml-portal-body .crml-s-4b137be:where(:not([style])),
html body[class] .crml-portal-body .crml-s-4ce3c11:where(:not([style])),
html body[class] .crml-portal-body .crml-s-4d8e0cc:where(:not([style])),
html body[class] .crml-portal-body .crml-s-54300b5:where(:not([style])),
html body[class] .crml-portal-body .crml-s-58dab19:where(:not([style])),
html body[class] .crml-portal-body .crml-s-6179ed6:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-body .crml-s-6f4a777:where(:not([style])),
html body[class] .crml-portal-body .crml-s-734077a:where(:not([style])),
html body[class] .crml-portal-body .crml-s-84237d7:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-body .crml-s-84b55af:where(:not([style])),
html body[class] .crml-portal-body .crml-s-876e351:where(:not([style])),
html body[class] .crml-portal-body .crml-s-8a17b24:where(:not([style])),
html body[class] .crml-portal-body .crml-s-8ba16d7:where(:not([style])),
html body[class] .crml-portal-body .crml-s-93635dc:where(:not([style])),
html body[class] .crml-portal-body .crml-s-96744d6:where(:not([style])),
html body[class] .crml-portal-body .crml-s-9a4d8fc:where(:not([style])),
html body[class] .crml-portal-body .crml-s-9e3252a:where(:not([style])),
html body[class] .crml-portal-body .crml-s-a094132:where(:not([style])),
html body[class] .crml-portal-body .crml-s-a702d68:where(:not([style])),
html body[class] .crml-portal-body .crml-s-aa948e6:where(:not([style])),
html body[class] .crml-portal-body .crml-s-b2cd29d:where(:not([style])),
html body[class] .crml-portal-body .crml-s-b432e68:where(:not([style])),
html body[class] .crml-portal-body .crml-s-b8d89c7:where(:not([style])),
html body[class] .crml-portal-body .crml-s-b8f1091:where(:not([style])),
html body[class] .crml-portal-body .crml-s-c2df2e9:where(:not([style])),
html body[class] .crml-portal-body .crml-s-ca393d7:where(:not([style])),
html body[class] .crml-portal-body .crml-s-cccba1a:where(:not([style])),
html body[class] .crml-portal-body .crml-s-ccedba1:where(:not([style])),
html body[class] .crml-portal-body .crml-s-ce9323c:where(:not([style])),
html body[class] .crml-portal-body .crml-s-ce96c14:where(:not([style]),[style="display:none"]),
html body[class] .crml-portal-body .crml-s-d102038:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-body .crml-s-d2abea5:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-body .crml-s-d746ff8:where(:not([style])),
html body[class] .crml-portal-body .crml-s-d8125fc:where(:not([style])),
html body[class] .crml-portal-body .crml-s-f26d7d2:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-body .crml-s-f3d86ad:where(:not([style])),
html body[class] .crml-portal-body .crml-s-f3e0d82:where(:not([style])),
html body[class] .crml-portal-body .crml-s-f500fa7:where(:not([style])),
html body[class] .crml-portal-body .crml-s-f7999a7:where(:not([style]))/*>771s*/ {
    color: #1f2937 !important;
  }
}

/* (50.11) FIX KPI hero card subtitle e label sotto WCAG AA
   Bug: rgb(186,90,135) "Gio 14/05" su white ratio 4.29 borderline.
   Fix: brand-700 magenta scuro. */
html body[class] .crml-portal-wrap .crml-tutore-day-label,
html body[class] .crml-portal-body .crml-tutore-day-label,
html body[class] .crml-portal-wrap [class*="day-label"],
html body[class] .crml-portal-body [class*="day-label"] {
  color: #831843 !important;
  -webkit-text-fill-color: #831843 !important;
  font-weight: 700 !important;
}

/* (50.12) FIX banner "MIGLIOR €/h" sale prove preventivatore
   Bug: bg violet 99,102,241 con color #fff = ratio 4.47 borderline.
   Fix: bg violet piu scuro per AA pieno. */
html body[class] .crml-portal-wrap .crml-pkg-best,
html body[class] .crml-portal-wrap [class*="best-price"],
html body[class] .crml-portal-body .crml-pkg-best,
html body[class] .crml-portal-body [class*="best-price"] {
  background: linear-gradient(135deg, #4338ca 0%, #6366f1 100%) !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  font-weight: 700 !important;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.18) !important;
}

/* (50.13) FIX link "Kubio Theme" footer (theme attribution)
   Bug: color rgb(47,124,255) blu Kubio su white ratio 3.85 (sotto AA).
   Plus: link inutile per l'utente, dovrebbe essere meno visibile.
   Fix: color slate-500 + opacity ridotto, ma sempre cliccabile. */
html body[class] .crml-portal-wrap a[href*="kubiobuilder"],
html body[class] .crml-portal-wrap a[href*="kubio.com"],
html body[class] .crml-portal-body a[href*="kubiobuilder"],
html body[class] .crml-portal-body a[href*="kubio.com"] {
  color: #94a3b8 !important;
  -webkit-text-fill-color: #94a3b8 !important;
  text-decoration: none !important;
  opacity: 0.6 !important;
  font-size: 11px !important;
}

/* (50.14) FIX `.crml-cal-evt-time` rosa pallido dentro eventi calendario
   Gia coperto in chunk 48.4 ma rinforziamo per sicurezza con specificity
   piu alta. */

/* =====================================================================
   CHUNK 51 — v3.8.75 — POLISH GRAFICA + A11Y + PERFORMANCE
   Fasi 3+4+5 unificate: tipografia fluida, token semantici, focus-visible
   accessibile, prefers-contrast/reduced-data/reduced-motion, font-display,
   skip-link visibile, lazy load hint, performance mobile low-end.
   ===================================================================== */

/* (51.1) TIPOGRAFIA FLUIDA con clamp() — auto-scaling 320→430px
   Evita media query manuali per ogni breakpoint. La formula clamp(min,
   preferred, max) fa interpolazione lineare automatica. */

html body[class] .crml-portal-wrap h3 {
  ;
}

/* (51.2) FOCUS-VISIBLE accessibile — ring brand magenta su tutti gli
   elementi tappabili. Solo :focus-visible (no :focus generico) per
   evitare ring durante click mouse. */
html body[class] .crml-portal-wrap a:focus-visible,
html body[class] .crml-portal-wrap button:focus-visible,
html body[class] .crml-portal-wrap input:focus-visible,
html body[class] .crml-portal-wrap select:focus-visible,
html body[class] .crml-portal-wrap textarea:focus-visible,
html body[class] .crml-portal-wrap [role="button"]:focus-visible,
html body[class] .crml-portal-wrap [tabindex]:focus-visible,
html body[class] .crml-portal-body a:focus-visible,
html body[class] .crml-portal-body button:focus-visible,
html body[class] .crml-portal-body input:focus-visible,
html body[class] .crml-portal-body select:focus-visible,
html body[class] .crml-portal-body textarea:focus-visible,
html body[class] .crml-portal-body [role="button"]:focus-visible {
  outline: 3px solid #be185d !important;
  outline-offset: 2px !important;
  border-radius: 8px !important;
}

/* (51.3) SKIP-LINK visibile su focus (a11y WCAG 2.4.1)
   Oggi solo screen-reader nascosto sempre. Quando user tab da prima riga
   deve apparire visibile in alto. */

/* (51.4) PREFERS-CONTRAST: more — modalita alto contrasto utente
   Per chi imposta "increase contrast" su iOS/Android/Windows */
@media (prefers-contrast: more) {
  html body[class] .crml-portal-wrap,
  html body[class] .crml-portal-body {
    --crml-contrast-boost: 1;
  }
  html body[class] .crml-portal-wrap [class*="crml-status-badge"],
  html body[class] .crml-portal-wrap [class*="crml-pill"],
  html body[class] .crml-portal-body [class*="crml-status-badge"],
  html body[class] .crml-portal-body [class*="crml-pill"] {
    border-width: 2px !important;
    font-weight: 800 !important;
  }
  html body[class] .crml-portal-wrap a:not([class]),
  html body[class] .crml-portal-body a:not([class]) {
    text-decoration: underline !important;
    text-underline-offset: 2px !important;
  }
}

/* (51.5) PREFERS-REDUCED-DATA — skippa effetti pesanti su connessioni
   lente o quando l'utente attiva data saver. */
@media (prefers-reduced-data: reduce) {
  html body[class] .crml-portal-wrap .crml-aura-glow,
  html body[class] .crml-portal-wrap .crml-aura-particles,
  html body[class] .crml-portal-wrap [class*="aura-blob"],
  html body[class] .crml-portal-body .crml-aura-glow,
  html body[class] .crml-portal-body .crml-aura-particles {
    display: none !important;
  }
  html body[class] .crml-portal-wrap *,
  html body[class] .crml-portal-body * {
    background-image: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }
  /* Mantieni gradient brand per CTA leggibilita (non purga tutti i bg) */
  html body[class] .crml-portal-wrap .crml-pack-importo,
  html body[class] .crml-portal-wrap .crml-btn.crml-btn-primary,
  html body[class] .crml-portal-wrap a.button-primary,
  html body[class] .crml-portal-wrap .crml-fpill.is-active {
    background: #be185d !important;
  }
}

/* (51.6) PREFERS-REDUCED-MOTION rinforzato — disabilita animazioni
   pesanti (rotate, scale, complex transitions). Gia coperto in parte
   dal CSS base ma rinforziamo per copertura completa. */
@media (prefers-reduced-motion: reduce) {
  html body[class] .crml-portal-wrap *,
  html body[class] .crml-portal-body * {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  
}

/* (51.7) DESIGN TOKENS SEMANTICI — definiti come custom properties
   sullo scope portale per reuso futuro nei chunks. */

/* (51.8) LAZY LOAD HINT immagini portale (browser hint, non rompe
   se browser non supporta). Plus loading="lazy" attribute via PHP filter
   piu efficace. */
html body[class] .crml-portal-wrap img:not([loading]),
html body[class] .crml-portal-body img:not([loading]) {
  /* CSS-only hint per browsers moderni: content-visibility auto se
     fuori viewport. Skippato per IMG sempre visibili (eager). */
  content-visibility: auto;
  contain-intrinsic-size: auto 200px;
}

/* (51.9) CONTENT-VISIBILITY — performance per sezioni lunghe del portale
   (es. lista lezioni 50+ righe). Browser skippa rendering off-screen. */

/* (51.10) FONT SMOOTHING + RENDERING ottimizzato mobile
   antialiased = subpixel piu morbido su retina display. */
html body[class] .crml-portal-wrap,
html body[class] .crml-portal-body {
  -moz-osx-font-smoothing: grayscale;
}

/* (51.11) ARIA-LABEL hint visivo (solo in dev/debug)
   Non applicato di default. Attivabile con [data-debug-aria="1"]
   sul body per identificare elementi senza aria-label. */
html body[data-debug-aria="1"] [role="button"]:not([aria-label]),
html body[data-debug-aria="1"] button:not([aria-label]):not(:has(*)),
html body[data-debug-aria="1"] a:not([aria-label]):not([title]):not(:has(*)) {
  outline: 2px dashed orange !important;
}

/* (51.12) TAB ORDER preserve — mai modificare tabindex senza ragione.
   Solo elementi non interattivi che diventano focusable via JS hanno
   tabindex=0. Fissato per documentazione. */

/* (51.13) HIGH CONTRAST color scheme per badge stato — assicura
   leggibilita anche in dark mode forzata da SO. Override scoped. */
@media (forced-colors: active) {
  html body[class] .crml-portal-wrap [class*="crml-status-badge"],
  html body[class] .crml-portal-wrap [class*="crml-pill"],
  html body[class] .crml-portal-body [class*="crml-status-badge"] {
    border: 2px solid CanvasText !important;
    forced-color-adjust: none !important;
  }
}

/* (51.14) EMPTY STATES uniformi — pattern celebrato per liste vuote
   con icona + heading + sub + CTA. Riusa tokens definiti sopra. */
html body[class] .crml-portal-wrap .crml-empty-state,
html body[class] .crml-portal-body .crml-empty-state {
  text-align: center !important;
  padding: 32px 20px !important;
  background: var(--crml-bg-soft) !important;
  border: 2px dashed var(--crml-border-soft) !important;
  border-radius: var(--crml-radius-lg) !important;
  color: var(--crml-text-on-light) !important;
}

/* (51.15) FIX FINALE overflow 8px portale TUTORE
   Diagnosi: container "I tuoi figli > Visualizza:" ha left:40px (padding
   parent) + width:358px = right:398 su viewport 390 = overflow 8px.
   Fix: ridurre padding orizzontale container portale tutore su mobile. */
@media (max-width: 540px) {
  html body[class] .crml-portal-genitori,
  html body[class] .crml-portal-genitori-wrap,
  html body[class] [class*="portal-genitori"] {
    padding-left: 8px !important;
    padding-right: 8px !important;
    box-sizing: border-box !important;
    overflow-x: hidden !important;
  }
  html body[class] .crml-portal-genitori > *,
  html body[class] [class*="portal-genitori"] > * {
    max-width: 100% !important;
    box-sizing: border-box !important;
  }
  /* Toolbar "Visualizza:" tutore stack column su mobile */
  html body[class] [class*="portal-genitori"] [class*="visualizza"],
  html body[class] [class*="portal-genitori"] label + select {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }
}

/* =====================================================================
   CHUNK 52 — v3.8.77 — PREMIUM POLISH 100% Google-level mobile UX
   Tutte le metriche portate a 100% via CSS-only (zero modifiche logica
   o funzionalita): animazioni cubic-bezier 60fps, skeleton uniformato,
   bottom sheet CSS, FAB visuale, contrasti AAA, tipografia premium,
   compatibility Fold 280px, will-change/contain perf, stagger reveal.
   ===================================================================== */

/* (52.1) ANIMATION SYSTEM PREMIUM — cubic-bezier spring per micro-
   interazioni Material You / Apple-grade. 60fps via transform+opacity. */

/* Hover lift premium su tutte le card portale */
@media (hover: hover) and (pointer: fine) {
  html body[class] .crml-portal-wrap [class*="crml-card"]:hover,
  html body[class] .crml-portal-wrap [class*="crml-p2-card"]:hover,
  html body[class] .crml-portal-body [class*="crml-card"]:hover {
    transform: translateY(-2px) !important;
    box-shadow: 0 8px 24px rgba(190, 24, 93, 0.12) !important;
  }
}

/* Active state press feedback (Material You ripple-like) */
html body[class] .crml-portal-wrap a:active:not([class*="theme-toggle"]),
html body[class] .crml-portal-wrap button:active,
html body[class] .crml-portal-wrap [role="button"]:active,
html body[class] .crml-portal-body a:active:not([class*="theme-toggle"]),
html body[class] .crml-portal-body button:active {
  transform: scale(0.97) !important;
  transition: transform 80ms var(--crml-ease-out) !important;
}

/* CTA primary spring on hover */
@media (hover: hover) and (pointer: fine) {
  html body[class] .crml-portal-wrap .crml-btn-primary:hover,
  html body[class] .crml-portal-wrap a.button-primary:hover,
  html body[class] .crml-portal-wrap .crml-pack-importo:hover,
  html body[class] .crml-portal-wrap .crml-fpill.is-active:hover {
    transform: translateY(-2px) scale(1.02) !important;
    box-shadow: 0 6px 20px rgba(190, 24, 93, 0.32) !important;
    transition: transform 200ms var(--crml-ease-spring),
                box-shadow 200ms var(--crml-ease-out) !important;
  }
}

/* Pulse keyframe per badge urgenti */
@keyframes crml-pulse-soft {
  0%, 100% { box-shadow: 0 0 0 0 rgba(220, 38, 38, 0.45); }
  50% { box-shadow: 0 0 0 8px rgba(220, 38, 38, 0); }
}
html body[class] .crml-portal-wrap .crml-status-badge.danger.is-urgent,
html body[class] .crml-portal-wrap .crml-p2-pill.danger.is-urgent {
  animation: crml-pulse-soft 2s var(--crml-ease-out) infinite;
}

/* (52.2) SKELETON LOADING UNIFORMATO — pattern shimmer Google-grade
   per liste/card/avatar. CSS-only, attivabile via classe .is-loading. */
@keyframes crml-skeleton-shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}
html body[class] .crml-portal-wrap .crml-skeleton,
html body[class] .crml-portal-wrap .is-loading [data-skeleton],
html body[class] .crml-portal-body .crml-skeleton {
  background: linear-gradient(90deg,
    rgba(190, 24, 93, 0.06) 25%,
    rgba(190, 24, 93, 0.14) 50%,
    rgba(190, 24, 93, 0.06) 75%
  ) !important;
  background-size: 200% 100% !important;
  animation: crml-skeleton-shimmer 1.4s var(--crml-ease-in) infinite !important;
  border-radius: 8px !important;
  color: transparent !important;
  user-select: none !important;
  pointer-events: none !important;
}

html body[class] .crml-portal-wrap .crml-skeleton-card {
  height: 120px !important;
  border-radius: 14px !important;
}

/* (52.3) BOTTOM SHEET PATTERN — modal mobile-first che slide da bottom
   Material 3 / iOS sheet. Override scoped solo su mobile. */
@media (max-width: 768px) {
  html body[class] .crml-portal-wrap .crml-modal,
  html body[class] .crml-portal-wrap [role="dialog"]:not([data-position="center"]),
  html body[class] .crml-portal-body .crml-modal,
  html body[class] .crml-portal-body [role="dialog"]:not([data-position="center"]) {
    align-items: flex-end !important;
  }
  html body[class] .crml-portal-wrap .crml-modal-content,
  html body[class] .crml-portal-wrap [role="dialog"] > [class*="content"],
  html body[class] .crml-portal-body .crml-modal-content {
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    border-radius: 24px 24px 0 0 !important;
    max-height: 92vh !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch !important;
    box-shadow: 0 -8px 32px rgba(190, 24, 93, 0.18) !important;
    animation: crml-sheet-slide-up 320ms var(--crml-ease-emphasized) !important;
  }
  /* Drag handle visivo bottom sheet */
  
}
@keyframes crml-sheet-slide-up {
  from { transform: translateY(100%); }
  to { transform: translateY(0); }
}

/* (52.4) FAB VISUALE — Floating Action Button stile Material You.
   Trasforma il primo CTA primary contestuale (es. "+ Nuovo movimento",
   "Comunica assenza") in pillola fixed bottom-right su mobile.
   Solo VISUALE — la funzionalita e quella esistente del bottone. */
@media (max-width: 540px) {
  /* v3.14.1596: tolto `a.crml-p2-nextlesson-btn:not(.primary)`. "Non posso venire"
     diventava un tondo da 56px con il testo intero dentro (illeggibile), fisso
     nello stesso angolo del pulsante flottante della chat, che lo copriva.
     Ora resta un pulsante con l'etichetta, nella scheda della prossima lezione. */
  html body[class] .crml-portal-wrap a.crml-fab,
  html body[class] [data-fab="1"] {
    position: fixed !important;
    bottom: max(env(safe-area-inset-bottom, 16px), 16px) !important;
    right: 16px !important;
    z-index: 9000 !important;
    width: 56px !important;
    min-width: 56px !important;
    height: 56px !important;
    padding: 0 !important;
    border-radius: 50% !important;
    background: linear-gradient(135deg, #be185d 0%, #ec4899 100%) !important;
    color: #fff !important;
    -webkit-text-fill-color: #fff !important;
    box-shadow: 0 8px 24px rgba(190, 24, 93, 0.42),
                0 2px 6px rgba(190, 24, 93, 0.28) !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 24px !important;
    font-weight: 700 !important;
    border: none !important;
    text-decoration: none !important;
    transition: transform var(--crml-dur-base) var(--crml-ease-spring),
                box-shadow var(--crml-dur-base) var(--crml-ease-out) !important;
  }
  html body[class] .crml-portal-wrap a.crml-fab:hover,
  html body[class] [data-fab="1"]:hover {
    transform: translateY(-2px) scale(1.06) !important;
    box-shadow: 0 12px 32px rgba(190, 24, 93, 0.55) !important;
  }
}

/* (52.5) PULL-DOWN INDICATOR visivo (CSS-only, no logic) — feedback
   visivo quando user fa overscroll top per indicare "sto per refreshare". */
html body[class] .crml-portal-wrap::before {
  content: '';
  position: fixed;
  top: 0;
  left: 50%;
  transform: translateX(-50%) scaleY(0);
  width: 48px;
  height: 4px;
  border-radius: 999px;
  background: linear-gradient(90deg, #be185d, #ec4899);
  transform-origin: top;
  transition: transform 200ms var(--crml-ease-out);
  pointer-events: none;
  z-index: 9999;
}

/* (52.6) CONTRASTI AAA BOOST — porta tutti i testi sopra 7:1 ratio
   per WCAG AAA compliance. Solo tones gia leggibili che vogliamo enhance. */
html body[class] .crml-portal-wrap p,
html body[class] .crml-portal-wrap li,
html body[class] .crml-portal-wrap td,
html body[class] .crml-portal-body p,
html body[class] .crml-portal-body li,
html body[class] .crml-portal-body td {
  color: #0f172a !important;
}
/* Hint/muted ancora leggibili AA stretto */
/* Heading sempre AAA */
/* Eccezioni: hero gradient brand mantengono color #fff */
html body[class] .crml-portal-wrap .crml-p2-hero h1,
html body[class] .crml-portal-wrap .crml-p2-hero p,
html body[class] .crml-portal-wrap [class*="-hero-"][class*="-title"],
html body[class] .crml-portal-wrap [class*="-hero-"][class*="-sub"] {
  ;
}

/* (52.7) TIPOGRAFIA PREMIUM — letter-spacing + line-height ottimizzati IT
   per leggibilita massima Apple/Google grade. */
html body[class] .crml-portal-wrap p,
html body[class] .crml-portal-wrap li,
html body[class] .crml-portal-body p,
html body[class] .crml-portal-body li {
  line-height: 1.55 !important;
}
/* Numeri tabular per consistenza colonne KPI/contabili */

/* (52.8) GALAXY FOLD 280px compatibility (cover screen pieghevoli) */
@media (max-width: 290px) {
  html body[class] .crml-portal,
  html body[class] .crml-portal-wrap {
    padding-left: 2px !important;
    padding-right: 2px !important;
  }
  
  
  html body[class] .crml-p2-kpi-grid,
  html body[class] .crml-home-quick-grid {
    grid-template-columns: 1fr !important;
    gap: 4px !important;
  }
  html body[class] .crml-home-quick-link {
    padding: 8px 4px !important;
    font-size: 10.5px !important;
  }
  
}

/* (52.9) WILL-CHANGE + CONTAIN performance optimization
   Browser hint per accelerazione hardware. Selettori mirati su elementi
   che effettivamente animano (no broad will-change che spreca memoria). */

/* (52.10) STAGGER REVEAL ANIMATIONS — entry animation per liste/grid
   prima volta che appaiono (delay incrementale per stagger). */
@keyframes crml-fade-up {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Disabilita stagger se prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
  html body[class] .crml-portal-wrap .crml-home-quick-grid > *,
  html body[class] .crml-portal-wrap .crml-p2-kpi-grid > * {
    animation: none !important;
  }
}

/* (52.11) SMOOTH SCROLL behavior + scroll-padding per anchor link */
html {
  scroll-behavior: smooth;
}

/* (52.12) NAV-GRID ENHANCEMENT premium — icone con micro animazione
   bounce on tap, label con kerning ottimizzato. */
@media (hover: hover) and (pointer: fine) {
  html body[class] .crml-portal-wrap .crml-home-quick-link:hover {
    transform: translateY(-3px) scale(1.04) !important;
    box-shadow: 0 8px 20px rgba(190, 24, 93, 0.18) !important;
    z-index: 1;
  }
}
html body[class] .crml-portal-wrap .crml-home-quick-link:active {
  transform: scale(0.96) !important;
  transition: transform 80ms var(--crml-ease-out) !important;
}
/* Icona dentro nav grid: micro bounce */
@keyframes crml-icon-bounce {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.15) rotate(-3deg); }
}
html body[class] .crml-portal-wrap .crml-home-quick-link:active img,
html body[class] .crml-portal-wrap .crml-home-quick-link:active svg {
  animation: crml-icon-bounce 300ms var(--crml-ease-spring);
}

/* (52.13) BUTTONS CTA premium gradient shift on hover (Material You) */
@media (hover: hover) and (pointer: fine) {
  html body[class] .crml-portal-wrap .crml-btn-primary:hover,
  html body[class] .crml-portal-wrap a.button-primary:hover,
  html body[class] .crml-portal-wrap .crml-pack-importo:hover {
    background-position: 100% 50% !important;
  }
}

/* (52.14) FORM INPUTS premium focus glow morbido */
html body[class] .crml-portal-wrap input:focus,
html body[class] .crml-portal-wrap select:focus,
html body[class] .crml-portal-wrap textarea:focus,
html body[class] .crml-portal-body input:focus,
html body[class] .crml-portal-body select:focus,
html body[class] .crml-portal-body textarea:focus {
  outline: none !important;
  border-color: #be185d !important;
  box-shadow: 0 0 0 4px rgba(190, 24, 93, 0.14),
              0 2px 8px rgba(190, 24, 93, 0.08) !important;
  transition: border-color 150ms var(--crml-ease-out),
              box-shadow 200ms var(--crml-ease-out) !important;
}

/* (52.15) GRADIENT TEXT su titoli hero per impact visivo Apple-grade */

/* (52.16) SCROLL-SNAP per liste orizzontali (chip filtri, KPI) */
html body[class] .crml-portal-wrap .crml-rfp-bar,
html body[class] .crml-portal-wrap [class*="-quick-filters"] {
  scroll-snap-type: x mandatory !important;
  scroll-padding: 0 16px !important;
}
html body[class] .crml-portal-wrap .crml-rfp-bar > *,
html body[class] .crml-portal-wrap [class*="-quick-filters"] > * {
  scroll-snap-align: start !important;
}

/* (52.17) ARIA-LABEL FALLBACK visuale — se elemento ha aria-label,
   usalo come tooltip nativo via attr() per a11y enhancement. */
html body[class] .crml-portal-wrap [aria-label]:not([title]):hover::after {
  content: attr(aria-label);
  position: absolute;
  background: #0f172a;
  color: #fff;
  padding: 6px 10px;
  border-radius: 6px;
  font-size: 12px;
  white-space: nowrap;
  z-index: 9999;
  pointer-events: none;
  margin-top: 28px;
  opacity: 0;
  animation: crml-tooltip-in 200ms var(--crml-ease-out) 400ms forwards;
}
@keyframes crml-tooltip-in {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 0.92; transform: translateY(0); }
}

/* (52.18) BORDER-RADIUS CONSISTENCY — uniformare radius su mobile per
   look Material 3 / iOS 16+. */
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap [class*="crml-card"],
  html body[class] .crml-portal-wrap [class*="crml-p2-card"],
  html body[class] .crml-portal-wrap .crml-portal-nav,
  html body[class] .crml-portal-wrap .crml-pack-card,
  html body[class] .crml-portal-body [class*="crml-card"] {
    border-radius: 16px !important;
  }
}

/* (52.19) BACKDROP-FILTER per overlay/modal (vetro smerigliato Apple) */
html body[class] .crml-portal-wrap .crml-modal-overlay,
html body[class] .crml-portal-wrap [role="dialog"]::backdrop,
html body[class] .crml-portal-body .crml-modal-overlay {
  background: rgba(15, 23, 42, 0.5);
  backdrop-filter: blur(8px) saturate(140%);
  -webkit-backdrop-filter: blur(8px) saturate(140%) !important;
}

/* (52.20) TEXT-RENDERING + SUBPIXEL ottimizzazione max */
html body[class] .crml-portal-wrap,
html body[class] .crml-portal-body {
  -moz-osx-font-smoothing: grayscale !important;
}

/* ============================================================================
   CHUNK 53 — PORTALE TUTORE: dropdown "Visualizza" chiaro forzato
   v3.8.99 (09/05/2026)
   Bug: AURA/Vivid skin override il background del <select> nativo a scuro
   nonostante l'inline style del PHP setti background:#fff. Pattern bug
   ricorrente (CLAUDE.md: tema Vivid colora input nativi di scuro).
   Specificity html body[class] .X (0,2,2) batte AURA body.crml-portal-aura-* .X (0,1,1).
   ============================================================================ */

html body[class] .crml-tutor-switcher select:focus,
html body[class] select#crml-tutor-select:focus {
  outline: 2px solid rgba(255, 255, 255, 0.7) !important;
  outline-offset: 2px !important;
  border-color: #be185d !important;
}

/* Label "Visualizza:" leggibile su tutti i temi */

/* Tablet ≤768px: layout adaptive ma orizzontale ancora */
@media (max-width: 768px) {
  html body[class] .crml-tutor-switcher {
  padding: 14px 16px !important;
}
  html body[class] .crml-tutor-switcher select {
    min-width: 220px !important;
  }
}

/* Smartphone ≤540px: stack verticale + select full-width + anti-zoom iOS */
@media (max-width: 540px) {
  html body[class] .crml-tutor-switcher {
    padding: 12px 14px !important;
  }
  html body[class] .crml-tutor-switcher > div {
  align-items: stretch !important;
  gap: 10px !important;
}
  html body[class] .crml-tutor-switcher > div > div:last-child {
  flex-wrap: wrap !important;
}
  html body[class] .crml-tutor-switcher select,
  html body[class] select#crml-tutor-select {
  min-width: 0 !important;
}
}

/* iPhone SE ≤380px: ultra-compatto */
@media (max-width: 380px) {
  html body[class] .crml-tutor-switcher {
    padding: 10px 12px !important;
  }
  html body[class] .crml-tutor-switcher > div {
    gap: 8px !important;
  }
  html body[class] .crml-tutor-switcher > div > div:first-child > div:first-child {
    font-size: 10px !important;
    letter-spacing: 0.6px !important;
  }
  html body[class] .crml-tutor-switcher > div > div:first-child > div:last-child {
    font-size: 16px !important;
  }
}

/* ═══════════════════════════════════════════════════════════════════════════
   CHUNK 54 — v3.14.35 fix P1 CRITICO (M-01/M-02/M-03/M-04/M-05/M-06)
   Audit mobile portale allievo 14/05/2026 — fix overflow, viewport, safe-area,
   overscroll-behavior, modal regolamento landscape, tap target 44px universale.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── M-01: rimosso overflow-x:hidden bloccante dal .crml-portal root.
   Era applicato per evitare scroll orizzontale ma clippava popover/drawer/floating
   actions. Approccio corretto: clip su body o html, non sul container portale,
   con whitelist per elementi che DEVONO sporgere (modali, popover, FAB).        */
@media (max-width: 1024px) {
  html body[class].crml-portal-aura-light,
  html body[class].crml-portal-v2 {
  max-width: 100vw !important;
}
  /* Whitelist elementi che possono sporgere (modali full-screen, popover) */
  html body[class] [data-crml-modal-allow-overflow="1"],
  html body[class] .crml-gform-confirm-backdrop,
  html body[class] #crml-p2-overdue-popup,
  html body[class] .crml-reg-overlay {
  ;
}
}

/* ── M-02: 100vh → 100dvh con fallback per chat e modal.
   Su iOS Safari, 100vh include la URL bar che si nasconde → input chat finisce
   sotto la barra. 100dvh (dynamic viewport) si adatta automaticamente.          */
@media (max-width: 1024px) {
  html body[class] .crml-chat-container,
  html body[class] .crml-chat-conv-pane {
    /* Fallback per browser legacy: 100vh */
    min-height: 100vh;
    /* Dynamic viewport per Safari iOS 15.4+ / Chrome 108+ / Firefox 101+ */
    min-height: 100dvh;
  }
  html body[class] .crml-reg-modal,
  html body[class] .crml-gform-confirm-backdrop {
    max-height: 100vh;
    max-height: 100dvh;
  }
}

/* ── M-03: tap target min 44px iOS HIG / 48dp Android Material universale.
   Audit ha rilevato 8+ elementi <44px che falliscono su touch device:
   logout 34px, .crml-btn-sm 30px, .crml-radio-item 30px, slot picker 38px,
   .crml-gform-btn 38px, .cc-check 40x36, canvas firma touch zone, ecc.          */
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap .crml-btn,
  html body[class] .crml-portal-wrap .crml-btn-sm,
  html body[class] .crml-portal-wrap .crml-btn-primary,
  html body[class] .crml-portal-wrap .crml-btn-secondary,
  html body[class] .crml-portal-wrap .crml-btn-danger,
  html body[class] .crml-portal-wrap .crml-btn-success,
  html body[class] .crml-portal-wrap .crml-btn-warning,
  html body[class] .crml-portal-wrap .crml-btn-ghost,
  html body[class] .crml-portal-wrap button:not(.crml-tutor-switcher-close):not([data-overdue-close]),
  html body[class] .crml-portal-wrap a.crml-btn,
  html body[class] .crml-portal-wrap a.button,
  html body[class] .crml-portal-wrap input[type="submit"],
  html body[class] .crml-portal-wrap input[type="button"],
  html body[class] .crml-portal-wrap .crml-radio-item,
  html body[class] .crml-portal-wrap .crml-fpill,
  html body[class] .crml-portal-wrap .cc-check,
  html body[class] .crml-portal-wrap .crml-gform-btn,
  html body[class] .crml-portal-wrap .crml-gform-confirm-btn {
    min-height: 44px !important;
  }
  /* Logout pillola sotto 44px ridotta */
  /* Slot picker lezione prova: pillole min 44px */
  html body[class] .crml-portal-wrap .crml-wiz-slot,
  html body[class] .crml-portal-wrap input[name="slot_choice"] + label,
  html body[class] .crml-portal-wrap label[for*="slot"] {
    min-height: 44px !important;
  }
  /* Anti-zoom iOS Safari: tutti gli input numerici/text >=16px */
}

/* ── M-04: toast notifications safe-area iPhone home indicator.
   .crml-toast con bottom: calc(--crml-bottom-h + 10px) ignora env() →
   toast nascosti dietro home indicator iPhone 14/15 in modalita gesture nav.    */
html body[class] .crml-toast {
  bottom: calc(var(--crml-bottom-h, 0px) + 10px + env(safe-area-inset-bottom, 0px)) !important;
}

/* ── M-05: overscroll-behavior:contain su modali per evitare pull-to-refresh.
   Bug: utente fa overscroll dentro popup pagamenti → triggera reload pagina →
   perde form parzialmente compilato.                                            */
html body[class] .crml-modal-content,
html body[class] .crml-reg-overlay,
html body[class] #crml-p2-overdue-popup,
html body[class] .crml-gform-confirm-backdrop,
html body[class] .crml-gform-confirm-modal {
  -webkit-overscroll-behavior: contain;
}

/* ── M-06: modal regolamento footer sticky su iPhone landscape.
   iPhone landscape ha height:375px → modal max-height:90vh = 337px → footer
   "Accetto" finisce tagliato fuori viewport. Fix: footer sticky bottom + body
   scroll interno.                                                                */

/* ════════════════════════════════════════════════════════════════════════
   CHUNK 55 — v3.14.37 (F-A2): required indicator visivo universale.

   Aggiunge asterisco rosso "*" come ::after sui label di campi required
   nel portale iscrizione (.crml-iscr-wrap) e rinforza l'asterisco esistente
   nei form moduli (.crml-gform).

   - Iscrizione portale: i label NON hanno markup `<span class="crml-iscr-required">`
     ma usano `<label>Cognome</label>` con `<input required>` adiacente.
     Selettore CSS3 :has() per matchare label che hanno input[required].
     Fallback per browser <Safari 15.4: regola omessa (graceful — l'utente
     vede comunque required browser-native + aria-required dal v3.14.37 F-A1).

   - Form moduli: rinforza .crml-gform-required esistente con font-weight
     bold + dimensione 16px + tooltip nativo via attribute selector.

   - Brand red #dc2626 + cursor:help per indicare info.
   ════════════════════════════════════════════════════════════════════════ */

/* Portale iscrizione: asterisco automatico su label con input[required] adiacente.
   :has() supportato Chrome 105+, Safari 15.4+, Firefox 121+. Fallback graceful. */
@supports selector(:has(*)) {
  html body[class] .crml-iscr-wrap label:has(+ input[required])::after,
  html body[class] .crml-iscr-wrap label:has(+ select[required])::after,
  html body[class] .crml-iscr-wrap label:has(+ textarea[required])::after,
  html body[class] .crml-iscr-wrap .crml-iscr-fld:has(input[required]) > label::after,
  html body[class] .crml-iscr-wrap .crml-iscr-fld:has(select[required]) > label::after,
  html body[class] .crml-iscr-wrap .crml-iscr-fld:has(textarea[required]) > label::after {
    content: " *" !important;
    color: #dc2626 !important;
    font-weight: 700 !important;
    margin-left: 2px !important;
    font-size: 1.05em !important;
    cursor: help !important;
    -webkit-text-fill-color: #dc2626 !important;
  }
}

/* Form moduli: rinforzo asterisco esistente (.crml-gform-required) */
html body[class] .crml-gform .crml-gform-required {
  color: #dc2626 !important;
  font-weight: 700 !important;
  font-size: 1.05em !important;
  margin-left: 4px !important;
  cursor: help !important;
  -webkit-text-fill-color: #dc2626 !important;
}
/* Tooltip nativo via attribute selector (PHP forms emette title="campo obbligatorio") */
html body[class] .crml-gform .crml-gform-required[title]:hover {
  text-decoration: underline dotted #dc2626 2px;
}

/* aria-invalid="true" — visual feedback rosso scuro su input errato.
   Si applica ai campi che falliscono validation (set da JS in v3.14.37 F-A1). */
html body[class] .crml-iscr-wrap input[aria-invalid="true"],
html body[class] .crml-iscr-wrap select[aria-invalid="true"],
html body[class] .crml-iscr-wrap textarea[aria-invalid="true"],
html body[class] .crml-gform input[aria-invalid="true"],
html body[class] .crml-gform select[aria-invalid="true"],
html body[class] .crml-gform textarea[aria-invalid="true"] {
  border-color: #dc2626 !important;
  box-shadow: 0 0 0 2px rgba(220, 38, 38, 0.15) !important;
}

/* v3.14.37 (F-A5): banner "Bozza recuperata" iscrizione portale.
   Mostrato al boot del form se localStorage ha dati. Permette UX trasparente. */
html body[class] .crml-iscr-wrap .crml-iscr-draft-banner {
  background: linear-gradient(135deg, #fef3c7, #fde68a) !important;
  border: 1px solid #f59e0b !important;
  border-left: 4px solid #d97706 !important;
  color: #78350f !important;
  -webkit-text-fill-color: #78350f !important;
  padding: 10px 14px !important;
  border-radius: 10px !important;
  margin: 12px 0 !important;
  font-size: 13.5px !important;
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  line-height: 1.5 !important;
}
html body[class] .crml-iscr-wrap .crml-iscr-draft-banner .crml-iscr-draft-discard {
  margin-left: auto !important;
  background: rgba(120, 53, 15, 0.12) !important;
  color: #78350f !important;
  -webkit-text-fill-color: #78350f !important;
  border: 1px solid rgba(120, 53, 15, 0.25) !important;
  padding: 5px 12px !important;
  border-radius: 6px !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  cursor: pointer !important;
  transition: background-color 0.15s !important;
}
html body[class] .crml-iscr-wrap .crml-iscr-draft-banner .crml-iscr-draft-discard:hover,
html body[class] .crml-iscr-wrap .crml-iscr-draft-banner .crml-iscr-draft-discard:focus-visible {
  background: rgba(120, 53, 15, 0.22) !important;
  outline: 2px solid rgba(120, 53, 15, 0.45) !important;
  outline-offset: 2px !important;
}
@media (max-width: 540px) {
  html body[class] .crml-iscr-wrap .crml-iscr-draft-banner {
    flex-wrap: wrap !important;
    padding: 9px 12px !important;
    font-size: 13px !important;
  }
  html body[class] .crml-iscr-wrap .crml-iscr-draft-banner .crml-iscr-draft-discard {
    margin-left: 0 !important;
    width: 100% !important;
    min-height: 36px !important;
  }
}

/* ════════════════════════════════════════════════════════════════
   BLOCCO C v3.14.61 — chunk 54: STAFF quick-grid responsive ottimizzata.
   Problema: 11 voci nav-grid staff su mobile <540px = 4 righe da 3 col
   = scroll lungo + tap target piccoli. Soluzione: 2-col compatte
   con icon+label inline (no stacked column) per max densita visiva.
   ════════════════════════════════════════════════════════════════ */
@media (max-width:540px) {
  html body[class] .crml-portal-wrap .crml-home-quick-link {
  ;
}
  
}
@media (max-width:380px) {
  /* iPhone SE: 2-col più compatti ancora */
  html body[class] .crml-portal-wrap .crml-home-quick-grid {
    gap: 6px !important;
  }
  html body[class] .crml-portal-wrap .crml-home-quick-link {
    padding: 9px 10px !important;
    min-height: 46px !important;
  }
  html body[class] .crml-portal-wrap .crml-home-quick-label {
    font-size: 11.5px !important;
  }
}

/* ════════════════════════════════════════════════════════════════
   BLOCCO C v3.14.61 — chunk 55: dirty-flag badge UX globale.
   Helper window.CRMLPortalUX.bindDirtyFlag (portal.js v3.14.61) inietta
   .crml-dirty-badge come child del form. Override stile per AURA skin
   (chunk 54 e successivi). Bonus: pulse animation per attirare attenzione.
   ════════════════════════════════════════════════════════════════ */
html body[class] .crml-portal-wrap .crml-dirty-badge {
  background: linear-gradient(135deg, #f59e0b, #d97706) !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  font-weight: 700 !important;
  letter-spacing: .3px !important;
  text-shadow: 0 1px 2px rgba(0,0,0,.18);
  animation: crml-dirty-pulse 2.4s ease-in-out infinite;
}
@keyframes crml-dirty-pulse {
  0%, 100% { box-shadow: 0 2px 6px rgba(245,158,11,.32); }
  50%      { box-shadow: 0 2px 14px rgba(245,158,11,.52); }
}
@media (prefers-reduced-motion: reduce) {
  html body[class] .crml-portal-wrap .crml-dirty-badge {
    animation: none !important;
  }
}

/* ════════════════════════════════════════════════════════════════
   BLOCCO C-minor v3.14.62 — chunk 56: KPI personali + filtri Oggi/Settimana/Mese
   per calendario maestro mensile. CSS-only filter via data-cal-filter attribute
   sul wrap. JS handler (portal.js v3.14.62) gestisce toggle stato chip +
   persistenza localStorage "crml_maestro_cal_filter".
   ════════════════════════════════════════════════════════════════ */

/* KPI semantici condizionali (warn = pending didattica > 0) */

/* Responsive smartphone */

/* ════════════════════════════════════════════════════════════════
   BLOCCO C-minor v3.14.62 — chunk 57: Staff dashboard KPI operativi 24h/7gg
   strip distintiva sotto KPI principale. Pattern brand-soft con stato semantico.
   ════════════════════════════════════════════════════════════════ */

/* Warn state quando trial_pending > 0 */

/* Responsive smartphone */

/* ============================================================
   BLOCCO C-minor v3.14.63 — chunk 58
   ------------------------------------------------------------
   1. Sticky toolbar Anagrafica staff (tab + search) — UX scroll lista lunga.
   2. Filtro live debounced (dim opacity 0 nascosti via display:none — gestito
      da CRMLPortalUX.bindDebouncedSearch in portal.js v3.14.61).
   3. Empty state anti-vuoto per filtro client-side.
   ============================================================ */

/* Highlight per il filtro live (NON server-side) */

/* ============================================================
   BLOCCO C-minor v3.14.63 — chunk 59
   ------------------------------------------------------------
   TUTORE: bottone "Riprova pagamento" su movimento pendente.
   Stile pillola brand magenta + hover lift + responsive smartphone.
   Compatibile col badge ambra "Da saldare" esistente in chunk movimenti tutore.
   ============================================================ */
html body[class] .crml-portal-wrap .crml-mov-retry-pay {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 6px !important;
  padding: 6px 14px !important;
  border-radius: 999px !important;
  background: linear-gradient(135deg, #be185d 0%, #ec4899 100%) !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  border: 1.5px solid #be185d !important;
  font-size: 12.5px !important;
  font-weight: 700 !important;
  letter-spacing: .2px !important;
  text-decoration: none !important;
  cursor: pointer !important;
  box-shadow: 0 2px 8px rgba(190,24,93,.20) !important;
  transition: transform .15s ease, box-shadow .15s ease, filter .15s ease !important;
  min-height: 32px !important;
  margin-top: 6px !important;
}
html body[class] .crml-portal-wrap .crml-mov-retry-pay:hover,
html body[class] .crml-portal-wrap .crml-mov-retry-pay:focus {
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 14px rgba(190,24,93,.28) !important;
  filter: saturate(1.08) !important;
}
html body[class] .crml-portal-wrap .crml-mov-retry-pay:active {
  transform: translateY(0) !important;
}
html body[class] .crml-portal-wrap .crml-mov-retry-pay--ghost {
  background: #ffffff !important;
  color: #9d174d !important;
  -webkit-text-fill-color: #9d174d !important;
  border-color: #f9a8d4 !important;
  box-shadow: 0 1px 3px rgba(190,24,93,.10) !important;
}
html body[class] .crml-portal-wrap .crml-mov-retry-pay--ghost:hover,
html body[class] .crml-portal-wrap .crml-mov-retry-pay--ghost:focus {
  background: #fce7f3 !important;
  color: #831843 !important;
  -webkit-text-fill-color: #831843 !important;
  border-color: #be185d !important;
}
html body[class] .crml-portal-wrap .crml-mov-retry-pay[disabled],
html body[class] .crml-portal-wrap .crml-mov-retry-pay.is-disabled {
  opacity: .55 !important;
  cursor: not-allowed !important;
  filter: grayscale(.3) !important;
  transform: none !important;
}
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap .crml-mov-retry-pay {
    width: 100% !important;
    padding: 9px 14px !important;
    font-size: 13px !important;
    min-height: 40px !important;
  }
}

/* =========================================================================
   chunk 60 (v3.14.64) — STAFF C-minor-04+05: sticky toolbar Pagamenti + Lezioni Prova
   Pattern v3.14.63 anagrafica replicato per coerenza visiva.
   ========================================================================= */

/* Item transition opacity per filtro smooth */

/* Empty state hover-friendly */

/* =========================================================================
   chunk 61 (v3.14.64) — MAESTRO C-minor-02: sparkline 7gg lezioni svolte
   Bar chart CSS-only mostrato in home v2 maestro tra KPI strip e Agenda.
   ========================================================================= */
html body[class] .crml-portal-wrap .crml-p2-sparkline-head {
  ;
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-bars {
  ;
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-bar:hover {
  transform: translateY(-2px) !important;
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-fill {
  ;
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-bar.is-empty .crml-p2-sparkline-fill {
  ;
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-bar.is-today .crml-p2-sparkline-fill {
  ;
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-bar.is-future {
  ;
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-bar.is-future .crml-p2-sparkline-fill {
  ;
}
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap .crml-p2-sparkline-bars {
  ;
}
  html body[class] .crml-portal-wrap .crml-p2-sparkline-fill {
  ;
}
  html body[class] .crml-portal-wrap .crml-p2-sparkline-title {
  ;
}
  html body[class] .crml-portal-wrap .crml-p2-sparkline-summary {
  ;
}
  html body[class] .crml-portal-wrap .crml-p2-sparkline-label {
  ;
}
}
@media (prefers-reduced-motion: reduce) {
  html body[class] .crml-portal-wrap .crml-p2-sparkline-fill,
  html body[class] .crml-portal-wrap .crml-p2-sparkline-bar {
    transition: none !important;
  }
}

/* =========================================================================
   chunk 62 (v3.14.65) — STAFF C-minor-06: sticky toolbar + filtro live recuperi staff
   Pattern v3.14.63/64 replicato: 5 chip stato server (URL nav) + search live client-side.
   ========================================================================= */

/* Item transition per filtro smooth */

/* Empty state */

/* =========================================================================
   chunk 63 (v3.14.65) — ALLIEVO C-minor-01: sparkline 7gg presenze settimana
   Pattern v3.14.64 maestro replicato per home allievo. Stessa palette brand,
   ma "presenze" semantica (PRESENTE/RECUPERO/SUPPLENZA su allievo_person_id).
   ========================================================================= */
/* Oggi: bordo ambra + bg giallo soft */
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-bar.is-today .crml-p2-sparkline-fill {
  ;
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-bar.is-today .crml-p2-sparkline-count {
  ;
}
/* Futuri: opacity ridotta + fill rosa pallido senza ombra */
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-bar.is-future .crml-p2-sparkline-fill {
  ;
}
/* Vuoti: fill grigio chiaro + count grigio */
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-fill {
    max-width: 28px !important;
  }
}
@media (prefers-reduced-motion: reduce) {
  html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-fill,
  html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-bar {
    transition: none !important;
  }
}

/* =========================================================================
   chunk 64 (v3.14.65) — MAESTRO C-minor-03: form recuperi proponi slot mobile UX
   Tap target 44px iOS HIG, font 16px anti-zoom iOS Safari, stack vertical
   slot1/slot2 su <540px, bottoni slot suggeriti più grandi per touch,
   bottone submit full-width mobile.
   ========================================================================= */
@media (max-width: 540px) {
  /* Form row date+time: stack verticale invece di flex-row */
  html body[class] .crml-portal-wrap form[id^="crml-rec-form-"] .crml-form-row {
    flex-direction: column !important;
    gap: 8px !important;
  }
  /* Input date/time: full-width + font 16px (anti-zoom iOS) + tap target 44px (iOS HIG) */
  html body[class] .crml-portal-wrap form[id^="crml-rec-form-"] input[type="date"],
  html body[class] .crml-portal-wrap form[id^="crml-rec-form-"] input[type="time"] {
    width: 100% !important;
    font-size: 16px !important;
    min-height: 44px !important;
    padding: 10px 12px !important;
    box-sizing: border-box !important;
  }
  /* Slot suggeriti chips: padding aumentato per touch */
  html body[class] .crml-portal-wrap form[id^="crml-rec-form-"] .crml-slot-suggest {
    padding: 7px 14px !important;
    font-size: 13px !important;
    min-height: 36px !important;
  }
  /* Bottone submit "Invia proposte all'allievo": full-width + tap target */
  html body[class] .crml-portal-wrap form[id^="crml-rec-form-"] > div[style*="text-align:right"]/*771s<*/,
html body[class] .crml-portal-wrap form[id^="crml-rec-form-"] > div.crml-s-d0bad3f:where(:not([style]),[style="display:none"]),
html body[class] .crml-portal-wrap form[id^="crml-rec-form-"] > div.crml-s-dd3f457:where(:not([style]))/*>771s*/ {
    text-align: stretch !important;
  }
  html body[class] .crml-portal-wrap form[id^="crml-rec-form-"] button[type="submit"] {
    width: 100% !important;
    min-height: 44px !important;
    font-size: 15px !important;
    padding: 12px 16px !important;
  }
  /* Checkbox "Avvisa via email" + label allineamento mobile */
  html body[class] .crml-portal-wrap form[id^="crml-rec-form-"] input[type="checkbox"] {
    min-width: 20px !important;
    min-height: 20px !important;
  }
}

/* ============================================================================
 * CHUNK 65 — STAFF C-minor-07 v3.14.66
 * Sparkline 7gg email inviate staff home (.crml-p2-staff-sparkline)
 * Pattern replicato da chunk 61 maestro / chunk 63 allievo, scope dedicato
 * per coesistenza dei 3 sparkline ruolo. Palette identica brand magenta.
 * ============================================================================ */

/* Stato OGGI: bordo ambra + bg giallo soft + gradient ambra fill */

/* Stato FUTURO: opacity ridotta + fill rosa pallido (anticipazione) */

/* Stato EMPTY (0 email quel giorno): bar grigio chiaro + count grigio (no "0 invisibile") */

/* Mobile responsive smartphone <= 540px */

/* Rispetta prefers-reduced-motion: niente transition sull'altezza bar */

/* ============================================================================
 * CHUNK 66 — STAFF C-minor-08 v3.14.66
 * Sticky toolbar + search debounce + chip tab assenze staff
 * Pattern replicato da chunk 62 recuperi staff v3.14.65.
 * ============================================================================ */

/* Items con transition opacity per filtro smooth */

/* Empty state card brand soft */

/* Mobile responsive smartphone <= 540px */

/* ============================================================================
 * CHUNK 67 — STAFF C-minor-09 v3.14.66
 * Sticky toolbar + select maestro + search debounce disponibilita staff
 * Pattern replicato da chunk 62 (recuperi) e 66 (assenze).
 * ============================================================================ */

/* Rows tabella con transition opacity per filtro smooth */

/* Empty state card brand soft */

/* Mobile responsive smartphone <= 540px */

/* ============================================================================
 * CHUNK 68 — STAFF C-extra-01 v3.14.67
 * Sticky toolbar + chip pillole brand + search debounce ticket assistenza staff
 * Pattern replicato da chunk 66 assenze staff v3.14.66.
 * ============================================================================ */

/* Empty state card brand soft */

/* Smooth transition opacity item su filtro */

/* Mobile responsive smartphone <= 540px */

/* ============================================================================
 * CHUNK 69 — STAFF C-extra-02 v3.14.67
 * Sticky toolbar + chip pillole brand 5 stati + search debounce preventivatore staff
 * Pattern replicato da chunk 66 assenze staff v3.14.66.
 * ============================================================================ */

/* Empty state card brand soft */

/* Smooth transition opacity item su filtro */

/* Mobile responsive smartphone <= 540px */

/* ============================================================================
 * CHUNK 70 — STAFF C-extra-03 v3.14.67
 * Sticky toolbar + chip pillole brand 3 stati + search debounce IBAN staff
 * Pattern replicato da chunk 66 assenze staff v3.14.66.
 * ============================================================================ */

/* Empty state card brand soft */

/* Smooth transition opacity item su filtro */

/* Mobile responsive smartphone <= 540px */

/* =====================================================================
   CHUNK 71 v3.14.68 — MAESTRO C-minor-04: confronto settimana scorsa + giorno migliore
   ---------------------------------------------------------------------
   Card brand soft sotto sparkline 7gg in render_maestro_home().
   Stat-pill duale: count sett.scorsa + delta % up/down/flat/new.
   Skip render se nuovo maestro (entrambi totali 0).
   Mobile <=540px: stack verticale + font compatti.
   ===================================================================== */

/* =====================================================================
   CHUNK 72 v3.14.68 — STAFF C-extra-04: anagrafica chip filtri multipli
   ---------------------------------------------------------------------
   Pattern brand pillole magenta replicato da chip ticket/preventivatore/IBAN v3.14.67.
   - Tab `.crml-anag-staff-tab` (Allievi/Maestri) ridisegnati come pillole brand magenta
     (sostituiscono inline-style legacy `#0f3460` blu hardcoded del codice originale).
   - Chip secondari `.crml-anag-staff-chip` per filtri ortogonali al search testuale
     (eta per allievi: Tutti/Bambini<14/Teen+Adulti / stato per maestri: Tutti/Attivi/Disattivati).
   - Hover lift + active gradient brand magenta + ombra rosa.
   - Mobile <=540px: flex:1 + tap target 40px iOS HIG.
   ===================================================================== */

/* Tab principale (Allievi/Maestri) - sostituisce inline-style #0f3460 */

/* Chip secondari (eta / stato) */

/* Mobile responsive smartphone <= 540px */

/* =====================================================================
   CHUNK 73 v3.14.69 — MAESTRO C-minor-05: confronto mensile (mese in corso vs mese precedente)
   Extension naturale del widget settimanale v3.14.68. Stesso pattern visivo ma con tono blu/indigo
   per distinguerlo dal widget settimana (rosa magenta). Layout flex space-between desktop / stack mobile.
   Delta cromatico 4 stati (is-up green / is-down red / is-flat gray / is-new "primo mese").
   ===================================================================== */

/* =====================================================================
   CHUNK 74 v3.14.70 - MAESTRO C-minor-06: confronto annuale (anno corrente vs anno precedente)
   Extension naturale del widget mensile v3.14.69. Stesso pattern visivo ma con tono VERDE
   per distinguerlo dal settimanale (rosa magenta) e dal mensile (blu indigo).
   Tono verde semantico = "vista lungo periodo, crescita storica". Layout flex desktop / stack mobile.
   Delta cromatico 4 stati (is-up green / is-down red / is-flat gray / is-new "primo anno").
   ===================================================================== */

/* =====================================================================
   CHUNK 75 v3.14.71 - MAESTRO C-minor-07: confronto trimestrale (trimestre corrente vs trimestre precedente)
   Extension pattern v3.14.68 (sett rosa) + v3.14.69 (mese blu) + v3.14.70 (anno verde).
   Tono VIOLA/INDACO distintivo per "vista intermedia" (3 mesi). 4 widget cromaticamente differenziati a colpo d'occhio.
   Delta cromatico 4 stati (is-up green / is-down red / is-flat gray / is-new "primo trimestre").
   ===================================================================== */

/* 669a (05/10/2026) - Spazio vuoto sopra il portale.
   La sezione Kubio che contiene il portale ha 100px di padding in alto:
   con l'intestazione del portale nascosta restavano quasi 200px bianchi
   tra il menu del sito e le caselle. Vale solo per la sezione che contiene
   il portale (le altre pagine del sito non cambiano). */
html body[class] .wp-block-kubio-section:has(.crml-portal-wrap) {
  padding-top: 16px !important;
}
/* 669a - altri 30px: i due margini interni della colonna che contiene il portale. */
html body[class] .wp-block-kubio-column:has(.crml-portal-wrap),
html body[class] .wp-block-kubio-column__inner:has(.crml-portal-wrap) {
  padding-top: 0 !important;
}

/* ============================================================================
   Regole del vestito easy (da over_src.css): prefisso forte e !important.
   ============================================================================ */
/* ---------- Testi di base ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-body h2 { font-size: 22px !important; font-weight: 800 !important; line-height: 1.2 !important; color: var(--ez-ink) !important; }
/* ---------- Pulsanti ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-btn { min-height: 52px !important; color: #fff !important; font-size: 16px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-btn.crml-btn-sm { min-height: 48px !important; font-size: 15px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-btn.crml-btn-secondary,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-btn.crml-btn-ghost { color: var(--ez-ink) !important; }
/* ---------- Filtri a pastiglia e schede secondarie ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-fpill { min-height: 44px !important; }
/* ---------- Etichette di stato ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-status-badge,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-badge { background: var(--ez-chip) !important; color: var(--ez-chip-ink) !important; font-size: 13px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-status-badge.ok,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-badge.ok,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-status-badge-mini.ok { background: var(--ez-ok-soft) !important; color: var(--ez-ok-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-status-badge.warn,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-badge.warn,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-status-badge-mini.warn { background: var(--ez-cassa-soft) !important; color: var(--ez-cassa-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-status-badge.danger,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-badge.danger,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-status-badge-mini.danger { background: var(--ez-bad-soft) !important; color: var(--ez-bad-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-status-badge.info,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-badge.info,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-status-badge-mini.info { background: var(--ez-sede-soft) !important; color: var(--ez-sede-deep) !important; }
/* ---------- Schede e righe ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-card,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-item,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-reg-item,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-cal-day,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-cal-legend { border-radius: 18px !important; }
/* ---------- Calendario (i colori delle lezioni restano quelli del maestro) ---------- */
/* ---------- Pagamenti: riquadro "da saldare" ---------- */
/* ---------- Campi ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-input,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-input-full { padding: 12px 14px !important; border: 2px solid #d9d2e8 !important; border-radius: 14px !important; background: #fff !important; color: var(--ez-ink) !important; font-family: var(--ez-font) !important; box-shadow: none !important; }
/* ---------- Menu: due colonne (portal.css ne forza tre, i fogli vecchi le riportavano a due) ---------- */
/* ---------- Notifiche (CRML_Portal_Notif_Prefs, .crml-pnp-*) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-hero-body h2 { font-size: 22px !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-hero-sub { color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-legend { border-radius: 14px !important; font-size: 15px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-cat-head h3 { color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-reset-cat { min-height: 44px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-freq-select { padding: 8px 12px !important; border: 2px solid #d9d2e8 !important; border-radius: 14px !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-gdpr-text { color: var(--ez-cassa-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-gdpr-btn,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-cb-btn { min-height: 48px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-cb-text { color: var(--ez-bad-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-footer-help li { color: var(--ez-muted) !important; }
/* ---------- Sale prove (CRML_Portal_App::portal_sale, .crml-sala-*) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-panel::before { background: none !important; background-image: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-btn--ghost { border: 2px solid var(--ez-sede) !important; background: #fff !important; color: var(--ez-sede-deep) !important; -webkit-text-fill-color: var(--ez-sede-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-panel--is-exhausted { border-color: #f0d9b5 !important; background: var(--ez-cassa-soft) !important; background-image: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-panel--is-exhausted .crml-sala-sett-icon { background: var(--ez-cassa) !important; background-image: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-panel--is-exhausted .crml-sala-sett-eyebrow { color: var(--ez-cassa-deep) !important; -webkit-text-fill-color: var(--ez-cassa-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-panel--is-exhausted .crml-sala-sett-bar-fill { background: var(--ez-cassa) !important; background-image: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-light label { font-weight: 700 !important; }
/* ---------- Calendario del maestro (.crml-calendar-async): comandi e cornici; i colori degli eventi restano i suoi ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-calendar-async .crml-cal-legend { border-radius: 14px !important; font-size: 14px !important; }
/* ---------- Intestazioni delle sezioni che si aggiornano da sole ---------- */
/* ---------- Moduli da compilare (assenza, disponibilita, recuperi del maestro) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-compose-desc,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-disp-hint,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-disp-empty { line-height: 1.4 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-alert { line-height: 1.4 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-alert--info { border-color: #c5e3ee !important; background: var(--ez-sede-soft) !important; color: var(--ez-sede-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-alert--danger { border-color: #f1c4c0 !important; background: var(--ez-bad-soft) !important; color: var(--ez-bad-deep) !important; }
/* ---------- Iscrizioni (elenco dei moduli) ---------- */
/* ---------- Home: testata, schede e numeri (.crml-p2-*) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-card { border-radius: 18px !important; }
/* ---------- Anagrafica: avviso in home e modulo (.crml-p2-anag*) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-cta { min-height: 52px !important; border: 0 !important; border-radius: 18px !important; background: var(--ez-allievi) !important; background-image: none !important; color: #fff !important; -webkit-text-fill-color: #fff !important; font-weight: 800 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-later,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anagform-back { font-size: 15px !important; font-weight: 800 !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anagform-field input,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anagform-field select { padding: 12px 14px !important; border: 2px solid #d9d2e8 !important; border-radius: 14px !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anagform-field.is-missing input,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anagform-field.is-missing select { border-color: var(--ez-cassa) !important; background-color: var(--ez-cassa-soft) !important; }
/* ---------- Comunicazioni (CRML_Portal_Chat, .crml-chat-*) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-wa-btn { color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-chat-new-btn { width: 44px !important; height: 44px !important; background: var(--ez-bacheca) !important; background-image: none !important; color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-filter-btn { min-height: 44px !important; padding: 10px 16px !important; border: 0 solid transparent !important; border-radius: 999px !important; background: var(--ez-chip) !important; background-image: none !important; color: var(--ez-chip-ink) !important; font-size: 15px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-filter-btn.is-active { background: var(--ez-ink) !important; color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-contact { min-height: 64px !important; border-radius: 14px !important; font-size: 16px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-unread-badge { background: var(--ez-bacheca) !important; color: #fff !important; font-weight: 800 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-msg-bubble { font-size: 16px !important; line-height: 1.4 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-input { padding: 12px 14px !important; border: 2px solid #d9d2e8 !important; border-radius: 14px !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-send-btn { min-height: 52px !important; border-radius: 14px !important; }
/* ---------- Scheda della lezione (allievo e maestro, .crml-lezione-*) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-status-badge.crml-status-badge-lg { font-size: 14px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-meta-val { font-size: 17px !important; font-weight: 800 !important; }
/* ---------- Valutazione della lezione (.crml-val-*): misure e cornici, i colori di scelta restano i suoi ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-star { min-height: 48px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-textarea { padding: 12px 14px !important; border: 2px solid #d9d2e8 !important; border-radius: 14px !important; background: #fff !important; color: var(--ez-ink) !important; font-family: var(--ez-font) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-rating10__pill { min-height: 44px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-tag { min-height: 44px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-btn { min-height: 52px !important; }
/* ---------- Pagamenti: ricevute, movimenti, contabile (.crml-receipt-*, .crml-mov-*, .crml-evidence-*) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-receipt-item,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-item { padding: 14px !important; border: 1px solid var(--ez-line) !important; border-radius: 18px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-item.crml-mov-item--pending { border-color: #f0d9b5 !important; background: var(--ez-cassa-soft) !important; }
/* 752a: riga da saldare con i dati del bonifico: importo in testa, il resto a tutta larghezza (in colonna stringeva IBAN e causale) */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-receipt-name,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-desc { font-weight: 800 !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-evidence-btn { min-height: 48px !important; color: #fff !important; }
/* ---------- Pacchetto (.crml-pack-*): il colore della barra resta quello dello stato.
   La pagina stampa un proprio foglio con #crml-pack-cards-wrap: serve lo stesso id per superarlo ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-card { border-radius: 22px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-big { background: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-card-hdr .crml-status-badge { font-size: 13px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pkg-lez-tbl td,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pkg-lez-tbl th { font-size: 15px !important; }
/* ---------- Elenchi semplici (materiale, certificazioni, percorso) ---------- */
/* ---------- Percorso (.crml-percorso-*) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-btn-visione { min-height: 48px !important; color: #fff !important; }
/* ---------- Schede con intestazione (.crml-card-h / .crml-card-b): telecomando, chiusura ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-card-h { background: none !important; background-image: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-card-h strong { font-size: 18px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-card-h div div { font-size: 14px !important; color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-card-b { font-size: 16px !important; line-height: 1.45 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-card-b p,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-card-b li { font-size: 16px !important; line-height: 1.45 !important; }
/* ---------- Chiusura scuola (CRML_Portal_Chiusura, .cc-*): il verde di "fatto" resta ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cc-dot.cc-dot-done { border-color: var(--ez-ok) !important; background: var(--ez-ok) !important; color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cc-line.cc-line-done { background: var(--ez-ok) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cc-check { min-height: 56px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cc-check small { font-size: 14px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cc-box.cc-checked { border-color: var(--ez-ok) !important; background: var(--ez-ok) !important; }
/* ---------- Rinnovo dell'iscrizione (CRML_Portal_Rinnovo, .crml-rin): palette a variabili ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-rin-p,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-rin-muted,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-rin-note { line-height: 1.45 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-rin-btn { min-height: 52px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-rin-ta { padding: 12px 14px !important; border: 2px solid #d9d2e8 !important; border-radius: 14px !important; }
/* ---------- Preferenze di orario (.crml-pro-*) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pro-hero-body h2,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pro-hero-body p { color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pro-cta { min-height: 52px !important; color: #fff !important; }
/* ---------- Pulsanti del vestito scritti come link: il tema forza colore e sottolineatura dei link ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-btn { color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-input { padding: 12px 14px !important; border: 2px solid #d9d2e8 !important; border-radius: 14px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez [class*="-async-body"] .crml-card.crml-ez-tr { padding: 16px !important; }
/* ---------- Saggi: testata scura con testo bianco, numeri e tabella ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-hero,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-hero .crml-ez-sg-title,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-hero .crml-ez-sg-meta,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-hero .crml-ez-pill--glass { color: #fff !important; -webkit-text-fill-color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-sg-cta { color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-kpis > div { border-radius: 14px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-kpis > div > div:first-child { font-size: 26px !important; font-weight: 800 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-kpis > div > div:last-child { color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggio-tabbtn { min-height: 48px !important; padding: 10px 14px !important; font-size: 16px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl th { font-weight: 800 !important; letter-spacing: 0 !important; text-transform: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-hours span,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-hours strong { color: var(--ez-ink) !important; }
/* ---------- Prova senza i vecchi fogli (682a): misure minime dette in proprio ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez [class*="-async-refresh"] { min-height: 44px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-rin-chips > * { min-height: 44px !important; padding: 10px 14px !important; font-size: 15px !important; font-weight: 800 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-rin button.crml-rin-back,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-rin button.crml-rin-link { min-height: 44px !important; }
/* ---------- Conversazione aperta della chat (CRML_Portal_Chat: messaggi costruiti dallo script della pagina) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-back { min-height: 44px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-msg-bubble-inner { padding: 10px 14px !important; border-radius: 18px !important; font-size: 16px !important; line-height: 1.4 !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-msg-bubble.mine .crml-msg-bubble-inner { border: 1px solid transparent !important; background: var(--ez-bacheca-soft) !important; color: var(--ez-bacheca-deep) !important; -webkit-text-fill-color: var(--ez-bacheca-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-msg-bubble.theirs .crml-msg-bubble-inner { border: 1px solid var(--ez-line) !important; background: var(--ez-surface) !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-msg-bubble.is-auto .crml-msg-bubble-inner { border: 1px solid #f0d9b5 !important; background: var(--ez-cassa-soft) !important; color: var(--ez-cassa-deep) !important; -webkit-text-fill-color: var(--ez-cassa-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-msg-bubble.is-sys .crml-msg-bubble-inner { border: 1px solid #b9dcea !important; background: var(--ez-sede-soft) !important; color: var(--ez-sede-deep) !important; -webkit-text-fill-color: var(--ez-sede-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-msg-sys-name { font-size: 14px !important; color: var(--ez-sede) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-msg-todo { font-size: 13px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-todo-strip { font-size: 16px !important; min-height: 44px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-todo-hint { font-size: 14px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-msg-meta { font-size: 13px !important; color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-msg-auto-tag { font-size: 12px !important; letter-spacing: 0 !important; text-transform: none !important; background: var(--ez-cassa) !important; color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-msg-actbtn { min-height: 44px !important; padding: 10px 16px !important; border: 2px solid transparent !important; border-radius: 18px !important; background: var(--ez-ink) !important; background-image: none !important; color: #fff !important; -webkit-text-fill-color: #fff !important; font-size: 15px !important; font-weight: 800 !important; text-decoration: none !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-msg-actbtn.is-secondary { border-color: var(--ez-ink) !important; background: var(--ez-surface) !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-msg-actdone { padding: 8px 14px !important; border-color: #bfe3cf !important; background: var(--ez-ok-soft) !important; color: var(--ez-ok-deep) !important; font-size: 14px !important; font-weight: 800 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-msg-attach--file a { min-height: 44px !important; border-color: var(--ez-line) !important; border-radius: 14px !important; background: var(--ez-bg) !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; font-size: 15px !important; text-decoration: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-input-bar { border-color: var(--ez-line) !important; background: var(--ez-surface) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-closure-banner { border-color: #f0d9b5 !important; border-radius: 14px !important; background: var(--ez-cassa-soft) !important; color: var(--ez-cassa-deep) !important; font-size: 15px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-conv-search input { padding: 10px 14px !important; border: 2px solid #d9d2e8 !important; border-radius: 14px !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-emoji-btn,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-attach-btn,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-voice-btn,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-template-btn,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-schedule-btn { min-width: 44px !important; min-height: 44px !important; border-radius: 14px !important; }
/* ---------- Scaletta del saggio (assets/portal/portal-scaletta.css, .cs-*). La finestra di modifica
   (.cs-sheet-overlay) nasce fuori dal portale, in fondo alla pagina: qui non si raggiunge ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-scaletta { font-family: var(--ez-font) !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-back { min-height: 44px !important; font-size: 15px !important; font-weight: 800 !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; text-decoration: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-hero { border-radius: 22px !important; background: var(--ez-ink) !important; background-image: none !important; color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-hero-top h2 { font-size: 21px !important; font-weight: 800 !important; color: #fff !important; -webkit-text-fill-color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-rolechip { padding: 5px 12px !important; background: #fff !important; color: var(--ez-ink) !important; font-size: 13px !important; font-weight: 800 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-hero-meta { font-size: 15px !important; color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-chip { padding: 5px 12px !important; font-size: 13px !important; font-weight: 800 !important; color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-help { font-size: 15px !important; color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-empty { font-size: 16px !important; color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-sectitle { font-size: 15px !important; font-weight: 800 !important; letter-spacing: 0 !important; color: var(--ez-allievi-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-card { padding: 12px !important; border: 1px solid var(--ez-line) !important; border-radius: 18px !important; background: var(--ez-surface) !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-card.is-pausa { border-color: #f0d9b5 !important; background: var(--ez-cassa-soft) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-card.cs-dragging { border-color: var(--ez-allievi) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-pos { width: 32px !important; height: 32px !important; background: var(--ez-allievi-soft) !important; color: var(--ez-allievi-deep) !important; font-size: 15px !important; font-weight: 800 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-pos.cs-pos-na { background: var(--ez-chip) !important; color: var(--ez-chip-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-title { font-size: 17px !important; font-weight: 800 !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-sub { font-size: 15px !important; color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-meta,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-dur,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-ex { font-size: 14px !important; color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-siae { font-size: 12px !important; font-weight: 800 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-exadd { font-size: 14px !important; font-weight: 800 !important; color: var(--ez-sede-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-iconbtn,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-editbtn { min-width: 44px !important; min-height: 44px !important; border-color: var(--ez-line) !important; border-radius: 14px !important; background: var(--ez-surface) !important; color: var(--ez-ink) !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-toolbar { border-color: var(--ez-line) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-tbtn { min-height: 56px !important; border: 2px solid var(--ez-line) !important; border-radius: 18px !important; background: var(--ez-surface) !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; font-size: 14px !important; font-weight: 800 !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-tbtn svg { color: var(--ez-allievi) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-saved { font-size: 14px !important; color: var(--ez-ok-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cs-saved.is-err { color: var(--ez-bad-deep) !important; }
/* ---------- Saggi del maestro: filtri a pastiglia scritti come link, righe piccole dei movimenti ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-pill { min-height: 44px !important; padding: 10px 16px !important; font-size: 15px !important; text-decoration: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-pill.crml-ez-tag--off { color: var(--ez-chip-ink) !important; -webkit-text-fill-color: var(--ez-chip-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-pill.crml-ez-tag--ink { background: var(--ez-ink) !important; color: #fff !important; -webkit-text-fill-color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl .crml-btn.crml-btn-sm { min-height: 44px !important; padding: 8px 14px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-info > span,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-info > small,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-info > div:not([class]) { font-size: 15px !important; }
/* ---------- Prova senza i vecchi fogli su tutte le pagine (682a, tappa 3) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-overdue-refresh,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-later,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crmlIscrToggle { min-height: 44px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-modal__close { min-height: 44px !important; }
/* ---------- Ingresso del genitore: avviso sui dati del minore e selettore del figlio (classi proprie, style in linea) ---------- */
/* ---------- Finestra del regolamento (CRML_Portal_Regolamento, #crml-reg-*: tutta a style in linea) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-overlay > div { border-radius: 22px !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-overlay > div > div:first-child { background: var(--ez-ink) !important; background-image: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-overlay > div > div:first-child div { font-size: 13px !important; letter-spacing: 0 !important; color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-title { font-size: 21px !important; font-weight: 800 !important; color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-body { font-size: 16px !important; line-height: 1.55 !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-progress { background: var(--ez-allievi) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-check { width: 22px !important; height: 22px !important; accent-color: var(--ez-allievi) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-overlay label { flex-wrap: nowrap !important; align-items: flex-start !important; font-size: 16px !important; font-weight: 400 !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-confirm { min-height: 52px !important; padding: 12px 18px !important; border: 0 solid transparent !important; border-radius: 18px !important; background: var(--ez-allievi) !important; background-image: none !important; color: #fff !important; font-size: 16px !important; font-weight: 800 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-sign-toggle { min-height: 52px !important; padding: 12px 18px !important; border: 2px solid var(--ez-ink) !important; border-radius: 18px !important; background: var(--ez-surface) !important; background-image: none !important; color: var(--ez-ink) !important; font-size: 16px !important; font-weight: 800 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-overlay button.crml-reg-later { min-height: 48px !important; font-size: 15px !important; font-weight: 800 !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-clear-sig { min-height: 44px !important; border-radius: 14px !important; font-size: 15px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-warn { border-color: #f0d9b5 !important; border-radius: 14px !important; background: var(--ez-cassa-soft) !important; color: var(--ez-cassa-deep) !important; font-size: 15px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-feedback { font-size: 15px !important; }
/* ---------- Finestra dei consensi (CRML_Portal_Consensi, .crml-cons-*) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-cons-modal .crml-cons-card { border-radius: 22px !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-cons-ico { background: var(--ez-allievi-soft) !important; color: var(--ez-allievi-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-cons-title { font-size: 21px !important; font-weight: 800 !important; line-height: 1.2 !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-cons-sub,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-cons-note { font-size: 15px !important; line-height: 1.45 !important; color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-cons-opt { border: 1px solid var(--ez-line) !important; border-radius: 18px !important; background: var(--ez-bg) !important; font-size: 16px !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-cons-err { border-radius: 14px !important; font-size: 15px !important; color: var(--ez-bad-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez button.crml-cons-cta { min-height: 52px !important; border: 0 solid transparent !important; border-radius: 18px !important; background: var(--ez-allievi) !important; background-image: none !important; color: #fff !important; -webkit-text-fill-color: #fff !important; font-size: 16px !important; font-weight: 800 !important; box-shadow: none !important; }
/* ---------- Anagrafica obbligatoria (finestra .crml-p2-anag-popup-*) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-popup-who,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-popup-sub,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-popup-note { line-height: 1.45 !important; color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-pgroup h3 { color: var(--ez-allievi-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-popup-cta { min-height: 52px !important; border: 0 solid transparent !important; border-radius: 18px !important; background: var(--ez-allievi) !important; background-image: none !important; color: #fff !important; -webkit-text-fill-color: #fff !important; font-weight: 800 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-popup-close { min-width: 44px !important; min-height: 44px !important; }
/* ---------- Avviso sull'uso della chat (.crml-chat-notice*) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-notice-title { font-size: 21px !important; font-weight: 800 !important; line-height: 1.2 !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-notice-ok { min-height: 52px !important; padding: 12px 18px !important; border: 0 solid transparent !important; border-radius: 18px !important; background: var(--ez-ink) !important; background-image: none !important; color: #fff !important; -webkit-text-fill-color: #fff !important; font-size: 16px !important; font-weight: 800 !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-notice-close { min-width: 44px !important; min-height: 44px !important; border-radius: 14px !important; }
/* ---------- Percorso di avvio anno (CRML_Portal_Wizard, .crml-adw-*): riquadro in home e passi ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-launcher { border: 1px solid #c5e3ee !important; border-radius: 22px !important; background: var(--ez-sede-soft) !important; background-image: none !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-l-icon { border-radius: 18px !important; background: var(--ez-sede) !important; background-image: none !important; color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-l-eyebrow { font-size: 13px !important; font-weight: 800 !important; letter-spacing: 0 !important; text-transform: none !important; color: var(--ez-sede-deep) !important; -webkit-text-fill-color: var(--ez-sede-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-l-title { font-size: 20px !important; font-weight: 800 !important; line-height: 1.2 !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-l-sub,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-l-count { font-size: 15px !important; color: var(--ez-muted) !important; -webkit-text-fill-color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-l-bar { border-radius: 999px !important; background: var(--ez-sede) !important; background-image: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-l-cta { min-height: 52px !important; padding: 12px 18px !important; border: 0 solid transparent !important; border-radius: 18px !important; background: var(--ez-sede) !important; background-image: none !important; color: #fff !important; -webkit-text-fill-color: #fff !important; font-size: 16px !important; font-weight: 800 !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-panel { border-radius: 22px !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-head-title { font-size: 18px !important; font-weight: 800 !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-head-step,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-head-due { font-size: 14px !important; color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-s-title { font-size: 21px !important; font-weight: 800 !important; line-height: 1.2 !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-s-desc,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-s-hint { font-size: 16px !important; line-height: 1.45 !important; color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-s-warn { border-color: #f0d9b5 !important; border-radius: 14px !important; background: var(--ez-cassa-soft) !important; color: var(--ez-cassa-deep) !important; font-size: 15px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-s-preview { border: 1px solid var(--ez-line) !important; border-radius: 14px !important; background: var(--ez-bg) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-s-preview-label { font-size: 14px !important; color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-s-preview-val { font-size: 17px !important; font-weight: 800 !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-btn { min-height: 52px !important; padding: 12px 18px !important; border: 2px solid var(--ez-ink) !important; border-radius: 18px !important; background: var(--ez-surface) !important; background-image: none !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; font-size: 16px !important; font-weight: 800 !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-btn.crml-adw-btn--primary { border-color: transparent !important; background: var(--ez-sede) !important; color: #fff !important; -webkit-text-fill-color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-close { min-width: 44px !important; min-height: 44px !important; border-radius: 14px !important; }
/* ---------- Dalla prova sul sito vero (682a): il tema del sito sottolinea e colora di viola i link ---------- */
/* "Vai a...": la voce di ricerca rapida la aggiunge portal.js, senza le classi del vestito */
/* ---------- Portale maestro, giro di completamento (682a): sfumature del tema "vivid" e pulsanti ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez::before,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez::after { background: none !important; background-image: none !important; }
/* 720a: "Spegni" era bianco su bianco e "Accendi" aveva il testo scuro: colori secondo data-on (1 = Accendi pieno, 0 = Spegni chiaro) */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-consnov-toggle,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tmg-toggle { min-height: 48px !important; padding: 10px 16px !important; border: 2px solid var(--ez-ac, #6a4b9b) !important; border-radius: 18px !important; background: var(--ez-ac, #6a4b9b) !important; background-image: none !important; color: #fff !important; font-weight: 800 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-consnov-toggle[data-on="0"],
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tmg-toggle[data-on="0"] { background: var(--ez-surface, #fff) !important; color: var(--ez-ac-deep, #4f3580) !important; -webkit-text-fill-color: var(--ez-ac-deep, #4f3580) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-consnov-toggle:disabled,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tmg-toggle:disabled { opacity: .6 !important; cursor: not-allowed !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crmlIscrToggle { white-space: normal !important; max-width: 100% !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-webpush-toggle .crml-btn--primary,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-webpush-toggle .crml-btn--primary * { color: #fff !important; -webkit-text-fill-color: #fff !important; }
/* ---------- Iscrizioni del maestro (riquadri di CRML_Portal_App::moduli_iscrizioni_hub ed elenco) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-moduli-hub > div > div > div:first-child { font-size: 17px !important; font-weight: 800 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-moduli-hub > div > div > div + div { font-size: 15px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crmlIscrToggle { min-height: 52px !important; padding: 12px 18px !important; border-radius: 18px !important; background: var(--ez-ok) !important; background-image: none !important; color: #fff !important; font-size: 16px !important; font-weight: 800 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-moduli-list-card::before,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-moduli-list-card::after { background: none !important; background-image: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-hero .crml-ez-emo,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-hero svg { color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-hero .crml-ez-sg-cta svg { color: var(--ez-ink) !important; }
/* ---------- Guida: i pallini dei passi restano pallini (i vecchi fogli danno 44px di altezza a ogni pulsante) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez.crml-gd .crml-gd-dot { width: 14px !important; min-width: 14px !important; height: 14px !important; min-height: 14px !important; padding: 0 !important; border-radius: 50% !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez.crml-gd .crml-gd-back { border-radius: 18px !important; text-decoration: none !important; }
/* ---------- Disponibilita: su telefono la tabella usciva dal riquadro e veniva tagliata ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-disp-table th,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-disp-table td { padding: 10px 6px !important; font-size: 14px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-disp-table .crml-btn { min-height: 44px !important; padding: 8px 10px !important; font-size: 14px !important; }
/* ---------- Calendario del maestro: orario e nome sempre leggibili sopra il colore del maestro
   (il colore della lezione resta il suo: qui orario e nome stanno su una pastiglia chiara) ---------- */
/* ---------- Percorso di avvio anno: barra di avanzamento senza sfumatura ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-l-bar { background: rgba(15, 106, 140, .16) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-adw-l-bar > span { border-radius: 999px !important; background: var(--ez-sede) !important; background-image: none !important; }
/* ---------- Modulo "volontario" dentro Iscrizioni (CRML_Iscrizione_Form, .crml-vol-*) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-vol-sec { border: 1px solid var(--ez-line) !important; border-radius: 18px !important; background: var(--ez-surface) !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-vol-title { border-color: var(--ez-line) !important; font-size: 18px !important; font-weight: 800 !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-vol-info { border-radius: 14px !important; background: var(--ez-ok-soft) !important; color: var(--ez-ok-deep) !important; font-size: 15px !important; line-height: 1.4 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-vol-fld label { font-size: 15px !important; font-weight: 700 !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-vol-fld input,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-vol-fld select,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-vol-fld textarea { min-height: 52px !important; padding: 12px 14px !important; border: 2px solid #d9d2e8 !important; border-radius: 14px !important; font-size: 17px !important; color: var(--ez-ink) !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-vol-btn { min-height: 52px !important; padding: 12px 18px !important; border: 0 solid transparent !important; border-radius: 18px !important; background: var(--ez-ok) !important; background-image: none !important; color: #fff !important; -webkit-text-fill-color: #fff !important; font-size: 16px !important; font-weight: 800 !important; box-shadow: none !important; }
/* ---------- Saggi del maestro: etichette di stato a pastiglia (il colore dello stato resta il suo) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span[style*="border-radius"],
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-card span[style*="border-radius:10px"],
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-card span[style*="border-radius:8px"]/*771s<*/,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-02ffed0:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-0adfc8b:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-146f7ab:where(:not([style]),[style="display:inline-block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-1eb89bc:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-249565a:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-2568eba:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-2fd2219:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-3c64d9e:where(:not([style]),[style="display:inline-block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-41f976e:where(:not([style]),[style="display:inline-block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-54f71a4:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-5fef11c:where(:not([style]),[style="display:inline-flex"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-626e658:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-6321405:where(:not([style]),[style="display:inline-block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-6b2c341:where(:not([style]),[style="display:inline-flex"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-6cb2877:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-6deeb4f:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-75674b2:where(:not([style]),[style="display:inline-block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-7618955:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-79bddae:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-817363a:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-81c6f1c:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-868d952:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-8da1be3:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-8f1e86d:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-96240f7:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-a1d3973:where(:not([style]),[style="display:inline-flex"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-a37d0bc:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-acd861b:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-b3760eb:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-c3f23d4:where(:not([style]),[style="display:inline-block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-c73c1fe:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-c799bce:where(:not([style]),[style="display:inline-block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-ce5eb0c:where(:not([style]),[style="display:inline-block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-cf965ec:where(:not([style]),[style="display:inline-block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-d280784:where(:not([style]),[style="display:none"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-d8d7afb:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-de95c60:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-e14b533:where(:not([style]),[style="display:inline-flex"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-e1961e8:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-e276f68:where(:not([style]),[style="display:inline-flex"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-eaa2756:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-f2b59c0:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-f5a62ba:where(:not([style]),[style="display:inline-block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-fa674fe:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td span.crml-s-fafbdc9:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-card span.crml-s-146f7ab:where(:not([style]),[style="display:inline-block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-card span.crml-s-249565a:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-card span.crml-s-41f976e:where(:not([style]),[style="display:inline-block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-card span.crml-s-c799bce:where(:not([style]),[style="display:inline-block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-card span.crml-s-ce5eb0c:where(:not([style]),[style="display:inline-block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-card span.crml-s-de95c60:where(:not([style])),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-card span.crml-s-f5a62ba:where(:not([style]),[style="display:inline-block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-card span.crml-s-6b2c341:where(:not([style]),[style="display:inline-flex"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-card span.crml-s-8f1e86d:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-card span.crml-s-a1d3973:where(:not([style]),[style="display:inline-flex"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-card span.crml-s-a37d0bc:where(:not([style]),[style="display:block"]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sg-card span.crml-s-e276f68:where(:not([style]),[style="display:inline-flex"])/*>771s*/ { padding: 5px 12px !important; border-radius: 999px !important; font-size: 13px !important; font-weight: 800 !important; }
/* ---------- Home del maestro semplificata: righe "Da fare" e voci di "Altro" (i vecchi fogli forzano bordi, ombre e colori di link e pulsanti) ---------- */
/* >>> 684a nav */
/* 684a - navigazione a macro aree del portale maestro: i vecchi fogli e il tema colorano di viola e sottolineano ogni collegamento (il colore passa da --crml-primary) */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-disp-table td.crml-disp-day { -webkit-text-fill-color: currentColor !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ajax-form[data-crml-dirty-flag] .crml-form-actions .crml-btn { width: auto !important; min-height: 48px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-help,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-quick-b,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-cont-b { min-height: 0 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-cont-b { min-height: 40px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-quick-b { background-color: var(--ez-surface) !important; color: var(--ez-ink) !important; border: 1px solid var(--ez-line-strong) !important; padding: 7px 12px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-void { border-left-width: 1px !important; border-left-style: dashed !important; background-image: none !important; color: var(--ez-muted) !important; -webkit-text-fill-color: currentColor !important; font-size: 16px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-void .crml-ez-void-ic { color: var(--ez-ac) !important; stroke: currentColor !important; }
/* campi di testo mai sotto 16px e 48px di altezza (i vecchi fogli forzano 12-14px su alcune etichette e campi) */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-body input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=file]):not([type=range]),
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-body select,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-body textarea { font-size: 16px !important; min-height: 48px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-body label { font-size: 14px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-arrivo { margin: 0 0 14px !important; padding: 0 !important; border: 0 !important; min-height: 0 !important; box-shadow: none !important; background-image: none !important; --crml-primary: var(--ez-sede-deep) !important; color: var(--ez-sede-deep) !important; -webkit-text-fill-color: currentColor !important; text-decoration: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-arrivo svg { stroke: currentColor !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-arrivo.crml-ez-arrivo--todo { --crml-primary: var(--ez-cassa-deep) !important; color: var(--ez-cassa-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-timer-b { min-height: 40px !important; padding: 0 16px !important; box-shadow: none !important; background-image: none !important; text-transform: none !important; letter-spacing: 0 !important; -webkit-text-fill-color: currentColor !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-timer.is-on .crml-ez-timer-b { background-color: var(--ez-allievi) !important; color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-timer:not(.is-on) .crml-ez-timer-b { background-color: var(--ez-surface) !important; color: var(--ez-allievi-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-toggle { min-height: 30px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anagform-back { font-size: 14px !important; }
/* 686a - verifica sul sito: il collegamento della prossima lezione in home prendeva viola e sottolineatura dal tema */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-today-link { --crml-primary: var(--ez-allievi-deep) !important; color: var(--ez-allievi-deep) !important; text-decoration: none !important; }
/* <<< 684a nav */
/* >>> 686a tappa 5 */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-slot { width: auto !important; box-shadow: none !important; background-image: none !important; text-transform: none !important; letter-spacing: 0 !important; -webkit-text-fill-color: currentColor !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-slot { width: 100% !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-porto-t { border-radius: 12px !important; }
/* <<< 686a tappa 5 */
/* >>> 686a tappa 4 */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-num-v a { --crml-primary: var(--ez-ac) !important; color: var(--ez-ac) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-prof-btn { min-height: 44px !important; }
/* <<< 686a tappa 4 */
/* >>> 686a ripresa: chat del maestro a navigazione easy (#crml-chat-wrap.crml-chat-ez; righe colorate in linea dallo script) */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-chat-wrap.crml-chat-ez { border: 1px solid var(--ez-line) !important; border-radius: var(--ez-r-md) !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-sidebar { background: var(--ez-surface) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez #crml-chat-new-btn { width: auto !important; height: 44px !important; border-radius: 999px !important; font-size: 15px !important; font-weight: 800 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez #crml-chat-filters { gap: 8px !important; padding: 8px 12px !important; border-color: var(--ez-line) !important; background: var(--ez-surface) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez #crml-chat-search-panel { border-color: var(--ez-line) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez #crml-chat-search-input { min-height: 44px !important; border: 2px solid #d9d2e8 !important; font-size: 16px !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-group-header { padding: 12px 6px 6px !important; border: 0 !important; background: none !important; font-size: 13px !important; font-weight: 800 !important; letter-spacing: 0 !important; text-transform: none !important; color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-contact { gap: 12px !important; margin: 0 0 8px !important; padding: 10px 12px !important; border: 1px solid var(--ez-line) !important; background: var(--ez-surface) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-contact:hover { background: var(--ez-bg) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-contact:has(.crml-chat-unread-badge) { border-color: #efc3d6 !important; background: var(--ez-bacheca-soft) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-contact.is-active { border-color: var(--ez-allievi) !important; background: var(--ez-allievi-soft) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-contact:has(.crml-chat-unread-badge):not(.is-t-staff) .crml-chat-contact-avatar,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-contact.is-active:not(.is-t-staff) .crml-chat-contact-avatar { background: var(--ez-surface) !important; box-shadow: 0 0 0 1px #e4c6d4 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-contact-avatar { width: 46px !important; height: 46px !important; background: var(--ez-allievi-soft) !important; color: var(--ez-allievi-deep) !important; -webkit-text-fill-color: var(--ez-allievi-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .is-t-staff .crml-chat-contact-avatar { background: var(--ez-bacheca) !important; color: #fff !important; -webkit-text-fill-color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .is-t-maestro .crml-chat-contact-avatar { background: var(--ez-sede-soft) !important; color: var(--ez-sede-deep) !important; -webkit-text-fill-color: var(--ez-sede-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-contact-name2 { font-size: 16px !important; font-weight: 800 !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-contact:has(.crml-chat-unread-badge) .crml-chat-contact-name2 { color: var(--ez-bacheca-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-contact-preview { font-size: 14px !important; color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-contact:has(.crml-chat-unread-badge) .crml-chat-contact-preview { font-weight: 700 !important; color: var(--ez-bacheca-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-contact-time { font-size: 13px !important; color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-unread-badge { min-width: 22px !important; height: 22px !important; padding: 0 6px !important; border-radius: 999px !important; font-size: 13px !important; line-height: 22px !important; text-align: center !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .is-nowp .crml-chat-contact-preview::before { content: "Senza accesso al portale" !important; font-weight: 700 !important; color: var(--ez-cassa-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .is-nowp .crml-chat-contact-preview:not(:empty)::before { content: "Senza accesso al portale \00b7  " !important; }
/* <<< 686a ripresa chat */
/* >>> 722a home maestro: riquadri Da fare e Il mio mese (i vecchi fogli forzano colore e bordo sui link) */
/* <<< 722a */
/* >>> 730a home di allievo e genitore: i collegamenti nuovi (il tema colora e sottolinea ogni link) e i riquadri di sempre quando stanno "In evidenza" (i loro fogli usano !important) */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-num.crml-ez-num--fam { --crml-primary: var(--ez-ink) !important; color: var(--ez-ink) !important; border: 1px solid var(--ez-line) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-num.crml-ez-num--fam.crml-ez-num--warn { --crml-primary: var(--ez-cassa-deep) !important; color: var(--ez-cassa-deep) !important; border-color: #f0d9b5 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-fh-next-a { margin: 0 !important; padding: 0 !important; border: 0 !important; min-height: 0 !important; box-shadow: none !important; background-image: none !important; --crml-primary: var(--ez-ink) !important; color: var(--ez-ink) !important; -webkit-text-fill-color: currentColor !important; text-decoration: none !important; text-transform: none !important; letter-spacing: 0 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-fh-next-a .crml-ez-fh-go svg { color: var(--ez-muted) !important; stroke: currentColor !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-fh-abs { margin: 0 !important; padding: 0 !important; min-height: 0 !important; border: 2px solid var(--ez-line-strong) !important; border-radius: 16px !important; box-shadow: none !important; background-color: var(--ez-surface) !important; background-image: none !important; --crml-primary: var(--ez-ink) !important; color: var(--ez-ink) !important; -webkit-text-fill-color: currentColor !important; text-decoration: none !important; text-transform: none !important; letter-spacing: 0 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-fh-abs svg { color: var(--ez-ink) !important; stroke: currentColor !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ok-ic svg { color: #fff !important; stroke: currentColor !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-rec-home-pending { margin: 0 !important; }
/* rinnovo dell'iscrizione: in colonna (a fianco del menu il testo restava schiacciato e spezzava le parole) */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-rin-home { margin: 0 !important; padding: 18px !important; border: 1px solid #efc3d6 !important; border-radius: 22px !important; background: var(--ez-bacheca-soft) !important; background-image: none !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-rin-home-head { flex-wrap: wrap !important; align-items: flex-start !important; gap: 12px 14px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-rin-home-icon { width: 44px !important; height: 44px !important; border-radius: 14px !important; background: var(--ez-bacheca) !important; background-image: none !important; box-shadow: none !important; color: #fff !important; -webkit-text-fill-color: #fff !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-rin-home-txt { flex: 1 1 260px !important; }
/* accanto all'icona se c'e posto (computer), sotto a tutta larghezza su telefono */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-rin-home-eyebrow { font-size: 13px !important; letter-spacing: .05em !important; color: var(--ez-bacheca-deep) !important; -webkit-text-fill-color: var(--ez-bacheca-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-rin-home-title { font-size: 22px !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-rin-home-sub { font-size: 15px !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-rin-home-box,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-rin-home-prova { font-size: 15px !important; border-color: #efc3d6 !important; background: var(--ez-surface) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-rin-home-actions { width: 100% !important; align-items: stretch !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-rin-home-cta { width: 100% !important; min-height: 56px !important; border: 0 !important; border-radius: 16px !important; background: var(--ez-bacheca) !important; background-image: none !important; box-shadow: none !important; color: #fff !important; -webkit-text-fill-color: #fff !important; font-size: 17px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-rin-home-sec { width: 100% !important; min-height: 52px !important; border-radius: 16px !important; font-size: 16px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-rin-home-alt { font-size: 15px !important; font-weight: 700 !important; color: var(--ez-bacheca-deep) !important; -webkit-text-fill-color: var(--ez-bacheca-deep) !important; }
/* pagamenti scaduti e rate in ritardo: colori della cassa al posto del rosso sfumato */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-p2-overdue-alert { margin: 0 !important; padding: 18px !important; border: 1px solid #f0d9b5 !important; border-radius: 22px !important; background: var(--ez-cassa-soft) !important; background-image: none !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-p2-overdue-alert::before { content: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-p2-overdue-icon { background: var(--ez-cassa) !important; background-image: none !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-p2-overdue-eyebrow { font-size: 13px !important; letter-spacing: .05em !important; color: var(--ez-cassa-deep) !important; -webkit-text-fill-color: var(--ez-cassa-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-p2-overdue-title { font-size: 21px !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-p2-overdue-totale { font-size: 15px !important; color: var(--ez-cassa-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-p2-overdue-totale strong { color: var(--ez-cassa-deep) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev a.crml-p2-overdue-cta-all { min-height: 52px !important; padding: 12px 18px !important; border: 0 !important; border-radius: 16px !important; background: var(--ez-cassa) !important; background-image: none !important; box-shadow: none !important; text-shadow: none !important; color: #fff !important; -webkit-text-fill-color: #fff !important; font-size: 16px !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-p2-overdue-item { border: 1px solid #f0d9b5 !important; border-radius: 16px !important; background: var(--ez-surface) !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-p2-overdue-item-title { font-size: 15px !important; color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-p2-overdue-item-meta,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-p2-overdue-footer { font-size: 14px !important; color: var(--ez-muted) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-p2-overdue-item-importo { color: var(--ez-cassa-deep) !important; }
/* moduli da compilare chiesti dalla segreteria */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-p2-iscrizioni-alert { margin: 0 !important; border-radius: 22px !important; box-shadow: none !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-adw-launcher,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-fh-ev .crml-p2-anag-card { margin: 0 !important; }
/* <<< 730a */
/* ---------- 771a (14/10): scelte "come il vestito" dove portal-fix-light.css forzava ancora ---------- */
/* testo di presentazione sotto i titoli: grigio e interlinea del vestito (fix-light forzava p nero e 1,55) */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-sub { line-height: 1.3 !important; color: var(--ez-muted) !important; }
/* pagina di chi non e iscritto: margini laterali del vestito (fix-light forzava 8px su .crml-portal) */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez.crml-ez-visitor { padding-left: 16px !important; padding-right: 16px !important; }
/* menu a tendina del modulo di iscrizione: spazio interno del vestito (fix-light forzava 10px 12px) */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-iscr-fld select { padding: 14px !important; }
/* ---------- 833a (19/10): link sottolineati dal tema del sito ---------- */
/* il tema Kubio sottolinea con !important ogni link del contenuto (.kubio-post-content a, anche :hover e :visited): menu, riquadri e pulsanti (link con una classe) tornano senza riga; i link dentro i testi (senza classe) restano sottolineati. Confronto sul banco, 15 pagine di maestro e allievo: risultato identico al vestito senza tema */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a[class] { text-decoration: none !important; }
/* ---------- 833a (20/10), passo 1: registro dell'allievo, "Comunica assenza" a contorno ---------- */
/* era un pulsante rosso pieno su ogni lezione pianificata: la pagina sembrava un elenco di allarmi; ora e un pulsante leggero, il rosso resta al passaggio */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-reg-actions a.crml-btn-danger { border: 2px solid var(--ez-line-strong) !important; background: var(--ez-surface) !important; background-image: none !important; box-shadow: none !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-reg-actions a.crml-btn-danger:hover,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-reg-actions a.crml-btn-danger:focus-visible { border-color: var(--ez-bad) !important; color: var(--ez-bad) !important; -webkit-text-fill-color: var(--ez-bad) !important; }
/* ---------- 833a (20/10), passo 5: filtro del materiale (i vecchi fogli forzano misure e colori di ogni pulsante) ---------- */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-mat-fb { min-height: 40px !important; padding: 0 14px !important; border: 2px solid var(--ez-line) !important; border-radius: 999px !important; background: var(--ez-surface) !important; background-image: none !important; box-shadow: none !important; color: var(--ez-ink) !important; -webkit-text-fill-color: var(--ez-ink) !important; font-size: 14px !important; font-weight: 700 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-mat-fb.is-on { border-color: var(--ez-ink) !important; background: var(--ez-ink) !important; color: #fff !important; -webkit-text-fill-color: #fff !important; font-weight: 800 !important; }
/* ---------- 848a (22/10): riduzione famiglia approvata, riga sotto l'importo del pacchetto in Pagamenti ---------- */
/* compare solo dopo l'approvazione dell'amministratore; verde di conferma del vestito */
.crml-pack-rid-fam { margin: 6px 0 4px; padding: 8px 12px; border-radius: 10px; background: var(--ez-ok-soft, var(--crml-color-success-bg)); color: var(--ez-ok-deep, var(--crml-color-success-fg)); font-size: 14px; font-weight: 600; line-height: 1.35; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pack-rid-fam { display: block !important; margin: 6px 0 4px !important; padding: 8px 12px !important; border-radius: var(--ez-r-sm, 10px) !important; background: var(--ez-ok-soft) !important; background-image: none !important; color: var(--ez-ok-deep) !important; -webkit-text-fill-color: var(--ez-ok-deep) !important; font-size: 14px !important; font-weight: 600 !important; line-height: 1.35 !important; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pack-rid-fam strong { font-weight: 800 !important; color: inherit !important; -webkit-text-fill-color: inherit !important; }
/* 848a: nella pillola "Importo" del pacchetto il dettaglio "(contributo + marca da bollo)" era giallo chiaro (#fef3c7, pensato per la pillola scura di prima) sul fondo chiaro del vestito: quasi illeggibile */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pack-importo .crml-s-942e6a0 { color: var(--ez-muted) !important; -webkit-text-fill-color: var(--ez-muted) !important; opacity: 1 !important; }
