/* ============================================================================
   VESTITO "EASY" - v0.1 (678a, 05/10/2026) - in costruzione, spento per tutti
   Porta nei portali l'aspetto di Staff Easy (assets/staff-easy/staff-easy.css):
   stessi colori, stessi raggi, bersagli touch grandi, testo leggibile.
   Cambia SOLO l'aspetto: funzioni, moduli e pulsanti restano quelli del portale.
   Regole del sistema vestiti: niente !important, niente @import o risorse
   esterne, niente display/position sui selettori del contratto SPA.
   Validato da: python tools/lint-skin-contract.py --skin assets/portal/skins/easy.css
   Attivazione: crml_portal_skin_test = "easy:uid1,uid2" (prova per contatto)
   oppure crml_portal_skin = "easy" (tutti) SOLO a lavoro finito su tutti i portali.
   Le classi crml-ez-* sono emesse dal PHP solo quando il vestito e attivo.
   Coperto finora: portale generico (CRML_Portal_Shortcodes::render_generic_portal).
   ============================================================================ */

/* >>> 771a BASE EREDITATA - parte senza !important di portal.css, portal-modern.css e portal-v2-skin.css,
   ritirati dal portale (14/10/2026). Sta in testa al vestito: le regole di easy.css che seguono
   vincono a parita, come prima. Scritta da ritira2.py, non a mano: si toglie man mano. */
/* ---- da portal.css ---- */
@keyframes crml-pulse {
  0%,100% { opacity: 1; }
  50%      { opacity: .55; }
}
@keyframes crml-skeleton {
  0% { background-position: -200px 0; }
  100% { background-position: calc(200px + 100%) 0; }
}
@keyframes crml-badge-pulse {
  0%, 100% { box-shadow: 0 2px 6px rgba(220,38,38,.3); }
  50% { box-shadow: 0 2px 12px rgba(220,38,38,.5); }
}
:root {
  --crml-card:           #ffffff;
  --crml-card2:          #f7f9ff;
  --crml-border-med:     rgba(13,27,62,.16);
  --crml-primary:        #2250d6;
  --crml-primary-dark:   #1a3fb5;
  --crml-primary-light:  #4370f5;
  --crml-primary-weak:   rgba(34,80,214,.09);
  --crml-primary-mid:    rgba(34,80,214,.2);
  --crml-ok:             #16a34a;
  --crml-ok-bg:          rgba(22,163,74,.1);
  --crml-ok-border:      rgba(22,163,74,.3);
  --crml-warn:           #d97706;
  --crml-warn-bg:        rgba(217,119,6,.1);
  --crml-warn-border:    rgba(217,119,6,.3);
  --crml-danger:         #dc2626;
  --crml-danger-bg:      rgba(220,38,38,.1);
  --crml-danger-border:  rgba(220,38,38,.28);
  --crml-info:           #0891b2;
  --crml-info-bg:        rgba(8,145,178,.1);
  --crml-info-border:    rgba(8,145,178,.28);
  --crml-r:              14px;
  --crml-r-sm:           10px;
  --crml-r-lg:           20px;
  --crml-shadow:         0 4px 6px -1px rgba(13,27,62,.07),0 12px 40px -4px rgba(13,27,62,.12);
  --crml-shadow-card:    0 2px 6px rgba(13,27,62,.06),0 8px 20px rgba(13,27,62,.08);
  --crml-shadow-pop:     0 8px 24px -4px rgba(34,80,214,.25);
  --crml-soft:           rgba(13,27,62,.04);
  --crml-soft2:          rgba(13,27,62,.07);
  --crml-bottom-h:       64px;
  --crml-header-h:       64px;
}
.crml-portal-wrap {
  width: 100%;
}
@media (min-width: 768px) {
  .crml-portal {
    overflow: hidden;
  }
}
.crml-portal-header {
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: space-between;
  overflow: hidden;
  min-height: var(--crml-header-h);
}
.crml-portal-header::after {
  content: '';
  top: -40px;
  right: -40px;
  width: 160px;
  height: 160px;
  border-radius: 50%;
  background: rgba(255,255,255,.07);
  pointer-events: none;
}
.crml-portal-brand {
  display: flex;
  gap: 12px;
  align-items: center;
  min-width: 0;
}
.crml-portal-logo {
  background: rgba(255,255,255,.2);
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,.25);
  flex-shrink: 0;
}
.crml-portal-logo:where(:not(:focus-visible)) {
  border-radius: 10px;
}
@media (min-width: 768px) {
  .crml-portal-logo {
    width: 42px;
    height: 42px;
    font-size: 20px;
  }
}
.crml-portal-title {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.crml-portal-sub {
  margin-top: 2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.crml-portal-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-shrink: 0;
}
.crml-header-notif {
  display: flex;
  gap: 6px;
  align-items: center;
  padding: 7px 10px;
  background: rgba(255,255,255,.2);
  border: 1px solid rgba(255,255,255,.3);
  border-radius: 10px;
  font-size: 13px;
  font-weight: 700;
  backdrop-filter: blur(4px);
}
.crml-header-notif:hover {
  background: rgba(255,255,255,.3);
}
.crml-portal-wrap .crml-header-notif.is-empty {
  display: none;
}
.crml-notif-cnt {
  background: #fff;
  color: var(--crml-primary);
  padding: 1px 6px;
  font-size: 11px;
  font-weight: 900;
}
.crml-notif-cnt:where(:not(:focus-visible)) {
  border-radius: 999px;
}
.crml-badge-dot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--crml-danger);
  color: #fff;
  border-radius: 999px;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  font-size: 10px;
  font-weight: 800;
  margin-left: 4px;
}
.crml-badge-dot.mini {
  position: absolute;
  top: -2px;
  right: -4px;
  min-width: 16px;
  height: 16px;
  font-size: 8px;
  padding: 0 3px;
  border: 2px solid rgba(255,255,255,.85);
  box-shadow: 0 2px 6px rgba(220,38,38,.3);
}
.crml-home-quick-link {
  cursor: pointer;
}
.crml-home-quick-link:hover {
  background: var(--crml-primary-weak);
  border-color: var(--crml-primary-mid);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(34,80,214,.1);
}
.crml-home-quick-link:active {
  transform: scale(.97);
}
.crml-portal-wrap .crml-home-quick-link.is-active {
  border: 2px solid var(--crml-primary, #2250d6);
  background: var(--crml-primary-weak, rgba(34,80,214,.09));
}
.crml-maint-banner {
  position: sticky;
  top: 0;
  z-index: 99999;
  background: linear-gradient(135deg, var(--crml-maint-from, #f59e0b), var(--crml-maint-to, #d97706));
  color: var(--crml-color-fg-on-brand);
  padding: 12px 20px;
  text-align: center;
  font-size: 13px;
  font-weight: 600;
  box-shadow: 0 2px 8px rgba(0,0,0,.15);
}
.crml-maint-banner a {
  color: var(--crml-color-fg-on-brand);
  text-decoration: underline;
}
.crml-debug-empty {
  background: #fef2f2;
  border: 1px solid #fca5a5;
  border-radius: 8px;
  padding: 16px;
  margin: 12px;
  font-size: 12px;
  color: var(--crml-color-danger-fg);
}
.crml-home-quick-icon {
  font-size: 26px;
  line-height: 1;
}
.crml-home-quick-label {
  font-weight: 700;
  text-align: center;
  line-height: 1.2;
}
@media (min-width: 640px) {
  .crml-home-quick-label {
    font-size: 12px;
  }
}
.crml-portal-body {
  background: var(--crml-bg);
  min-height: 300px;
}
@media (min-width: 768px) {
  .crml-portal-body {
    padding: 20px 24px 32px;
  }
}
.crml-flash {
  margin: 0 0 16px;
  padding: 12px 16px;
  background: var(--crml-ok-bg);
  border: 1px solid var(--crml-ok-border);
  color: var(--crml-ok);
  border-radius: var(--crml-r-sm);
  font-weight: 600;
  font-size: 14px;
}
.crml-status-badge {
  white-space: nowrap;
}
.crml-btn {
  appearance: none;
}
.crml-btn:hover {
  background: var(--crml-primary-dark);
  transform: translateY(-1px);
  color: #fff;
}
.crml-btn:active {
  transform: translateY(0);
}
.crml-btn:disabled {
  transform: none;
}
.crml-btn-ghost:hover {
  background: var(--crml-card2);
  color: var(--crml-text);
}
.crml-btn-danger:hover {
  background: #b91c1c;
}
.crml-btn-warn {
  background: var(--crml-warn);
  box-shadow: 0 6px 20px rgba(217,119,6,.25);
}
.crml-btn-warn:hover {
  background: #b45309;
  color: #fff;
}
.crml-reg-overlay {
  position: fixed;
  inset: 0;
  z-index: 99999;
  background: rgba(0,0,0,.55);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}
.crml-link-sm {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  border-radius: 6px;
}
.crml-link-sm:hover {
  text-decoration: underline;
}
.crml-back-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 14px;
}
.crml-back-link:hover {
  background: var(--crml-primary-weak);
}
.crml-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.crml-form-field {
  flex-direction: column;
  gap: 6px;
}
.crml-form-actions {
  display: flex;
  gap: 10px;
  align-items: center;
  padding-top: 4px;
}
.crml-form-row {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
}
.crml-form-row .crml-input {
  flex: 1;
  min-width: 120px;
}
.crml-input {
  -webkit-appearance: none;
  appearance: none;
}
.crml-input:focus {
  outline: none;
  border-color: var(--crml-primary);
  background: var(--crml-card);
  box-shadow: 0 0 0 3px var(--crml-primary-weak);
}
.crml-check {
  transition: .15s;
  -webkit-tap-highlight-color: transparent;
  min-height: 48px;
}
.crml-check:hover {
  border-color: var(--crml-primary-light);
}
.crml-cal-legend {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  align-items: center;
  margin-bottom: 14px;
  padding: 10px 12px;
  overflow-x: auto;
}
.crml-cal-leg {
  white-space: nowrap;
}
.crml-cal-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.crml-cal-day {
  overflow: hidden;
}
.crml-cal-day-hdr {
  padding: 10px 14px;
  border-bottom: 1px solid var(--crml-border);
}
.crml-cal-today .crml-cal-day-hdr {
  border-bottom-color: var(--crml-primary-mid);
}
.crml-cal-past {
  opacity: .65;
}
.crml-cal-events {
  display: flex;
  flex-direction: column;
}
.crml-cal-event {
  display: flex;
  gap: 10px;
  align-items: center;
}
.crml-cal-event:hover {
  background: var(--crml-soft);
}
.crml-cal-evt-payment {
  border-left: 3px solid var(--crml-warn);
  background: var(--crml-warn-bg);
}
.crml-cal-evt-time {
  min-width: 40px;
}
.crml-cal-evt-name {
  flex: 1;
}
.crml-cal-evt-amount {
  font-size: 13px;
  font-weight: 700;
  color: var(--crml-warn);
}
.crml-filter-pills {
  display: flex;
  gap: 7px;
  flex-wrap: wrap;
  margin-bottom: 14px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--crml-border);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x mandatory;
}
.crml-fpill {
  white-space: nowrap;
  scroll-snap-align: start;
}
.crml-fpill:hover {
  border-color: var(--crml-border-med);
  color: var(--crml-text);
}
.crml-rfdd {
  margin: 0 0 14px;
}
.crml-rfdd > summary.crml-rfdd-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  list-style: none;
  -webkit-tap-highlight-color: transparent;
}
.crml-rfdd > summary.crml-rfdd-btn::-webkit-details-marker {
  display: none;
}
.crml-rfdd > summary.crml-rfdd-btn::before {
  content: none;
}
.crml-rfdd > summary.crml-rfdd-btn::after {
  content: "";
  width: 7px;
  height: 7px;
  margin-left: 4px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform .15s;
}
.crml-rfdd[open] > summary.crml-rfdd-btn::after {
  transform: translateY(2px) rotate(-135deg);
}
.crml-rfdd.is-filtered > summary.crml-rfdd-btn {
  border-color: var(--crml-border-med);
  background: var(--crml-soft2);
}
.crml-rfdd-panel {
  display: flex;
  flex-wrap: wrap;
  margin-top: 8px;
}
.crml-fpill-ok.is-active {
  color:var(--crml-ok);
  background:var(--crml-ok-bg);
  border-color:var(--crml-ok-border);
}
.crml-fpill-warn.is-active {
  color:var(--crml-warn);
  background:var(--crml-warn-bg);
  border-color:var(--crml-warn-border);
}
.crml-fpill-info.is-active {
  color:var(--crml-info);
  background:var(--crml-info-bg);
  border-color:var(--crml-info-border);
}
.crml-fpill-danger.is-active {
  color:var(--crml-danger);
  background:var(--crml-danger-bg);
  border-color:var(--crml-danger-border);
}
.crml-fpill-plan.is-active {
  color:var(--crml-primary);
  background:var(--crml-primary-weak);
  border-color:var(--crml-primary-mid);
}
.crml-registro-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.crml-reg-item {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  transition: .2s;
}
.crml-reg-item:hover {
  box-shadow: 0 4px 20px rgba(13,27,62,.12);
}
.crml-reg-item-icon {
  font-size: 18px;
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
}
@media (min-width: 768px) {
  .crml-reg-item-icon {
    font-size: 20px;
    width: 40px;
    height: 40px;
  }
}
.crml-reg-icon-ok {
  background: var(--crml-ok-bg);
}
.crml-reg-icon-warn {
  background: var(--crml-warn-bg);
}
.crml-reg-icon-danger {
  background: var(--crml-danger-bg);
}
.crml-reg-icon-info {
  background: var(--crml-info-bg);
}
.crml-reg-item-body {
  flex: 1;
  min-width: 0;
}
.crml-reg-item-top {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 4px;
}
.crml-reg-meta {
  margin-bottom: 6px;
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}
.crml-reg-sec {
  margin-top: 8px;
  padding: 8px 10px;
}
.crml-reg-sec-lbl {
  text-transform: uppercase;
  display: block;
  margin-bottom: 3px;
}
.crml-reg-sec-body {
  line-height: 1.45;
}
.crml-reg-actions {
  margin-top: 8px;
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.crml-lezione-header {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  flex-wrap: wrap;
  margin-bottom: 16px;
  padding-bottom: 14px;
}
.crml-lezione-title {
  flex: 1;
  min-width: 0;
}
.crml-lezione-meta-grid {
  display: grid;
  margin-bottom: 16px;
}
@media (min-width: 640px) {
  .crml-lezione-meta-grid {
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 12px;
  }
}
.crml-lezione-meta-item {
  padding: 10px 12px;
}
.crml-meta-lbl {
  display: block;
  margin-bottom: 3px;
}
.crml-lezione-sections {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 4px;
}
.crml-lezione-sec {
  padding: 14px;
}
.crml-lezione-sec-title {
  margin-bottom: 8px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--crml-border);
}
.crml-subtabs {
  display: flex;
  margin-bottom: 18px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  flex-wrap: nowrap;
}
.crml-subtab {
  flex: 1 1 0;
  min-width: 72px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  white-space: nowrap;
  text-align: center;
  position: relative;
}
.crml-subtab-ico {
  font-size: 21px;
  line-height: 1;
}
.crml-subtab-lbl {
  line-height: 1.15;
}
.crml-subtab:hover {
  color: var(--crml-primary);
  background: var(--crml-primary-weak);
}
.crml-subtab-badge {
  position: absolute;
  top: 6px;
  right: 8px;
  min-width: 17px;
  height: 17px;
  padding: 0 4px;
  line-height: 17px;
  text-align: center;
}
.crml-subtab-badge:where(:not(:focus-visible)) {
  border-radius: 999px;
}
.crml-pack-card-inactive {
  opacity: .7;
}
.crml-pack-card-name {
  flex: 1;
}
.crml-pack-progress-track {
  margin-bottom: 6px;
}
.crml-pack-progress-bar.warn {
  background: var(--crml-warn);
}
.crml-pack-progress-bar.danger {
  background: var(--crml-danger);
}
.crml-pack-notes {
  margin-top: 8px;
  padding: 10px;
}
.crml-mov-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.crml-mov-item {
  display: flex;
  gap: 12px;
  align-items: center;
}
.crml-mov-info {
  flex: 1;
  min-width: 0;
}
.crml-mov-date {
  margin-top: 2px;
}
.crml-mov-amt {
  white-space: nowrap;
}
.crml-receipt-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.crml-receipt-item {
  display: flex;
  gap: 12px;
  align-items: center;
  min-height: 56px;
}
.crml-receipt-item:hover {
  background: var(--crml-primary-weak);
  border-color: var(--crml-primary-mid);
}
.crml-receipt-icon {
  font-size: 22px;
}
.crml-receipt-info {
  flex: 1;
  min-width: 0;
}
.crml-receipt-name {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.crml-receipt-date {
  margin-top: 2px;
}
.crml-receipt-dl {
  flex-shrink: 0;
}
.crml-receipt-sign-ok {
  margin: -4px 0 6px;
  padding: 7px 12px;
  border-radius: 8px;
  background: var(--crml-ok-bg, #f0fdf4);
  color: var(--crml-ok, #166534);
  font-size: 12px;
  font-weight: 600;
}
.crml-receipt-sign-form {
  margin: -4px 0 6px;
  padding: 8px 12px;
  background: var(--crml-warn-bg, #fffbeb);
  font-size: 12px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
.crml-receipt-sign-form:where(:not(:focus-visible)) {
  border-radius: 8px;
}
.crml-receipt-sign-hint {
  font-weight: 600;
  flex: 1 1 100%;
}
.crml-receipt-sign-form input[type="file"] {
  font-size: 12px;
  flex: 1 1 auto;
  min-width: 0;
  max-width: 100%;
}
.crml-receipt-sign-form .crml-btn {
  flex-shrink: 0;
}
.crml-pay-hero {
  display: flex;
  gap: 14px;
  align-items: center;
  padding: 14px 16px;
  margin-bottom: 16px;
}
.crml-pay-hero-ico {
  width: 42px;
  height: 42px;
  flex-shrink: 0;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
}
.crml-pay-hero-ico:where(:not(:focus-visible)) {
  border-radius: 50%;
}
.crml-pay-hero-body {
  flex: 1;
  min-width: 0;
}
.crml-pay-hero-lbl {
  text-transform: uppercase;
  letter-spacing: .3px;
}
.crml-pay-hero-amt {
  line-height: 1.2;
}
.crml-pay-hero-sub {
  margin-top: 2px;
}
.crml-pay-hero-cta {
  flex-shrink: 0;
  white-space: nowrap;
}
.crml-pay-hero-cta:hover {
  background: var(--crml-primary-dark);
}
@media (max-width: 520px) {
  .crml-pay-hero {
    flex-wrap: wrap;
  }
  .crml-pay-hero-cta {
    width: 100%;
    text-align: center;
  }
}
.crml-evidence-box {
  margin-top: 10px;
  padding: 12px;
}
.crml-evidence-hint {
  margin-bottom: 8px;
}
.crml-evidence-form {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.crml-evidence-form input[type=file] {
  font-size: 12px;
  max-width: min(210px, 100%);
  flex: 1 1 auto;
}
.crml-evidence-btn {
  white-space: nowrap;
}
.crml-evidence-btn:hover {
  background: var(--crml-primary-dark);
}
.crml-evidence-sent {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 8px;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--crml-info);
  background: var(--crml-info-bg);
  border: 1px solid var(--crml-info-border);
  border-radius: 999px;
  padding: 4px 12px;
}
.crml-compose-card {
  margin-bottom: 14px;
}
.crml-compose-title {
  margin-bottom: 4px;
}
.crml-compose-desc {
  margin-bottom: 14px;
}
.crml-msg-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.crml-msg-item {
  background: var(--crml-card);
  border: 1px solid var(--crml-border);
  border-radius: var(--crml-r-sm);
  padding: 12px 14px;
  transition: .1s;
}
.crml-msg-item:hover {
  background: var(--crml-soft);
}
.crml-msg-hdr {
  display: flex;
  gap: 6px;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 6px;
  flex-wrap: wrap;
}
.crml-msg-subj {
  font-weight: 700;
  font-size: 14px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.crml-msg-date {
  font-size: 11px;
  color: var(--crml-muted);
  white-space: nowrap;
  flex-shrink: 0;
}
.crml-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.crml-item {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  justify-content: space-between;
}
.crml-item-main {
  min-width: 0;
  flex: 1;
}
.crml-item-meta {
  margin-top: 4px;
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.crml-item-link {
  text-decoration: none;
  color: var(--crml-text);
  transition: .1s;
  min-height: 52px;
}
.crml-item-link:hover {
  background: var(--crml-primary-weak);
  border-color: var(--crml-primary-mid);
}
.crml-actions {
  display: flex;
  flex-direction: column;
  gap: 6px;
  align-items: flex-end;
  flex-shrink: 0;
}
.crml-percorso-hero {
  padding: 16px 18px;
  margin-bottom: 14px;
}
.crml-percorso-hero-sub {
  margin-top: 4px;
}
.crml-percorso-hero .crml-percorso-bar {
  border-color: transparent;
}
.crml-percorso-bar {
  height: 9px;
  overflow: hidden;
  margin-top: 12px;
  border: 1px solid var(--crml-border);
}
.crml-percorso-bar > i {
  display: block;
  height: 100%;
  transition: width .3s ease;
}
.crml-percorso-sec {
  margin: 18px 0 8px;
  display: flex;
  gap: 6px;
  align-items: center;
}
.crml-item.is-done {
  opacity: .68;
}
.crml-item.is-done .crml-item-title {
  text-decoration: line-through;
}
@media (prefers-reduced-motion: reduce) {
  .crml-percorso-bar > i {
    transition: none;
  }
}
.crml-percorso-done {
  background: var(--crml-ok-weak, #e8f5e9);
  border: 1px solid var(--crml-ok, #2e7d32);
  color: var(--crml-ok-text, #1b5e20);
  border-radius: var(--crml-r-sm);
  padding: 12px 16px;
  margin: 0 0 14px;
  font-size: 13.5px;
}
.crml-percorso-visione {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 10px 14px;
  margin: 0 0 14px;
}
.crml-percorso-visione.is-ok {
  border-style: solid;
  border-color: var(--crml-ok, #2e7d32);
  color: var(--crml-ok-text, #1b5e20);
  display: block;
}
.crml-percorso-fasi {
  display: grid;
  gap: 8px;
}
.crml-percorso-fase {
  padding: 10px 14px;
}
.crml-percorso-fase.is-done {
  border-color: var(--crml-ok, #2e7d32);
}
.crml-percorso-fase-top {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
.crml-percorso-fase-top span {
  font-size: 12px;
  color: var(--crml-muted);
}
.crml-percorso-fase-date {
  font-size: 11.5px;
  color: var(--crml-muted);
  margin-top: 2px;
}
.crml-percorso-bar-sm {
  height: 6px;
  margin-top: 8px;
}
.crml-percorso-diario {
  display: grid;
  gap: 0;
}
.crml-percorso-dvoce {
  display: flex;
  gap: 10px;
  align-items: baseline;
  padding: 8px 4px;
  border-bottom: 1px solid var(--crml-border);
  font-size: 13px;
  color: var(--crml-text);
}
.crml-percorso-dvoce:last-child {
  border-bottom: 0;
}
.crml-percorso-dico {
  flex: 0 0 auto;
}
.crml-percorso-dtxt {
  flex: 1;
}
.crml-percorso-ddata {
  display: block;
  font-size: 11px;
  color: var(--crml-muted);
  margin-top: 2px;
}
.crml-piano-panel {
  margin-top: 14px;
  padding: 14px 16px;
}
.crml-piano-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
}
.crml-piano-panel-empty {
  font-size: 13px;
  color: var(--crml-muted);
  margin: 8px 0 0;
}
.crml-piano-panel-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 0;
}
.crml-piano-panel-t {
  flex: 1;
  min-width: 0;
}
.crml-piano-panel-t small {
  color: var(--crml-muted);
  font-size: 11.5px;
}
.crml-piano-panel-f {
  margin: 0;
  flex-shrink: 0;
}
.crml-note-box-warn {
  background: var(--crml-warn-bg);
  border-color: var(--crml-warn-border);
  color: var(--crml-warn);
}
.crml-note-box-danger {
  background: var(--crml-danger-bg);
  border-color: var(--crml-danger-border);
  color: var(--crml-danger);
}
.crml-kv {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
.crml-portal a:hover {
  text-decoration: underline;
}
.crml-card-h {
  padding: 12px 14px 10px;
  border-bottom: 1px solid var(--crml-border);
  font-weight: 700;
}
.crml-card-b {
  padding: 12px 14px;
}
.crml-toast {
  position: fixed;
  right: 16px;
  bottom: calc(var(--crml-bottom-h) + 10px);
  z-index: 99999;
  background: var(--crml-text);
  color: #fff;
  padding: 12px 18px;
  border-radius: var(--crml-r-sm);
  box-shadow: 0 8px 30px rgba(0,0,0,.35);
  max-width: 300px;
  font-size: 14px;
  font-weight: 600;
  transition: opacity .25s;
}
@media (min-width: 768px) {
  .crml-toast {
    bottom: 16px;
  }
}
.crml-portal.is-loading {
  opacity: .65;
  pointer-events: none;
}
.crml-badge-warn-inline {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 10px;
}
.crml-note--hint {
  color: var(--crml-muted);
  font-size: 12px;
  font-style: italic;
}
.crml-note--expired {
  color: var(--crml-danger, #c62828);
  font-size: 12px;
  font-weight: 600;
}
.crml-absence-wrapper {
  display: inline-block;
}
.crml-absence-wrapper {
  display: inline-block;
}
.crml-absence-panel {
  border-radius: 8px;
}
.crml-portal *:focus-visible {
  outline:2px solid #2250d6;
  outline-offset:2px;
}
@supports (padding: env(safe-area-inset-top)) {
  .crml-bottom {
    padding-bottom: calc(6px + env(safe-area-inset-bottom));
  }
  .crml-portal-body {
    padding-bottom: calc(var(--crml-bottom-h) + 16px + env(safe-area-inset-bottom));
  }
}
@media (max-width: 767px) {
  .crml-portal-header {
    top: 0;
    z-index: 90;
  }
}
.crml-btn,
.crml-nav-item,
.crml-bottom-item,
.crml-fpill {
  display: inline-flex;
  align-items: center;
}
.crml-portal a,
.crml-portal button,
.crml-portal [role="button"] {
  -webkit-tap-highlight-color: rgba(34, 80, 214, 0.12);
}
.crml-portal {
  scroll-behavior: smooth;
}
.crml-portal-body {
  -webkit-overflow-scrolling: touch;
}
.crml-btn:active {
  transform: scale(0.97);
}
.crml-nav-item:active,
.crml-bottom-item:active {
  transform: scale(0.95);
}
.crml-card:active {
  transform: scale(0.995);
}
.crml-card,
.crml-home-card,
.crml-btn,
.crml-nav-item,
.crml-bottom-item,
.crml-fpill,
.crml-subtab,
.crml-compose-card,
.crml-lezione-card {
  transition: transform 0.12s ease, box-shadow 0.15s ease, background 0.15s ease, border-color 0.15s ease;
}
@media (min-width: 768px) {
  .crml-card:hover {
    box-shadow: var(--crml-shadow-card);
  }
}
.crml-skeleton {
  background: linear-gradient(90deg, var(--crml-soft) 0%, var(--crml-soft2) 50%, var(--crml-soft) 100%);
  background-size: 200px 100%;
  animation: crml-skeleton 1.5s ease-in-out infinite;
  border-radius: 6px;
}
.crml-portal-body::before {
  content: '';
  display: block;
  height: 0;
  transition: height 0.3s;
}
@media (min-width: 768px) {
  .crml-portal-body::-webkit-scrollbar {
    width: 6px;
  }
  .crml-portal-body::-webkit-scrollbar-track {
    background: transparent;
  }
  .crml-portal-body::-webkit-scrollbar-thumb {
    background: var(--crml-border-med);
    border-radius: 3px;
  }
  .crml-portal-body::-webkit-scrollbar-thumb:hover {
    background: var(--crml-muted);
  }
}
.crml-status-badge {
  transition: background 0.2s, color 0.2s;
}
.crml-flash {
  border-radius: var(--crml-r);
  padding: 12px 16px;
  font-size: 13px;
  font-weight: 600;
  display: flex;
  align-items: center;
  gap: 8px;
  animation: crml-popin 0.3s ease;
}
@media (min-width: 768px) and (max-width: 1023px) {
  .crml-nav-item {
    padding: 8px 10px;
    font-size: 12px;
  }
}
@media (display-mode: standalone) {
  .crml-portal-header {
    padding-top: calc(14px + env(safe-area-inset-top, 20px));
  }
  .crml-portal {
    border-radius: 0;
    border: none;
  }
  .crml-portal-wrap {
    max-width: 100%;
    margin: 0;
    padding: 0;
  }
}
@media (max-width: 767px) and (orientation: landscape) {
  .crml-portal-header {
    padding: 8px 16px;
    min-height: 48px;
  }
  .crml-portal-logo {
    width: 32px;
    height: 32px;
    font-size: 16px;
  }
  .crml-bottom {
    bottom: 8px;
    left: 24px;
    right: 24px;
    padding: 4px 6px;
    border-radius: 20px;
  }
  .crml-bottom-item {
    padding: 4px 6px;
    gap: 1px;
  }
  .crml-portal-body {
    padding-bottom: calc(56px + env(safe-area-inset-bottom, 0px));
  }
}
@media (min-width: 481px) and (max-width: 767px) {
  .crml-bottom {
    left: 10%;
    right: 10%;
    border-radius: 28px;
  }
}
@media (max-width: 480px) {
  .crml-portal-body table {
    -webkit-overflow-scrolling: touch;
  }
  .crml-portal-body table thead {
    display: table-header-group;
  }
  .crml-portal-body table tbody {
    display: table-row-group;
  }
  .crml-portal-body table tr {
    display: table-row;
  }
  .crml-portal-body .crml-btn + .crml-btn,
  .crml-portal-body .crml-btn + a {
    margin-top: 8px;
    margin-left: 0;
  }
  .crml-lezione-sections {
    grid-template-columns: 1fr;
  }
  .crml-subtabs,
  .crml-fpills {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
  }
  .crml-fpill {
    white-space: nowrap;
    flex-shrink: 0;
  }
  .crml-subtab {
    white-space: nowrap;
  }
  .crml-form-actions {
    flex-direction: column;
  }
  .crml-back-link {
    margin-bottom: 8px;
  }
}
@media (max-width: 767px) {
  .crml-portal-header {
    min-height: 60px;
  }
  .crml-portal-header::before {
    content: '';
    top: -30%;
    right: -10%;
    width: 200px;
    height: 200px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255,255,255,.12) 0%, transparent 70%);
    pointer-events: none;
  }
  .crml-portal-logo {
    width: 40px;
    height: 40px;
    font-size: 18px;
    background: rgba(255,255,255,.18);
    backdrop-filter: blur(10px);
    border: 1.5px solid rgba(255,255,255,.25);
  }
  .crml-portal-logo:where(:not(:focus-visible)) {
    border-radius: 12px;
  }
  .crml-nav-item:active {
    transform: scale(.95);
  }
  .crml-portal-body {
    background: var(--crml-bg);
  }
  .crml-home-quick-icon {
    line-height: 1;
    filter: drop-shadow(0 2px 4px rgba(0,0,0,.08));
  }
  .crml-home-quick-label {
    font-weight: 700;
    color: var(--crml-text);
    letter-spacing: -.1px;
  }
  .crml-lezione-meta-grid {
    grid-template-columns: 1fr 1fr;
    gap: 8px;
  }
  .crml-lezione-meta-item {
    padding: 10px;
  }
  .crml-cal-day {
    overflow: hidden;
  }
  .crml-receipt-item {
    min-height: 52px;
  }
  .crml-chat-sidebar {
    z-index: 2;
  }
  .crml-chat-main {
    width: 100%;
    position: absolute;
    inset: 0;
    height: 100%;
    z-index: 1;
  }
  .crml-filter-pills {
    gap: 6px;
    padding-bottom: 6px;
  }
  .crml-check {
    min-height: 50px;
  }
  .crml-back-link {
    display: inline-flex;
    align-items: center;
  }
}
@media (min-width: 640px) and (max-width: 1023px) {
  .crml-lezione-meta-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
@media (max-width: 767px) {
  .crml-portal {
    scroll-behavior: smooth;
    overscroll-behavior-y: contain;
  }
  .crml-portal a,
  .crml-portal button {
    -webkit-tap-highlight-color: rgba(34,80,214,.08);
  }
  .crml-registro-list,
  .crml-cal-list,
  .crml-mov-list,
  .crml-receipt-list,
  .crml-msg-list,
  .crml-ticket-list {
    -webkit-overflow-scrolling: touch;
  }
}

/* ---- da portal-modern.css ---- */
@keyframes cp-float {
  0%,100% { transform: translate(0,0); }
  50% { transform: translate(-16px, -22px); }
}
@keyframes cp-fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.crml-portal,
.crml-portal-wrap {
  --cp-accent:       var(--crml-color-brand-500, #ba5a87);
  --cp-accent-2:     var(--crml-color-brand-600, #6a4b9b);
  --cp-accent-3:     var(--crml-color-brand-700, #2a3e7f);
  --cp-accent-soft:  var(--crml-color-brand-50, #fdf2f8);
  --cp-gradient:     var(--crml-color-brand-gradient, linear-gradient(135deg, #ba5a87 0%, #6a4b9b 50%, #2a3e7f 100%));
  --cp-gradient-soft: linear-gradient(135deg, var(--crml-color-brand-50, #fdf2f8) 0%, var(--crml-color-bg-subtle, #f5f3ff) 100%);
  --cp-success: var(--crml-color-success, #10b981);
  --cp-warning: var(--crml-color-warning, #f59e0b);
  --cp-danger:  var(--crml-color-danger,  #ef4444);
  --cp-info:    var(--crml-color-info,    #3b82f6);
  --cp-bg-base:    var(--crml-color-bg-app,     #f5f6fb);
  --cp-bg-surface: var(--crml-color-bg-surface, #ffffff);
  --cp-bg-subtle:  var(--crml-color-bg-subtle,  #f8fafc);
  --cp-bg-hover:   var(--crml-color-bg-hover,   #f1f5f9);
  --cp-text-primary:   var(--crml-color-fg-strong,  #0d1b3e);
  --cp-text-secondary: var(--crml-color-fg-default, #475569);
  --cp-text-muted:     var(--crml-color-fg-faint,   #94a3b8);
  --cp-border: var(--crml-color-border-subtle, rgba(15, 23, 42, 0.08));
  --cp-shadow-xs: var(--crml-shadow-xs, 0 1px 2px rgba(15,23,42,0.04));
  --cp-shadow-sm: var(--crml-shadow-sm, 0 2px 8px rgba(15,23,42,0.05));
  --cp-shadow-md: var(--crml-shadow-md, 0 8px 24px rgba(15,23,42,0.08));
  --cp-shadow-lg: var(--crml-shadow-lg, 0 20px 50px rgba(15,23,42,0.12));
  --cp-shadow-accent: 0 10px 30px rgba(186, 90, 135, 0.25);
  --cp-radius-xs: 6px;
  --cp-radius-sm: 10px;
  --cp-radius-md: 14px;
  --cp-radius-lg: 20px;
  --cp-radius-xl: 28px;
  --cp-radius-pill: 999px;
  --cp-transition: var(--crml-motion-base, 200ms cubic-bezier(.4,0,.2,1));
  --cp-font-sans: var(--crml-font-sans, -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);
  font-family: var(--cp-font-sans);
}
.crml-portal,
.crml-portal-wrap {
  margin: 20px auto;
  box-shadow: var(--cp-shadow-sm);
  min-height: 400px;
  transition: background var(--cp-transition), color var(--cp-transition);
}
.crml-portal:where(:not(:focus-visible)),
.crml-portal-wrap:where(:not(:focus-visible)) {
  border-radius: var(--cp-radius-lg);
}
.crml-portal *,
.crml-portal-wrap * {
  box-sizing: border-box;
}
.crml-portal h1,
.crml-portal h2,
.crml-portal-wrap h1,
.crml-portal-wrap h2 {
  margin-top: 0;
}
.crml-portal p,
.crml-portal label,
.crml-portal-wrap p,
.crml-portal-wrap label {
  color: var(--cp-text-secondary);
}
.crml-portal a,
.crml-portal-wrap a {
  text-decoration: none;
}
.crml-portal a:hover,
.crml-portal-wrap a:hover {
  color: var(--cp-accent-2);
}
.crml-portal-nav,
.crml-portal .crml-nav,
.crml-portal-tabs {
  display: flex;
  gap: 4px;
  border-bottom: 1px solid var(--cp-border);
  margin-bottom: 20px;
  flex-wrap: wrap;
}
.crml-portal-nav a,
.crml-portal-nav button,
.crml-portal .crml-nav a,
.crml-portal-tabs a,
.crml-portal-tabs button {
  background: transparent;
  color: var(--cp-text-secondary);
  border: 1px solid transparent;
  border-bottom: 0;
  padding: 10px 18px;
  font-size: 13px;
  font-weight: 600;
  border-radius: var(--cp-radius-sm) var(--cp-radius-sm) 0 0;
  cursor: pointer;
  transition: all var(--cp-transition);
  margin-bottom: -1px;
  text-decoration: none;
}
.crml-portal-nav a:hover,
.crml-portal-tabs a:hover,
.crml-portal-tabs button:hover {
  color: var(--cp-accent);
  background: var(--cp-accent-soft);
}
.crml-portal-nav a.active,
.crml-portal-nav .active,
.crml-portal-tabs .active {
  background: var(--cp-bg-surface);
  color: var(--cp-accent);
  border-color: var(--cp-border);
  border-bottom: 1px solid var(--cp-bg-surface);
  box-shadow: 0 -3px 0 0 var(--cp-accent) inset;
}
.crml-portal button,
.crml-portal .crml-btn,
.crml-portal input[type="submit"],
.crml-portal-wrap button,
.crml-portal-wrap .crml-btn,
.crml-portal-wrap input[type="submit"] {
  font-size: 14px;
  box-shadow: var(--cp-shadow-xs);
}
.crml-portal button:hover,
.crml-portal .crml-btn:hover,
.crml-portal input[type="submit"]:hover {
  background: var(--cp-bg-hover);
  border-color: var(--cp-accent);
  color: var(--cp-accent);
  transform: translateY(-1px);
  box-shadow: var(--cp-shadow-sm);
}
.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) {
  background: var(--cp-gradient);
  border: none;
  box-shadow: var(--cp-shadow-accent);
  font-weight: 700;
}
.crml-portal .crml-btn-primary:hover,
.crml-portal button[type="submit"]:not(.crml-btn-secondary):not(.crml-btn-danger):hover {
  transform: translateY(-2px);
  filter: brightness(1.05);
}
.crml-portal input[type="text"],
.crml-portal input[type="email"],
.crml-portal input[type="password"],
.crml-portal input[type="tel"],
.crml-portal input[type="number"],
.crml-portal input[type="date"],
.crml-portal input[type="time"],
.crml-portal input[type="datetime-local"],
.crml-portal input[type="search"],
.crml-portal select,
.crml-portal textarea,
.crml-portal-wrap input[type="text"],
.crml-portal-wrap input[type="email"],
.crml-portal-wrap input[type="password"],
.crml-portal-wrap input[type="tel"],
.crml-portal-wrap input[type="number"],
.crml-portal-wrap input[type="date"],
.crml-portal-wrap select,
.crml-portal-wrap textarea {
  font-size: 14px;
  line-height: 1.5;
  width: 100%;
}
.crml-portal input[type="text"]:where(:not(:focus-visible)),
.crml-portal input[type="email"]:where(:not(:focus-visible)),
.crml-portal input[type="password"]:where(:not(:focus-visible)),
.crml-portal input[type="tel"]:where(:not(:focus-visible)),
.crml-portal input[type="number"]:where(:not(:focus-visible)),
.crml-portal input[type="date"]:where(:not(:focus-visible)),
.crml-portal input[type="time"]:where(:not(:focus-visible)),
.crml-portal input[type="datetime-local"]:where(:not(:focus-visible)),
.crml-portal input[type="search"]:where(:not(:focus-visible)),
.crml-portal select:where(:not(:focus-visible)),
.crml-portal textarea:where(:not(:focus-visible)),
.crml-portal-wrap input[type="text"]:where(:not(:focus-visible)),
.crml-portal-wrap input[type="email"]:where(:not(:focus-visible)),
.crml-portal-wrap input[type="password"]:where(:not(:focus-visible)),
.crml-portal-wrap input[type="tel"]:where(:not(:focus-visible)),
.crml-portal-wrap input[type="number"]:where(:not(:focus-visible)),
.crml-portal-wrap input[type="date"]:where(:not(:focus-visible)),
.crml-portal-wrap select:where(:not(:focus-visible)),
.crml-portal-wrap textarea:where(:not(:focus-visible)) {
  max-width: 100%;
}
.crml-portal textarea,
.crml-portal-wrap textarea {
  min-height: 90px;
}
.crml-portal input:focus,
.crml-portal select:focus,
.crml-portal textarea:focus,
.crml-portal-wrap input:focus,
.crml-portal-wrap select:focus,
.crml-portal-wrap textarea:focus {
  border-color: var(--cp-accent);
  box-shadow: 0 0 0 3px rgba(186,90,135,0.12);
  outline: none;
}
.crml-portal input[type="checkbox"],
.crml-portal input[type="radio"],
.crml-portal-wrap input[type="checkbox"],
.crml-portal-wrap input[type="radio"] {
  accent-color: var(--cp-accent);
  width: 18px;
  height: 18px;
}
.crml-portal label,
.crml-portal-wrap label {
  font-weight: 600;
  font-size: 13px;
  color: var(--cp-text-primary);
  display: block;
  margin-bottom: 6px;
}
.crml-portal .crml-card,
.crml-portal .crml-lesson-card,
.crml-portal .crml-panel,
.crml-portal .crml-note-box,
.crml-portal-wrap .crml-card,
.crml-portal-wrap .crml-lesson-card,
.crml-portal-wrap .crml-panel {
  padding: 20px;
  margin-bottom: 16px;
  transition: all var(--cp-transition);
}
.crml-portal .crml-card:hover,
.crml-portal .crml-lesson-card:hover {
  box-shadow: var(--cp-shadow-md);
  transform: translateY(-2px);
}
.crml-portal .crml-note-box-danger {
  border-left-color: var(--cp-danger);
  background: rgba(239,68,68,0.06);
}
.crml-portal table,
.crml-portal-wrap table {
  margin-bottom: 16px;
}
.crml-portal table tbody td,
.crml-portal-wrap table tbody td {
  border-top: 1px solid var(--cp-border);
}
.crml-portal table tbody tr:hover td,
.crml-portal-wrap table tbody tr:hover td {
  background: var(--cp-bg-subtle);
}
.crml-portal table tbody tr:first-child td,
.crml-portal-wrap table tbody tr:first-child td {
  border-top: none;
}
.crml-portal .crml-badge,
.crml-portal .crml-pill,
.crml-portal-wrap .crml-badge,
.crml-portal-wrap .crml-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.crml-portal .crml-badge-info,
.crml-portal .status-programmata {
  background: rgba(59,130,246,0.12);
  color: var(--cp-info);
}
.crml-portal .crml-badge-success,
.crml-portal .status-presente,
.crml-portal .status-erogata {
  background: rgba(16,185,129,0.12);
  color: var(--cp-success);
}
.crml-portal .crml-badge-warning,
.crml-portal .status-assenza {
  background: rgba(245,158,11,0.12);
  color: var(--cp-warning);
}
.crml-portal .crml-badge-danger,
.crml-portal .status-annullata {
  background: rgba(239,68,68,0.12);
  color: var(--cp-danger);
}
.crml-portal .crml-msg,
.crml-portal .crml-alert,
.crml-portal-wrap .crml-msg {
  margin-bottom: 16px;
}
.crml-portal .crml-chat-wrap {
  background: var(--cp-bg-surface);
  border: 1px solid var(--cp-border);
  border-radius: var(--cp-radius-md);
  box-shadow: var(--cp-shadow-sm);
  overflow: hidden;
}
.crml-portal .crml-chat-msg {
  padding: 10px 14px;
  border-radius: 14px;
  max-width: 80%;
  font-size: 14px;
  line-height: 1.45;
  margin-bottom: 6px;
  box-shadow: var(--cp-shadow-xs);
}
.crml-portal .crml-cal-event,
.crml-portal .fc-event {
  background: var(--cp-gradient);
  border: none;
  color: #fff;
  box-shadow: var(--cp-shadow-xs);
}
.crml-portal *::-webkit-scrollbar,
.crml-portal-wrap *::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
.crml-portal *::-webkit-scrollbar-track,
.crml-portal-wrap *::-webkit-scrollbar-track {
  background: transparent;
}
.crml-portal *::-webkit-scrollbar-thumb,
.crml-portal-wrap *::-webkit-scrollbar-thumb {
  background: var(--cp-border);
  border-radius: 5px;
  border: 2px solid transparent;
  background-clip: content-box;
}
.crml-portal *::-webkit-scrollbar-thumb:hover,
.crml-portal-wrap *::-webkit-scrollbar-thumb:hover {
  background: var(--cp-text-muted);
  background-clip: content-box;
}
.crml-portal > *,
.crml-portal-wrap > * {
  animation: cp-fadeIn .35s ease;
}
@media (max-width: 768px) {
  .crml-portal,
  .crml-portal-wrap {
    margin: 10px;
  }
  .crml-portal:where(:not(:focus-visible)),
  .crml-portal-wrap:where(:not(:focus-visible)) {
    border-radius: var(--cp-radius-md);
  }
  .crml-portal-nav,
  .crml-portal-tabs {
    overflow-x: auto;
    flex-wrap: nowrap;
    -webkit-overflow-scrolling: touch;
  }
  .crml-portal-nav::-webkit-scrollbar,
  .crml-portal-tabs::-webkit-scrollbar {
    display: none;
  }
}
.crml-disp-wrap {
  max-width: 980px;
  margin: 14px 0;
}
.crml-disp-title {
  margin: 0 0 16px;
}
.crml-disp-hint {
  margin-bottom: 16px;
}
.crml-disp-table {
  width: 100%;
  font-size: 13px;
  margin-bottom: 16px;
}
.crml-disp-day {
  font-weight: 600;
}
.crml-disp-inline-form {
  display: inline;
}
.crml-disp-empty {
  text-align: center;
}
.crml-disp-add {
  padding: 16px;
  margin-top: 8px;
}
.crml-disp-add-title {
  margin: 0 0 12px;
}
.crml-disp-add-row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: end;
}
.crml-disp-add-field {
  display: flex;
  flex-direction: column;
}
.crml-progcomp-readonly,
.crml-progcomp-empty {
  white-space: pre-wrap;
  min-height: 40px;
}
.crml-lez-absence-box {
  margin-top: 14px;
}

/* ---- da portal-v2-skin.css ---- */
body.crml-portal-v2 {
  --crml-muted:          #5b5773;
  --crml-muted-soft:     #8f8aa8;
  --crml-primary:        #7c3aed;
  --crml-primary-dark:   #5b21b6;
  --crml-primary-light:  #a78bfa;
  --crml-primary-weak:   rgba(124, 58, 237, .10);
  --crml-primary-mid:    rgba(124, 58, 237, .22);
  --crml-primary-strong: #6d28d9;
  --crml-accent:         #ec4899;
  --crml-accent-soft:    rgba(236, 72, 153, .12);
  --crml-danger:         #ef4444;
  --crml-danger-bg:      rgba(239, 68, 68, .10);
  --crml-danger-border:  rgba(239, 68, 68, .28);
  --crml-danger-soft:    #fee2e2;
  --crml-success:        #10b981;
  --crml-success-soft:   #d1fae5;
  --crml-success-bg:     rgba(16, 185, 129, .10);
  --crml-warning:        #f59e0b;
  --crml-warning-soft:   #fef3c7;
  --crml-warning-bg:     rgba(245, 158, 11, .12);
  --crml-info:           #3b82f6;
  --crml-bg:             #f8f7fc;
  --crml-bg-2:           #f1ecfb;
  --crml-surface:        #ffffff;
  --crml-surface-alt:    #fafaff;
  --crml-border:         #e5e3ed;
  --crml-border-soft:    #f0eef7;
  --crml-text:           #14111e;
  --p2-grad:        linear-gradient(135deg,#6d28d9 0%,#8b5cf6 35%,#ec4899 100%);
  --p2-grad-blue:   linear-gradient(135deg,#7c3aed,#8b5cf6);
  --p2-grad-pink:   linear-gradient(135deg,#ec4899,#f472b6);
  --p2-grad-ok:     linear-gradient(135deg,#059669,#10b981);
  --p2-grad-danger: linear-gradient(135deg,#dc2626,#ef4444);
  --p2-shadow-xs: 0 1px 2px rgba(20,17,30,.05);
  --p2-shadow-sm: 0 2px 4px rgba(20,17,30,.06),0 1px 2px rgba(20,17,30,.04);
  --p2-shadow-md: 0 4px 14px rgba(20,17,30,.07),0 2px 4px rgba(20,17,30,.04);
  --p2-shadow-lg: 0 24px 48px -12px rgba(91,33,182,.22),0 10px 20px -8px rgba(91,33,182,.12);
  font-family: Inter, "Segoe UI", system-ui, -apple-system, sans-serif;
  background: var(--crml-bg);
  -webkit-font-smoothing: antialiased;
}
body.crml-portal-v2::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(1200px 400px at 10% -20%, rgba(124,58,237,.14), transparent 60%),
    radial-gradient(900px 400px at 90% -10%, rgba(236,72,153,.10), transparent 60%);
}
:where(body.crml-portal-v2 > *),
body.crml-portal-v2 .crml-portal-wrap {
  position: relative;
  z-index: 1;
}
body.crml-portal-v2 .crml-portal-wrap {
  max-width: 1280px;
  margin: 0 auto;
  padding: 20px 22px 60px;
}
body.crml-portal-v2 .crml-portal {
  background: transparent;
}
body.crml-portal-v2 .crml-portal-nav,
body.crml-portal-v2 .crml-portal-topnav,
body.crml-portal-v2 [class*="crml-portal-nav"] {
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  backdrop-filter: blur(20px) saturate(160%);
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
body.crml-portal-v2 .crml-portal-nav a,
body.crml-portal-v2 .crml-portal-nav button {
  transition: all .18s;
}
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 {
  position: relative;
  overflow: hidden;
}
body.crml-portal-v2 .crml-card,
body.crml-portal-v2 .crml-panel,
body.crml-portal-v2 [class*="-panel"]:not(.fc-panel):not(.crml-portal-preview-panel) {
  background: var(--crml-surface);
  border: 1px solid var(--crml-border-soft);
  border-radius: 14px;
  box-shadow: var(--p2-shadow-xs);
  transition: box-shadow .22s, border-color .22s;
}
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-family: inherit;
  transition: transform .15s, box-shadow .15s, filter .15s;
  text-decoration: none;
  cursor: pointer;
  line-height: 1.4;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  text-shadow: none;
}
body.crml-portal-v2 .crml-btn:hover,
body.crml-portal-v2 .crml-btn-primary:hover,
body.crml-portal-v2 button.button-primary:hover {
  transform: translateY(-1px);
  filter: brightness(1.05);
}
body.crml-portal-v2 .crml-btn-secondary:hover,
body.crml-portal-v2 .crml-btn-ghost:hover,
body.crml-portal-v2 .crml-btn-outline:hover {
  transform: none;
}
body.crml-portal-v2 .crml-alert-link,
body.crml-portal-v2 .crml-link-sm,
body.crml-portal-v2 a.crml-link {
  text-decoration: none;
  transition: color .15s;
}
body.crml-portal-v2 .crml-status-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
body.crml-portal-v2 .crml-note-box,
body.crml-portal-v2 .crml-info-box,
body.crml-portal-v2 .crml-hint-box {
  padding: 16px 20px;
  line-height: 1.5;
}
body.crml-portal-v2 .crml-portal-wrap table,
body.crml-portal-v2 .widefat,
body.crml-portal-v2 table.crml-table {
  border-spacing: 0;
  background: var(--crml-surface);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: var(--p2-shadow-xs);
  width: 100%;
  border: 1px solid var(--crml-border-soft);
}
body.crml-portal-v2 .crml-portal-wrap table thead th,
body.crml-portal-v2 .widefat thead th {
  background: var(--crml-primary-weak);
  color: var(--crml-primary-dark);
  font-size: 11px;
}
body.crml-portal-v2 .crml-portal-wrap table tbody td,
body.crml-portal-v2 .widefat tbody td {
  font-size: 13px;
}
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-size: 14px;
  transition: border-color .15s, box-shadow .15s;
}
body.crml-portal-v2 .crml-portal-wrap label {
  font-size: 12px;
  font-weight: 600;
  color: var(--crml-muted);
  letter-spacing: .02em;
}
body.crml-portal-v2 .crml-portal-wrap input[type="checkbox"],
body.crml-portal-v2 .crml-portal-wrap input[type="radio"] {
  width: 16px;
  height: 16px;
  cursor: pointer;
}
body.crml-portal-v2 .crml-portal h1,
body.crml-portal-v2 .crml-portal h2,
body.crml-portal-v2 .crml-portal h3,
body.crml-portal-v2 .crml-portal h4,
body.crml-portal-v2 .crml-portal-wrap h1,
body.crml-portal-v2 .crml-portal-wrap h2,
body.crml-portal-v2 .crml-portal-wrap h3,
body.crml-portal-v2 .crml-portal-wrap h4 {
  color: var(--crml-text);
  letter-spacing: -0.015em;
  font-family: inherit;
  line-height: 1.25;
}
body.crml-portal-v2 .crml-portal h1,
body.crml-portal-v2 .crml-portal-wrap h1 {
  font-size: 24px;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin-bottom: 10px;
}
body.crml-portal-v2 .crml-portal h2,
body.crml-portal-v2 .crml-portal-wrap h2 {
  font-size: 19px;
  font-weight: 600;
}
body.crml-portal-v2 .crml-portal h3,
body.crml-portal-v2 .crml-portal-wrap h3 {
  font-size: 16px;
  font-weight: 600;
  margin-bottom: 6px;
}
body.crml-portal-v2 .crml-chat-bubble,
body.crml-portal-v2 .crml-chat-msg,
body.crml-portal-v2 [class*="chat-message"] {
  border-radius: 16px;
}
body.crml-portal-v2 .crml-chat-input,
body.crml-portal-v2 .chat-composer {
  display: flex;
  gap: 6px;
  align-items: center;
}
body.crml-portal-v2 .crml-badge-unread,
body.crml-portal-v2 .crml-unread-count,
body.crml-portal-v2 [class*="unread"] {
  box-shadow: 0 2px 6px rgba(236, 72, 153, .25);
}
body.crml-portal-v2 .crml-modal,
body.crml-portal-v2 .crml-modal-content,
body.crml-portal-v2 [class*="modal-content"] {
  border: 1px solid var(--crml-border-soft);
  background: var(--crml-surface);
}
body.crml-portal-v2 .fc {
  background: var(--crml-surface);
  border-radius: 14px;
  padding: 10px;
  box-shadow: var(--p2-shadow-xs);
  border: 1px solid var(--crml-border-soft);
}
body.crml-portal-v2 .fc-toolbar-title {
  letter-spacing: -0.02em;
}
body.crml-portal-v2 .crml-tabs,
body.crml-portal-v2 [role="tablist"]:not(.role-pills):not(.crml-p2-tabs) {
  margin-bottom: 16px;
  display: flex;
  gap: 0;
  overflow-x: auto;
}
body.crml-portal-v2 .crml-tab,
body.crml-portal-v2 [role="tab"]:not(.role-pill) {
  transition: color .15s, border-color .15s;
  white-space: nowrap;
  font-family: inherit;
  border-top: 0;
  border-left: 0;
  border-right: 0;
  cursor: pointer;
}
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 {
  margin-bottom: 8px;
}
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 {
  transform: translateX(2px);
}
body.crml-portal-v2 [class*="info-line"],
body.crml-portal-v2 .crml-info-banner,
body.crml-portal-v2 .crml-hint-banner {
  line-height: 1.5;
}
body.crml-portal-v2 [class*="portal-header"]:not(.crml-p2-hero),
body.crml-portal-v2 [class*="portal-hero-existing"] {
  background: var(--p2-grad);
  color: #fff;
  border-radius: 20px;
  padding: 24px;
  border: 0;
  box-shadow: 0 14px 36px -10px rgba(109, 40, 217, .35);
}
body.crml-portal-v2 .crml-lezione-card,
body.crml-portal-v2 .crml-lesson-card {
  margin-bottom: 10px;
  transition: all .15s;
}
body.crml-portal-v2 .crml-lezione-card:hover {
  box-shadow: var(--p2-shadow-sm);
}
body.crml-portal-v2 .crml-recupero-card,
body.crml-portal-v2 .crml-recovery-card {
  transition: all .15s;
}
body.crml-portal-v2 .crml-trial-card,
body.crml-portal-v2 [class*="trial-lesson"] {
  position: relative;
  overflow: hidden;
}
body.crml-portal-v2 .crml-pagination,
body.crml-portal-v2 [class*="pagination"] {
  display: flex;
  gap: 4px;
  justify-content: center;
  margin-top: 16px;
}
body.crml-portal-v2 .crml-pagination a,
body.crml-portal-v2 .crml-pagination button {
  min-width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
body.crml-portal-v2 {
  text-rendering: optimizeLegibility;
  font-feature-settings: "cv11", "ss01";
}
body.crml-portal-v2 * {
  scrollbar-width: thin;
  scrollbar-color: var(--crml-primary-mid) transparent;
}
body.crml-portal-v2 *::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}
body.crml-portal-v2 *::-webkit-scrollbar-thumb {
  background: var(--crml-primary-mid);
  border-radius: 4px;
}
body.crml-portal-v2 *::-webkit-scrollbar-thumb:hover {
  background: var(--crml-primary);
}
@media (max-width: 768px) {
  body.crml-portal-v2 .crml-portal-wrap {
    padding: 14px 12px 70px;
  }
  body.crml-portal-v2 .crml-portal h1,
  body.crml-portal-v2 .crml-portal-wrap h1 {
    font-size: 20px;
  }
  body.crml-portal-v2 .crml-btn,
  body.crml-portal-v2 .crml-btn-primary {
    width: 100%;
  }
  body.crml-portal-v2 .crml-btn-sm,
  body.crml-portal-v2 .crml-btn-xs,
  body.crml-portal-v2 .crml-btn-icon {
    width: auto;
  }
  body.crml-portal-v2 .crml-portal-wrap table,
  body.crml-portal-v2 .widefat {
    display: block;
    white-space: nowrap;
  }
}
@media (max-width: 480px) {
  body.crml-portal-v2 .crml-portal h1,
  body.crml-portal-v2 .crml-portal-wrap h1 {
    font-size: 18px;
  }
}
body.crml-portal-v2.crml-theme-glass,
body.crml-portal-v2.crml-theme-dark {
  --crml-bg:          #0d0a18;
  --crml-bg-2:        #140f24;
  --crml-surface:     #1a1530;
  --crml-surface-alt: #21193d;
  --crml-border:      #2d2448;
  --crml-border-soft: #221a3c;
  --crml-text:        #f0ecff;
  --crml-muted:       #b4aad0;
  --crml-muted-soft:  #7d739c;
}
body.crml-portal-v2.crml-theme-glass::before,
body.crml-portal-v2.crml-theme-vivid::before {
  background:
    radial-gradient(1200px 400px at 10% -20%, rgba(139,92,246,.3), transparent 60%),
    radial-gradient(900px 400px at 90% -10%, rgba(236,72,153,.2), transparent 60%);
}

/* ---- ripetuta da portal-guida.css: prima vinceva perche caricata dopo portal-modern.css ---- */
.crml-gd-voicewrap select {
  max-width: min(280px, 70vw);
}
/* <<< 771a BASE EREDITATA */

/* 763a - Componenti di base del portale, spostati da portal-themes.css (sezione comune a tutti i temi):
   valgono per gli elementi che il vestito non veste con classi proprie (pulsanti, campi, tabelle, link). */

/* Card/Panel */
.crml-portal .crml-card,
.crml-portal-wrap .crml-card,
.crml-portal .panel,
.crml-portal-wrap .panel {
  ;
}

body.crml-theme-glass .crml-portal .crml-card,
body.crml-theme-glass .crml-portal-wrap .crml-card {
    backdrop-filter: blur(20px) saturate(140%);
    -webkit-backdrop-filter: blur(20px) saturate(140%);
}

/* Hero */
.crml-portal .crml-hero,
.crml-portal-wrap .crml-hero {
    background: var(--crml-brand-gradient-soft);
    border: 1px solid var(--crml-border);
    border-radius: var(--crml-radius-lg);
    padding: 24px 28px;
    position: relative;
    overflow: hidden;
}

body.crml-theme-vivid .crml-portal .crml-hero,
body.crml-theme-vivid .crml-portal-wrap .crml-hero {
    background: linear-gradient(135deg, #fff 0%, #fef4fc 50%, #f0f9ff 100%);
}
body.crml-theme-vivid .crml-portal .crml-hero::after,
body.crml-theme-vivid .crml-portal-wrap .crml-hero::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    padding: 1.5px;
    background: linear-gradient(135deg, #ff6b9d, #ba5a87, #6a4b9b, #00b4d8);
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    pointer-events: none;
    opacity: .5;
}

/* Nav tabs */
.crml-portal .crml-nav,
.crml-portal-wrap .crml-nav {
    display: flex;
    gap: 4px;
    padding: 6px;
    background: var(--crml-bg-panel);
    border: 1px solid var(--crml-border);
    border-radius: 999px;
    overflow-x: auto;
}
.crml-portal .crml-nav a,
.crml-portal-wrap .crml-nav a {
    padding: 8px 16px;
    border-radius: 999px;
    color: var(--crml-text-muted);
    font-weight: 500;
    font-size: 13px;
    text-decoration: none;
    transition: var(--crml-transition);
    white-space: nowrap;
}
.crml-portal .crml-nav a:hover,
.crml-portal-wrap .crml-nav a:hover {
    color: var(--crml-text);
    background: var(--crml-bg-hover);
}
.crml-portal .crml-nav a.active,
.crml-portal-wrap .crml-nav a.active {
    color: var(--crml-text-on-accent);
    background: var(--crml-brand-gradient);
    font-weight: 600;
    box-shadow: var(--crml-shadow-md);
}

/* Buttons */
.crml-portal button,
.crml-portal .btn,
.crml-portal-wrap button,
.crml-portal-wrap .btn {
    font-family: var(--crml-font-sans);
    background: var(--crml-bg-panel);
    border: 1px solid var(--crml-border);
    border-radius: var(--crml-radius-sm);
    color: var(--crml-text);
    padding: 9px 16px;
    font-weight: 500;
    cursor: pointer;
    transition: var(--crml-transition);
}
.crml-portal button:hover,
.crml-portal-wrap button:hover,
.crml-portal .btn:hover,
.crml-portal-wrap .btn:hover {
    background: var(--crml-bg-hover);
    border-color: var(--crml-accent);
    color: var(--crml-accent);
    transform: translateY(-1px);
}
.crml-portal .btn-primary,
.crml-portal-wrap .btn-primary,
.crml-portal button.primary,
.crml-portal-wrap button.primary {
  border: none;
}
.crml-portal .btn-primary:hover,
.crml-portal-wrap .btn-primary:hover {
    transform: translateY(-2px);
    box-shadow: var(--crml-shadow-lg);
    color: var(--crml-text-on-accent);
}

/* Inputs */
.crml-portal input[type="text"],
.crml-portal input[type="email"],
.crml-portal input[type="password"],
.crml-portal input[type="tel"],
.crml-portal input[type="search"],
.crml-portal input[type="date"],
.crml-portal input[type="time"],
.crml-portal input[type="number"],
.crml-portal select,
.crml-portal textarea,
.crml-portal-wrap input,
.crml-portal-wrap select,
.crml-portal-wrap textarea {
    background: var(--crml-bg-panel);
    border: 1px solid var(--crml-border);
    border-radius: var(--crml-radius-sm);
    color: var(--crml-text);
    padding: 10px 14px;
    font-family: var(--crml-font-sans);
    transition: var(--crml-transition);
    width: 100%;
}
.crml-portal input:focus,
.crml-portal select:focus,
.crml-portal textarea:focus,
.crml-portal-wrap input:focus,
.crml-portal-wrap select:focus,
.crml-portal-wrap textarea:focus {
    outline: none;
    border-color: var(--crml-accent);
    box-shadow: 0 0 0 3px var(--crml-accent-soft);
}

/* Tabelle portale */
.crml-portal table,
.crml-portal-wrap table {
  color: var(--crml-text);
}
.crml-portal table th,
.crml-portal-wrap table th {
  background: var(--crml-bg-subtle);
  padding: 12px 14px;
  border-bottom: 1px solid var(--crml-border);
}
.crml-portal table td,
.crml-portal-wrap table td {
  ;
}
.crml-portal table tbody tr:hover,
.crml-portal-wrap table tbody tr:hover {
    background: var(--crml-bg-hover);
}

/* Links */
.crml-portal a,
.crml-portal-wrap a {
    color: var(--crml-accent);
    transition: color .15s ease;
}
.crml-portal a:hover,
.crml-portal-wrap a:hover {
    color: var(--crml-accent-2);
}

/* Badges */
.crml-portal .badge,
.crml-portal-wrap .badge {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .3px;
}
.crml-portal .badge-ok,
.crml-portal-wrap .badge-ok {
    background: rgba(16, 185, 129, .12);
    color: #10b981;
}
.crml-portal .badge-warn,
.crml-portal-wrap .badge-warn {
    background: rgba(245, 158, 11, .14);
    color: #f59e0b;
}
.crml-portal .badge-info,
.crml-portal-wrap .badge-info {
    background: var(--crml-accent-soft);
    color: var(--crml-accent);
}

.crml-portal.crml-ez {
  --ez-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --ez-ink: #1a0f3e;
  --ez-muted: #57536e;
  --ez-bg: #f6f4f9;
  --ez-surface: #ffffff;
  --ez-line: #e4dfee;
  --ez-line-strong: #c9c2dc;
  --ez-chip: #eeecf3;
  --ez-chip-ink: #3d3957;
  --ez-sede: #0f6a8c;
  --ez-sede-soft: #e3f2f8;
  --ez-sede-deep: #0b4f69;
  --ez-allievi: #6a4b9b;
  --ez-allievi-soft: #eee8f7;
  --ez-allievi-deep: #4f3580;
  --ez-cassa: #a5510d;
  --ez-cassa-soft: #fbeedd;
  --ez-cassa-deep: #6b3306;
  --ez-bacheca: #a3446f;
  --ez-bacheca-soft: #f9e6ef;
  --ez-bacheca-deep: #6e2648;
  --ez-ok: #1b7a4b;
  --ez-ok-soft: #e1f3e9;
  --ez-ok-deep: #12532f;
  --ez-bad: #8c1d18;
  --ez-bad-soft: #fce8e6;
  --ez-bad-deep: #6e1511;
  --ez-r-lg: 22px;
  --ez-r-md: 18px;
  --ez-r-sm: 14px;
  --crml-color-bg-app: #f6f4f9;
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
  padding: 20px 16px 28px;
  border: 0;
  border-radius: var(--ez-r-lg);
  box-shadow: none;
  color: var(--ez-ink);
  font-family: var(--ez-font);
  font-size: 17px;
  line-height: 1.4;
}

.crml-portal.crml-ez svg { flex-shrink: 0; vertical-align: -4px; }
.crml-portal.crml-ez strong { font-weight: 800; }

/* ---------- Testata ---------- */

.crml-portal.crml-ez .crml-ez-hello { min-width: 0; }
.crml-portal.crml-ez .crml-ez-h1 { margin: 0 0 4px; padding: 0; font-family: var(--ez-font); font-size: 28px; font-weight: 800; letter-spacing: -0.02em; line-height: 1.15; color: var(--ez-ink); overflow-wrap: anywhere; }
.crml-portal.crml-ez .crml-ez-muted { color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-top .crml-ez-muted { font-size: 16px; }
.crml-portal.crml-ez .crml-ez-logout { display: inline-flex; align-items: center; gap: 8px; flex-shrink: 0; min-height: 48px; padding: 0 14px; border: 2px solid var(--ez-line); border-radius: 999px; background: var(--ez-surface); font-size: 15px; font-weight: 800; white-space: nowrap; }

/* ---------- Passi ---------- */
.crml-portal.crml-ez .crml-ez-steps { display: flex; gap: 10px; margin-bottom: 20px; }
.crml-portal.crml-ez .crml-ez-step { flex: 1 1 0; min-width: 0; padding: 12px 8px; border: 2px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); text-align: center; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-step.is-done { border-color: var(--ez-ok); background: var(--ez-ok-soft); color: var(--ez-ok-deep); }
.crml-portal.crml-ez .crml-ez-step-n { font-size: 22px; font-weight: 800; line-height: 1.1; }
.crml-portal.crml-ez .crml-ez-step-l { margin-top: 4px; font-size: 14px; font-weight: 800; line-height: 1.2; }

/* ---------- Schede ---------- */
.crml-portal.crml-ez .crml-ez-card { margin-bottom: 14px; padding: 18px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-lg); background: var(--ez-surface); }
.crml-portal.crml-ez .crml-ez-card-head { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
.crml-portal.crml-ez .crml-ez-ic { display: flex; align-items: center; justify-content: center; flex-shrink: 0; width: 54px; height: 54px; border-radius: 18px; color: #fff; }
.crml-portal.crml-ez .crml-ez-ic svg { vertical-align: 0; }
.crml-portal.crml-ez .crml-ez-ic--prova { background: var(--ez-allievi); }
.crml-portal.crml-ez .crml-ez-ic--allievi { background: var(--ez-ok); }
.crml-portal.crml-ez .crml-ez-ic--cassa { background: var(--ez-cassa); }
.crml-portal.crml-ez .crml-ez-ic--sede { background: var(--ez-sede); }
.crml-portal.crml-ez .crml-ez-ic--bacheca { background: var(--ez-bacheca); }
.crml-portal.crml-ez .crml-ez-h3 { margin: 0; font-size: 20px; font-weight: 800; line-height: 1.2; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-h3--sep { margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--ez-line); }
.crml-portal.crml-ez .crml-ez-card > .crml-ez-h3,
.crml-portal.crml-ez #crmlIscrInline > .crml-ez-h3 { margin-bottom: 10px; }
.crml-portal.crml-ez .crml-ez-sub { margin-top: 2px; font-size: 15px; }

/* ---------- Righe (una per lezione di prova) ---------- */
.crml-portal.crml-ez .crml-ez-row { margin-bottom: 10px; padding: 14px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-bg); font-size: 16px; }
.crml-portal.crml-ez .crml-ez-row--wait { border-color: #f0d9b5; background: var(--ez-cassa-soft); }
.crml-portal.crml-ez .crml-ez-row--info { border-color: #c5e3ee; background: var(--ez-sede-soft); }
.crml-portal.crml-ez .crml-ez-row--ok { border-color: #bfe3cf; background: var(--ez-ok-soft); }
.crml-portal.crml-ez .crml-ez-row-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 10px; line-height: 1.35; }
.crml-portal.crml-ez .crml-ez-row-head svg { margin-right: 6px; }
.crml-portal.crml-ez .crml-ez-row-note { margin-top: 10px; font-size: 15px; color: var(--ez-sede-deep); }

.crml-portal.crml-ez .crml-ez-pill { display: inline-flex; align-items: center; padding: 6px 12px; border-radius: 999px; font-size: 14px; font-weight: 800; white-space: nowrap; background: var(--ez-chip); color: var(--ez-chip-ink); }
.crml-portal.crml-ez .crml-ez-pill--ok { background: var(--ez-surface); color: var(--ez-ok-deep); }
.crml-portal.crml-ez .crml-ez-pill--info { background: var(--ez-surface); color: var(--ez-sede-deep); }
.crml-portal.crml-ez .crml-ez-pill--warn { background: var(--ez-surface); color: var(--ez-cassa-deep); }
.crml-portal.crml-ez .crml-ez-pill--pink { background: var(--ez-bacheca-soft); color: var(--ez-bacheca-deep); }
.crml-portal.crml-ez .crml-ez-pill--off { background: var(--ez-chip); color: var(--ez-chip-ink); }

/* ---------- Riquadri dentro una riga ---------- */
.crml-portal.crml-ez .crml-ez-box { margin-top: 12px; padding: 14px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-sm); background: var(--ez-surface); }
.crml-portal.crml-ez .crml-ez-box--info { border-color: #c5e3ee; }
.crml-portal.crml-ez .crml-ez-box--ok { border-color: #bfe3cf; }
.crml-portal.crml-ez .crml-ez-box--wait { border-color: #f0d9b5; background: var(--ez-cassa-soft); }
.crml-portal.crml-ez .crml-ez-box--cta { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }
.crml-portal.crml-ez .crml-ez-box-title { margin-bottom: 10px; font-size: 16px; font-weight: 800; line-height: 1.3 }
.crml-portal.crml-ez .crml-ez-box-tx { min-width: 0; margin-bottom: 10px; font-size: 16px; line-height: 1.4; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-box--cta .crml-ez-box-tx,
.crml-portal.crml-ez .crml-ez-box--ok .crml-ez-box-tx,
.crml-portal.crml-ez .crml-ez-box--wait .crml-ez-box-tx { margin-bottom: 0; }

/* ---------- Pulsanti ---------- */
/* I vecchi fogli del portale forzano con !important sui pulsanti di invio: sfondo
   var(--cp-gradient), testo bianco, ombra var(--cp-shadow-accent), altezza minima 44px.
   Senza !important qui: il colore passa ridefinendo --cp-gradient sul pulsante stesso,
   l'altezza si ottiene col padding, e tutti i pulsanti sono pieni con testo bianco. */
.crml-portal.crml-ez .crml-ez-btn { --cp-shadow-accent: none; display: flex; align-items: center; justify-content: center; gap: 10px; box-sizing: border-box; width: 100%; min-height: 56px; margin: 0; padding: 16px 18px; border: 2px solid transparent; border-radius: var(--ez-r-md); font-family: var(--ez-font); font-size: 17px; font-weight: 800; line-height: 1.2; text-align: center; text-transform: none; letter-spacing: 0; cursor: pointer; box-shadow: none }
.crml-portal.crml-ez .crml-ez-btn svg { vertical-align: 0; }
.crml-portal.crml-ez .crml-ez-btn--ok { --cp-gradient: var(--ez-ok); background: var(--ez-ok); }
.crml-portal.crml-ez .crml-ez-btn--allievi { --cp-gradient: var(--ez-allievi); background: var(--ez-allievi); }
.crml-portal.crml-ez .crml-ez-btn--sede { --cp-gradient: var(--ez-sede) }
.crml-portal.crml-ez .crml-ez-btn--bacheca { --cp-gradient: var(--ez-bacheca); background: var(--ez-bacheca); }
.crml-portal.crml-ez .crml-ez-btn--ink { --cp-gradient: var(--ez-ink); background: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-btn--ghost { --cp-gradient: var(--ez-sede); background: var(--ez-sede); }
.crml-portal.crml-ez .crml-ez-btn--soft { --cp-gradient: var(--ez-muted); background: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-btn--auto { width: auto; flex-shrink: 0; }
.crml-portal.crml-ez .crml-ez-btn:focus-visible,
.crml-portal.crml-ez .crml-ez-logout:focus-visible,
.crml-portal.crml-ez .crml-ez-input:focus-visible { outline: 3px solid var(--ez-sede); outline-offset: 2px; }
/* Su telefono il riquadro va in colonna (regola in linea .crml-tl-cta): niente basi flex in altezza */
.crml-portal.crml-ez .crml-ez-box--cta .crml-ez-box-tx { flex: 1 1 auto; }
.crml-portal.crml-ez .crml-ez-box--cta .crml-ez-btn { width: auto; flex: 0 0 auto; }
.crml-portal.crml-ez .crml-ez-btns { display: flex; flex-wrap: wrap; gap: 10px; }
.crml-portal.crml-ez .crml-ez-form { display: block; margin: 0 0 8px; }
.crml-portal.crml-ez .crml-ez-form--grow { flex: 1 1 200px; margin: 0; }

/* Date alternative: una data per pulsante */
.crml-portal.crml-ez .crml-ez-alt { justify-content: flex-start; text-align: left; }
.crml-portal.crml-ez .crml-ez-alt-n { display: flex; align-items: center; justify-content: center; flex-shrink: 0; width: 32px; height: 32px; border-radius: 50%; background: var(--ez-sede-soft); color: var(--ez-sede-deep); font-size: 16px; font-weight: 800; }
.crml-portal.crml-ez .crml-ez-alt-go { margin-left: auto; padding: 6px 12px; border-radius: 999px; background: var(--ez-ink); color: #fff; font-size: 14px; font-weight: 800; }
.crml-portal.crml-ez .crml-tl-rej > summary { min-height: 48px; font-size: 16px; font-weight: 800; color: var(--ez-cassa-deep); }
.crml-portal.crml-ez .crml-tl-rej-btn { --cp-gradient: var(--ez-bad); --cp-shadow-accent: none; width: 100%; margin-top: 10px; padding: 14px 16px; border: 2px solid transparent; border-radius: var(--ez-r-md); background: var(--ez-bad); color: #fff; font-family: var(--ez-font); font-size: 16px; font-weight: 800; }

/* ---------- Campi ---------- */
.crml-portal.crml-ez .crml-ez-label { display: block; margin-bottom: 6px }
.crml-portal.crml-ez .crml-ez-input { box-sizing: border-box; width: 100% }
.crml-portal.crml-ez .crml-ez-evidence { display: flex; flex-direction: column; gap: 10px; margin-top: 12px; }
.crml-portal.crml-ez .crml-ez-file { max-width: 100%; font-size: 16px; }
.crml-portal.crml-ez .crml-ez-hint { margin-top: 8px; font-size: 15px; color: var(--ez-cassa-deep); }

/* ---------- Avvisi ---------- */
.crml-portal.crml-ez .crml-ez-note { margin-bottom: 14px; padding: 14px 16px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); font-size: 16px; line-height: 1.4 }
.crml-portal.crml-ez .crml-ez-note svg { margin-right: 6px; }
.crml-portal.crml-ez .crml-ez-note--ok { border-color: #bfe3cf; background: var(--ez-ok-soft); color: var(--ez-ok-deep); }
.crml-portal.crml-ez .crml-ez-note--bad { border-color: #f1c4c0; background: var(--ez-bad-soft) }
.crml-portal.crml-ez .crml-ez-note--warn { border-color: #f0d9b5; background: var(--ez-cassa-soft); color: var(--ez-cassa-deep); }
.crml-portal.crml-ez .crml-ez-note--info { border-color: #c5e3ee; background: var(--ez-sede-soft); color: var(--ez-sede-deep); }
.crml-portal.crml-ez .crml-ez-note--pink { border-color: #efc6d8; background: var(--ez-bacheca-soft); color: var(--ez-bacheca-deep); }

/* ---------- Messaggi alla segreteria ---------- */
.crml-portal.crml-ez .crml-ez-chat-form { display: flex; align-items: stretch; gap: 8px; }
.crml-portal.crml-ez .crml-ez-chat-form .crml-ez-input { flex: 1 1 0; width: auto; min-width: 0; }
.crml-portal.crml-ez .crml-ez-chat-msgs { margin-top: 14px; max-height: 320px; overflow-y: auto; }

.crml-portal.crml-ez .crml-ez-msg { display: flex; justify-content: flex-start; margin-bottom: 8px; }
.crml-portal.crml-ez .crml-ez-msg.is-mine { justify-content: flex-end; }
.crml-portal.crml-ez .crml-ez-msg-b { max-width: 82%; padding: 10px 14px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); font-size: 16px; line-height: 1.4; color: var(--ez-ink); overflow-wrap: anywhere; }
.crml-portal.crml-ez .crml-ez-msg.is-mine .crml-ez-msg-b { border-color: transparent; background: var(--ez-bacheca-soft); color: var(--ez-bacheca-deep); }
.crml-portal.crml-ez .crml-ez-msg-meta { margin-bottom: 2px; font-size: 13px; font-weight: 700; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-back { align-items: center; gap: 6px; font-size: 16px; font-weight: 800 }

/* ============================================================================
   Riquadro "Paga con bonifico" (CRML_Portal_Preventivatore::render_iban_pay_box).
   Usato anche nei portali non ancora vestiti: regole autonome, colori scritti per
   esteso, nessuna dipendenza da .crml-portal.crml-ez.
   ============================================================================ */
.crml-iban-paybox.crml-ez-iban { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; }
.crml-iban-paybox.crml-ez-iban > .crml-ez-iban-sum { display: flex; align-items: center; justify-content: center; gap: 10px; box-sizing: border-box; min-height: 56px; padding: 12px 18px; border-radius: 18px; background: #a5510d; color: #fff; font-size: 17px; font-weight: 800; line-height: 1.2; cursor: pointer; }
.crml-iban-paybox.crml-ez-iban > .crml-ez-iban-sum svg { flex-shrink: 0; }
.crml-iban-paybox.crml-ez-iban .crml-ez-iban-body { margin-top: 10px; padding: 14px 16px; border: 1px solid #f0d9b5; border-radius: 18px; background: #fbeedd; }
.crml-iban-paybox.crml-ez-iban .crml-ez-iban-note { margin-bottom: 10px; font-size: 15px; line-height: 1.45; color: #6b3306; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 12px; padding: 10px 0; border-bottom: 1px solid #f0d9b5; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv:last-child { border-bottom: 0; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv-l { flex-shrink: 0; font-size: 15px; font-weight: 700; color: #57536e; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv-r { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px; min-width: 0; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv-v { min-width: 0; font-size: 16px; font-weight: 800; text-align: right; color: #1a0f3e; overflow-wrap: anywhere; }
.crml-iban-paybox.crml-ez-iban .crml-ez-mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .3px; word-break: break-all; }
.crml-iban-paybox.crml-ez-iban .crml-ez-copy { flex: 0 0 auto; padding: 12px 16px; border: 0; border-radius: 14px; background: #1a0f3e; color: #fff; font-size: 15px; font-weight: 800; cursor: pointer; }
/* 752a: riquadro ordinato (dati sempre visibili, righe uguali: etichetta sopra, valore sotto, Copia piccolo a destra) */
.crml-iban-paybox.crml-ez-iban.crml-iban-open .crml-ez-iban-body { margin-top: 0; padding: 2px 16px; background: #fff; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv--line { flex-wrap: nowrap; align-items: center; gap: 12px; padding: 12px 0; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv-t { display: flex; flex-direction: column; gap: 2px; flex: 1 1 auto; min-width: 0; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv--line .crml-ez-kv-l { font-size: 13px; font-weight: 600; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv--line .crml-ez-kv-v { font-size: 16px; font-weight: 700; line-height: 1.35; text-align: left; word-break: normal; overflow-wrap: anywhere; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv--line .crml-ez-mono { font-size: 15px; font-weight: 800; letter-spacing: .4px; }
.crml-iban-paybox.crml-ez-iban .crml-ez-copy--sm { padding: 8px 12px; border: 2px solid #1a0f3e; border-radius: 12px; background: #fff; color: #1a0f3e; font-size: 14px; }
.crml-iban-paybox.crml-ez-iban .crml-ez-iban-foot { margin: 8px 4px 0; font-size: 13px; line-height: 1.4; color: #57536e; }
/* 752a: IBAN e causale in colonna (etichetta sopra, valore a sinistra a tutta larghezza, Copia accanto) */
.crml-iban-paybox.crml-ez-iban .crml-ez-kv--col { display: block; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv--col .crml-ez-kv-l { display: block; margin-bottom: 8px; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv-box { display: flex; align-items: center; gap: 10px; padding: 8px 8px 8px 14px; border: 1px solid #f0d9b5; border-radius: 14px; background: #fff; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv-box--sotto { flex-direction: column; align-items: stretch; padding: 12px 14px; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv-box--sotto .crml-ez-copy { width: 100%; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv-v--col {flex: 1 1 auto; min-width: 0; font-size: 16px; font-weight: 700; line-height: 1.4; text-align: left; word-break: normal; overflow-wrap: anywhere; }
.crml-iban-paybox.crml-ez-iban .crml-ez-kv-v--col.crml-ez-mono { font-weight: 800; letter-spacing: .5px; }

/* ============================================================================
   Moduli incorporati nel portale generico. Hanno classi e foglio propri: qui si
   ridefiniscono colori, raggi e misure. Nessuna modifica al loro PHP.
   ============================================================================ */

/* ---------- Prenota la prova (CRML_Wizard, .crml-lp2): palette tutta a variabili ---------- */
.crml-portal.crml-ez .crml-lp2 {
  --bg-app: #f6f4f9; --bg-cream: #f6f4f9; --bg-pink-soft: #eee8f7; --bg-card: #fff;
  --rose: #6a4b9b; --magenta: #6a4b9b; --bordeaux: #4f3580; --gold: #a5510d; --gold-soft: #a5510d;
  --ink-900: #1a0f3e; --ink-800: #1a0f3e; --ink-700: #3d3957; --ink-500: #57536e;
  --ink-400: #77738f; --ink-300: #c9c2dc; --ink-200: #d9d2e8; --ink-100: #e4dfee; --ink-50: #f6f4f9;
  --shadow-sm: none; --shadow-md: none; --shadow-lg: none; --shadow-glow: none;
  font-family: var(--ez-font);
  line-height: 1.4;
}

.crml-portal.crml-ez .crml-lp2 .crml-lp2-fld label { font-size: 15px; font-weight: 700; text-transform: none; letter-spacing: 0; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-lp2 .crml-lp2-input,
.crml-portal.crml-ez .crml-lp2 .crml-lp2-select,
.crml-portal.crml-ez .crml-lp2 .crml-lp2-textarea { padding: 14px; border-width: 2px; border-radius: var(--ez-r-sm); font-size: 17px; }
.crml-portal.crml-ez .crml-lp2 .crml-lp2-bfor-opt { min-height: 56px; border-radius: var(--ez-r-md) }
.crml-portal.crml-ez .crml-lp2 .crml-lp2-priv { border-radius: var(--ez-r-sm); font-size: 15px; }
.crml-portal.crml-ez .crml-lp2 .crml-lp2-submit,
.crml-portal.crml-ez .crml-lp2 .crml-lp2-cta-pri,
.crml-portal.crml-ez .crml-lp2 .crml-lp2-sticky { --cp-gradient: var(--ez-allievi); --cp-shadow-accent: none; border-radius: var(--ez-r-md); background: var(--ez-allievi); font-size: 17px; font-weight: 800; letter-spacing: 0; box-shadow: none; }
.crml-portal.crml-ez .crml-lp2 .crml-lp2-submit { padding-top: 16px; padding-bottom: 16px; }

/* ---------- Scegli il pacchetto (CRML_Portal_Preventivatore, .crml-prev-*) ---------- */
.crml-portal.crml-ez .crml-prev-wrap { --crml-color-brand-500: #a5510d; --crml-color-brand-50: #fbeedd; font-family: var(--ez-font); color: var(--ez-ink); }
/* Testate dei moduli su fondo chiaro: i vecchi fogli forzano i titoli scuri, su fondo pieno non si leggerebbero */
.crml-portal.crml-ez .crml-prev-hero { padding: 18px; border: 1px solid #f0d9b5; border-radius: var(--ez-r-lg); background: var(--ez-cassa-soft); color: var(--ez-cassa-deep); }

.crml-portal.crml-ez .crml-prev-subtitle { font-size: 15px; }
.crml-portal.crml-ez .crml-prev-section { padding: 16px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); box-shadow: none; }
.crml-portal.crml-ez .crml-prev-section-label { font-size: 18px; font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-prev-step-badge { width: 32px; height: 32px; font-size: 16px; font-weight: 800; }
.crml-portal.crml-ez .crml-prev-corso-btn { min-height: 56px; border-color: var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-bg); color: var(--ez-ink); }
.crml-portal.crml-ez .crml-prev-corso-btn.is-active { border-color: var(--ez-cassa); background: var(--ez-cassa); color: #fff; }
.crml-portal.crml-ez .crml-prev-corso-name { font-size: 15px; font-weight: 800; }
.crml-portal.crml-ez .crml-prev-corso-tipo { font-size: 13px; }
.crml-portal.crml-ez .crml-prev-filter-label { font-size: 15px; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-prev-filter { min-height: 44px; padding: 8px 16px; border: 0; border-radius: 999px; background: var(--ez-chip); color: var(--ez-chip-ink); font-size: 15px; font-weight: 800; }
.crml-portal.crml-ez .crml-prev-filter.is-active { background: var(--ez-ink); color: #fff; }
.crml-portal.crml-ez .crml-prev-pkg-card { border-color: var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); box-shadow: none; }
.crml-portal.crml-ez .crml-prev-pkg-card.is-selected { border-color: var(--ez-cassa); background: var(--ez-cassa-soft); }
.crml-portal.crml-ez .crml-prev-pkg-name { font-size: 17px; font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-prev-pkg-lezioni { font-size: 15px; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-prev-pkg-price { font-size: 26px; font-weight: 800; color: var(--ez-cassa-deep); }
.crml-portal.crml-ez .crml-prev-pkg-card.is-selected .crml-prev-pkg-price { color: var(--ez-cassa-deep); }
.crml-portal.crml-ez .crml-prev-pkg-price-sub { font-size: 14px; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-prev-riepilogo { border: 1px solid #f0d9b5; border-radius: var(--ez-r-md); background: var(--ez-cassa-soft); }
.crml-portal.crml-ez .crml-prev-riepilogo-title { font-size: 18px; font-weight: 800; color: var(--ez-cassa-deep); }
.crml-portal.crml-ez .crml-prev-riepilogo-row { border-bottom-color: #f0d9b5; font-size: 16px; }
.crml-portal.crml-ez .crml-prev-riepilogo-row.is-total { border-top-color: var(--ez-cassa); font-size: 19px; color: var(--ez-cassa-deep); }
.crml-portal.crml-ez .crml-prev-info-box { border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-bg); }
.crml-portal.crml-ez .crml-prev-info-title { font-size: 16px; font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-prev-info-list { font-size: 15px; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-prev-form-wrap { border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-bg); }
.crml-portal.crml-ez .crml-prev-form-title { font-size: 18px; font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-prev-form-sub { font-size: 15px }

.crml-portal.crml-ez .crml-prev-wrap .crml-btn { --cp-gradient: var(--ez-cassa); --cp-shadow-accent: none }
.crml-portal.crml-ez .crml-prev-feedback { border-radius: var(--ez-r-sm); font-size: 16px; }

/* ---------- Modulo di iscrizione (CRML_Iscrizione_Form, .crml-iscr-*) ---------- */
.crml-portal.crml-ez .crml-iscr-wrap { font-family: var(--ez-font); color: var(--ez-ink); }
.crml-portal.crml-ez .crml-iscr-header { padding: 18px; border: 1px solid #bfe3cf; border-radius: var(--ez-r-lg); background: var(--ez-ok-soft); color: var(--ez-ok-deep); }
.crml-portal.crml-ez .crml-iscr-header p { font-size: 15px; opacity: 1 }
.crml-portal.crml-ez .crml-iscr-progress .bar { height: 8px; border-radius: 999px; background: var(--ez-line); }
.crml-portal.crml-ez .crml-iscr-progress .bar.active { background: var(--ez-ok); }
.crml-portal.crml-ez .crml-iscr-counter { color: var(--ez-muted) }
.crml-portal.crml-ez .crml-iscr-counter strong { color: var(--ez-ok-deep); }
.crml-portal.crml-ez .crml-iscr-sec { padding: 16px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); }
.crml-portal.crml-ez .crml-iscr-sec.bank { border: 1px dashed var(--ez-line-strong); background: var(--ez-bg); }
.crml-portal.crml-ez .crml-iscr-title { padding-bottom: 10px; border-bottom: 1px solid var(--ez-line); font-size: 18px; font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-iscr-info { padding: 12px 14px; border-radius: var(--ez-r-sm); font-size: 15px; line-height: 1.4; }

.crml-portal.crml-ez .crml-iscr-fld input,
.crml-portal.crml-ez .crml-iscr-fld select { padding: 14px; font-size: 17px; }
.crml-portal.crml-ez .crml-iscr-fld .hint { font-size: 14px; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-iscr-fld .cf-ok,
.crml-portal.crml-ez .crml-iscr-fld .cf-err { font-size: 14px; }
.crml-portal.crml-ez .crml-iscr-radio label { min-height: 56px; border-color: var(--ez-line); border-radius: var(--ez-r-md) }
.crml-portal.crml-ez .crml-iscr-radio label.sel { border-color: var(--ez-ok); background: var(--ez-ok-soft) }
.crml-portal.crml-ez .crml-iscr-btn { --cp-shadow-accent: none; padding: 16px 18px; border-radius: var(--ez-r-md); font-family: var(--ez-font); font-size: 17px; font-weight: 800; box-shadow: none; }
.crml-portal.crml-ez .crml-iscr-btn.primary { --cp-gradient: var(--ez-ok); background: var(--ez-ok); color: #fff; }
.crml-portal.crml-ez .crml-iscr-btn.secondary { --cp-gradient: var(--ez-muted); background: var(--ez-chip); color: var(--ez-ink); }
.crml-portal.crml-ez .crml-iscr-btn.submit { --cp-gradient: var(--ez-ok) }
.crml-portal.crml-ez .crml-iscr-confirm { border-color: var(--ez-ok); border-radius: var(--ez-r-md); background: var(--ez-ok-soft); }

/* ============================================================================
   Guscio dei portali allievo e maestro (CRML_Portal_App::render): intestazione,
   messaggio, menu. Le classi sono quelle di sempre (contratto SPA): qui solo
   colori, misure e forma; niente display/position sui selettori del contratto.
   ============================================================================ */
.crml-portal.crml-ez.crml-ez-app { max-width: 760px; }
/* L'intestazione interna (.crml-portal-header) sul sito e nascosta dalla testata unica: non si veste. */
.crml-portal.crml-ez .crml-flash { margin-bottom: 14px; padding: 14px 16px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); font-size: 16px; font-weight: 700; line-height: 1.4; color: var(--ez-ink); box-shadow: none; }
.crml-portal.crml-ez .crml-flash-success { border-color: #bfe3cf; background: var(--ez-ok-soft); color: var(--ez-ok-deep); }
.crml-portal.crml-ez .crml-flash-error { border-color: #f1c4c0; background: var(--ez-bad-soft); color: var(--ez-bad-deep); }
.crml-portal.crml-ez .crml-flash-warning { border-color: #f0d9b5; background: var(--ez-cassa-soft); color: var(--ez-cassa-deep); }
.crml-portal.crml-ez .crml-flash-info { border-color: #c5e3ee; background: var(--ez-sede-soft); color: var(--ez-sede-deep); }

/* ---------- Menu ----------
   Le classi di sempre (.crml-home-quick-link/-icon/-label) restano perche le leggono la barra
   in basso e la ricerca rapida; i vecchi fogli pero ne forzano con !important sfondo
   (variabile --crml-card), colore (variabili --crml-quick-card-fg e --crml-text), direzione,
   altezza minima e misura del testo. Qui: variabili ridefinite sulla voce, griglia al posto
   di flex, altezza esplicita, e testo/icona negli involucri crml-ez-nav-tx / crml-ez-nav-ic. */
/* Due colonne e distanza dette anche qui: oggi le forzano i vecchi fogli, domani non ci saranno piu
   (prova "senza rete" del 05/10/2026: senza questa riga il menu andava su tre colonne e tagliava i nomi). */
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid { margin: 12px 0 18px }
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav { --crml-card: #ffffff; --crml-card2: var(--crml-card); background: var(--crml-card); --crml-quick-card-fg: #1a0f3e; --crml-text: #1a0f3e; --ez-nav-soft: var(--ez-allievi-soft); --ez-nav-fg: var(--ez-allievi); display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 8px; height: 64px; border: 1px solid var(--ez-line); box-shadow: none; transform: none; text-align: left; }
.crml-portal.crml-ez .crml-ez-nav .crml-home-quick-icon { margin: 0; padding: 0; background: none; line-height: 1; }
.crml-portal.crml-ez .crml-ez-nav-ic { display: flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: 50%; background: var(--ez-nav-soft); color: var(--ez-nav-fg); font-size: 20px; }
.crml-portal.crml-ez .crml-ez-nav-ic svg { vertical-align: 0; }
.crml-portal.crml-ez .crml-ez-nav .crml-home-quick-label { min-width: 0; line-height: 1.2; text-align: left; }
.crml-portal.crml-ez .crml-ez-nav-tx { font-family: var(--ez-font); font-size: 14px; font-weight: 800; line-height: 1.2; overflow-wrap: normal; word-break: normal; }
.crml-portal.crml-ez .crml-ez-nav .crml-home-quick-badge { position: static; min-width: 26px; margin: 0; padding: 3px 8px; border-radius: 999px; background: var(--ez-bacheca); color: #fff; font-size: 14px; font-weight: 800; text-align: center; }
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav.is-active { --crml-card: #eeecf3; border: 2px solid var(--ez-ink); }
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--home,
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--guida,
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--regolamento,
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--moduli { --ez-nav-soft: var(--ez-chip); --ez-nav-fg: var(--ez-chip-ink); }
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--calendar,
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--sale,
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--disponibilita,
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--preferenze_orario,
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--chiusura,
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--telecomando { --ez-nav-soft: var(--ez-sede-soft); --ez-nav-fg: var(--ez-sede); }
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--pagamenti { --ez-nav-soft: var(--ez-cassa-soft); --ez-nav-fg: var(--ez-cassa); }
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--comunicazioni,
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--preferenze_notifiche,
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--informazioni,
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--saggi,
.crml-portal-wrap .crml-portal.crml-ez a.crml-home-quick-link.crml-ez-nav--assenze { --ez-nav-soft: var(--ez-bacheca-soft); --ez-nav-fg: var(--ez-bacheca); }

/* In home le quattro sezioni principali sono riquadri colorati, come in Staff Easy */
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--calendar,
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--registro,
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--pagamenti,
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--comunicazioni { --crml-quick-card-fg: #ffffff; --crml-text: #ffffff; --ez-nav-soft: rgba(255, 255, 255, .18); --ez-nav-fg: #ffffff; order: -1; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: auto 1fr; align-items: start; height: 128px; border-color: transparent; }
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--calendar { --crml-card: #0f6a8c; }
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--registro { --crml-card: #6a4b9b; }
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--pagamenti { --crml-card: #a5510d; }
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--comunicazioni { --crml-card: #a3446f; }
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--calendar .crml-home-quick-label,
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--registro .crml-home-quick-label,
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--pagamenti .crml-home-quick-label,
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--comunicazioni .crml-home-quick-label { grid-column: 1 / -1; grid-row: 2; align-self: end; }
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--calendar .crml-ez-nav-ic,
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--registro .crml-ez-nav-ic,
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--pagamenti .crml-ez-nav-ic,
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--comunicazioni .crml-ez-nav-ic { width: 50px; height: 50px; border-radius: 16px; }
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--calendar .crml-ez-nav-tx,
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--registro .crml-ez-nav-tx,
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--pagamenti .crml-ez-nav-tx,
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--comunicazioni .crml-ez-nav-tx { font-size: 20px; }
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:not(.is-inner) a.crml-ez-nav--comunicazioni .crml-home-quick-badge { grid-column: 2; grid-row: 1; background: #fff; color: var(--ez-bacheca-deep); }

/* ---------- Home (CRML_Portal_Home_V2, .crml-p2): palette tutta a variabili ---------- */
html body .crml-portal.crml-ez .crml-p2 {
  --p2-brand-50: #eee8f7; --p2-brand-100: #e4dbf3; --p2-brand-200: #d3c6ea; --p2-brand-300: #b8a5da;
  --p2-brand-400: #8f74bd; --p2-brand-500: #6a4b9b; --p2-brand-600: #5b3f8a; --p2-brand-700: #4f3580; --p2-brand-800: #3f2a68;
  --p2-accent: #a3446f; --p2-accent-2: #c06a92;
  --p2-success: #1b7a4b; --p2-warning: #a5510d; --p2-danger: #8c1d18; --p2-info: #0f6a8c;
  --p2-bg: #f6f4f9; --p2-bg-2: #eeecf3; --p2-surface: #ffffff; --p2-surface-2: #f6f4f9;
  --p2-border: #e4dfee; --p2-border-soft: #eeecf3;
  --p2-text: #1a0f3e; --p2-text-muted: #57536e; --p2-text-dim: #77738f;
  --p2-shadow-xs: none; --p2-shadow-sm: none; --p2-shadow-md: none; --p2-shadow-lg: none;
  --p2-radius-sm: 14px; --p2-radius: 18px; --p2-radius-lg: 22px;
  --p2-grad-hero: #4f3580; --p2-grad-glow: none;
  font-family: var(--ez-font);
  font-size: 16px;
}

@media (max-width: 380px) {
  .crml-portal.crml-ez { padding-left: 12px; padding-right: 12px; }
  .crml-portal.crml-ez .crml-ez-h1 { font-size: 25px; }
  .crml-portal.crml-ez .crml-ez-card { padding: 14px; }
  .crml-portal.crml-ez .crml-ez-ic { width: 48px; height: 48px; border-radius: 16px; }
}

/* ============================================================================
   PAGINE INTERNE (682a) - mattoni comuni usati dalle pagine vestite con $sx
   (CRML_Portal_App::ez_sx): Lezioni prova del maestro, Saggi, ...
   ============================================================================ */
.crml-portal.crml-ez .crml-ez-pg { max-width: min(980px, 100%); margin: 14px 0; }
.crml-portal.crml-ez .crml-ez-mb { margin-bottom: 14px; }
.crml-portal.crml-ez .crml-ez-w100 { box-sizing: border-box; width: 100%; }
.crml-portal.crml-ez .crml-ez-hide { display: none; }
.crml-portal.crml-ez .crml-ez-grow { flex: 1 1 0; min-width: 0; }
.crml-portal.crml-ez .crml-ez-ok { color: var(--ez-ok-deep); }
.crml-portal.crml-ez .crml-ez-h2 { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; }
.crml-portal.crml-ez .crml-ez-list { display: flex; flex-direction: column; gap: 12px; }
.crml-portal.crml-ez .crml-ez-empty { padding: 28px 18px; text-align: center; }
.crml-portal.crml-ez .crml-ez-empty-ic { margin-bottom: 10px; font-size: 40px; line-height: 1 }
.crml-portal.crml-ez .crml-ez-tr { padding: 16px; }
.crml-portal.crml-ez .crml-ez-meta { display: flex; flex-wrap: wrap; gap: 6px 16px; color: var(--ez-ink) }
.crml-portal.crml-ez .crml-ez-meta-i { display: inline-flex; align-items: center; gap: 6px; }
.crml-portal.crml-ez .crml-ez-pill--wrap { white-space: normal; font-weight: 400; }
.crml-portal.crml-ez .crml-ez-pill--wrap strong { margin: 0 4px; font-weight: 800; }
.crml-portal.crml-ez .crml-ez-count { margin-left: 6px; font-weight: 800; }
.crml-portal.crml-ez .crml-ez-tag--warn { background: var(--ez-cassa-soft); color: var(--ez-cassa-deep); }
.crml-portal.crml-ez .crml-ez-tag--info { background: var(--ez-sede-soft); color: var(--ez-sede-deep); }
.crml-portal.crml-ez .crml-ez-tag--ok { background: var(--ez-ok-soft); color: var(--ez-ok-deep); }
.crml-portal.crml-ez .crml-ez-tag--bad { background: var(--ez-bad-soft); color: var(--ez-bad-deep); }
.crml-portal.crml-ez .crml-ez-tag--pink { background: var(--ez-bacheca-soft); color: var(--ez-bacheca-deep); }
.crml-portal.crml-ez .crml-ez-tag--off { background: var(--ez-chip); color: var(--ez-chip-ink); }
.crml-portal.crml-ez .crml-ez-btn--bad { --cp-gradient: var(--ez-bad); background: var(--ez-bad); }
.crml-portal.crml-ez .crml-ez-fields { display: flex; flex-direction: column; gap: 12px; margin-bottom: 12px; }
.crml-portal.crml-ez .crml-ez-check { display: flex; align-items: center; gap: 10px; min-height: 48px; margin-bottom: 10px; cursor: pointer }
.crml-portal.crml-ez .crml-ez-check input { flex: none }
.crml-portal.crml-ez .crml-ez-note.crml-ez-w100 { margin-bottom: 0; }

/* ---------- Saggi (allievo e maestro) ---------- */
.crml-portal.crml-ez .crml-ez-mt { margin-top: 10px; }
.crml-portal.crml-ez .crml-ez-strong { font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-sg-card { margin: 14px 0; padding: 0; overflow: hidden; }
.crml-portal.crml-ez .crml-ez-sg-card.crml-ez-tr { padding: 16px; }
.crml-portal.crml-ez .crml-ez-sg-hero { padding: 16px; background: var(--ez-ink) }
.crml-portal.crml-ez .crml-ez-sg-title { flex: 1 1 180px; min-width: 0; font-size: 20px; font-weight: 800; line-height: 1.2 }
.crml-portal.crml-ez .crml-ez-sg-metas { display: flex; flex-wrap: wrap; gap: 4px 14px; }
.crml-portal.crml-ez .crml-ez-sg-meta { font-size: 15px }
.crml-portal.crml-ez .crml-ez-pill--glass { background: rgba(255, 255, 255, .2) }
.crml-portal.crml-ez .crml-ez-sg-cta { display: inline-flex; align-items: center; gap: 8px; min-height: 48px; padding: 10px 16px; border-radius: var(--ez-r-md); background: #fff; font-size: 15px; font-weight: 800; }
.crml-portal.crml-ez .crml-ez-kpis { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.crml-portal.crml-ez .crml-ez-details { padding: 0; }
.crml-portal.crml-ez .crml-ez-summary { min-height: 48px; padding: 12px 14px; font-size: 16px; font-weight: 800; cursor: pointer }
.crml-portal.crml-ez .crml-ez-details-b { padding: 14px; border-top: 1px solid var(--ez-line); }
.crml-portal.crml-ez .crml-ez-tag--ink { background: var(--ez-ink); color: #fff; }

/* ---------- Icone al posto delle emoji (CRML_Portal_App::ez_icons) ---------- */
.crml-portal.crml-ez .crml-ez-emo { display: inline-flex; align-items: center; justify-content: center; vertical-align: -0.18em; margin-right: 0.15em; line-height: 1; }
.crml-portal.crml-ez .crml-ez-emo svg { width: 1.15em; height: 1.15em; }

/* ---------- Ingresso del genitore (CRML_Portal_Genitori): pagina "I tuoi figli" ---------- */
.crml-portal.crml-ez .crml-ez-linkbtn { display: inline-flex; align-items: center; gap: 8px; min-height: 48px; padding: 10px 16px; border: 2px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); font-size: 15px; font-weight: 800; }
.crml-portal.crml-ez .crml-ez-kid { display: block; }
.crml-portal.crml-ez .crml-ez-kid-av { font-size: 22px; font-weight: 800; }
.crml-portal.crml-ez .crml-ez-kid-go { font-size: 22px; color: var(--ez-allievi-deep); }
.crml-portal.crml-ez .crml-ez-kid-next { padding-top: 14px; border-top: 1px solid var(--ez-line); }
.crml-portal.crml-ez .crml-ez-kid .crml-ez-meta { margin: 6px 0; font-size: 15px; font-weight: 400; }

/* ============================================================================
   CHI NON E CONNESSO (CRML_Portal_Shortcodes::render_visitor_portal, .cv-*)
   La pagina stampa un proprio foglio: qui lo supera la specificita, senza forzature.
   ============================================================================ */
.crml-portal.crml-ez.crml-ez-visitor { padding: 16px 16px 60px; font-family: var(--ez-font); color: var(--ez-ink); }
.crml-portal.crml-ez.crml-ez-visitor .cv-hero { margin-bottom: 14px; padding: 28px 20px; border-radius: var(--ez-r-lg); background: var(--ez-allievi); box-shadow: none; }
.crml-portal.crml-ez.crml-ez-visitor .cv-hero::before,
.crml-portal.crml-ez.crml-ez-visitor .cv-cta-register::before { content: none; }
.crml-portal.crml-ez.crml-ez-visitor .cv-eyebrow { padding: 6px 14px; font-size: 14px; font-weight: 800; }
.crml-portal.crml-ez.crml-ez-visitor .cv-hero h1 { line-height: 1.2 }
.crml-portal.crml-ez.crml-ez-visitor .cv-hero p { font-size: 16px; }
.crml-portal.crml-ez.crml-ez-visitor .cv-card { margin-bottom: 14px; padding: 18px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-lg); box-shadow: none; font-size: 16px; }
.crml-portal.crml-ez.crml-ez-visitor .cv-success-card { margin-bottom: 14px; padding: 24px 18px; border: 1px solid #bfe3cf; border-radius: var(--ez-r-lg); background: var(--ez-ok-soft); box-shadow: none; }
.crml-portal.crml-ez.crml-ez-visitor .cv-success-icon { font-size: 44px; color: var(--ez-ok-deep); }

.crml-portal.crml-ez.crml-ez-visitor .cv-success-card p { font-size: 16px; color: var(--ez-ok-deep); }
.crml-portal.crml-ez.crml-ez-visitor .cv-cta-register { margin-bottom: 14px; padding: 24px 18px; border-radius: var(--ez-r-lg); background: var(--ez-ink); }
.crml-portal.crml-ez.crml-ez-visitor .cv-cta-register h2 { line-height: 1.2 }
.crml-portal.crml-ez.crml-ez-visitor .cv-cta-register .cv-sub { font-size: 16px; }
.crml-portal.crml-ez.crml-ez-visitor .cv-benefits { grid-template-columns: 1fr; gap: 10px; }
.crml-portal.crml-ez.crml-ez-visitor .cv-benefit { border-radius: var(--ez-r-md); }
.crml-portal.crml-ez.crml-ez-visitor .cv-benefit-icon { border-radius: var(--ez-r-sm); color: #fff; }
.crml-portal.crml-ez.crml-ez-visitor .cv-benefit-text strong { font-size: 16px; }
.crml-portal.crml-ez.crml-ez-visitor .cv-benefit-text span { font-size: 15px; }
.crml-portal.crml-ez.crml-ez-visitor .cv-btn { min-height: 52px; padding: 14px 18px; border-radius: var(--ez-r-md); font-size: 16px; font-weight: 800; box-shadow: none; }
.crml-portal.crml-ez.crml-ez-visitor .cv-btn-primary { background: var(--ez-allievi); }
.crml-portal.crml-ez.crml-ez-visitor .cv-skip-note { font-size: 15px; }

/* ---------- Scaletta del saggio: finestra di modifica di un brano (portal-scaletta.js la mette in fondo
   alla pagina, fuori dal portale: regole proprie, questo foglio si carica solo a vestito easy) ---------- */
body .cs-sheet-overlay .cs-sheet { border-radius: 22px 22px 0 0; }
body .cs-sheet-overlay .cs-sheet h3 { font-size: 20px; font-weight: 800; color: #1a0f3e; }
body .cs-sheet-overlay .cs-sheet h3 svg { color: #6a4b9b; }
body .cs-sheet-overlay .cs-flbl { font-size: 15px; font-weight: 700; color: #1a0f3e; }
body .cs-sheet-overlay .cs-input { box-sizing: border-box; max-width: 100%; min-height: 52px; padding: 12px 14px; border: 2px solid #d9d2e8; border-radius: 14px; font-size: 17px; color: #1a0f3e; }
body .cs-sheet-overlay .cs-durhint { font-size: 14px; }
body .cs-sheet-overlay .cs-seg button { min-height: 48px; border-radius: 14px; font-size: 15px; font-weight: 800; }
body .cs-sheet-overlay .cs-seg button.on,
body .cs-sheet-overlay .cs-allievo.on { border-color: #6a4b9b; background: #eee8f7; color: #4f3580; }
body .cs-sheet-overlay .cs-allievo { min-height: 48px; border-radius: 14px; font-size: 16px; }
body .cs-sheet-overlay .cs-allievo input { accent-color: #6a4b9b; }
body .cs-sheet-overlay .cs-btn-prim { min-height: 52px; border-radius: 18px; background: #6a4b9b; font-size: 16px; font-weight: 800; }
body .cs-sheet-overlay .cs-btn-ghost { min-height: 52px; border: 2px solid #1a0f3e; border-radius: 18px; color: #1a0f3e; font-size: 16px; font-weight: 800; }
body .cs-sheet-overlay .cs-btn-danger { min-height: 52px; border-radius: 18px; font-size: 16px; font-weight: 800; }

/* ---------- Schermo largo (682a): nelle pagine interne il menu sta su quattro colonne, cosi il contenuto
   non finisce in fondo. Il numero di colonne passa da --ez-nav-cols (lo legge il foglio di transizione). ---------- */
@media (min-width: 720px) {
  .crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid.is-inner { --ez-nav-cols: 4; }
  /* a quattro colonne il numero dei non letti sta sull'angolo, senza coprire il nome della voce */
  .crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid.is-inner a.crml-ez-nav { position: relative; }
  .crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid.is-inner a.crml-ez-nav .crml-home-quick-badge { position: absolute; top: -6px; right: -4px; }
}

/* ============================================================================
   GUIDA AL PORTALE (CRML_Portal_Guida, assets/portal/portal-guida.css, .crml-gd-*)
   Il foglio della guida e tutto a token: qui si ridefiniscono i token e le forme,
   cosi anche il portale disegnato in miniatura prende i colori del vestito.
   ============================================================================ */
.crml-portal.crml-ez.crml-gd {
  --crml-color-brand-50: var(--ez-allievi-soft); --crml-color-brand-300: #b9a5d8; --crml-color-brand-500: var(--ez-allievi);
  --crml-color-brand-600: var(--ez-allievi-deep); --crml-color-brand-700: var(--ez-allievi-deep); --crml-color-brand-gradient: var(--ez-allievi);
  --crml-color-bg-surface: var(--ez-surface); --crml-color-bg-subtle: var(--ez-bg); --crml-color-bg-hover: var(--ez-chip);
  --crml-color-border-subtle: var(--ez-line); --crml-color-border-base: #d9d2e8; --crml-color-neutral-300: #d9d2e8;
  --crml-color-fg-default: var(--ez-ink); --crml-color-fg-strong: var(--ez-ink); --crml-color-fg-muted: var(--ez-muted); --crml-color-fg-faint: var(--ez-muted); --crml-color-fg-on-brand: #ffffff;
  --crml-color-warning: var(--ez-cassa); --crml-color-warning-bg: var(--ez-cassa-soft); --crml-color-warning-fg: var(--ez-cassa-deep);
  --crml-color-success: var(--ez-ok); --crml-color-success-bg: var(--ez-ok-soft); --crml-color-success-fg: var(--ez-ok-deep); --crml-color-info: var(--ez-sede);
  --gd-radius: 18px;
  font-family: var(--ez-font);
}

.crml-portal.crml-ez.crml-gd .crml-gd-sub,
.crml-portal.crml-ez.crml-gd .crml-gd-narr { font-size: 16px }

.crml-portal.crml-ez.crml-gd .crml-gd-points li { font-size: 16px; }
.crml-portal.crml-ez.crml-gd .crml-gd-btn { min-height: 52px; font-size: 16px; font-weight: 800 }
.crml-portal.crml-ez.crml-gd .crml-gd-track { min-height: 44px; border-radius: 999px; font-size: 15px; font-weight: 800; }
.crml-portal.crml-ez.crml-gd .crml-gd-mock { border-radius: var(--ez-r-lg); box-shadow: none; }
.crml-portal.crml-ez.crml-gd .crml-gd-mock-navi { border-radius: var(--ez-r-sm); }
.crml-portal.crml-ez.crml-gd .crml-gd-mk-card,
.crml-portal.crml-ez.crml-gd .crml-gd-mk-kpi,
.crml-portal.crml-ez.crml-gd .crml-gd-mk-hero { border-radius: var(--ez-r-sm); box-shadow: none; }
.crml-portal.crml-ez.crml-gd .crml-gd-mk-btn,
.crml-portal.crml-ez.crml-gd .crml-gd-mk-tab { border-radius: 999px; }

/* ---------- Chat su telefono: la conversazione aperta viene spostata a tutto schermo in fondo alla pagina
   (.crml-chat-fs-host), fuori dal portale: regole proprie, questo foglio si carica solo a vestito easy ---------- */
body .crml-chat-fs-host .crml-chat-topbar { border-color: #e4dfee; }
body .crml-chat-fs-host .crml-chat-topbar .crml-chat-contact-name { font-size: 18px; font-weight: 800; color: #1a0f3e; }
body .crml-chat-fs-host .crml-chat-topbar .crml-chat-online { font-size: 14px; color: #57536e; }
body .crml-chat-fs-host .crml-chat-messages { background: #f6f4f9; }
body .crml-chat-fs-host .crml-chat-messages .crml-chat-day-sep { font-size: 14px; letter-spacing: 0; color: #57536e; }
body .crml-chat-fs-host .crml-msg-bubble .crml-msg-bubble-inner { padding: 10px 14px; border-radius: 18px; font-size: 16px; line-height: 1.4; box-shadow: none; }
body .crml-chat-fs-host .crml-msg-bubble.mine .crml-msg-bubble-inner { background: #f9e6ef; color: #6e2648; }
body .crml-chat-fs-host .crml-msg-bubble.theirs .crml-msg-bubble-inner { border: 1px solid #e4dfee; background: #ffffff; color: #1a0f3e; }
body .crml-chat-fs-host .crml-msg-bubble.is-auto .crml-msg-bubble-inner { border: 1px solid #f0d9b5; background: #fbeedd; color: #6b3306; }
body .crml-chat-fs-host .crml-msg-bubble.is-sys .crml-msg-bubble-inner { border: 1px solid #b9dcea; background: #e3f2f8; color: #0b4f69; }
body .crml-chat-fs-host .crml-msg-bubble.is-sys .crml-msg-sys-name { font-size: 14px; }
body .crml-chat-fs-host .crml-msg-todo { font-size: 13px; }
body .crml-chat-fs-host .crml-chat-todo-strip { font-size: 16px; min-height: 44px; }
body .crml-chat-fs-host .crml-chat-todo-hint { font-size: 14px; }
/* 839a: striscia "lezione prova da confermare" in cima alla Home del maestro */
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-arrivo.crml-ez-arrivo--todo { background: var(--ez-cassa-soft); color: var(--ez-cassa-deep); }
.crml-portal.crml-ez .crml-ez-arrivo--todo .crml-ez-arrivo-in > svg:first-child { color: var(--ez-cassa); }
body .crml-chat-fs-host .crml-msg-bubble .crml-msg-meta { font-size: 13px; color: #57536e; }
body .crml-chat-fs-host .crml-chat-input-bar .crml-chat-input { min-height: 48px; border-radius: 14px; font-size: 17px; }
body .crml-chat-fs-host .crml-chat-input-bar .crml-chat-send-btn { background: #a3446f; }
/* messaggi pronti e copia alla segreteria: fuori dal portale perdono le regole .crml-portal.crml-ez (uscivano come pulsanti grigi del browser) */
body .crml-chat-fs-host .crml-ez-quick { display: flex; gap: 6px; overflow-x: auto; padding: 6px 0 8px; -webkit-overflow-scrolling: touch; }
body .crml-chat-fs-host .crml-ez-quick-b { flex: none; min-height: 36px; margin: 0; padding: 7px 12px; border: 1px solid #c9c2dc; border-radius: 999px; background: #ffffff; color: #1a0f3e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 14px; font-weight: 700; line-height: 1.2; white-space: nowrap; cursor: pointer; }
body .crml-chat-fs-host .crml-chat-cc-label { display: inline-flex; align-items: center; gap: 8px; min-height: 36px; font-size: 14px; color: #57536e; }

/* ============================================================================
   HOME DEL MAESTRO SEMPLIFICATA (682a, CRML_Portal_Home_V2::render_maestro_home_easy)
   Scelta del titolare: solo "cosa ho oggi" e "cosa devo fare"; sotto, i quattro
   riquadri grandi e le altre voci in elenco compatto ("Altro").
   ============================================================================ */
/* In home il contenuto viene prima del menu */
.crml-portal.crml-ez.crml-ez-app:has(> .crml-home-quick-grid > .crml-ez-nav-sep) { display: flex; flex-direction: column; }
.crml-portal.crml-ez.crml-ez-app:has(> .crml-home-quick-grid > .crml-ez-nav-sep) > .crml-portal-body { order: 1; }
.crml-portal.crml-ez.crml-ez-app:has(> .crml-home-quick-grid > .crml-ez-nav-sep) > .crml-home-quick-grid { order: 2; }
.crml-portal.crml-ez .crml-ez-home { margin: 4px 0 6px; }
.crml-portal.crml-ez .crml-ez-home-date { font-size: 15px; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-home .crml-ez-h1 { margin: 2px 0 14px; font-size: 26px; font-weight: 800; line-height: 1.15; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-today { margin-bottom: 16px; padding: 16px; border-radius: var(--ez-r-lg); background: var(--ez-allievi-soft); }
.crml-portal.crml-ez .crml-ez-today-l { font-size: 14px; font-weight: 800; color: var(--ez-allievi-deep); }
.crml-portal.crml-ez .crml-ez-today-t { font-size: 22px; font-weight: 800; line-height: 1.2; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-today-s { margin: 2px 0 14px; font-size: 16px; line-height: 1.4; color: var(--ez-ink); }
/* 726a: home dell'allievo e del genitore, testata snella al posto della hero viola */
.crml-portal.crml-ez .crml-ez-shome-gap { height: 14px; }
.crml-portal.crml-ez .crml-ez-shome-bi { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; min-height: 52px; } /* il link e forzato a block con 2px di padding verticale: lo span riempie l'altezza e centra */
.crml-portal.crml-ez .crml-ez-shome-bi svg { vertical-align: 0; }
.crml-portal.crml-ez .crml-ez-shome-acts { display: flex; flex-wrap: wrap; gap: 8px; }
.crml-portal.crml-ez .crml-ez-shome-acts > .crml-ez-btn { flex: 1 1 240px; min-width: 0; padding-top: 0; padding-bottom: 0; } /* affiancati solo se ognuno ha almeno 240px */
.crml-portal.crml-ez .crml-ez-shome-n { display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; min-width: 24px; height: 24px; padding: 0 7px; border-radius: 999px; background: #fff; font-size: 14px; font-weight: 800; line-height: 1 }
.crml-portal.crml-ez .crml-ez-home-label,
.crml-portal.crml-ez .crml-ez-nav-sep { margin: 0 0 6px; font-size: 14px; font-weight: 800; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-nav-sep { grid-column: 1 / -1; margin: 8px 0 0; }
.crml-portal.crml-ez .crml-ez-todos { margin-bottom: 16px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); overflow: hidden; }
.crml-portal.crml-ez .crml-ez-todo { display: flex; align-items: center; gap: 12px; box-sizing: border-box; margin: 0; border: 0; font-family: var(--ez-font); line-height: 1.3; cursor: pointer }

.crml-portal.crml-ez .crml-ez-todo-n { display: flex; align-items: center; justify-content: center; flex: none; min-width: 30px; height: 30px; padding: 0 6px; box-sizing: border-box; border-radius: 999px; font-size: 15px; font-weight: 800; }
.crml-portal.crml-ez .crml-ez-todo-t { flex: 1 1 0; min-width: 0; }
.crml-portal.crml-ez .crml-ez-todo-go { display: flex; flex: none; color: var(--ez-muted); }
/* "Altro": le voci che non sono riquadri grandi diventano righe semplici; "Home" in home non serve */
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:has(> .crml-ez-nav-sep) a.crml-ez-nav.crml-ez-nav--home { display: none; }
.crml-portal-wrap .crml-portal.crml-ez .crml-home-quick-grid:has(> .crml-ez-nav-sep) a.crml-ez-nav:not(.crml-ez-nav--calendar):not(.crml-ez-nav--registro):not(.crml-ez-nav--pagamenti):not(.crml-ez-nav--comunicazioni) { --crml-card: transparent; --crml-card2: transparent; height: auto; min-height: 48px; padding: 6px 2px; }
.crml-portal.crml-ez .crml-ez-todo-row { display: flex; align-items: center; gap: 12px; width: 100%; }
/* >>> 684a nav */
/* ============================================================================
   NAVIGAZIONE DEL PORTALE MAESTRO A MACRO AREE (684a, CRML_Portal_App::ez_nav_render)
   Meccanismo di Staff Easy: una barra fissa con le aree (Oggi, Lezioni, Sede,
   Compensi, Bacheca), in basso su telefono e tablet, colonna a sinistra su
   computer; ogni area ha il suo colore e una pagina coi riquadri delle sezioni;
   in testa alle sezioni l'"indietro" col nome dell'area. Il menu non viene piu
   ripetuto sopra o sotto le pagine.
   ============================================================================ */
.crml-portal.crml-ez.crml-ez-nav2 { --ez-ac: var(--ez-allievi); --ez-ac-soft: var(--ez-allievi-soft); --ez-ac-deep: var(--ez-allievi-deep); padding-bottom: 96px; }
.crml-portal.crml-ez.crml-ez-ar--area_sede { --ez-ac: var(--ez-sede); --ez-ac-soft: var(--ez-sede-soft); --ez-ac-deep: var(--ez-sede-deep); }
.crml-portal.crml-ez.crml-ez-ar--area_compensi,
.crml-portal.crml-ez.crml-ez-ar--area_pagamenti { --ez-ac: var(--ez-cassa); --ez-ac-soft: var(--ez-cassa-soft); --ez-ac-deep: var(--ez-cassa-deep); } /* 726a: Pagamenti dell'allievo = colore della cassa */
.crml-portal.crml-ez.crml-ez-ar--area_bacheca { --ez-ac: var(--ez-bacheca); --ez-ac-soft: var(--ez-bacheca-soft); --ez-ac-deep: var(--ez-bacheca-deep); }
.crml-portal.crml-ez .crml-ez-bar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 990; box-sizing: border-box; margin: 0; padding: 6px 6px calc(6px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--ez-line); background: var(--ez-surface); }
.crml-portal.crml-ez .crml-ez-bar-box { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 2px; max-width: 560px; margin: 0 auto; }
.crml-portal.crml-ez .crml-ez-bar-subs { display: none; }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-bar-a { display: block; position: relative; border-radius: var(--ez-r-sm) }
.crml-portal.crml-ez .crml-ez-bar-in { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; min-height: 58px; }
.crml-portal.crml-ez .crml-ez-bar-ic { display: flex; }
.crml-portal.crml-ez .crml-ez-bar-ic svg { vertical-align: 0; }
.crml-portal.crml-ez .crml-ez-bar-tx { font-family: var(--ez-font); font-size: 13px; font-weight: 800; line-height: 1.1; }
.crml-portal.crml-ez .crml-ez-bar-n { position: absolute; top: 2px; left: 50%; box-sizing: border-box; min-width: 20px; height: 20px; margin-left: 6px; padding: 0 5px; border-radius: 999px; background: var(--ez-bacheca); font-family: var(--ez-font); font-size: 12px; font-weight: 800; line-height: 20px; text-align: center }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-bar-a.is-active { background: var(--ez-ac-soft) }
/* La barra fissa vive nel contesto di .site (z-index 1): il pie di pagina del tema (dentro .site, dopo il contenuto) e .crml-public-footer (dopo .site), entrambi a z-index 1, la coprivano in fondo alla pagina */
body:has(.crml-portal.crml-ez.crml-ez-nav2) .crml-public-footer, body:has(.crml-portal.crml-ez.crml-ez-nav2) .footer .wp-block-kubio-section__inner { z-index: 0; }
body:has(.crml-portal.crml-ez.crml-ez-nav2) .crml-public-footer { padding-bottom: calc(100px + env(safe-area-inset-bottom, 0px)); } /* 28px suoi + la barra */
/* "Indietro" in testa alle sezioni */

.crml-portal.crml-ez .crml-ez-back-in svg { vertical-align: 0; }
/* Pagina dell'area: testata colorata e riquadri delle sezioni */
.crml-portal.crml-ez .crml-ez-ar-head { margin: 4px 0 14px; padding: 16px; border-radius: var(--ez-r-lg); background: var(--ez-ac); color: #fff; }
.crml-portal.crml-ez .crml-ez-ar-t { display: flex; align-items: center; gap: 10px; margin: 0; font-family: var(--ez-font); font-size: 24px; font-weight: 800; line-height: 1.15 }
.crml-portal.crml-ez .crml-ez-ar-t svg { flex: none }
.crml-portal.crml-ez .crml-ez-ar-s { margin-top: 4px; font-family: var(--ez-font); font-size: 14px; line-height: 1.35; color: rgba(255, 255, 255, .9); }
.crml-portal.crml-ez .crml-ez-ar-tiles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-tile { display: block; box-sizing: border-box; border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface) }
.crml-portal.crml-ez .crml-ez-tile-in { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 10px; min-height: 96px; padding: 14px 12px; box-sizing: border-box; }
.crml-portal.crml-ez .crml-ez-tile-ic { display: flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: 14px; background: var(--ez-ac-soft); color: var(--ez-ac); }
.crml-portal.crml-ez .crml-ez-tile-ic svg { vertical-align: 0; }
.crml-portal.crml-ez .crml-ez-tile-tx { max-width: calc(100% - 22px); font-family: var(--ez-font); font-size: 16px; font-weight: 800; line-height: 1.2; overflow-wrap: anywhere; hyphens: auto; }
.crml-portal.crml-ez .crml-ez-tile-in .crml-ez-bar-n { top: 10px; right: 10px; left: auto; margin: 0; }
@media (min-width: 720px) {
  .crml-portal.crml-ez .crml-ez-ar-tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 1024px), (min-width: 840px) and (orientation: landscape) {
  /* Computer e tablet orizzontale: la barra diventa una colonna a sinistra, con le sezioni dell'area aperta sotto la sua voce; resta in vista scorrendo */
  .crml-portal.crml-ez.crml-ez-nav2 { display: grid; grid-template-columns: 196px minmax(0, 1fr); column-gap: 24px; align-items: start; padding-bottom: 0; overflow: visible; }
  body:has(.crml-portal.crml-ez.crml-ez-nav2) .crml-public-footer { padding-bottom: 28px; }
  /* la chat ha bisogno di spazio per elenco e conversazione affiancati: solo su quella pagina il portale si allarga */
  .crml-portal.crml-ez.crml-ez-app.crml-ez-nav2:has(#crml-chat-wrap.crml-chat-ez) { max-width: 1180px; }
  /* 875a: anche la chat dell'allievo e del genitore (prima ai messaggi restavano circa 180px) */
  .crml-portal.crml-ez.crml-ez-app.crml-ez-nav2:has(#crml-chat-wrap.crml-chat-largo) { max-width: 1180px; }
  .crml-portal.crml-ez.crml-ez-nav2 > * { grid-column: 2; min-width: 0; }
  .crml-portal.crml-ez.crml-ez-nav2 > .crml-ez-bar { grid-column: 1; grid-row: 1 / span 12; position: sticky; top: 84px; z-index: 1; padding: 8px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-box { grid-auto-flow: row; grid-template-columns: minmax(0, 1fr); gap: 2px; max-width: none; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-subs { display: block; margin: 0 0 6px; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-in { flex-direction: row; justify-content: flex-start; gap: 10px; min-height: 48px; padding: 0 10px; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-tx { font-size: 16px; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-a--sub .crml-ez-bar-in { min-height: 40px; padding-left: 22px; gap: 8px; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-a--sub .crml-ez-bar-tx { font-size: 14px; font-weight: 700; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-a--sub .crml-ez-bar-ic svg { width: 20px; height: 20px; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-a--ar.is-active { --ez-bar-on: transparent }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-n { position: static; margin-left: auto; }

}
/* ---------- Tappa 1 (684a): percorso colorato, testata con filigrana, riquadri con freccia, niente dissolvenza, "Vai a..." ---------- */
.crml-portal.crml-ez.crml-ez-nav2 > *,
.crml-portal-wrap:has(> .crml-ez-nav2) > * { animation: none; }
.crml-portal.crml-ez .crml-ez-top { display: flex; align-items: center; flex-wrap: wrap; margin: 0 0 10px }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-back { display: inline-block; border-radius: 999px; background: var(--ez-ac) }
.crml-portal.crml-ez .crml-ez-back-in { display: inline-flex; align-items: center; gap: 2px; min-height: 40px; padding: 0 14px 0 8px; font-family: var(--ez-font); font-size: 16px; font-weight: 800; line-height: 1.2; color: #fff; }

.crml-portal.crml-ez .crml-ez-crumb-sep { display: flex; color: var(--ez-line-strong); }
.crml-portal.crml-ez .crml-ez-crumb-cur { font-family: var(--ez-font); font-size: 16px; font-weight: 800; color: var(--ez-ac-deep); }
.crml-portal.crml-ez .crml-ez-ar-head { position: relative; overflow: hidden; }
.crml-portal.crml-ez .crml-ez-ar-head > * { position: relative; }
.crml-portal.crml-ez .crml-ez-ar-wm { position: absolute; right: -16px; top: -22px; display: block; opacity: .16; color: #fff; }
.crml-portal.crml-ez .crml-ez-ar-wm svg { vertical-align: 0; }
.crml-portal.crml-ez .crml-ez-ar-s--todo { font-weight: 800; color: #fff; }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-tile { border-left: 4px solid var(--ez-ac); }
.crml-portal.crml-ez .crml-ez-tile-ch { position: absolute; right: 10px; bottom: 12px; display: flex; color: var(--ez-line-strong); }
.crml-portal.crml-ez .crml-ez-tile-ch svg { vertical-align: 0; }
.crml-portal.crml-ez.crml-ez-nav2 > .crml-home-quick-grid.crml-ez-src { display: none; }
.crml-portal.crml-ez.crml-ez-nav2.crml-ez-ar--home > .crml-home-quick-grid.crml-ez-src { display: grid; --ez-nav-cols: 1; margin: 0 0 10px; }
.crml-portal.crml-ez.crml-ez-nav2 > .crml-ez-src > a:not(#crml-pk-btn) { display: none; }
@media (min-width: 1024px) {
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-top--sec { display: flex; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-a--ar .crml-ez-bar-ic { color: var(--ez-ar-ic, var(--ez-muted)); }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-a--home, .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-a--area_lezioni { --ez-ar-ic: var(--ez-allievi); }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-a--area_sede { --ez-ar-ic: var(--ez-sede); }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-a--area_compensi, .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-a--area_pagamenti { --ez-ar-ic: var(--ez-cassa); }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-a--area_bacheca { --ez-ar-ic: var(--ez-bacheca); }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar-a--ar.is-active { border-radius: 0 var(--ez-r-sm) var(--ez-r-sm) 0 }
}
/* ---------- Tappa 2 (684a, telefono): avviso a scomparsa, pulsante fisso nella scheda lezione, disponibilita a schede, prossima lezione, stampa ---------- */
.crml-portal.crml-ez.crml-ez-nav2 .crml-flash { position: fixed; left: 14px; right: 14px; bottom: 84px; z-index: 995; margin: 0; box-shadow: 0 8px 24px rgba(26, 15, 62, .18); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-flash.is-gone { display: none; }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-today-link { display: flex; align-items: center; gap: 4px; min-height: 44px; margin: 0 0 10px; font-family: var(--ez-font); font-size: 16px; font-weight: 700; line-height: 1.4; color: var(--ez-allievi-deep); text-decoration: none; }
.crml-portal.crml-ez .crml-ez-today-link svg { vertical-align: 0; }
@media (max-width: 1023px) {
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ajax-form[data-crml-dirty-flag] { padding-bottom: 72px; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ajax-form[data-crml-dirty-flag] .crml-form-actions { position: fixed; left: 0; right: 0; bottom: 71px; z-index: 4; display: flex; gap: 8px; margin: 0; padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px)); background: var(--ez-surface); border-top: 1px solid var(--ez-line); }

}
@media (max-width: 540px) {
  .crml-portal.crml-ez.crml-ez-nav2 .crml-disp-table thead { display: none; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-disp-table, .crml-portal.crml-ez.crml-ez-nav2 .crml-disp-table tbody, .crml-portal.crml-ez.crml-ez-nav2 .crml-disp-table tr, .crml-portal.crml-ez.crml-ez-nav2 .crml-disp-table td { display: block; width: auto; min-width: 0; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-disp-table tr { margin: 0 0 8px; padding: 8px 12px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-disp-table td { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 5px 0; border: 0; text-align: left; font-size: 16px; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-disp-table td::before { font-size: 13px; font-weight: 800; color: var(--ez-muted); }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-disp-table td:nth-child(2)::before { content: "Dalle"; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-disp-table td:nth-child(3)::before { content: "Alle"; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-disp-table td:nth-child(4)::before { content: "Attiva"; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-disp-table td:nth-child(5)::before { content: "Azioni"; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-disp-table td.crml-disp-day { font-size: 18px; font-weight: 800; color: var(--ez-ac-deep); }
}
@media (min-width: 1024px) {
  .crml-portal.crml-ez.crml-ez-nav2 .crml-flash { left: auto; right: 24px; bottom: 24px; width: 360px; }
}
@media print {
  .crml-portal.crml-ez.crml-ez-nav2 { display: block; padding: 0; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-bar, .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-top, .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-src, .crml-portal.crml-ez.crml-ez-nav2 .crml-flash, .crml-portal.crml-ez.crml-ez-nav2 .crml-form-actions { display: none; }
}
/* ---------- Tappa 3 (684a, computer): i miei numeri, la settimana, Lo sapevi, scheda lezione a due colonne ---------- */
.crml-portal.crml-ez .crml-ez-nums { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-bottom: 16px; }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-num { display: block; border-radius: var(--ez-r-md); background: var(--ez-allievi-soft) }
.crml-portal.crml-ez .crml-ez-num-in { display: flex; flex-direction: column; gap: 2px; box-sizing: border-box; height: 100%; padding: 12px 14px; } /* il numero sta in fondo: allineato anche se l etichetta va su due righe */
.crml-portal.crml-ez .crml-ez-num-l { font-family: var(--ez-font); font-size: 13px; font-weight: 700; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-num-v { font-family: var(--ez-font); font-size: 26px; margin-top: auto; font-weight: 800; line-height: 1.1; color: var(--ez-allievi-deep); font-variant-numeric: tabular-nums; }
.crml-portal.crml-ez .crml-ez-week { display: none; }
.crml-portal.crml-ez .crml-ez-week-box { margin-bottom: 16px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); overflow: hidden; }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-week-row { display: block; border-bottom: 1px solid var(--ez-line) }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-week-row:last-child { border-bottom: 0; }
.crml-portal.crml-ez .crml-ez-week-in { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 44px; padding: 8px 14px; font-family: var(--ez-font); font-size: 15px; }
.crml-portal.crml-ez .crml-ez-week-d { font-weight: 800; }
.crml-portal.crml-ez .crml-ez-week-n { font-weight: 700; color: var(--ez-allievi-deep); }
.crml-portal.crml-ez .crml-ez-week-row.is-empty .crml-ez-week-n, .crml-portal.crml-ez .crml-ez-week-row.is-empty .crml-ez-week-d { color: var(--ez-muted); font-weight: 600; }
@media (min-width: 1024px), (min-width: 840px) and (orientation: landscape) {
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-nums { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-week { display: block; }
  /* scheda lezione su due colonne: dati a sinistra, programma e compiti a destra; moduli e piano a tutta larghezza */
  .crml-portal.crml-ez.crml-ez-nav2 .crml-lezione-card { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 18px; align-items: start; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-lezione-card > * { grid-column: 1 / -1; min-width: 0; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-lezione-card > .crml-lezione-meta-grid { grid-column: 1; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-lezione-card > .crml-lezione-sections { grid-column: 2; }
}
/* ---------- Tappa 4 (684a, pagine): conferme in-app, aiuto, novita, messaggi pronti, Continua da, andamento ---------- */
/* il foglio di conferma nasce in fondo al body, fuori dal portale: regole autonome, colori per esteso */
body .crml-ez-sheet { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: flex-end; justify-content: center; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; }
body .crml-ez-sheet-dim { position: absolute; inset: 0; background: rgba(26, 15, 62, .45); }
body .crml-ez-sheet-box { position: relative; box-sizing: border-box; width: 100%; max-width: 560px; padding: 18px 18px calc(18px + env(safe-area-inset-bottom, 0px)); border-top: 5px solid #6a4b9b; border-radius: 22px 22px 0 0; background: #fff; color: #1a0f3e; box-shadow: 0 -8px 30px rgba(26, 15, 62, .2); }
body .crml-ez-sheet-t { margin: 0 0 6px; font-size: 19px; font-weight: 800; line-height: 1.2; }
body .crml-ez-sheet-s { margin: 0 0 16px; font-size: 16px; line-height: 1.4; color: #57536e; white-space: pre-line; }
body .crml-ez-sheet-b { display: flex; gap: 8px; }
body .crml-ez-sheet-btn { flex: 1 1 0; min-height: 50px; padding: 0 14px; border: 0; border-radius: 16px; background: #6a4b9b; color: #fff; font-family: inherit; font-size: 16px; font-weight: 800; cursor: pointer; }
body .crml-ez-sheet-btn--no { background: #fff; color: #1a0f3e; border: 2px solid #1a0f3e; }
@media (min-width: 720px) { body .crml-ez-sheet { align-items: center; } body .crml-ez-sheet-box { border-radius: 22px; border: 1px solid #e4dfee; border-top: 5px solid #6a4b9b; max-width: 440px; } }
.crml-portal.crml-ez .crml-ez-help { display: inline-flex; align-items: center; justify-content: center; margin-left: auto; border: 0; background: var(--ez-chip); cursor: pointer }
.crml-portal.crml-ez .crml-ez-help svg { vertical-align: 0; }
.crml-portal.crml-ez .crml-ez-quick { display: flex; gap: 6px; overflow-x: auto; padding: 6px 0 8px; -webkit-overflow-scrolling: touch; }
.crml-portal.crml-ez .crml-ez-quick-b { flex: none; padding: 7px 12px; border: 1px solid var(--ez-line-strong); border-radius: 999px; background: var(--ez-surface); color: var(--ez-ink); font-family: var(--ez-font); font-size: 14px; font-weight: 700; white-space: nowrap; cursor: pointer; }
.crml-portal.crml-ez .crml-ez-cont { margin: 0 0 10px; padding: 12px 14px; border-radius: var(--ez-r-md); background: var(--ez-allievi-soft); font-family: var(--ez-font); }
.crml-portal.crml-ez .crml-ez-cont-l { font-size: 13px; font-weight: 800; color: var(--ez-allievi-deep); }
.crml-portal.crml-ez .crml-ez-cont-t { margin: 2px 0 10px; font-size: 15px; line-height: 1.4; color: var(--ez-ink); white-space: pre-line; }
.crml-portal.crml-ez .crml-ez-cont-b { display: inline-flex; align-items: center; gap: 6px; border-radius: 12px; background: var(--ez-surface); font-family: var(--ez-font); font-size: 14px; font-weight: 800; cursor: pointer }
.crml-portal.crml-ez .crml-ez-dots { display: inline-flex; gap: 4px; vertical-align: middle; }
.crml-portal.crml-ez .crml-ez-dot { display: inline-block; width: 14px; height: 14px; border-radius: 50%; background: #d3d1c7; }
.crml-portal.crml-ez .crml-ez-dot.is-ok { background: var(--ez-ok); }
.crml-portal.crml-ez .crml-ez-dot.is-bad { background: #e24b4a; }
/* ---------- Resti di veste (684a): pagine vuote, meno movimento, campi leggibili ---------- */
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-void { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 26px 14px; border: 1px dashed var(--ez-line-strong); border-radius: var(--ez-r-md); background: var(--ez-surface); text-align: center; font-family: var(--ez-font); font-size: 16px; font-weight: 700; color: var(--ez-muted); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-void-ic { width: 44px; height: 44px; color: var(--ez-ac); }
@media (prefers-reduced-motion: reduce) {
  .crml-portal.crml-ez.crml-ez-nav2, .crml-portal.crml-ez.crml-ez-nav2 * { animation: none; transition: none; scroll-behavior: auto; }
}
/* ---------- Tappa 5, pezzi senza nuove regole (684a): Sei in arrivo?, Oggi non ci sono ---------- */
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-arrivo { display: block; margin: 0 0 14px; border-radius: var(--ez-r-lg); background: var(--ez-sede-soft); color: var(--ez-sede-deep); text-decoration: none; }
.crml-portal.crml-ez .crml-ez-arrivo-in { display: flex; align-items: center; gap: 12px; padding: 14px 16px; font-family: var(--ez-font); font-size: 16px; line-height: 1.3; }
.crml-portal.crml-ez .crml-ez-arrivo-in > svg:first-child { flex: none; color: var(--ez-sede); }
.crml-portal.crml-ez .crml-ez-arrivo-in > span { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; }
.crml-portal.crml-ez .crml-ez-arrivo-in b { font-size: 17px; font-weight: 800; }
.crml-portal.crml-ez .crml-ez-arrivo-s { font-size: 14px; color: var(--ez-sede-deep); }
/* 720a: tolto "Oggi non ci sono" dal calendario; filtri del registro in tendina */
.crml-portal-wrap .crml-portal.crml-ez .crml-rfdd > summary.crml-rfdd-btn { min-height: 48px; padding: 0 16px; border: 2px solid var(--ez-ac, var(--ez-ink)); border-radius: 12px; background: var(--ez-surface); color: var(--ez-ac-deep, var(--ez-ink)); font-family: var(--ez-font); font-size: 16px; font-weight: 800; }
.crml-portal-wrap .crml-portal.crml-ez .crml-rfdd .crml-rfdd-k { color: inherit; font-weight: 600; }
.crml-portal-wrap .crml-portal.crml-ez .crml-rfdd.is-filtered > summary.crml-rfdd-btn { background: var(--ez-ac-soft, var(--ez-chip)); }
.crml-portal-wrap .crml-portal.crml-ez .crml-rfdd-panel { gap: 8px; padding: 12px }
/* ---------- Tappa 5, seconda parte (684a): sale a caselle, cronometro, metronomo ---------- */
.crml-portal.crml-ez.crml-ez-nav2 #crml-sala-slots > div > div.is-free { cursor: pointer; }
.crml-portal.crml-ez.crml-ez-nav2 #crml-sala-slots > div > div.is-sel { outline: 3px solid var(--ez-sede); outline-offset: -1px; }
.crml-portal.crml-ez .crml-ez-timer { display: flex; align-items: center; gap: 10px; margin: 0 0 12px; padding: 10px 12px; border-radius: var(--ez-r-md); background: var(--ez-allievi-soft); font-family: var(--ez-font); }
.crml-portal.crml-ez .crml-ez-timer-v { font-size: 26px; font-weight: 800; color: var(--ez-allievi-deep); font-variant-numeric: tabular-nums; }
.crml-portal.crml-ez .crml-ez-timer-d { font-size: 14px; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-timer-b { margin-left: auto; min-height: 40px; padding: 0 16px; border: 2px solid var(--ez-allievi); border-radius: 12px; background: var(--ez-surface); color: var(--ez-allievi-deep); font-family: var(--ez-font); font-size: 15px; font-weight: 800; cursor: pointer; }
.crml-portal.crml-ez .crml-ez-timer.is-on .crml-ez-timer-b { background: var(--ez-allievi); color: #fff; }
.crml-portal.crml-ez .crml-ez-timer.is-on .crml-ez-timer-v { color: var(--ez-allievi); }
body .crml-ez-metro { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 6px 0 2px; }
body .crml-ez-metro-v { min-width: 84px; text-align: center; font-size: 40px; font-weight: 800; color: #1a0f3e; font-variant-numeric: tabular-nums; }
body .crml-ez-metro-pm { width: 48px; height: 48px; border: 2px solid #c9c2dc; border-radius: 50%; background: #fff; color: #1a0f3e; font-family: inherit; font-size: 16px; font-weight: 800; cursor: pointer; }
/* <<< 684a nav */

/* >>> 835a strumenti: accordatore, nota di riferimento, metronomo (assets/portal/ez-strumenti.js).
   Il foglio nasce in fondo al body, fuori dal portale: colori per esteso, accento dell'area passato in --tl-* */
body .crml-ez-tl { --tl-ac: #0f6a8c; --tl-soft: #e3f2f8; --tl-deep: #0b4f69; }
body .crml-ez-tl .crml-ez-tl-box { max-height: calc(100vh - 12px); max-height: calc(100dvh - 12px); overflow-y: auto; overscroll-behavior: contain; border-top-color: var(--tl-ac); color: #1a0f3e; outline: none; }
@media (min-width: 720px) { body .crml-ez-tl .crml-ez-tl-box { max-width: 470px; max-height: calc(100vh - 48px); border-top-color: var(--tl-ac); } }
body .crml-ez-tl button { font-family: inherit; -webkit-tap-highlight-color: transparent; }
body .crml-ez-tl .crml-ez-tl-main { background: var(--tl-ac); }
body .crml-ez-tl .crml-ez-sheet-b { margin-top: 18px; }
body .crml-ez-tl-head { display: flex; align-items: center; gap: 8px; margin: 0 0 6px; }
body .crml-ez-tl-head .crml-ez-sheet-t { margin: 0; }
body .crml-ez-tl-back { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 40px; height: 40px; margin: -4px 0 -4px -6px; padding: 0; border: 0; border-radius: 12px; background: #eeecf3; color: #1a0f3e; cursor: pointer; }
body .crml-ez-tl-list { display: flex; flex-direction: column; gap: 8px; margin: 0; }
body .crml-ez-tl-item { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 68px; padding: 12px; border: 1px solid #e4dfee; border-left: 4px solid var(--tl-ac); border-radius: 18px; background: #fff; color: #1a0f3e; text-align: left; cursor: pointer; }
body .crml-ez-tl-ic { display: flex; align-items: center; justify-content: center; flex: none; width: 42px; height: 42px; border-radius: 14px; background: var(--tl-soft); color: var(--tl-ac); }
body .crml-ez-tl-it { display: flex; flex: 1 1 auto; flex-direction: column; gap: 2px; min-width: 0; }
body .crml-ez-tl-it b { font-size: 16px; font-weight: 800; line-height: 1.2; }
body .crml-ez-tl-it span { font-size: 14px; font-weight: 600; line-height: 1.3; color: #57536e; }
body .crml-ez-tl-ch { display: flex; flex: none; color: #c9c2dc; }
body .crml-ez-tl-priv { margin: 12px 0 0; font-size: 13px; text-align: center; color: #57536e; }
body .crml-ez-tl-f { margin-top: 14px; }
body .crml-ez-tl-lbl { display: block; margin-bottom: 6px; font-size: 12px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: #57536e; }
body .crml-ez-tl-seg { display: flex; flex-wrap: wrap; gap: 6px; }
body .crml-ez-tl-seg button, body .crml-ez-tl-notes button { min-height: 42px; padding: 0 13px; border: 2px solid #c9c2dc; border-radius: 12px; background: #fff; color: #1a0f3e; font-size: 15px; font-weight: 700; cursor: pointer; }
body .crml-ez-tl-seg button[aria-pressed="true"], body .crml-ez-tl-notes button[aria-pressed="true"] { background: var(--tl-ac); border-color: var(--tl-ac); color: #fff; }
body .crml-ez-tl-seg.is-off { opacity: .4; pointer-events: none; }
body .crml-ez-tl-notes { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 6px; }
body .crml-ez-tl-notes button { padding: 0; font-weight: 800; }
body .crml-ez-tl-msg { margin-top: 12px; padding: 11px 13px; border-radius: 12px; background: #fbeedd; color: #a5510d; font-size: 15px; font-weight: 600; line-height: 1.4; }
body .crml-ez-tl-tu { text-align: center; }
body .crml-ez-tl-tu-n { min-height: 64px; font-size: 62px; font-weight: 800; line-height: 1; color: #1a0f3e; }
body .crml-ez-tl-tu-hz { margin-top: 2px; color: #57536e; font-variant-numeric: tabular-nums; }
body .crml-ez-tl-tu-g { display: block; width: 100%; max-width: 300px; margin: 4px auto 0; }
body .crml-ez-tl-arc { fill: none; stroke: #e4dfee; stroke-width: 14; stroke-linecap: round; }
body .crml-ez-tl-arc-ok { fill: none; stroke: #1b7a4b; stroke-width: 14; }
body .crml-ez-tl-tick { stroke: #c9c2dc; stroke-width: 2; }
body .crml-ez-tl-tick0 { stroke: #1b7a4b; stroke-width: 3; }
body .crml-ez-tl-needle line { stroke: #1a0f3e; stroke-width: 4; stroke-linecap: round; }
body .crml-ez-tl-needle circle { fill: #1a0f3e; }
body .crml-ez-tl-glb { fill: #57536e; font-size: 13px; font-weight: 700; }
body .crml-ez-tl-st { display: inline-block; margin-top: 4px; padding: 7px 14px; border-radius: 999px; background: #eeecf3; color: #3d3957; font-weight: 800; }
body .crml-ez-tl-st.is-ok { background: #e1f3e9; color: #1b7a4b; }
body .crml-ez-tl-st.is-off { background: #fbeedd; color: #a5510d; }
body .crml-ez-tl-quick { display: flex; flex-direction: column; align-items: flex-start; width: 100%; padding: 14px 16px; border: 0; border-radius: 16px; background: var(--tl-soft); color: var(--tl-deep); font-size: 26px; font-weight: 800; line-height: 1.1; text-align: left; cursor: pointer; }
body .crml-ez-tl-quick small { font-size: 14px; font-weight: 600; }
body .crml-ez-tl-now { margin-top: 14px; padding: 12px 14px; border-radius: 14px; background: #eeecf3; color: #1a0f3e; font-variant-numeric: tabular-nums; }
body .crml-ez-tl-now.is-on { background: #e1f3e9; color: #1b7a4b; }
body .crml-ez-tl-cap { text-align: center; color: #57536e; }
body .crml-ez-tl-cap b { color: #1a0f3e; }
body .crml-ez-tl-range { display: block; width: 100%; margin: 12px 0 4px; accent-color: var(--tl-ac); }
body .crml-ez-tl-dots { display: flex; align-items: center; justify-content: center; gap: 10px; height: 26px; margin-top: 6px; }
body .crml-ez-tl-dot { width: 16px; height: 16px; border-radius: 50%; background: #e4dfee; }
body .crml-ez-tl-dot--acc { width: 24px; height: 24px; }
body .crml-ez-tl-dot.on { background: var(--tl-ac); }
body .crml-ez-tl-dot--acc.on { background: var(--tl-deep); }
body .crml-ez-tl-tap { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%; min-height: 66px; margin-top: 14px; border: 2px dashed var(--tl-ac); border-radius: 16px; background: #fff; color: var(--tl-deep); font-size: 17px; font-weight: 800; cursor: pointer; }
body .crml-ez-tl-tap small { font-size: 13px; font-weight: 600; color: #57536e; }
body .crml-ez-tl-tap.hit { animation: crml-ez-tl-hit .2s; }
@keyframes crml-ez-tl-hit { from { background: var(--tl-soft); } to { background: #fff; } }
body .crml-ez-tl-acc { margin-top: 14px; padding: 12px 14px; border: 1px solid #e4dfee; border-radius: 14px; }
body .crml-ez-tl-chk { display: flex; align-items: center; gap: 10px; font-weight: 700; cursor: pointer; }
body .crml-ez-tl-chk input { flex: none; width: 22px; height: 22px; margin: 0; accent-color: var(--tl-ac); }
body .crml-ez-tl-acc-row { display: none; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 10px; font-size: 15px; color: #57536e; }
body .crml-ez-tl-acc-row.is-on { display: flex; }
body .crml-ez-tl-acc-row b { min-width: 38px; text-align: center; font-size: 18px; color: #1a0f3e; font-variant-numeric: tabular-nums; }
body .crml-ez-tl .crml-ez-tl-pm-s { width: 36px; height: 36px; font-size: 14px; }
@media (prefers-reduced-motion: reduce) { body .crml-ez-tl-tap.hit { animation: none; } }
/* 835a, seconda tornata: elenco a gruppi, tastierina, timer, lavagna, circolo delle quinte, accordi, lettura ritmica, giochi */
body .crml-ez-tl-grp { margin: 10px 0 0; font-size: 12px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: #57536e; }
body .crml-ez-tl-grp:first-child { margin-top: 0; }
body .crml-ez-tl .crml-ez-tl-chk--top { margin-top: 14px; }
body .crml-ez-tl-small { margin: 6px 0 0; font-size: 14px; color: #57536e; }
body .crml-ez-tl-soft { display: block; width: 100%; min-height: 46px; margin-top: 12px; padding: 0 12px; border: 0; border-radius: 16px; background: var(--tl-soft); color: var(--tl-deep); font-size: 16px; font-weight: 800; cursor: pointer; }
body .crml-ez-tl-row2 { display: flex; gap: 8px; margin-top: 12px; }
body .crml-ez-tl-row2 .crml-ez-tl-soft { flex: 1 1 0; margin-top: 0; }
body .crml-ez-tl-msg--ok { background: #e1f3e9; color: #1b7a4b; }
body .crml-ez-tl-kbnow { min-height: 30px; margin-top: 14px; font-size: 16px; color: #1a0f3e; }
body .crml-ez-tl-kbnow b { font-size: 22px; }
body .crml-ez-tl-kb { position: relative; height: 170px; margin-top: 8px; user-select: none; -webkit-user-select: none; touch-action: manipulation; }
body .crml-ez-tl .crml-ez-tl-kw { position: absolute; top: 0; bottom: 0; display: flex; align-items: flex-end; justify-content: center; width: calc(100% / var(--n)); min-height: 0; margin: 0; padding: 0 0 10px; border: 1px solid #c9c2dc; border-radius: 0 0 10px 10px; background: #fff; color: #57536e; font-size: 12px; font-weight: 800; cursor: pointer; }
body .crml-ez-tl .crml-ez-tl-kbk { position: absolute; top: 0; z-index: 2; width: calc(100% / var(--n) * .6); height: 60%; min-height: 0; margin: 0; padding: 0; border: 0; border-radius: 0 0 8px 8px; background: #1a0f3e; cursor: pointer; }
body .crml-ez-tl .crml-ez-tl-kw.lit { background: var(--tl-soft); color: var(--tl-deep); }
body .crml-ez-tl .crml-ez-tl-kbk.lit { background: var(--tl-ac); }
body .crml-ez-tl-kb.nolab .crml-ez-tl-kw span { visibility: hidden; }
body .crml-ez-tl-ti { position: relative; width: 220px; max-width: 100%; aspect-ratio: 1; margin: 10px auto 4px; }
body .crml-ez-tl-ti svg { display: block; width: 100%; height: 100%; }
body .crml-ez-tl-ti-bg { fill: none; stroke: #e4dfee; stroke-width: 12; }
body .crml-ez-tl-ti-fg { fill: none; stroke: var(--tl-ac); stroke-width: 12; stroke-linecap: round; transition: stroke-dashoffset .25s linear; }
body .crml-ez-tl-ti-fg.warn { stroke: #a5510d; }
body .crml-ez-tl-ti-c { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
body .crml-ez-tl-ti-v { font-size: 48px; font-weight: 800; line-height: 1; color: #1a0f3e; font-variant-numeric: tabular-nums; }
body .crml-ez-tl-ti-end { margin-top: 6px; font-size: 14px; color: #57536e; }
body .crml-ez-tl-lv { margin-top: 12px; overflow: hidden; border: 1px solid #e4dfee; border-radius: 14px; background: #fff; }
body .crml-ez-tl-lv canvas { display: block; width: 100%; touch-action: none; cursor: crosshair; }
body .crml-ez-tl-cf { max-width: 340px; margin: 0 auto; }
body .crml-ez-tl-cf svg { display: block; width: 100%; }
body .crml-ez-tl-cfk { cursor: pointer; outline: none; }
body .crml-ez-tl-cfo { fill: #fff; stroke: #c9c2dc; stroke-width: 1.2; }
body .crml-ez-tl-cfi { fill: #eeecf3; stroke: #c9c2dc; stroke-width: 1.2; }
body .crml-ez-tl-cfk:hover .crml-ez-tl-cfo { fill: var(--tl-soft); }
body .crml-ez-tl-cfk.is-sel .crml-ez-tl-cfo { fill: var(--tl-ac); }
body .crml-ez-tl-cfk.is-sel .crml-ez-tl-cfi { fill: var(--tl-deep); }
body .crml-ez-tl-cfk.is-sel text { fill: #fff; }
body .crml-ez-tl-cfk:focus-visible .crml-ez-tl-cfo { stroke: var(--tl-ac); stroke-width: 3; }
body .crml-ez-tl-cfto { font-size: 17px; font-weight: 800; fill: #1a0f3e; text-anchor: middle; }
body .crml-ez-tl-cfti { font-size: 11px; font-weight: 700; fill: #57536e; text-anchor: middle; }
body .crml-ez-tl-cfc { fill: #fff; stroke: #c9c2dc; }
body .crml-ez-tl-cfn { font-size: 32px; font-weight: 800; fill: #1a0f3e; text-anchor: middle; }
body .crml-ez-tl-cfl { font-size: 12px; font-weight: 700; fill: #57536e; text-anchor: middle; }
body .crml-ez-tl-cfinfo { line-height: 1.5; }
body .crml-ez-tl-chn { margin-top: 12px; text-align: center; font-size: 26px; font-weight: 800; color: #1a0f3e; }
body .crml-ez-tl-chd { display: block; width: 100%; max-width: 220px; margin: 4px auto 0; }
body .crml-ez-tl-chst { stroke: #1a0f3e; stroke-width: 1.5; }
body .crml-ez-tl-chfr { stroke: #c9c2dc; stroke-width: 1.5; }
body .crml-ez-tl-chnut { stroke: #1a0f3e; stroke-width: 6; }
body .crml-ez-tl-chdot { fill: var(--tl-ac); }
body .crml-ez-tl-chop { fill: none; stroke: #1a0f3e; stroke-width: 2; }
body .crml-ez-tl-chfn { fill: #fff; font-size: 13px; font-weight: 800; text-anchor: middle; }
body .crml-ez-tl-chmk { fill: #57536e; font-size: 17px; font-weight: 800; text-anchor: middle; }
body .crml-ez-tl-chsn { fill: #57536e; font-size: 12px; font-weight: 700; text-anchor: middle; }
body .crml-ez-tl-chl { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; margin-top: 12px; }
body .crml-ez-tl-chl button { min-height: 42px; padding: 0; border: 2px solid #c9c2dc; border-radius: 12px; background: #fff; color: #1a0f3e; font-size: 14px; font-weight: 800; cursor: pointer; }
body .crml-ez-tl-chl button[aria-pressed="true"] { background: var(--tl-ac); border-color: var(--tl-ac); color: #fff; }
body .crml-ez-tl-rt { margin-top: 12px; padding: 6px; border: 1px solid #e4dfee; border-radius: 14px; background: #fff; }
body .crml-ez-tl-rt svg { display: block; width: 100%; }
body .crml-ez-tl-rtl { stroke: #1a0f3e; stroke-width: 1.4; }
body .crml-ez-tl-rtb { stroke: #1a0f3e; stroke-width: 1.6; }
body .crml-ez-tl-rtb--end { stroke-width: 5; }
body .crml-ez-tl-rtts { font-size: 26px; font-weight: 800; fill: #1a0f3e; text-anchor: middle; }
body .crml-ez-tl-rth, body .crml-ez-tl-rtbm { fill: #1a0f3e; }
body .crml-ez-tl-rthh { fill: #fff; stroke: #1a0f3e; stroke-width: 2.2; }
body .crml-ez-tl-rts { stroke: #1a0f3e; stroke-width: 1.8; }
body .crml-ez-tl-rtr { fill: none; stroke: #1a0f3e; stroke-width: 3; stroke-linejoin: round; stroke-linecap: round; }
body .crml-ez-tl-rte.on .crml-ez-tl-rth, body .crml-ez-tl-rte.on .crml-ez-tl-rtbm { fill: var(--tl-ac); }
body .crml-ez-tl-rte.on .crml-ez-tl-rthh, body .crml-ez-tl-rte.on .crml-ez-tl-rts, body .crml-ez-tl-rte.on .crml-ez-tl-rtr { stroke: var(--tl-ac); }
body .crml-ez-tl .crml-ez-tl-vs { min-width: 64px; font-size: 30px; }
body .crml-ez-tl-gaq { margin-top: 14px; text-align: center; font-size: 22px; font-weight: 800; color: #1a0f3e; }
body .crml-ez-tl-gaa { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 12px; }
body .crml-ez-tl .crml-ez-tl-gab { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; min-height: 150px; padding: 8px; border: 3px solid transparent; border-radius: 22px; background: var(--tl-soft); color: var(--tl-ac); font-size: 20px; font-weight: 800; cursor: pointer; }
body .crml-ez-tl .crml-ez-tl-gab:nth-child(2) { background: #eee8f7; color: #6a4b9b; }
body .crml-ez-tl-gab svg { width: 64px; height: 64px; }
body .crml-ez-tl-gab span { color: #1a0f3e; }
body .crml-ez-tl .crml-ez-tl-gab.is-ok { border-color: #1b7a4b; }
body .crml-ez-tl .crml-ez-tl-gab.is-bad { border-color: #8c1d18; animation: crml-ez-tl-shake .3s; }
@keyframes crml-ez-tl-shake { 25% { transform: translateX(-6px); } 75% { transform: translateX(6px); } }
body .crml-ez-tl-gaf { min-height: 34px; margin-top: 12px; text-align: center; font-size: 24px; font-weight: 800; }
body .crml-ez-tl-gaf.is-ok { color: #1b7a4b; }
body .crml-ez-tl-gaf.is-bad { color: #8c1d18; font-size: 19px; }
body .crml-ez-tl-gas { text-align: center; font-weight: 700; color: #57536e; }
@media (prefers-reduced-motion: reduce) { body .crml-ez-tl .crml-ez-tl-gab.is-bad { animation: none; } body .crml-ez-tl-ti-fg { transition: none; } }
/* 835a, terza tornata: vocalizzi, registratore, trasporto, orecchio */
body .crml-ez-tl-msg--bad { background: #fce8e6; color: #8c1d18; }
body .crml-ez-tl-vo { margin-top: 16px; padding: 14px; border-radius: 16px; background: #eeecf3; }
body .crml-ez-tl-vok { font-size: 24px; font-weight: 800; color: #1a0f3e; }
body .crml-ez-tl-vob { display: flex; align-items: flex-end; gap: 5px; height: 72px; margin: 10px 0 8px; }
body .crml-ez-tl-vob span { flex: 1; border-radius: 6px 6px 2px 2px; background: #c9c2dc; }
body .crml-ez-tl-vob span.on { background: var(--tl-ac); }
body .crml-ez-tl-vor { font-size: 14px; color: #57536e; }
body .crml-ez-tl-re { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 4px 0; }
body .crml-ez-tl .crml-ez-tl-reb { display: flex; align-items: center; justify-content: center; width: 96px; height: 96px; min-height: 0; margin: 0; padding: 0; border: 5px solid #fce8e6; border-radius: 50%; background: #fff; cursor: pointer; }
body .crml-ez-tl-red { width: 56px; height: 56px; border-radius: 50%; background: #c62828; transition: all .15s; }
body .crml-ez-tl-reb.on .crml-ez-tl-red { width: 34px; height: 34px; border-radius: 8px; }
body .crml-ez-tl-ret { font-size: 32px; font-weight: 800; color: #1a0f3e; font-variant-numeric: tabular-nums; }
body .crml-ez-tl-res { text-align: center; font-size: 15px; color: #57536e; }
body .crml-ez-tl-relv { display: flex; align-items: center; gap: 3px; width: 100%; max-width: 280px; height: 40px; }
body .crml-ez-tl-relv span { flex: 1; height: 100%; border-radius: 3px; background: #c62828; opacity: .5; transform: scaleY(.08); }
body .crml-ez-tl-take { margin-top: 12px; padding: 12px 14px; border-radius: 14px; background: #eeecf3; color: #1a0f3e; }
body .crml-ez-tl .crml-ez-tl-sel { width: 100%; min-height: 48px; padding: 0 12px; border: 2px solid #c9c2dc; border-radius: 12px; background: #fff; color: #1a0f3e; font-size: 16px; font-weight: 700; }
body .crml-ez-tl-tr { margin-top: 16px; padding: 14px; border-radius: 16px; background: var(--tl-soft); color: var(--tl-deep); }
body .crml-ez-tl-trpair { display: flex; align-items: center; justify-content: space-around; gap: 10px; }
body .crml-ez-tl-trpair span { display: block; font-size: 12px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
body .crml-ez-tl-trpair b { display: block; font-size: 40px; line-height: 1.05; color: #1a0f3e; }
body .crml-ez-tl-trar { display: flex; color: var(--tl-ac); }
body .crml-ez-tl-tr p { margin: 10px 0 0; font-size: 15px; }
body .crml-ez-tl-ors { margin-top: 14px; font-weight: 800; color: #57536e; }
body .crml-ez-tl-ora { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 8px; }
body .crml-ez-tl .crml-ez-tl-orb { min-height: 52px; margin: 0; padding: 6px 8px; border: 2px solid #c9c2dc; border-radius: 14px; background: #fff; color: #1a0f3e; font-size: 15px; font-weight: 800; cursor: pointer; }
body .crml-ez-tl .crml-ez-tl-orb:disabled { cursor: default; opacity: .7; }
body .crml-ez-tl .crml-ez-tl-orb.is-ok { background: #e1f3e9; border-color: #1b7a4b; color: #1b7a4b; opacity: 1; }
body .crml-ez-tl .crml-ez-tl-orb.is-bad { background: #fce8e6; border-color: #8c1d18; color: #8c1d18; opacity: 1; }
@media (prefers-reduced-motion: reduce) { body .crml-ez-tl-red { transition: none; } }
/* <<< 835a strumenti */

/* >>> 686a tappa 5: orari liberi dei recuperi, avviso di sovrapposizione, cosa porto, repertorio, archivio */
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-slots { margin: 0 0 14px; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-slots-l { margin: 0 0 8px; font-family: var(--ez-font); font-size: 15px; font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-slots-g { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-slot { width: 100%; padding: 0; border: 2px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); color: var(--ez-ink); font-family: var(--ez-font); text-align: left; cursor: pointer; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-slot.is-on { border-color: var(--ez-ac); background: var(--ez-ac-soft); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-slot-in { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; box-sizing: border-box; width: 100%; min-height: 64px; padding: 10px 12px; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-slot-d { font-size: 15px; font-weight: 800; line-height: 1.25; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-slot-b { font-size: 13px; font-weight: 800; color: var(--ez-ac); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-busy { display: block; margin: 6px 0 0; padding: 10px 12px; border-radius: 12px; background: var(--ez-bad-soft); color: var(--ez-bad-deep); font-family: var(--ez-font); font-size: 14px; font-weight: 700; line-height: 1.35; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-porto { margin: 0 0 14px; padding: 12px 14px; border-radius: var(--ez-r-md); background: var(--ez-sede-soft); font-family: var(--ez-font); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-porto .crml-ez-cont-l { display: flex; align-items: center; gap: 6px; color: var(--ez-sede-deep); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-porto-t { display: block; box-sizing: border-box; width: 100%; margin: 8px 0; line-height: 1.4; resize: vertical }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-porto-r { display: flex; align-items: center; gap: 10px; }

.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-porto-ok { font-size: 14px; font-weight: 800; color: var(--ez-ok-deep); }
.crml-portal.crml-ez .crml-ez-porto-line { display: flex; align-items: center; gap: 8px; margin: -4px 0 12px; font-family: var(--ez-font); font-size: 15px; line-height: 1.35; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-porto-line svg { flex: none; color: var(--ez-sede); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-arch-list { display: flex; flex-direction: column; gap: 8px; margin: 0 0 16px; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-arch-i { padding: 12px 14px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); font-family: var(--ez-font); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-arch-h { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-arch-d { font-size: 15px; font-weight: 800; color: var(--ez-ac); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-arch-n { flex: 1 1 auto; font-size: 16px; font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-arch-p { margin: 6px 0 0; font-size: 15px; line-height: 1.4; color: var(--ez-ink); white-space: pre-line; }
/* <<< 686a tappa 5 */

/* >>> 686a tappa 4: profilo, scheda allievo, compensi, documenti, chat */
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-prof { display: none; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-prof-h { display: flex; align-items: center; gap: 10px; padding: 12px 12px 6px; }
.crml-portal.crml-ez .crml-ez-prof-av { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 36px; height: 36px; border-radius: 50%; background: var(--ez-ink); color: #fff; font-family: var(--ez-font); font-size: 16px; font-weight: 800; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-prof-n { font-family: var(--ez-font); font-size: 15px; font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-prof-l { display: flex; flex-direction: column; }
.crml-portal-wrap .crml-portal.crml-ez.crml-ez-nav2 a.crml-ez-prof-a { display: flex; align-items: center; gap: 10px; min-height: 40px; padding: 6px 12px; border-radius: 10px; color: var(--ez-ink); font-family: var(--ez-font); font-size: 15px; font-weight: 700 }
.crml-portal-wrap .crml-portal.crml-ez.crml-ez-nav2 a.crml-ez-prof-a svg { color: var(--ez-muted); }

.crml-portal.crml-ez .crml-ez-h1row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.crml-portal.crml-ez .crml-ez-h1row .crml-ez-h1 { flex: 1 1 auto; min-width: 0; }
.crml-portal.crml-ez .crml-ez-prof-btn { flex: none; height: 44px; border: 2px solid var(--ez-line-strong); border-radius: 50%; background: var(--ez-surface); color: var(--ez-ink); font-family: var(--ez-font); font-size: 17px; font-weight: 800; cursor: pointer }
body .crml-ez-prof-sheet { display: flex; flex-direction: column; gap: 4px; margin: 8px 0 14px; }
body .crml-ez-prof-sheet a { display: flex; align-items: center; gap: 12px; min-height: 48px; padding: 8px 12px; border-radius: 12px; background: #f3f0f8; color: #1a0f3e; font-size: 16px; font-weight: 700; text-decoration: none; }
body .crml-ez-prof-sheet a svg { color: #57536e; }
body .crml-ez-prof-sheet a.crml-ez-prof-a--out { color: #9f1c1c; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-nums--comp .crml-ez-num { display: block; border-radius: var(--ez-r-md); background: var(--ez-ac-soft); color: var(--ez-ac); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-nums--comp .crml-ez-num-v { color: var(--ez-ac); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-num-v--s { font-size: 17px; line-height: 1.25; }
.crml-portal-wrap .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-num-v a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-riep { margin: 0 0 16px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); font-family: var(--ez-font); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-riep summary { min-height: 48px; padding: 12px 14px; font-weight: 800; color: var(--ez-ink); cursor: pointer }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-riep-b { padding: 0 14px 14px; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-riep-t { width: 100%; margin-top: 12px; font-size: 14px }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-riep-t th, .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-riep-t td { padding: 8px 6px; text-align: left; vertical-align: top }

.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-riep-t tfoot td { font-weight: 800; border-bottom: 0; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-riep-amt { white-space: nowrap; font-variant-numeric: tabular-nums }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-stud-h { display: flex; align-items: center; gap: 14px; margin: 0 0 14px; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-stud-av { width: 52px; height: 52px; font-size: 22px; background: var(--ez-ac); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-stud-dots { display: flex; align-items: center; gap: 10px; margin: -6px 0 14px; font-family: var(--ez-font); }
.crml-portal-wrap .crml-portal.crml-ez.crml-ez-nav2 a.crml-ez-arch-i--link { display: block; color: var(--ez-ink); text-decoration: none; }
.crml-portal.crml-ez.crml-ez-nav2 a.crml-ez-arch-i--link .crml-ez-arch-h { display: flex; }
.crml-portal.crml-ez.crml-ez-nav2 a.crml-ez-arch-i--link .crml-ez-arch-p { display: block; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-stud-acts { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 16px; }
.crml-portal-wrap .crml-portal.crml-ez.crml-ez-nav2 a.crml-ez-cont-b { text-decoration: none; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-docs-list { display: flex; flex-direction: column; gap: 8px; margin: 0 0 16px; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-doc { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); font-family: var(--ez-font) }
.crml-portal-wrap .crml-portal.crml-ez.crml-ez-nav2 a.crml-ez-doc--link { color: var(--ez-ink) }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-doc-ic { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 40px; height: 40px; border-radius: 12px; background: var(--ez-ac-soft); color: var(--ez-ac); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-doc-ic--warn { background: var(--ez-cassa-soft); color: var(--ez-cassa-deep); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-doc-m { display: flex; flex: 1 1 0; flex-direction: column; gap: 2px; min-width: 0; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-doc-t { font-size: 16px; font-weight: 800; line-height: 1.25; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-doc-d { font-size: 14px; line-height: 1.35; color: var(--ez-muted); }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-doc .crml-ez-pill { flex: none; }
.crml-portal.crml-ez.crml-ez-nav2 .crml-ez-doc .crml-ez-cont-b { flex: none; }
.crml-portal.crml-ez .crml-chat-contact-avatar.is-ini { font-family: var(--ez-font); font-size: 15px; font-weight: 800; letter-spacing: .02em; color: #fff; }
@media (max-width: 539px) {
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-doc { flex-wrap: wrap; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-doc .crml-ez-doc-m { flex: 1 1 calc(100% - 52px); } /* con base 0 il testo restava una colonna stretta accanto al pulsante */
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-doc .crml-ez-cont-b, .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-doc .crml-ez-pill { margin-left: 52px; }
}
@media (min-width: 1024px), (min-width: 840px) and (orientation: landscape) {
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-prof { display: block; margin-top: 10px; padding-bottom: 6px; border-top: 1px solid var(--ez-line); }
  .crml-portal.crml-ez .crml-ez-prof-btn { visibility: hidden; height: 0; border: 0; overflow: hidden } /* display e forzato dai vecchi fogli sui pulsanti */
}
@media print {
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-riep { border: 0; }
  .crml-portal.crml-ez.crml-ez-nav2 .crml-ez-riep-b .crml-ez-cont-b { visibility: hidden; }
}
/* <<< 686a tappa 4 */
/* 700a - chat del maestro: corso e orario abituale sotto il nome dell'allievo */
.crml-portal.crml-ez .crml-chat-ez .crml-chat-ez-sub { overflow: hidden; margin: 1px 0 2px; font-family: var(--ez-font); font-size: 13px; font-weight: 700; line-height: 1.3; color: var(--ez-allievi); white-space: nowrap; text-overflow: ellipsis; }
/* >>> 722a home maestro: Da fare a riquadri (chat, prove, recuperi) e Il mio mese */
.crml-portal-wrap .crml-portal.crml-ez .crml-ez-nums.crml-ez-nums--fare,
.crml-portal-wrap .crml-portal.crml-ez .crml-ez-nums.crml-ez-nums--mese { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }

.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-num.crml-ez-num--warn { background: var(--ez-cassa-soft) }
.crml-portal.crml-ez .crml-ez-num--warn .crml-ez-num-l, .crml-portal.crml-ez .crml-ez-num--warn .crml-ez-num-v, .crml-portal.crml-ez .crml-ez-num--warn .crml-ez-num-s, .crml-portal.crml-ez .crml-ez-num--warn .crml-ez-num-go { color: var(--ez-cassa-deep); }
.crml-portal.crml-ez .crml-ez-num--fare .crml-ez-num-l { min-height: 2.6em; line-height: 1.3; } /* etichetta su due righe in ogni riquadro: i numeri restano allineati */
.crml-portal.crml-ez .crml-ez-num--fare .crml-ez-num-v { margin-top: 2px; }
.crml-portal.crml-ez .crml-ez-num-s { font-family: var(--ez-font); font-size: 12px; font-weight: 600; line-height: 1.3; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-num-go { display: flex; align-items: center; gap: 2px; margin-top: auto; padding-top: 8px; font-family: var(--ez-font); font-size: 13px; font-weight: 800; white-space: nowrap; color: var(--ez-allievi-deep); }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-num.crml-ez-num--mese { background: var(--ez-surface) }
.crml-portal.crml-ez .crml-ez-num--mese .crml-ez-num-in { padding: 10px 12px; }
.crml-portal.crml-ez .crml-ez-num--mese .crml-ez-num-l { font-size: 12px; }
.crml-portal.crml-ez .crml-ez-num--mese .crml-ez-num-v { font-size: 20px; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-num-of { font-size: 12px; font-weight: 600; color: var(--ez-muted); }
@media (max-width: 480px) { /* da telefono: il riquadro intero si tocca, la riga dell'azione non serve */
  .crml-portal.crml-ez .crml-ez-num--fare .crml-ez-num-in { padding: 10px; }
  .crml-portal.crml-ez .crml-ez-num--fare .crml-ez-num-l { font-size: 12px; }
  .crml-portal.crml-ez .crml-ez-num--fare .crml-ez-num-go { display: none; }
}
/* <<< 722a */
/* >>> 730a home di allievo e genitore riorganizzata (CRML_Portal_Home_V2::render_allievo_home_easy)
   In evidenza una sola cosa, prossima lezione, Da fare a righe come il maestro, i quattro numeri
   del mese, le lezioni del mese a caselle, ultime lezioni. Le colonne seguono lo spazio vero
   della home (container query), non la larghezza della finestra: accanto al menu da computer
   la home e stretta anche su uno schermo grande. */
.crml-portal.crml-ez .crml-ez-fh { container-type: inline-size; container-name: ezfh; }
.crml-portal.crml-ez .crml-ez-fh .crml-ez-h1 { margin-bottom: 2px; }
.crml-portal.crml-ez .crml-ez-fh-sub { margin: 0 0 2px; font-family: var(--ez-font); font-size: 17px; font-weight: 700; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-fh-cols { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0 22px; align-items: start; margin-top: 14px; }
@container ezfh (min-width: 860px) {
  .crml-portal.crml-ez .crml-ez-fh-cols { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); }
}
.crml-portal.crml-ez .crml-ez-fh-main { min-width: 0; }
.crml-portal.crml-ez .crml-ez-fh-side { min-width: 0; container-type: inline-size; container-name: ezfhs; }
.crml-portal.crml-ez .crml-ez-fh .crml-ez-home-label { font-size: 14px }
.crml-portal.crml-ez .crml-ez-fh-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 0 0 8px; }
.crml-portal.crml-ez .crml-ez-fh-head .crml-ez-home-label { margin: 0; }
.crml-portal-wrap .crml-portal.crml-ez .crml-ez-fh-head a.crml-ez-today-link { margin: 0; font-size: 15px; }
.crml-portal.crml-ez .crml-ez-fh-mon { font-family: var(--ez-font); font-size: 14px; font-weight: 700; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-fh-ct { font-family: var(--ez-font); font-size: 17px; font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-fh-card { margin: 0 0 14px; padding: 16px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-lg); background: var(--ez-surface); }
/* In evidenza: il riquadro di sempre (recupero, pagamenti, rinnovo, percorso...) */
.crml-portal.crml-ez .crml-ez-fh-ev { margin: 0 0 14px; }
.crml-portal.crml-ez .crml-ez-fh-box { padding: 16px; border-radius: var(--ez-r-lg); background: var(--ez-cassa-soft); color: var(--ez-cassa-deep); font-family: var(--ez-font); }
.crml-portal.crml-ez .crml-ez-fh-eye { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
.crml-portal.crml-ez .crml-ez-fh-box-t { margin: 6px 0 2px; font-size: 20px; font-weight: 800; line-height: 1.25; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-fh-box-s { margin: 0 0 12px; font-size: 15px; line-height: 1.4; }
/* 752a: pagamento in home finche non e incassato (bonifico + allega la ricevuta) */
.crml-portal.crml-ez .crml-ez-fh-pay--late { background: var(--ez-bad-soft); color: var(--ez-bad-deep); }
.crml-portal.crml-ez .crml-ez-fh-pay--wait { background: var(--ez-sede-soft); color: var(--ez-sede-deep); }
.crml-portal.crml-ez .crml-ez-fh-pay-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.crml-portal.crml-ez .crml-ez-fh-pay-pill { flex: none; padding: 4px 12px; border-radius: 999px; background: var(--ez-surface); font-size: 14px; font-weight: 800; color: var(--ez-cassa-deep); }
.crml-portal.crml-ez .crml-ez-fh-pay--late .crml-ez-fh-pay-pill { color: var(--ez-bad-deep); }
.crml-portal.crml-ez .crml-ez-fh-pay--wait .crml-ez-fh-pay-pill { color: var(--ez-sede-deep); }
.crml-portal.crml-ez .crml-ez-fh-step { display: flex; align-items: center; gap: 10px; margin: 18px 0 0; font-size: 17px; font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-fh-step-n { flex: none; display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; background: var(--ez-cassa); color: #fff; font-size: 15px; font-weight: 800; }
.crml-portal.crml-ez .crml-ez-fh-pay--late .crml-ez-fh-step-n { background: var(--ez-bad); }
/* 752a: Pagamenti > Movimenti col riquadro della home */
.crml-portal.crml-ez .crml-ez-pagmov { margin: 0 0 14px; }
.crml-portal.crml-ez .crml-ez-pagmov .crml-mov-retry-pay { display: block; margin-top: 10px; text-align: center; }
.crml-portal.crml-ez .crml-pay-done-h { margin: 18px 4px 8px; font-family: var(--ez-font); font-size: 15px; font-weight: 800; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-fh-pay-pill svg { vertical-align: -3px; }
.crml-portal.crml-ez .crml-ez-fh-opt > summary { list-style: none; cursor: pointer; font-size: 15px; font-weight: 700; color: var(--ez-allievi-deep); text-decoration: underline; }
.crml-portal.crml-ez .crml-ez-fh-opt > summary::-webkit-details-marker { display: none; }
.crml-portal.crml-ez .crml-ez-fh-opt > summary::marker { content: ""; }
.crml-portal.crml-ez .crml-ez-fh-opt-in { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }
.crml-portal.crml-ez .crml-ez-fh-opt-in label { display: flex; flex-direction: column; gap: 4px; font-size: 14px; font-weight: 700; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-fh-opt-in input { box-sizing: border-box; width: 100%; min-height: 46px; padding: 8px 12px; border: 2px solid var(--ez-line-strong); border-radius: 12px; font-size: 16px; }
.crml-portal.crml-ez .crml-ez-fh-up > summary.crml-ez-fh-again { list-style: none; cursor: pointer; margin-top: 4px; font-size: 15px; font-weight: 700; color: var(--ez-sede-deep); text-decoration: underline; }
.crml-portal.crml-ez .crml-ez-fh-up-hint { margin-top: 8px; font-size: 14px; line-height: 1.4; text-align: center; }
.crml-portal.crml-ez .crml-ez-fh-pay-amt { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; margin: 8px 0 2px; }
.crml-portal.crml-ez .crml-ez-fh-pay-amt b { font-size: 34px; font-weight: 800; line-height: 1.1; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-fh-pay-amt span { font-size: 16px; font-weight: 700; }
.crml-portal.crml-ez .crml-ez-fh-pay-desc { margin: 0 0 12px; font-size: 14px; line-height: 1.4; overflow-wrap: anywhere; }
.crml-portal.crml-ez .crml-ez-fh-pay-how { margin: 0 0 4px; font-size: 15px; line-height: 1.45; }
.crml-portal.crml-ez .crml-ez-fh-pay-bad { display: flex; align-items: flex-start; gap: 8px; margin: 0 0 12px; padding: 10px 12px; border-radius: var(--ez-r-sm); background: var(--ez-surface); color: var(--ez-bad-deep); font-size: 15px; font-weight: 700; line-height: 1.4; }
.crml-portal.crml-ez .crml-ez-fh-pay-bad svg { flex: none; margin-top: 1px; }
.crml-portal.crml-ez .crml-ez-fh-pay-list { margin: 0 0 12px; border-top: 1px solid rgba(26, 15, 62, .1); }
.crml-portal.crml-ez .crml-ez-fh-pay-li { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 8px 0; border-bottom: 1px solid rgba(26, 15, 62, .1); font-size: 15px; line-height: 1.35; }
.crml-portal.crml-ez .crml-ez-fh-pay-li span { min-width: 0; overflow-wrap: anywhere; }
.crml-portal.crml-ez .crml-ez-fh-pay-li em { font-style: normal; font-weight: 700; color: var(--ez-sede-deep); }
.crml-portal.crml-ez .crml-ez-fh-pay-li b { flex: none; color: var(--ez-ink); }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-fh-pay-link { display: inline-flex; align-items: center; gap: 4px; font-size: 15px; font-weight: 700; color: var(--ez-sede-deep); text-decoration: none; }
.crml-portal.crml-ez .crml-ez-fh-pay .crml-iban-paybox.crml-ez-iban .crml-ez-iban-body { background: var(--ez-surface); }
.crml-portal.crml-ez .crml-ez-fh-pay .crml-iban-paybox.crml-ez-iban .crml-ez-kv-box { background: #fffaf3; }
.crml-portal.crml-ez .crml-ez-fh-up { margin-top: 10px; }
.crml-portal.crml-ez .crml-ez-fh-up > summary { list-style: none; }
.crml-portal.crml-ez .crml-ez-fh-up > summary::-webkit-details-marker { display: none; }
.crml-portal.crml-ez .crml-ez-fh-up > summary::marker { content: ""; }
.crml-portal.crml-ez .crml-ez-fh-up-sum { display: flex; align-items: center; justify-content: center; gap: 10px; box-sizing: border-box; min-height: 56px; padding: 12px 18px; border: 2px solid var(--ez-ink); border-radius: 18px; background: var(--ez-ink); color: #fff; font-family: var(--ez-font); font-size: 17px; font-weight: 800; line-height: 1.2; text-decoration: none; cursor: pointer; }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-fh-up-a { margin-top: 10px; color: #fff; }
.crml-portal.crml-ez .crml-ez-fh-up[open] > .crml-ez-fh-up-sum { background: var(--ez-surface); color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-fh-up-form { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; padding: 14px 16px; border-radius: 18px; background: var(--ez-surface); }
.crml-portal.crml-ez .crml-ez-fh-up-l { font-size: 15px; font-weight: 700; line-height: 1.4; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-fh-up-file { box-sizing: border-box; width: 100%; max-width: 100%; padding: 12px; border: 2px dashed var(--ez-line-strong); border-radius: 14px; background: var(--ez-bg); font-size: 15px; }
.crml-portal.crml-ez .crml-ez-fh-up-go { --cp-gradient: var(--ez-ok); display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 52px; border: 0; border-radius: 16px; background: var(--ez-ok); color: #fff; font-family: var(--ez-font); font-size: 17px; font-weight: 800; cursor: pointer; }
/* Tutto in ordine */
.crml-portal.crml-ez .crml-ez-fh-ok { display: flex; align-items: center; gap: 12px; margin: 0 0 14px; padding: 14px 16px; border-radius: var(--ez-r-md); background: var(--ez-ok-soft); color: var(--ez-ok-deep); font-family: var(--ez-font); }
.crml-portal.crml-ez .crml-ez-fh-ok-ic { flex: none; display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: var(--ez-ok); color: #fff; }
.crml-portal.crml-ez .crml-ez-fh-ok-tx { display: flex; flex-direction: column; gap: 2px; min-width: 0; font-size: 15px; line-height: 1.4; }
.crml-portal.crml-ez .crml-ez-fh-ok-tx b { font-size: 17px; font-weight: 800; }
/* Prossima lezione */
.crml-portal.crml-ez .crml-ez-fh-next .crml-ez-pill { padding: 4px 12px; font-size: 14px; }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-fh-next-a { display: block; color: var(--ez-ink); text-decoration: none; }
.crml-portal.crml-ez .crml-ez-fh-next-in { display: flex; align-items: center; gap: 14px; }
.crml-portal.crml-ez .crml-ez-fh-cal { flex: none; display: flex; flex-direction: column; align-items: center; justify-content: center; width: 70px; height: 82px; border-radius: 18px; background: var(--ez-allievi); color: #fff; font-family: var(--ez-font); font-size: 13px; font-weight: 700; letter-spacing: .04em; line-height: 1.15; text-transform: uppercase; }
.crml-portal.crml-ez .crml-ez-fh-cal b { font-size: 30px; font-weight: 800; letter-spacing: 0; line-height: 1.05; }
.crml-portal.crml-ez .crml-ez-fh-next-tx { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 2px; font-family: var(--ez-font); }
.crml-portal.crml-ez .crml-ez-fh-next-h { font-size: 26px; font-weight: 800; line-height: 1.1; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-fh-next-c { font-size: 17px; font-weight: 700; line-height: 1.3; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-fh-next-m { font-size: 15px; line-height: 1.35; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-fh-go { flex: none; display: flex; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-fh-acts { display: flex; margin-top: 14px; }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-fh-abs { flex: 1 1 auto; box-sizing: border-box; border: 2px solid var(--ez-line-strong); border-radius: 16px; background: var(--ez-surface); color: var(--ez-ink); text-decoration: none; }
.crml-portal.crml-ez .crml-ez-fh-abs-in { display: flex; align-items: center; justify-content: center; gap: 10px; min-height: 52px; padding: 0 16px; font-family: var(--ez-font); font-size: 17px; font-weight: 700; }
.crml-portal.crml-ez .crml-ez-fh-hint { margin-top: 8px; font-family: var(--ez-font); font-size: 14px; line-height: 1.4; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-fh-void { display: flex; align-items: center; gap: 12px; font-family: var(--ez-font); font-size: 16px; line-height: 1.4; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-fh-void svg { flex: none; color: var(--ez-allievi); }
/* Da fare: righe del maestro con una riga di dettaglio e la barra del percorso */
.crml-portal.crml-ez .crml-ez-fh .crml-ez-todos { margin-bottom: 14px; }
.crml-portal.crml-ez .crml-ez-fh-tt { display: block; }
.crml-portal.crml-ez .crml-ez-todo-s { display: block; margin-top: 2px; font-family: var(--ez-font); font-size: 14px; font-weight: 600; line-height: 1.35; color: var(--ez-muted); -webkit-text-fill-color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-fh-prog { display: flex; align-items: center; gap: 8px; margin-top: 6px; }
.crml-portal.crml-ez .crml-ez-fh-prog-b { flex: 1 1 auto; height: 6px; border-radius: 999px; background: var(--ez-sede-soft); overflow: hidden; }
.crml-portal.crml-ez .crml-ez-fh-prog-b > span { display: block; height: 100%; border-radius: 999px; background: var(--ez-sede); }
.crml-portal.crml-ez .crml-ez-fh-prog-n { flex: none; font-size: 13px; font-weight: 800; color: var(--ez-sede-deep); -webkit-text-fill-color: var(--ez-sede-deep); }
/* Il mio mese: sempre i quattro numeri, grandi; due per riga, quattro se la colonna e larga */
.crml-portal.crml-ez .crml-ez-fh .crml-ez-nums.crml-ez-nums--fam { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-bottom: 14px; }
@container ezfhs (min-width: 600px) {
  .crml-portal.crml-ez .crml-ez-fh .crml-ez-nums.crml-ez-nums--fam { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-num.crml-ez-num--fam { border: 1px solid var(--ez-line); background: var(--ez-surface); color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-num--fam .crml-ez-num-in { min-height: 112px; padding: 14px 16px; }
.crml-portal.crml-ez .crml-ez-num--fam .crml-ez-num-l { font-size: 15px; line-height: 1.25; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-num--fam .crml-ez-num-v { font-size: 34px; color: var(--ez-allievi-deep); }
.crml-portal.crml-ez .crml-ez-num--fam .crml-ez-num-of { font-size: 16px; font-weight: 700; }
.crml-portal.crml-ez .crml-ez-num--fam .crml-ez-num-s { font-size: 14px; }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-num.crml-ez-num--fam.crml-ez-num--warn { border-color: #f0d9b5; background: var(--ez-cassa-soft); color: var(--ez-cassa-deep); }
.crml-portal.crml-ez .crml-ez-num--fam.crml-ez-num--warn .crml-ez-num-l,
.crml-portal.crml-ez .crml-ez-num--fam.crml-ez-num--warn .crml-ez-num-v,
.crml-portal.crml-ez .crml-ez-num--fam.crml-ez-num--warn .crml-ez-num-of,
.crml-portal.crml-ez .crml-ez-num--fam.crml-ez-num--warn .crml-ez-num-s { color: var(--ez-cassa-deep); }
.crml-portal.crml-ez .crml-ez-num--fam.crml-ez-num--zero .crml-ez-num-v { color: #6f6b85; }
/* Le lezioni del mese, una casella per data */
.crml-portal.crml-ez .crml-ez-fh-days { display: grid; grid-template-columns: repeat(auto-fill, minmax(64px, 1fr)); gap: 8px; }
.crml-portal.crml-ez .crml-ez-fh-day { display: flex; flex-direction: column; align-items: center; gap: 1px; padding: 8px 4px; border: 2px solid transparent; border-radius: 14px; background: var(--ez-chip); color: var(--ez-chip-ink); font-family: var(--ez-font); font-size: 13px; font-weight: 700; line-height: 1.2; text-align: center; }
.crml-portal.crml-ez .crml-ez-fh-day > span:first-child { text-transform: capitalize; }
.crml-portal.crml-ez .crml-ez-fh-day b { font-size: 22px; font-weight: 800; line-height: 1.1; }
.crml-portal.crml-ez .crml-ez-fh-day--ok { background: var(--ez-ok-soft); color: var(--ez-ok-deep); }
.crml-portal.crml-ez .crml-ez-fh-day--warn { background: var(--ez-cassa-soft); color: var(--ez-cassa-deep); }
.crml-portal.crml-ez .crml-ez-fh-day--next { border-color: var(--ez-allievi); background: var(--ez-surface); color: var(--ez-allievi-deep); }
/* Ultime lezioni: righe della settimana del maestro con lo stato a destra */
.crml-portal.crml-ez .crml-ez-fh .crml-ez-week-box { margin-bottom: 14px; }
.crml-portal.crml-ez .crml-ez-fh .crml-ez-week-in { min-height: 58px; }
.crml-portal.crml-ez .crml-ez-fh-lr { display: flex; flex-direction: column; min-width: 0; }
.crml-portal.crml-ez .crml-ez-fh .crml-ez-week-in .crml-ez-pill { flex: none; padding: 5px 11px; font-size: 13px; }
.crml-portal.crml-ez .crml-ez-fh .crml-p2-pkgstatus { margin: 0 0 14px; }
@media (min-width: 1024px), (min-width: 840px) and (orientation: landscape) {
  /* da computer il portale e largo 760px: con il menu a sinistra la home restava una colonna di 460px. Come la chat, solo qui si allarga */
  .crml-portal.crml-ez.crml-ez-app.crml-ez-nav2:has(.crml-ez-fh) { max-width: 1180px; }
}
@media (max-width: 839px), (max-width: 1023px) and (orientation: portrait) {
  /* la barra delle aree sta in basso: il cerchio della Chat (allievi, genitori e maestri) resta sopra la barra */
  body:has(.crml-portal.crml-ez.crml-ez-nav2) .crml-chatpop-fab.crml-chatpop-fab--ez { right: 14px; bottom: calc(86px + env(safe-area-inset-bottom, 0px)); }
}
/* <<< 730a */

/* ===== 763a - Al posto del tema Vivid (portal-themes.css, tolto dal portale) =====
   Le variabili --crml-* del tema le usano ancora portal.css, v2-skin e i moduli incorporati:
   stessi valori di prima. Fondo chiaro e testo inchiostro sulla cornice. Il carattere resta quello
   del vestito (--ez-font): prima Space Grotesk del tema arrivava solo su barra, campi e finestre. */
.crml-portal-wrap,
.crml-portal.crml-ez {
  --crml-bg: #fafbff;
  --crml-bg-panel: #ffffff;
  --crml-bg-subtle: #f6f4fb;
  --crml-bg-hover: rgba(186, 90, 135, .06);
  --crml-text: #1a0f3e;
  --crml-text-muted: #6b6b86;
  --crml-text-faint: #9ca0b8;
  --crml-text-on-accent: #ffffff;
  --crml-border: #ece8f5;
  --crml-border-soft: #f4f0f9;
  --crml-accent: #ba5a87;
  --crml-accent-2: #6a4b9b;
  --crml-accent-3: #00b4d8;
  --crml-accent-soft: rgba(186, 90, 135, .10);
  --crml-brand-gradient: linear-gradient(135deg, #ff6b9d 0%, #ba5a87 30%, #6a4b9b 60%, #2a3e7f 100%);
  --crml-brand-gradient-soft: linear-gradient(135deg, rgba(255, 107, 157, .15), rgba(106, 75, 155, .10));
  --crml-shadow-sm: 0 2px 8px rgba(26, 15, 62, .06);
  --crml-shadow-md: 0 8px 24px rgba(26, 15, 62, .08);
  --crml-shadow-lg: 0 20px 50px -20px rgba(186, 90, 135, .25);
  --crml-font-sans: var(--ez-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);
  --crml-radius-sm: 8px;
  --crml-radius-md: 12px;
  --crml-radius-lg: 18px;
  --crml-transition: all .25s cubic-bezier(.4, 0, .2, 1);
}
html body .crml-portal-wrap { color: #1a0f3e; background: #fafbff; }
.crml-portal.crml-ez { position: relative; }
/* il tema metteva i blocchi del portale in position:relative (per la sua decorazione): stesso aggancio per gli
   elementi posizionati, ma con forza zero e senza z-index, cosi barre fisse e finestre restano sopra a tutto */
:where(.crml-portal.crml-ez) > * { position: relative; }

/* 763a - Da portal-responsive-fixes.css (tolto): note e testi piccoli mai sotto 12px a telefono */
@media (max-width: 540px) {
  html body .crml-portal-wrap small,
  html body .crml-portal-wrap .crml-hint,
  html body .crml-portal-wrap .crml-muted,
  html body .crml-portal-wrap .cp-muted { font-size: 12px; line-height: 1.4; }
}

/* ===== 763a - Dal foglio di transizione (portal-easy-over.css): regole che vincono anche senza !important.
   Stesso selettore forte di prima, cosi superano i vecchi fogli per specificita. Generate da sposta.py. ===== */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-body { font-family: var(--ez-font); font-size: 16px; line-height: 1.45; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-note { font-size: 15px; line-height: 1.4; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-link-sm { font-weight: 800; color: var(--ez-allievi-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-btn { -webkit-text-fill-color: #fff; text-transform: none; letter-spacing: 0; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-fpill { --crml-primary: var(--ez-chip-ink); padding: 10px 16px; border: 0 solid transparent; border-radius: 999px; background: var(--ez-chip); background-image: none; color: var(--ez-chip-ink); -webkit-text-fill-color: var(--ez-chip-ink); font-family: var(--ez-font); font-size: 15px; font-weight: 800; box-shadow: none; text-decoration: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-subtabs { gap: 8px; padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-subtab { --crml-primary: var(--ez-chip-ink); min-height: 48px; padding: 10px 14px; border: 0 solid transparent; border-radius: 999px; background: var(--ez-chip); background-image: none; color: var(--ez-chip-ink); -webkit-text-fill-color: var(--ez-chip-ink); font-family: var(--ez-font); font-size: 15px; font-weight: 800; box-shadow: none; text-decoration: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-subtab .crml-subtab-lbl { font-size: 15px; font-weight: 800; color: inherit; -webkit-text-fill-color: currentColor; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-subtab .crml-subtab-badge { background: var(--ez-bacheca); color: #fff; -webkit-text-fill-color: #fff; font-size: 13px; font-weight: 800; }
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 { padding: 5px 12px; border: 1px solid transparent; border-radius: 999px; font-weight: 800; text-transform: none; letter-spacing: 0; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-status-badge-mini { padding: 3px 9px; border: 1px solid transparent; border-radius: 999px; font-size: 12px; font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-reg-item { padding: 14px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-reg-name,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-item-title { font-size: 17px; font-weight: 800; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-reg-meta,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-item-meta { font-size: 15px; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-reg-item-icon { border-radius: 50%; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-reg-sec { border: 0; border-radius: 14px; background: var(--ez-bg); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-reg-sec-lbl { font-size: 13px; font-weight: 800; color: var(--ez-allievi-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-reg-sec-body { font-size: 16px; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-note-box { border-radius: 18px; box-shadow: none; font-size: 16px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-cal-day-hdr { background: var(--ez-bg); color: var(--ez-ink); font-size: 15px; font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-cal-event { min-height: 52px; padding: 10px 12px; border-radius: 14px; font-size: 16px; font-weight: 700; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-cal-evt-time { font-size: 15px; font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-cal-evt-name { font-size: 16px; font-weight: 700; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-cal-leg { font-size: 14px; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pay-hero { border: 0; border-radius: 22px; background: var(--ez-cassa); background-image: none; color: #fff; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pay-hero-ico { background: rgba(255, 255, 255, .18); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pay-hero-lbl { font-size: 15px; font-weight: 700; color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pay-hero-amt { font-size: 36px; font-weight: 800; letter-spacing: -0.02em; color: #fff; -webkit-text-fill-color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pay-hero-sub { font-size: 15px; color: #fff; opacity: 1; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pay-hero-cta { min-height: 52px; padding: 12px 18px; border: 0; border-radius: 18px; background: #fff; background-image: none; color: var(--ez-cassa-deep); -webkit-text-fill-color: var(--ez-cassa-deep); font-size: 16px; font-weight: 800; text-decoration: none; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-home-quick-grid { grid-template-columns: repeat(var(--ez-nav-cols, 2), minmax(0, 1fr)); gap: 8px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-hero { border: 1px solid #efc6d8; border-radius: 22px; background: var(--ez-bacheca-soft); background-image: none; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-hero-icon { border-radius: 18px; background: var(--ez-bacheca); background-image: none; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-hero-eyebrow { font-size: 13px; font-weight: 800; letter-spacing: 0; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-hero-sub { font-size: 16px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-hero-stat { border-color: #efc6d8; font-size: 14px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-hero-stat strong { font-size: 16px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-cat { border: 1px solid var(--ez-line); border-radius: 18px; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-cat-head { background: var(--ez-bg); background-image: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-cat-head h3 { -webkit-text-fill-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-cat-desc { font-size: 15px; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-reset-cat { padding: 8px 14px; border: 0 solid transparent; background: var(--ez-chip); background-image: none; color: var(--ez-chip-ink); -webkit-text-fill-color: var(--ez-chip-ink); font-size: 14px; font-weight: 800; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-event { border-radius: 14px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-event-label { font-size: 17px; font-weight: 800; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-event-desc { font-size: 15px; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-event-default { font-size: 14px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-toggle.is-on { background: var(--ez-ok); background-image: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-gdpr-banner { border: 1px solid #f0d9b5; border-radius: 18px; background: var(--ez-cassa-soft); background-image: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-gdpr-title { font-size: 17px; color: var(--ez-cassa-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-gdpr-text { font-size: 15px; }
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 { padding: 10px 16px; border-radius: 14px; font-size: 15px; font-weight: 800; background-image: none; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-gdpr-btn.is-primary { border-color: transparent; color: #fff; -webkit-text-fill-color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-cb-banner { border-radius: 18px; background: var(--ez-bad-soft); background-image: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-cb-title { font-size: 17px; color: var(--ez-bad-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-cb-text { font-size: 15px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-footer-help { border-color: var(--ez-line); border-radius: 18px; background: var(--ez-surface); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-footer-help h4 { font-size: 17px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-footer-help li { font-size: 15px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-icon { border-radius: 18px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-eyebrow { -webkit-text-fill-color: var(--ez-sede-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-sub { -webkit-text-fill-color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-meta { -webkit-text-fill-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-hint { font-size: 14px; -webkit-text-fill-color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-compose-card { border: 1px solid var(--ez-line); border-radius: 18px; background: var(--ez-surface); box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-compose-title,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-disp-title { font-size: 20px; font-weight: 800; line-height: 1.2; color: var(--ez-ink); }
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 { font-size: 15px; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-label,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-disp-add-label { text-transform: none; letter-spacing: 0; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-disp-add { border: 1px solid var(--ez-line); border-radius: 18px; background: var(--ez-bg); box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-alert { border-radius: 18px; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-alert--warning { background: var(--ez-cassa-soft); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-alert--success { background: var(--ez-ok-soft); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-card { border: 1px solid var(--ez-line); box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-card-title { font-size: 18px; font-weight: 800; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-kpi { border: 1px solid var(--ez-line); border-radius: 18px; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-kpi-label { font-size: 13px; font-weight: 800; letter-spacing: 0; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-kpi-value { font-size: 28px; font-weight: 800; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-wrow-title { font-size: 16px; font-weight: 800; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-wrow-meta { font-size: 14px; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-card,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anagform-hero { border: 1px solid #f0d9b5; border-radius: 22px; background: var(--ez-cassa-soft); background-image: none; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-title { font-size: 19px; font-weight: 800; color: var(--ez-cassa-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-chip { font-size: 14px; font-weight: 700; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-cta { padding: 12px 18px; font-size: 16px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anagform-sec { border: 1px solid var(--ez-line); border-radius: 18px; background: var(--ez-surface); box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-wa-cta { border: 1px solid #bfe3cf; border-radius: 18px; background: var(--ez-ok-soft); background-image: none; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-wa-txt { font-size: 15px; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-wa-btn { min-height: 48px; padding: 10px 16px; border: 0; border-radius: 18px; background: var(--ez-ok); background-image: none; -webkit-text-fill-color: #fff; font-size: 15px; font-weight: 800; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-sidebar-title { font-size: 20px; font-weight: 800; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-chat-new-btn { --crml-primary: var(--ez-bacheca); -webkit-text-fill-color: #fff; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-filter-btn { --crml-primary: var(--ez-chip-ink); -webkit-text-fill-color: var(--ez-chip-ink); font-weight: 800; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-contact-name { font-size: 17px; font-weight: 800; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-send-btn { border: 0; background: var(--ez-bacheca); background-image: none; color: #fff; -webkit-text-fill-color: #fff; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-back-link { min-height: 48px; padding: 10px 16px; border: 2px solid var(--ez-line); border-radius: 999px; background: var(--ez-surface); color: var(--ez-ink); -webkit-text-fill-color: var(--ez-ink); font-size: 15px; font-weight: 800; text-decoration: none; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-lezione-card { border: 1px solid var(--ez-line); border-radius: 22px; background: var(--ez-surface); box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-lezione-title { font-size: 22px; font-weight: 800; line-height: 1.2; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-lezione-meta-item { border: 0 solid transparent; border-radius: 14px; background: var(--ez-bg); box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-meta-lbl { font-size: 13px; font-weight: 800; letter-spacing: 0; text-transform: none; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-meta-val { color: var(--ez-ink); overflow-wrap: anywhere; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-lezione-sec { border: 1px solid var(--ez-line); border-radius: 18px; background: var(--ez-surface); box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-lezione-sec-title { border-color: var(--ez-line); font-size: 15px; font-weight: 800; letter-spacing: 0; text-transform: none; color: var(--ez-allievi-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-lezione-sec-body { font-size: 16px; line-height: 1.45; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-piano-panel-head { font-size: 16px; font-weight: 800; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-piano-panel-count { font-size: 14px; font-weight: 700; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-piano-panel-row { font-size: 16px; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-piano-panel-t { font-size: 16px; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-card { border: 1px solid var(--ez-line); border-radius: 18px; background: var(--ez-surface); background-image: none; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-card__head { font-size: 18px; font-weight: 800; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-card__foot { border-color: var(--ez-line); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-label,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-area__label { font-size: 15px; letter-spacing: 0; text-transform: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-star { min-width: 48px; border-radius: 14px; font-size: 22px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-stars__hint { font-size: 14px; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-rating10__pill { min-width: 44px; border-radius: 14px; font-size: 16px; font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-tag { padding: 10px 14px; border-radius: 999px; font-size: 15px; font-weight: 700; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-btn { padding: 12px 18px; border: 2px solid var(--ez-ink); border-radius: 18px; font-family: var(--ez-font); font-size: 16px; font-weight: 800; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pag-sec-title { font-size: 18px; font-weight: 800; letter-spacing: 0; text-transform: none; color: var(--ez-ink); }
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 { background: var(--ez-surface); background-image: none; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-item.crml-mov-item--pending { flex-wrap: wrap; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-item--pending > .crml-mov-amt { order: -1; flex: 1 1 100%; margin: 0 0 4px; text-align: left; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-item--pending > .crml-mov-info { flex: 1 1 100%; min-width: 0; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-receipt-icon { width: 44px; height: 44px; flex: none; border-radius: 50%; background: var(--ez-cassa-soft); background-image: none; }
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-size: 17px; line-height: 1.25; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-receipt-date,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-meta,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-date { font-size: 15px; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-amt { font-size: 18px; font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-amt.crml-mov-pos { color: var(--ez-ok-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-amt.crml-mov-neg { color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-badge-paid,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-badge-pending { border: 0 solid transparent; text-transform: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-receipt-dl { min-height: 48px; padding: 10px 16px; border: 2px solid var(--ez-ink); border-radius: 18px; background: var(--ez-surface); background-image: none; color: var(--ez-ink); -webkit-text-fill-color: var(--ez-ink); font-size: 15px; font-weight: 800; text-decoration: none; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-receipt-sign-hint,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-evidence-hint { font-size: 15px; line-height: 1.4; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-evidence-box { border: 1px dashed #d9d2e8; border-radius: 14px; background: #fff; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-evidence-btn { padding: 10px 16px; border-radius: 18px; -webkit-text-fill-color: #fff; font-size: 15px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-big { letter-spacing: -0.02em; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-hours { box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-hours,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-perc,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-meta,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-notes { line-height: 1.4; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-importo { border: 0 solid transparent; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-notes { border: 0 solid transparent; border-radius: 14px; background: var(--ez-bg); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pkg-lez-details summary { min-height: 48px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-item { padding: 14px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-percorso-hero { border: 0 solid transparent; border-radius: 22px; background: var(--ez-allievi); background-image: none; color: #fff; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-percorso-hero-title { font-size: 21px; font-weight: 800; line-height: 1.2; color: #fff; -webkit-text-fill-color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-percorso-hero-sub { font-size: 15px; color: #fff; -webkit-text-fill-color: #fff; opacity: 1; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-percorso-bar { border-radius: 999px; background: var(--ez-chip); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-percorso-bar i { border-radius: 999px; background: var(--ez-allievi); background-image: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-percorso-visione { border: 1px solid #c5e3ee; border-radius: 18px; background: var(--ez-sede-soft); font-size: 16px; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-btn-visione { padding: 10px 16px; border-radius: 18px; --cp-gradient: var(--ez-sede); --cp-shadow-accent: none; -webkit-text-fill-color: #fff; font-size: 15px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-percorso-sec { font-size: 18px; font-weight: 800; letter-spacing: 0; text-transform: none; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-percorso-fase { border: 1px solid var(--ez-line); border-radius: 18px; background: var(--ez-surface); box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-percorso-fase-top { font-size: 16px; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-card-h { border-color: var(--ez-line); font-size: 18px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-card-h strong { font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cc-dot { width: 40px; height: 40px; border-color: #d9d2e8; font-size: 16px; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cc-dot.cc-dot-active { background: var(--ez-allievi-soft); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cc-line { background: var(--ez-line); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cc-check { padding: 14px 0; border-color: var(--ez-line); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cc-check strong { font-size: 16px; font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cc-box { width: 32px; height: 32px; border-color: #d9d2e8; border-radius: 10px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-rin { --rin-b: var(--ez-allievi); --rin-b700: var(--ez-allievi-deep); --rin-b100: var(--ez-allievi-soft); --rin-b50: var(--ez-allievi-soft); --rin-bd: var(--ez-line); --rin-bd2: #d9d2e8; --rin-fg: var(--ez-ink); --rin-fg2: var(--ez-ink); --rin-mu: var(--ez-muted); --rin-s: var(--ez-surface); --rin-sub: var(--ez-bg); --rin-ok: var(--ez-ok-deep); --rin-okbg: var(--ez-ok-soft); --rin-err: var(--ez-bad-deep); font-family: var(--ez-font); }
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 { font-size: 15px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-rin-label { font-size: 15px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-rin-pill { padding: 5px 12px; font-size: 13px; font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-rin .crml-rin-opt { padding: 14px; border-radius: 18px; font-size: 16px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-rin-opt-t { font-size: 17px; font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-rin-btn { padding: 12px 18px; border-radius: 18px; font-size: 16px; font-weight: 800; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pro-hero { border: 1px solid #c5e3ee; border-radius: 22px; background: var(--ez-sede-soft); background-image: none; box-shadow: none; }
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 { -webkit-text-fill-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pro-cta { padding: 12px 18px; border-radius: 18px; --cp-gradient: var(--ez-allievi); --cp-shadow-accent: none; -webkit-text-fill-color: #fff; font-size: 16px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pro-back { font-size: 15px; font-weight: 800; color: var(--ez-ink); -webkit-text-fill-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-btn { -webkit-text-fill-color: #fff; text-decoration: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-label { font-size: 15px; text-transform: none; letter-spacing: 0; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-kpis > div > div:last-child { font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-check { text-transform: none; letter-spacing: 0; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-importo span { color: var(--ez-cassa-deep); -webkit-text-fill-color: var(--ez-cassa-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-chat-form select.crml-ez-input { flex: 0 0 96px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez [class*="-async-refresh"] { min-width: 44px; border-radius: 14px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-topbar { min-height: 60px; border-color: var(--ez-line); background: var(--ez-surface); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-back { min-width: 44px; font-size: 22px; color: var(--ez-ink); -webkit-text-fill-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-online { font-size: 14px; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-messages { background: var(--ez-bg); background-image: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-loading,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-day-sep { font-size: 14px; letter-spacing: 0; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-placeholder { font-size: 16px; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-reply-bar { border-color: var(--ez-line); background: var(--ez-bg); font-size: 15px; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-modal__close { min-width: 44px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-kid,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-linkbtn { color: var(--ez-ink); -webkit-text-fill-color: var(--ez-ink); text-decoration: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-privacy-disclaimer strong { font-size: 16px; font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-privacy-ack { -webkit-text-fill-color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-switcher { margin-bottom: 14px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-switcher-greeting div { color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-switcher-select-wrap label { -webkit-text-fill-color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-overlay > div > div:first-child { color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-overlay > div > div:first-child div { -webkit-text-fill-color: #fff; opacity: 1; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-title { -webkit-text-fill-color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-check { flex: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-confirm { -webkit-text-fill-color: #fff; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-sign-toggle { -webkit-text-fill-color: var(--ez-ink); box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-canvas { border-radius: 14px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-popup-card { border-radius: 22px; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-popup-ico { background: var(--ez-allievi-soft); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-popup-ico svg { stroke: var(--ez-allievi); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-popup-title { -webkit-text-fill-color: var(--ez-ink); }
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 { font-size: 15px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-popup-count { font-weight: 800; color: var(--ez-cassa-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-pgroup { border: 1px solid var(--ez-line); border-radius: 18px; background: var(--ez-surface); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-pgroup h3 { text-transform: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anagform-field span { font-size: 15px; font-weight: 700; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anagform-field small { font-size: 14px; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-notice { border-radius: 22px; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-notice__icon { border-radius: 18px; background: var(--ez-bacheca-soft); color: var(--ez-bacheca-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-notice__sub { font-size: 13px; letter-spacing: 0; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-notice__body { font-size: 16px; line-height: 1.5; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-home-quick-link,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-home-quick-link *,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-p2-kpi,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-p2-kpi *,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-p2-wrow,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-p2-wrow *,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-p2-card-link,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-p2-hero-cta,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-p2-hero-cta-ghost { text-decoration: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-p2-card-link { color: var(--ez-allievi-deep); -webkit-text-fill-color: var(--ez-allievi-deep); font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-home-quick-link:not(.crml-ez-nav) { grid-column: 1 / -1; min-height: 52px; padding: 12px 16px; border: 2px solid var(--ez-line); border-radius: 18px; --crml-card: #ffffff; --crml-card2: #ffffff; background: var(--ez-surface); color: var(--ez-ink); -webkit-text-fill-color: var(--ez-ink); font-size: 16px; font-weight: 800; box-shadow: none; }
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 { -webkit-text-fill-color: #fff; font-size: 15px; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crmlIscrToggle { text-align: center; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-moduli-hub > div { box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-moduli-hub > div > a { -webkit-text-fill-color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-moduli-hub > div > div > div + div { line-height: 1.4; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crmlIscrToggle { -webkit-text-fill-color: #fff; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-moduli-list-head { font-size: 20px; font-weight: 800; color: var(--ez-ink); -webkit-text-fill-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-moduli-empty-icon { color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-moduli-empty-sub { line-height: 1.4; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-home-quick-link:not(.crml-ez-nav) { flex-direction: row; justify-content: flex-start; align-items: center; gap: 10px; text-align: left; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez.crml-gd .crml-gd-back { min-height: 48px; color: var(--ez-ink); -webkit-text-fill-color: var(--ez-ink); font-size: 15px; font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-disp-wrap { overflow-x: auto; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-todo { min-height: 56px; padding: 12px 14px; border-width: 0 0 1px; border-style: solid; border-color: var(--ez-line); border-radius: 0; --cp-gradient: none; --cp-shadow-accent: none; background: transparent; background-image: none; color: var(--ez-ink); -webkit-text-fill-color: var(--ez-ink); font-size: 16px; font-weight: 700; text-decoration: none; text-transform: none; letter-spacing: 0; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-todo .crml-ez-todo-n { -webkit-text-fill-color: currentColor; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-btn svg { color: #fff; stroke: currentColor; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-todo { width: 100%; text-align: left; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-todo .crml-ez-todo-go svg { color: var(--ez-muted); stroke: currentColor; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-bar-a { margin: 0; padding: 0; border: 0; min-height: 0; box-shadow: none; background-image: none; --crml-primary: var(--ez-muted); color: var(--ez-muted); -webkit-text-fill-color: currentColor; text-decoration: none; text-transform: none; letter-spacing: 0; transform: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-bar-a.is-active { background-color: var(--ez-bar-on, var(--ez-ac-soft)); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-bar-a svg { color: inherit; stroke: currentColor; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-bar-a .crml-ez-bar-n,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-tile .crml-ez-bar-n { color: #fff; -webkit-text-fill-color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-back { margin: 0; padding: 0; border: 0; min-height: 0; box-shadow: none; background-color: var(--ez-ac); background-image: none; --crml-primary: #fff; color: #fff; -webkit-text-fill-color: currentColor; text-decoration: none; text-transform: none; letter-spacing: 0; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-back svg { color: inherit; stroke: currentColor; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-tile { margin: 0; padding: 0; min-height: 0; box-shadow: none; background-image: none; --crml-primary: var(--ez-ink); color: var(--ez-ink); -webkit-text-fill-color: currentColor; text-decoration: none; text-transform: none; letter-spacing: 0; transform: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-tile .crml-ez-tile-ic svg { color: var(--ez-ac); stroke: currentColor; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-ar-t { color: #fff; -webkit-text-fill-color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-ar-t svg { color: #fff; stroke: currentColor; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-tile .crml-ez-tile-ch svg { color: var(--ez-line-strong); stroke: currentColor; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-ar-wm svg { color: #fff; stroke: currentColor; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-top { justify-content: flex-start; gap: 6px; }
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 { flex-wrap: nowrap; }
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 { flex: 1 1 0; min-width: 0; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-num,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-week-row { margin: 0; padding: 0; border-width: 0; min-height: 0; box-shadow: none; background-image: none; text-decoration: none; -webkit-text-fill-color: currentColor; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-num { --crml-primary: var(--ez-allievi-deep); color: var(--ez-allievi-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-week-row { --crml-primary: var(--ez-ink); color: var(--ez-ink); }
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 { box-shadow: none; background-image: none; text-transform: none; letter-spacing: 0; -webkit-text-fill-color: currentColor; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-help { width: 36px; height: 36px; padding: 0; border-radius: 50%; background-color: var(--ez-chip); color: var(--ez-chip-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-help svg { color: inherit; stroke: currentColor; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-cont-b { background-color: var(--ez-surface); color: var(--ez-allievi-deep); border: 2px solid var(--ez-allievi); padding: 0 14px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-cont-b svg { color: var(--ez-allievi-deep); stroke: currentColor; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-toggle { width: 52px; height: 30px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-link-sm { min-height: 36px; padding: 6px 10px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anagform-back { min-height: 40px; padding: 6px 12px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-prof-a,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-arch-i--link,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-doc--link,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-cont-b,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-stud { --crml-primary: var(--ez-ink); text-decoration: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-prof-a--out { color: var(--ez-bad-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-link-sm.crml-ez-stud-link { margin-left: 10px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-prof-btn { width: 44px; padding: 0; box-shadow: none; background-image: none; -webkit-text-fill-color: currentColor; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-riep summary { font-size: 15px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-chat-wrap.crml-chat-ez { background: var(--ez-surface); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-sidebar { border-color: var(--ez-line); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-sidebar-header { padding: 14px 12px 10px; border-color: var(--ez-line); background: var(--ez-surface); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez #crml-chat-new-btn { padding: 0 16px; white-space: nowrap; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-contacts { padding: 8px; background: var(--ez-surface); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-placeholder { gap: 10px; background: var(--ez-bg); font-weight: 700; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-num-go svg { color: currentColor; stroke: currentColor; }

/* ===== 763a - Dal foglio di transizione (portal-easy-over.css): regole che vincono anche senza !important.
   Stesso selettore forte di prima, cosi superano i vecchi fogli per specificita. Generate da sposta.py. ===== */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-body h3 { font-size: 19px; font-weight: 800; line-height: 1.25; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-btn { border: 2px solid transparent; font-family: var(--ez-font); line-height: 1.2; box-shadow: none; text-decoration: none; }
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 { -webkit-text-fill-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-fpill.is-active { --crml-primary: #fff; background: var(--ez-ink); color: #fff; -webkit-text-fill-color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-subtab.is-active { --crml-primary: #fff; background: var(--ez-ink); color: #fff; -webkit-text-fill-color: #fff; }
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: 1px solid var(--ez-line); background: var(--ez-surface); box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-cal-today .crml-cal-day-hdr { background: var(--ez-allievi-soft); color: var(--ez-allievi-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-gdpr-btn.is-primary { background: var(--ez-ok); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez [class*="-async-title"] { font-size: 15px; font-weight: 800; letter-spacing: 0; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez [class*="-async-refresh"] { border: 2px solid var(--ez-line); background: var(--ez-surface); color: var(--ez-ink); box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-alert { font-size: 16px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-alert--warning { border-color: #f0d9b5; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-alert--success { border-color: #bfe3cf; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-cta { box-shadow: none; }
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 { box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-filter-btn.is-active { --crml-primary: #fff; -webkit-text-fill-color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-input { box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-lezione-header { border-color: var(--ez-line); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-status-badge.crml-status-badge-lg { padding: 7px 14px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-progcomp-readonly,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-progcomp-empty { color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-piano-panel { border: 1px solid var(--ez-line); border-radius: 18px; background: var(--ez-bg); box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-textarea { box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-btn.crml-val-btn--primary { border-color: transparent; background: var(--ez-allievi); color: #fff; -webkit-text-fill-color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-item--pending > .crml-mov-amt { font-size: 22px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-evidence-btn { border: 0 solid transparent; background: var(--ez-ink); background-image: none; font-weight: 800; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-percorso-hero .crml-percorso-bar { background: rgba(255, 255, 255, .28); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-percorso-hero .crml-percorso-bar i { background: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-btn-visione { border: 0 solid transparent; background: var(--ez-sede); font-weight: 800; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .cc-dot.cc-dot-active { border-color: var(--ez-allievi); color: var(--ez-allievi-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pro-cta { border: 0 solid transparent; background: var(--ez-allievi); font-weight: 800; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-sg-cta { -webkit-text-fill-color: var(--ez-ink); text-decoration: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl th { font-size: 13px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-info .crml-mov-desc { font-size: 17px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-title { line-height: 1.2; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-body h3,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-body h4 { font-size: 18px; font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-popup-title { line-height: 1.2; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-popup-cta { padding: 12px 18px; font-size: 16px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl .crml-ez-chat-form select.crml-ez-input { flex: 1 1 160px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-todo:last-child { border-width: 0; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-today a.crml-ez-btn { text-decoration: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-bar-a.is-active { --crml-primary: var(--ez-ac-deep); color: var(--ez-ac-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-bar-a--ar svg { color: var(--ez-ar-ic, inherit); }
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 { flex-direction: row; }
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 { margin: 0; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-week-row { border-bottom-width: 1px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-tile--metronomo,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-tile--strumenti { --crml-primary: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-link-sm { font-size: 14px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-prof-a--out { --crml-primary: var(--ez-bad-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-riep-t td,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-riep-t th { font-size: 14px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-ez .crml-chat-placeholder { font-size: 16px; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-num.crml-ez-num--fare { border: 1px solid transparent; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-num.crml-ez-num--warn { --crml-primary: var(--ez-cassa-deep); color: var(--ez-cassa-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-num.crml-ez-num--mese { --crml-primary: var(--ez-ink); color: var(--ez-ink); border: 1px solid var(--ez-line); }

/* ===== 763a - Dal foglio di transizione (portal-easy-over.css): regole che vincono anche senza !important.
   Stesso selettore forte di prima, cosi superano i vecchi fogli per specificita. Generate da sposta.py. ===== */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-btn { padding: 12px 18px; border-radius: 18px; background: var(--ez-ink); background-image: none; font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-btn.crml-btn-danger { border-color: transparent; }
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 { border-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-hero-eyebrow { color: var(--ez-bacheca-deep); -webkit-text-fill-color: var(--ez-bacheca-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-hero-body h2 { -webkit-text-fill-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-hero-sub { font-weight: 400; -webkit-text-fill-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-hero-stat strong { color: var(--ez-ink); -webkit-text-fill-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-cat-head h3 { font-size: 19px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-event-default { color: var(--ez-muted); -webkit-text-fill-color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-event-default strong { color: var(--ez-ink); -webkit-text-fill-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-freq-label { -webkit-text-fill-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-panel { border: 1px solid #c5e3ee; border-radius: 22px; background: var(--ez-sede-soft); background-image: none; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-icon { background: var(--ez-sede); background-image: none; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-eyebrow { font-size: 13px; letter-spacing: 0; color: var(--ez-sede-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-title { font-size: 21px; color: var(--ez-ink); -webkit-text-fill-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-sub { font-size: 15px; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-bar { background: rgba(15, 106, 140, .16); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-bar-fill { background: var(--ez-sede); background-image: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-meta { font-size: 16px; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-hint { color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-btn { min-height: 52px; padding: 12px 18px; border-radius: 18px; font-size: 16px; font-weight: 800; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-sala-sett-btn--primary { background: var(--ez-sede); background-image: none; color: #fff; -webkit-text-fill-color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-moduli-empty-title { font-size: 17px; font-weight: 800; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-progcomp-readonly,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-progcomp-empty { font-size: 15px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-badge-paid,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-badge-pending { padding: 5px 12px; border-radius: 999px; font-weight: 800; letter-spacing: 0; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-badge-paid { background: var(--ez-ok-soft); color: var(--ez-ok-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-badge-pending { background: #fff; color: var(--ez-cassa-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-card { border: 1px solid var(--ez-line); background: var(--ez-surface); background-image: none; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-card-name { font-size: 19px; font-weight: 800; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-big { font-size: 34px; font-weight: 800; color: var(--ez-ink); -webkit-text-fill-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-big-sub { font-size: 15px; font-weight: 400; color: var(--ez-muted); -webkit-text-fill-color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-card-name { -webkit-text-fill-color: var(--ez-ink); }
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 { padding: 5px 12px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-progress-track { border-radius: 999px; background: var(--ez-chip); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-progress-bar { border-radius: 999px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-hours { border: 0 solid transparent; border-radius: 14px; background: var(--ez-bg); background-image: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-hours span { font-size: 15px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-hours,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-perc,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-meta,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-notes { font-size: 15px; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-importo { padding: 10px 14px; border-radius: 14px; background: var(--ez-cassa-soft); background-image: none; color: var(--ez-cassa-deep); -webkit-text-fill-color: var(--ez-cassa-deep); font-size: 16px; font-weight: 800; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pkg-lez-details summary { font-size: 15px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-item.is-done { border-color: #bfe3cf; background: var(--ez-ok-soft); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-input { font-size: 17px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-kpis > div > div:last-child { font-size: 13px; letter-spacing: 0; text-transform: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-saggi-tbl td { font-size: 16px; }
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 { -webkit-text-fill-color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-info .crml-mov-badge-paid,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-mov-info .crml-mov-badge-pending { font-size: 13px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-privacy-disclaimer { border: 1px solid #f0d9b5; border-radius: 18px; background: var(--ez-cassa-soft); background-image: none; color: var(--ez-cassa-deep); font-size: 15px; line-height: 1.45; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-privacy-disclaimer strong { color: var(--ez-cassa-deep); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-privacy-ack { min-height: 48px; padding: 10px 16px; border-radius: 18px; background: var(--ez-cassa); color: #fff; font-size: 15px; font-weight: 800; text-decoration: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-switcher { border-radius: 22px; background: var(--ez-ink); background-image: none; color: #fff; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-switcher-greeting div { font-size: 14px; letter-spacing: 0; text-transform: none; opacity: 1; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-switcher-greeting div + div { font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-switcher-select-wrap { border-radius: 14px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-switcher-select-wrap label { font-size: 15px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-switcher-select-wrap select { min-height: 48px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-pgroup h3 { font-size: 15px; font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-popup-cta { box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-moduli-hub > div { border-radius: 18px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-moduli-hub > div > a { padding: 14px 18px; border-radius: 18px; color: #fff; font-size: 15px; font-weight: 800; text-decoration: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-moduli-list-card { border: 1px solid var(--ez-line); border-radius: 22px; background: var(--ez-surface); background-image: none; box-shadow: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-moduli-empty-sub { font-size: 15px; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-scroll-hint-mobile { font-size: 13px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-week-row:last-child { border-bottom-width: 0; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-num.crml-ez-num--warn { border-color: #f0d9b5; }

/* ===== 771a - Da portal-fix-light.css, famiglia "pulsanti": dichiarazioni vive, senza !important,
   stesso selettore, che basta (sta dopo fix-light nella cascata). Generate da porta.py; simulazione e confronto su 90 pagine a 390/768/1280. ===== */
html body[class] .crml-compose-card .crml-form-actions .crml-btn {
  position: static;
}
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) {
  -webkit-text-fill-color: #be185d;
  text-decoration: underline;
}
html body[class] .crml-portal-wrap .crml-portal-header .crml-portal-actions .crml-btn {
  backdrop-filter: blur(8px);
  text-shadow: none;
}
html body[class] .crml-portal-wrap a,
html body[class] .crml-portal-wrap button,
html body[class] .crml-portal-wrap [role="button"],
html body[class] .crml-portal-wrap input[type="submit"],
html body[class] .crml-portal-body a,
html body[class] .crml-portal-body button,
html body[class] .crml-portal-body [role="button"],
html body[class] .crml-portal-body input[type="submit"] {
  touch-action: manipulation;
  -webkit-tap-highlight-color: rgba(190, 24, 93, 0.22);
}
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="submit"]):not([type="button"]),
  html body[class] .crml-portal-wrap select,
  html body[class] .crml-portal-body input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="submit"]):not([type="button"]),
  html body[class] .crml-portal-body select {
    min-height: 44px;
  }
}
html body[class] .crml-portal-wrap a.button-primary,
html body[class] .crml-portal-wrap button.button-primary,
html body[class] .crml-portal-wrap input.button-primary,
html body[class] .crml-portal-body a.button-primary,
html body[class] .crml-portal-body button.button-primary,
html body[class] .crml-portal-body input.button-primary {
  background: linear-gradient(135deg, #be185d 0%, #ec4899 100%);
  color: #fff;
  -webkit-text-fill-color: #fff;
  border: 1px solid #be185d;
  box-shadow: 0 2px 8px rgba(190, 24, 93, 0.22);
  text-shadow: none;
  font-weight: 700;
  border-radius: 10px;
  padding: 10px 18px;
}
html body[class] .crml-portal-wrap a.button:not(.button-primary):not(.button-link),
html body[class] .crml-portal-wrap button.button:not(.button-primary):not(.button-link),
html body[class] .crml-portal-body a.button:not(.button-primary):not(.button-link),
html body[class] .crml-portal-body button.button:not(.button-primary):not(.button-link) {
  background: #fff;
  color: #831843;
  -webkit-text-fill-color: #831843;
  border: 1px solid #be185d;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
  font-weight: 600;
  border-radius: 10px;
}
html body[class] .crml-portal-wrap .crml-btn.crml-btn-primary,
html body[class] .crml-portal-wrap button.crml-btn-primary,
html body[class] .crml-portal-body .crml-btn.crml-btn-primary,
html body[class] .crml-portal-body button.crml-btn-primary {
  text-shadow: none;
}
@media (hover: hover) and (pointer: fine) {
  html body[class] .crml-portal-wrap .crml-btn-primary,
  html body[class] .crml-portal-wrap a.button-primary,
  html body[class] .crml-portal-wrap .crml-pack-importo {
    background-size: 200% 100%;
    background-position: 0% 50%;
    transition: background-position 400ms var(--crml-ease-out),
                  transform var(--crml-dur-base) var(--crml-ease-spring),
                  box-shadow var(--crml-dur-base) var(--crml-ease-out);
  }
}
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap a.crml-btn,
  html body[class] .crml-portal-wrap button.crml-btn,
  html body[class] .crml-portal-wrap a.button {
    border-radius: 12px;
  }
}

/* ===== 771a - Da portal-fix-light.css, famiglia "etichette": dichiarazioni vive, senza !important,
   stesso selettore, che basta (sta dopo fix-light nella cascata). Generate da porta.py; simulazione e confronto su 90 pagine a 390/768/1280. ===== */
html body[class] .crml-lezione-card .crml-status-badge {
  text-shadow: none;
}
html body[class] .crml-portal-wrap .crml-status-badge.warn,
html body[class] .crml-portal-wrap .crml-status-badge-mini.warn,
html body[class] .crml-portal-body .crml-status-badge.warn,
html body[class] .crml-portal-body .crml-status-badge-mini.warn {
  -webkit-text-fill-color: #92400e;
}
html body[class] .crml-portal-wrap .crml-status-badge.info,
html body[class] .crml-portal-wrap .crml-status-badge-mini.info,
html body[class] .crml-portal-body .crml-status-badge.info,
html body[class] .crml-portal-body .crml-status-badge-mini.info {
  -webkit-text-fill-color: #1e40af;
}
html body[class] .crml-portal-wrap .crml-status-badge.ok,
html body[class] .crml-portal-wrap .crml-status-badge-mini.ok,
html body[class] .crml-portal-body .crml-status-badge.ok,
html body[class] .crml-portal-body .crml-status-badge-mini.ok {
  -webkit-text-fill-color: #166534;
}
html body[class] .crml-portal-wrap .crml-status-badge.danger,
html body[class] .crml-portal-wrap .crml-status-badge-mini.danger,
html body[class] .crml-portal-body .crml-status-badge.danger,
html body[class] .crml-portal-body .crml-status-badge-mini.danger {
  -webkit-text-fill-color: #991b1b;
}
html body[class] .crml-portal-wrap .crml-status-badge.warn,
html body[class] .crml-portal-body .crml-status-badge.warn {
  -webkit-text-fill-color: #78350f;
}
html body[class] .crml-portal-wrap .crml-status-badge.info,
html body[class] .crml-portal-body .crml-status-badge.info {
  -webkit-text-fill-color: #1e3a8a;
}
html body[class] .crml-portal-wrap .crml-status-badge.ok,
html body[class] .crml-portal-body .crml-status-badge.ok {
  -webkit-text-fill-color: #14532d;
}
html body[class] .crml-portal-wrap .crml-status-badge.danger,
html body[class] .crml-portal-body .crml-status-badge.danger {
  -webkit-text-fill-color: #7f1d1d;
}
html body[class] .crml-portal-wrap .crml-badge-warn-inline,
html body[class] .crml-portal-body .crml-badge-warn-inline {
  color: #78350f;
  -webkit-text-fill-color: #78350f;
  background: rgba(217, 119, 6, 0.18);
  border: 1px solid rgba(217, 119, 6, 0.4);
  font-weight: 600;
  padding: 3px 8px;
  border-radius: 6px;
}

/* ===== 771a - Da portal-fix-light.css, famiglia "chat": dichiarazioni vive, senza !important,
   stesso selettore, che basta (sta dopo fix-light nella cascata). Generate da porta.py; simulazione e confronto su 90 pagine a 390/768/1280. ===== */
html body[class] .crml-compose-card {
  color: #1f2937;
  -webkit-text-fill-color: #1f2937;
}
html body[class] .crml-compose-card .crml-compose-title,
html body[class] .crml-compose-card .crml-compose-desc,
html body[class] .crml-compose-card .crml-label,
html body[class] .crml-compose-card label {
  -webkit-text-fill-color: #1f2937;
  background: transparent;
  text-shadow: none;
}
html body[class] .crml-compose-card .crml-label {
  -webkit-text-fill-color: #475569;
  margin-bottom: 6px;
  display: block;
}
html body[class] .crml-compose-card .crml-compose-desc {
  -webkit-text-fill-color: #475569;
}
html body[class] .crml-compose-card .crml-two {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-bottom: 16px;
}
html body[class] .crml-compose-card .crml-two > div {
  min-width: 0;
}
@media (max-width: 600px) {
  html body[class] .crml-compose-card .crml-two {
    grid-template-columns: 1fr;
  }
}
html body[class] .crml-compose-card .crml-form-field {
  margin-bottom: 16px;
  display: block;
  width: 100%;
}
html body[class] .crml-compose-card .crml-input-full {
  display: block;
}
html body[class] .crml-compose-card .crml-check,
html body[class] .crml-compose-card label.crml-check {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 12px 14px;
  background: #f8fafc;
  border-radius: 10px;
  border: 1px solid #e5e7eb;
  -webkit-text-fill-color: #1f2937;
  cursor: pointer;
  margin: 8px 0 16px;
  font-weight: 400;
  white-space: normal;
  writing-mode: horizontal-tb;
  text-orientation: mixed;
}
html body[class] .crml-compose-card .crml-check input[type="checkbox"] {
  margin: 0;
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  cursor: pointer;
}
html body[class] .crml-compose-card .crml-check span {
  flex: 1 1 auto;
  min-width: 0;
  width: auto;
  display: inline;
  white-space: normal;
  writing-mode: horizontal-tb;
  word-break: normal;
  overflow-wrap: normal;
  color: #1f2937;
  -webkit-text-fill-color: #1f2937;
}
html body[class] .crml-compose-card .crml-form-actions {
  display: flex;
  flex-wrap: wrap;
  margin-top: 12px;
  position: static;
}
html body[class] .crml-compose-card + .crml-pag-sec-title,
html body[class] .crml-pag-sec-title {
  -webkit-text-fill-color: #475569;
  margin: 24px 0 12px;
}

/* ===== 771a - Da portal-fix-light.css, famiglia "tabelle": dichiarazioni vive, senza !important,
   stesso selettore, che basta (sta dopo fix-light nella cascata). Generate da porta.py; simulazione e confronto su 90 pagine a 390/768/1280. ===== */
html body[class] .crml-lezione-card .crml-lezione-title,
html body[class] .crml-lezione-card h1,
html body[class] .crml-lezione-card h2,
html body[class] .crml-lezione-card h3,
html body[class] .crml-lezione-card .crml-lezione-sec-title,
html body[class] .crml-disp-wrap .crml-disp-title,
html body[class] .crml-disp-wrap .crml-disp-add-title,
html body[class] .crml-disp-wrap thead th {
  -webkit-text-fill-color: #0f172a;
  background: transparent;
  background-image: none;
  text-shadow: none;
  filter: none;
}

/* ===== 771a - Da portal-fix-light.css, famiglia "lezione": dichiarazioni vive, senza !important,
   stesso selettore, che basta (sta dopo fix-light nella cascata). Generate da porta.py; simulazione e confronto su 90 pagine a 390/768/1280. ===== */
html body[class] .crml-lezione-card,
html body[class] .crml-disp-wrap {
  color: #1f2937;
  -webkit-text-fill-color: #1f2937;
  filter: none;
  backdrop-filter: none;
  color-scheme: light;
}
html body[class] .crml-lezione-card *,
html body[class] .crml-disp-wrap * {
  color-scheme: light;
}
html body[class] .crml-lezione-card .crml-lezione-title,
html body[class] .crml-lezione-card h1,
html body[class] .crml-lezione-card h2,
html body[class] .crml-lezione-card h3,
html body[class] .crml-lezione-card .crml-lezione-sec-title,
html body[class] .crml-disp-wrap .crml-disp-title,
html body[class] .crml-disp-wrap .crml-disp-add-title,
html body[class] .crml-disp-wrap thead th {
  -webkit-background-clip: border-box;
}
html body[class] .crml-lezione-card .crml-meta-lbl,
html body[class] .crml-disp-wrap .crml-disp-add-label,
html body[class] .crml-disp-wrap .crml-disp-hint {
  -webkit-text-fill-color: #64748b;
  background: transparent;
}
html body[class] .crml-lezione-card .crml-meta-val,
html body[class] .crml-disp-wrap .crml-disp-day {
  -webkit-text-fill-color: #0f172a;
  background: transparent;
}
html body[class] .crml-lezione-card .crml-lezione-sec-body {
  -webkit-text-fill-color: #475569;
}
html body[class] .crml-lezione-card .crml-lezione-meta-grid,
html body[class] .crml-lezione-card .crml-lezione-sections {
  background: transparent;
}
html body[class] .crml-lezione-card .crml-lezione-meta-item,
html body[class] .crml-lezione-card .crml-lezione-sec {
  color: #0f172a;
}
html body[class] .crml-lezione-card .crml-lezione-header {
  background: transparent;
  border-bottom: 1px solid rgba(15, 23, 42, 0.08);
  color: #0f172a;
}
html body[class] .crml-lezione-card .crml-alert--success,
html body[class] .crml-disp-wrap .crml-alert--success {
  -webkit-text-fill-color: #14532d;
  border-left: 3px solid #16a34a;
}
html body[class] .crml-lezione-card .crml-alert--warning,
html body[class] .crml-disp-wrap .crml-alert--warning {
  -webkit-text-fill-color: #78350f;
  border-left: 3px solid #f59e0b;
}
html body[class] .crml-lezione-card .crml-alert,
html body[class] .crml-disp-wrap .crml-alert {
  padding: 12px 16px;
}
html body[class] .crml-lezione-card .crml-alert *,
html body[class] .crml-disp-wrap .crml-alert * {
  color: inherit;
  -webkit-text-fill-color: inherit;
  background: transparent;
  background-image: none;
  text-shadow: none;
}

/* ===== 771a - Da portal-fix-light.css, famiglia "campi": dichiarazioni vive, senza !important,
   stesso selettore, che basta (sta dopo fix-light nella cascata). Generate da porta.py; simulazione e confronto su 90 pagine a 390/768/1280. ===== */
html body[class] .crml-portal-wrap select,
html body[class] .crml-portal-wrap input[type="text"],
html body[class] .crml-portal-wrap input[type="email"],
html body[class] .crml-portal-wrap input[type="tel"],
html body[class] .crml-portal-wrap input[type="number"],
html body[class] .crml-portal-wrap input[type="date"],
html body[class] .crml-portal-wrap input[type="time"],
html body[class] .crml-portal-wrap input[type="datetime-local"],
html body[class] .crml-portal-wrap input[type="search"],
html body[class] .crml-portal-wrap input[type="password"],
html body[class] .crml-portal-wrap input[type="url"],
html body[class] .crml-portal-wrap input:not([type]),
html body[class] .crml-portal-wrap textarea {
  caret-color: #0f172a;
  color-scheme: light;
  box-shadow: none;
  filter: none;
  backdrop-filter: none;
  opacity: 1;
}
html body[class] .crml-portal-wrap select option {
  background: #ffffff;
  color: #0f172a;
}
@media (max-width: 768px) {
  html body[class] .crml-portal-wrap input[type="text"],
  html body[class] .crml-portal-wrap input[type="email"],
  html body[class] .crml-portal-wrap input[type="tel"],
  html body[class] .crml-portal-wrap input[type="number"],
  html body[class] .crml-portal-wrap input[type="search"],
  html body[class] .crml-portal-wrap input[type="password"],
  html body[class] .crml-portal-wrap input[type="date"],
  html body[class] .crml-portal-wrap input[type="time"],
  html body[class] .crml-portal-wrap input[type="datetime-local"],
  html body[class] .crml-portal-wrap select,
  html body[class] .crml-portal-wrap textarea,
  html body[class] .crml-portal-body input[type="text"],
  html body[class] .crml-portal-body input[type="email"],
  html body[class] .crml-portal-body input[type="tel"],
  html body[class] .crml-portal-body input[type="number"],
  html body[class] .crml-portal-body input[type="search"],
  html body[class] .crml-portal-body input[type="password"],
  html body[class] .crml-portal-body input[type="date"],
  html body[class] .crml-portal-body input[type="time"],
  html body[class] .crml-portal-body input[type="datetime-local"],
  html body[class] .crml-portal-body select,
  html body[class] .crml-portal-body textarea {
    font-size: 16px;
  }
}
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not([type="range"]):not([type="file"]),
  html body[class] .crml-portal-wrap select,
  html body[class] .crml-portal-wrap textarea {
    font-size: 16px;
  }
}
html body[class] .crml-tutor-switcher select,
html body[class] .crml-tutor-switcher select#crml-tutor-select,
html body[class] select#crml-tutor-select {
  font-size: 14px;
  font-weight: 600;
}
html body[class] .crml-tutor-switcher select option {
  background: #ffffff;
  background-color: #ffffff;
  color: #1e293b;
  -webkit-text-fill-color: #1e293b;
}
html body[class] .crml-tutor-switcher label[for="crml-tutor-select"] {
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.18);
}
@media (max-width: 540px) {
  html body[class] .crml-tutor-switcher select,
  html body[class] select#crml-tutor-select {
    width: 100%;
    flex: 1 1 100%;
    min-height: 44px;
  }
  html body[class] .crml-tutor-switcher label[for="crml-tutor-select"] {
    flex: 0 0 auto;
  }
  html body[class] .crml-portal-wrap input[type="text"],
  html body[class] .crml-portal-wrap input[type="email"],
  html body[class] .crml-portal-wrap input[type="tel"],
  html body[class] .crml-portal-wrap input[type="number"],
  html body[class] .crml-portal-wrap input[type="date"],
  html body[class] .crml-portal-wrap input[type="time"],
  html body[class] .crml-portal-wrap input[type="search"],
  html body[class] .crml-portal-wrap input[type="password"],
  html body[class] .crml-portal-wrap textarea,
  html body[class] .crml-portal-wrap select {
    font-size: 16px;
  }
}
@supports selector(:has(*)) {
  html body[class] .crml-iscr-wrap label:has(+ input[required]),
  html body[class] .crml-iscr-wrap label:has(+ select[required]),
  html body[class] .crml-iscr-wrap label:has(+ textarea[required]),
  html body[class] .crml-iscr-wrap .crml-iscr-fld:has(input[required]) > label,
  html body[class] .crml-iscr-wrap .crml-iscr-fld:has(select[required]) > label,
  html body[class] .crml-iscr-wrap .crml-iscr-fld:has(textarea[required]) > label {
    position: relative;
  }
}
@media (max-width:540px) {
  html body[class] .crml-portal-wrap .crml-home-quick-label {
    font-size: 12.5px;
    text-align: left;
    line-height: 1.3;
    flex: 1;
    min-width: 0;
    word-break: break-word;
  }
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-label {
  -webkit-text-fill-color: #6b7280;
  text-transform: uppercase;
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-bar.is-today .crml-p2-sparkline-label {
  -webkit-text-fill-color: #92400e;
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-label {
  font-size: 11px;
  font-weight: 600;
  color: #75365b;
  margin-top: 6px;
  letter-spacing: .3px;
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-bar.is-today .crml-p2-sparkline-label {
  color: #d97706;
  font-weight: 700;
}
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-label {
    font-size: 10.5px;
  }
}

/* ===== 771a - Da portal-fix-light.css, famiglia "avvisi": dichiarazioni vive, senza !important,
   stesso selettore, che basta (sta dopo fix-light nella cascata). Generate da porta.py; simulazione e confronto su 90 pagine a 390/768/1280. ===== */
html body[class] .crml-portal-wrap .crml-card,
html body[class] .crml-portal-wrap .crml-note-box,
html body[class] .crml-portal-wrap .crml-empty-state,
html body[class] .crml-portal-wrap .crml-info-box,
html body[class] .crml-portal-wrap .crml-stat-card,
html body[class] .crml-portal-wrap .crml-pag-card {
  background: #ffffff;
  background-color: #ffffff;
  background-image: none;
  border: 1px solid rgba(15, 23, 42, 0.08);
}
html body[class] .crml-portal-wrap .crml-modal,
html body[class] .crml-portal-wrap [role="dialog"],
html body[class] .crml-portal-wrap .crml-skeleton {
  will-change: transform, opacity;
}
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 {
  overscroll-behavior: contain;
}

/* ===== 771a - Da portal-fix-light.css, famiglia "intestazione": dichiarazioni vive, senza !important,
   stesso selettore, che basta (sta dopo fix-light nella cascata). Generate da porta.py; simulazione e confronto su 90 pagine a 390/768/1280. ===== */
html body[class] .crml-portal-wrap .crml-portal-header .crml-portal-title {
  color: #ffffff;
  -webkit-text-fill-color: #ffffff;
  font-size: 26px;
  font-weight: 800;
  letter-spacing: -0.01em;
  line-height: 1.2;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
  background: transparent;
  background-image: none;
  margin-bottom: 4px;
}
html body[class] .crml-portal-wrap .crml-portal-header .crml-portal-sub {
  color: rgba(255, 255, 255, 0.96);
  -webkit-text-fill-color: rgba(255, 255, 255, 0.96);
  font-size: 15px;
  font-weight: 500;
  opacity: 1;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.22);
  background: transparent;
  background-image: none;
  letter-spacing: 0.01em;
}
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap .crml-portal-header .crml-portal-title {
    font-size: 22px;
  }
  html body[class] .crml-portal-wrap .crml-portal-header .crml-portal-sub {
    font-size: 14px;
  }
  html body[class] .crml-portal-wrap .crml-pack-importo,
  html body[class] .crml-portal-v2 .crml-pack-importo {
    flex-wrap: wrap;
    line-height: 1.3;
  }
  html body[class] .crml-portal-wrap .crml-pack-importo > span:first-child,
  html body[class] .crml-portal-v2 .crml-pack-importo > span:first-child {
    flex-shrink: 0;
  }
  html body[class] .crml-portal-wrap .crml-pack-importo span span,
  html body[class] .crml-portal-v2 .crml-pack-importo span span {
    display: inline-block;
    margin-top: 2px;
  }
  html body[class] .crml-portal-wrap .crml-p2-overdue-header,
  html body[class] .crml-portal-v2 .crml-p2-overdue-header {
    flex-direction: column;
    text-align: center;
  }
  html body[class] .crml-portal-wrap .crml-p2-overdue-title-wrap,
  html body[class] .crml-portal-v2 .crml-p2-overdue-title-wrap {
    width: 100%;
    text-align: center;
  }
  html body[class] .crml-portal-wrap .crml-p2-overdue-title,
  html body[class] .crml-portal-v2 .crml-p2-overdue-title {
    word-break: normal;
    overflow-wrap: break-word;
    hyphens: none;
  }
  html body[class] .crml-portal-wrap .crml-p2-overdue-actions,
  html body[class] .crml-portal-v2 .crml-p2-overdue-actions {
    width: 100%;
    flex-direction: row;
    justify-content: center;
  }
  html body[class] .crml-portal-wrap .crml-p2-overdue-cta-all,
  html body[class] .crml-portal-v2 .crml-p2-overdue-cta-all {
    flex: 1 1 auto;
    justify-content: center;
    text-align: center;
  }
  html body[class] .crml-portal-wrap .crml-p2-overdue-refresh,
  html body[class] .crml-portal-v2 .crml-p2-overdue-refresh {
    min-width: 44px;
    flex-shrink: 0;
  }
  html body[class] .crml-portal-wrap .crml-p2-overdue-item,
  html body[class] .crml-portal-v2 .crml-p2-overdue-item {
    flex-wrap: wrap;
  }
  html body[class] .crml-portal-wrap .crml-p2-overdue-item-title,
  html body[class] .crml-portal-v2 .crml-p2-overdue-item-title {
    white-space: normal;
    word-break: normal;
    overflow-wrap: break-word;
    line-height: 1.35;
  }
  html body[class] .crml-portal-wrap .crml-p2-overdue-item-importo,
  html body[class] .crml-portal-v2 .crml-p2-overdue-item-importo {
    text-align: right;
    margin-top: 4px;
    padding-top: 8px;
    border-top: 1px dashed rgba(220,38,38,.25);
  }
  html body[class] .crml-p2,
  html body[class] .crml-portal-v2 {
    padding-left: 6px;
    padding-right: 6px;
  }
}
html body[class] .crml-portal-wrap .crml-portal-nav,
html body[class] .crml-portal-wrap .crml-home-quick-grid {
  contain: layout style paint;
}
@media (max-width: 1024px) {
  html body[class].crml-portal-aura-light,
  html body[class].crml-portal-v2 {
    overflow-x: hidden;
  }
}

/* ===== 771a - Da portal-fix-light.css, famiglia "home": dichiarazioni vive, senza !important,
   stesso selettore, che basta (sta dopo fix-light nella cascata). Generate da porta.py; simulazione e confronto su 90 pagine a 390/768/1280. ===== */
@media (max-width: 540px) {
  html body[class] .crml-p2-overdue-list,
  html body[class] .crml-p2-iscalert-list {
    padding: 0;
  }
}
html body[class] .crml-portal-wrap .crml-pack-importo span:last-child,
html body[class] .crml-portal-body .crml-pack-importo span:last-child {
  opacity: 0.92;
}
html body[class] .crml-portal-wrap .crml-p2-kpi-trend,
html body[class] .crml-portal-body .crml-p2-kpi-trend {
  color: #047857;
  -webkit-text-fill-color: #047857;
  font-weight: 600;
}
html body[class] .crml-portal-wrap .crml-p2-kpi-trend.flat,
html body[class] .crml-portal-body .crml-p2-kpi-trend.flat {
  color: #57534e;
  -webkit-text-fill-color: #57534e;
}
html body[class] .crml-portal-wrap h1:not(.crml-p2-hero-title) {
  line-height: 1.2;
}
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 [class*="crml-pack-card"],
html body[class] .crml-portal-body [class*="crml-card"] {
  transition: transform var(--crml-dur-base) var(--crml-ease-out),
              box-shadow var(--crml-dur-base) var(--crml-ease-out),
              border-color var(--crml-dur-base) var(--crml-ease-out);
  will-change: transform;
}
html body[class] .crml-portal-wrap .crml-home-quick-grid > *,
html body[class] .crml-portal-wrap .crml-p2-kpi-grid > * {
  animation: crml-fade-up 350ms var(--crml-ease-out) backwards;
}
html body[class] .crml-portal-wrap .crml-home-quick-grid > *:nth-child(1) {
  animation-delay: 0ms;
}
html body[class] .crml-portal-wrap .crml-home-quick-grid > *:nth-child(2) {
  animation-delay: 30ms;
}
html body[class] .crml-portal-wrap .crml-home-quick-grid > *:nth-child(3) {
  animation-delay: 60ms;
}
html body[class] .crml-portal-wrap .crml-home-quick-grid > *:nth-child(4) {
  animation-delay: 90ms;
}
html body[class] .crml-portal-wrap .crml-home-quick-grid > *:nth-child(5) {
  animation-delay: 120ms;
}
html body[class] .crml-portal-wrap .crml-home-quick-grid > *:nth-child(6) {
  animation-delay: 150ms;
}
html body[class] .crml-portal-wrap .crml-home-quick-grid > *:nth-child(7) {
  animation-delay: 180ms;
}
html body[class] .crml-portal-wrap .crml-home-quick-grid > *:nth-child(8) {
  animation-delay: 210ms;
}
html body[class] .crml-portal-wrap .crml-home-quick-grid > *:nth-child(9) {
  animation-delay: 240ms;
}
html body[class] .crml-portal-wrap .crml-home-quick-grid > *:nth-child(10) {
  animation-delay: 270ms;
}
html body[class] .crml-portal-wrap .crml-home-quick-grid > *:nth-child(11) {
  animation-delay: 300ms;
}
html body[class] .crml-portal-wrap .crml-home-quick-grid > *:nth-child(12) {
  animation-delay: 330ms;
}
html body[class] .crml-portal-wrap .crml-home-quick-link,
html body[class] .crml-portal-body .crml-home-quick-link {
  transition: transform var(--crml-dur-base) var(--crml-ease-spring),
              background var(--crml-dur-base) var(--crml-ease-out),
              box-shadow var(--crml-dur-base) var(--crml-ease-out);
}
@media (max-width: 540px) {
  html body[class] .crml-tutor-switcher > div {
    flex-direction: column;
  }
  html body[class] .crml-tutor-switcher > div > div:first-child {
    text-align: center;
  }
  html body[class] .crml-tutor-switcher > div > div:last-child {
    width: 100%;
    justify-content: space-between;
  }
}
@media (max-width:540px) {
  html body[class] .crml-portal-wrap .crml-home-quick-icon {
    font-size: 22px;
    flex-shrink: 0;
  }
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-title {
  -webkit-text-fill-color: #831843;
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-summary {
  -webkit-text-fill-color: #475569;
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-summary strong {
  -webkit-text-fill-color: #be185d;
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-bar {
  height: 100%;
  padding-bottom: 0;
  cursor: default;
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-count {
  min-height: 14px;
  letter-spacing: 0;
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-bar.is-empty .crml-p2-sparkline-count {
  -webkit-text-fill-color: #cbd5e1;
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-bar.is-today {
  padding: 4px 0;
}
html body[class] .crml-portal-wrap .crml-p2-sparkline-bar.is-today .crml-p2-sparkline-count {
  -webkit-text-fill-color: #92400e;
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline {
  background: linear-gradient(135deg, #fef9fb 0%, #fdf4f8 100%);
  border: 1px solid #f3e7ed;
  border-radius: 16px;
  padding: 18px 20px;
  margin: 16px 0;
  box-shadow: 0 2px 8px rgba(190,24,93,0.06);
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 14px;
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-title {
  font-size: 15px;
  font-weight: 700;
  color: #831843;
  letter-spacing: .2px;
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-summary {
  font-size: 13px;
  color: #75365b;
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-summary strong {
  font-size: 18px;
  font-weight: 800;
  color: #831843;
  margin-right: 3px;
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-bars {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  align-items: end;
  gap: 6px;
  height: 110px;
  padding: 0;
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-bar {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
  position: relative;
  border-radius: 8px;
  transition: opacity .35s cubic-bezier(.4,0,.2,1), background-color .25s ease;
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-count {
  font-size: 13px;
  font-weight: 700;
  margin-bottom: 4px;
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-fill {
  width: 100%;
  max-width: 36px;
  margin: 0 auto;
  border-radius: 6px 6px 0 0;
  transition: height .35s cubic-bezier(.4,0,.2,1);
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-bar.is-today {
  background: rgba(254,243,199,.45);
  border: 1.5px solid #f59e0b;
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-bar.is-future {
  opacity: 0.55;
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-bar.is-empty .crml-p2-sparkline-fill {
  background: #e5e7eb;
  box-shadow: none;
}
html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-bar.is-empty .crml-p2-sparkline-count {
  color: #cbd5e1;
}
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline {
    padding: 14px 12px;
  }
  html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-bars {
    height: 90px;
    gap: 4px;
  }
  html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-title {
    font-size: 13px;
  }
  html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-summary {
    font-size: 12px;
  }
  html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-summary strong {
    font-size: 15px;
  }
  html body[class] .crml-portal-wrap .crml-p2-allievo-sparkline .crml-p2-sparkline-count {
    font-size: 11.5px;
  }
}

/* ===== 771a - Da portal-fix-light.css, famiglia "resto": dichiarazioni vive, senza !important,
   stesso selettore, che basta (sta dopo fix-light nella cascata). Generate da porta.py; simulazione e confronto su 90 pagine a 390/768/1280. ===== */
html body[class] .crml-list .crml-item {
  margin-bottom: 8px;
}
html body[class] .crml-list .crml-item-title {
  -webkit-text-fill-color: #1f2937;
}
html body[class] .crml-list .crml-item-meta {
  -webkit-text-fill-color: #64748b;
}
@media (max-width: 540px) {
  html body[class] .crml-portal-body {
    padding: 0;
  }
}
html body[class] .crml-portal-wrap .crml-cal-evt-time,
html body[class] .crml-portal-body .crml-cal-evt-time {
  color: #831843;
  -webkit-text-fill-color: #831843;
}
html body[class] .crml-portal-wrap .crml-reg-sec-lbl,
html body[class] .crml-portal-body .crml-reg-sec-lbl {
  -webkit-text-fill-color: #9d174d;
  letter-spacing: 0.04em;
}
html body[class] .crml-portal-wrap,
html body[class] .crml-portal-body {
  -webkit-tap-highlight-color: rgba(190, 24, 93, 0.18);
}
html body[class] .crml-portal-wrap {
  padding-left: max(env(safe-area-inset-left), 0px);
  padding-right: max(env(safe-area-inset-right), 0px);
}

html body[class] .crml-portal-wrap .crml-cal-leg,
html body[class] .crml-portal-body .crml-cal-leg {
  -webkit-text-fill-color: #1f2937;
  font-weight: 600;
}
html body[class] .crml-portal-wrap h2 {
  font-size: clamp(18px, 4vw, 24px);
}
html body[class] .crml-portal-wrap,
html body[class] .crml-portal-body {
  --crml-text-on-light: #1f2937;
  --crml-text-on-dark: #ffffff;
  --crml-text-muted: #475569;
  --crml-text-brand: #831843;
  --crml-text-brand-soft: #9d174d;
  --crml-bg-brand: linear-gradient(135deg, #be185d 0%, #ec4899 100%);
  --crml-bg-card: #ffffff;
  --crml-bg-soft: #fef2f8;
  --crml-border-soft: #f9d4e6;
  --crml-shadow-soft: 0 2px 8px rgba(190, 24, 93, 0.08);
  --crml-shadow-card: 0 4px 14px rgba(190, 24, 93, 0.12);
  --crml-radius-sm: 8px;
  --crml-radius-md: 12px;
  --crml-radius-lg: 18px;
  --crml-radius-pill: 999px;
}
html body[class] .crml-portal-wrap,
html body[class] .crml-portal-body {
  --crml-ease-in: cubic-bezier(0.4, 0, 1, 1);
  --crml-ease-out: cubic-bezier(0, 0, 0.2, 1);
  --crml-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  --crml-ease-emphasized: cubic-bezier(0.2, 0.0, 0, 1);
  --crml-dur-fast: 150ms;
  --crml-dur-base: 250ms;
  --crml-dur-slow: 400ms;
}
html body[class] .crml-portal-wrap {
  overscroll-behavior-y: contain;
  scroll-behavior: smooth;
}
html body[class] .crml-portal-wrap .crml-hint,
html body[class] .crml-portal-wrap .crml-muted,
html body[class] .crml-portal-wrap small.muted,
html body[class] .crml-portal-body .crml-hint,
html body[class] .crml-portal-body .crml-muted {
  color: #334155;
}
html body[class] .crml-portal-wrap h1,
html body[class] .crml-portal-wrap h2,
html body[class] .crml-portal-wrap h3,
html body[class] .crml-portal-wrap h4,
html body[class] .crml-portal-body h1,
html body[class] .crml-portal-body h2 {
  color: #0f172a;
}
html body[class] .crml-portal-wrap h2,
html body[class] .crml-portal-body h2 {
  line-height: 1.22;
}
html body[class] .crml-portal-wrap h3,
html body[class] .crml-portal-body h3 {
  line-height: 1.3;
}
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 {
  letter-spacing: -0.003em;
}
html body[class] .crml-portal-wrap [class*="kpi-num"],
html body[class] .crml-portal-wrap [class*="amount"],
html body[class] .crml-portal-wrap [class*="importo"],
html body[class] .crml-portal-wrap .crml-mono,
html body[class] .crml-portal-body [class*="kpi-num"],
html body[class] .crml-portal-body [class*="amount"] {
  font-variant-numeric: tabular-nums;
  font-feature-settings: 'tnum' 1, 'lnum' 1;
}
html body[class] .crml-portal-wrap .crml-reg-row,
html body[class] .crml-portal-wrap .crml-cal-month-day,
html body[class] .crml-portal-wrap [class*="crml-card"] {
  contain: layout style;
}
html body[class] .crml-portal-wrap {
  scroll-padding-top: 80px;
  scroll-padding-bottom: 80px;
}
html body[class] .crml-portal-wrap,
html body[class] .crml-portal-body {
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  font-feature-settings: 'kern' 1, 'liga' 1, 'calt' 1;
}
@media (max-width: 1024px) {
  html body[class] .crml-portal-wrap,
  html body[class] .crml-portal {
    overflow-x: visible;
  }
}

/* ===== 763a - Dal foglio di transizione (portal-easy-over.css): regole che vincono anche senza !important.
   Stesso selettore forte di prima, cosi superano i vecchi fogli per specificita. Generate da sposta.py. ===== */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-body h2 { font-family: var(--ez-font); letter-spacing: -0.01em; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-portal-body h3 { font-family: var(--ez-font); color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-btn.crml-btn-sm { padding: 10px 16px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-btn.crml-btn-primary { background: var(--ez-allievi); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-btn.crml-btn-danger { background: var(--ez-bad); }
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 { background: var(--ez-surface); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-freq-label { color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pnp-footer-help h4 { color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-label,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-disp-add-label { font-weight: 700; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-check { color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anagform-field label { font-weight: 700; color: var(--ez-ink); }
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 { min-height: 52px; font-size: 17px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-label,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-area__label { font-weight: 700; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-val-anon { color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-pack-cards-wrap .crml-pack-card.crml-pack-card-inactive { background: var(--ez-bg); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-rin-label { font-weight: 700; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-pro-nota { color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-label { font-weight: 700; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-input { min-height: 52px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-check { font-weight: 400; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-switcher-greeting div + div { font-size: 20px; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-tutor-switcher-select-wrap label { font-weight: 700; color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-body h3,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez #crml-reg-body h4 { color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-popup-title { font-size: 21px; font-weight: 800; color: var(--ez-ink); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-p2-anag-pgroup h3 { letter-spacing: 0; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-chat-notice__check { color: var(--ez-ink); }

/* ===== 771a - Da portal-fix-light.css, ultime regole spostabili: dichiarazioni vive, senza !important,
   stesso selettore, che basta (sta dopo fix-light nella cascata). Generate da porta.py; simulazione e confronto su 90 pagine a 390/768/1280. ===== */
@media (max-width: 540px) {
  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 {
    word-wrap: break-word;
  }
}
html body[class] .crml-portal-wrap h1:not(.crml-p2-hero-title) {
  font-size: clamp(22px, 5vw, 30px);
}
html body[class] .crml-portal-wrap h1,
html body[class] .crml-portal-body h1 {
  letter-spacing: -0.02em;
}
html body[class] .crml-portal-wrap h2,
html body[class] .crml-portal-body h2 {
  letter-spacing: -0.015em;
}
html body[class] .crml-portal-wrap h3,
html body[class] .crml-portal-body h3 {
  letter-spacing: -0.01em;
}
html body[class] .crml-tutor-switcher select,
html body[class] .crml-tutor-switcher select#crml-tutor-select,
html body[class] select#crml-tutor-select {
  -webkit-appearance: menulist;
}
@media (max-width: 540px) {
  html body[class] .crml-portal-wrap .crml-portal-logout,
  html body[class] .crml-portal-wrap a[href*="logout"] {
    min-height: 44px;
    padding: 10px 16px;
  }
}

/* ===== 833a - Home del maestro con foto in testata e carattere dei titoli (bozza Krea approvata il 19/10/2026).
   League Spartan servito dal nostro server (assets/fonts, licenza OFL in LICENZE.txt), come gli altri caratteri dal 578a.
   Foto, disegno e carattere solo con l'opzione crml_maestro_ez_testata (default acceso): il PHP scrive crml-ez-home--foto,
   crml-ez-hero e crml-ez-today--vuoto; a opzione spenta quelle classi non escono e la home resta quella di prima.
   Solo la home del maestro: il vestito easy e di tutti (763a), allievi e famiglie restano col carattere di sempre. Immagini in assets/images (WebP, 13-37 KB). ===== */
@font-face {
  font-family: 'League Spartan';
  font-style: normal;
  font-weight: 600 800;
  font-display: swap;
  src: url(../../fonts/leaguespartan-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'League Spartan';
  font-style: normal;
  font-weight: 600 800;
  font-display: swap;
  src: url(../../fonts/leaguespartan-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
.crml-portal.crml-ez { --ez-font-t: 'League Spartan', var(--ez-font); }
.crml-portal.crml-ez .crml-ez-home--foto .crml-ez-h1,
.crml-portal.crml-ez .crml-ez-home--foto .crml-ez-today-t,
.crml-portal.crml-ez .crml-ez-home--foto .crml-ez-num-v { font-family: var(--ez-font-t); letter-spacing: -0.01em; }

/* Testata con foto: data e saluto in bianco sulla velatura, il riquadro Oggi (o "Sei in arrivo?") sale sulla foto */
.crml-portal.crml-ez .crml-ez-hero {
  display: flex; flex-direction: column; justify-content: flex-end; box-sizing: border-box;
  min-height: 210px; margin: 0 0 -26px; padding: 16px 16px 42px; overflow: hidden;
  border-radius: var(--ez-r-lg);
  background-color: #2b1f4d;
  background-image: linear-gradient(180deg, rgba(26, 15, 62, .4) 0%, rgba(26, 15, 62, 0) 30%, rgba(26, 15, 62, .3) 50%, rgba(26, 15, 62, .86) 100%), url(../../images/ez-maestro-testata-800.webp);
  background-position: center, 72% 50%; background-size: cover, cover; background-repeat: no-repeat, no-repeat;
  color: #fff;
}
.crml-portal.crml-ez .crml-ez-hero .crml-ez-home-date { font-size: 13px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: #fff; text-shadow: 0 1px 2px rgba(0, 0, 0, .35); }
.crml-portal.crml-ez .crml-ez-hero .crml-ez-h1 { margin: 4px 0 0; font-size: 32px; line-height: 1.04; color: #fff; text-shadow: 0 1px 3px rgba(0, 0, 0, .35); }
.crml-portal.crml-ez .crml-ez-hero .crml-ez-h1row { align-items: flex-end; }
.crml-portal.crml-ez .crml-ez-hero .crml-ez-prof-btn { border-color: rgba(255, 255, 255, .8); background-color: rgba(26, 15, 62, .35); color: #fff; }
.crml-portal.crml-ez .crml-ez-hero + .crml-ez-today,
.crml-portal-wrap .crml-portal.crml-ez .crml-ez-hero + a.crml-ez-arrivo { position: relative; margin-left: 10px; margin-right: 10px; box-shadow: 0 2px 6px rgba(26, 15, 62, .06), 0 12px 28px rgba(26, 15, 62, .14); }
.crml-portal.crml-ez .crml-ez-hero + .crml-ez-today { background: var(--ez-surface); }
@media (min-width: 720px) {
  .crml-portal.crml-ez .crml-ez-hero {
    min-height: 240px; padding: 22px 24px 46px;
    background-image: linear-gradient(90deg, rgba(26, 15, 62, .85) 0%, rgba(26, 15, 62, .45) 55%, rgba(26, 15, 62, .05) 85%), url(../../images/ez-maestro-testata-1400.webp);
    background-position: center, 70% 45%;
  }
  .crml-portal.crml-ez .crml-ez-hero .crml-ez-h1 { font-size: 34px; }
}

/* Giornata senza lezioni: il disegno a destra del riquadro Oggi */
.crml-portal.crml-ez .crml-ez-today-art { float: right; width: 118px; height: auto; margin: -2px -4px 6px 10px; }
.crml-portal.crml-ez .crml-ez-today--vuoto .crml-ez-btn { clear: both; }

/* ===== 833a (20/10) - Testate con foto anche per allievo, genitore, nuovo arrivato e chi non ha ancora l'accesso.
   Stesso schema della home del maestro (crml-ez-hero qui sopra). Opzioni: crml_famiglie_ez_testata (allievo e genitore),
   crml_nuovi_ez_testata (nuovo arrivato e pagina di chi non ha l'accesso): a opzione spenta le classi non escono. ===== */
/* Allievo e genitore: niente sovrapposizione, la prima scheda cambia (avvisi, tutto in ordine, prossima lezione) */
.crml-portal.crml-ez .crml-ez-hero--fam { margin-bottom: 14px; padding-bottom: 18px; }
.crml-portal.crml-ez .crml-ez-hero--allievo {
  background-image: linear-gradient(180deg, rgba(26, 15, 62, .4) 0%, rgba(26, 15, 62, 0) 30%, rgba(26, 15, 62, .3) 50%, rgba(26, 15, 62, .86) 100%), url(../../images/ez-allievo-testata-800.webp);
  background-position: center, 62% 50%;
}
/* genitore: foto chiara (strumenti dei piccoli), testo scuro sulla parte bianca a sinistra */
.crml-portal.crml-ez .crml-ez-hero--genitore {
  background-color: #fbfaf8; color: var(--ez-ink);
  background-image: linear-gradient(90deg, rgba(251, 250, 248, .97) 0%, rgba(251, 250, 248, .85) 45%, rgba(251, 250, 248, 0) 78%), url(../../images/ez-genitore-testata-800.webp);
  background-position: center, 100% 60%;
}
.crml-portal.crml-ez .crml-ez-hero--genitore .crml-ez-home-date { color: var(--ez-bacheca-deep); text-shadow: none; }
.crml-portal.crml-ez .crml-ez-hero--genitore .crml-ez-h1 { color: var(--ez-ink); text-shadow: none; }
.crml-portal.crml-ez .crml-ez-hero--genitore .crml-ez-fh-sub { margin: 4px 0 0; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-hero--genitore .crml-ez-prof-btn { border-color: var(--ez-line-strong); background-color: var(--ez-surface); color: var(--ez-ink); }
@media (min-width: 720px) {
  .crml-portal.crml-ez .crml-ez-hero--allievo {
    background-image: linear-gradient(90deg, rgba(26, 15, 62, .85) 0%, rgba(26, 15, 62, .45) 55%, rgba(26, 15, 62, .05) 85%), url(../../images/ez-allievo-testata-1400.webp);
    background-position: center, 60% 50%;
  }
  .crml-portal.crml-ez .crml-ez-hero--genitore {
    background-image: linear-gradient(90deg, rgba(251, 250, 248, .97) 0%, rgba(251, 250, 248, .8) 45%, rgba(251, 250, 248, 0) 70%), url(../../images/ez-genitore-testata-1400.webp);
    background-position: center, 100% 60%;
  }
}

/* Nuovo arrivato (portale di chi ha prenotato la prova): foto della porta aperta sull'aula, "Esci" in alto a destra */
.crml-portal.crml-ez .crml-ez-top--foto {
  position: relative; box-sizing: border-box; align-items: flex-end;
  min-height: 210px; margin: 0 0 14px; padding: 76px 16px 18px; overflow: hidden;
  border-radius: var(--ez-r-lg);
  background-color: #2b1f4d;
  background-image: linear-gradient(180deg, rgba(26, 15, 62, .35) 0%, rgba(26, 15, 62, .1) 35%, rgba(26, 15, 62, .4) 55%, rgba(26, 15, 62, .88) 100%), url(../../images/ez-nuovo-testata-800.webp);
  background-position: center, 62% 50%; background-size: cover, cover; background-repeat: no-repeat, no-repeat;
  color: #fff;
}
.crml-portal.crml-ez .crml-ez-top--foto .crml-ez-h1 { margin: 0; font-family: var(--ez-font-t); font-size: 32px; line-height: 1.04; color: #fff; text-shadow: 0 1px 3px rgba(0, 0, 0, .35); }
.crml-portal.crml-ez .crml-ez-top--foto .crml-ez-muted { margin-top: 6px; color: rgba(255, 255, 255, .94); text-shadow: 0 1px 2px rgba(0, 0, 0, .35); }
.crml-portal.crml-ez .crml-ez-top--foto .crml-ez-logout { position: absolute; top: 12px; right: 12px; border-color: rgba(255, 255, 255, .8); }

/* Chi non ha ancora l'accesso (prenota la prima lezione): foto del palco sotto il riquadro viola */
.crml-portal.crml-ez.crml-ez-visitor .cv-hero--foto {
  padding: 96px 20px 28px;
  background-color: #2b1f4d;
  background-image: linear-gradient(180deg, rgba(26, 15, 62, .35) 0%, rgba(26, 15, 62, .55) 45%, rgba(26, 15, 62, .9) 100%), url(../../images/ez-ingresso-testata-800.webp);
  background-position: center, 45% 50%; background-size: cover, cover; background-repeat: no-repeat, no-repeat;
}
.crml-portal.crml-ez.crml-ez-visitor .cv-hero--foto h1 { font-family: var(--ez-font-t); font-size: 34px; line-height: 1.05; text-shadow: 0 1px 3px rgba(0, 0, 0, .35); }
@media (min-width: 720px) {
  .crml-portal.crml-ez .crml-ez-top--foto { min-height: 240px; padding: 84px 24px 22px; background-image: linear-gradient(90deg, rgba(26, 15, 62, .85) 0%, rgba(26, 15, 62, .45) 55%, rgba(26, 15, 62, .05) 85%), url(../../images/ez-nuovo-testata-1400.webp); }
  .crml-portal.crml-ez.crml-ez-visitor .cv-hero--foto { padding: 120px 28px 36px; background-image: linear-gradient(180deg, rgba(26, 15, 62, .3) 0%, rgba(26, 15, 62, .55) 45%, rgba(26, 15, 62, .9) 100%), url(../../images/ez-ingresso-testata-1400.webp); }
}

/* ===== 833a (20/10) - Passo 1: correzioni di leggibilita ===== */
/* Calendario: l'orario seguiva il rosa scuro di una vecchia regola (riempimento del testo #831843) anche sopra
   il colore pieno della lezione, dove il testo e bianco in linea: ora prende il colore della scritta */
html body[class] .crml-portal-wrap .crml-portal.crml-ez .crml-cal-event .crml-cal-evt-time { -webkit-text-fill-color: currentColor; }
/* Pacchetto: "Monte ore", ore rimaste, fatte e totali erano attaccate (riga flessibile senza spazio tra i pezzi) */
.crml-portal.crml-ez .crml-pack-hours { column-gap: 6px; row-gap: 2px; align-items: baseline; }

/* ===== 833a (20/10) - Passo 2: aree del maestro con il dato dentro ogni riquadro (come Staff Easy).
   Il PHP scrive crml-ez-ar-tiles--dati, crml-ez-tile-sub, crml-ez-tile--todo e i blocchi crml-ez-ar-next / crml-ez-ar-top
   solo con l'opzione crml_maestro_ez_aree_dati: a opzione spenta l'area resta quella di prima.
   Riquadri a colore pieno dell'area (--ez-ac), testo bianco; numero delle cose da fare in giallo del logo. ===== */
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-ar-tiles--dati a.crml-ez-tile { border: 0; border-left: 0; background: var(--ez-ac); color: #fff; -webkit-text-fill-color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-ar-tiles--dati a.crml-ez-tile:hover,
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-ar-tiles--dati a.crml-ez-tile:focus-visible { background: var(--ez-ac-deep); }
.crml-portal.crml-ez .crml-ez-ar-tiles--dati .crml-ez-tile-in { min-height: 122px; justify-content: space-between; gap: 6px; padding: 14px; }
.crml-portal.crml-ez .crml-ez-ar-tiles--dati .crml-ez-tile-ic { background: rgba(255, 255, 255, .18); color: #fff; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-ar-tiles--dati a.crml-ez-tile .crml-ez-tile-ic svg { color: #fff; stroke: currentColor; }
.crml-portal.crml-ez .crml-ez-ar-tiles--dati .crml-ez-tile-tx { margin-top: auto; font-family: var(--ez-font-t); font-size: 19px; letter-spacing: -0.01em; }
.crml-portal.crml-ez .crml-ez-tile-sub { display: block; max-width: calc(100% - 18px); font-size: 13px; font-weight: 600; line-height: 1.3; opacity: .92; }
.crml-portal.crml-ez .crml-ez-ar-tiles--dati .crml-ez-tile--todo .crml-ez-tile-sub { font-weight: 800; opacity: 1; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-ar-tiles--dati a.crml-ez-tile .crml-ez-bar-n { background: #FFBB4E; color: var(--ez-ink); -webkit-text-fill-color: var(--ez-ink); font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-ez-ar-tiles--dati a.crml-ez-tile .crml-ez-tile-ch svg { color: rgba(255, 255, 255, .7); stroke: currentColor; }

/* Area Lezioni: la prossima lezione in testa */
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-ar-next { display: block; margin: 0 0 12px; border-radius: var(--ez-r-md); background: var(--ez-surface); box-shadow: 0 2px 6px rgba(26, 15, 62, .06); color: var(--ez-ink); text-decoration: none; }
.crml-portal.crml-ez .crml-ez-ar-next-in { display: flex; align-items: center; gap: 12px; min-height: 64px; padding: 10px 14px; box-sizing: border-box; }
.crml-portal.crml-ez .crml-ez-ar-next-h { flex: none; font-family: var(--ez-font-t); font-size: 24px; font-weight: 800; color: var(--ez-ac); }
.crml-portal.crml-ez .crml-ez-ar-next-tx { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.crml-portal.crml-ez .crml-ez-ar-next-l { font-size: 12px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-ar-next-c { font-size: 15px; font-weight: 700; line-height: 1.3; overflow-wrap: anywhere; }
.crml-portal.crml-ez .crml-ez-ar-next-ch { flex: none; display: flex; color: var(--ez-line-strong); }

/* Area Compensi: lezioni del mese, ultimi 30 giorni e una barra per settimana */
.crml-portal.crml-ez .crml-ez-ar-top { margin: 0 0 12px; padding: 14px; border-radius: var(--ez-r-lg); background: var(--ez-surface); }
.crml-portal.crml-ez .crml-ez-ar-nums { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.crml-portal.crml-ez .crml-ez-ar-num { display: flex; flex-direction: column; gap: 2px; padding: 12px; border-radius: var(--ez-r-md); background: var(--ez-ac); color: #fff; }
.crml-portal.crml-ez .crml-ez-ar-num--chiaro { background: var(--ez-ac-soft); color: var(--ez-ac-deep); }
.crml-portal.crml-ez .crml-ez-ar-num-l { font-size: 12px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
.crml-portal.crml-ez .crml-ez-ar-num-v { font-family: var(--ez-font-t); font-size: 28px; font-weight: 800; line-height: 1.1; }
.crml-portal.crml-ez .crml-ez-ar-num-s { font-size: 13px; }
.crml-portal.crml-ez .crml-ez-ar-wks { display: flex; align-items: flex-end; gap: 10px; height: 118px; margin-top: 14px; }
.crml-portal.crml-ez .crml-ez-ar-wk { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 4px; height: 100%; min-width: 0; }
.crml-portal.crml-ez .crml-ez-ar-wk-b { width: 100%; max-height: 72px; border-radius: 8px 8px 4px 4px; background: var(--ez-ac-soft); }
.crml-portal.crml-ez .crml-ez-ar-wk.is-now .crml-ez-ar-wk-b { background: var(--ez-ac); }
.crml-portal.crml-ez .crml-ez-ar-wk.is-next .crml-ez-ar-wk-b { background: var(--ez-bg); border: 1px dashed var(--ez-line-strong); box-sizing: border-box; }
.crml-portal.crml-ez .crml-ez-ar-wk-n { font-size: 13px; font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-ar-wk-l { font-size: 12px; color: var(--ez-muted); white-space: nowrap; }
.crml-portal.crml-ez .crml-ez-ar-wk.is-now .crml-ez-ar-wk-l { font-weight: 800; color: var(--ez-ac-deep); }

/* ===== 833a (20/10) - Passo 3: pagine vuote illustrate (disegni Krea in assets/images/ez-vuoto-*.webp).
   CRML_Portal_App::ez_vuoto(): materiale, recuperi dell'allievo e del maestro; salvadanaio nel "Tutto in ordine" della home
   delle famiglie. Opzione crml_ez_vuoti_illustrati: a '0' tornano gli avvisi di prima. ===== */
.crml-portal.crml-ez .crml-ez-vuoto { display: flex; flex-direction: column; align-items: center; gap: 6px; margin: 0 0 14px; padding: 18px 16px 22px; border-radius: var(--ez-r-lg); background: var(--ez-surface); text-align: center; }
.crml-portal.crml-ez .crml-ez-vuoto-img { width: 168px; height: 168px; object-fit: contain; }
.crml-portal.crml-ez .crml-ez-vuoto-t { font-family: var(--ez-font-t); font-size: 22px; font-weight: 800; line-height: 1.15; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-vuoto-p { max-width: 320px; font-size: 15px; line-height: 1.45; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-fh-ok-img { flex: none; width: 72px; height: 72px; object-fit: contain; }

/* ===== 833a (20/10) - Passo 4: un disegno per ogni strumento (assets/images/ez-str-*.webp, CRML_Portal_App::ez_strumento()).
   Scheda della lezione: testata a colore tenue dello strumento con il disegno a destra; registro: il disegno al posto
   dell'icona (lo stato resta nell'etichetta). Opzione crml_ez_strumenti: a '0' torna tutto come prima. ===== */
.crml-portal.crml-ez .crml-ez-str--pianoforte { --ez-str-bg: #eee8f7; }
.crml-portal.crml-ez .crml-ez-str--chitarra { --ez-str-bg: #fbeedd; }
.crml-portal.crml-ez .crml-ez-str--canto { --ez-str-bg: #f9e6ef; }
.crml-portal.crml-ez .crml-ez-str--batteria { --ez-str-bg: #e3f2f8; }
.crml-portal.crml-ez .crml-ez-str--violino { --ez-str-bg: #fff1d6; }
.crml-portal.crml-ez .crml-ez-str--basso { --ez-str-bg: #e1f3e9; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-lezione-header.crml-ez-str {
  position: relative; overflow: hidden; align-items: flex-start; align-content: flex-start; min-height: 132px; margin-bottom: 16px;
  padding: 16px 150px 16px 16px; border: 0; border-radius: var(--ez-r-lg); background: var(--ez-str-bg);
}
.crml-portal.crml-ez .crml-lezione-header.crml-ez-str .crml-ez-str-img { position: absolute; right: -4px; bottom: -10px; width: 150px; height: 150px; object-fit: contain; pointer-events: none; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-lezione-header.crml-ez-str .crml-lezione-title { flex: 1 1 100%; font-family: var(--ez-font-t); font-size: 28px; line-height: 1.05; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez .crml-reg-item-icon.crml-ez-str-ic { width: 44px; height: 44px; border-radius: 12px; background: var(--ez-str-bg); }
.crml-portal.crml-ez .crml-reg-item-icon.crml-ez-str-ic .crml-ez-str-img { width: 36px; height: 36px; object-fit: contain; }

/* ===== 833a (20/10) - Passo 5: materiale didattico dell'allievo (CRML_Portal_App::ez_materiale_lista).
   Tipo dal collegamento con icona e colore, titolo dal programma della lezione, "Nuovo" per 7 giorni, filtro per tipo.
   Opzione crml_ez_materiale_v2: a '0' torna l'elenco di prima. ===== */
.crml-portal.crml-ez .crml-ez-mat--pdf { --ez-mat: #a3446f; --ez-mat-soft: #f9e6ef; }
.crml-portal.crml-ez .crml-ez-mat--audio { --ez-mat: #0f6a8c; --ez-mat-soft: #e3f2f8; }
.crml-portal.crml-ez .crml-ez-mat--video { --ez-mat: #a5510d; --ez-mat-soft: #fbeedd; }
.crml-portal.crml-ez .crml-ez-mat--img { --ez-mat: #1b7a4b; --ez-mat-soft: #e1f3e9; }
.crml-portal.crml-ez .crml-ez-mat--link { --ez-mat: #6a4b9b; --ez-mat-soft: #eee8f7; }
.crml-portal.crml-ez .crml-ez-mats { display: flex; flex-direction: column; gap: 10px; }
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-mat { box-sizing: border-box; width: 100%; border-radius: var(--ez-r-md); background: var(--ez-surface); color: var(--ez-ink); text-decoration: none; box-shadow: 0 2px 6px rgba(26, 15, 62, .05); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-mat { color: var(--ez-ink); -webkit-text-fill-color: currentColor; text-decoration: none; }
.crml-portal.crml-ez .crml-ez-mat-in { display: flex; align-items: center; gap: 12px; min-height: 76px; padding: 10px 12px; box-sizing: border-box; }
.crml-portal.crml-ez .crml-ez-mat-ic { flex: none; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; width: 50px; height: 58px; border-radius: 12px; background: var(--ez-mat-soft); color: var(--ez-mat); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-mat .crml-ez-mat-ic svg { color: var(--ez-mat); stroke: currentColor; }
.crml-portal.crml-ez .crml-ez-mat-k { font-size: 10px; font-weight: 800; letter-spacing: .04em; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-mat .crml-ez-mat-k { color: var(--ez-mat); -webkit-text-fill-color: var(--ez-mat); }
.crml-portal.crml-ez .crml-ez-mat-tx { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.crml-portal.crml-ez .crml-ez-mat-t { font-size: 15px; font-weight: 800; line-height: 1.3; overflow-wrap: anywhere; }
.crml-portal.crml-ez .crml-ez-mat-s { font-size: 13px; line-height: 1.3; color: var(--ez-muted); }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-mat .crml-ez-mat-s { color: var(--ez-muted); -webkit-text-fill-color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-mat-new { flex: none; padding: 4px 9px; border-radius: 999px; background: var(--ez-bacheca); font-size: 12px; font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-mat .crml-ez-mat-new { color: #fff; -webkit-text-fill-color: #fff; }
.crml-portal.crml-ez .crml-ez-mat-go { flex: none; padding: 7px 12px; border: 2px solid var(--ez-line-strong); border-radius: 12px; font-size: 13px; font-weight: 800; }
.crml-portal.crml-ez .crml-ez-mat-f { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 12px; }

/* ===== 833a (20/10) - Passo 6: home di allievo e genitore, saggio col conto alla rovescia (foto del palco gia usata
   all'ingresso) e prossimi appuntamenti (chiusure e saggi dell'allievo). Opzione crml_famiglie_ez_appuntamenti. ===== */
.crml-portal-wrap .crml-portal.crml-ez a.crml-ez-fh-saggio {
  display: block; overflow: hidden; margin: 0 0 14px; border-radius: var(--ez-r-lg); text-decoration: none;
  background-color: #2b1f4d;
  background-image: linear-gradient(180deg, rgba(26, 15, 62, .2) 0%, rgba(26, 15, 62, .88) 100%), url(../../images/ez-ingresso-testata-800.webp);
  background-position: center, 45% 50%; background-size: cover, cover; background-repeat: no-repeat, no-repeat;
}
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-fh-saggio { color: #fff; -webkit-text-fill-color: #fff; text-decoration: none; }
.crml-portal.crml-ez .crml-ez-fh-saggio-in { display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-end; gap: 4px; min-height: 180px; padding: 14px 16px 16px; box-sizing: border-box; }
.crml-portal.crml-ez .crml-ez-fh-saggio-pill { margin-bottom: auto; padding: 6px 12px; border-radius: 999px; background: #FFBB4E; font-size: 13px; font-weight: 800; }
html body[class] .crml-portal-wrap .crml-portal.crml-ez.crml-ez.crml-ez.crml-ez a.crml-ez-fh-saggio .crml-ez-fh-saggio-pill { color: var(--ez-ink); -webkit-text-fill-color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-fh-saggio-t { font-family: var(--ez-font-t); font-size: 24px; font-weight: 800; line-height: 1.05; text-shadow: 0 1px 3px rgba(0, 0, 0, .35); }
.crml-portal.crml-ez .crml-ez-fh-saggio-s { font-size: 14px; text-shadow: 0 1px 2px rgba(0, 0, 0, .35); }
.crml-portal.crml-ez .crml-ez-fh-saggio-b { font-size: 14px; font-weight: 800; text-shadow: 0 1px 2px rgba(0, 0, 0, .35); }
@media (min-width: 720px) {
  .crml-portal-wrap .crml-portal.crml-ez a.crml-ez-fh-saggio { background-image: linear-gradient(90deg, rgba(26, 15, 62, .88) 0%, rgba(26, 15, 62, .35) 70%), url(../../images/ez-ingresso-testata-1400.webp); }
}
.crml-portal.crml-ez .crml-ez-fh-apps { display: flex; flex-direction: column; margin: 0 0 14px; padding: 4px 14px; border-radius: var(--ez-r-md); background: var(--ez-surface); }
.crml-portal.crml-ez .crml-ez-fh-app { display: flex; align-items: center; gap: 12px; min-height: 60px; border-bottom: 1px solid var(--ez-line); }
.crml-portal.crml-ez .crml-ez-fh-app:last-child { border-bottom: 0; }
.crml-portal.crml-ez .crml-ez-fh-app-d { flex: none; display: flex; flex-direction: column; align-items: center; width: 46px; padding: 4px 0; border-radius: 12px; background: var(--ez-bg); }
.crml-portal.crml-ez .crml-ez-fh-app-d b { font-family: var(--ez-font-t); font-size: 20px; font-weight: 800; line-height: 1; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-fh-app-d span { font-size: 11px; font-weight: 800; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-fh-app--saggio .crml-ez-fh-app-d { background: #fff1d6; }
.crml-portal.crml-ez .crml-ez-fh-app--saggio .crml-ez-fh-app-d b, .crml-portal.crml-ez .crml-ez-fh-app--saggio .crml-ez-fh-app-d span { color: #6b4200; }
.crml-portal.crml-ez .crml-ez-fh-app-tx { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.crml-portal.crml-ez .crml-ez-fh-app-t { font-size: 15px; font-weight: 800; line-height: 1.3; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-fh-app-s { font-size: 13px; line-height: 1.3; color: var(--ez-muted); }

/* ===== 833a (idea 1, 20/10) - La foto in testata cambia con i mesi: Natale (1/12-6/1), primavera (21/3-31/5), giugno e luglio dei saggi.
   La classe crml-ez-hero--st-* la mette CRML_Portal_App::ez_stagione() (opzione crml_ez_testate_stagioni): fuori stagione resta la foto di sempre.
   Maestro prima, allievo dopo (stessa forza: vince la regola che viene dopo). Il genitore tiene la sua foto chiara. ===== */
.crml-portal.crml-ez .crml-ez-hero.crml-ez-hero--st-natale { background-image: linear-gradient(180deg, rgba(26, 15, 62, .4) 0%, rgba(26, 15, 62, 0) 30%, rgba(26, 15, 62, .3) 50%, rgba(26, 15, 62, .86) 100%), url(../../images/ez-maestro-natale-800.webp); background-position: center, 55% 50%; }
.crml-portal.crml-ez .crml-ez-hero.crml-ez-hero--st-primavera { background-image: linear-gradient(180deg, rgba(26, 15, 62, .4) 0%, rgba(26, 15, 62, 0) 30%, rgba(26, 15, 62, .3) 50%, rgba(26, 15, 62, .86) 100%), url(../../images/ez-maestro-primavera-800.webp); background-position: center, 55% 50%; }
.crml-portal.crml-ez .crml-ez-hero.crml-ez-hero--st-fineanno { background-image: linear-gradient(180deg, rgba(26, 15, 62, .4) 0%, rgba(26, 15, 62, 0) 30%, rgba(26, 15, 62, .3) 50%, rgba(26, 15, 62, .86) 100%), url(../../images/ez-maestro-fineanno-800.webp); background-position: center, 55% 50%; }
.crml-portal.crml-ez .crml-ez-hero--allievo.crml-ez-hero--st-natale { background-image: linear-gradient(180deg, rgba(26, 15, 62, .4) 0%, rgba(26, 15, 62, 0) 30%, rgba(26, 15, 62, .3) 50%, rgba(26, 15, 62, .86) 100%), url(../../images/ez-allievo-natale-800.webp); background-position: center, 60% 55%; }
.crml-portal.crml-ez .crml-ez-hero--allievo.crml-ez-hero--st-primavera { background-image: linear-gradient(180deg, rgba(26, 15, 62, .4) 0%, rgba(26, 15, 62, 0) 30%, rgba(26, 15, 62, .3) 50%, rgba(26, 15, 62, .86) 100%), url(../../images/ez-allievo-primavera-800.webp); background-position: center, 60% 55%; }
.crml-portal.crml-ez .crml-ez-hero--allievo.crml-ez-hero--st-fineanno { background-image: linear-gradient(180deg, rgba(26, 15, 62, .4) 0%, rgba(26, 15, 62, 0) 30%, rgba(26, 15, 62, .3) 50%, rgba(26, 15, 62, .86) 100%), url(../../images/ez-allievo-fineanno-800.webp); background-position: center, 60% 55%; }
@media (min-width: 720px) {
  .crml-portal.crml-ez .crml-ez-hero.crml-ez-hero--st-natale { background-image: linear-gradient(90deg, rgba(26, 15, 62, .85) 0%, rgba(26, 15, 62, .45) 55%, rgba(26, 15, 62, .05) 85%), url(../../images/ez-maestro-natale-1400.webp); background-position: center, 50% 45%; }
  .crml-portal.crml-ez .crml-ez-hero.crml-ez-hero--st-primavera { background-image: linear-gradient(90deg, rgba(26, 15, 62, .85) 0%, rgba(26, 15, 62, .45) 55%, rgba(26, 15, 62, .05) 85%), url(../../images/ez-maestro-primavera-1400.webp); background-position: center, 50% 45%; }
  .crml-portal.crml-ez .crml-ez-hero.crml-ez-hero--st-fineanno { background-image: linear-gradient(90deg, rgba(26, 15, 62, .85) 0%, rgba(26, 15, 62, .45) 55%, rgba(26, 15, 62, .05) 85%), url(../../images/ez-maestro-fineanno-1400.webp); background-position: center, 50% 45%; }
  .crml-portal.crml-ez .crml-ez-hero--allievo.crml-ez-hero--st-natale { background-image: linear-gradient(90deg, rgba(26, 15, 62, .85) 0%, rgba(26, 15, 62, .45) 55%, rgba(26, 15, 62, .05) 85%), url(../../images/ez-allievo-natale-1400.webp); background-position: center, 50% 62%; }
  .crml-portal.crml-ez .crml-ez-hero--allievo.crml-ez-hero--st-primavera { background-image: linear-gradient(90deg, rgba(26, 15, 62, .85) 0%, rgba(26, 15, 62, .45) 55%, rgba(26, 15, 62, .05) 85%), url(../../images/ez-allievo-primavera-1400.webp); background-position: center, 50% 62%; }
  .crml-portal.crml-ez .crml-ez-hero--allievo.crml-ez-hero--st-fineanno { background-image: linear-gradient(90deg, rgba(26, 15, 62, .85) 0%, rgba(26, 15, 62, .45) 55%, rgba(26, 15, 62, .05) 85%), url(../../images/ez-allievo-fineanno-1400.webp); background-position: center, 50% 62%; }
}

/* ===== 833a (idea 2, 20/10) - Traguardi dell'allievo nella home di allievo e genitore: quattro medaglie (disegni Krea
   ez-tg-*.webp), quelle non ancora raggiunte in grigio, e la barra verso il prossimo numero di lezioni.
   CRML_Portal_Home_V2::ez_traguardi_famiglia, opzione crml_famiglie_ez_traguardi. ===== */
.crml-portal.crml-ez .crml-ez-tg-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin-top: 10px; }
.crml-portal.crml-ez .crml-ez-tg-m { display: flex; flex-direction: column; align-items: center; gap: 2px; min-width: 0; padding: 8px 4px 10px; border-radius: var(--ez-r-md); background: var(--ez-bg); text-align: center; }
.crml-portal.crml-ez .crml-ez-tg-m--ok { background: #fff4dc; }
.crml-portal.crml-ez .crml-ez-tg-img { display: block; width: 64px; height: 64px; margin: -4px 0 -2px; }
.crml-portal.crml-ez .crml-ez-tg-m:not(.crml-ez-tg-m--ok) .crml-ez-tg-img { filter: grayscale(1); opacity: .45; }
.crml-portal.crml-ez .crml-ez-tg-t { font-size: 12px; font-weight: 800; line-height: 1.2; color: var(--ez-ink); overflow-wrap: anywhere; }
.crml-portal.crml-ez .crml-ez-tg-s { font-size: 11px; line-height: 1.25; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-tg-m--ok .crml-ez-tg-s { color: #6b4200; font-weight: 700; }
.crml-portal.crml-ez .crml-ez-tg-bar { margin-top: 12px; }
.crml-portal.crml-ez .crml-ez-tg-bar-h { display: flex; justify-content: space-between; gap: 8px; font-size: 13px; font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-tg-bar-h span + span { font-weight: 600; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-tg-bar-t { height: 10px; margin-top: 6px; overflow: hidden; border-radius: 999px; background: var(--ez-line); }
.crml-portal.crml-ez .crml-ez-tg-bar-t i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #6a4b9b, #a3446f); }

/* ===== 833a (idea 3, 20/10) - Aree di allievo e genitore col dato nei riquadri (stesse regole del passo 2 del maestro:
   crml-ez-ar-tiles--dati, crml-ez-ar-next). In testa a Lezioni il disegno dello strumento al posto dell'ora.
   CRML_Portal_App::ez_area_info_allievo, opzione crml_famiglie_ez_aree_dati. ===== */
.crml-portal.crml-ez .crml-ez-ar-next-h--str { display: flex; width: 52px; height: 52px; margin: -4px 0; }
.crml-portal.crml-ez .crml-ez-ar-next-h--str .crml-ez-str-img { width: 52px; height: 52px; }

/* ===== 833a (idea 4, 20/10) - Chat di allievo e famiglia: sopra la chat un riquadro per maestro (al massimo due) col
   disegno del suo strumento, corso, nome e prossima lezione; nell'elenco il disegno al posto della nota (script della chat).
   CRML_Portal_App::allievo_comunicazioni_full, opzione crml_ez_chat_strumenti. ===== */
.crml-portal.crml-ez .crml-ez-maes { display: grid; gap: 8px; margin: 0 0 12px; }
@media (min-width: 720px) { .crml-portal.crml-ez .crml-ez-maes { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); } }
.crml-portal.crml-ez .crml-ez-mae { display: flex; align-items: center; gap: 12px; padding: 10px 14px; border-radius: var(--ez-r-md); background: var(--ez-surface); box-shadow: 0 2px 6px rgba(26, 15, 62, .06); }
.crml-portal.crml-ez .crml-ez-mae .crml-ez-str-img { flex: none; width: 56px; height: 56px; border-radius: 14px; background: #fff4dc; }
.crml-portal.crml-ez .crml-ez-mae-tx { display: flex; flex-direction: column; min-width: 0; }
.crml-portal.crml-ez .crml-ez-mae-l { font-size: 12px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-mae-n { font-family: var(--ez-font-t); font-size: 20px; font-weight: 800; line-height: 1.15; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-mae-s { font-size: 13px; line-height: 1.3; color: var(--ez-muted); }

/* ===== 833a (idea 6, 20/10) - Schermata di festa nel portale dopo la ricevuta del bonifico: disegno Krea, grazie, un
   pulsante e "Chiudi". CRML_Portal_App::ez_festa, opzione crml_ez_festa. ===== */
.crml-portal.crml-ez .crml-ez-festa { display: flex; flex-direction: column; align-items: center; gap: 6px; margin: 0 0 16px; padding: 12px 18px 18px; border-radius: var(--ez-r-lg); background: var(--ez-surface); box-shadow: 0 2px 6px rgba(26, 15, 62, .06), 0 12px 28px rgba(26, 15, 62, .1); text-align: center; }
.crml-portal.crml-ez .crml-ez-festa-img { display: block; width: 180px; max-width: 60%; height: auto; }
.crml-portal.crml-ez .crml-ez-festa-t { font-family: var(--ez-font-t); font-size: 30px; font-weight: 800; line-height: 1.05; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-festa-p { max-width: 420px; margin: 0; font-size: 15px; line-height: 1.5; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-festa-b { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-top: 8px; }
.crml-portal.crml-ez .crml-ez-festa-x { min-height: 44px; padding: 0 18px; border: 2px solid var(--ez-line-strong); border-radius: 14px; background: var(--ez-surface); color: var(--ez-ink); font: inherit; font-size: 15px; font-weight: 700; cursor: pointer; }
.crml-portal.crml-ez .crml-ez-festa-b .crml-ez-btn { min-height: 44px; padding: 10px 18px; font-size: 15px; }

/* 833a (idea 1, ripresa) - Foto di stagione anche per il genitore: tavolo chiaro con ukulele e xilofono (Natale, primavera, saggi), stessa velatura bianca a sinistra.
   Dopo le regole dell'allievo: stessa forza, vince questa (il genitore ha crml-ez-hero--genitore, non --allievo). */
.crml-portal.crml-ez .crml-ez-hero--genitore.crml-ez-hero--st-natale { background-image: linear-gradient(90deg, rgba(251, 250, 248, .97) 0%, rgba(251, 250, 248, .85) 45%, rgba(251, 250, 248, 0) 78%), url(../../images/ez-genitore-natale-800.webp); background-position: center, 85% 60%; }
.crml-portal.crml-ez .crml-ez-hero--genitore.crml-ez-hero--st-primavera { background-image: linear-gradient(90deg, rgba(251, 250, 248, .97) 0%, rgba(251, 250, 248, .85) 45%, rgba(251, 250, 248, 0) 78%), url(../../images/ez-genitore-primavera-800.webp); background-position: center, 85% 60%; }
.crml-portal.crml-ez .crml-ez-hero--genitore.crml-ez-hero--st-fineanno { background-image: linear-gradient(90deg, rgba(251, 250, 248, .97) 0%, rgba(251, 250, 248, .85) 45%, rgba(251, 250, 248, 0) 78%), url(../../images/ez-genitore-fineanno-800.webp); background-position: center, 85% 60%; }
@media (min-width: 720px) {
  .crml-portal.crml-ez .crml-ez-hero--genitore.crml-ez-hero--st-natale { background-image: linear-gradient(90deg, rgba(251, 250, 248, .97) 0%, rgba(251, 250, 248, .8) 45%, rgba(251, 250, 248, 0) 70%), url(../../images/ez-genitore-natale-1400.webp); background-position: center, 100% 62%; }
  .crml-portal.crml-ez .crml-ez-hero--genitore.crml-ez-hero--st-primavera { background-image: linear-gradient(90deg, rgba(251, 250, 248, .97) 0%, rgba(251, 250, 248, .8) 45%, rgba(251, 250, 248, 0) 70%), url(../../images/ez-genitore-primavera-1400.webp); background-position: center, 100% 62%; }
  .crml-portal.crml-ez .crml-ez-hero--genitore.crml-ez-hero--st-fineanno { background-image: linear-gradient(90deg, rgba(251, 250, 248, .97) 0%, rgba(251, 250, 248, .8) 45%, rgba(251, 250, 248, 0) 70%), url(../../images/ez-genitore-fineanno-1400.webp); background-position: center, 100% 62%; }
}

/* ===== 833a (20/10) - Testata delle aree (Lezioni, Sede, Compensi, Pagamenti, Bacheca) con la foto della home sotto il
   colore dell'area, in trasparenza: stessa famiglia delle home, il colore dell'area resta quello. Opzione crml_ez_aree_foto. ===== */
.crml-portal.crml-ez .crml-ez-ar-head--foto::before { content: ""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; background-position: center; background-size: cover; background-repeat: no-repeat; opacity: .3; mix-blend-mode: luminosity; pointer-events: none; }
.crml-portal.crml-ez .crml-ez-ar-head--maestro::before { background-image: url(../../images/ez-maestro-testata-800.webp); }
.crml-portal.crml-ez .crml-ez-ar-head--allievo::before { background-image: url(../../images/ez-allievo-testata-800.webp); }
/* 833a: la foto sotto la testata delle aree segue le stagioni come la home (classe crml-ez-ar-head--st-* da ez_stagione) */
.crml-portal.crml-ez .crml-ez-ar-head--maestro.crml-ez-ar-head--st-natale::before { background-image: url(../../images/ez-maestro-natale-800.webp); }
.crml-portal.crml-ez .crml-ez-ar-head--maestro.crml-ez-ar-head--st-primavera::before { background-image: url(../../images/ez-maestro-primavera-800.webp); }
.crml-portal.crml-ez .crml-ez-ar-head--maestro.crml-ez-ar-head--st-fineanno::before { background-image: url(../../images/ez-maestro-fineanno-800.webp); }
.crml-portal.crml-ez .crml-ez-ar-head--allievo.crml-ez-ar-head--st-natale::before { background-image: url(../../images/ez-allievo-natale-800.webp); }
.crml-portal.crml-ez .crml-ez-ar-head--allievo.crml-ez-ar-head--st-primavera::before { background-image: url(../../images/ez-allievo-primavera-800.webp); }
.crml-portal.crml-ez .crml-ez-ar-head--allievo.crml-ez-ar-head--st-fineanno::before { background-image: url(../../images/ez-allievo-fineanno-800.webp); }

/* ==========================================================================
   842a - Nuova lezione di prova dal portale del genitore (CRML_Portal_Nuova_Prova)
   Ingressi (riquadro in fondo ai figli, riga in fondo alla home del figlio), sezione
   "Lezioni di prova" della pagina dei figli, pagina a tre passi. Bozza approvata 21/10/2026.
   ========================================================================== */
.crml-portal.crml-ez a.crml-ez-np-add { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border-color: #efc6d8; background: var(--ez-bacheca-soft); color: var(--ez-bacheca-deep); text-decoration: none; }
.crml-portal.crml-ez .crml-ez-np-add-ic { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 44px; width: 44px; height: 44px; border-radius: 50%; background: var(--ez-surface); color: var(--ez-bacheca); }
.crml-portal.crml-ez .crml-ez-np-add-tx { display: flex; flex-direction: column; flex: 1 1 auto; min-width: 0; gap: 2px; }
.crml-portal.crml-ez .crml-ez-np-add-tx b { font-family: var(--ez-font-t); font-size: 18px; font-weight: 700; line-height: 1.15; color: var(--ez-bacheca-deep); }
.crml-portal.crml-ez .crml-ez-np-add-tx span { font-size: 14px; color: var(--ez-bacheca-deep); }
.crml-portal.crml-ez .crml-ez-np-add-go { display: inline-flex; color: var(--ez-bacheca-deep); }

.crml-portal.crml-ez .crml-ez-np-sec { margin: 0 0 22px; }
.crml-portal.crml-ez .crml-ez-np-sec-h { margin: 0 0 10px; font-family: var(--ez-font-t); font-size: 22px; font-weight: 700; line-height: 1.15; color: var(--ez-ink); }

.crml-portal.crml-ez .crml-ez-np { max-width: 560px; }
.crml-portal.crml-ez .crml-ez-np [hidden] { display: none; }
.crml-portal.crml-ez .crml-ez-np-bar { display: flex; align-items: center; gap: 12px; margin: 0 0 12px; }
.crml-portal.crml-ez .crml-ez-np-bar[hidden] { display: none; }
.crml-portal.crml-ez .crml-ez-np-back { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 44px; width: 44px; height: 44px; min-height: 44px; padding: 0; border: 1px solid var(--ez-line); border-radius: var(--ez-r-sm); background: var(--ez-surface); background-image: none; color: var(--ez-ink); box-shadow: none; cursor: pointer; }
.crml-portal.crml-ez .crml-ez-np-bar-t { flex: 1 1 auto; min-width: 0; font-size: 16px; font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-np-steps { display: flex; gap: 6px; margin: 0 0 18px; }
.crml-portal.crml-ez .crml-ez-np-steps[hidden] { display: none; }
.crml-portal.crml-ez .crml-ez-np-steps i { flex: 1 1 0; height: 6px; border-radius: 6px; background: var(--ez-line); }
.crml-portal.crml-ez .crml-ez-np-steps i.is-on { background: var(--ez-bacheca); }
.crml-portal.crml-ez .crml-ez-np-step { display: flex; flex-direction: column; gap: 14px; }
.crml-portal.crml-ez .crml-ez-np-step[hidden] { display: none; }
.crml-portal.crml-ez .crml-ez-np-h { margin: 0; font-family: var(--ez-font-t); font-size: 26px; font-weight: 700; line-height: 1.1; color: var(--ez-ink); text-wrap: balance; }
.crml-portal.crml-ez .crml-ez-np-lab { font-size: 13px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-np-lab small { font-size: 12px; font-weight: 600; letter-spacing: 0; text-transform: none; }

.crml-portal.crml-ez .crml-ez-np-opts { display: grid; gap: 10px; }
.crml-portal.crml-ez .crml-ez-np-opt { position: relative; display: flex; align-items: center; gap: 12px; min-height: 66px; margin: 0; padding: 12px 14px; border: 2px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); color: var(--ez-ink); font-size: 16px; font-weight: 400; cursor: pointer; }
.crml-portal.crml-ez .crml-ez-np-opt input, .crml-portal.crml-ez .crml-ez-np-str input, .crml-portal.crml-ez .crml-ez-np-chip input { position: absolute; width: 1px; height: 1px; margin: 0; opacity: 0; pointer-events: none; }
.crml-portal.crml-ez .crml-ez-np-opt.is-sel { border-color: var(--ez-bacheca); background: #fff8fb; }
.crml-portal.crml-ez .crml-ez-np-opt.is-off { cursor: not-allowed; opacity: .55; }
.crml-portal.crml-ez .crml-ez-np-opt:has(input:focus-visible), .crml-portal.crml-ez .crml-ez-np-str:has(input:focus-visible), .crml-portal.crml-ez .crml-ez-np-chip:has(input:focus-visible) { outline: 3px solid var(--ez-allievi); outline-offset: 2px; }
.crml-portal.crml-ez .crml-ez-np-av { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 44px; width: 44px; height: 44px; border-radius: 50%; background: var(--ez-allievi-soft); color: var(--ez-allievi); font-family: var(--ez-font-t); font-size: 20px; font-weight: 700; }
.crml-portal.crml-ez .crml-ez-np-av--me { background: var(--ez-sede-soft); color: var(--ez-sede); }
.crml-portal.crml-ez .crml-ez-np-av--plus { background: var(--ez-bacheca-soft); color: var(--ez-bacheca); }
.crml-portal.crml-ez .crml-ez-np-opt-tx { display: flex; flex-direction: column; flex: 1 1 auto; min-width: 0; }
.crml-portal.crml-ez .crml-ez-np-opt-tx b { font-size: 17px; font-weight: 800; }
.crml-portal.crml-ez .crml-ez-np-opt-tx span { font-size: 14px; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-np-dot { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 22px; width: 22px; height: 22px; border: 2px solid var(--ez-line-strong); border-radius: 50%; box-sizing: border-box; }
.crml-portal.crml-ez .crml-ez-np-opt.is-sel .crml-ez-np-dot { border-color: var(--ez-bacheca); }
.crml-portal.crml-ez .crml-ez-np-opt.is-sel .crml-ez-np-dot::after { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--ez-bacheca); }

.crml-portal.crml-ez .crml-ez-np-fields { display: flex; flex-direction: column; gap: 10px; padding: 14px; border: 1px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); }
.crml-portal.crml-ez .crml-ez-np-fields[hidden] { display: none; }
.crml-portal.crml-ez .crml-ez-np-f2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.crml-portal.crml-ez .crml-ez-np-f { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.crml-portal.crml-ez .crml-ez-np-f label { margin: 0; font-size: 14px; font-weight: 700; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-np-f input, .crml-portal.crml-ez .crml-ez-np-f select, .crml-portal.crml-ez .crml-ez-np-f textarea { box-sizing: border-box; width: 100%; min-height: 48px; margin: 0; padding: 10px 12px; border: 2px solid #d9d2e8; border-radius: 14px; background: var(--ez-surface); color: var(--ez-ink); font-family: var(--ez-font); font-size: 16px; }
.crml-portal.crml-ez .crml-ez-np-f textarea { min-height: 84px; resize: vertical; }
@media (max-width: 380px) { .crml-portal.crml-ez .crml-ez-np-f2 { grid-template-columns: 1fr; } }

.crml-portal.crml-ez .crml-ez-np-strs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.crml-portal.crml-ez .crml-ez-np-str { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; min-height: 108px; margin: 0; padding: 10px 6px; border: 2px solid var(--ez-line); border-radius: var(--ez-r-md); background: var(--ez-surface); color: var(--ez-ink); text-align: center; cursor: pointer; }
.crml-portal.crml-ez .crml-ez-np-str img { width: 64px; height: 64px; }
.crml-portal.crml-ez .crml-ez-np-str-ic { display: inline-flex; align-items: center; justify-content: center; width: 64px; height: 64px; color: var(--ez-allievi); }
.crml-portal.crml-ez .crml-ez-np-str-n { font-size: 14px; font-weight: 800; line-height: 1.2; overflow-wrap: anywhere; }
.crml-portal.crml-ez .crml-ez-np-str.is-sel { border-color: var(--ez-bacheca); background: #fff8fb; }
.crml-portal.crml-ez .crml-ez-np-str.is-gia { cursor: not-allowed; opacity: .45; }
.crml-portal.crml-ez .crml-ez-np-str.is-gia::after { content: "Lo fa gi\00e0"; position: absolute; top: 6px; left: 50%; transform: translateX(-50%); padding: 1px 8px; border-radius: 99px; background: var(--ez-chip); color: var(--ez-chip-ink); font-size: 11px; font-weight: 700; white-space: nowrap; }
.crml-portal.crml-ez .crml-ez-np-str--forse { grid-column: 1 / -1; flex-direction: row; justify-content: flex-start; gap: 12px; min-height: 0; padding: 10px 14px; border-style: dashed; border-color: var(--ez-line-strong); text-align: left; }
.crml-portal.crml-ez .crml-ez-np-str--forse img { width: 48px; height: 48px; }
.crml-portal.crml-ez .crml-ez-np-str--forse .crml-ez-np-str-n { display: flex; flex-direction: column; font-weight: 400; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-np-str--forse .crml-ez-np-str-n b { font-size: 15px; font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-np-str--forse .crml-ez-np-str-n small { font-size: 13px; }
.crml-portal.crml-ez .crml-ez-np-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.crml-portal.crml-ez .crml-ez-np-chip { position: relative; display: inline-flex; align-items: center; min-height: 40px; margin: 0; padding: 0 14px; border: 1px solid var(--ez-line-strong); border-radius: 99px; background: var(--ez-surface); color: var(--ez-ink); font-size: 14px; font-weight: 600; cursor: pointer; }
.crml-portal.crml-ez .crml-ez-np-chip.is-sel { border-color: var(--ez-ink); background: var(--ez-ink); color: #fff; }

.crml-portal.crml-ez .crml-ez-np-sum { display: flex; flex-direction: column; margin: 0; padding: 4px 16px; }
.crml-portal.crml-ez .crml-ez-np-sum-r { display: flex; justify-content: space-between; gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--ez-line); font-size: 15px; }
.crml-portal.crml-ez .crml-ez-np-sum-r:last-child { border-bottom: 0; }
.crml-portal.crml-ez .crml-ez-np-sum-r span { flex: 0 0 auto; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-np-sum-r b { min-width: 0; text-align: right; overflow-wrap: anywhere; }
.crml-portal.crml-ez .crml-ez-np-lock { margin-top: -6px; font-size: 13px; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-np-cons { display: flex; align-items: flex-start; gap: 10px; margin: 0; padding: 12px 14px; border-radius: var(--ez-r-sm); background: var(--ez-allievi-soft); color: var(--ez-ink); font-size: 15px; font-weight: 400; line-height: 1.4; cursor: pointer; }
.crml-portal.crml-ez .crml-ez-np-cons[hidden] { display: none; }
.crml-portal.crml-ez .crml-ez-np-cons input { flex: 0 0 auto; width: 22px; height: 22px; margin: 1px 0 0; accent-color: var(--ez-bacheca); }
.crml-portal.crml-ez .crml-ez-np-cons a { color: var(--ez-allievi-deep); font-weight: 700; }
.crml-portal.crml-ez .crml-ez-np-err { padding: 12px 14px; border: 1px solid #f1c4c0; border-radius: var(--ez-r-sm); background: var(--ez-bad-soft); color: var(--ez-bad-deep); font-size: 15px; font-weight: 600; }
.crml-portal.crml-ez .crml-ez-np-err[hidden] { display: none; }

.crml-portal.crml-ez .crml-ez-np-done { align-items: stretch; }
.crml-portal.crml-ez .crml-ez-np-done-img { align-self: center; width: 160px; height: 160px; }
.crml-portal.crml-ez .crml-ez-np-done-ic { display: inline-flex; align-self: center; align-items: center; justify-content: center; width: 64px; height: 64px; border-radius: 50%; background: var(--ez-ok-soft); color: var(--ez-ok); }
.crml-portal.crml-ez .crml-ez-np-done .crml-ez-np-h { text-align: center; }
.crml-portal.crml-ez .crml-ez-np-done-p { margin: -6px 0 0; font-size: 16px; text-align: center; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-np-tl { display: flex; flex-direction: column; gap: 12px; margin: 0; }
.crml-portal.crml-ez .crml-ez-np-tl-r { display: flex; align-items: flex-start; gap: 12px; font-size: 15px; }
.crml-portal.crml-ez .crml-ez-np-tl-r > span:last-child { display: flex; flex-direction: column; min-width: 0; color: var(--ez-muted); }
.crml-portal.crml-ez .crml-ez-np-tl-r b { font-size: 16px; font-weight: 800; color: var(--ez-ink); }
.crml-portal.crml-ez .crml-ez-np-tl-n { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 28px; width: 28px; height: 28px; border-radius: 50%; background: var(--ez-chip); color: var(--ez-muted); font-family: var(--ez-font-t); font-size: 14px; font-weight: 700; }
.crml-portal.crml-ez .crml-ez-np-tl-r.is-now .crml-ez-np-tl-n { background: var(--ez-bacheca); color: #fff; }
