:root {
  --lrb-blue: #273583;
  --lrb-yellow: #ffd500;
  --lrb-black: #1d1d1b;
  --lrb-white: #fafafa;
  --lrb-gray: #c6c6c6;
  --lrb-bg: #f5f7fb;
  --lrb-border: #e4e7ef;
  --lrb-text: #111827;
  --lrb-muted: #6b7280;
  --lrb-green: #2eaf49;
  --lrb-red: #d92626;
  --lrb-orange: #f4b000;
  --lrb-purple: #8061d4;
}

.lrb-portal,
.lrb-portal * {
  box-sizing: border-box;
}

.lrb-portal {
  font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--lrb-text);
  background: radial-gradient(circle at top left, rgba(255, 213, 0, 0.10), transparent 28%), linear-gradient(180deg, #ffffff 0%, var(--lrb-bg) 100%);
  padding: 22px;
  border-radius: 20px;
}

.lrb-topbar {
  display: flex;
  align-items: center;
  gap: 22px;
  background: rgba(255,255,255,0.92);
  border: 1px solid var(--lrb-border);
  box-shadow: 0 10px 30px rgba(20, 31, 68, 0.07);
  border-radius: 18px;
  padding: 14px 18px;
  margin-bottom: 24px;
}

.lrb-brand img {
  display: block;
  width: 180px;
  height: auto;
}

.lrb-nav {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1;
  flex-wrap: wrap;
}

.lrb-nav a {
  color: var(--lrb-blue);
  text-decoration: none;
  font-weight: 700;
  padding: 10px 12px;
  border-radius: 12px;
}

.lrb-nav a:hover,
.lrb-nav a.is-active {
  background: rgba(39, 53, 131, 0.08);
}

.lrb-user {
  background: #f2f4fa;
  color: var(--lrb-blue);
  border-radius: 999px;
  padding: 9px 14px;
  font-weight: 700;
  white-space: nowrap;
}

.lrb-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 20px;
}

.lrb-hero h1 {
  font-size: clamp(30px, 4vw, 46px);
  line-height: 1.05;
  margin: 0 0 8px;
  color: var(--lrb-blue);
  letter-spacing: -0.04em;
}

.lrb-hero p {
  margin: 0;
  color: #4b5563;
  font-size: 16px;
}

.lrb-grid-main {
  display: grid;
  grid-template-columns: minmax(320px, 1fr) minmax(420px, 1.05fr) 270px;
  gap: 18px;
  align-items: start;
}

.lrb-card {
  background: rgba(255,255,255,0.96);
  border: 1px solid var(--lrb-border);
  border-radius: 18px;
  box-shadow: 0 14px 35px rgba(20, 31, 68, 0.08);
  padding: 20px;
  margin: 0 0 18px;
}

.lrb-card-title {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 18px;
}

.lrb-card-title .dashicons {
  color: var(--lrb-blue);
  background: rgba(39, 53, 131, 0.09);
  border-radius: 10px;
  padding: 7px;
  width: 34px;
  height: 34px;
  line-height: 20px;
}

.lrb-card h3,
.lrb-card-title h3 {
  margin: 0;
  color: var(--lrb-blue);
  font-size: 19px;
  font-weight: 800;
}

.lrb-booking-form label,
.lrb-field label {
  display: block;
  margin: 0 0 7px;
  color: #222b45;
  font-weight: 750;
  font-size: 13px;
}

.lrb-field {
  margin-bottom: 14px;
}

.lrb-form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

.lrb-booking-form input,
.lrb-booking-form select,
.lrb-booking-form textarea {
  width: 100%;
  border: 1px solid #d9deea;
  border-radius: 11px;
  background: #fff;
  min-height: 43px;
  padding: 10px 12px;
  color: var(--lrb-text);
  outline: none;
  transition: border-color .16s ease, box-shadow .16s ease;
}

.lrb-booking-form textarea {
  resize: vertical;
}

.lrb-booking-form input:focus,
.lrb-booking-form select:focus,
.lrb-booking-form textarea:focus {
  border-color: var(--lrb-blue);
  box-shadow: 0 0 0 4px rgba(39, 53, 131, 0.10);
}

.lrb-checkbox {
  display: flex !important;
  align-items: flex-start;
  gap: 10px;
  margin: 12px 0 16px !important;
  font-weight: 500 !important;
  color: #374151;
}

.lrb-checkbox input {
  width: 18px !important;
  min-height: auto !important;
  height: 18px;
  margin-top: 2px;
}

.lrb-checkbox a {
  color: var(--lrb-blue);
  font-weight: 800;
  text-decoration: none;
}

.lrb-actions {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 6px;
}

.lrb-button,
.lrb-mini-button,
.lrb-help-button {
  appearance: none;
  border: 0;
  border-radius: 11px;
  padding: 11px 16px;
  cursor: pointer;
  font-weight: 800;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

.lrb-button-primary {
  color: #fff;
  background: linear-gradient(135deg, var(--lrb-blue), #1c2764);
  box-shadow: 0 10px 20px rgba(39, 53, 131, 0.22);
}

.lrb-button-primary:hover {
  filter: brightness(1.06);
}

.lrb-button-secondary {
  color: var(--lrb-blue);
  background: #fff;
  border: 1px solid #d7dbea;
}

.lrb-message {
  margin-top: 14px;
  padding: 13px 14px;
  border-radius: 13px;
  font-weight: 700;
  font-size: 14px;
}

.lrb-message.ok,
.lrb-message.lrb-info-default {
  color: #176129;
  background: #eefaf1;
  border: 1px solid #bfe7c7;
}

.lrb-message.error {
  color: #8a1c1c;
  background: #fff1f1;
  border: 1px solid #f4b7b7;
}

.lrb-calendar-card {
  overflow: hidden;
}

#lrb-calendar .fc-toolbar-title {
  color: var(--lrb-blue);
  font-size: 22px;
  font-weight: 900;
}

#lrb-calendar .fc-button-primary {
  background: var(--lrb-blue);
  border-color: var(--lrb-blue);
  border-radius: 10px;
  font-weight: 800;
}

#lrb-calendar .fc-scrollgrid,
#lrb-calendar td,
#lrb-calendar th {
  border-color: #e7eaf1;
}

#lrb-calendar .fc-event {
  border: 0 !important;
  border-radius: 9px;
  padding: 3px 5px;
  font-weight: 800;
  font-size: 12px;
}

#lrb-calendar .lrb-event-status-pending { background: #fff2c7 !important; color: #6a4a00 !important; }
#lrb-calendar .lrb-event-status-approved { background: #daf5df !important; color: #176129 !important; }
#lrb-calendar .lrb-event-status-rejected { background: #ffe1e1 !important; color: #8a1c1c !important; }
#lrb-calendar .lrb-event-status-cancelled { background: #eceff4 !important; color: #4b5563 !important; }
#lrb-calendar .lrb-event-status-busy { background: #eee8ff !important; color: #4b2f9d !important; }

.lrb-side-card h3,
.lrb-help-card h3 {
  margin-top: 0;
}

.lrb-legend {
  list-style: none;
  margin: 12px 0 0;
  padding: 0;
  display: grid;
  gap: 10px;
}

.lrb-legend li {
  display: flex;
  align-items: center;
  gap: 9px;
  font-weight: 700;
  color: #344054;
}

.dot {
  width: 12px;
  height: 12px;
  border-radius: 999px;
  display: inline-block;
}
.dot.pending { background: var(--lrb-orange); }
.dot.approved { background: var(--lrb-green); }
.dot.rejected { background: var(--lrb-red); }
.dot.cancelled { background: #9ca3af; }
.dot.busy { background: var(--lrb-purple); }

.lrb-info-link {
  display: block;
  padding: 13px;
  border: 1px solid #e4e7ef;
  border-radius: 14px;
  text-decoration: none;
  margin-top: 12px;
  background: #fff;
}

.lrb-info-link strong {
  display: block;
  color: var(--lrb-blue);
  margin-bottom: 4px;
}

.lrb-info-link span {
  color: var(--lrb-muted);
  font-size: 13px;
}

.lrb-help-card {
  background: linear-gradient(135deg, rgba(39, 53, 131, 0.09), rgba(255, 213, 0, 0.10));
}

.lrb-help-card p {
  color: #4b5563;
}

.lrb-help-button {
  width: 100%;
  color: var(--lrb-blue);
  border: 1px solid rgba(39, 53, 131, 0.25);
  background: #fff;
}

.lrb-table-card {
  margin-top: 0;
}

.lrb-table-wrap {
  overflow-x: auto;
}

.lrb-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  min-width: 760px;
}

.lrb-table th,
.lrb-table td {
  border-bottom: 1px solid #edf0f6;
  padding: 12px 10px;
  text-align: left;
  vertical-align: middle;
}

.lrb-table th {
  color: #344054;
  background: #f7f8fc;
  font-size: 13px;
  font-weight: 900;
}

.lrb-table tbody tr:hover td {
  background: #fbfcff;
}

.lrb-status-badge {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  padding: 6px 10px;
  font-size: 12px;
  font-weight: 900;
}

.status-pending { background: #fff2c7; color: #6a4a00; }
.status-approved { background: #daf5df; color: #176129; }
.status-rejected { background: #ffe1e1; color: #8a1c1c; }
.status-cancelled { background: #eceff4; color: #4b5563; }

.lrb-row-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.lrb-mini-button {
  padding: 8px 11px;
  color: var(--lrb-blue);
  background: #fff;
  border: 1px solid rgba(39, 53, 131, 0.28);
}

.lrb-mini-danger {
  color: var(--lrb-red);
  border-color: rgba(217, 38, 38, 0.30);
}

.lrb-table-note {
  color: var(--lrb-muted);
  font-size: 13px;
  margin: 12px 0 0;
}

.lrb-login-box {
  max-width: 520px;
  margin: 30px auto;
}

.lrb-login-card {
  background: #fff;
  border: 1px solid var(--lrb-border);
  border-radius: 20px;
  box-shadow: 0 14px 35px rgba(20, 31, 68, 0.08);
  padding: 28px;
}

.lrb-login-logo {
  width: 190px;
  height: auto;
  margin-bottom: 16px;
}

.lrb-doc-page {
  max-width: 980px;
  margin: 0 auto;
}

/* v1.10.7 — La misura dei titoli delle pagine documento la decidiamo noi.
   Prima qui c'era solo il colore: senza font-size la misura la sceglieva il
   TEMA di WordPress, e il risultato era che «Turni circolo» usciva a 17px come
   titolo della scheda nel portale e a 32px come titolo della pagina intera —
   quasi il doppio, per la stessa cosa. Non era una scelta: era una misura che
   non controllavamo, diversa da tema a tema. */
.lrb-doc-page h1 {
  color: var(--lrb-blue);
  font-size: 24px;
  line-height: 1.25;
  margin: 0 0 12px;
}

.lrb-doc-page h2 {
  color: var(--lrb-blue);
  font-size: 18px;
  line-height: 1.3;
  margin: 22px 0 10px;
}

.lrb-doc-page p {
  color: #374151;
  line-height: 1.65;
}

/* v1.10.7 — La stessa scala, un gradino piu' bassa sul telefono.
   Sta QUI, subito sotto le regole base, e non in fondo al foglio insieme al
   resto della correzione dei turni: le pagine che si sono scelte una misura
   propria — `.lrb-guide-card h1` a 30px sotto i 760px, `.lrb-document-card h1`
   per regolamento, privacy e info utili — vengono dopo nel foglio e devono
   continuare a vincere. A specificita' pari decide l'ordine, e mettendo questo
   blocco in fondo si portava via la misura del titolo della guida (30 -> 20px)
   senza che nessuno l'avesse chiesto. Questa e' la misura di riserva, non
   l'ultima parola. */
@media (max-width: 600px) {
  .lrb-doc-page h1 { font-size: 20px; margin-bottom: 10px; }
  .lrb-doc-page h2 { font-size: 16.5px; margin: 16px 0 8px; }
}

@media (max-width: 1180px) {
  .lrb-grid-main {
    grid-template-columns: 1fr;
  }
  .lrb-sidebar {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
  }
}

@media (max-width: 760px) {
  .lrb-portal {
    padding: 14px;
  }
  .lrb-topbar,
  .lrb-hero,
  .lrb-form-row {
    display: block;
  }
  .lrb-brand img {
    width: 150px;
    margin-bottom: 12px;
  }
  .lrb-nav {
    margin: 10px 0;
  }
  .lrb-sidebar {
    grid-template-columns: 1fr;
  }
  #lrb-calendar .fc-toolbar {
    flex-direction: column;
    gap: 10px;
  }
}


/* ===== Fix layout v2.0.1: full-width portal, responsive cards and login form ===== */
body .lrb-portal {
  width: min(1440px, calc(100vw - 40px));
  max-width: none;
  margin-left: 50%;
  margin-right: 0;
  transform: translateX(-50%);
}

body .lrb-portal.lrb-login-box {
  width: min(560px, calc(100vw - 32px));
  max-width: 560px;
  margin: 34px auto;
  transform: none;
}

body .lrb-portal.lrb-doc-page {
  width: min(980px, calc(100vw - 40px));
  max-width: 980px;
  margin: 0 auto;
  transform: none;
}

.lrb-topbar {
  min-width: 0;
  flex-wrap: nowrap;
}

.lrb-brand {
  flex: 0 0 auto;
}

.lrb-nav {
  min-width: 0;
  justify-content: center;
}

.lrb-nav a {
  white-space: nowrap;
  font-size: 14px;
}

.lrb-user {
  max-width: 260px;
  overflow: hidden;
  text-overflow: ellipsis;
}

.lrb-grid-main > * {
  min-width: 0;
}

.lrb-calendar-card {
  min-width: 0;
}

#lrb-calendar {
  max-width: 100%;
  overflow-x: auto;
  padding-bottom: 2px;
}

#lrb-calendar .fc {
  min-width: 620px;
}

#lrb-calendar .fc-toolbar {
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}

#lrb-calendar .fc-toolbar-title {
  font-size: clamp(18px, 2vw, 22px) !important;
  line-height: 1.15 !important;
}

#lrb-calendar .fc-button,
#lrb-calendar .fc-button-primary {
  font-size: 13px !important;
  line-height: 1.15 !important;
  padding: 8px 11px !important;
  min-height: 34px !important;
  min-width: auto !important;
  text-transform: none !important;
  box-shadow: none !important;
}

#lrb-calendar .fc-button-group {
  gap: 4px;
}

#lrb-calendar .fc-daygrid-day-number,
#lrb-calendar .fc-col-header-cell-cushion {
  font-size: 13px;
  text-decoration: none;
}

.lrb-login-card h2 {
  color: var(--lrb-blue);
  font-size: clamp(28px, 4vw, 38px);
  line-height: 1.1;
  margin: 14px 0 12px;
}

.lrb-login-card p {
  color: #4b5563;
  font-size: 17px;
  line-height: 1.5;
}

.lrb-login-card form,
.lrb-login-card .login-username,
.lrb-login-card .login-password,
.lrb-login-card .login-remember,
.lrb-login-card .login-submit {
  width: 100%;
  margin: 0 0 15px;
}

.lrb-login-card label {
  display: block;
  color: #222b45;
  font-weight: 800;
  font-size: 14px;
  margin-bottom: 7px;
}

.lrb-login-card .login-remember label {
  display: flex;
  align-items: center;
  gap: 9px;
  font-weight: 650;
}

.lrb-login-card input[type="text"],
.lrb-login-card input[type="password"] {
  width: 100%;
  max-width: 100%;
  border: 1px solid #d9deea;
  border-radius: 11px;
  min-height: 45px;
  padding: 10px 12px;
  font-size: 16px;
}

.lrb-login-card input[type="checkbox"] {
  width: 18px;
  height: 18px;
}

.lrb-login-card input[type="submit"] {
  appearance: none;
  border: 0;
  border-radius: 11px;
  padding: 12px 18px;
  color: #fff;
  background: linear-gradient(135deg, var(--lrb-blue), #1c2764);
  box-shadow: 0 10px 20px rgba(39, 53, 131, 0.22);
  font-weight: 900;
  cursor: pointer;
}

.lrb-login-logo {
  display: block;
  max-width: 220px;
}

@media (max-width: 1320px) {
  .lrb-grid-main {
    grid-template-columns: minmax(300px, 0.95fr) minmax(430px, 1.25fr);
  }
  .lrb-sidebar {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
  }
}

@media (max-width: 980px) {
  body .lrb-portal {
    width: calc(100vw - 24px);
    padding: 14px;
  }
  .lrb-grid-main {
    grid-template-columns: 1fr;
  }
  .lrb-topbar {
    display: grid;
    grid-template-columns: 1fr;
    gap: 12px;
  }
  .lrb-brand img {
    width: 170px;
    margin: 0;
  }
  .lrb-nav {
    justify-content: flex-start;
  }
  .lrb-user {
    justify-self: start;
  }
  .lrb-sidebar {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 640px) {
  .lrb-form-row {
    grid-template-columns: 1fr;
  }
  #lrb-calendar .fc {
    min-width: 560px;
  }
  .lrb-card {
    padding: 16px;
  }
  .lrb-hero h1 {
    font-size: 34px;
  }
}


/* v2.0.2 - layout hardening against narrow WordPress theme containers */
body .entry-content > .lrb-portal,
body .wp-block-post-content > .lrb-portal,
body .wp-site-blocks .lrb-portal,
body .lrb-portal {
  width: min(1480px, calc(100vw - 48px)) !important;
  max-width: min(1480px, calc(100vw - 48px)) !important;
  margin-left: auto !important;
  margin-right: auto !important;
  float: none !important;
  clear: both !important;
  position: relative !important;
  left: auto !important;
  right: auto !important;
  transform: none !important;
  overflow: visible !important;
}

body .entry-content > .lrb-portal.alignwide,
body .entry-content > .lrb-portal.alignfull,
body .wp-block-post-content > .lrb-portal.alignwide,
body .wp-block-post-content > .lrb-portal.alignfull {
  margin-left: auto !important;
  margin-right: auto !important;
  width: min(1480px, calc(100vw - 48px)) !important;
  max-width: min(1480px, calc(100vw - 48px)) !important;
}

.lrb-portal {
  isolation: isolate;
}

.lrb-portal .lrb-topbar,
.lrb-portal .lrb-grid-main,
.lrb-portal .lrb-table-card,
.lrb-portal .lrb-hero {
  width: 100%;
  max-width: 100%;
}

.lrb-topbar {
  justify-content: space-between;
  flex-wrap: wrap;
}

.lrb-brand {
  flex: 0 0 auto;
}

.lrb-nav {
  min-width: 0;
}

.lrb-grid-main {
  grid-template-columns: minmax(300px, 0.95fr) minmax(430px, 1.25fr) minmax(240px, 0.55fr);
}

.lrb-calendar-card,
.lrb-form-card,
.lrb-sidebar,
.lrb-table-card {
  min-width: 0;
}

#lrb-calendar {
  max-width: 100%;
  overflow-x: auto;
}

#lrb-calendar .fc {
  min-width: 620px;
}

#lrb-calendar .fc-toolbar {
  gap: 10px;
  flex-wrap: wrap;
}

#lrb-calendar .fc-toolbar-chunk {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

#lrb-calendar .fc-button-primary {
  padding: 8px 10px;
  font-size: 13px;
}

#lrb-calendar .fc-toolbar-title {
  font-size: clamp(18px, 2vw, 22px);
  white-space: nowrap;
}

.lrb-login-card {
  text-align: left;
}

.lrb-login-logo {
  display: block;
  width: min(220px, 70%);
  margin: 0 auto 22px !important;
}

.lrb-login-card h2,
.lrb-login-card p {
  text-align: center;
}

.lrb-login-card form {
  max-width: 360px;
  margin: 20px auto 0;
}

.lrb-login-card label {
  display: block;
  font-weight: 700;
  color: var(--lrb-blue);
  margin-bottom: 6px;
}

.lrb-login-card input[type="text"],
.lrb-login-card input[type="password"] {
  width: 100%;
  border: 1px solid #d9deea;
  border-radius: 11px;
  min-height: 43px;
  padding: 10px 12px;
}

.lrb-login-card .login-remember label {
  display: flex;
  align-items: center;
  gap: 8px;
  color: #374151;
  font-weight: 600;
}

.lrb-login-card .button,
.lrb-login-card input[type="submit"] {
  width: 100%;
  border: 0;
  border-radius: 11px;
  padding: 12px 16px;
  color: #fff;
  background: linear-gradient(135deg, var(--lrb-blue), #1c2764);
  font-weight: 800;
  cursor: pointer;
}

@media (max-width: 1320px) {
  .lrb-grid-main {
    grid-template-columns: minmax(320px, 1fr) minmax(430px, 1.25fr);
  }
  .lrb-sidebar {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
  }
}

@media (max-width: 980px) {
  body .entry-content > .lrb-portal,
  body .wp-block-post-content > .lrb-portal,
  body .wp-site-blocks .lrb-portal,
  body .lrb-portal {
    width: min(100%, calc(100vw - 24px)) !important;
    max-width: min(100%, calc(100vw - 24px)) !important;
  }
  .lrb-grid-main {
    grid-template-columns: 1fr;
  }
  .lrb-sidebar {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 640px) {
  body .lrb-portal {
    width: calc(100vw - 16px) !important;
    max-width: calc(100vw - 16px) !important;
    padding: 12px;
  }
  .lrb-topbar {
    padding: 12px;
  }
  .lrb-brand img {
    width: 145px;
  }
  .lrb-nav a,
  .lrb-user {
    font-size: 14px;
  }
  .lrb-card {
    padding: 16px;
  }
  #lrb-calendar .fc {
    min-width: 560px;
  }
}

/* v2.0.3 standalone app shell: bypass theme layout visually */
html, body.lrb-app-body {
  margin: 0 !important;
  padding: 0 !important;
  width: 100% !important;
  min-height: 100% !important;
  background: #f5f7fb !important;
}
body.lrb-app-body {
  /* v1.10.39 — ultimo dei tre: guscio, body e <html> tagliavano tutti in
     orizzontale con `hidden`, e ognuno dei tre diventava percio' un
     contenitore che scorre. Misurato: il body si prendeva lo scorrimento pur
     non avendo nulla da scorrere, su ogni telefono e anche nel browser.
     Qui il difetto non si vedeva perche' la pagina scorre comunque dal
     documento; nella app installata su Android, con tutti e tre in fila, la
     catena si perdeva. `clip` taglia uguale e non scorre. */
  overflow-x: clip;
}
@supports not (overflow-x: clip) {
  body.lrb-app-body { overflow-x: hidden; }
}
.lrb-app-shell {
  width: 100%;
  /* v1.9.20: senza border-box il padding si SOMMA al 100% di larghezza, e la
     pagina finisce per essere piu' larga dello schermo di esattamente il
     doppio del padding (24px su smartphone, 48px su desktop). Era questa la
     causa per cui il portale si lasciava trascinare di lato senza tornare
     centrato. La regola globale box-sizing del portale non copriva questo
     elemento, perche' .lrb-app-shell e' il contenitore ESTERNO di .lrb-portal. */
  box-sizing: border-box;
  min-height: 100vh;
  padding: 24px;
  background: radial-gradient(circle at top left, rgba(255, 213, 0, 0.10), transparent 28%), linear-gradient(180deg, #ffffff 0%, var(--lrb-bg) 100%);
}
.lrb-app-shell .lrb-portal {
  width: min(1480px, calc(100vw - 48px)) !important;
  max-width: min(1480px, calc(100vw - 48px)) !important;
  margin: 0 auto !important;
}
.lrb-app-shell .lrb-login-box {
  min-height: calc(100vh - 48px);
  display: flex;
  align-items: center;
  justify-content: center;
}
.lrb-doc-topbar {
  margin-bottom: 18px;
}
.lrb-document-card {
  max-width: 980px;
  margin: 0 auto 24px !important;
  padding: clamp(22px, 4vw, 42px);
}
.lrb-document-card h1 {
  color: var(--lrb-blue);
  font-size: clamp(32px, 4vw, 48px);
  line-height: 1.05;
  margin: 0 0 18px;
  letter-spacing: -0.04em;
}
.lrb-document-card h2 {
  color: var(--lrb-blue);
  margin-top: 28px;
  margin-bottom: 8px;
  font-size: 22px;
}
.lrb-document-card p {
  color: #374151;
  line-height: 1.68;
  font-size: 16px;
}
.lrb-document-card li {
  font-size: 16px;
  line-height: 1.55;
  margin-bottom: 6px;
}
.lrb-terms-card .lrb-terms-grid ol,
.lrb-terms-card .lrb-terms-grid ul {
  margin: 10px 0 0 22px;
  padding-left: 18px;
}
.lrb-doc-updated,
.lrb-doc-note {
  background: rgba(39, 53, 131, 0.06);
  border: 1px solid rgba(39, 53, 131, 0.12);
  border-radius: 14px;
  padding: 14px 16px;
}
/* v1.8.73 - Avviso "vedi solo le sezioni dei tuoi permessi" nella guida operatori. */
.lrb-guide-scope-note {
  background: #f0f6ff;
  border: 1px solid #cfe0f7;
  border-radius: 14px;
  padding: 12px 16px;
  font-size: .9rem;
  color: #24457d;
  margin: 0 0 16px;
}
@media (max-width: 980px) {
  .lrb-app-shell {
    padding: 12px;
  }
  .lrb-app-shell .lrb-portal {
    width: min(100%, calc(100vw - 24px)) !important;
    max-width: min(100%, calc(100vw - 24px)) !important;
  }
}

/* v2.0.4 - font istituzionale, layout compatto e rifiniture UX */
.lrb-portal,
.lrb-portal *,
.lrb-login-card,
.lrb-login-card * {
  font-family: "Arial Narrow", Arial, Helvetica, sans-serif !important;
}

.lrb-portal {
  padding: 18px !important;
}

.lrb-topbar {
  padding: 12px 16px;
  margin-bottom: 18px;
}

.lrb-brand img {
  width: 165px;
}

.lrb-nav a {
  padding: 8px 11px;
  font-size: 15px;
}

.lrb-user-menu {
  display: flex;
  align-items: center;
  gap: 9px;
  flex-wrap: wrap;
}

.lrb-logout {
  color: var(--lrb-blue);
  text-decoration: none;
  font-weight: 800;
  border: 1px solid rgba(39, 53, 131, 0.18);
  background: #fff;
  border-radius: 999px;
  padding: 8px 12px;
}

.lrb-hero {
  margin-bottom: 14px;
}

.lrb-hero h1 {
  font-size: clamp(32px, 3.2vw, 44px);
  letter-spacing: -0.02em;
}

.lrb-hero p {
  max-width: 760px;
}

.lrb-grid-main {
  grid-template-columns: minmax(330px, 0.88fr) minmax(520px, 1.25fr) 260px;
  gap: 16px;
}

.lrb-card {
  padding: 18px;
  margin-bottom: 16px;
}

.lrb-card-title {
  margin-bottom: 14px;
}

.lrb-form-section {
  margin: 16px 0 10px;
  border-top: 1px solid #eef1f7;
  padding-top: 13px;
}

.lrb-form-section:first-of-type {
  margin-top: 4px;
  border-top: 0;
  padding-top: 0;
}

.lrb-form-section span {
  display: inline-flex;
  align-items: center;
  color: var(--lrb-blue);
  background: rgba(39, 53, 131, 0.07);
  border-radius: 999px;
  padding: 5px 10px;
  font-weight: 900;
  font-size: 13px;
}

.lrb-field {
  margin-bottom: 11px;
}

.lrb-booking-form input,
.lrb-booking-form select,
.lrb-booking-form textarea {
  min-height: 39px;
  padding: 8px 11px;
  border-radius: 10px;
}

.lrb-booking-form textarea {
  min-height: 66px;
}

.lrb-actions {
  margin-top: 8px;
}

.lrb-button,
.lrb-mini-button,
.lrb-help-button {
  padding: 9px 14px;
  border-radius: 10px;
}

/* Calendario più compatto */
#lrb-calendar .fc {
  font-family: "Arial Narrow", Arial, Helvetica, sans-serif !important;
}

#lrb-calendar .fc-toolbar.fc-header-toolbar {
  margin-bottom: 10px;
}

#lrb-calendar .fc-toolbar-title {
  font-size: 20px !important;
  font-weight: 900 !important;
}

#lrb-calendar .fc-button,
#lrb-calendar .fc-button-primary {
  font-size: 12px !important;
  padding: 7px 9px !important;
  min-height: 31px !important;
  border-radius: 9px !important;
}

#lrb-calendar .fc-daygrid-day-frame {
  min-height: 82px !important;
}

#lrb-calendar .fc-daygrid-day-number {
  font-size: 12px !important;
  padding: 5px 6px !important;
}

#lrb-calendar .fc-col-header-cell-cushion {
  font-size: 12px !important;
  padding: 6px 4px !important;
}

#lrb-calendar .fc-event {
  font-size: 11px !important;
  line-height: 1.15 !important;
  padding: 2px 4px !important;
  margin-top: 1px !important;
}

.lrb-side-card,
.lrb-help-card {
  padding: 16px;
}

.lrb-side-card h3,
.lrb-help-card h3 {
  font-size: 18px;
  line-height: 1.08;
}

.lrb-legend {
  gap: 7px;
}

.lrb-legend li {
  font-size: 15px;
}

.lrb-info-link {
  padding: 11px;
}

.lrb-footer {
  text-align: center;
  color: #667085;
  font-size: 13px;
  font-weight: 700;
  margin: 10px 0 0;
  padding: 16px 0 6px;
}

/* Login: logo centrato sopra i campi */
.lrb-login-card {
  text-align: left;
}

.lrb-login-logo {
  display: block !important;
  margin: 0 auto 18px !important;
  max-width: 230px;
}

.lrb-login-card h2,
.lrb-login-card > p {
  text-align: center;
}

.lrb-login-card input[type="submit"] {
  width: 100%;
}

@media (max-width: 1320px) {
  .lrb-grid-main {
    grid-template-columns: minmax(320px, 0.9fr) minmax(470px, 1.1fr);
  }
}

@media (max-width: 980px) {
  .lrb-user-menu {
    justify-self: start;
  }
  .lrb-brand img {
    width: 155px;
  }
}


/* v2.0.5 - proposta grafica pulita, calendario simmetrico e box assistenza compatto */
:root {
  --lrb-bg: #f7f9fc;
  --lrb-soft-blue: #eef2ff;
}

html,
body.lrb-app-body {
  background: #f7f9fc !important;
}

.lrb-app-shell {
  background:
    linear-gradient(180deg, rgba(39, 53, 131, 0.045) 0%, rgba(247, 249, 252, 0) 260px),
    #f7f9fc !important;
}

.lrb-portal {
  background: transparent !important;
}

.lrb-topbar,
.lrb-card {
  background: rgba(255, 255, 255, 0.98) !important;
}

.lrb-card {
  box-shadow: 0 12px 30px rgba(20, 31, 68, 0.065) !important;
}

/* Il font istituzionale non deve sovrascrivere le icone */
.lrb-portal .dashicons,
.lrb-portal .dashicons-before:before {
  font-family: dashicons !important;
}

#lrb-calendar .fc-icon {
  font-family: fcicons !important;
}

/* Calendario: celle regolari e griglia più stabile */
#lrb-calendar {
  overflow-x: hidden !important;
}

#lrb-calendar .fc {
  width: 100% !important;
  min-width: 0 !important;
}

#lrb-calendar .fc-scrollgrid,
#lrb-calendar .fc-scrollgrid table,
#lrb-calendar .fc-col-header,
#lrb-calendar .fc-daygrid-body,
#lrb-calendar .fc-daygrid-body table {
  width: 100% !important;
  table-layout: fixed !important;
}

#lrb-calendar .fc-daygrid-day-frame {
  min-height: 78px !important;
  height: 78px !important;
  display: flex !important;
  flex-direction: column !important;
}

#lrb-calendar .fc-daygrid-day-events {
  min-height: 0 !important;
  margin: 0 3px 2px !important;
  flex: 1 1 auto !important;
  overflow: hidden !important;
}

#lrb-calendar .fc-daygrid-event-harness {
  margin-top: 1px !important;
}

#lrb-calendar .fc-event {
  max-width: 100% !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

#lrb-calendar .fc-event-title,
#lrb-calendar .fc-event-time {
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

#lrb-calendar .fc-toolbar.fc-header-toolbar {
  align-items: center !important;
  display: grid !important;
  grid-template-columns: auto 1fr auto !important;
  gap: 10px !important;
}

#lrb-calendar .fc-toolbar-chunk:nth-child(2) {
  justify-content: center !important;
}

#lrb-calendar .fc-toolbar-chunk:nth-child(3) {
  justify-content: flex-end !important;
}

#lrb-calendar .fc-button-group,
#lrb-calendar .fc-toolbar-chunk {
  display: flex !important;
  align-items: center !important;
}

#lrb-calendar .fc-prev-button,
#lrb-calendar .fc-next-button {
  width: 34px !important;
  min-width: 34px !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}

/* Sidebar più compatta e pulita */
.lrb-sidebar {
  gap: 14px !important;
}

.lrb-side-card,
.lrb-help-card {
  padding: 15px !important;
}

.lrb-help-card {
  background: #ffffff !important;
  border-left: 4px solid var(--lrb-blue) !important;
  box-shadow: 0 10px 24px rgba(20, 31, 68, 0.055) !important;
}

.lrb-help-card h3 {
  font-size: 17px !important;
  margin-bottom: 8px !important;
}

.lrb-help-card p {
  font-size: 13px !important;
  line-height: 1.35 !important;
  margin: 0 0 10px !important;
  color: #5b6475 !important;
}

.lrb-help-button {
  width: auto !important;
  min-height: 34px !important;
  padding: 8px 11px !important;
  font-size: 13px !important;
  border-radius: 9px !important;
}

.lrb-info-link {
  min-height: auto !important;
}

.lrb-info-link strong {
  font-size: 17px !important;
}

.lrb-info-link span {
  line-height: 1.35 !important;
}

@media (max-width: 1180px) {
  #lrb-calendar .fc-toolbar.fc-header-toolbar {
    grid-template-columns: 1fr !important;
  }
  #lrb-calendar .fc-toolbar-chunk,
  #lrb-calendar .fc-toolbar-chunk:nth-child(2),
  #lrb-calendar .fc-toolbar-chunk:nth-child(3) {
    justify-content: center !important;
  }
}

@media (max-width: 760px) {
  #lrb-calendar {
    overflow-x: auto !important;
  }
  #lrb-calendar .fc {
    min-width: 620px !important;
  }
}

/* v2.0.6 - riepilogo prossime prenotazioni sotto calendario */
.lrb-upcoming-panel {
  margin-top: 16px;
  padding: 16px;
  border: 1px solid rgba(39, 53, 131, 0.10);
  border-radius: 18px;
  background: linear-gradient(180deg, rgba(250, 250, 250, 0.98), rgba(247, 249, 252, 0.98));
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.8);
}

.lrb-upcoming-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}

.lrb-upcoming-head h3 {
  margin: 0;
  color: var(--lrb-blue);
  font-size: 21px;
  line-height: 1.05;
  font-weight: 700;
}

.lrb-upcoming-head p {
  margin: 4px 0 0;
  color: #6b7280;
  font-size: 13px;
  line-height: 1.3;
}

.lrb-upcoming-count {
  min-width: 30px;
  height: 30px;
  padding: 0 9px;
  border-radius: 999px;
  background: var(--lrb-blue);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 14px;
}

.lrb-upcoming-list {
  display: grid;
  gap: 8px;
}

.lrb-upcoming-item {
  display: grid;
  grid-template-columns: 72px 1fr auto;
  gap: 10px;
  align-items: center;
  padding: 10px 12px;
  border: 1px solid rgba(39, 53, 131, 0.08);
  border-radius: 14px;
  background: #fff;
}

.lrb-upcoming-date {
  display: flex;
  flex-direction: column;
  gap: 2px;
  color: var(--lrb-blue);
  line-height: 1.1;
}

.lrb-upcoming-date strong {
  font-size: 14px;
  font-weight: 700;
}

.lrb-upcoming-date span {
  font-size: 13px;
  color: #6b7280;
}

.lrb-upcoming-main {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.lrb-upcoming-main strong,
.lrb-upcoming-main span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.lrb-upcoming-main strong {
  color: #1f2937;
  font-size: 14px;
  font-weight: 700;
}

.lrb-upcoming-main span {
  color: #6b7280;
  font-size: 13px;
}

.lrb-upcoming-status {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 26px;
  padding: 4px 9px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  white-space: nowrap;
}

.lrb-upcoming-status.status-pending { background: #fff2c7; color: #6a4a00; }
.lrb-upcoming-status.status-approved { background: #daf5df; color: #176129; }
.lrb-upcoming-status.status-rejected { background: #ffe1e1; color: #8a1c1c; }
.lrb-upcoming-status.status-cancelled { background: #eceff4; color: #4b5563; }
.lrb-upcoming-status.status-busy { background: #eee8ff; color: #4b2f9d; }

.lrb-upcoming-empty {
  padding: 14px;
  border-radius: 14px;
  background: #fff;
  color: #6b7280;
  border: 1px dashed rgba(39, 53, 131, 0.18);
}

@media (max-width: 760px) {
  .lrb-upcoming-item {
    grid-template-columns: 62px 1fr;
  }
  .lrb-upcoming-status {
    grid-column: 2;
    justify-self: start;
  }
}

.lrb-login-help {
  margin-top: 12px;
  text-align: center;
  font-size: 14px;
}

.lrb-login-help a {
  color: var(--lrb-blue);
  font-weight: 700;
  text-decoration: none;
}

.lrb-login-extra {
  margin-top: 12px;
  text-align: center;
  font-size: 15px;
  color: #4b5563;
}

.lrb-login-extra a {
  color: var(--lrb-blue);
  font-weight: 700;
  text-decoration: none;
}

.lrb-register-card {
  max-width: 760px;
}

.lrb-upcoming-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}

.lrb-contact-owner {
  border: 1px solid rgba(39, 53, 131, 0.22);
  color: var(--lrb-blue);
  background: #fff;
  border-radius: 999px;
  padding: 5px 9px;
  font-family: inherit;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
}

.lrb-contact-owner:hover {
  background: #f4f6ff;
  border-color: rgba(39, 53, 131, 0.42);
}

.lrb-info-tip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border-radius: 999px;
  border: 1px solid rgba(39, 53, 131, 0.28);
  background: #f7f9ff;
  color: var(--lrb-blue);
  font-size: 11px;
  font-weight: 800;
  cursor: help;
  position: relative;
  line-height: 1;
}
.lrb-info-tip::after {
  content: attr(aria-label);
  position: absolute;
  right: 0;
  bottom: calc(100% + 8px);
  width: 260px;
  max-width: 70vw;
  padding: 9px 10px;
  border-radius: 12px;
  background: #14264d;
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.35;
  box-shadow: 0 12px 28px rgba(0,0,0,.18);
  opacity: 0;
  visibility: hidden;
  transform: translateY(4px);
  transition: opacity .15s ease, transform .15s ease, visibility .15s ease;
  z-index: 50;
  pointer-events: none;
}
.lrb-info-tip:hover::after,
.lrb-info-tip:focus::after {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

@media (max-width: 760px) {
  .lrb-upcoming-actions {
    grid-column: 2;
    justify-content: flex-start;
  }
}


/* v2.2.0 - gestione categorie/legenda risorse */
.lrb-resource-legend,
.lrb-legend.compact {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 10px;
}
.lrb-resource-legend li {
  display: flex;
  gap: 10px;
  align-items: center;
  min-width: 0;
}
.lrb-resource-legend .resource-dot {
  width: 16px;
  height: 16px;
  border-radius: 6px;
  flex: 0 0 16px;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.08);
}
.lrb-resource-legend strong {
  display: block;
  font-size: 14px;
  line-height: 1.1;
  color: var(--lrb-blue);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lrb-resource-legend small {
  display: block;
  color: #6b7280;
  font-size: 12px;
  margin-top: 2px;
}
.lrb-legend.compact li {
  font-size: 14px;
  line-height: 1.1;
}
.lrb-muted {
  color: #6b7280;
  margin: 0;
}
.lrb-booking-form optgroup {
  color: var(--lrb-blue);
  font-weight: 700;
}
.lrb-booking-form option {
  color: #111827;
  font-weight: 400;
}
.fc .fc-event {
  border-radius: 8px !important;
  font-weight: 700;
}

/* v2.3.0 - responsive smartphone/tablet + favicon release */
.lrb-portal {
  --lrb-safe-pad: clamp(14px, 2vw, 32px);
}

.lrb-app-shell {
  width: 100%;
  /* v1.10.39 — `clip` e non `hidden`: il guscio dell'app contiene TUTTA la
     pagina, e con `hidden` diventava un contenitore che si prende lo
     scorrimento pur non avendo nulla da scorrere — misurato, su ogni telefono.
     Finche' la pagina scorre dal documento non si nota; nella app installata su
     Android, dove anche <html> e <body> erano nella stessa condizione, la
     catena si perdeva e il dito non muoveva piu' niente.
     `clip` taglia in orizzontale esattamente come prima senza creare un
     contenitore che scorre. */
  overflow-x: clip;
}
@supports not (overflow-x: clip) {
  .lrb-app-shell { overflow-x: hidden; }
}

.lrb-portal .lrb-topbar {
  gap: 18px;
}

.lrb-portal .lrb-nav {
  flex-wrap: wrap;
  justify-content: center;
}

@media (max-width: 1180px) {
  .lrb-portal .lrb-grid-main {
    grid-template-columns: minmax(0, 1fr) minmax(260px, 320px);
    align-items: start;
  }
  .lrb-portal .lrb-form-card {
    grid-column: 1 / -1;
  }
  .lrb-portal .lrb-calendar-column,
  .lrb-portal .lrb-sidebar {
    grid-row: auto;
  }
}

@media (max-width: 920px) {
  .lrb-portal {
    padding-left: var(--lrb-safe-pad) !important;
    padding-right: var(--lrb-safe-pad) !important;
  }
  .lrb-portal .lrb-topbar {
    display: grid;
    grid-template-columns: 1fr;
    text-align: center;
    padding: 18px;
  }
  .lrb-portal .lrb-logo {
    justify-content: center;
    margin: 0 auto;
  }
  .lrb-portal .lrb-logo img {
    max-width: 190px;
    height: auto;
  }
  .lrb-portal .lrb-user-menu {
    justify-content: center;
    width: 100%;
  }
  .lrb-portal .lrb-hero {
    text-align: center;
    margin: 22px auto 18px;
  }
  .lrb-portal .lrb-hero h1 {
    font-size: clamp(34px, 7vw, 56px);
    line-height: 1;
  }
  .lrb-portal .lrb-grid-main {
    grid-template-columns: 1fr !important;
  }
  .lrb-portal .lrb-sidebar {
    grid-template-columns: 1fr 1fr;
    display: grid;
    gap: 16px;
  }
  .lrb-portal .lrb-side-card {
    min-width: 0;
  }
}

@media (max-width: 760px) {
  .lrb-portal {
    padding-top: 12px !important;
  }
  .lrb-portal .lrb-topbar {
    border-radius: 18px;
  }
  .lrb-portal .lrb-nav {
    gap: 8px;
  }
  .lrb-portal .lrb-nav a {
    font-size: 15px;
    padding: 9px 12px;
  }
  .lrb-portal .lrb-user,
  .lrb-portal .lrb-logout {
    font-size: 15px;
  }
  .lrb-portal .lrb-card,
  .lrb-portal .lrb-side-card,
  .lrb-portal .lrb-form-card,
  .lrb-portal .lrb-calendar-card,
  .lrb-portal .lrb-table-card {
    border-radius: 18px;
  }
  .lrb-portal .lrb-booking-form .lrb-two,
  .lrb-portal .lrb-two,
  .lrb-portal .lrb-form-row {
    grid-template-columns: 1fr !important;
  }
  .lrb-portal input,
  .lrb-portal select,
  .lrb-portal textarea,
  .lrb-portal button,
  .lrb-portal .lrb-button {
    font-size: 16px !important;
  }
  .lrb-portal .lrb-actions {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .lrb-portal .lrb-sidebar {
    grid-template-columns: 1fr;
  }
  .lrb-portal .lrb-help-card {
    padding: 16px;
  }
  .lrb-portal .lrb-help-card p {
    font-size: 15px;
    line-height: 1.35;
  }
  .lrb-portal .lrb-help-card .lrb-button,
  .lrb-portal .lrb-help-card a {
    width: 100%;
    justify-content: center;
  }
  #lrb-calendar {
    min-height: auto !important;
  }
  #lrb-calendar .fc-toolbar.fc-header-toolbar {
    display: grid !important;
    grid-template-columns: 1fr;
    gap: 10px;
    justify-items: stretch;
  }
  #lrb-calendar .fc-toolbar-chunk {
    display: flex !important;
    justify-content: center !important;
    flex-wrap: wrap;
    gap: 8px;
  }
  #lrb-calendar .fc-toolbar-title {
    text-align: center;
    font-size: 26px !important;
  }
  #lrb-calendar .fc-button,
  #lrb-calendar .fc-button-primary {
    min-height: 36px !important;
    padding: 7px 10px !important;
    font-size: 13px !important;
  }
  #lrb-calendar .fc-daygrid-day-frame {
    min-height: 62px !important;
  }
  #lrb-calendar .fc-col-header-cell-cushion,
  #lrb-calendar .fc-daygrid-day-number {
    font-size: 12px !important;
  }
  #lrb-calendar .fc-event-title,
  #lrb-calendar .fc-event-time {
    font-size: 10px !important;
  }
  .lrb-portal .lrb-table-wrap,
  .lrb-portal .lrb-table-card {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .lrb-portal table.lrb-table {
    min-width: 760px;
  }
}

@media (max-width: 480px) {
  .lrb-portal .lrb-logo img,
  .lrb-login-logo {
    max-width: 220px;
  }
  .lrb-portal .lrb-hero h1 {
    font-size: 38px;
  }
  .lrb-portal .lrb-hero p {
    font-size: 16px;
  }
  .lrb-portal .lrb-card-title {
    font-size: 24px;
  }
  #lrb-calendar .fc-daygrid-day-frame {
    min-height: 54px !important;
  }
  #lrb-calendar .fc-event {
    padding: 1px 3px !important;
  }
}

/* v2.3.1 - mobile UX dedicata + favicon robusta */
.lrb-mobile-tabs {
  display: none;
}
/* Banner eventi parrocchiali in cima all'area utente (mobile + desktop) */
.lrb-events-banner{display:flex;align-items:center;gap:12px;background:linear-gradient(135deg,#0c3774,#1267d8);color:#fff;border-radius:14px;padding:14px 16px;margin:0 0 16px;text-decoration:none;box-shadow:0 6px 18px rgba(12,55,116,.22)}
.lrb-events-banner:hover{filter:brightness(1.06)}
.lrb-events-banner-icon{font-size:26px;width:26px;height:26px;flex:0 0 auto}
.lrb-events-banner-text{flex:1 1 auto;display:flex;flex-direction:column;line-height:1.3;min-width:0}
.lrb-events-banner-text strong{font-size:15px}
.lrb-events-banner-text small{font-size:12.5px;opacity:.92;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lrb-events-banner-cta{flex:0 0 auto;font-weight:700;background:rgba(255,255,255,.18);border-radius:999px;padding:6px 12px;font-size:13px;white-space:nowrap}
@media(max-width:560px){.lrb-events-banner-cta{display:none}}

@media (max-width: 760px) {
  html {
    scroll-behavior: smooth;
  }
  body.lrb-app-body {
    background: #f5f7fb !important;
  }
  .lrb-app-shell {
    /* v1.10.39 — vedi il blocco «.lrb-app-shell» piu' in alto: `clip` taglia
       come `hidden` senza trasformare il guscio in un contenitore che scorre.
       Qui sotto i 760px, cioe' proprio sui telefoni. */
    overflow-x: clip !important;
  }
  .lrb-portal {
    padding: 10px !important;
    border-radius: 0 !important;
    background: #f5f7fb !important;
  }
  .lrb-topbar {
    position: sticky;
    top: 0;
    z-index: 30;
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 10px !important;
    padding: 12px !important;
    border-radius: 16px !important;
    margin-bottom: 14px !important;
  }
  .lrb-brand,
  .lrb-logo {
    display: flex !important;
    justify-content: center !important;
  }
  .lrb-brand img,
  .lrb-logo img {
    width: 170px !important;
    max-width: 70vw !important;
  }
  .lrb-nav {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    width: 100% !important;
    gap: 6px !important;
  }
  .lrb-nav a {
    text-align: center !important;
    font-size: 12px !important;
    line-height: 1.1 !important;
    padding: 9px 6px !important;
    border-radius: 12px !important;
  }
  .lrb-user-menu {
    justify-content: center !important;
    gap: 8px !important;
  }
  .lrb-user,
  .lrb-logout {
    font-size: 13px !important;
    padding: 8px 10px !important;
  }
  .lrb-hero {
    text-align: left !important;
    margin: 14px 0 10px !important;
  }
  .lrb-hero h1 {
    font-size: 34px !important;
    line-height: 0.98 !important;
    margin-bottom: 8px !important;
  }
  .lrb-hero p {
    font-size: 15px !important;
    line-height: 1.35 !important;
  }
  .lrb-mobile-tabs {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 7px;
    margin: 12px 0 14px;
  }
  .lrb-mobile-tabs a {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    padding: 8px 7px;
    text-align: center;
    border-radius: 14px;
    background: #fff;
    border: 1px solid #dfe5f2;
    color: var(--lrb-blue);
    text-decoration: none;
    font-weight: 800;
    font-size: 13px;
    line-height: 1.05;
    box-shadow: 0 8px 22px rgba(20,31,68,0.06);
  }
  .lrb-grid-main {
    display: flex !important;
    flex-direction: column !important;
    gap: 12px !important;
  }
  .lrb-form-card {
    order: 1;
  }
  .lrb-calendar-card {
    order: 2;
  }
  .lrb-sidebar {
    order: 3;
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 12px !important;
  }
  .lrb-card,
  .lrb-side-card,
  .lrb-form-card,
  .lrb-calendar-card,
  .lrb-table-card {
    width: 100% !important;
    margin: 0 0 12px !important;
    padding: 14px !important;
    border-radius: 17px !important;
  }
  .lrb-card-title {
    gap: 9px !important;
    margin-bottom: 12px !important;
  }
  .lrb-card-title h3 {
    font-size: 24px !important;
    line-height: 1 !important;
  }
  .lrb-form-section {
    margin-top: 14px !important;
    padding-top: 12px !important;
  }
  .lrb-form-section span {
    font-size: 17px !important;
  }
  .lrb-booking-form label {
    font-size: 15px !important;
  }
  .lrb-booking-form input,
  .lrb-booking-form select,
  .lrb-booking-form textarea {
    width: 100% !important;
    max-width: none !important;
    min-height: 46px !important;
    font-size: 16px !important;
    border-radius: 13px !important;
  }
  .lrb-booking-form textarea {
    min-height: 92px !important;
  }
  .lrb-booking-form .lrb-two,
  .lrb-form-row,
  .lrb-two {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
  }
  .lrb-actions {
    grid-template-columns: 1fr !important;
  }
  .lrb-actions button,
  .lrb-actions .lrb-button {
    width: 100% !important;
    min-height: 46px !important;
  }
  .lrb-consent,
  .lrb-checkbox-row {
    align-items: flex-start !important;
    gap: 10px !important;
    line-height: 1.3 !important;
  }

  /* Mobile: il calendario diventa agenda, senza griglia mensile stretta. */
  #lrb-calendar {
    overflow: visible !important;
  }
  #lrb-calendar .fc {
    min-width: 0 !important;
    width: 100% !important;
  }
  #lrb-calendar .fc-toolbar.fc-header-toolbar {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 8px !important;
    margin-bottom: 10px !important;
  }
  #lrb-calendar .fc-toolbar-chunk {
    justify-content: center !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
  }
  #lrb-calendar .fc-toolbar-title {
    font-size: 22px !important;
    line-height: 1 !important;
    text-align: center !important;
  }
  #lrb-calendar .fc-button,
  #lrb-calendar .fc-button-primary {
    min-height: 34px !important;
    padding: 6px 10px !important;
    font-size: 13px !important;
    border-radius: 10px !important;
  }
  #lrb-calendar .fc-list {
    border-radius: 14px !important;
    overflow: hidden !important;
    border-color: #e3e8f2 !important;
  }
  #lrb-calendar .fc-list-day-cushion {
    background: #f3f5fb !important;
    color: var(--lrb-blue) !important;
    font-weight: 800 !important;
  }
  #lrb-calendar .fc-list-event-title,
  #lrb-calendar .fc-list-event-time {
    font-size: 14px !important;
    line-height: 1.25 !important;
  }
  #lrb-calendar .fc-dayGridMonth-view,
  #lrb-calendar .fc-timeGridWeek-view,
  #lrb-calendar .fc-timeGridDay-view {
    display: none !important;
  }
  .lrb-upcoming-panel {
    margin-top: 12px !important;
    padding: 13px !important;
    border-radius: 16px !important;
  }
  .lrb-upcoming-head h3 {
    font-size: 20px !important;
  }
  .lrb-upcoming-item {
    grid-template-columns: 58px 1fr !important;
    gap: 8px !important;
    padding: 10px !important;
  }
  .lrb-upcoming-actions,
  .lrb-upcoming-status {
    grid-column: 2 !important;
    justify-self: start !important;
  }
  .lrb-resource-legend,
  .lrb-legend.compact {
    gap: 8px !important;
  }
  .lrb-side-card h3,
  .lrb-help-card h3 {
    font-size: 20px !important;
  }
  .lrb-help-card {
    border-left-width: 4px !important;
  }
  .lrb-help-card p {
    font-size: 14px !important;
    margin-bottom: 10px !important;
  }
  .lrb-help-button {
    width: 100% !important;
    min-height: 40px !important;
  }
  .lrb-table-card {
    overflow: hidden !important;
  }
  .lrb-table-wrap {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
  }
  table.lrb-table {
    min-width: 720px !important;
  }
  .lrb-footer {
    font-size: 13px !important;
    text-align: center !important;
    padding: 14px 0 !important;
  }
}

@media (max-width: 430px) {
  .lrb-mobile-tabs {
    grid-template-columns: 1fr !important;
  }
  .lrb-nav {
    grid-template-columns: 1fr !important;
  }
  .lrb-hero h1 {
    font-size: 30px !important;
  }
}


/* v2.3.3 - miglioramenti mobile per privacy/condizioni e aree di consenso */
.lrb-checkbox span {
  display: block;
  min-width: 0;
}

@media (max-width: 760px) {
  .lrb-form-section span {
    max-width: 100%;
    white-space: normal !important;
  }
  .lrb-checkbox {
    display: grid !important;
    grid-template-columns: 24px 1fr !important;
    align-items: start !important;
    gap: 10px !important;
    padding: 12px !important;
    border: 1px solid #e2e7f2 !important;
    border-radius: 14px !important;
    background: #ffffff !important;
    margin: 10px 0 14px !important;
  }
  .lrb-checkbox input[type="checkbox"] {
    width: 20px !important;
    height: 20px !important;
    margin: 1px 0 0 !important;
    min-height: 20px !important;
  }
  .lrb-checkbox span {
    font-size: 14px !important;
    line-height: 1.35 !important;
    overflow-wrap: anywhere !important;
  }
  .lrb-checkbox a {
    display: inline !important;
    white-space: normal !important;
  }
  .lrb-document-card {
    padding: 18px !important;
    border-radius: 18px !important;
  }
  .lrb-document-card h1 {
    font-size: 30px !important;
    line-height: 1.05 !important;
  }
  .lrb-document-card h2 {
    font-size: 21px !important;
    line-height: 1.15 !important;
  }
  .lrb-document-card p,
  .lrb-document-card li {
    font-size: 16px !important;
    line-height: 1.45 !important;
  }
}

/* LINKNET custom modal dialogs */
/* v1.10.0-beta5 — L'attributo `hidden` vale display:none solo nel foglio del
   browser: qualunque nostra regola con un `display` lo scavalca, e qui ce n'e'
   uno (`display:flex`). Senza questa riga un velo marcato `hidden` resta a
   tutto schermo, invisibile perche' trasparente, e si prende clic e rotellina:
   la pagina sembra bloccata senza che si veda perche'. E' lo stesso difetto
   gia' corretto per la barra "indietro" (1.9.68) e per la finestra della
   console: la si chiude anche qui prima che si manifesti. */
.lrb-modal-backdrop[hidden] { display: none !important; }
.lrb-modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 999999;
  background: rgba(12, 18, 38, 0.46);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 18px;
  backdrop-filter: blur(4px);
}
.lrb-modal-card {
  width: min(520px, 100%);
  background: #ffffff;
  border: 1px solid #e4e8f2;
  border-radius: 24px;
  box-shadow: 0 28px 80px rgba(39, 53, 131, 0.24);
  padding: 28px;
  text-align: center;
  color: #1d1d1b;
  font-family: "Arial Narrow", Arial, sans-serif;
}
.lrb-modal-heart {
  width: 54px;
  height: 54px;
  border-radius: 18px;
  background: #fff9db;
  border: 1px solid #ffe58a;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 14px;
}
.lrb-modal-heart img {
  width: 34px;
  height: 34px;
  object-fit: contain;
}
.lrb-modal-card h3 {
  margin: 0 0 10px;
  color: #273583;
  font-size: 28px;
  line-height: 1.1;
}
.lrb-modal-message {
  margin: 0 0 18px;
  color: #445066;
  font-size: 17px;
  line-height: 1.45;
}
.lrb-modal-textarea {
  width: 100%;
  min-height: 130px;
  resize: vertical;
  border: 1px solid #dbe1ed;
  border-radius: 16px;
  padding: 14px 16px;
  font-size: 16px;
  box-sizing: border-box;
  outline: none;
}
.lrb-modal-textarea:focus {
  border-color: #273583;
  box-shadow: 0 0 0 4px rgba(39, 53, 131, .12);
}
.lrb-modal-error {
  min-height: 20px;
  color: #d93636;
  font-weight: 700;
  margin-top: 8px;
  text-align: left;
}
.lrb-modal-actions {
  display: flex;
  justify-content: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 18px;
}
.lrb-modal-btn {
  border: 0;
  border-radius: 14px;
  padding: 12px 18px;
  font-weight: 800;
  cursor: pointer;
  font-size: 16px;
  font-family: "Arial Narrow", Arial, sans-serif;
}
.lrb-modal-primary {
  background: #273583;
  color: #ffffff;
  box-shadow: 0 12px 26px rgba(39, 53, 131, .22);
}
.lrb-modal-secondary {
  background: #f1f4fa;
  color: #273583;
}
.lrb-modal-danger {
  background: #d93636;
  color: #ffffff;
}

/* Terms page icon layout */
.lrb-terms-card .lrb-terms-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin: 24px 0;
}
.lrb-terms-card .lrb-terms-grid section {
  border: 1px solid #e3e8f2;
  background: #fbfcff;
  border-radius: 18px;
  padding: 18px;
}
.lrb-terms-card .lrb-terms-grid h2,
.lrb-doc-callout h2 {
  margin-top: 0;
}
.lrb-doc-callout {
  background: #fff9db;
  border: 1px solid #ffe58a;
  border-radius: 18px;
  padding: 18px;
  margin: 18px 0;
}
.lrb-doc-callout-light {
  background: #f7f8fc;
  border-color: #e3e8f2;
}

@media (max-width: 760px) {
  .lrb-modal-card {
    padding: 22px;
    border-radius: 20px;
  }
  .lrb-modal-card h3 {
    font-size: 24px;
  }
  .lrb-modal-actions {
    flex-direction: column-reverse;
  }
  .lrb-modal-btn {
    width: 100%;
  }
  .lrb-terms-card .lrb-terms-grid {
    grid-template-columns: 1fr;
  }
}

/* v2.4.1 - Upcoming period start/end */
.lrb-upcoming-item {
  grid-template-columns: 148px 1fr auto;
}
.lrb-upcoming-period {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  min-width: 0;
}
.lrb-upcoming-period .lrb-upcoming-date {
  background: #f7f8fc;
  border: 1px solid #e8ecf5;
  border-radius: 12px;
  padding: 7px 8px;
}
.lrb-upcoming-date small {
  font-size: 10px;
  line-height: 1;
  color: #7b8494;
  text-transform: uppercase;
  letter-spacing: .04em;
  font-weight: 700;
}
@media (max-width: 760px) {
  .lrb-upcoming-item {
    grid-template-columns: 1fr;
  }
  .lrb-upcoming-period {
    grid-template-columns: 1fr 1fr;
    width: 100%;
  }
  .lrb-upcoming-main,
  .lrb-upcoming-actions,
  .lrb-upcoming-status {
    grid-column: auto;
  }
}

/* v2.4.2 - viste settimana/giorno più compatte */
#lrb-calendar .fc-timegrid-axis-cushion,
#lrb-calendar .fc-timegrid-slot-label-cushion {
  font-size: 13px !important;
  line-height: 1.1 !important;
}
#lrb-calendar .fc-timegrid-slot {
  height: 28px !important;
}
#lrb-calendar .fc-timegrid-divider {
  display: none !important;
}
#lrb-calendar .fc-timegrid-event {
  border-radius: 8px !important;
  padding: 3px 5px !important;
  font-size: 12px !important;
}
#lrb-calendar .fc-timegrid-event .fc-event-main {
  line-height: 1.15 !important;
}
@media (max-width: 760px) {
  #lrb-calendar .fc-timeGridWeek-view,
  #lrb-calendar .fc-timeGridDay-view {
    display: none !important;
  }
}

/* v2.5.0 - link calendario personale */
.lrb-calendar-link-card p {
  margin: 0 0 12px 0;
  color: #4b5563;
  font-size: 0.95rem;
  line-height: 1.35;
}
.lrb-calendar-feed-box {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
  align-items: center;
  margin: 10px 0;
}
.lrb-calendar-feed-box input {
  width: 100%;
  min-width: 0;
  border: 1px solid #d8deea;
  border-radius: 12px;
  padding: 10px 12px;
  font-family: "Arial Narrow", Arial, sans-serif;
  color: #273583;
  background: #fff;
}
.lrb-calendar-feed-box button {
  border: 1px solid #273583;
  background: #273583;
  color: #fff;
  border-radius: 12px;
  padding: 10px 12px;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
}
.lrb-calendar-link-card small {
  display: block;
  color: #6b7280;
  line-height: 1.3;
}
@media (max-width: 760px) {
  .lrb-calendar-feed-box { grid-template-columns: 1fr; }
  .lrb-calendar-feed-box button { width: 100%; }
}


/* v2.5.2 - leggibilità eventi calendario e box calendario personale */
#lrb-calendar .fc-event,
#lrb-calendar .fc-event-main,
#lrb-calendar .fc-event-title,
#lrb-calendar .fc-event-time {
  font-weight: 800 !important;
  line-height: 1.18 !important;
}

#lrb-calendar .fc-event {
  border: 1px solid rgba(17, 24, 39, 0.08) !important;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.28), 0 2px 6px rgba(20,31,68,0.08) !important;
}

#lrb-calendar .lrb-event-status-pending {
  background: #ffe89b !important;
  color: #2f2500 !important;
}
#lrb-calendar .lrb-event-status-pending .fc-event-main,
#lrb-calendar .lrb-event-status-pending .fc-event-title,
#lrb-calendar .lrb-event-status-pending .fc-event-time {
  color: #2f2500 !important;
}

#lrb-calendar .lrb-event-status-approved {
  background: #c8f0d0 !important;
  color: #063f16 !important;
}
#lrb-calendar .lrb-event-status-approved .fc-event-main,
#lrb-calendar .lrb-event-status-approved .fc-event-title,
#lrb-calendar .lrb-event-status-approved .fc-event-time {
  color: #063f16 !important;
}

#lrb-calendar .lrb-event-status-busy {
  background: #ddd3ff !important;
  color: #2f1c79 !important;
}
#lrb-calendar .lrb-event-status-busy .fc-event-main,
#lrb-calendar .lrb-event-status-busy .fc-event-title,
#lrb-calendar .lrb-event-status-busy .fc-event-time {
  color: #2f1c79 !important;
}

#lrb-calendar .lrb-event-status-rejected {
  background: #ffd2d2 !important;
  color: #6f1111 !important;
}
#lrb-calendar .lrb-event-status-cancelled {
  background: #e7ebf2 !important;
  color: #374151 !important;
}

.lrb-calendar-link-card {
  padding: 16px !important;
}
.lrb-calendar-link-card h3 {
  font-size: 18px !important;
  line-height: 1.1 !important;
  margin-bottom: 8px !important;
}
.lrb-calendar-link-card p {
  font-size: 13px !important;
  line-height: 1.35 !important;
  margin: 0 0 10px 0 !important;
  color: #4b5563 !important;
}
.lrb-calendar-link-card small {
  font-size: 12px !important;
  line-height: 1.35 !important;
  color: #6b7280 !important;
}
.lrb-calendar-feed-box {
  gap: 7px !important;
  margin: 8px 0 10px !important;
}
.lrb-calendar-feed-box input {
  min-height: 38px !important;
  padding: 8px 10px !important;
  font-size: 12px !important;
  border-radius: 11px !important;
}
.lrb-calendar-feed-box button {
  min-height: 38px !important;
  padding: 8px 11px !important;
  font-size: 13px !important;
  border-radius: 11px !important;
}

/* v2.5.3 - attrezzature/extra selezionabili */
.lrb-equipment-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}
.lrb-equipment-option {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 10px 12px;
  align-items: start;
  padding: 12px;
  border: 1px solid var(--lrb-border, #dfe5ef);
  border-radius: 14px;
  background: #fff;
  cursor: pointer;
  transition: border-color .16s ease, box-shadow .16s ease, background .16s ease;
}
.lrb-equipment-option:hover {
  border-color: rgba(39, 53, 131, .35);
  box-shadow: 0 8px 20px rgba(39, 53, 131, .08);
}
.lrb-equipment-option input {
  margin-top: 3px;
}
.lrb-equipment-main {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.lrb-equipment-main strong {
  color: var(--lrb-blue, #273583);
  font-size: .98rem;
}
.lrb-equipment-main small,
.lrb-equipment-main em {
  color: #667085;
  font-style: normal;
  line-height: 1.35;
}
.lrb-equipment-badge {
  grid-column: 2;
  justify-self: start;
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  padding: 4px 8px;
  border-radius: 999px;
  background: #fff3cd;
  color: #7a4d00;
  border: 1px solid #ffe08a;
  font-size: .82rem;
  font-weight: 700;
}
.lrb-equipment-badge.muted {
  background: #eef2ff;
  color: var(--lrb-blue, #273583);
  border-color: #d7ddff;
}
.lrb-field-help {
  margin: 8px 0 0;
  font-size: .9rem;
  color: #667085;
}
@media (max-width: 760px) {
  .lrb-equipment-option {
    border-radius: 12px;
    padding: 11px;
  }
  .lrb-equipment-badge {
    grid-column: 1 / -1;
    margin-left: 26px;
  }
}

/* Booking Parrocchia Borgo Maggiore customizations */
:root {
  --lrb-blue: #6f5a2a;
  --lrb-yellow: #d9b44a;
  --lrb-dark: #1f2933;
  --lrb-soft: #fbf8ef;
}
.lrb-booking-form select[multiple] {
  min-height: 150px;
  padding: 10px 12px;
  line-height: 1.45;
}
.lrb-booking-form select[multiple] option {
  padding: 7px 8px;
}
.lrb-booking-form select[multiple] optgroup {
  font-weight: 800;
  color: var(--lrb-blue);
}


/* v1.7.82 - compatta il selettore attrezzature aggiuntive nel frontend */
.lrb-booking-form #lrb_multi_equipment_box {
  padding-bottom: 10px;
}
.lrb-booking-form #lrb_equipment_item {
  min-height: 0 !important;
  height: auto !important;
  max-height: 138px;
  padding: 6px 10px;
}
.lrb-booking-form #lrb_equipment_item option {
  padding: 4px 8px;
}
.lrb-booking-form #lrb_equipment_item optgroup {
  line-height: 1.25;
}

/* v1.1.0 - proposta grafica chiara, selezioni compatte e ricorrenze */
:root {
  --lrb-primary: #17365d;
  --lrb-primary-soft: #eef4fb;
  --lrb-accent: #f2c94c;
  --lrb-accent-soft: #fff8df;
  --lrb-bg: #f6f8fb;
  --lrb-card: #ffffff;
  --lrb-border: #dfe7f1;
  --lrb-text: #1f2937;
  --lrb-muted: #667085;
}
body.lrb-app-body,
.lrb-app-body {
  background: linear-gradient(180deg, #f8fafc 0%, #eef4fb 100%) !important;
  color: var(--lrb-text);
}
.lrb-hero,
.lrb-app-header,
.lrb-header {
  background: linear-gradient(135deg, #ffffff 0%, #eef4fb 100%) !important;
  border-color: var(--lrb-border) !important;
}
.lrb-card {
  background: var(--lrb-card) !important;
  border-color: var(--lrb-border) !important;
  box-shadow: 0 16px 42px rgba(23, 54, 93, .08) !important;
}
.lrb-button-primary,
.lrb-modal-primary,
.lrb-copy-calendar-link,
button.lrb-contact-owner {
  background: var(--lrb-primary) !important;
  border-color: var(--lrb-primary) !important;
  color: #fff !important;
}
.lrb-button-secondary,
.lrb-mini-button {
  border-color: var(--lrb-border) !important;
  color: var(--lrb-primary) !important;
}
.lrb-card-title span,
.lrb-form-section span {
  color: var(--lrb-primary) !important;
}
.lrb-form-section span:before,
.lrb-legend-dot,
.lrb-modal-heart {
  background: var(--lrb-accent) !important;
}
.lrb-hidden { display: none !important; }
.lrb-compact-toggle {
  margin: -2px 0 12px 0 !important;
  padding: 10px 12px !important;
  background: var(--lrb-primary-soft) !important;
  border: 1px solid var(--lrb-border) !important;
  border-radius: 14px !important;
}
.lrb-advanced-select,
.lrb-recurrence-box {
  background: #fbfdff;
  border: 1px dashed #b9c8db;
  border-radius: 16px;
  padding: 14px;
  margin-bottom: 14px;
}
.lrb-weekdays {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.lrb-weekdays label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 10px;
  background: #fff;
  border: 1px solid var(--lrb-border);
  border-radius: 12px;
  font-weight: 700;
  color: var(--lrb-primary);
}
.lrb-field select[size] {
  min-height: auto;
}
.lrb-field-help {
  color: var(--lrb-muted) !important;
}
.fc .fc-event {
  border-radius: 8px !important;
  font-weight: 700 !important;
}
@media (max-width: 760px) {
  .lrb-advanced-select,
  .lrb-recurrence-box { padding: 12px; }
  .lrb-weekdays label { flex: 1 1 calc(33.33% - 8px); justify-content: center; }
}

/* v1.2.0: palette più chiara e modulo eventi comunitari */
:root {
  --lrb-blue: #172b5f;
  --lrb-yellow: #f2c94c;
  --lrb-bg: #f6f8fc;
  --lrb-border: #dde4f0;
  --lrb-text: #162033;
  --lrb-muted: #647086;
}
.lrb-portal {
  background: linear-gradient(180deg, #ffffff 0%, #f6f8fc 100%) !important;
}
.lrb-card,
.lrb-topbar {
  box-shadow: 0 12px 30px rgba(23,43,95,.08) !important;
}
.lrb-card-title .dashicons,
.lrb-form-section span {
  color: var(--lrb-blue);
}
.lrb-button-primary,
.lrb-modal-primary {
  background: var(--lrb-blue) !important;
  border-color: var(--lrb-blue) !important;
}
.lrb-button-primary:hover,
.lrb-modal-primary:hover {
  filter: brightness(.95);
}
.lrb-compact-toggle {
  background: #f8fafc;
  border: 1px solid var(--lrb-border);
  border-radius: 14px;
  padding: 10px 12px;
}
.lrb-field-help strong { color: var(--lrb-blue); }
.lrb-community-event-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 18px;
}
.lrb-community-event-card .lrb-doc-callout {
  margin: 12px 0;
  padding: 14px;
}
.lrb-community-event-card .lrb-mini-callout h4 {
  margin: 0 0 6px;
  color: var(--lrb-blue);
}
.lrb-community-event-card .lrb-event-meta {
  color: var(--lrb-text);
  margin: 8px 0;
}
.lrb-community-event-form {
  margin-top: 16px;
  border-top: 1px solid var(--lrb-border);
  padding-top: 16px;
}
@media (max-width: 720px) {
  .lrb-community-event-grid { grid-template-columns: 1fr; }
}

/* === v1.8.18 Restyling modulo adesione eventi in stile Console operatore ===
   Applicato alla card eventi completa (non alla variante compatta del login,
   che mantiene i suoi override più specifici). */
.lrb-community-event-card:not(.lrb-community-event-card-compact){
  background:#fff;border:1px solid #e3e8f2;border-radius:16px;
  box-shadow:0 8px 24px rgba(15,23,42,.08);
}
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-card-title{
  display:flex;align-items:center;gap:11px;margin:0 0 10px;
  padding-bottom:12px;border-bottom:2px solid #eef2f7;
}
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-card-title h3{
  margin:0;font-size:19px;font-weight:800;color:#273583;
}
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-card-title .dashicons{
  color:#fff;background:linear-gradient(135deg,#273583,#1267d8);border-radius:10px;
  width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;
  font-size:19px;flex:0 0 auto;
}
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-mini-callout{
  background:#f6f8fc;border:1px solid #e3e8f2;border-radius:12px;
}
/* Modulo di adesione */
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-community-event-form{
  margin-top:16px;border-top:1px solid #eef2f7;padding-top:18px;
}
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-community-event-form .lrb-field label{
  font-size:12.5px;font-weight:700;color:#475569;
}
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-community-event-form input,
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-community-event-form textarea{
  width:100%;box-sizing:border-box;border:1px solid #d9deea;border-radius:10px;background:#fff;
  padding:10px 12px;font-size:14px;color:#1f2a44;min-height:42px;
  transition:border-color .15s ease,box-shadow .15s ease;
}
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-community-event-form textarea{min-height:64px}
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-community-event-form input:focus,
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-community-event-form textarea:focus{
  border-color:#1267d8;box-shadow:0 0 0 3px rgba(18,103,216,.15);outline:none;
}
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-event-submit-row{
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:8px;
}
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-event-privacy{font-size:13.5px;color:#475569}
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-event-submit-row .lrb-button-primary{
  background:linear-gradient(135deg,#273583,#1267d8);border:0;border-radius:10px;
  padding:11px 22px;font-weight:800;font-size:14px;box-shadow:0 4px 12px rgba(39,53,131,.25);
}
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-event-submit-row .lrb-button-primary:hover{filter:brightness(1.06)}
.lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-event-cancel-policy{border-radius:10px}
@media(max-width:560px){
  .lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-event-submit-row{flex-direction:column;align-items:stretch}
  .lrb-community-event-card:not(.lrb-community-event-card-compact) .lrb-event-submit-row .lrb-button-primary{width:100%}
}

/* === v1.8.80: eventi con pasto — fasce d'età (adulti / ragazzi 6-14 / bambini 0-6) ===
   Il gruppo è racchiuso in un riquadro leggero perché i tre campi vanno letti come
   una cosa sola ("quante persone"), non come tre domande separate: il totale sotto
   chiude il ragionamento e rassicura su cosa verrà effettivamente prenotato. */
.lrb-event-meal-brackets{
  margin:0 0 12px;padding:12px 14px;border:1px solid #dbe4f0;border-radius:12px;background:#f8fafc;
}
.lrb-event-meal-title{display:block;font-weight:800;font-size:13px;color:#273583;margin-bottom:9px}
.lrb-event-meal-row{display:flex;flex-wrap:wrap;gap:10px}
.lrb-event-meal-field{flex:1 1 130px;min-width:110px}
.lrb-event-meal-field label{display:block;font-size:12.5px;font-weight:700;color:#334155;margin-bottom:4px}
.lrb-event-meal-field label small{display:block;font-weight:500;font-size:11px;color:#64748b;margin-top:1px}
.lrb-event-meal-field input[type=number]{width:100%;text-align:center;font-weight:700}
.lrb-event-meal-total{
  margin:10px 0 0;padding-top:9px;border-top:1px dashed #cbd5e1;
  font-size:13px;color:#334155;font-weight:600;
}
.lrb-event-meal-total strong{color:#273583;font-size:15px}
@media(max-width:420px){
  .lrb-event-meal-field{flex:1 1 100%}
}

/* === v1.8.82: eventi di tipo viaggio/pellegrinaggio — documento, camera, trasporto ===
   Tre blocchi distinti invece di un elenco unico di campi: sono tre argomenti diversi
   e raggrupparli riduce la sensazione di modulo lungo. */
.lrb-event-trip-block{
  margin:0 0 12px;padding:12px 14px;border:1px solid #dbe4f0;border-radius:12px;background:#f8fafc;
}
.lrb-event-trip-title{display:block;font-weight:800;font-size:13px;color:#273583;margin-bottom:9px}
.lrb-event-trip-block .lrb-form-row{display:flex;flex-wrap:wrap;gap:10px}
.lrb-event-trip-block .lrb-field{flex:1 1 165px;min-width:140px}
.lrb-event-trip-block .lrb-field label{display:block;font-size:12.5px;font-weight:700;color:#334155;margin-bottom:4px}
.lrb-event-trip-block input,.lrb-event-trip-block select{width:100%}
@media(max-width:420px){
  .lrb-event-trip-block .lrb-field{flex:1 1 100%}
}

/* === v1.8.31: Eventi Parrocchiali in accordion quando ce n'è più di uno ===
   Riusa lo stesso linguaggio visivo di .lrb-public-occupancy/.lrb-public-availability
   (<details>/<summary>), ma applicato alle card evento già esistenti. */
.lrb-community-event-grid-accordion{
  display:flex;flex-direction:column;gap:12px;
}
.lrb-community-event-accordion-item{
  padding:0;overflow:hidden;
}
.lrb-community-event-accordion-item > .lrb-community-event-summary{
  list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;
  gap:14px;flex-wrap:wrap;padding:16px 18px;margin:0;
}
.lrb-community-event-accordion-item > .lrb-community-event-summary::-webkit-details-marker{display:none}
.lrb-community-event-accordion-item > .lrb-community-event-summary::marker{content:''}
.lrb-community-event-accordion-item > .lrb-community-event-summary::after{
  content:'▾';margin-left:auto;color:#1267d8;font-size:15px;transition:transform .15s ease;flex:0 0 auto;
}
.lrb-community-event-accordion-item[open] > .lrb-community-event-summary::after{transform:rotate(180deg)}
.lrb-community-event-accordion-item > .lrb-community-event-summary .lrb-card-title{
  display:flex;align-items:center;gap:11px;margin:0;padding:0;border:0;
}
.lrb-community-event-summary-meta{
  font-size:13px;color:#5b6787;font-weight:600;white-space:nowrap;
}
.lrb-community-event-accordion-body{
  padding:0 18px 18px;border-top:2px solid #eef2f7;margin-top:2px;
}
.lrb-community-event-accordion-item:not([open]) > .lrb-community-event-summary{padding-bottom:16px}
@media(max-width:560px){
  .lrb-community-event-accordion-item > .lrb-community-event-summary{padding:14px}
  .lrb-community-event-summary-meta{white-space:normal;font-size:12.5px}
}

/* Area pubblica pranzi/cene nella schermata di accesso */
.lrb-login-public-events {
  width: min(1040px, calc(100vw - 32px));
  margin: 22px auto 0;
  background: #ffffff;
  border: 1px solid var(--lrb-border);
  border-radius: 22px;
  padding: 22px;
  box-shadow: 0 16px 40px rgba(23,43,95,.10);
}
.lrb-login-events-head {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 0 0 16px;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--lrb-border);
}
.lrb-login-events-icon {
  display: inline-flex;
  width: 46px;
  height: 46px;
  border-radius: 16px;
  align-items: center;
  justify-content: center;
  background: rgba(242,201,76,.22);
  font-size: 25px;
}
.lrb-login-events-head h3 {
  margin: 0;
  color: var(--lrb-blue);
  font-size: 24px;
  line-height: 1.1;
}
.lrb-login-events-head p {
  margin: 4px 0 0;
  color: var(--lrb-muted);
  font-size: 15px;
}
.lrb-community-event-grid-compact {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 14px;
}
.lrb-community-event-card-compact {
  box-shadow: none !important;
  border: 1px solid var(--lrb-border);
  background: #fbfdff;
}
.lrb-community-event-card-compact .lrb-card-title h3 {
  font-size: 20px;
}
.lrb-community-event-card-compact .lrb-event-description,
.lrb-community-event-card-compact .lrb-doc-callout {
  font-size: 14px;
}
.lrb-community-event-card-compact .lrb-community-event-form {
  margin-top: 12px;
  padding-top: 12px;
}
@media (max-width: 720px) {
  .lrb-login-public-events {
    width: calc(100vw - 20px);
    padding: 16px;
    border-radius: 18px;
  }
  .lrb-login-events-head {
    align-items: flex-start;
  }
  .lrb-login-events-head h3 {
    font-size: 20px;
  }
}


/* ===== v1.2.2: home login + pranzi/cene balanced layout ===== */
body .lrb-portal.lrb-login-box.lrb-login-with-events {
  width: min(1120px, calc(100vw - 40px));
  max-width: 1120px;
  display: grid;
  grid-template-columns: minmax(360px, 520px) minmax(360px, 520px);
  gap: 24px;
  align-items: start;
  justify-content: center;
  margin: 34px auto;
  transform: none;
}
.lrb-login-with-events .lrb-login-card,
.lrb-login-with-events .lrb-login-public-events {
  width: 100%;
  max-width: 520px;
  min-height: 0;
}
.lrb-login-with-events .lrb-login-public-events {
  margin: 0;
  padding: 28px;
  border-radius: 20px;
  box-shadow: 0 14px 35px rgba(20, 31, 68, 0.08);
}
.lrb-login-with-events .lrb-login-events-head h3 {
  font-size: 22px;
}
.lrb-login-with-events .lrb-community-event-grid-compact {
  display: block;
}
.lrb-login-with-events .lrb-community-event-card-compact {
  margin: 0;
  padding: 18px;
  background: #fff;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-form-row {
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.lrb-login-with-events .lrb-community-event-card-compact input,
.lrb-login-with-events .lrb-community-event-card-compact textarea {
  width: 100%;
  min-height: 42px;
  border-radius: 12px;
}
@media (max-width: 900px) {
  body .lrb-portal.lrb-login-box.lrb-login-with-events {
    width: min(560px, calc(100vw - 24px));
    max-width: 560px;
    grid-template-columns: 1fr;
    gap: 18px;
  }
  .lrb-login-with-events .lrb-community-event-card-compact .lrb-form-row {
    grid-template-columns: 1fr;
  }
}


/* ===== v1.2.3: home eventi pubblici piu ordinata con piu eventi ===== */
body .lrb-portal.lrb-login-box.lrb-login-with-events {
  width: min(1240px, calc(100vw - 40px));
  max-width: 1240px;
  grid-template-columns: minmax(380px, 520px) minmax(480px, 660px);
  align-items: stretch;
}
.lrb-login-with-events .lrb-login-card {
  max-width: 520px;
  min-height: 760px;
}
.lrb-login-with-events .lrb-login-public-events {
  max-width: 660px;
  min-height: 760px;
  max-height: 760px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.lrb-login-with-events .lrb-login-events-head {
  flex: 0 0 auto;
  margin-bottom: 14px;
  padding-bottom: 14px;
}
.lrb-login-with-events .lrb-community-event-grid-compact {
  display: flex;
  flex-direction: column;
  gap: 14px;
  overflow-y: auto;
  padding-right: 6px;
  scrollbar-width: thin;
}
.lrb-login-with-events .lrb-community-event-card-compact {
  flex: 0 0 auto;
  padding: 18px 18px 16px;
  border-radius: 18px;
}
.lrb-login-with-events .lrb-community-event-card-compact + .lrb-community-event-card-compact {
  margin-top: 0;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-card-title {
  margin-bottom: 10px;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-event-meta {
  font-size: 15px;
  margin: 7px 0;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-doc-callout {
  display: block;
  margin: 10px 0;
  padding: 12px 14px;
  border-radius: 14px;
  font-size: 14px;
  line-height: 1.35;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-mini-callout h4 {
  font-size: 15px;
  margin-bottom: 4px;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-doc-callout p {
  margin: 4px 0 0;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-community-event-form {
  margin-top: 12px;
  padding-top: 12px;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-field label {
  font-size: 13px;
  margin-bottom: 5px;
}
.lrb-login-with-events .lrb-community-event-card-compact input,
.lrb-login-with-events .lrb-community-event-card-compact textarea {
  min-height: 38px;
  font-size: 14px;
}
.lrb-login-with-events .lrb-community-event-card-compact textarea {
  min-height: 58px;
}
.lrb-login-with-events .lrb-event-privacy {
  margin-top: 8px;
  padding: 8px 10px;
  border-radius: 12px;
  background: #f8fafc;
  border: 1px solid var(--lrb-border);
  gap: 8px;
}
.lrb-login-with-events .lrb-event-privacy input[type="checkbox"] {
  width: 18px;
  height: 18px;
  min-width: 18px;
  margin-top: 1px;
}
.lrb-login-with-events .lrb-event-privacy span {
  font-size: 13px;
  line-height: 1.25;
}
.lrb-login-with-events .lrb-event-privacy a {
  font-weight: 800;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-actions {
  margin-top: 10px;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-button {
  padding: 10px 14px;
  min-height: 40px;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-info-default {
  font-size: 13px;
  padding: 9px 10px;
  margin-top: 10px;
}
@media (max-width: 980px) {
  body .lrb-portal.lrb-login-box.lrb-login-with-events {
    width: min(640px, calc(100vw - 24px));
    max-width: 640px;
    grid-template-columns: 1fr;
  }
  .lrb-login-with-events .lrb-login-card,
  .lrb-login-with-events .lrb-login-public-events {
    max-width: 640px;
    min-height: 0;
    max-height: none;
  }
  .lrb-login-with-events .lrb-community-event-grid-compact {
    overflow-y: visible;
    padding-right: 0;
  }
}

/* ===== v1.2.4: eventi pubblici senza scroll, card separate e campi allineati ===== */
body .lrb-portal.lrb-login-box.lrb-login-with-events {
  width: min(1180px, calc(100vw - 40px));
  max-width: 1180px;
  grid-template-columns: minmax(380px, 520px) minmax(380px, 520px);
  gap: 28px;
  align-items: start;
}
.lrb-login-with-events .lrb-login-card,
.lrb-login-with-events .lrb-login-public-events {
  max-width: 520px;
  width: 100%;
}
.lrb-login-with-events .lrb-login-card {
  min-height: auto;
}
.lrb-login-with-events .lrb-login-public-events {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: visible !important;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.lrb-login-with-events .lrb-login-events-head {
  background: #fff;
  border: 1px solid var(--lrb-border);
  border-radius: 22px;
  padding: 18px 20px;
  margin: 0;
  box-shadow: 0 14px 35px rgba(20, 31, 68, 0.08);
}
.lrb-login-with-events .lrb-community-event-grid-compact {
  display: flex;
  flex-direction: column;
  gap: 16px;
  overflow: visible !important;
  max-height: none !important;
  padding-right: 0 !important;
}
.lrb-login-with-events .lrb-community-event-card-compact {
  width: 100%;
  margin: 0 !important;
  padding: 22px !important;
  border-radius: 22px !important;
  border: 1px solid var(--lrb-border) !important;
  background: #fff !important;
  box-shadow: 0 14px 35px rgba(20, 31, 68, 0.08) !important;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-card-title h3 {
  font-size: 21px;
  line-height: 1.15;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-event-meta {
  font-size: 15px;
  margin: 7px 0;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-doc-callout {
  margin: 10px 0;
  padding: 12px 14px;
  border-radius: 14px;
  font-size: 14px;
  line-height: 1.35;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-community-event-form {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--lrb-border);
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  align-items: end;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-field {
  margin-bottom: 12px;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-field label {
  display: block;
  min-height: 18px;
  font-size: 13px;
  margin-bottom: 5px;
}
.lrb-login-with-events .lrb-community-event-card-compact input,
.lrb-login-with-events .lrb-community-event-card-compact textarea {
  width: 100% !important;
  min-height: 42px;
  border-radius: 12px;
  font-size: 14px;
  box-sizing: border-box;
}
.lrb-login-with-events .lrb-community-event-card-compact textarea {
  min-height: 64px;
}
.lrb-login-with-events .lrb-event-privacy {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin: 2px 0 10px;
  padding: 4px 0;
  border: 0 !important;
  background: transparent !important;
}
.lrb-login-with-events .lrb-event-privacy input[type="checkbox"] {
  width: 14px !important;
  height: 14px !important;
  min-width: 14px !important;
  min-height: 14px !important;
  margin: 0;
}
.lrb-login-with-events .lrb-event-privacy span {
  font-size: 12px;
  line-height: 1.2;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-button {
  min-height: 40px;
  padding: 10px 16px;
}
@media (max-width: 980px) {
  body .lrb-portal.lrb-login-box.lrb-login-with-events {
    width: min(560px, calc(100vw - 24px));
    max-width: 560px;
    grid-template-columns: 1fr;
  }
  .lrb-login-with-events .lrb-login-card,
  .lrb-login-with-events .lrb-login-public-events {
    max-width: 560px;
  }
  .lrb-login-with-events .lrb-community-event-card-compact .lrb-form-row {
    grid-template-columns: 1fr;
    gap: 0;
  }
}

/* v1.2.5 - home eventi pubblici compatta e gestione popup */
.lrb-login-with-events {
  align-items: stretch;
  gap: 22px;
}
.lrb-login-with-events .lrb-login-card,
.lrb-login-with-events .lrb-login-public-events {
  align-self: stretch;
}
.lrb-login-with-events .lrb-login-public-events {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  display: grid;
  gap: 16px;
}
.lrb-login-with-events .lrb-community-event-grid-compact {
  display: grid !important;
  gap: 16px !important;
  max-height: none !important;
  overflow: visible !important;
}
.lrb-login-with-events .lrb-community-event-card-compact {
  width: min(560px, 100%);
  min-height: auto;
  padding: 18px !important;
  border-radius: 24px;
  background: #fff;
  border: 1px solid rgba(15, 23, 42, 0.08);
  box-shadow: 0 18px 50px rgba(15, 23, 42, 0.11);
}
.lrb-event-compact-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin: 6px 0 10px;
}
.lrb-event-compact-meta span {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 5px 9px;
  border-radius: 999px;
  background: #f4f7fb;
  border: 1px solid #e4eaf3;
  color: #26324a;
  font-size: 12px;
  line-height: 1.2;
  font-weight: 650;
}
.lrb-event-compact-meta .lrb-event-places {
  background: #fff8dd;
  border-color: #f2da80;
  color: #6c4e00;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-doc-callout {
  margin: 8px 0 !important;
  padding: 10px 12px !important;
  border-radius: 16px !important;
  font-size: 12px !important;
  line-height: 1.35 !important;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-doc-callout p {
  margin: 4px 0 !important;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-form-row {
  gap: 8px !important;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-field {
  margin-bottom: 8px !important;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-field label {
  font-size: 11px !important;
  margin-bottom: 3px !important;
}
.lrb-login-with-events .lrb-community-event-card-compact input,
.lrb-login-with-events .lrb-community-event-card-compact textarea {
  min-height: 34px !important;
  font-size: 13px !important;
  padding: 7px 9px !important;
}
.lrb-login-with-events .lrb-community-event-card-compact textarea {
  min-height: 54px !important;
}
.lrb-event-submit-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: 8px;
}
.lrb-event-submit-row .lrb-event-privacy {
  margin: 0 !important;
  flex: 1 1 auto;
  font-size: 11px !important;
  line-height: 1.2 !important;
  color: #475569;
}
.lrb-event-submit-row .lrb-event-privacy input[type="checkbox"] {
  width: 13px !important;
  height: 13px !important;
  min-width: 13px !important;
}
.lrb-event-submit-row .lrb-button {
  flex: 0 0 auto;
  min-height: 34px !important;
  padding: 8px 14px !important;
  border-radius: 999px !important;
  font-size: 12px !important;
  white-space: nowrap;
}
.lrb-login-with-events .lrb-info-default {
  font-size: 11px !important;
  padding: 8px 10px !important;
  margin-top: 8px !important;
}
@media (max-width: 920px) {
  .lrb-login-with-events {
    grid-template-columns: 1fr !important;
  }
  .lrb-login-with-events .lrb-community-event-card-compact,
  .lrb-login-with-events .lrb-login-card {
    width: min(560px, 100%) !important;
    margin-left: auto;
    margin-right: auto;
  }
}
@media (max-width: 560px) {
  .lrb-event-submit-row {
    align-items: stretch;
    flex-direction: column;
  }
  .lrb-event-submit-row .lrb-button {
    width: 100%;
  }
}


/* v1.2.6 - eventi in home piu leggibili e gestione adesioni backend lineare */
body .lrb-portal.lrb-login-box.lrb-login-with-events {
  width: min(1360px, calc(100vw - 40px)) !important;
  max-width: 1360px !important;
  grid-template-columns: minmax(420px, 520px) minmax(620px, 780px) !important;
}
.lrb-login-with-events .lrb-login-public-events,
.lrb-login-with-events .lrb-community-event-card-compact {
  width: 100% !important;
  max-width: none !important;
}
.lrb-login-with-events .lrb-community-event-card-compact {
  padding: 22px 24px !important;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-card-title h3 {
  font-size: 24px !important;
  letter-spacing: -0.02em;
}
.lrb-login-with-events .lrb-event-compact-meta {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px !important;
  margin: 10px 0 14px !important;
}
.lrb-login-with-events .lrb-event-compact-meta span {
  width: 100%;
  justify-content: center;
  font-size: 14px !important;
  padding: 9px 12px !important;
  box-sizing: border-box;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-doc-callout {
  font-size: 13px !important;
  padding: 12px 14px !important;
}
.lrb-login-with-events .lrb-community-event-card-compact .lrb-form-row {
  grid-template-columns: 1fr 1fr !important;
  gap: 12px !important;
}
.lrb-login-with-events .lrb-community-event-card-compact input,
.lrb-login-with-events .lrb-community-event-card-compact textarea {
  min-height: 40px !important;
  font-size: 14px !important;
}
.lrb-login-with-events .lrb-event-submit-row {
  border-top: 1px solid var(--lrb-border);
  padding-top: 12px;
}
.lrb-login-with-events .lrb-event-submit-row .lrb-event-privacy {
  max-width: 300px;
}
.lrb-admin-registrations th,
.lrb-admin-registrations td {
  vertical-align: middle !important;
}
.lrb-admin-registration-form {
  display: grid;
  grid-template-columns: 120px 140px minmax(180px, 1fr);
  gap: 8px;
  align-items: end;
  min-width: 680px;
}
.lrb-admin-registration-form label {
  margin: 0;
}
.lrb-admin-registration-form label span {
  display: block;
  font-size: 11px;
  font-weight: 700;
  color: #475569;
  margin-bottom: 3px;
}
.lrb-admin-registration-form input[type="number"],
.lrb-admin-registration-form select,
.lrb-admin-registration-form input[type="text"] {
  width: 100%;
  min-height: 34px;
}
.lrb-admin-registration-actions {
  grid-column: 1 / -1;
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
}
@media (max-width: 980px) {
  body .lrb-portal.lrb-login-box.lrb-login-with-events {
    grid-template-columns: 1fr !important;
    width: min(760px, calc(100vw - 24px)) !important;
  }
  .lrb-login-with-events .lrb-event-compact-meta {
    grid-template-columns: 1fr !important;
  }
}
@media (max-width: 560px) {
  .lrb-login-with-events .lrb-community-event-card-compact .lrb-form-row {
    grid-template-columns: 1fr !important;
  }
}

/* v1.2.8 - Gestione adesione pubblica */
.lrb-manage-registration-card{max-width:820px;margin:24px auto;}
.lrb-manage-registration-form{margin-top:18px;display:block;}
.lrb-manage-registration-form .lrb-form-row{grid-template-columns:minmax(180px,260px);}
.lrb-manage-registration-form .lrb-button{margin-top:10px;margin-right:8px;}
.lrb-manage-registration-cancel{margin-top:18px;padding-top:16px;border-top:1px solid rgba(15,23,42,.12);}
.lrb-manage-registration-cancel .lrb-mini-danger{background:#fff1f2;color:#be123c;border:1px solid #fecdd3;}
.lrb-manage-registration-cancel .lrb-mini-danger:hover{background:#ffe4e6;color:#9f1239;}
@media (max-width: 720px){
  .lrb-manage-registration-card{margin:12px;}
  .lrb-manage-registration-form .lrb-form-row{display:block;}
  .lrb-manage-registration-form .lrb-button{width:100%;margin:8px 0 0 0;}
  .lrb-manage-registration-cancel .lrb-button{width:100%;}
}

/* v1.3.1 refinements */
.lrb-qr-box{display:flex;flex-direction:column;align-items:flex-start;gap:6px;background:#f8fafc;border:1px solid #dbe3ef;border-radius:14px;padding:10px;margin:8px 0}
.lrb-qr-box canvas,.lrb-qr-box img{width:150px!important;height:150px!important;max-width:100%;border-radius:10px;background:#fff;padding:6px;border:1px solid #e4e9f2}
.lrb-qr-fallback a{font-size:.9rem;font-weight:700;color:#12346b}
.lrb-my-bookings table,.lrb-bookings-table{font-size:.86rem}
.lrb-my-bookings td,.lrb-my-bookings th,.lrb-bookings-table td,.lrb-bookings-table th{padding:7px 8px!important}
.lrb-security-card{min-height:auto}
@media (min-width: 980px){.lrb-sidebar{display:grid;grid-template-columns:1fr;gap:14px}.lrb-card{align-self:start}}

/* v1.3.2 - Rifinitura font, area utente e QR 2FA */
:root {
  --lrb-blue: #1f3f78;
  --lrb-yellow: #f2c94c;
  --lrb-bg: #f7f9fc;
  --lrb-text: #172033;
  --lrb-muted: #64748b;
}
.lrb-portal,
.lrb-portal *,
.lrb-login-card,
.lrb-login-card *,
.lrb-legal-page,
.lrb-legal-page * {
  font-family: "Trebuchet MS", "Segoe UI", Arial, sans-serif !important;
}
.lrb-hero h1,
.lrb-card h3,
.lrb-card-title h3,
.lrb-login-card h2 {
  letter-spacing: -0.025em;
}
.lrb-portal {
  background: linear-gradient(180deg, #ffffff 0%, #f7f9fc 100%) !important;
}
.lrb-card {
  border-color: #e1e7f0 !important;
  box-shadow: 0 12px 28px rgba(31, 63, 120, 0.07) !important;
}
.lrb-sidebar {
  display: grid !important;
  gap: 12px !important;
}
.lrb-side-card,
.lrb-help-card,
.lrb-security-card,
.lrb-calendar-link-card {
  padding: 16px !important;
  margin-bottom: 0 !important;
  border-radius: 16px !important;
}
.lrb-sidebar .lrb-side-card h3,
.lrb-sidebar .lrb-help-card h3,
.lrb-sidebar .lrb-security-card h3,
.lrb-sidebar .lrb-calendar-link-card h3 {
  font-size: 1rem !important;
  margin: 0 0 8px !important;
  color: var(--lrb-blue) !important;
}
.lrb-sidebar p,
.lrb-sidebar small,
.lrb-sidebar li,
.lrb-sidebar span {
  font-size: .88rem !important;
  line-height: 1.35 !important;
}
.lrb-security-card {
  order: 1;
  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%) !important;
}
.lrb-calendar-link-card { order: 2; }
.lrb-sidebar .lrb-side-card:nth-of-type(1) { order: 3; }
.lrb-sidebar .lrb-status-card { order: 4; }
.lrb-sidebar .lrb-side-card:nth-of-type(3) { order: 5; }
.lrb-help-card { order: 6; }
.lrb-qr-box-visible {
  align-items: center !important;
  text-align: center !important;
  background: #ffffff !important;
  border: 1px solid #d9e2ef !important;
  box-shadow: inset 0 0 0 1px rgba(31,63,120,.03) !important;
}
.lrb-qr-img {
  display: block !important;
  width: 190px !important;
  height: 190px !important;
  max-width: 100% !important;
  object-fit: contain !important;
}
.lrb-qr-fallback a {
  font-size: .84rem !important;
}
.lrb-my-bookings,
.lrb-my-bookings .lrb-card {
  font-size: .82rem !important;
}
.lrb-my-bookings table,
.lrb-bookings-table {
  font-size: .8rem !important;
}
.lrb-my-bookings th,
.lrb-my-bookings td,
.lrb-bookings-table th,
.lrb-bookings-table td {
  padding: 6px 7px !important;
  line-height: 1.25 !important;
}
.lrb-my-bookings .lrb-button,
.lrb-bookings-table .lrb-button,
.lrb-my-bookings button,
.lrb-bookings-table button {
  font-size: .76rem !important;
  padding: 6px 8px !important;
  min-height: 0 !important;
}
.lrb-status,
.lrb-upcoming-status,
.lrb-badge {
  font-size: .74rem !important;
  padding: 4px 7px !important;
}
@media (min-width: 980px) {
  .lrb-sidebar {
    grid-template-columns: 1fr !important;
    align-content: start !important;
  }
}
@media (max-width: 980px) {
  .lrb-sidebar {
    grid-template-columns: repeat(2, minmax(0,1fr)) !important;
  }
}
@media (max-width: 640px) {
  .lrb-sidebar {
    grid-template-columns: 1fr !important;
  }
  .lrb-qr-img {
    width: 170px !important;
    height: 170px !important;
  }
}

/* v1.3.4 - hotfix layout stabile + footer segnalazioni */
.lrb-footer{display:flex!important;gap:10px!important;justify-content:center!important;align-items:center!important;flex-wrap:wrap!important;font-size:.9rem!important;color:#526176!important;padding:22px 10px!important}
.lrb-footer a{color:#1f3f78!important;font-weight:800!important;text-decoration:none!important;border-bottom:1px solid rgba(31,63,120,.25)!important}
.lrb-footer a:hover{border-bottom-color:#1f3f78!important}
.lrb-footer-sep{color:#c2cad6!important}
.lrb-table-card .lrb-card-title h3{font-size:1.05rem!important;letter-spacing:-.015em!important}
.lrb-table-card{padding:18px!important}
.lrb-table-card .lrb-table{font-size:.78rem!important}
.lrb-table-card .lrb-table td{font-size:.88rem!important}
.lrb-table-card .lrb-table th{font-size:.76rem!important;text-transform:none!important}
.lrb-row-actions{white-space:nowrap!important}
.lrb-mini-button{font-size:.78rem!important;padding:6px 9px!important;border-radius:10px!important}


/* v1.3.11 - mobile cleanup and safer WP 2FA entry point */
.lrb-security-wp2fa-card .lrb-button {
  width: 100%;
  justify-content: center;
  margin: 8px 0;
}
.lrb-security-wp2fa-card small {
  display: block;
  margin-top: 6px;
}

/* v1.8.45 - contenimento del pannello WP 2FA (shortcode [wp-2fa-setup-form]) dentro la
   sidebar stretta del portale: il markup è generato dal plugin Melapress, non nostro, quindi
   ci limitiamo a impedire che elementi larghi (QR code, tabelle codici di backup) sfondino la
   card, senza toccare gli stili interni del plugin. */
.lrb-security-wp2fa-form {
  max-width: 100%;
  overflow-x: auto;
}
.lrb-security-wp2fa-form img {
  max-width: 100%;
  height: auto;
}
.lrb-security-wp2fa-form table {
  max-width: 100%;
  font-size: 0.92em;
}
@media (max-width: 760px) {
  .lrb-upcoming-panel {
    padding: 14px !important;
    overflow: hidden !important;
  }
  .lrb-upcoming-head {
    align-items: center !important;
  }
  .lrb-upcoming-head h3 {
    font-size: 1.25rem !important;
  }
  .lrb-upcoming-item {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 10px !important;
    align-items: stretch !important;
    padding: 12px !important;
    overflow: hidden !important;
  }
  .lrb-upcoming-period {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
    gap: 8px !important;
    width: 100% !important;
    min-width: 0 !important;
  }
  .lrb-upcoming-period .lrb-upcoming-date {
    min-width: 0 !important;
    padding: 8px 7px !important;
    text-align: center !important;
  }
  .lrb-upcoming-date small,
  .lrb-upcoming-date strong,
  .lrb-upcoming-date span {
    display: block !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
  }
  .lrb-upcoming-date strong {
    font-size: 1rem !important;
    line-height: 1.05 !important;
  }
  .lrb-upcoming-date span {
    font-size: .9rem !important;
  }
  .lrb-upcoming-main {
    min-width: 0 !important;
    width: 100% !important;
  }
  .lrb-upcoming-main strong,
  .lrb-upcoming-main span {
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    overflow-wrap: anywhere !important;
    line-height: 1.2 !important;
  }
  .lrb-upcoming-status {
    justify-self: start !important;
    max-width: 100% !important;
    font-size: .85rem !important;
  }
  .lrb-sidebar {
    gap: 12px !important;
  }
}
@media (max-width: 420px) {
  .lrb-upcoming-period {
    grid-template-columns: 1fr 1fr !important;
  }
  .lrb-upcoming-period .lrb-upcoming-date {
    padding: 7px 5px !important;
  }
  .lrb-upcoming-date strong {
    font-size: .96rem !important;
  }
}

/* v1.4.1 - preventivo contributo */
.lrb-cost-estimate {
  margin: 18px 0;
  padding: 14px 16px;
  border: 1px solid rgba(39, 53, 131, .14);
  border-radius: 18px;
  background: linear-gradient(135deg, #ffffff 0%, #f7f9fd 100%);
  box-shadow: 0 10px 24px rgba(21, 33, 74, .06);
}
.lrb-cost-estimate-main {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  font-weight: 800;
  color: #1d2f6f;
}
.lrb-cost-estimate-main span { font-size: .95rem; }
.lrb-cost-estimate-main strong { font-size: 1.35rem; color: #23347f; }
.lrb-cost-estimate-details {
  margin-top: 8px;
  color: #53617a;
  font-size: .9rem;
  line-height: 1.35;
}
.lrb-cost-estimate-deposit {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid rgba(39, 53, 131, .12);
  color: #6b560d;
  font-size: .88rem;
  font-weight: 700;
}
.lrb-cost-estimate.lrb-cost-internal {
  background: linear-gradient(135deg, #f3fbf5 0%, #ffffff 100%);
  border-color: rgba(42, 157, 84, .25);
}
.lrb-cost-estimate.lrb-cost-internal .lrb-cost-estimate-deposit { color: #16703b; }
@media (max-width: 640px) {
  .lrb-cost-estimate-main { align-items: flex-start; flex-direction: column; }
  .lrb-cost-estimate-main strong { font-size: 1.15rem; }
}

/* v1.4.2 - Info utili */
.lrb-responsive-table{overflow-x:auto;margin:10px 0 0}
.lrb-info-table{width:100%;border-collapse:collapse;font-size:14px;line-height:1.35;background:#fff;border-radius:14px;overflow:hidden}
.lrb-info-table th,.lrb-info-table td{border:1px solid #dbe2ee;padding:10px 12px;text-align:left;vertical-align:top}
.lrb-info-table th{background:#f6f8fc;color:#17305f;font-weight:800}
.lrb-info-table td{color:#1f2937}
.lrb-hours-table th{width:160px}
@media (max-width: 760px){.lrb-info-table{font-size:12px}.lrb-info-table th,.lrb-info-table td{padding:8px}}

/* v1.4.3 - Info utili: prospetto contributi a larghezza piena */
.lrb-useful-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.lrb-useful-grid>section:first-child,.lrb-useful-grid>section.lrb-useful-wide{grid-column:1/-1}
.lrb-useful-grid .lrb-responsive-table{width:100%;overflow-x:auto}
.lrb-useful-grid .lrb-info-table{width:100%;min-width:980px}
@media(max-width:900px){.lrb-useful-grid{grid-template-columns:1fr}.lrb-useful-grid>section:first-child,.lrb-useful-grid>section.lrb-useful-wide{grid-column:auto}}

/* v1.4.5 refinements */
.lrb-deposit-choice {
  margin-top: 14px;
  padding: 14px;
  border: 1px solid #dfe6f2;
  border-radius: 16px;
  background: #fffdf4;
}
.lrb-deposit-choice .lrb-field { margin-bottom: 10px; }
.lrb-deposit-confirm { margin: 8px 0; }
.lrb-event-cancel-policy { font-size: .9rem; padding: 10px 12px; margin: 10px 0; }

/* v1.8.96: riquadro "Sei già iscritto" mostrato a chi ha un'adesione attiva, al
   posto del modulo vuoto. Verde tenue perché è una conferma, non un avviso.
   Le righe sono etichetta/valore affiancate sul desktop e impilate sotto i 560px:
   valori come l'elenco delle fasce o le intolleranze sono testi lunghi, e affiancati
   in mezza colonna finivano a capo parola per parola (stesso difetto corretto in
   v1.8.94 sulle tabelle della console). */
.lrb-event-myreg { border: 1px solid #b7e0c3; background: #f2fbf5; border-radius: 14px; padding: 14px 16px; margin: 0 0 14px; }
.lrb-event-myreg-head { display: flex; align-items: center; gap: 8px; color: #1e5130; font-size: 1.02rem; margin-bottom: 10px; }
.lrb-event-myreg-head .dashicons { color: #1e7a41; }
.lrb-event-myreg-list { margin: 0; padding: 0; }
.lrb-event-myreg-row { display: flex; gap: 14px; padding: 7px 0; border-bottom: 1px dashed #cfe9d8; }
.lrb-event-myreg-row:last-child { border-bottom: 0; }
.lrb-event-myreg-row dt { flex: 0 0 34%; margin: 0; font-weight: 700; color: #1e5130; font-size: .92rem; }
.lrb-event-myreg-row dd { margin: 0; flex: 1 1 auto; color: #24303f; overflow-wrap: anywhere; }
.lrb-event-myreg-actions { margin: 14px 0 6px; }
.lrb-event-myreg-hint { margin: 0 0 10px; font-size: .88rem; color: #4b6355; }

/* Il modulo per una seconda adesione resta disponibile ma va aperto apposta:
   così iscrivere un familiare è una scelta, non un doppione nato per errore. */
.lrb-event-additional { border: 1px dashed #cbd5e1; border-radius: 14px; padding: 0 14px; margin: 0 0 10px; background: #fbfcfe; }
.lrb-event-additional-summary { cursor: pointer; padding: 12px 0; font-weight: 700; color: #17346b; list-style: none; }
.lrb-event-additional-summary::-webkit-details-marker { display: none; }
.lrb-event-additional-summary::before { content: "+"; display: inline-block; width: 20px; height: 20px; line-height: 18px; text-align: center; margin-right: 8px; border: 1px solid #b9c6dd; border-radius: 6px; color: #17346b; font-weight: 800; }
.lrb-event-additional[open] .lrb-event-additional-summary::before { content: "−"; }
.lrb-event-additional-body { padding-bottom: 12px; }
@media (max-width: 560px) {
  .lrb-event-myreg-row { flex-direction: column; gap: 2px; }
  .lrb-event-myreg-row dt { flex: none; }
}
.lrb-deposit-compact { min-width: 150px; }
.lrb-deposit-compact > strong { display:block; color:#17346b; }
.lrb-deposit-compact > span { display:inline-block; margin:4px 0; padding:4px 8px; border-radius:999px; background:#eef3fb; font-size:12px; font-weight:700; }
.lrb-deposit-compact > small { display:block; color:#64748b; margin-bottom:6px; }
.lrb-deposit-compact .lrb-deposit-toggle { margin-top:4px; }
.lrb-deposit-form { margin-top:8px; padding:10px; border:1px solid #dfe6f2; border-radius:12px; background:#fff; width:260px; max-width:80vw; }
.lrb-deposit-form select,.lrb-deposit-form input,.lrb-deposit-form textarea{width:100%;max-width:100%;margin:3px 0;font-size:12px;box-sizing:border-box}.lrb-deposit-form textarea{min-height:54px}
.lrb-useful-grid .lrb-responsive-table { overflow-x: visible; }
.lrb-useful-grid .lrb-info-table { min-width: 0; table-layout: fixed; font-size: 12px; }
.lrb-useful-grid .lrb-info-table th,.lrb-useful-grid .lrb-info-table td { padding: 8px 7px; line-height: 1.22; word-break: normal; overflow-wrap: anywhere; }
.lrb-useful-grid .lrb-info-table th:first-child,.lrb-useful-grid .lrb-info-table td:first-child { width: 17%; }
.lrb-useful-grid .lrb-useful-wide { grid-column: 1 / -1; }
.lrb-useful-grid .lrb-hours-table { max-width: 620px; margin: 0 auto; table-layout: auto; font-size: 13px; }
.lrb-useful-grid .lrb-hours-table th,.lrb-useful-grid .lrb-hours-table td { padding: 9px 12px; }
@media (max-width: 900px) {
  .lrb-useful-grid .lrb-responsive-table { overflow-x:auto; }
  .lrb-useful-grid .lrb-info-table { min-width: 760px; }
  .lrb-useful-grid .lrb-hours-table { min-width: 0; width: 100%; }
}

/* v1.4.8 - Regolamento / Privacy / Info: font piu compatto */
.lrb-document-card,
.lrb-terms-card {
  font-size: 15px;
}

.lrb-document-card h1,
.lrb-terms-card h1 {
  font-size: clamp(28px, 3vw, 40px) !important;
  line-height: 1.08 !important;
}

.lrb-document-card h2,
.lrb-terms-card .lrb-terms-grid h2,
.lrb-doc-callout h2 {
  font-size: 19px !important;
  line-height: 1.2 !important;
  margin-bottom: 8px !important;
}

.lrb-document-card p,
.lrb-document-card li,
.lrb-terms-card .lrb-terms-grid section,
.lrb-terms-card .lrb-terms-grid p,
.lrb-terms-card .lrb-terms-grid li,
.lrb-doc-callout,
.lrb-doc-callout p {
  font-size: 14.5px !important;
  line-height: 1.5 !important;
}

.lrb-terms-card .lrb-terms-grid {
  gap: 14px !important;
}

.lrb-terms-card .lrb-terms-grid section {
  padding: 15px !important;
}

.lrb-doc-callout {
  padding: 15px !important;
}

@media (max-width: 760px) {
  .lrb-document-card h1,
  .lrb-terms-card h1 {
    font-size: 26px !important;
  }
  .lrb-document-card h2,
  .lrb-terms-card .lrb-terms-grid h2,
  .lrb-doc-callout h2 {
    font-size: 18px !important;
  }
  .lrb-document-card p,
  .lrb-document-card li,
  .lrb-terms-card .lrb-terms-grid section,
  .lrb-terms-card .lrb-terms-grid p,
  .lrb-terms-card .lrb-terms-grid li,
  .lrb-doc-callout,
  .lrb-doc-callout p {
    font-size: 14px !important;
    line-height: 1.45 !important;
  }
}

/* v1.6.0 - Mobile Experience: portale minimal su smartphone */
.lrb-mobile-simple-notice,
.lrb-operator-mobile-hint {
  display: none;
}

@media (max-width: 760px) {
  body .lrb-portal {
    padding: 10px !important;
    max-width: 100% !important;
  }

  .lrb-portal .lrb-topbar {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 10px !important;
    padding: 12px !important;
    border-radius: 18px !important;
    position: relative !important;
    top: auto !important;
  }

  .lrb-portal .lrb-brand,
  .lrb-portal .lrb-user-menu {
    justify-content: center !important;
    text-align: center !important;
  }

  .lrb-portal .lrb-brand img {
    max-height: 58px !important;
    width: auto !important;
  }

  .lrb-portal .lrb-nav {
    display: flex !important;
    flex-wrap: nowrap !important;
    gap: 8px !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
    padding: 4px 2px 8px !important;
    justify-content: flex-start !important;
    scrollbar-width: thin !important;
  }

  .lrb-portal .lrb-nav a {
    flex: 0 0 auto !important;
    font-size: 12px !important;
    line-height: 1.1 !important;
    padding: 9px 10px !important;
    border-radius: 999px !important;
    white-space: nowrap !important;
  }

  .lrb-user-menu {
    font-size: 12px !important;
  }

  .lrb-hero {
    padding: 16px !important;
    border-radius: 18px !important;
    margin: 10px 0 !important;
  }

  .lrb-hero h1 {
    font-size: 22px !important;
    line-height: 1.1 !important;
    margin-bottom: 6px !important;
  }

  .lrb-hero p {
    font-size: 13px !important;
    line-height: 1.35 !important;
  }

  .lrb-mobile-tabs {
    display: flex !important;
    gap: 8px !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
    padding: 4px 0 10px !important;
    margin: 0 0 8px !important;
  }

  .lrb-mobile-tabs a {
    flex: 0 0 auto !important;
    padding: 9px 11px !important;
    border-radius: 999px !important;
    font-size: 12px !important;
    white-space: nowrap !important;
  }

  .lrb-mobile-simple-notice {
    display: block !important;
    margin: 0 0 12px !important;
    padding: 12px 13px !important;
    border-radius: 16px !important;
    background: #f5f7fb !important;
    border: 1px solid #dbe4f0 !important;
    color: #1f2f56 !important;
    font-size: 12.5px !important;
    line-height: 1.35 !important;
  }

  .lrb-mobile-simple-notice strong,
  .lrb-mobile-simple-notice span {
    display: block !important;
  }

  .lrb-mobile-simple-notice strong {
    margin-bottom: 3px !important;
    color: #273583 !important;
  }

  .lrb-grid-main {
    display: block !important;
  }

  .lrb-card {
    border-radius: 18px !important;
    padding: 14px !important;
    margin-bottom: 12px !important;
  }

  .lrb-form-card {
    margin-bottom: 12px !important;
  }

  .lrb-card-title h3,
  .lrb-booking-form h3,
  .lrb-booking-form h2 {
    font-size: 17px !important;
    line-height: 1.2 !important;
  }

  .lrb-booking-form label,
  .lrb-booking-form .lrb-field {
    font-size: 13px !important;
  }

  .lrb-booking-form input,
  .lrb-booking-form select,
  .lrb-booking-form textarea,
  .lrb-booking-form button {
    font-size: 14px !important;
    min-height: 40px !important;
  }

  .lrb-booking-form textarea {
    min-height: 76px !important;
  }

  /* Mobile: esperienza minimal, il calendario completo resta per desktop/tablet */
  .lrb-calendar-card,
  .lrb-sidebar {
    display: none !important;
  }

  .lrb-table-card,
  #lrb-my-bookings {
    margin-top: 12px !important;
  }

  .lrb-table-card h3,
  #lrb-my-bookings h3 {
    font-size: 16px !important;
  }

  .lrb-table-card table {
    font-size: 12px !important;
  }

  .lrb-table-card th,
  .lrb-table-card td {
    padding: 7px 6px !important;
    line-height: 1.25 !important;
  }

  .lrb-table-card .button,
  .lrb-table-card button,
  .lrb-table-card a.button {
    font-size: 11px !important;
    padding: 4px 7px !important;
    min-height: auto !important;
  }

  .lrb-footer {
    display: block !important;
    text-align: center !important;
    font-size: 11.5px !important;
    line-height: 1.45 !important;
    padding: 14px 8px !important;
  }

  .lrb-footer-sep {
    display: none !important;
  }

  .lrb-login-wrap {
    padding: 12px !important;
  }

  .lrb-login-card,
  .lrb-login-public-events {
    max-width: 100% !important;
    width: 100% !important;
    padding: 18px !important;
    border-radius: 20px !important;
  }

  .lrb-login-public-events .lrb-event-card,
  .lrb-login-public-events .lrb-card {
    padding: 14px !important;
  }

  .lrb-operator-mobile-hint {
    display: block !important;
    padding: 10px 12px !important;
    margin: 8px 0 10px !important;
    background: #fff7ed !important;
    border: 1px solid #fed7aa !important;
    border-radius: 14px !important;
    color: #7c2d12 !important;
    font-size: 12px !important;
    line-height: 1.35 !important;
  }
}

@media (min-width: 761px) {
  .lrb-mobile-tabs {
    display: none !important;
  }
}


/* v1.6.1 - 404 personalizzata e pensiero del giorno */
.lrb-daily-quote {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  background: linear-gradient(135deg, #fff9e8 0%, #f7f9ff 100%);
  border: 1px solid #ead99a;
  border-radius: 18px;
  padding: 14px 16px;
  color: #213154;
  box-shadow: 0 10px 28px rgba(39, 53, 131, .08);
}
.lrb-daily-quote-login { margin: 14px 0 16px; }
.lrb-daily-quote-portal { max-width: 1180px; margin: 0 auto 18px; }
.lrb-daily-quote-icon { font-size: 24px; line-height: 1; }
.lrb-daily-quote strong { display: block; color: #17346b; font-size: 13px; text-transform: uppercase; letter-spacing: .04em; margin-bottom: 4px; }
.lrb-daily-quote p { margin: 0 0 4px !important; color: #273583 !important; font-size: 15px !important; line-height: 1.35 !important; }
.lrb-daily-quote span { display: block; color: #64748b; font-size: 12px; }
.lrb-custom-404-body { background: #f5f7fb; }
.lrb-custom-404-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 28px; }
.lrb-custom-404-card { width: min(760px, 100%); text-align: center; background: #fff; border: 1px solid #dde6f3; border-radius: 30px; padding: 38px 34px; box-shadow: 0 24px 80px rgba(23, 52, 107, .16); }
.lrb-custom-404-logo { max-width: 116px; height: auto; margin-bottom: 14px; }
.lrb-custom-404-emoji { font-size: 64px; line-height: 1; margin: 8px 0 10px; }
.lrb-custom-404-card h1 { margin: 0 0 12px; color: #17346b; font-size: clamp(30px, 5vw, 48px); line-height: 1.05; }
.lrb-custom-404-card p { color: #45546f; font-size: 18px; line-height: 1.5; margin: 0 0 8px; }
.lrb-custom-404-small { font-size: 15px !important; color: #6b7280 !important; }
.lrb-custom-404-actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin: 22px 0 18px; }
.lrb-daily-quote-404 { text-align: left; max-width: 560px; margin: 22px auto 0; }
@media (max-width: 760px) {
  .lrb-custom-404-wrap { padding: 16px; }
  .lrb-custom-404-card { padding: 26px 18px; border-radius: 24px; }
  .lrb-custom-404-card p { font-size: 15px; }
  .lrb-daily-quote-portal { margin: 0 12px 14px; }
  .lrb-daily-quote p { font-size: 13.5px !important; }
}

/* v1.6.2 - allineamento pensiero del giorno, Info utili mobile, no sfasature */
.lrb-hero-with-quote {
  align-items: stretch;
}
.lrb-hero-with-quote .lrb-hero-copy {
  flex: 1 1 auto;
  min-width: 0;
}
.lrb-hero-with-quote .lrb-daily-quote-portal {
  flex: 0 1 560px;
  max-width: 560px;
  margin: 0 0 0 auto;
  align-self: center;
}
@media (max-width: 980px) {
  .lrb-hero-with-quote {
    flex-direction: column;
  }
  .lrb-hero-with-quote .lrb-daily-quote-portal {
    max-width: none;
    width: 100%;
    margin: 10px 0 0;
  }
}
@media (max-width: 700px) {
  .lrb-useful-grid .lrb-responsive-table {
    overflow-x: visible !important;
  }
  .lrb-useful-grid .lrb-info-table {
    min-width: 0 !important;
    width: 100% !important;
    table-layout: fixed !important;
    font-size: 10px !important;
  }
  .lrb-useful-grid .lrb-info-table th,
  .lrb-useful-grid .lrb-info-table td {
    padding: 5px 4px !important;
    font-size: 10px !important;
    line-height: 1.18 !important;
    word-break: normal !important;
    overflow-wrap: anywhere !important;
  }
  .lrb-useful-grid .lrb-info-table th:first-child,
  .lrb-useful-grid .lrb-info-table td:first-child {
    width: 20% !important;
  }
  .lrb-useful-grid .lrb-hours-table {
    font-size: 12px !important;
  }
  .lrb-useful-grid .lrb-hours-table th,
  .lrb-useful-grid .lrb-hours-table td {
    padding: 7px 8px !important;
    font-size: 12px !important;
  }
}

/* v1.6.5 - Registrazione: help gruppo piu compatto e simmetrico */
.lrb-register-card .lrb-register-group-help {
  display: block;
  margin: 6px 0 0;
  font-size: 0.78rem;
  line-height: 1.25;
  color: #667085 !important;
  text-align: left;
  max-width: 100%;
}
.lrb-register-card select[name="group_id"] {
  text-overflow: ellipsis;
}


/* v1.6.6 - Registrazione: nota gruppo ancora più discreta */
.lrb-register-card .lrb-register-group-help {
  display: block;
  margin: 4px 0 0 !important;
  padding: 0 !important;
  font-size: 0.72rem !important;
  line-height: 1.2 !important;
  color: #7a8496 !important;
  text-align: left !important;
}
.lrb-register-card .lrb-form-row .lrb-field {
  align-self: start;
}

/* v1.6.11 - link pubblici documenti in schermata login */
.lrb-public-doc-links {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid rgba(39,53,131,.12);
}
.lrb-public-doc-links a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 30px;
  padding: 5px 10px;
  border-radius: 999px;
  background: #f5f7fb;
  border: 1px solid #dfe6f2;
  color: var(--lrb-blue);
  font-size: 12px;
  font-weight: 800;
  text-decoration: none;
}
.lrb-public-doc-links a:hover,
.lrb-public-doc-links a:focus {
  background: #eef3fb;
  color: #152557;
}

/* v1.6.13 - evidenza campi principali e tooltip descrittivi */
.lrb-primary-booking-field {
  background: #f8fbff;
  border: 1px solid #cbd8ef;
  border-radius: 16px;
  padding: 12px 14px;
  box-shadow: 0 8px 22px rgba(39, 53, 131, 0.06);
}
.lrb-primary-booking-field > label {
  color: #102c63;
  font-weight: 900;
  letter-spacing: .01em;
}
.lrb-highlight-label {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  padding: 4px 10px;
  border-radius: 999px;
  background: #fff4bf;
  border: 1px solid #f2d36b;
  color: #102c63;
  line-height: 1.15;
}
.lrb-inline-help {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 7px;
  color: #5e6b84;
  font-size: 12px;
  font-weight: 700;
  line-height: 1.25;
}
.lrb-field label .lrb-info-tip {
  margin-left: 5px;
  vertical-align: middle;
}
.lrb-register-card .lrb-inline-help {
  margin-top: 5px;
  font-size: 11px;
}
@media (max-width: 760px) {
  .lrb-primary-booking-field { padding: 10px 12px; }
  .lrb-highlight-label { padding: 3px 8px; }
}

/* v1.6.15 - Mobile Experience: elenco occupazioni e stato pre-produzione */
.lrb-mobile-occupancy {
  display: none;
}
.lrb-mobile-occupancy-filter {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin: 12px 0 14px;
}
.lrb-mobile-occupancy-filter label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12px;
  font-weight: 800;
  color: #273583;
}
.lrb-mobile-occupancy-filter input,
.lrb-mobile-occupancy-filter select {
  min-height: 38px;
  border-radius: 10px;
  border: 1px solid #d9e2ef;
  padding: 6px 8px;
  font-size: 14px;
}
.lrb-mobile-occupancy-filter button {
  grid-column: 1 / -1;
  width: 100%;
}
.lrb-mobile-occupancy-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.lrb-mobile-occupancy-item {
  border: 1px solid #dfe6f2;
  background: #fff;
  border-radius: 16px;
  padding: 10px 12px;
  display: grid;
  gap: 8px;
}
.lrb-mobile-occupancy-date,
.lrb-mobile-occupancy-main,
.lrb-mobile-occupancy-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.lrb-mobile-occupancy-date strong,
.lrb-mobile-occupancy-main strong {
  color: #17346b;
}
.lrb-mobile-occupancy-date span,
.lrb-mobile-occupancy-main span {
  color: #56657d;
  font-size: 13px;
  text-align: right;
}
.lrb-mobile-occupancy-actions .lrb-contact-owner {
  font-size: 12px;
  padding: 5px 9px;
  border-radius: 999px;
}
@media (max-width: 760px) {
  .lrb-mobile-occupancy {
    display: block;
    margin: 12px 0;
  }
  .lrb-calendar-card {
    display: none !important;
  }
  .lrb-mobile-tabs a[href="#lrb-my-bookings"]::after {
    content: '';
  }
}

/* v1.6.16 - Guide pubbliche/operatori */
.lrb-guide-page .lrb-document-card {
  max-width: 1180px;
}
.lrb-guide-grid section ol,
.lrb-guide-grid section ul {
  margin: 10px 0 0 20px;
  padding: 0;
}
.lrb-guide-grid section li {
  margin: 7px 0;
  line-height: 1.45;
}
.lrb-guide-card .lrb-doc-callout {
  margin-bottom: 18px;
}
/* v1.10.7 — La guida aveva una misura sua solo sotto i 760px (30px, qui
   sotto); sopra non aveva nulla e la sceglieva il tema. Adesso che
   .lrb-doc-page h1 ha una misura di riserva, senza questa riga la guida
   uscirebbe piu' piccola sul PC (24px) che sul telefono (30px), che e' il
   contrario di quello che deve succedere. La sua scala resta la sua. */
.lrb-guide-card h1 { font-size: 32px; }
@media (max-width: 760px) {
  .lrb-guide-page .lrb-topbar { gap: 10px; }
  .lrb-guide-page .lrb-nav { overflow-x: auto; white-space: nowrap; width: 100%; padding-bottom: 4px; }
  .lrb-guide-card h1 { font-size: 30px; }
  .lrb-guide-grid section { padding: 18px; }
  .lrb-guide-grid section h2 { font-size: 20px; }
  .lrb-guide-grid section p,
  .lrb-guide-grid section li { font-size: 14px; }
}

/* v1.6.17 - Registrazione centrata, 2FA tooltip e dashboard statistiche */
.lrb-register-card .lrb-field input[type="text"],
.lrb-register-card .lrb-field input[type="email"],
.lrb-register-card .lrb-field input[type="tel"],
.lrb-register-card .lrb-field input[type="password"],
.lrb-register-card .lrb-field select {
  text-align: center !important;
}
.lrb-register-card .lrb-field input::placeholder {
  text-align: center !important;
}
.lrb-2fa-inline-help {
  margin: 8px 0 12px !important;
  font-size: 0.9rem !important;
  color: #64748b !important;
}
.lrb-muted-action {
  display: inline-block;
  color: #64748b;
  font-size: 12px;
  font-weight: 700;
  padding: 5px 0;
}
.lrb-admin-stat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 14px;
  max-width: 1180px;
  margin: 12px 0 22px;
}
.lrb-admin-stat-grid-small {
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
}
.lrb-admin-stat-card {
  background: #fff;
  border: 1px solid #dcdcde;
  border-radius: 12px;
  padding: 16px;
  box-shadow: 0 1px 2px rgba(0,0,0,.04);
}
.lrb-admin-stat-card span {
  display: block;
  color: #50575e;
  font-weight: 700;
  margin-bottom: 8px;
}
.lrb-admin-stat-card strong {
  display: block;
  color: #1d2327;
  font-size: 30px;
  line-height: 1;
}
.lrb-admin-stat-card small {
  display: block;
  color: #646970;
  margin-top: 8px;
}
.lrb-dashboard-columns {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 16px;
  max-width: 1180px;
}
.lrb-dashboard-box {
  padding: 14px 16px;
  margin: 0 0 18px;
}
.lrb-dashboard-box h2 {
  margin-top: 0;
}


/* ===== v1.6.18: registrazione/login e dashboard grafica ===== */
.lrb-login-card input[type="text"],
.lrb-login-card input[type="password"],
.lrb-login-card input[type="email"],
.lrb-login-card input[type="tel"],
.lrb-login-card input[type="number"],
.lrb-login-card textarea,
.lrb-register-card input[type="text"],
.lrb-register-card input[type="password"],
.lrb-register-card input[type="email"],
.lrb-register-card input[type="tel"] {
  text-align: center !important;
  caret-color: var(--lrb-blue);
}

.lrb-register-card .lrb-field label {
  text-align: center;
}

.lrb-dashboard-charts {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 16px;
  max-width: 1200px;
  margin: 12px 0 22px;
}

.lrb-dashboard-chart {
  padding: 16px;
  box-sizing: border-box;
}

.lrb-dashboard-chart h2 {
  margin-top: 0;
}

.lrb-dashboard-chart-wide {
  grid-column: span 2;
}

.lrb-pie-chart {
  width: 168px;
  height: 168px;
  margin: 8px auto 14px;
  border-radius: 50%;
  color: #273583;
}

.lrb-pie-chart svg {
  width: 100%;
  height: 100%;
  transform: rotate(-90deg);
  overflow: visible;
}

.lrb-pie-chart circle:nth-child(2) { color: #3f51b5; }
.lrb-pie-chart circle:nth-child(3) { color: #6a7be8; }
.lrb-pie-chart circle:nth-child(4) { color: #9aa8ff; }
.lrb-pie-chart circle:nth-child(5) { color: #c6cdfc; }

.lrb-chart-legend {
  display: grid;
  gap: 7px;
  font-size: 13px;
}

.lrb-chart-legend span {
  display: flex;
  align-items: center;
  gap: 8px;
}

.lrb-chart-legend i {
  width: 10px;
  height: 10px;
  border-radius: 999px;
  background: currentColor;
  color: #273583;
  display: inline-block;
}

.lrb-bar-chart {
  display: grid;
  gap: 11px;
}

.lrb-bar-row {
  display: grid;
  grid-template-columns: minmax(90px, 1fr) minmax(90px, 1.4fr) 34px;
  gap: 10px;
  align-items: center;
  font-size: 13px;
}

.lrb-bar-row div {
  height: 12px;
  border-radius: 999px;
  background: #e9edf8;
  overflow: hidden;
}

.lrb-bar-row b {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #273583, #6a7be8);
}

.lrb-line-chart {
  width: 100%;
  min-height: 160px;
  color: #273583;
  background: linear-gradient(180deg, #f8f9fd, #ffffff);
  border: 1px solid #e2e7f3;
  border-radius: 14px;
}

.lrb-line-labels {
  display: flex;
  justify-content: space-between;
  color: #607086;
  font-size: 12px;
  margin-top: 6px;
}

@media (max-width: 782px) {
  .lrb-dashboard-chart-wide {
    grid-column: auto;
  }
  .lrb-bar-row {
    grid-template-columns: 1fr;
  }
}


/* ===== v1.6.19: gruppi dashboard e registrazione simmetrica ===== */
.lrb-register-card .lrb-form-row .lrb-field-wide,
.lrb-register-card .lrb-registration-group-field {
  grid-column: 1 / -1;
  width: 100%;
}

.lrb-register-card .lrb-registration-group-field select {
  width: 100%;
  max-width: none;
  text-align: left !important;
  text-align-last: left;
}

.lrb-register-card .lrb-registration-group-field .lrb-inline-help {
  justify-content: center;
  text-align: center;
}

.lrb-register-card .lrb-form-row {
  align-items: start;
}

.lrb-dashboard-group-charts .lrb-dashboard-chart {
  min-height: 250px;
}

.lrb-group-pie-chart circle:nth-child(1) { color: #273583; }
.lrb-group-pie-chart circle:nth-child(2) { color: #4772d9; }
.lrb-group-pie-chart circle:nth-child(3) { color: #7c95ee; }
.lrb-group-pie-chart circle:nth-child(4) { color: #b8c4ff; }

@media (max-width: 760px) {
  .lrb-register-card .lrb-registration-group-field select {
    width: 100%;
  }
}

/* ===== v1.6.21: ripristino layout area utente e select allineati a sinistra ===== */
.lrb-portal select,
.lrb-register-card select,
.lrb-login-card select,
.lrb-form-card select,
.lrb-field select {
  text-align: left !important;
  text-align-last: left !important;
}

.lrb-portal select option,
.lrb-register-card select option,
.lrb-login-card select option,
.lrb-form-card select option,
.lrb-field select option {
  text-align: left !important;
}

/* ===== v1.6.22: cellulare + partecipanti sulla stessa riga ===== */
.lrb-phone-participants-row {
  grid-template-columns: minmax(0, 1fr) 170px;
  align-items: end;
}

.lrb-phone-participants-row .lrb-participants-field input {
  text-align: center;
}

@media (max-width: 760px) {
  .lrb-phone-participants-row {
    grid-template-columns: 1fr;
  }
}


/* v1.6.24 - Messaggistica anonima richieste contatto */
.lrb-contact-threads-card { margin-top: 24px; }
.lrb-contact-thread-list { display: grid; gap: 14px; }
.lrb-contact-thread { border: 1px solid rgba(39,53,131,.16); border-radius: 16px; background: #fff; overflow: hidden; }
.lrb-contact-thread > summary { cursor: pointer; display: grid; grid-template-columns: minmax(150px,.8fr) minmax(220px,1.2fr) minmax(180px,1fr) auto; gap: 10px; align-items: center; padding: 14px 16px; background: #f7f8fc; }
.lrb-contact-thread > summary strong { color: #273583; }
.lrb-contact-thread > summary small { color: #596174; }
.lrb-contact-thread > summary em { font-style: normal; font-weight: 700; color: #2e7d32; }
.lrb-contact-messages { display: grid; gap: 10px; padding: 16px; }
.lrb-contact-message { max-width: 82%; border-radius: 14px; padding: 10px 12px; background: #f3f5fb; border: 1px solid rgba(39,53,131,.10); }
.lrb-contact-message.is-mine { justify-self: end; background: #eef6ff; }
.lrb-contact-message.is-other { justify-self: start; }
.lrb-contact-message strong { display: inline-block; margin-right: 8px; color: #273583; }
.lrb-contact-message time { font-size: .82rem; color: #6b7280; }
.lrb-contact-message p { margin: 6px 0 0; white-space: normal; }
.lrb-contact-reply-form { padding: 0 16px 16px; display: grid; gap: 10px; }
.lrb-contact-reply-form textarea { width: 100%; min-height: 84px; }
@media (max-width: 760px) {
  .lrb-contact-thread > summary { grid-template-columns: 1fr; }
  .lrb-contact-message { max-width: 100%; }
}

/* v1.6.26 - Captcha registrazione */
.lrb-captcha-field{max-width:360px;margin-left:auto;margin-right:auto;text-align:center}.lrb-captcha-box{display:flex;align-items:center;justify-content:center;gap:10px;background:#f7f9fc;border:1px solid #d7dfec;border-radius:14px;padding:10px 12px}.lrb-captcha-question{font-weight:700;color:#17346b;white-space:nowrap}.lrb-captcha-box input{max-width:120px;text-align:center}.lrb-register-card .lrb-captcha-field label{text-align:center}@media(max-width:640px){.lrb-captcha-box{flex-direction:column}.lrb-captcha-box input{max-width:100%;width:100%}}

/* v1.6.31 - Messaggi anonimi piu compatti */
.lrb-contact-threads-card { margin-top: 16px; padding: 14px !important; }
.lrb-contact-threads-card .lrb-card-title { margin-bottom: 6px; }
.lrb-contact-threads-card .lrb-muted { font-size: .88rem; margin: 4px 0 10px; }
.lrb-contact-thread-list { gap: 8px; }
.lrb-contact-thread { border-radius: 10px; }
.lrb-contact-thread > summary { grid-template-columns: minmax(130px,.7fr) minmax(220px,1.3fr) minmax(150px,.8fr) auto; gap: 8px; padding: 9px 12px; font-size: .92rem; }
.lrb-contact-thread > summary strong { font-size: .95rem; }
.lrb-contact-thread > summary small { font-size: .78rem; }
.lrb-contact-thread > summary em { font-size: .82rem; }
/* Nota v1.9.26: anche questo e' un contenitore che scorre per conto suo e puo'
   trattenere la rotella del mouse (vedi .lrb-upcoming-list). Qui pero' resta
   VOLUTO: e' la trascrizione di una conversazione, e senza altezza massima
   spingerebbe fuori schermo la casella di risposta che sta sotto. Chi legge
   scorre il testo con la rotella proprio perche' il puntatore e' li' sopra. */
.lrb-contact-messages { gap: 6px; padding: 10px 12px; max-height: 260px; overflow:auto; }
.lrb-contact-message { max-width: 76%; border-radius: 10px; padding: 7px 9px; font-size: .9rem; }
.lrb-contact-message strong { margin-right: 5px; }
.lrb-contact-message time { font-size: .72rem; }
.lrb-contact-message p { margin: 4px 0 0; line-height: 1.35; }
.lrb-contact-reply-form { padding: 0 12px 8px; gap: 6px; }
.lrb-contact-reply-form textarea { min-height: 54px; font-size: .88rem; }
.lrb-contact-delete-form { padding: 0 12px 12px; text-align:right; }
.lrb-danger-mini { border-color:#b32d2e !important; color:#b32d2e !important; background:#fff !important; }
@media (max-width: 780px) {
  .lrb-contact-thread > summary { grid-template-columns: 1fr; }
  .lrb-contact-message { max-width: 100%; }
}

/* v1.8.66 - Richieste alla segreteria (frontend utente). Riusa le classi già esistenti
 * dei Messaggi anonimi (lrb-contact-thread/lrb-contact-messages/lrb-contact-reply-form)
 * per la stessa resa visiva collaudata; qui solo gli elementi davvero nuovi. */
.lrb-office-requests-card { margin-top: 16px; }
.lrb-office-requests-card .lrb-muted { font-size: .88rem; margin: 4px 0 10px; }
.lrb-office-request-new { border: 1px solid rgba(39,53,131,.16); border-radius: 16px; background: #fff; margin-bottom: 14px; overflow: hidden; }
.lrb-office-request-new > summary { cursor: pointer; padding: 12px 16px; background: #f7f8fc; font-weight: 700; color: #273583; font-size: .95rem; }
/* v1.9.37 — FIX: su telefono i campi sporgevano fuori dalla scheda.
   Il modulo e' una griglia senza colonne dichiarate: la colonna implicita si
   dimensiona sul contenuto piu' largo — qui il segnaposto lungo del campo
   Oggetto («Es. Certificato di Battesimo per iscrizione al catechismo») —
   e diventava piu' larga del contenitore (325px dentro 314px), spingendo
   tutti i campi oltre il bordo destro. `minmax(0, 1fr)` obbliga la colonna a
   stare nello spazio disponibile: lo `0` come minimo e' il pezzo che conta,
   perche' il minimo predefinito (`auto`) e' proprio la larghezza del
   contenuto ed e' quello che impediva alla colonna di stringersi. */
.lrb-office-request-form { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; padding: 6px 16px 16px; }
.lrb-office-request-form label { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px; font-size: .9rem; font-weight: 600; color: #44506b; min-width: 0; }
.lrb-office-request-form input[type="text"], .lrb-office-request-form select, .lrb-office-request-form textarea, .lrb-office-request-form input[type="file"] { border: 1px solid rgba(39,53,131,.18); border-radius: 10px; padding: 8px 10px; font: inherit; background:#fff; width: 100%; max-width: 100%; min-width: 0; box-sizing: border-box; }
.lrb-office-request-form textarea { min-height: 90px; }
/* Il nome di un file allegato puo' essere lunghissimo: senza questo il campo
   file torna a spingere la colonna oltre il bordo appena si sceglie un file. */
.lrb-office-request-form input[type="file"] { overflow: hidden; text-overflow: ellipsis; }
.lrb-office-request-form .lrb-oc-hint { margin: 0; overflow-wrap: anywhere; }
.lrb-office-request-attachment a { font-weight: 600; }
em.lrb-office-request-status-new, span.lrb-office-request-status-new { color: #b45309 !important; }
em.lrb-office-request-status-in_progress, span.lrb-office-request-status-in_progress { color: #1d4ed8 !important; }
em.lrb-office-request-status-answered, span.lrb-office-request-status-answered { color: #15803d !important; }
em.lrb-office-request-status-closed, span.lrb-office-request-status-closed { color: #6b7280 !important; }

/* v1.8.71 - Console operatore: assegnazione/trasferimento, "in conoscenza", note private,
 * eliminazione e riapertura delle Richieste alla segreteria. */
/* v1.8.72 - Layout ottimizzato: toolbar unica compatta invece di più form impilati,
 * per ridurre lo spazio verticale occupato dai controlli sopra il thread. */
.lrb-office-request-panel { padding-top: 14px; }
.lrb-office-request-toolbar { display: flex; flex-wrap: wrap; gap: 10px 22px; align-items: flex-start; margin: 0 0 14px; padding: 10px 14px; border: 1px solid var(--oc-line, #e3e8f2); border-radius: 12px; background: #f9fafc; }
.lrb-office-request-tool { display: flex; flex-direction: column; gap: 4px; font-size: 13px; }
.lrb-office-request-tool-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .02em; color: var(--oc-muted, #6b7280); }
.lrb-office-request-tool .lrb-oc-inline-form { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.lrb-office-request-tool-watchers { flex: 1 1 220px; }
.lrb-office-request-watcher-list { list-style: none; margin: 0 0 6px; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.lrb-office-request-watcher-list li { display: inline-flex; align-items: center; gap: 4px; background: #eef1f8; border: 1px solid #dbe1f0; border-radius: 999px; padding: 3px 4px 3px 10px; font-size: 12.5px; }
.lrb-office-request-watcher-list .lrb-oc-inline-form { display: inline; }
.lrb-office-request-chip-remove { border: none; background: transparent; cursor: pointer; color: #b32d2e; font-size: 11px; padding: 2px 6px; line-height: 1; }
.lrb-office-request-toolbar select { padding: 5px 8px; font-size: 12.5px; }
@media (max-width: 700px) {
  /* align-items:flex-start evita che le colonne si allunghino verticalmente
   * riempiendo il box con spazio vuoto quando si impilano su schermo stretto. */
  .lrb-office-request-toolbar { flex-direction: column; align-items: stretch; gap: 12px; }
  .lrb-office-request-tool { flex: 0 0 auto; }
  .lrb-office-request-tool-watchers { flex: 0 0 auto; }
}
.lrb-office-request-reply-row { display: flex; flex-wrap: wrap; gap: 12px; }
.lrb-office-request-reply-row .lrb-oc-field { flex: 1 1 220px; }
.lrb-office-request-footer { margin-top: 14px; padding-top: 10px; border-top: 1px solid var(--oc-line, #e3e8f2); display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.lrb-office-request-internal-box { flex: 1 1 320px; margin: 0; border: 1px dashed #d8b34a; border-radius: 12px; background: #fffbea; overflow: hidden; }
.lrb-office-request-internal-box > summary { cursor: pointer; padding: 8px 12px; font-weight: 700; color: #92720c; font-size: .88rem; }
.lrb-office-request-internal-box > summary .lrb-muted-action { font-weight: 500; font-size: .82rem; }
.lrb-office-request-internal-box .lrb-office-request-reply-form { padding: 0 12px 12px; }
.lrb-office-request-internal-box .lrb-oc-field textarea { min-height: 44px; }
.lrb-contact-message.lrb-office-request-internal-note { background: #fff8e1 !important; border: 1px dashed #d8b34a !important; }
.lrb-contact-message.lrb-office-request-internal-note strong { color: #92720c; }
.lrb-office-request-delete-form { margin: 0; flex: 0 0 auto; align-self: flex-end; }
@media (max-width: 700px) {
  /* flex:0 0 auto sul riquadro nota: in colonna, "flex:1 1 320px" lo faceva crescere
   * fino a riempire l'altezza residua lasciando un grande vuoto giallo quando è chiuso. */
  .lrb-office-request-footer { flex-direction: column; align-items: stretch; }
  .lrb-office-request-internal-box { flex: 0 0 auto; }
  .lrb-office-request-delete-form { align-self: stretch; }
  .lrb-office-request-delete-form .lrb-oc-btn { width: 100%; }
}

/* v1.6.33 - notifiche chat anonime e backend richieste contatto */
.lrb-unread-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  margin-left: 8px;
  padding: 0 6px;
  border-radius: 999px;
  background: #d63638;
  color: #fff !important;
  font-size: 12px;
  line-height: 1;
  text-decoration: none;
  font-weight: 700;
  box-shadow: 0 2px 5px rgba(214,54,56,.25);
}
.lrb-unread-badge:hover { color:#fff !important; background:#b32d2e; }
.lrb-admin-mini-actions { display: flex; flex-wrap: wrap; gap: 4px; align-items: flex-start; }
.lrb-admin-mini-actions .button.button-small,
.lrb-admin-chat-details > summary.button.button-small {
  min-height: 22px;
  line-height: 20px;
  padding: 0 6px;
  font-size: 11px;
}
.lrb-admin-chat-details { display: inline-block; }
.lrb-admin-chat-details[open] { display: block; margin-top: 6px; }
.lrb-admin-chat-transcript {
  max-width: 560px;
  max-height: 260px;
  overflow: auto;
  display: grid;
  gap: 6px;
  padding: 8px;
  margin-top: 6px;
  background: #fff;
  border: 1px solid #dcdcde;
  border-radius: 6px;
}
.lrb-admin-chat-transcript .lrb-contact-message {
  max-width: 100%;
  padding: 6px 8px;
  border-radius: 8px;
  font-size: 12px;
}
.lrb-admin-chat-transcript .lrb-contact-message p { margin: 3px 0 0; line-height: 1.35; }
.lrb-admin-chat-transcript .lrb-contact-message time { font-size: 11px; }

/* v1.6.46 - Pulizia frontend area utente */
.lrb-quick-actions-card {
  margin: 16px 0 18px;
  padding: 16px !important;
}
.lrb-quick-actions-card .lrb-card-title { margin-bottom: 12px; }
.lrb-quick-actions-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 10px;
}
.lrb-quick-action {
  display: grid;
  grid-template-columns: 34px 1fr;
  grid-template-areas: "icon title" "icon text";
  gap: 2px 10px;
  align-items: center;
  padding: 12px 13px;
  border: 1px solid #e2e7f0;
  border-radius: 14px;
  background: linear-gradient(180deg, #fff 0%, #f8fafc 100%);
  text-decoration: none !important;
  color: #17346b !important;
  box-shadow: 0 4px 12px rgba(23,52,107,.06);
  transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease;
}
.lrb-quick-action:hover {
  transform: translateY(-1px);
  border-color: #d6b35a;
  box-shadow: 0 7px 16px rgba(23,52,107,.10);
}
.lrb-quick-icon {
  grid-area: icon;
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: #fff6da;
  color: #8a6f33;
  font-size: 18px;
}
.lrb-quick-action strong {
  grid-area: title;
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: .98rem;
  line-height: 1.15;
}
.lrb-quick-action small {
  grid-area: text;
  color: #5d6b82;
  line-height: 1.25;
}
.lrb-quick-unread { margin-left: 4px; transform: scale(.88); }
.lrb-bookings-status-helper {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  align-items: center;
  margin: 4px 0 12px;
  padding: 9px 11px;
  border: 1px solid #e5eaf2;
  border-radius: 12px;
  background: #f8fafc;
  color: #526074;
  font-size: .86rem;
}
.lrb-bookings-status-helper span { display: inline-flex; align-items: center; gap: 6px; }
.lrb-status-dot { width: 9px; height: 9px; border-radius: 999px; display: inline-block; background: #9aa4b2; }
.lrb-status-dot.pending { background: #d9a441; }
.lrb-status-dot.approved { background: #2f855a; }
.lrb-status-dot.cancelled { background: #b32d2e; }
.lrb-form-card .lrb-form-section span::before {
  content: "";
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 999px;
  background: currentColor;
  margin-right: 7px;
  vertical-align: middle;
}
.lrb-contact-thread > summary { cursor: pointer; }
.lrb-contact-thread:not([open]) > summary { background: #fbfcff; }
@media (max-width: 700px) {
  .lrb-quick-actions-card { margin-top: 12px; padding: 12px !important; }
  .lrb-quick-actions-grid { grid-template-columns: 1fr; }
  .lrb-quick-action { padding: 11px 12px; }
  .lrb-bookings-status-helper { display: grid; grid-template-columns: 1fr; }
}

/* PWA install banner */
.lrb-pwa-install{position:fixed;left:18px;right:18px;bottom:18px;z-index:99999;max-width:680px;margin:0 auto;background:#ffffff;border:1px solid rgba(39,53,131,.18);border-radius:18px;box-shadow:0 18px 45px rgba(15,23,42,.18);padding:14px 16px;display:flex;align-items:center;gap:14px;justify-content:space-between;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#1f2937}.lrb-pwa-install[hidden]{display:none!important}.lrb-pwa-install strong{display:block;color:#273583;font-size:15px}.lrb-pwa-install span{display:block;font-size:13px;color:#4b5563;margin-top:2px}.lrb-pwa-install-btn{border:0;border-radius:999px;background:#273583;color:#fff;font-weight:700;padding:9px 15px;cursor:pointer;white-space:nowrap}.lrb-pwa-install-btn:hover{filter:brightness(1.08)}.lrb-pwa-dismiss{border:0;background:#eef2ff;color:#273583;border-radius:999px;width:28px;height:28px;font-size:20px;line-height:24px;cursor:pointer;flex:0 0 auto}@media(max-width:640px){.lrb-pwa-install{left:10px;right:10px;bottom:10px;align-items:flex-start}.lrb-pwa-install-btn{padding:8px 12px}.lrb-pwa-install span{font-size:12px}}

/* v1.6.53 - Ricorrenza compatta e cauzioni pulite */
.lrb-recurrence-section-title{margin-top:14px}
.lrb-recurrence-inline-panel{margin:8px 0 18px;padding:14px 16px;border:1px solid #dce6f5;border-radius:16px;background:#f7faff}
.lrb-recurrence-inline-panel .lrb-compact-toggle{margin:0 0 10px}
.lrb-recurrence-inline-panel .lrb-recurrence-box{margin-top:10px;padding-top:10px;border-top:1px solid #e2e9f4}
@media (max-width: 680px){.lrb-recurrence-inline-panel{padding:12px}.lrb-recurrence-inline-panel .lrb-form-row{grid-template-columns:1fr}}


/* v1.6.53 - Ricorrenza compatta e gestione cauzione più lineare */
.lrb-recurrence-compact-panel{margin:6px 0 16px;padding:0;border:0;background:transparent}
.lrb-recurrence-toggle-row{margin:0!important;padding:9px 12px!important;border-radius:12px!important}
.lrb-recurrence-compact-panel .lrb-recurrence-box{margin:8px 0 0!important;padding:10px!important;border:1px solid #dfe6f2!important;border-radius:12px!important;background:#fbfdff!important}
.lrb-recurrence-compact-grid{display:grid;grid-template-columns:130px 130px minmax(280px,1fr);gap:8px;align-items:end}
.lrb-recurrence-compact-grid .lrb-field{margin-bottom:0!important}
.lrb-recurrence-compact-grid input[type=date]{min-height:34px;padding:6px 8px}
.lrb-weekdays-compact{gap:5px}
.lrb-weekdays-compact label{padding:6px 8px!important;border-radius:9px!important;font-size:12px!important;line-height:1.1}
.lrb-recurrence-note{margin:8px 0 0;color:#64748b;font-size:12px;line-height:1.35}
.lrb-deposit-form-clean{width:340px!important;max-width:min(92vw,360px)!important;padding:10px!important}
.lrb-deposit-form-title{font-weight:700;color:#17346b;margin:0 0 8px;font-size:13px}
.lrb-deposit-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lrb-deposit-form-grid label{display:flex;flex-direction:column;gap:4px;margin:0!important;font-size:11px;font-weight:700;color:#334155}
.lrb-deposit-form-grid select,.lrb-deposit-form-grid input,.lrb-deposit-form-grid textarea{margin:0!important;min-height:32px;font-size:12px!important}
.lrb-deposit-date,.lrb-deposit-notes{grid-column:1/-1}
.lrb-deposit-actions-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:9px;padding-top:8px;border-top:1px solid #eef2f7}
.lrb-deposit-notify{font-size:11px;color:#475569;display:flex;align-items:center;gap:5px;margin:0!important}
.lrb-deposit-help{font-size:11px!important;color:#64748b;margin:8px 0 0!important;line-height:1.35}
@media(max-width:760px){.lrb-recurrence-compact-grid{grid-template-columns:1fr 1fr}.lrb-recurrence-days-field{grid-column:1/-1}.lrb-weekdays-compact label{flex:1 1 calc(25% - 5px)}}
@media(max-width:520px){.lrb-recurrence-compact-grid{grid-template-columns:1fr}.lrb-weekdays-compact label{flex:1 1 calc(33.33% - 5px)}.lrb-deposit-form-grid{grid-template-columns:1fr}.lrb-deposit-actions-row{align-items:stretch;flex-direction:column}.lrb-deposit-actions-row .button{width:100%;text-align:center}}


/* v1.6.54 - Ricorrenza compatta corretta e gruppo predefinito */
.lrb-recurrence-compact-panel{margin:8px 0 14px!important;max-width:100%!important;overflow:hidden!important}
.lrb-recurrence-toggle-row{display:flex!important;align-items:center!important;gap:8px!important;min-height:42px!important;padding:8px 12px!important;font-size:14px!important;line-height:1.2!important}
.lrb-recurrence-toggle-row input{width:18px!important;height:18px!important;flex:0 0 auto!important}
.lrb-recurrence-compact-panel .lrb-recurrence-box{padding:10px!important;overflow:hidden!important}
.lrb-recurrence-compact-grid-v2{display:grid!important;grid-template-columns:minmax(120px,150px) minmax(120px,150px) minmax(120px,150px) 1fr!important;gap:8px!important;align-items:end!important;max-width:100%!important}
.lrb-recurrence-compact-grid-v2 .lrb-field{min-width:0!important;margin:0!important}
.lrb-recurrence-compact-grid-v2 input[type=date],.lrb-recurrence-compact-grid-v2 select{min-height:34px!important;padding:6px 8px!important;font-size:13px!important;width:100%!important;box-sizing:border-box!important}
.lrb-recurrence-days-field{min-width:0!important}
.lrb-weekdays-compact{display:flex!important;flex-wrap:wrap!important;gap:5px!important;max-width:100%!important;overflow:hidden!important}
.lrb-weekdays-compact label{flex:0 0 auto!important;min-width:54px!important;max-width:72px!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:4px!important;white-space:nowrap!important;padding:6px 7px!important}
.lrb-weekdays-compact input{width:14px!important;height:14px!important;flex:0 0 auto!important}
.lrb-recurrence-note{font-size:12px!important;margin-top:7px!important}
.lrb-group-locked-note{font-size:12px;color:#64748b;margin-top:5px}
@media(max-width:980px){.lrb-recurrence-compact-grid-v2{grid-template-columns:repeat(3,minmax(0,1fr))!important}.lrb-recurrence-days-field{grid-column:1/-1!important}}
@media(max-width:620px){.lrb-recurrence-compact-grid-v2{grid-template-columns:1fr!important}.lrb-weekdays-compact label{flex:1 1 calc(33.33% - 5px)!important;max-width:none!important}.lrb-recurrence-toggle-row{font-size:13px!important}}

/* v1.6.55 - Ricorrenza realmente compatta e responsive nel contenitore */
.lrb-recurrence-compact-panel{margin:8px 0 12px!important;overflow:visible!important}
.lrb-recurrence-compact-panel .lrb-recurrence-box{padding:10px 12px!important;max-height:none!important;min-height:0!important;overflow:visible!important}
.lrb-recurrence-compact-grid-v2{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:8px!important;align-items:start!important;width:100%!important;max-width:100%!important;overflow:visible!important}
.lrb-recurrence-compact-grid-v2 .lrb-field{margin:0!important;min-width:0!important;width:100%!important}
.lrb-recurrence-days-field{grid-column:1/-1!important;min-width:0!important;width:100%!important}
.lrb-recurrence-days-field>label{font-size:12px!important;margin-bottom:5px!important}
.lrb-weekdays-compact{display:grid!important;grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:5px!important;width:100%!important;max-width:100%!important;overflow:visible!important}
.lrb-weekdays-compact label{min-width:0!important;max-width:none!important;width:auto!important;padding:6px 4px!important;font-size:12px!important;justify-content:center!important;white-space:nowrap!important}
.lrb-weekdays-compact input{width:14px!important;height:14px!important}
.lrb-recurrence-note{font-size:12px!important;line-height:1.3!important;margin:7px 0 0!important}
@media(max-width:760px){.lrb-recurrence-compact-grid-v2{grid-template-columns:1fr 1fr!important}.lrb-recurrence-days-field{grid-column:1/-1!important}.lrb-weekdays-compact{grid-template-columns:repeat(4,minmax(0,1fr))!important}}
@media(max-width:520px){.lrb-recurrence-compact-grid-v2{grid-template-columns:1fr!important}.lrb-weekdays-compact{grid-template-columns:repeat(3,minmax(0,1fr))!important}.lrb-recurrence-toggle-row{font-size:13px!important}}

/* v1.6.60 - release footer */
.lrb-release-badge{font-size:.78rem!important;font-weight:800!important;color:#6b7280!important;background:rgba(255,255,255,.75)!important;border:1px solid rgba(0,0,0,.08)!important;border-radius:999px!important;padding:3px 8px!important;white-space:nowrap!important}


/* v1.6.62 - orari prenotabili e auto-refresh */
.lrb-booking-hours-note{margin:6px 0 10px;color:#64748b;font-size:13px;line-height:1.35}
.lrb-user-recurrence-pill{display:inline-flex;align-items:center;gap:4px;margin-top:6px;padding:4px 8px;border-radius:999px;background:#eef6ff;color:#0b3a75;font-size:12px;font-weight:600}
.lrb-auto-refresh-status{color:#64748b;font-size:12px;white-space:nowrap}

.lrb-footer .lrb-auto-refresh-status{font-size:.78rem!important;color:#6b7280!important;font-weight:700!important;white-space:nowrap!important}


/* v1.6.70 - footer/header frontend più compatti */
.lrb-footer.lrb-footer-compact{
  gap: .35rem!important;
  flex-wrap: wrap!important;
  justify-content: center!important;
  font-size: .76rem!important;
  line-height: 1.25!important;
  padding: .55rem .75rem!important;
}
.lrb-footer.lrb-footer-compact span,
.lrb-footer.lrb-footer-compact a{
  font-size: .76rem!important;
  line-height: 1.25!important;
}
.lrb-footer.lrb-footer-compact .lrb-footer-sep{opacity:.55!important;margin:0 .1rem!important}
.lrb-footer.lrb-footer-compact .lrb-release-badge{font-weight:700!important;white-space:nowrap!important}
.lrb-footer .lrb-auto-refresh-status{font-size:.72rem!important;font-weight:600!important;white-space:nowrap!important;color:#64748b!important}

/* v1.10.0-beta38 — «Aggiorna»: scarica subito l'ultima versione.
   Sta accanto al numero di versione perche' e' li' che si guarda quando ci si
   chiede «ma sto vedendo l'ultima?». Volutamente discreto — non e' un comando
   che serve tutti i giorni — ma con un bersaglio abbastanza grande da toccarlo
   col dito: sul telefono e' proprio li' che serve.
   Tutte le dichiarazioni sono !important perche' le regole del footer qui
   sopra lo sono, e senza perderebbero il confronto. */
.lrb-footer .lrb-refresh-btn{display:inline-flex!important;align-items:center!important;gap:5px!important;
  font:inherit!important;font-size:.78rem!important;font-weight:700!important;color:#3f4a5f!important;
  background:rgba(255,255,255,.75)!important;border:1px solid rgba(0,0,0,.08)!important;
  border-radius:999px!important;padding:3px 10px!important;cursor:pointer!important;
  line-height:1.4!important;white-space:nowrap!important;
  transition:background .15s,color .15s,border-color .15s!important}
.lrb-footer .lrb-refresh-btn:hover{background:#fff!important;color:#1d4ed8!important;
  border-color:rgba(29,78,216,.35)!important}
.lrb-footer .lrb-refresh-btn:focus-visible{outline:2px solid #1d4ed8!important;outline-offset:2px!important}
.lrb-footer .lrb-refresh-ico{display:inline-flex!important;align-items:center!important}
/* Mentre lavora le frecce girano: un comando che «scarica e ricarica» impiega
   un attimo, e senza un segno di vita si e' portati a premerlo di nuovo. */
.lrb-footer .lrb-refresh-btn.is-lavoro{opacity:.75!important;cursor:default!important}
.lrb-footer .lrb-refresh-btn.is-lavoro .lrb-refresh-ico{animation:lrb-gira 1s linear infinite!important}
@keyframes lrb-gira{to{transform:rotate(360deg)}}
/* Chi ha chiesto meno animazioni non se le vede: resta il testo «Aggiorno...». */
@media (prefers-reduced-motion:reduce){
  .lrb-footer .lrb-refresh-btn.is-lavoro .lrb-refresh-ico{animation:none!important}
}
@media (max-width:700px){
  /* Sul telefono il bersaglio cresce: e' il posto dove il comando serve
     davvero, e 3px di imbottitura non bastano per un dito. */
  .lrb-footer .lrb-refresh-btn{font-size:.7rem!important;padding:5px 11px!important}
}
@media (max-width: 700px){
  .lrb-footer.lrb-footer-compact{font-size:.7rem!important;padding:.45rem .55rem!important;}
  .lrb-footer.lrb-footer-compact span,
  .lrb-footer.lrb-footer-compact a,
  .lrb-footer .lrb-auto-refresh-status{font-size:.7rem!important;}
}


/* v1.6.71 - Prenotazioni: cauzione più lineare e pulsante Gestisci integrato */
.lrb-bookings-table-compact .lrb-deposit-inline{display:block!important;max-width:100%!important;line-height:1.15!important}
.lrb-bookings-table-compact .lrb-deposit-summary-line{display:flex!important;align-items:center!important;gap:4px!important;flex-wrap:wrap!important;max-width:100%!important}
.lrb-bookings-table-compact .lrb-deposit-summary-line strong{font-size:10.5px!important;line-height:1.1!important;margin-right:1px!important;white-space:nowrap!important}
.lrb-bookings-table-compact .lrb-deposit-summary-line span{font-size:9.5px!important;line-height:1.1!important;padding:2px 5px!important;margin:0!important;border-radius:999px!important;white-space:nowrap!important;max-width:86px!important;overflow:hidden!important;text-overflow:ellipsis!important;background:#eff6ff!important;color:#1e3a8a!important}
.lrb-bookings-table-compact .lrb-deposit-summary-line small{font-size:9.5px!important;line-height:1.1!important;margin:0!important;white-space:nowrap!important;color:#64748b!important;display:inline!important}
.lrb-bookings-table-compact .lrb-deposit-summary-line .lrb-deposit-toggle{font-size:9.5px!important;line-height:1.1!important;min-height:18px!important;padding:1px 5px!important;margin:0!important;border-radius:6px!important;white-space:nowrap!important}
.lrb-bookings-table-compact .lrb-deposit-form-clean{margin-top:6px!important;max-width:360px!important;min-width:260px!important;position:relative!important;z-index:5!important}
.lrb-bookings-table-compact .lrb-booking-status-actions-cell{width:92px!important;max-width:92px!important}
.lrb-bookings-table-compact th:nth-child(8),.lrb-bookings-table-compact td:nth-child(8){width:15%!important;max-width:15%!important}
.lrb-bookings-table-compact th:nth-child(9),.lrb-bookings-table-compact td:nth-child(9){width:9%!important;max-width:9%!important}
@media(max-width:1280px){.lrb-bookings-table-compact .lrb-deposit-summary-line span{max-width:70px!important}.lrb-bookings-table-compact .lrb-deposit-summary-line small{display:none!important}}

/* v1.6.74 - Comunicazioni portale */
.lrb-user-communications{margin:18px 0;}
.lrb-comm-list{display:grid;gap:12px;}
.lrb-comm-item{border:1px solid #dbe4f0;border-radius:16px;background:#fff;padding:14px 16px;box-shadow:0 8px 22px rgba(39,53,131,.05);}
.lrb-comm-item.is-unread{border-color:#f2d36b;background:#fffdf2;}
.lrb-comm-item.priority-urgent{border-color:#ef4444;background:#fff7f7;}
.lrb-comm-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;}
.lrb-comm-head h4{margin:4px 0 8px;color:#0b3b7a;font-size:1.05rem;}
.lrb-comm-head time{font-size:.8rem;color:#64748b;white-space:nowrap;}
.lrb-comm-category{display:inline-block;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;background:#eef2ff;color:#273583;border-radius:999px;padding:4px 8px;}
.lrb-comm-body{font-size:.95rem;color:#26324d;line-height:1.55;}
.lrb-comm-body p{margin:.35rem 0;}
.lrb-comm-attachment{margin:8px 0 0;}
.lrb-comm-attachment a{display:inline-flex;align-items:center;gap:4px;font-size:.9rem;font-weight:700;color:#273583;text-decoration:none;background:#eef2ff;border-radius:999px;padding:5px 12px;}
.lrb-comm-attachment a:hover{text-decoration:underline;}
.lrb-comm-read-form{margin-top:10px;}
.lrb-communications-admin .form-table textarea{max-width:900px;}
@media(max-width:720px){.lrb-comm-head{display:block}.lrb-comm-head time{display:block;margin-bottom:8px}.lrb-comm-item{padding:12px}}


/* v1.6.94 - calendario colorato per risorsa */
#lrb-calendar .lrb-event-resource-color,
#lrb-calendar .lrb-event-resource-color .fc-event-main,
#lrb-calendar .lrb-event-resource-color .fc-event-title,
#lrb-calendar .lrb-event-resource-color .fc-event-time {
  font-weight: 800 !important;
}
#lrb-calendar .lrb-event-resource-color {
  border: 1px solid rgba(17, 24, 39, 0.12) !important;
}

/* v1.6.96 - Ottimizzazione tablet/PWA: legenda vicina al calendario e box operativi affiancati */
.lrb-calendar-card .lrb-resource-legend-inline {
  margin-top: 12px !important;
  margin-bottom: 10px !important;
  padding: 12px 14px !important;
  box-shadow: none !important;
  background: #ffffff !important;
}
.lrb-calendar-card .lrb-resource-legend-inline h3 {
  margin: 0 0 8px !important;
  font-size: .95rem !important;
}
.lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important;
  gap: 7px 12px !important;
  margin: 0 !important;
}
.lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend li {
  margin: 0 !important;
  padding: 2px 0 !important;
  min-width: 0 !important;
}
.lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend strong {
  font-size: .82rem !important;
  line-height: 1.15 !important;
}
.lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend small {
  font-size: .72rem !important;
  line-height: 1.15 !important;
}
.lrb-security-wp2fa-card,
.lrb-operator-card {
  min-height: 0 !important;
}
.lrb-security-wp2fa-card p,
.lrb-operator-card p,
.lrb-security-wp2fa-card small,
.lrb-operator-card small {
  font-size: .82rem !important;
  line-height: 1.25 !important;
}
.lrb-security-wp2fa-card .lrb-button,
.lrb-operator-card .lrb-button {
  width: auto !important;
  min-height: 34px !important;
  padding: 7px 12px !important;
  font-size: .82rem !important;
}
@media (min-width: 783px) and (max-width: 1280px) {
  .lrb-portal .lrb-grid-main {
    grid-template-columns: minmax(310px, .92fr) minmax(430px, 1.08fr) !important;
    gap: 14px !important;
  }
  .lrb-portal .lrb-sidebar {
    grid-column: 1 / -1 !important;
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 12px !important;
    align-items: stretch !important;
  }
  .lrb-portal .lrb-security-card,
  .lrb-portal .lrb-operator-card {
    order: 1 !important;
  }
  .lrb-portal .lrb-calendar-link-card {
    order: 2 !important;
  }
  .lrb-portal .lrb-security-card,
  .lrb-portal .lrb-operator-card,
  .lrb-portal .lrb-calendar-link-card {
    padding: 13px !important;
  }
  .lrb-portal .lrb-calendar-link-card {
    grid-column: 1 / -1 !important;
  }
}
@media (max-width: 782px) {
  .lrb-calendar-card .lrb-resource-legend-inline {
    display: none !important;
  }
}


/* v1.6.97 - ottimizzazione tablet/PWA area utente */
@media (min-width: 783px) and (max-width: 1280px) {
  .lrb-portal .lrb-sidebar {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)) !important;
    gap: 10px !important;
    align-items: stretch !important;
  }
  .lrb-portal .lrb-security-card,
  .lrb-portal .lrb-operator-card,
  .lrb-portal .lrb-calendar-link-card,
  .lrb-portal .lrb-side-card {
    grid-column: auto !important;
    min-height: 0 !important;
    padding: 11px 12px !important;
    margin: 0 !important;
  }
  .lrb-portal .lrb-security-card h3,
  .lrb-portal .lrb-operator-card h3,
  .lrb-portal .lrb-calendar-link-card h3,
  .lrb-portal .lrb-side-card h3 {
    font-size: .92rem !important;
    margin-bottom: 5px !important;
  }
  .lrb-portal .lrb-security-card p,
  .lrb-portal .lrb-operator-card p,
  .lrb-portal .lrb-calendar-link-card p {
    font-size: .78rem !important;
    line-height: 1.2 !important;
    margin: 0 0 6px !important;
  }
  .lrb-portal .lrb-security-card small,
  .lrb-portal .lrb-operator-card small,
  .lrb-portal .lrb-calendar-link-card small {
    display: block !important;
    font-size: .72rem !important;
    line-height: 1.18 !important;
    margin-top: 5px !important;
  }
  .lrb-portal .lrb-security-card .lrb-button,
  .lrb-portal .lrb-operator-card .lrb-button,
  .lrb-portal .lrb-calendar-link-card button {
    min-height: 28px !important;
    padding: 5px 9px !important;
    font-size: .76rem !important;
    border-radius: 9px !important;
  }
  .lrb-portal .lrb-calendar-feed-box {
    gap: 5px !important;
  }
  .lrb-portal .lrb-calendar-feed-box input {
    min-height: 29px !important;
    font-size: .72rem !important;
  }
  .lrb-portal .lrb-security-wp2fa-card .lrb-info-tip {
    transform: scale(.86) !important;
    transform-origin: center !important;
  }
}
@media (min-width: 783px) and (max-width: 1100px) {
  .lrb-calendar-card .lrb-resource-legend-inline {
    margin-top: 8px !important;
    padding: 10px !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend {
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)) !important;
    gap: 5px 8px !important;
  }
}


/* v1.6.98 - rifinitura tablet/PWA: box 2FA/operatore sotto prenotazioni e legenda compatta */
@media (min-width: 783px) and (max-width: 1280px) {
  .lrb-portal .lrb-grid-main {
    grid-template-columns: minmax(300px, .95fr) minmax(380px, 1.05fr) !important;
    gap: 14px !important;
    align-items: start !important;
  }
  .lrb-portal .lrb-sidebar {
    grid-column: 2 !important;
    grid-row: 2 !important;
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(185px, 1fr)) !important;
    gap: 10px !important;
    align-items: stretch !important;
    margin-top: -2px !important;
  }
  .lrb-portal .lrb-security-card,
  .lrb-portal .lrb-operator-card,
  .lrb-portal .lrb-calendar-link-card,
  .lrb-portal .lrb-side-card {
    grid-column: auto !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 0 !important;
    padding: 10px 11px !important;
    margin: 0 !important;
    box-sizing: border-box !important;
  }
  .lrb-portal .lrb-security-card h3,
  .lrb-portal .lrb-operator-card h3,
  .lrb-portal .lrb-calendar-link-card h3 {
    font-size: .88rem !important;
    line-height: 1.12 !important;
    margin: 0 0 5px !important;
  }
  .lrb-portal .lrb-security-card p,
  .lrb-portal .lrb-operator-card p,
  .lrb-portal .lrb-calendar-link-card p {
    font-size: .74rem !important;
    line-height: 1.18 !important;
    margin: 0 0 6px !important;
  }
  .lrb-portal .lrb-security-card small,
  .lrb-portal .lrb-operator-card small,
  .lrb-portal .lrb-calendar-link-card small {
    font-size: .68rem !important;
    line-height: 1.15 !important;
    margin-top: 4px !important;
  }
  .lrb-portal .lrb-security-card .lrb-button,
  .lrb-portal .lrb-operator-card .lrb-button,
  .lrb-portal .lrb-calendar-link-card button {
    min-height: 26px !important;
    padding: 4px 8px !important;
    font-size: .72rem !important;
    border-radius: 8px !important;
  }
  .lrb-portal .lrb-security-wp2fa-card .lrb-info-tip {
    width: 16px !important;
    height: 16px !important;
    font-size: 10px !important;
    transform: none !important;
  }
  .lrb-portal .lrb-security-wp2fa-card .lrb-info-tip::after {
    right: auto !important;
    left: 50% !important;
    bottom: calc(100% + 7px) !important;
    width: 210px !important;
    max-width: calc(100vw - 36px) !important;
    font-size: 11px !important;
    line-height: 1.25 !important;
    padding: 7px 8px !important;
    transform: translate(-50%, 4px) !important;
    white-space: normal !important;
  }
  .lrb-portal .lrb-security-wp2fa-card .lrb-info-tip:hover::after,
  .lrb-portal .lrb-security-wp2fa-card .lrb-info-tip:focus::after {
    transform: translate(-50%, 0) !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline {
    width: 100% !important;
    box-sizing: border-box !important;
    padding: 9px 10px !important;
    margin: 9px 0 8px !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline h3 {
    font-size: .82rem !important;
    margin: 0 0 6px !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 4px 8px !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend li {
    display: grid !important;
    grid-template-columns: 12px minmax(0, 1fr) !important;
    align-items: start !important;
    gap: 5px !important;
    min-width: 0 !important;
    padding: 1px 0 !important;
    margin: 0 !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend .resource-dot {
    width: 10px !important;
    height: 10px !important;
    margin-top: 2px !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend strong {
    display: block !important;
    font-size: .68rem !important;
    line-height: 1.08 !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend small {
    display: block !important;
    font-size: .58rem !important;
    line-height: 1.05 !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    opacity: .78 !important;
  }
}
@media (min-width: 783px) and (max-width: 960px) {
  .lrb-portal .lrb-grid-main {
    grid-template-columns: 1fr !important;
  }
  .lrb-portal .lrb-sidebar {
    grid-column: 1 !important;
    grid-row: auto !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}


/* v1.6.99 - tablet/PWA: sidebar operativa ordinata sotto prossime prenotazioni */
@media (min-width: 783px) and (max-width: 1280px) {
  .lrb-portal .lrb-grid-main {
    grid-template-columns: minmax(300px, .96fr) minmax(390px, 1.04fr) !important;
    gap: 14px !important;
    align-items: start !important;
  }

  /* I box 2FA / operatore restano sotto Prossime prenotazioni, a larghezza piena,
     non affiancati e non dispersi nello spazio bianco. */
  .lrb-portal .lrb-sidebar {
    grid-column: 2 !important;
    grid-row: 2 !important;
    display: block !important;
    margin: 10px 0 0 !important;
    width: 100% !important;
  }
  .lrb-portal .lrb-sidebar:empty { display: none !important; }

  .lrb-portal .lrb-security-card,
  .lrb-portal .lrb-operator-card,
  .lrb-portal .lrb-calendar-link-card,
  .lrb-portal .lrb-side-card {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    min-height: 0 !important;
    box-sizing: border-box !important;
    margin: 0 0 8px !important;
    padding: 10px 12px !important;
  }

  .lrb-portal .lrb-security-card h3,
  .lrb-portal .lrb-operator-card h3,
  .lrb-portal .lrb-calendar-link-card h3 {
    font-size: .88rem !important;
    line-height: 1.12 !important;
    margin: 0 0 4px !important;
  }
  .lrb-portal .lrb-security-card p,
  .lrb-portal .lrb-operator-card p,
  .lrb-portal .lrb-calendar-link-card p,
  .lrb-portal .lrb-security-card small,
  .lrb-portal .lrb-operator-card small,
  .lrb-portal .lrb-calendar-link-card small {
    font-size: .72rem !important;
    line-height: 1.18 !important;
    margin: 0 0 5px !important;
  }
  .lrb-portal .lrb-security-card small,
  .lrb-portal .lrb-operator-card small,
  .lrb-portal .lrb-calendar-link-card small {
    display: block !important;
    color: #526174 !important;
  }
  .lrb-portal .lrb-security-card .lrb-button,
  .lrb-portal .lrb-operator-card .lrb-button,
  .lrb-portal .lrb-calendar-link-card button {
    min-height: 28px !important;
    padding: 5px 10px !important;
    font-size: .74rem !important;
    border-radius: 8px !important;
  }

  /* Il tooltip 2FA non deve più uscire dallo schermo su tablet: niente fumetto flottante,
     resta il testo compatto nel box. */
  .lrb-portal .lrb-security-wp2fa-card .lrb-info-tip::before,
  .lrb-portal .lrb-security-wp2fa-card .lrb-info-tip::after {
    display: none !important;
    content: none !important;
  }

  /* Legenda: stesso box del calendario, testo molto compatto e sempre su due righe pulite. */
  .lrb-calendar-card .lrb-resource-legend-inline {
    width: 100% !important;
    box-sizing: border-box !important;
    padding: 8px 10px !important;
    margin: 8px 0 8px !important;
    overflow: hidden !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline h3 {
    font-size: .78rem !important;
    line-height: 1.1 !important;
    margin: 0 0 6px !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 3px 8px !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend li {
    display: grid !important;
    grid-template-columns: 10px minmax(0, 1fr) !important;
    gap: 4px !important;
    align-items: start !important;
    min-width: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    overflow: hidden !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend .resource-dot {
    width: 8px !important;
    height: 8px !important;
    margin-top: 3px !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend strong,
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend small {
    display: block !important;
    max-width: 100% !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend strong {
    font-size: .62rem !important;
    line-height: 1.05 !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend small {
    font-size: .52rem !important;
    line-height: 1.05 !important;
    opacity: .74 !important;
  }
}

@media (min-width: 783px) and (max-width: 980px) {
  .lrb-portal .lrb-grid-main {
    grid-template-columns: 1fr !important;
  }
  .lrb-portal .lrb-sidebar {
    grid-column: 1 !important;
    grid-row: auto !important;
  }
}


/* v1.7.00 - tablet/PWA: sidebar sotto prossime prenotazioni, box 2FA/operatore compatti */
.lrb-calendar-card .lrb-sidebar-after-upcoming{
  margin-top:14px!important;
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:12px!important;
  width:100%!important;
  align-items:stretch!important;
}
.lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-side-card,
.lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-security-card,
.lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-calendar-link-card{
  padding:12px 14px!important;
  min-height:0!important;
  border-radius:15px!important;
  box-shadow:0 8px 18px rgba(31,63,120,.05)!important;
}
.lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-calendar-link-card{
  grid-column:1 / -1!important;
}
.lrb-security-wp2fa-card h3,
.lrb-operator-card h3{
  font-size:.98rem!important;
  margin:0 0 6px!important;
}
.lrb-security-compact-row{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  gap:10px!important;
  align-items:center!important;
}
.lrb-security-compact-row p,
.lrb-operator-card p{
  margin:0!important;
  font-size:.82rem!important;
  line-height:1.25!important;
}
.lrb-security-wp2fa-card .lrb-button,
.lrb-operator-card .lrb-button{
  width:auto!important;
  margin:0!important;
  padding:7px 10px!important;
  min-height:0!important;
  font-size:.78rem!important;
  white-space:nowrap!important;
}
.lrb-security-wp2fa-card small{
  margin-top:6px!important;
  font-size:.76rem!important;
  line-height:1.22!important;
}
.lrb-operator-mobile-hint{display:none!important;}
.lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-info-tip::after,
.lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-info-tip:hover::after,
.lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-info-tip:focus::after{
  display:none!important;
}
.lrb-resource-legend-inline{
  margin:12px 0 0!important;
  width:100%!important;
}
.lrb-resource-legend-inline .lrb-resource-legend{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:6px 10px!important;
  margin:6px 0 0!important;
}
.lrb-resource-legend-inline .lrb-resource-legend li{
  min-width:0!important;
  display:grid!important;
  grid-template-columns:12px minmax(0,1fr)!important;
  align-items:start!important;
  gap:6px!important;
  font-size:.78rem!important;
  line-height:1.15!important;
}
.lrb-resource-legend-inline .lrb-resource-legend strong,
.lrb-resource-legend-inline .lrb-resource-legend small{
  display:block!important;
  white-space:normal!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  line-height:1.15!important;
}
.lrb-resource-legend-inline .resource-dot{
  width:10px!important;
  height:10px!important;
  margin-top:2px!important;
}
@media (max-width:1366px) and (min-width:761px){
  .lrb-grid-main{grid-template-columns:minmax(360px,.95fr) minmax(0,1.05fr)!important;gap:14px!important;align-items:start!important;}
  .lrb-calendar-card .fc{display:none!important;}
  .lrb-calendar-card #lrb-calendar:before{content:'Vista lista prenotazioni';display:block;font-weight:800;color:#1f3f78;margin:0 0 8px;font-size:.95rem;}
  .lrb-calendar-card .lrb-sidebar-after-upcoming{grid-template-columns:1fr!important;}
  .lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-side-card,
  .lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-security-card,
  .lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-calendar-link-card{width:100%!important;}
  .lrb-security-compact-row{grid-template-columns:minmax(0,1fr) auto!important;}
}
@media (max-width:760px){
  .lrb-calendar-card .lrb-sidebar-after-upcoming{grid-template-columns:1fr!important;}
  .lrb-security-compact-row{grid-template-columns:1fr!important;}
  .lrb-security-wp2fa-card .lrb-button,.lrb-operator-card .lrb-button{width:100%!important;justify-content:center!important;}
  .lrb-resource-legend-inline .lrb-resource-legend{grid-template-columns:1fr!important;}
}


/* v1.7.01 - rifinitura tablet/PWA box 2FA e operatore */
.lrb-operator-compact-row{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  gap:10px!important;
  align-items:center!important;
}
.lrb-security-wp2fa-card .lrb-button,
.lrb-operator-card .lrb-button{
  min-width:142px!important;
  min-height:34px!important;
  padding:8px 12px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  font-size:.82rem!important;
  line-height:1.1!important;
  border-radius:10px!important;
}
.lrb-operator-compact-row p,
.lrb-security-compact-row p{
  margin:0!important;
  font-size:.82rem!important;
  line-height:1.25!important;
}
.lrb-operator-card .lrb-operator-mobile-hint{
  margin-top:6px!important;
  font-size:.74rem!important;
  line-height:1.18!important;
  color:#5b6475!important;
}
@media (max-width:1366px) and (min-width:761px){
  .lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-security-card,
  .lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-operator-card{
    padding:10px 12px!important;
  }
  .lrb-operator-compact-row,
  .lrb-security-compact-row{
    grid-template-columns:minmax(0,1fr) auto!important;
  }
  .lrb-security-wp2fa-card small{
    display:block!important;
    margin-top:5px!important;
    max-width:100%!important;
  }
}
@media (max-width:760px){
  .lrb-operator-compact-row,
  .lrb-security-compact-row{
    grid-template-columns:1fr!important;
  }
  .lrb-security-wp2fa-card .lrb-button,
  .lrb-operator-card .lrb-button{
    width:100%!important;
    min-width:0!important;
  }
}


/* v1.7.02 - layout distinti smartphone/tablet/desktop e rifinitura tablet PWA */
/* Desktop PC: calendario grafico, due colonne principali, nessuna regola tablet forzata. */
@media (min-width: 1367px) {
  .lrb-portal .lrb-grid-main {
    display: grid !important;
    grid-template-columns: minmax(380px, .82fr) minmax(680px, 1.18fr) !important;
    gap: 18px !important;
    align-items: start !important;
  }
  .lrb-calendar-card {
    align-self: start !important;
  }
  .lrb-calendar-card .fc {
    display: block !important;
  }
  .lrb-calendar-card #lrb-calendar:before {
    display: none !important;
    content: none !important;
  }
  .lrb-calendar-card .lrb-sidebar-after-upcoming {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px !important;
    margin-top: 10px !important;
    align-items: stretch !important;
  }
  .lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-calendar-link-card {
    grid-column: 1 / -1 !important;
  }
}

/* Tablet / PWA: lista prenotazioni, prossime prenotazioni e box operativi subito sotto, senza spazi vuoti. */
@media (min-width: 761px) and (max-width: 1366px) {
  .lrb-portal .lrb-grid-main {
    display: grid !important;
    grid-template-columns: minmax(340px, .94fr) minmax(0, 1.06fr) !important;
    gap: 12px !important;
    align-items: start !important;
  }
  .lrb-form-card,
  .lrb-calendar-card {
    align-self: start !important;
  }
  .lrb-calendar-card {
    display: flex !important;
    flex-direction: column !important;
    gap: 8px !important;
    padding: 13px !important;
    min-height: 0 !important;
  }
  .lrb-calendar-card .lrb-card-title {
    margin-bottom: 6px !important;
  }
  .lrb-calendar-card .fc {
    display: block !important;
    min-width: 0 !important;
  }
  .lrb-calendar-card #lrb-calendar {
    min-height: 0 !important;
    height: auto !important;
    overflow: visible !important;
    padding-bottom: 0 !important;
  }
  .lrb-calendar-card #lrb-calendar:before {
    display: none !important;
    content: none !important;
  }
  #lrb-calendar .fc-toolbar {
    gap: 6px !important;
    margin-bottom: 6px !important;
  }
  #lrb-calendar .fc-toolbar-title {
    font-size: 18px !important;
  }
  #lrb-calendar .fc-button {
    min-height: 28px !important;
    padding: 4px 8px !important;
    font-size: 11px !important;
    border-radius: 8px !important;
  }
  #lrb-calendar .fc-list {
    border-radius: 12px !important;
    overflow: hidden !important;
  }
  #lrb-calendar .fc-list-event-title,
  #lrb-calendar .fc-list-event-time {
    font-size: 12px !important;
    line-height: 1.15 !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline {
    order: 2 !important;
    margin: 4px 0 0 !important;
    padding: 9px 10px !important;
    border-radius: 13px !important;
    width: 100% !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline h3 {
    font-size: .84rem !important;
    margin: 0 0 5px !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 3px 8px !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend li {
    grid-template-columns: 9px minmax(0, 1fr) !important;
    gap: 4px !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .resource-dot {
    width: 8px !important;
    height: 8px !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend strong {
    font-size: .60rem !important;
    line-height: 1.05 !important;
  }
  .lrb-calendar-card .lrb-resource-legend-inline .lrb-resource-legend small {
    font-size: .50rem !important;
    line-height: 1.05 !important;
  }
  .lrb-upcoming-panel {
    order: 3 !important;
    margin-top: 6px !important;
    padding: 10px !important;
    border-radius: 14px !important;
  }
  .lrb-upcoming-head {
    margin-bottom: 8px !important;
  }
  .lrb-upcoming-head h3 {
    font-size: 16px !important;
  }
  .lrb-upcoming-head p {
    font-size: 11px !important;
  }
  .lrb-upcoming-item {
    grid-template-columns: 54px 1fr auto !important;
    gap: 6px !important;
    padding: 7px 8px !important;
    border-radius: 12px !important;
  }
  .lrb-upcoming-date {
    padding: 5px 6px !important;
  }
  .lrb-upcoming-date small,
  .lrb-upcoming-main span,
  .lrb-upcoming-main strong,
  .lrb-upcoming-status,
  .lrb-contact-owner {
    font-size: 11px !important;
  }
  .lrb-calendar-card .lrb-sidebar-after-upcoming {
    order: 4 !important;
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 7px !important;
    margin-top: 6px !important;
    width: 100% !important;
  }
  .lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-side-card,
  .lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-security-card,
  .lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-calendar-link-card {
    width: 100% !important;
    margin: 0 !important;
    padding: 9px 11px !important;
    border-radius: 13px !important;
    min-height: 0 !important;
  }
  .lrb-security-wp2fa-card h3,
  .lrb-operator-card h3 {
    font-size: .85rem !important;
    margin: 0 !important;
  }
  .lrb-security-compact-row,
  .lrb-operator-compact-row {
    display: grid !important;
    grid-template-columns: minmax(0,1fr) auto !important;
    gap: 8px !important;
    align-items: center !important;
  }
  .lrb-security-compact-row p,
  .lrb-operator-compact-row p {
    font-size: .74rem !important;
    line-height: 1.15 !important;
    margin: 0 !important;
  }
  .lrb-security-wp2fa-card small,
  .lrb-operator-mobile-hint {
    display: block !important;
    font-size: .66rem !important;
    line-height: 1.12 !important;
    margin-top: 4px !important;
    color: #5b6475 !important;
  }
  .lrb-security-wp2fa-card .lrb-button,
  .lrb-operator-card .lrb-button {
    min-width: 126px !important;
    min-height: 30px !important;
    padding: 7px 9px !important;
    font-size: .72rem !important;
    border-radius: 9px !important;
    white-space: nowrap !important;
  }
  .lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-info-tip::after,
  .lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-info-tip:hover::after,
  .lrb-calendar-card .lrb-sidebar-after-upcoming .lrb-info-tip:focus::after {
    display: none !important;
    content: none !important;
  }
}

/* Smartphone: layout a colonna singola, niente affiancamenti. */
@media (max-width: 760px) {
  .lrb-portal .lrb-grid-main {
    display: flex !important;
    flex-direction: column !important;
    gap: 12px !important;
  }
  .lrb-calendar-card .lrb-sidebar-after-upcoming {
    grid-template-columns: 1fr !important;
  }
  .lrb-security-compact-row,
  .lrb-operator-compact-row {
    grid-template-columns: 1fr !important;
  }
  .lrb-security-wp2fa-card .lrb-button,
  .lrb-operator-card .lrb-button {
    width: 100% !important;
    min-width: 0 !important;
  }
}


/* v1.8.27 - rimossa la sezione "Storico prenotazioni importate" (.lrb-legacy-history-*):
   le prenotazioni storiche importate compaiono ora normalmente nel calendario/"Le mie prenotazioni". */

/* v1.7.33 - Frontend form compactness and safe tooltips */
.lrb-booking-form .lrb-form-row {
  grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
  align-items: end;
}
.lrb-booking-form .lrb-field label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.lrb-booking-form .lrb-group-select-tip {
  flex: 0 0 auto;
}
.lrb-booking-form .lrb-group-select-tip::after,
.lrb-booking-form .lrb-info-tip::after {
  width: min(320px, calc(100vw - 36px));
  max-width: calc(100vw - 36px);
  white-space: normal;
  overflow-wrap: break-word;
  word-break: normal;
}
/* v1.9.37 — FIX: il fumetto della «i» accanto a «Gruppo / Privato» usciva
   dallo schermo, come quello del non-lucro (v1.9.36). Stessa causa: era
   centrato SULL'ICONA (`left: 50%` + `translate(-50%)`), quindi finiva dove
   capitava l'icona — vicino al bordo, fuori.
   Ora e' ancorato al CAMPO che lo contiene (.lrb-field, reso `relative` qui
   sotto): il campo sta dentro il modulo, quindi il fumetto non puo' sporgere
   da nessun lato a nessuna larghezza. L'icona torna `static` perche'
   altrimenti resterebbe lei il riferimento. */
.lrb-booking-form .lrb-field { position: relative; }
.lrb-booking-form .lrb-group-select-tip { position: static; }
.lrb-booking-form .lrb-group-select-tip::after {
  left: 0;
  right: 0;
  width: auto;
  max-width: none;
  transform: translateY(4px);
}
.lrb-booking-form .lrb-group-select-tip:hover::after,
.lrb-booking-form .lrb-group-select-tip:focus::after {
  transform: translateY(0);
}
@media (max-width: 720px) {
  .lrb-booking-form .lrb-form-row {
    gap: 10px;
  }
  .lrb-booking-form .lrb-field {
    margin-bottom: 10px;
  }
  .lrb-booking-form input,
  .lrb-booking-form select,
  .lrb-booking-form textarea {
    min-height: 42px;
  }
}

/* v1.7.35 - Frontend desktop: form and calendar above, bookings full-width below */
.lrb-portal .lrb-grid-main-balanced {
  align-items: start !important;
  grid-template-columns: minmax(390px, .92fr) minmax(540px, 1.08fr) !important;
  gap: clamp(12px, 1.4vw, 18px) !important;
}
.lrb-portal .lrb-grid-main-balanced > .lrb-card {
  width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
}
.lrb-portal #lrb-my-bookings {
  width: 100% !important;
  margin-top: clamp(12px, 1.4vw, 18px) !important;
}
.lrb-portal #lrb-my-bookings .lrb-table-wrap {
  overflow-x: visible !important;
}
.lrb-portal #lrb-my-bookings .lrb-table {
  width: 100% !important;
  min-width: 0 !important;
  table-layout: fixed !important;
}
.lrb-portal #lrb-my-bookings .lrb-table th,
.lrb-portal #lrb-my-bookings .lrb-table td {
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  word-break: normal !important;
}
.lrb-portal #lrb-my-bookings .lrb-table th:nth-child(1),
.lrb-portal #lrb-my-bookings .lrb-table td:nth-child(1) { width: 18%; }
.lrb-portal #lrb-my-bookings .lrb-table th:nth-child(2),
.lrb-portal #lrb-my-bookings .lrb-table td:nth-child(2) { width: 34%; }
.lrb-portal #lrb-my-bookings .lrb-table th:nth-child(3),
.lrb-portal #lrb-my-bookings .lrb-table td:nth-child(3) { width: 22%; }
.lrb-portal #lrb-my-bookings .lrb-table th:nth-child(4),
.lrb-portal #lrb-my-bookings .lrb-table td:nth-child(4) { width: 12%; }
.lrb-portal #lrb-my-bookings .lrb-table th:nth-child(5),
.lrb-portal #lrb-my-bookings .lrb-table td:nth-child(5) { width: 14%; }
@media (max-width: 1180px) {
  .lrb-portal .lrb-grid-main-balanced {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}
@media (max-width: 760px) {
  .lrb-portal #lrb-my-bookings .lrb-table,
  .lrb-portal #lrb-my-bookings .lrb-table thead,
  .lrb-portal #lrb-my-bookings .lrb-table tbody,
  .lrb-portal #lrb-my-bookings .lrb-table tr,
  .lrb-portal #lrb-my-bookings .lrb-table th,
  .lrb-portal #lrb-my-bookings .lrb-table td {
    width: auto !important;
  }
}

/* v1.7.38 - Tooltip calendario operatori */
.lrb-calendar-has-tooltip{cursor:help;}

/* v1.7.40 - Desktop: layout frontend simmetrico a passaggi, senza toccare tablet/PWA e smartphone */
@media (min-width: 1367px) {
  .lrb-portal .lrb-grid-main-balanced {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    gap: clamp(14px, 1.4vw, 20px) !important;
    align-items: start !important;
  }
  .lrb-portal .lrb-grid-main-balanced > .lrb-card,
  .lrb-portal #lrb-form-card,
  .lrb-portal #lrb-calendar-card {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
  }
  .lrb-portal #lrb-form-card .lrb-booking-form {
    display: block !important;
  }
  .lrb-booking-step-grid {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: clamp(12px, 1.2vw, 18px) !important;
    align-items: stretch !important;
  }
  .lrb-booking-step {
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
    min-width: 0 !important;
    min-height: 100% !important;
    padding: 14px !important;
    border: 1px solid rgba(39, 53, 131, .10) !important;
    border-radius: 18px !important;
    background: linear-gradient(180deg, rgba(248,250,255,.95), rgba(255,255,255,.98)) !important;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.65) !important;
  }
  .lrb-booking-step-head {
    display: flex !important;
    align-items: center !important;
    gap: 9px !important;
    margin: 0 0 2px !important;
    color: var(--lrb-primary) !important;
  }
  .lrb-booking-step-head span {
    width: 30px !important;
    height: 30px !important;
    border-radius: 999px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    background: var(--lrb-primary) !important;
    color: #fff !important;
    font-weight: 900 !important;
    font-size: .95rem !important;
    box-shadow: 0 8px 18px rgba(39,53,131,.16) !important;
  }
  .lrb-booking-step-head strong {
    font-size: 1rem !important;
    line-height: 1.1 !important;
  }
  .lrb-booking-step .lrb-form-section {
    margin: 2px 0 4px !important;
  }
  .lrb-booking-step .lrb-field,
  .lrb-booking-step .lrb-form-row,
  .lrb-booking-step .lrb-checkbox,
  .lrb-booking-step .lrb-recurrence-inline-panel,
  .lrb-booking-step .lrb-cost-estimate,
  .lrb-booking-step .lrb-actions,
  .lrb-booking-step .lrb-message {
    margin-top: 0 !important;
    margin-bottom: 10px !important;
    min-width: 0 !important;
  }
  .lrb-booking-step .lrb-form-row {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px !important;
  }
  .lrb-booking-step input,
  .lrb-booking-step select,
  .lrb-booking-step textarea {
    width: 100% !important;
    min-width: 0 !important;
  }
  .lrb-booking-step textarea {
    min-height: 84px !important;
  }
  .lrb-booking-step .lrb-actions {
    margin-top: auto !important;
  }
  .lrb-calendar-card {
    display: flex !important;
    flex-direction: column !important;
    gap: 14px !important;
  }
  .lrb-calendar-card #lrb-calendar {
    width: 100% !important;
    min-width: 0 !important;
  }
  .lrb-calendar-card .fc {
    width: 100% !important;
    min-width: 0 !important;
  }
  .lrb-calendar-info-grid {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: 12px !important;
    align-items: stretch !important;
    width: 100% !important;
  }
  .lrb-calendar-info-grid > .lrb-card,
  .lrb-calendar-info-grid > .lrb-side-card,
  .lrb-calendar-info-grid > .lrb-resource-legend-card,
  .lrb-calendar-info-grid > .lrb-upcoming-panel,
  .lrb-calendar-info-grid > .lrb-operator-card,
  .lrb-calendar-info-grid > .lrb-security-card {
    width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    min-height: 128px !important;
    padding: 14px !important;
    border-radius: 16px !important;
    overflow: hidden !important;
  }
  .lrb-calendar-info-grid .lrb-resource-legend-inline {
    margin: 0 !important;
  }
  .lrb-calendar-info-grid .lrb-resource-legend-inline .lrb-resource-legend {
    grid-template-columns: 1fr !important;
    gap: 5px !important;
  }
  .lrb-calendar-info-grid .lrb-resource-legend-inline .lrb-resource-legend li {
    grid-template-columns: 10px minmax(0,1fr) !important;
    gap: 6px !important;
  }
  .lrb-calendar-info-grid .lrb-resource-legend-inline .lrb-resource-legend strong,
  .lrb-calendar-info-grid .lrb-resource-legend-inline .lrb-resource-legend small,
  .lrb-calendar-info-grid .lrb-upcoming-main strong,
  .lrb-calendar-info-grid .lrb-upcoming-main span,
  .lrb-calendar-info-grid p {
    white-space: normal !important;
    overflow-wrap: anywhere !important;
  }
  .lrb-calendar-info-grid .lrb-upcoming-panel {
    display: flex !important;
    flex-direction: column !important;
  }
  /* v1.9.26 — SCORRIMENTO CON LA ROTELLA, "solo da pc".
     Questo riquadro era alto 160px con overflow:auto, cioe' un contenitore che
     scorre per conto suo. Da PC (la regola vale solo da 1367px in su: ecco
     perche' il difetto NON si vedeva su telefono e tablet) se il puntatore
     capitava sopra l'elenco la rotella muoveva l'elenco e non la pagina, e una
     volta arrivato in fondo all'elenco il browser NON passava lo scorrimento al
     documento: la pagina restava ferma. Da qui il "va e non va" — dipendeva
     solo da dove si trovava il puntatore del mouse.
     Attenzione: overscroll-behavior NON risolve. Il valore predefinito e' gia'
     "auto"; e' "contain"/"none" a bloccare il passaggio, e qui non c'erano.
     Misurato: con overscroll-behavior:auto esplicito la pagina resta a
     scrollY 0. L'unica correzione efficace e' togliere il contenitore che
     scorre. L'elenco ora si distende per intero e scorre insieme alla pagina,
     che su uno schermo da 1367px in su e' anche piu' leggibile. */
  .lrb-calendar-info-grid .lrb-upcoming-list {
    max-height: none !important;
    overflow: visible !important;
    padding-right: 2px !important;
  }
  .lrb-calendar-info-grid .lrb-upcoming-empty {
    min-height: 60px !important;
    display: flex !important;
    align-items: center !important;
  }
  .lrb-calendar-info-grid .lrb-operator-compact-row,
  .lrb-calendar-info-grid .lrb-security-compact-row {
    display: grid !important;
    grid-template-columns: minmax(0,1fr) auto !important;
    gap: 10px !important;
    align-items: center !important;
  }
  .lrb-calendar-info-grid .lrb-button {
    white-space: nowrap !important;
  }
}

/* v1.7.41 - Desktop: riordino form a passaggi e pannelli calendario più simmetrici */
@media (min-width: 1367px) {
  .lrb-booking-step-grid {
    align-items: start !important;
  }
  .lrb-booking-step {
    align-self: start !important;
    min-height: auto !important;
  }
  .lrb-booking-step .lrb-compact-toggle {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 10px !important;
    text-align: left !important;
    min-height: 44px !important;
    padding: 10px 12px !important;
  }
  .lrb-booking-step .lrb-compact-toggle input[type="checkbox"] {
    flex: 0 0 auto !important;
    margin: 0 !important;
  }
  .lrb-booking-step .lrb-compact-toggle span {
    min-width: 0 !important;
    text-align: left !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
  }
  .lrb-booking-step-1 .lrb-field,
  .lrb-booking-step-2 .lrb-field,
  .lrb-booking-step-3 .lrb-field {
    margin-bottom: 8px !important;
  }
  .lrb-booking-step-2 .lrb-form-section {
    margin-top: 8px !important;
  }
  .lrb-booking-step-2 .lrb-form-section:first-of-type {
    margin-top: 2px !important;
  }
  .lrb-booking-step-2 textarea#lrb_purpose {
    min-height: 78px !important;
  }
  .lrb-booking-step-3 .lrb-cost-estimate {
    margin-bottom: 12px !important;
  }
  .lrb-booking-step-3 .lrb-actions {
    margin-top: 6px !important;
  }
  .lrb-booking-step-3 .lrb-message {
    margin-bottom: 0 !important;
  }
  .lrb-calendar-info-grid {
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr) !important;
    gap: 12px !important;
  }
  .lrb-calendar-info-grid > .lrb-resource-legend-card,
  .lrb-calendar-info-grid > .lrb-upcoming-panel {
    min-height: 132px !important;
  }
  .lrb-calendar-info-grid > .lrb-operator-card,
  .lrb-calendar-info-grid > .lrb-security-card {
    min-height: 92px !important;
  }
  .lrb-calendar-info-grid > .lrb-operator-card:nth-child(3):last-child,
  .lrb-calendar-info-grid > .lrb-security-card:nth-child(3):last-child {
    grid-column: 1 / -1 !important;
  }
  .lrb-calendar-info-grid .lrb-resource-legend-inline .lrb-resource-legend {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  /* v1.9.26: stessa ragione della regola gemella piu' sopra — questa era la
     variante per gli schermi molto larghi, che rialzava l'altezza a 180px e
     quindi ricreava il contenitore che scorre. */
  .lrb-calendar-info-grid .lrb-upcoming-list {
    max-height: none !important;
  }
}


/* v1.7.42 - Fix desktop step form: checkbox compatti e niente testi verticali */
@media (min-width: 1367px) {
  .lrb-booking-step input[type="checkbox"] {
    width: 18px !important;
    min-width: 18px !important;
    max-width: 18px !important;
    height: 18px !important;
    min-height: 18px !important;
    flex: 0 0 18px !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  .lrb-booking-step .lrb-checkbox,
  .lrb-booking-step .lrb-compact-toggle,
  .lrb-booking-step .lrb-recurrence-toggle-row,
  .lrb-booking-step .lrb-deposit-confirm {
    display: grid !important;
    grid-template-columns: 18px minmax(0, 1fr) !important;
    column-gap: 10px !important;
    row-gap: 0 !important;
    align-items: center !important;
    justify-content: start !important;
    text-align: left !important;
    min-height: 0 !important;
    height: auto !important;
    padding: 10px 12px !important;
    margin: 0 0 10px !important;
    overflow: visible !important;
  }
  .lrb-booking-step .lrb-checkbox span,
  .lrb-booking-step .lrb-compact-toggle span,
  .lrb-booking-step .lrb-recurrence-toggle-row span,
  .lrb-booking-step .lrb-deposit-confirm span {
    display: block !important;
    min-width: 0 !important;
    width: auto !important;
    max-width: 100% !important;
    text-align: left !important;
    white-space: normal !important;
    word-break: normal !important;
    overflow-wrap: normal !important;
    line-height: 1.25 !important;
  }
  .lrb-booking-step .lrb-recurrence-inline-panel {
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    margin: 0 0 10px !important;
  }
  .lrb-booking-step .lrb-recurrence-inline-panel .lrb-recurrence-box {
    margin-top: 8px !important;
    padding: 10px !important;
  }
  .lrb-booking-step .lrb-form-section {
    margin: 4px 0 6px !important;
  }
  .lrb-booking-step .lrb-primary-booking-field {
    margin-bottom: 10px !important;
  }
  .lrb-booking-step-3 .lrb-checkbox:not(.lrb-deposit-confirm) {
    background: transparent !important;
    border: 0 !important;
    padding: 4px 0 8px !important;
  }
}


/* v1.7.43 - Desktop: allinea i tre passaggi prenotazione alla stessa altezza massima */
@media (min-width: 1367px) {
  .lrb-booking-step-grid {
    align-items: stretch !important;
  }
  .lrb-booking-step {
    align-self: stretch !important;
    height: 100% !important;
    min-height: 100% !important;
  }
  .lrb-booking-step-1,
  .lrb-booking-step-2,
  .lrb-booking-step-3 {
    display: flex !important;
    flex-direction: column !important;
  }
}

/* v1.7.44 - Rifiniture desktop step form: etichette centrate, tooltip contenuti, giorni ricorrenza allineati */
@media (min-width: 1367px) {
  .lrb-booking-step {
    overflow: visible !important;
  }
  .lrb-booking-step .lrb-field,
  .lrb-booking-step .lrb-advanced-select,
  .lrb-booking-step .lrb-recurrence-box,
  .lrb-booking-step .lrb-recurrence-days-field {
    overflow: visible !important;
  }
  .lrb-booking-step .lrb-field > label {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
    width: 100% !important;
    margin: 0 0 7px !important;
    text-align: center !important;
    line-height: 1.2 !important;
  }
  .lrb-booking-step .lrb-field > label .lrb-highlight-label {
    margin-left: auto !important;
    margin-right: auto !important;
    text-align: center !important;
  }
  .lrb-booking-step .lrb-form-section {
    display: flex !important;
    justify-content: center !important;
    text-align: center !important;
  }
  .lrb-booking-step .lrb-form-section > span {
    margin-left: auto !important;
    margin-right: auto !important;
  }
  .lrb-booking-step .lrb-inline-help {
    position: relative !important;
    overflow: visible !important;
    z-index: 30 !important;
  }
  .lrb-booking-step .lrb-inline-help .lrb-info-tip {
    position: relative !important;
    z-index: 31 !important;
  }
  .lrb-booking-step .lrb-inline-help .lrb-info-tip::after {
    left: 0 !important;
    right: auto !important;
    bottom: calc(100% + 8px) !important;
    width: min(320px, calc(100vw - 80px)) !important;
    max-width: min(320px, calc(100vw - 80px)) !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
    word-break: normal !important;
    transform: translateY(4px) !important;
    z-index: 9999 !important;
  }
  .lrb-booking-step .lrb-inline-help .lrb-info-tip:hover::after,
  .lrb-booking-step .lrb-inline-help .lrb-info-tip:focus::after {
    transform: translateY(0) !important;
  }
  .lrb-booking-step .lrb-weekdays-compact {
    display: grid !important;
    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;
    gap: 6px !important;
    align-items: stretch !important;
    width: 100% !important;
    max-width: 100% !important;
    overflow: visible !important;
  }
  .lrb-booking-step .lrb-weekdays-compact label {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 5px !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    min-height: 40px !important;
    padding: 7px 4px !important;
    margin: 0 !important;
    text-align: center !important;
    line-height: 1 !important;
    white-space: nowrap !important;
    box-sizing: border-box !important;
  }
  .lrb-booking-step .lrb-weekdays-compact input[type="checkbox"] {
    width: 16px !important;
    min-width: 16px !important;
    max-width: 16px !important;
    height: 16px !important;
    min-height: 16px !important;
    flex: 0 0 16px !important;
    margin: 0 !important;
  }
}

/* v1.7.45 - Rifiniture desktop form e giorni ricorrenza */
@media (min-width: 1367px) {
  .lrb-booking-step .lrb-field > label,
  .lrb-booking-step .lrb-recurrence-days-field > label {
    justify-content: center !important;
    text-align: center !important;
    width: 100% !important;
  }
  .lrb-booking-step .lrb-field input[type="text"],
  .lrb-booking-step .lrb-field input[type="tel"],
  .lrb-booking-step .lrb-field input[type="number"],
  .lrb-booking-step .lrb-field input[type="email"] {
    text-align: center !important;
  }
  .lrb-booking-step .lrb-field input::placeholder,
  .lrb-booking-step textarea::placeholder {
    text-align: center !important;
  }
  .lrb-booking-step .lrb-group-select-tip {
    position: static !important;
    margin-left: 6px !important;
    transform: none !important;
  }
  /* v1.9.37: il fumetto del gruppo e' escluso da questa regola — ha il suo
     ancoraggio al campo, qui sopra. Restava centrato sull'icona e usciva
     dallo schermo proprio sopra i 1367px, cioe' da PC. */
  .lrb-booking-step .lrb-info-tip:not(.lrb-group-select-tip)::after {
    left: 50% !important;
    right: auto !important;
    transform: translate(-50%, 4px) !important;
    width: min(300px, calc(100vw - 96px)) !important;
    max-width: min(300px, calc(100vw - 96px)) !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
    z-index: 99999 !important;
  }
  .lrb-booking-step .lrb-info-tip:not(.lrb-group-select-tip):hover::after,
  .lrb-booking-step .lrb-info-tip:not(.lrb-group-select-tip):focus::after {
    transform: translate(-50%, 0) !important;
  }
  /* Il fumetto del gruppo resta ancorato al campo anche qui. */
  .lrb-booking-step .lrb-group-select-tip { position: static !important; }
  .lrb-booking-step .lrb-group-select-tip::after {
    left: 0 !important; right: 0 !important;
    width: auto !important; max-width: none !important;
    transform: translateY(4px) !important;
  }
  .lrb-booking-step .lrb-group-select-tip:hover::after,
  .lrb-booking-step .lrb-group-select-tip:focus::after {
    transform: translateY(0) !important;
  }
  .lrb-booking-step .lrb-weekdays-compact {
    display: grid !important;
    grid-template-columns: repeat(7, 48px) !important;
    gap: 5px !important;
    justify-content: center !important;
    align-items: stretch !important;
    width: 100% !important;
  }
  .lrb-booking-step .lrb-weekdays-compact label {
    width: 48px !important;
    min-width: 48px !important;
    max-width: 48px !important;
    height: 50px !important;
    min-height: 50px !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 3px !important;
    padding: 5px 3px !important;
    font-size: 12px !important;
    line-height: 1 !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
  }
  .lrb-booking-step .lrb-weekdays-compact input[type="checkbox"] {
    width: 15px !important;
    min-width: 15px !important;
    max-width: 15px !important;
    height: 15px !important;
    min-height: 15px !important;
    flex: 0 0 15px !important;
  }
}


/* v1.7.46 - Rifinitura campo Gruppo/Privato e ricorrenza desktop */
@media (min-width: 1367px) {
  .lrb-booking-step .lrb-field > label[for="lrb_contact_name"],
  .lrb-booking-step .lrb-field > label[for="lrb_group_id"] {
    min-height: 42px !important;
    display: flex !important;
    align-items: flex-end !important;
    justify-content: center !important;
    text-align: center !important;
    width: 100% !important;
    line-height: 1.15 !important;
    margin-bottom: 7px !important;
  }
  .lrb-booking-step .lrb-field > label[for="lrb_group_id"] {
    gap: 6px !important;
    flex-wrap: nowrap !important;
  }
  /* v1.9.37 — Questo secondo blocco @media (min-width:1367px) riancorava il
     fumetto ALL'ICONA con `position: relative !important`, vincendo sulle
     regole scritte prima: e' lui che comandava da PC. Ora l'icona resta
     `static` e il fumetto e' ancorato al CAMPO, come sotto i 1367px. */
  .lrb-booking-step .lrb-group-select-tip {
    position: static !important;
    display: inline-flex !important;
    flex: 0 0 18px !important;
    margin-left: 4px !important;
    top: auto !important;
    transform: none !important;
    vertical-align: middle !important;
  }
  .lrb-booking-step .lrb-group-select-tip::after {
    left: 0 !important;
    right: 0 !important;
    bottom: calc(100% + 8px) !important;
    transform: translateY(4px) !important;
    width: auto !important;
    max-width: none !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
    text-align: left !important;
    z-index: 99999 !important;
  }
  .lrb-booking-step .lrb-group-select-tip:hover::after,
  .lrb-booking-step .lrb-group-select-tip:focus::after {
    transform: translateY(0) !important;
  }
  .lrb-booking-step .lrb-weekdays-compact {
    display: grid !important;
    grid-template-columns: repeat(7, minmax(42px, 1fr)) !important;
    gap: 4px !important;
    justify-content: stretch !important;
    align-items: stretch !important;
    width: 100% !important;
  }
  .lrb-booking-step .lrb-weekdays-compact label {
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    height: 42px !important;
    min-height: 42px !important;
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 4px !important;
    padding: 5px 4px !important;
    font-size: 11.5px !important;
    line-height: 1 !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
    white-space: nowrap !important;
  }
  .lrb-booking-step .lrb-weekdays-compact input[type="checkbox"] {
    width: 14px !important;
    min-width: 14px !important;
    max-width: 14px !important;
    height: 14px !important;
    min-height: 14px !important;
    flex: 0 0 14px !important;
  }
}

/* v1.7.48 - Verifica disponibilita pubblica login */
.lrb-public-availability{margin:14px 0 10px;border:1px solid rgba(23,52,107,.14);border-radius:18px;background:#f8fbff;overflow:hidden;text-align:left}
.lrb-public-availability summary{display:grid;grid-template-columns:34px 1fr 34px;grid-template-areas:"icon title spacer";gap:0 10px;align-items:center;padding:12px 14px;cursor:pointer;list-style:none;color:#17346b}
.lrb-public-availability summary::-webkit-details-marker{display:none}
.lrb-public-availability summary .dashicons{grid-area:icon;width:34px;height:34px;line-height:34px;text-align:center;border-radius:12px;background:#edf4ff;color:#17346b}
.lrb-public-availability summary strong{grid-area:title;font-size:18px;line-height:1.15;text-align:center;font-weight:800}
.lrb-public-availability summary small{display:none}
.lrb-public-availability-form{padding:0 14px 14px}
.lrb-public-availability-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}
.lrb-public-availability-grid label{display:flex;flex-direction:column;gap:4px;font-weight:700;color:#17346b;font-size:12px;text-align:left}
.lrb-public-availability-grid input,.lrb-public-availability-grid select{width:100%;min-height:38px;border-radius:10px;border:1px solid #d6deec;background:#fff;padding:8px 10px;box-sizing:border-box}
.lrb-public-availability-submit{width:100%;justify-content:center;text-align:center;margin:2px 0 8px}
.lrb-public-availability-result{display:none;border-radius:12px;padding:10px 12px;font-weight:700;line-height:1.35}
.lrb-public-availability-result:not(:empty){display:block}
.lrb-public-availability-result.ok{background:#ecfdf3;color:#146c2e;border:1px solid #bde9c8}
.lrb-public-availability-result.warn{background:#fff7e6;color:#8a5a00;border:1px solid #f6d38a}
.lrb-public-availability-result.error{background:#fdecec;color:#9f1d1d;border:1px solid #f1b6b6}
.lrb-public-availability-result small{display:block;margin-top:5px;font-weight:600;color:inherit}
.lrb-public-availability-note{margin:8px 0 0!important;color:#667085!important;font-size:12px!important;line-height:1.35!important;text-align:left!important}
@media(max-width:640px){.lrb-public-availability-grid{grid-template-columns:1fr}.lrb-public-availability summary{grid-template-columns:34px 1fr 34px}}


/* v1.7.49 - Fix Le mie prenotazioni e semaforo verifica disponibilita */
.lrb-portal #lrb-my-bookings .lrb-table-wrap{
  overflow-x:visible!important;
  max-width:100%!important;
}
.lrb-portal #lrb-my-bookings .lrb-table{
  width:100%!important;
  min-width:0!important;
  table-layout:fixed!important;
}
.lrb-portal #lrb-my-bookings .lrb-table th,
.lrb-portal #lrb-my-bookings .lrb-table td{
  padding:10px 8px!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
  word-break:normal!important;
  vertical-align:middle!important;
}
.lrb-portal #lrb-my-bookings .lrb-table th:nth-child(1),
.lrb-portal #lrb-my-bookings .lrb-table td:nth-child(1){width:18%!important;}
.lrb-portal #lrb-my-bookings .lrb-table th:nth-child(2),
.lrb-portal #lrb-my-bookings .lrb-table td:nth-child(2){width:34%!important;}
.lrb-portal #lrb-my-bookings .lrb-table th:nth-child(3),
.lrb-portal #lrb-my-bookings .lrb-table td:nth-child(3){width:24%!important;}
.lrb-portal #lrb-my-bookings .lrb-table th:nth-child(4),
.lrb-portal #lrb-my-bookings .lrb-table td:nth-child(4){width:10%!important;text-align:left!important;}
.lrb-portal #lrb-my-bookings .lrb-table th:nth-child(5),
.lrb-portal #lrb-my-bookings .lrb-table td:nth-child(5){width:14%!important;min-width:118px!important;}
.lrb-portal #lrb-my-bookings .lrb-row-actions{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:6px!important;
  flex-wrap:wrap!important;
  white-space:normal!important;
  writing-mode:horizontal-tb!important;
}
.lrb-portal #lrb-my-bookings .lrb-row-actions .lrb-mini-button,
.lrb-portal #lrb-my-bookings .lrb-row-actions button{
  width:auto!important;
  min-width:74px!important;
  max-width:100%!important;
  writing-mode:horizontal-tb!important;
  text-orientation:mixed!important;
  white-space:nowrap!important;
  line-height:1.2!important;
  padding:7px 10px!important;
  text-align:center!important;
}
.lrb-public-availability-result{
  position:relative!important;
  padding-left:42px!important;
}
.lrb-public-availability-result:before{
  content:"";
  position:absolute;
  left:12px;
  top:12px;
  width:16px;
  height:16px;
  border-radius:999px;
  border:2px solid rgba(255,255,255,.8);
  box-shadow:0 0 0 1px rgba(23,52,107,.12),0 4px 10px rgba(23,52,107,.12);
}
.lrb-public-availability-result.ok:before{background:#22c55e;}
.lrb-public-availability-result.warn:before{background:#f59e0b;}
.lrb-public-availability-result.error:before{background:#ef4444;}
@media(max-width:760px){
  .lrb-portal #lrb-my-bookings .lrb-table-wrap{overflow-x:auto!important;}
  .lrb-portal #lrb-my-bookings .lrb-row-actions{flex-direction:column!important;align-items:flex-start!important;}
}


/* v1.7.50 - 2FA visibilita utente e azioni prenotazioni compatte */
@media (min-width: 761px){
  .lrb-portal #lrb-my-bookings .lrb-table th:nth-child(1),
  .lrb-portal #lrb-my-bookings .lrb-table td:nth-child(1){width:18%!important;}
  .lrb-portal #lrb-my-bookings .lrb-table th:nth-child(2),
  .lrb-portal #lrb-my-bookings .lrb-table td:nth-child(2){width:32%!important;}
  .lrb-portal #lrb-my-bookings .lrb-table th:nth-child(3),
  .lrb-portal #lrb-my-bookings .lrb-table td:nth-child(3){width:24%!important;}
  .lrb-portal #lrb-my-bookings .lrb-table th:nth-child(4),
  .lrb-portal #lrb-my-bookings .lrb-table td:nth-child(4){width:10%!important;}
  .lrb-portal #lrb-my-bookings .lrb-table th:nth-child(5),
  .lrb-portal #lrb-my-bookings .lrb-table td:nth-child(5){width:16%!important;min-width:170px!important;}
  .lrb-portal #lrb-my-bookings .lrb-row-actions{
    flex-wrap:nowrap!important;
    justify-content:flex-end!important;
    align-items:center!important;
    gap:8px!important;
  }
  .lrb-portal #lrb-my-bookings .lrb-row-actions .lrb-mini-button{
    min-width:74px!important;
    max-width:none!important;
    padding:7px 10px!important;
    line-height:1.15!important;
    white-space:nowrap!important;
  }
  .lrb-portal #lrb-my-bookings .lrb-row-actions .lrb-mini-danger,
  .lrb-portal #lrb-my-bookings .lrb-row-actions .lrb-cancel{
    background:#dc3545!important;
    border-color:#dc3545!important;
    color:#fff!important;
  }
  .lrb-portal #lrb-my-bookings .lrb-row-actions .lrb-mini-danger:disabled{
    background:#fee2e2!important;
    border-color:#fecaca!important;
    color:#991b1b!important;
  }
}
.lrb-portal .lrb-security-wp2fa-card{overflow:visible!important;}
.lrb-portal .lrb-security-wp2fa-card .lrb-info-tip{position:relative!important;display:inline-flex!important;overflow:visible!important;}
@media (min-width: 901px){
  .lrb-portal .lrb-security-wp2fa-card .lrb-info-tip::before{display:none!important;content:none!important;}
  .lrb-portal .lrb-security-wp2fa-card .lrb-info-tip::after{
    display:block!important;
    content:attr(aria-label)!important;
    position:absolute!important;
    right:auto!important;
    left:50%!important;
    bottom:calc(100% + 8px)!important;
    width:260px!important;
    max-width:min(320px, calc(100vw - 48px))!important;
    padding:9px 10px!important;
    border-radius:12px!important;
    background:#14264d!important;
    color:#fff!important;
    font-size:12px!important;
    font-weight:600!important;
    line-height:1.35!important;
    box-shadow:0 12px 28px rgba(0,0,0,.18)!important;
    opacity:0!important;
    visibility:hidden!important;
    transform:translate(-50%, 4px)!important;
    z-index:9999!important;
    pointer-events:none!important;
    white-space:normal!important;
  }
  .lrb-portal .lrb-security-wp2fa-card .lrb-info-tip:hover::after,
  .lrb-portal .lrb-security-wp2fa-card .lrb-info-tip:focus::after{
    opacity:1!important;
    visibility:visible!important;
    transform:translate(-50%, 0)!important;
  }
}


/* v1.7.52 - Rifiniture tablet/PWA: prossime prenotazioni e titoli step */
@media (min-width: 761px) and (max-width: 1366px) {
  .lrb-booking-step-head {
    display: flex !important;
    align-items: center !important;
    gap: 9px !important;
    margin: 0 0 10px !important;
    color: var(--lrb-primary) !important;
    line-height: 1.1 !important;
  }
  .lrb-booking-step-head span {
    width: 28px !important;
    height: 28px !important;
    min-width: 28px !important;
    border-radius: 999px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    background: var(--lrb-primary) !important;
    color: #fff !important;
    font-weight: 900 !important;
    font-size: .9rem !important;
    box-shadow: 0 7px 16px rgba(39, 53, 131, .16) !important;
  }
  .lrb-booking-step-head strong {
    display: inline-block !important;
    font-size: 1rem !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
  }
  .lrb-calendar-card .lrb-upcoming-panel {
    overflow: hidden !important;
  }
  .lrb-calendar-card .lrb-upcoming-item {
    display: grid !important;
    grid-template-columns: 118px minmax(0, 1fr) auto !important;
    gap: 8px !important;
    align-items: center !important;
    overflow: hidden !important;
  }
  .lrb-calendar-card .lrb-upcoming-period {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 5px !important;
    width: 118px !important;
    min-width: 118px !important;
    max-width: 118px !important;
  }
  .lrb-calendar-card .lrb-upcoming-period .lrb-upcoming-date {
    min-width: 0 !important;
    width: auto !important;
    padding: 6px 5px !important;
    border-radius: 10px !important;
    text-align: center !important;
    background: rgba(247, 249, 252, .92) !important;
    overflow: hidden !important;
  }
  .lrb-calendar-card .lrb-upcoming-date small,
  .lrb-calendar-card .lrb-upcoming-date strong,
  .lrb-calendar-card .lrb-upcoming-date span {
    display: block !important;
    white-space: normal !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
    line-height: 1.05 !important;
  }
  .lrb-calendar-card .lrb-upcoming-date small {
    font-size: .56rem !important;
    letter-spacing: .02em !important;
  }
  .lrb-calendar-card .lrb-upcoming-date strong {
    font-size: .74rem !important;
  }
  .lrb-calendar-card .lrb-upcoming-date span {
    font-size: .68rem !important;
  }
  .lrb-calendar-card .lrb-upcoming-main {
    min-width: 0 !important;
    width: 100% !important;
    justify-self: stretch !important;
    padding-left: 2px !important;
  }
  .lrb-calendar-card .lrb-upcoming-main strong,
  .lrb-calendar-card .lrb-upcoming-main span {
    display: block !important;
    max-width: 100% !important;
    white-space: normal !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    overflow-wrap: anywhere !important;
    line-height: 1.15 !important;
  }
  .lrb-calendar-card .lrb-upcoming-actions {
    min-width: 66px !important;
    justify-self: end !important;
    grid-column: auto !important;
  }
  .lrb-calendar-card .lrb-upcoming-status {
    grid-column: auto !important;
    justify-self: end !important;
    white-space: nowrap !important;
  }
}

@media (min-width: 761px) and (max-width: 980px) {
  .lrb-calendar-card .lrb-upcoming-item {
    grid-template-columns: 108px minmax(0, 1fr) !important;
  }
  .lrb-calendar-card .lrb-upcoming-period {
    width: 108px !important;
    min-width: 108px !important;
    max-width: 108px !important;
  }
  .lrb-calendar-card .lrb-upcoming-actions,
  .lrb-calendar-card .lrb-upcoming-status {
    grid-column: 2 !important;
    justify-self: start !important;
  }
}


/* v1.7.52 - Calendario personale nel frontend e scheda utente backend più compatta */
.lrb-calendar-info-grid .lrb-calendar-link-card-compact {
  min-width: 0 !important;
}
.lrb-calendar-link-compact-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 8px;
  align-items: center;
}
.lrb-calendar-link-card-compact p {
  margin: 0 !important;
  font-size: .9rem;
}
.lrb-calendar-feed-box-compact {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) auto !important;
  gap: 8px !important;
  align-items: center !important;
}
.lrb-calendar-feed-box-compact input {
  width: 100% !important;
  min-width: 0 !important;
}
.lrb-calendar-feed-box-compact button,
.lrb-calendar-info-grid .lrb-calendar-link-card button {
  white-space: nowrap !important;
  padding-inline: 12px !important;
}

@media (min-width: 1367px) {
  .lrb-calendar-info-grid {
    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
    gap: 12px !important;
  }
  .lrb-calendar-info-grid > .lrb-resource-legend-card,
  .lrb-calendar-info-grid > .lrb-upcoming-panel {
    grid-column: span 3 !important;
  }
  .lrb-calendar-info-grid > .lrb-calendar-link-card,
  .lrb-calendar-info-grid > .lrb-operator-card,
  .lrb-calendar-info-grid > .lrb-security-card {
    grid-column: span 2 !important;
    min-height: 96px !important;
  }
  .lrb-calendar-info-grid .lrb-resource-legend-inline .lrb-resource-legend {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

@media (max-width: 1366px) and (min-width: 781px) {
  .lrb-calendar-info-grid {
    grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)) !important;
  }
  .lrb-calendar-info-grid > .lrb-calendar-link-card,
  .lrb-calendar-info-grid > .lrb-operator-card,
  .lrb-calendar-info-grid > .lrb-security-card {
    min-height: 86px !important;
  }
}

.lrb-calendar-info-grid .lrb-calendar-link-card h3,
.lrb-calendar-info-grid .lrb-operator-card h3,
.lrb-calendar-info-grid .lrb-security-card h3 {
  margin-bottom: 6px !important;
}

/* Backend utenti: limite sotto calendario, motivo sotto storico, senza box larghi inutili */
.lrb-user-card-body {
  grid-template-areas: "access groups" !important;
  align-items: stretch !important;
}
.lrb-user-access-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  grid-template-areas:
    "operator calendar history"
    "twofa recurrence reason" !important;
}
.lrb-user-access-operator { grid-area: operator; }
.lrb-user-access-calendar { grid-area: calendar; }
.lrb-user-access-history { grid-area: history; }
.lrb-user-access-2fa { grid-area: twofa; }
.lrb-user-access-recurrence-inline { grid-area: recurrence; }
.lrb-user-access-reason-inline { grid-area: reason; }
.lrb-user-access-recurrence-inline .lrb-user-operator-row,
.lrb-user-access-reason-inline .lrb-user-operator-row {
  align-items: center;
}
.lrb-user-access-recurrence-inline input.small-text {
  width: 54px !important;
  min-height: 24px !important;
}
.lrb-user-access-item {
  min-height: 76px !important;
}
@media (max-width: 1400px) {
  .lrb-user-card-body {
    grid-template-columns: 1fr !important;
    grid-template-areas: "access" "groups" !important;
  }
}
@media (max-width: 900px) {
  .lrb-user-access-grid {
    grid-template-columns: 1fr !important;
    grid-template-areas:
      "operator"
      "calendar"
      "recurrence"
      "history"
      "reason"
      "twofa" !important;
  }
}


/* v1.7.53 - Frontend desktop: allineamento riga Area/2FA/Calendario personale */
@media (min-width: 1367px) {
  .lrb-calendar-info-grid {
    align-items: stretch !important;
    grid-auto-rows: auto !important;
  }
  .lrb-calendar-info-grid > .lrb-calendar-link-card,
  .lrb-calendar-info-grid > .lrb-operator-card,
  .lrb-calendar-info-grid > .lrb-security-card {
    height: 100% !important;
    min-height: 126px !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: space-between !important;
    align-self: stretch !important;
    overflow: visible !important;
  }
  .lrb-calendar-info-grid > .lrb-operator-card .lrb-operator-compact-row,
  .lrb-calendar-info-grid > .lrb-security-card .lrb-security-compact-row,
  .lrb-calendar-info-grid > .lrb-calendar-link-card .lrb-calendar-link-compact-row {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    align-content: center !important;
  }
  .lrb-calendar-info-grid > .lrb-operator-card .lrb-button,
  .lrb-calendar-info-grid > .lrb-security-card .lrb-button,
  .lrb-calendar-info-grid > .lrb-calendar-link-card .lrb-button,
  .lrb-calendar-info-grid > .lrb-calendar-link-card button {
    min-height: 42px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
  }
  .lrb-calendar-info-grid > .lrb-operator-card p,
  .lrb-calendar-info-grid > .lrb-security-card p,
  .lrb-calendar-info-grid > .lrb-calendar-link-card p {
    margin: 0 !important;
  }
  .lrb-calendar-info-grid > .lrb-operator-card:empty,
  .lrb-calendar-info-grid > .lrb-security-card:empty,
  .lrb-calendar-info-grid > .lrb-calendar-link-card:empty {
    display: none !important;
  }
}

/* v1.7.68 - Azioni rapide operatore solo mobile/tablet */
.lrb-mobile-operator-tools{display:none!important}
@media (max-width:1366px){
  .lrb-operator-card .lrb-mobile-operator-tools{display:block!important;margin-top:12px;border-top:1px solid rgba(39,53,131,.12);padding-top:12px}
  .lrb-mobile-op-result{border-radius:12px;padding:8px 10px;margin:0 0 10px;font-size:.82rem;font-weight:700;text-align:center}
  .lrb-mobile-op-result.is-ok{background:#ecfdf3;color:#166534;border:1px solid #bbf7d0}
  .lrb-mobile-op-result.is-error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}
  .lrb-mobile-op-section{margin:0 0 12px;padding:10px;border:1px solid rgba(39,53,131,.13);border-radius:14px;background:#f8fafc}
  .lrb-mobile-op-section h4{margin:0 0 8px;color:#273583;font-size:.92rem;line-height:1.2;text-align:left}
  .lrb-mobile-op-list{display:grid;gap:8px}
  .lrb-mobile-op-item{display:grid;gap:5px;background:#fff;border:1px solid rgba(39,53,131,.10);border-radius:12px;padding:10px;text-align:left;box-shadow:0 6px 15px rgba(15,23,42,.05)}
  .lrb-mobile-op-item strong{display:block;color:#15245e;font-size:.86rem;line-height:1.2;word-break:break-word}
  .lrb-mobile-op-item span,.lrb-mobile-op-item small{display:block;color:#475569;font-size:.76rem;line-height:1.25;word-break:break-word}
  .lrb-mobile-op-item form{margin:5px 0 0}
  .lrb-mobile-op-btn{width:100%;border:0;border-radius:10px;background:#eef2ff;color:#273583;font-weight:800;padding:9px 10px;font-size:.82rem;line-height:1.1;cursor:pointer}
  .lrb-mobile-op-btn.primary{background:#273583;color:#fff}
  .lrb-mobile-op-empty{font-size:.78rem!important;color:#64748b!important;margin:0!important;text-align:left!important}
}
@media (min-width:1281px){.lrb-mobile-operator-tools{display:none!important}}


/* v1.7.69 - Area operatore mobile/tablet visibile e step form coerenti con desktop */
.lrb-mobile-only-operator-card{display:none!important;}
@media (max-width:1366px){
  .lrb-calendar-info-grid > .lrb-mobile-only-operator-card{display:block!important;}
  .lrb-operator-card .lrb-mobile-operator-tools{display:block!important;margin-top:12px;border-top:1px solid rgba(39,53,131,.12);padding-top:12px;}
}
@media (min-width:1367px){
  .lrb-mobile-only-operator-card,
  .lrb-mobile-operator-tools{display:none!important;}
}
@media (max-width:760px){
  .lrb-booking-step-grid{display:grid!important;grid-template-columns:1fr!important;gap:12px!important;align-items:stretch!important;}
  .lrb-booking-step{display:flex!important;flex-direction:column!important;gap:10px!important;min-width:0!important;padding:12px!important;border:1px solid rgba(39,53,131,.10)!important;border-radius:18px!important;background:linear-gradient(180deg, rgba(248,250,255,.95), rgba(255,255,255,.98))!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.65)!important;overflow:visible!important;}
  .lrb-booking-step-head{display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:9px!important;margin:0 0 10px!important;color:var(--lrb-primary)!important;line-height:1.1!important;text-align:left!important;}
  .lrb-booking-step-head span{width:30px!important;height:30px!important;min-width:30px!important;border-radius:999px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;background:var(--lrb-primary)!important;color:#fff!important;font-weight:900!important;font-size:.95rem!important;box-shadow:0 8px 18px rgba(39,53,131,.16)!important;}
  .lrb-booking-step-head strong{display:inline-block!important;font-size:1rem!important;font-weight:850!important;line-height:1.15!important;color:var(--lrb-primary)!important;white-space:normal!important;}
  .lrb-booking-step .lrb-form-section{margin:4px 0 8px!important;}
  .lrb-booking-step .lrb-field,
  .lrb-booking-step .lrb-form-row,
  .lrb-booking-step .lrb-checkbox,
  .lrb-booking-step .lrb-recurrence-inline-panel,
  .lrb-booking-step .lrb-cost-estimate,
  .lrb-booking-step .lrb-actions,
  .lrb-booking-step .lrb-message{min-width:0!important;max-width:100%!important;}
}
@media (min-width:761px) and (max-width:1366px){
  .lrb-booking-step{border:1px solid rgba(39,53,131,.10)!important;border-radius:18px!important;background:linear-gradient(180deg, rgba(248,250,255,.95), rgba(255,255,255,.98))!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.65)!important;}
}


/* v1.7.70 - click rapido Operatore mobile/tablet */
@media (max-width:1366px){
  #lrb-mobile-operator-card{scroll-margin-top:14px;}
  #lrb-mobile-operator-tools{scroll-margin-top:14px;}
  #lrb-mobile-operator-card.lrb-mobile-op-focus{outline:3px solid rgba(39,53,131,.24);outline-offset:3px;}
}
@media (min-width:1367px){
  #lrb-mobile-operator-card.lrb-mobile-op-focus{outline:none!important;}
}


/* v1.7.71 - pannello Operatore mobile/tablet vicino ai tab rapidi */
.lrb-mobile-operator-quick-card{display:none!important;}
@media (max-width:1280px){
  .lrb-mobile-operator-quick-card{display:block!important;margin:12px 0 14px!important;}
  .lrb-mobile-operator-quick-card .lrb-card-title{align-items:center!important;justify-content:center!important;text-align:center!important;}
  .lrb-mobile-operator-quick-card .lrb-card-title h3{margin:0!important;text-align:center!important;}
  .lrb-mobile-operator-quick-intro{text-align:center!important;margin:0 0 10px!important;color:#64748b!important;font-size:13px!important;}
  .lrb-calendar-info-grid .lrb-operator-card .lrb-mobile-operator-tools{display:none!important;}
  #lrb-mobile-operator-card-quick{scroll-margin-top:12px;}
  #lrb-mobile-operator-card-quick.lrb-mobile-op-focus{outline:3px solid rgba(39,53,131,.24);outline-offset:3px;}
}
@media (min-width:1281px){
  .lrb-mobile-operator-quick-card{display:none!important;}
  #lrb-mobile-operator-card-quick{display:none!important;}
}

/* v1.7.72 - rende operative le Azioni rapide operatore nel pannello mobile/tablet */
@media (max-width:1280px){
  .lrb-mobile-operator-quick-card .lrb-mobile-operator-tools{display:block!important;margin-top:10px!important;border-top:1px solid rgba(39,53,131,.12)!important;padding-top:12px!important;}
  .lrb-mobile-operator-quick-card .lrb-mobile-op-section{display:block!important;}
  .lrb-mobile-operator-quick-card .lrb-mobile-op-list{display:grid!important;}
  .lrb-mobile-operator-quick-card .lrb-mobile-op-btn{pointer-events:auto!important;position:relative!important;z-index:2!important;}
}
@media (min-width:1281px){
  .lrb-mobile-operator-quick-card{display:none!important;}
}

/* v1.7.73 - popup cauzione backend piu compatto */
.lrb-deposit-form-clean input[type=checkbox]{width:14px!important;height:14px!important;min-height:14px!important;padding:0!important;margin:0!important;flex:0 0 auto!important}.lrb-deposit-form-clean textarea{min-height:44px!important;max-height:60px!important}.lrb-deposit-form-clean .lrb-deposit-actions-row{gap:6px!important}

/* v1.7.74 - Le mie prenotazioni mobile/tablet come card, senza scroll orizzontale */
@media (max-width: 760px) {
  .lrb-portal #lrb-my-bookings {
    overflow: visible !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table-wrap {
    overflow: visible !important;
    max-width: 100% !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table,
  .lrb-portal #lrb-my-bookings .lrb-table thead,
  .lrb-portal #lrb-my-bookings .lrb-table tbody,
  .lrb-portal #lrb-my-bookings .lrb-table tr,
  .lrb-portal #lrb-my-bookings .lrb-table th,
  .lrb-portal #lrb-my-bookings .lrb-table td {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table thead {
    display: none !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr {
    margin: 0 0 12px !important;
    padding: 10px !important;
    border: 1px solid rgba(39, 53, 131, .14) !important;
    border-radius: 14px !important;
    background: #fff !important;
    box-shadow: 0 8px 18px rgba(15, 23, 42, .06) !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td {
    border: 0 !important;
    border-bottom: 1px solid rgba(39, 53, 131, .08) !important;
    padding: 7px 0 !important;
    font-size: 13px !important;
    line-height: 1.3 !important;
    text-align: left !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:last-child {
    border-bottom: 0 !important;
    padding-bottom: 0 !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td::before {
    display: block !important;
    margin: 0 0 3px !important;
    color: #273583 !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: .03em !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:nth-child(1)::before { content: "Spazi / Risorse"; }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:nth-child(2)::before { content: "Titolo"; }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:nth-child(3)::before { content: "Periodo"; }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:nth-child(4)::before { content: "Stato"; }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:nth-child(5)::before { content: "Azioni"; }
  .lrb-portal #lrb-my-bookings .lrb-row-actions {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 8px !important;
    flex-wrap: wrap !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-row-actions::before {
    flex: 0 0 100% !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-row-actions .lrb-mini-button,
  .lrb-portal #lrb-my-bookings .lrb-row-actions button {
    flex: 1 1 calc(50% - 8px) !important;
    min-width: 118px !important;
    max-width: 100% !important;
    min-height: 38px !important;
    padding: 9px 10px !important;
    font-size: 13px !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
    text-align: center !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-row-actions .lrb-mini-danger,
  .lrb-portal #lrb-my-bookings .lrb-row-actions .lrb-cancel {
    background: #dc3545 !important;
    border-color: #dc3545 !important;
    color: #fff !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-status-badge {
    display: inline-flex !important;
    max-width: 100% !important;
    white-space: normal !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-bookings-status-helper {
    display: grid !important;
    gap: 6px !important;
    text-align: left !important;
  }
}

/* v1.7.74 - pulsante rinvio QR dentro Gestione cauzione */
.lrb-deposit-actions-row .lrb-deposit-reminder-button {
  white-space: nowrap !important;
}


/* v1.7.75 - correzione mobile Le mie prenotazioni: card leggibili, badge e pulsanti orizzontali */
@media (max-width: 760px) {
  .lrb-portal #lrb-my-bookings .lrb-table-wrap {
    overflow-x: hidden !important;
    width: 100% !important;
    max-width: 100% !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    table-layout: auto !important;
    border-collapse: separate !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody {
    display: grid !important;
    width: 100% !important;
    gap: 10px !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr {
    display: grid !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    grid-template-columns: 1fr !important;
    gap: 0 !important;
    padding: 12px !important;
    margin: 0 !important;
    border: 1px solid rgba(39, 53, 131, .14) !important;
    border-radius: 16px !important;
    background: #fff !important;
    box-shadow: 0 8px 18px rgba(15, 23, 42, .05) !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td {
    display: grid !important;
    grid-template-columns: 88px minmax(0, 1fr) !important;
    align-items: start !important;
    column-gap: 10px !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    padding: 8px 0 !important;
    border: 0 !important;
    border-bottom: 1px solid rgba(39, 53, 131, .08) !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
    word-break: normal !important;
    font-size: 13px !important;
    line-height: 1.28 !important;
    text-align: left !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:last-child {
    border-bottom: 0 !important;
    padding-bottom: 0 !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td::before {
    display: block !important;
    margin: 1px 0 0 !important;
    min-width: 0 !important;
    color: #273583 !important;
    font-size: 10px !important;
    line-height: 1.15 !important;
    font-weight: 900 !important;
    text-transform: uppercase !important;
    letter-spacing: .035em !important;
    white-space: normal !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:nth-child(1)::before { content: "Spazi" !important; }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:nth-child(2)::before { content: "Titolo" !important; }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:nth-child(3)::before { content: "Periodo" !important; }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:nth-child(4)::before { content: "Stato" !important; }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:nth-child(5)::before { content: "Azioni" !important; }
  .lrb-portal #lrb-my-bookings .lrb-status-badge,
  .lrb-portal #lrb-my-bookings td:nth-child(4) span[class*="status-"] {
    display: inline-flex !important;
    width: auto !important;
    max-width: 100% !important;
    min-width: 0 !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 5px 9px !important;
    border-radius: 999px !important;
    font-size: 12px !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
    overflow-wrap: normal !important;
    word-break: keep-all !important;
    writing-mode: horizontal-tb !important;
    text-orientation: mixed !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-row-actions {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
    gap: 8px !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    align-items: stretch !important;
    justify-content: stretch !important;
    white-space: normal !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-row-actions::before { display: none !important; content: none !important; }
  .lrb-portal #lrb-my-bookings .lrb-row-actions .lrb-mini-button,
  .lrb-portal #lrb-my-bookings .lrb-row-actions button,
  .lrb-portal #lrb-my-bookings .lrb-row-actions a {
    display: inline-flex !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    min-height: 38px !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 9px 8px !important;
    border-radius: 10px !important;
    font-size: 13px !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
    writing-mode: horizontal-tb !important;
    text-orientation: mixed !important;
    box-sizing: border-box !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-row-actions .lrb-mini-danger,
  .lrb-portal #lrb-my-bookings .lrb-row-actions .lrb-cancel {
    background: #dc3545 !important;
    border-color: #dc3545 !important;
    color: #fff !important;
  }
}


/* v1.7.76 - fix definitivo mobile Le mie prenotazioni: niente colonne strette, niente testo verticale */
@media (max-width: 760px) {
  .lrb-portal #lrb-my-bookings,
  .lrb-portal #lrb-my-bookings * {
    writing-mode: horizontal-tb !important;
    text-orientation: mixed !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table-wrap {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: hidden !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table,
  .lrb-portal #lrb-my-bookings .lrb-table thead,
  .lrb-portal #lrb-my-bookings .lrb-table tbody,
  .lrb-portal #lrb-my-bookings .lrb-table tr,
  .lrb-portal #lrb-my-bookings .lrb-table th,
  .lrb-portal #lrb-my-bookings .lrb-table td {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    box-sizing: border-box !important;
    table-layout: auto !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table thead,
  .lrb-portal #lrb-my-bookings .lrb-table th {
    display: none !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody {
    margin: 0 !important;
    padding: 0 !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr {
    margin: 0 0 12px !important;
    padding: 12px !important;
    border: 1px solid rgba(39, 53, 131, .14) !important;
    border-radius: 16px !important;
    background: #fff !important;
    box-shadow: 0 8px 18px rgba(15, 23, 42, .05) !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td {
    position: relative !important;
    margin: 0 !important;
    padding: 9px 0 !important;
    border: 0 !important;
    border-bottom: 1px solid rgba(39, 53, 131, .08) !important;
    color: #0f172a !important;
    font-size: 14px !important;
    line-height: 1.35 !important;
    text-align: left !important;
    white-space: normal !important;
    overflow: visible !important;
    overflow-wrap: break-word !important;
    word-break: normal !important;
    hyphens: none !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:last-child {
    border-bottom: 0 !important;
    padding-bottom: 0 !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td::before {
    display: block !important;
    width: 100% !important;
    margin: 0 0 4px !important;
    padding: 0 !important;
    color: #273583 !important;
    font-size: 10px !important;
    line-height: 1.2 !important;
    font-weight: 900 !important;
    text-transform: uppercase !important;
    letter-spacing: .04em !important;
    white-space: normal !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:nth-child(1)::before { content: "Spazi / risorse" !important; }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:nth-child(2)::before { content: "Titolo" !important; }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:nth-child(3)::before { content: "Periodo" !important; }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:nth-child(4)::before { content: "Stato" !important; }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td:nth-child(5)::before { content: "Azioni" !important; }
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td > *,
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td span,
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td div,
  .lrb-portal #lrb-my-bookings .lrb-table tbody tr td small {
    max-width: 100% !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
    word-break: normal !important;
    writing-mode: horizontal-tb !important;
    text-orientation: mixed !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-status-badge,
  .lrb-portal #lrb-my-bookings td:nth-child(4) span,
  .lrb-portal #lrb-my-bookings td:nth-child(4) strong {
    display: inline-flex !important;
    width: auto !important;
    max-width: 100% !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 5px 10px !important;
    border-radius: 999px !important;
    font-size: 12px !important;
    line-height: 1.2 !important;
    white-space: normal !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-row-actions {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 8px !important;
    width: 100% !important;
    max-width: 100% !important;
  }
  .lrb-portal #lrb-my-bookings .lrb-row-actions::before { display: none !important; content: none !important; }
  .lrb-portal #lrb-my-bookings .lrb-row-actions .lrb-mini-button,
  .lrb-portal #lrb-my-bookings .lrb-row-actions button,
  .lrb-portal #lrb-my-bookings .lrb-row-actions a {
    display: flex !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    min-height: 40px !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 9px 8px !important;
    border-radius: 10px !important;
    font-size: 13px !important;
    line-height: 1.15 !important;
    text-align: center !important;
    white-space: nowrap !important;
    box-sizing: border-box !important;
  }
}

/* v1.7.77 - Le mie prenotazioni: vista mobile separata, tabella originale nascosta sotto 760px */
.lrb-portal #lrb-my-bookings .lrb-my-bookings-mobile{
  display:none;
}
/* v1.8.21 - Barra Ricarica nella vista mobile delle prenotazioni */
/* --- v1.10.46 — La ricerca dentro «Le mie prenotazioni» ------------------
   Una riga sola, che a telefono va a capo in due: la casella si prende tutto
   lo spazio e i pulsanti le stanno sotto. Niente riquadro, niente ombra: e'
   uno strumento, non una sezione, e deve pesare meno della tabella che
   filtra. */
.lrb-portal #lrb-my-bookings .lrb-mie-cerca{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
  margin:10px 0 4px;
}
/* v1.10.48 — Un'etichetta che si sente ma non si vede: sul telefono si
   prendeva una riga per dire quello che il segnaposto dentro la casella dice
   già, ma toglierla del tutto lascerebbe muta la casella per chi naviga con
   uno schermo che legge ad alta voce. */
.lrb-portal #lrb-my-bookings .lrb-sr{
  position:absolute;
  width:1px;height:1px;
  margin:-1px;padding:0;border:0;
  clip:rect(0 0 0 0);
  clip-path:inset(50%);
  overflow:hidden;
  white-space:nowrap;
}
/* La riga che non c'entra più con la ricerca: via dall'elenco, in tutte e due
   le viste. Si usa una classe e non l'attributo `hidden` perché `hidden` è
   già della freccia che apre le serie, e due padroni sullo stesso
   interruttore vogliono dire righe che riappaiono da sole. */
/* La specificità va ALZATA fino a superare la regola della scheda del
   telefono, che ha un ID e un !important e vive più in basso in questo
   foglio:
       .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-card{display:block!important}
   Con il solo `.lrb-fuori-ricerca` il confronto finiva pari e vinceva lei,
   perché viene dopo: la tabella si filtrava e le schede del telefono no — il
   difetto che si vede solo dal telefono. È la QUINTA volta che un `display`
   di questo foglio scavalca un modo di nascondere: barra indietro (1.9.68),
   velo delle finestrelle (beta5), riquadri della home, incontri delle serie
   (1.10.x) e adesso la ricerca. */
.lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-card.lrb-fuori-ricerca,
.lrb-portal #lrb-my-bookings tr.lrb-fuori-ricerca,
.lrb-portal #lrb-my-bookings .lrb-fuori-ricerca{display:none !important}
.lrb-portal #lrb-my-bookings .lrb-mie-cerca-esito{
  margin:2px 0 8px !important;
  font-size:12.5px !important;
  color:#5d6b82 !important;
}
.lrb-portal #lrb-my-bookings .lrb-mie-cerca-esito:empty{display:none}
.lrb-portal #lrb-my-bookings .lrb-mie-cerca-esito a{font-weight:700}
.lrb-portal #lrb-my-bookings .lrb-mie-cerca input[type="search"]{
  flex:1 1 220px;
  min-width:0;                 /* senza, un campo flessibile non si stringe mai sotto al suo contenuto */
  padding:7px 11px;
  border:1px solid #d7deea;
  border-radius:999px;
  font-size:14px;
  background:#fff;
}
.lrb-portal #lrb-my-bookings .lrb-mie-cerca input[type="search"]:focus{
  outline:2px solid #c8d4f5;
  outline-offset:1px;
  border-color:#9fb4e8;
}



.lrb-portal #lrb-my-bookings .lrb-my-bookings-reload-bar{
  display:flex;
  justify-content:flex-end;
  margin-bottom:2px;
}
.lrb-portal #lrb-my-bookings .lrb-reload-bookings{
  display:inline-flex;
  align-items:center;
  gap:6px;
}
.lrb-portal #lrb-my-bookings .lrb-reload-bookings .dashicons{
  font-size:16px;
  width:16px;
  height:16px;
  line-height:16px;
}
@media (max-width:760px){
  .lrb-portal #lrb-my-bookings .lrb-table-wrap{
    display:none!important;
  }
  .lrb-portal #lrb-my-bookings .lrb-my-bookings-mobile{
    display:flex!important;
    flex-direction:column!important;
    gap:12px!important;
    width:100%!important;
    max-width:100%!important;
    box-sizing:border-box!important;
  }
  .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-card{
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    box-sizing:border-box!important;
    margin:0!important;
    padding:13px!important;
    border:1px solid rgba(39,53,131,.14)!important;
    border-radius:16px!important;
    background:#fff!important;
    box-shadow:0 8px 18px rgba(15,23,42,.06)!important;
    overflow:hidden!important;
  }
  .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-head{
    display:flex!important;
    justify-content:flex-start!important;
    align-items:center!important;
    margin:0 0 9px!important;
  }
  .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-row{
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    box-sizing:border-box!important;
    padding:9px 0!important;
    border-top:1px solid rgba(39,53,131,.08)!important;
    color:#0f172a!important;
    text-align:left!important;
    white-space:normal!important;
    word-break:normal!important;
    overflow-wrap:break-word!important;
    writing-mode:horizontal-tb!important;
    text-orientation:mixed!important;
  }
  .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-row span{
    display:block!important;
    margin:0 0 4px!important;
    color:#273583!important;
    font-size:10px!important;
    line-height:1.2!important;
    font-weight:900!important;
    text-transform:uppercase!important;
    letter-spacing:.04em!important;
    white-space:normal!important;
    writing-mode:horizontal-tb!important;
  }
  .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-row strong,
  .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-row small{
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    color:#0f172a!important;
    font-size:14px!important;
    line-height:1.35!important;
    font-weight:650!important;
    white-space:normal!important;
    word-break:normal!important;
    overflow-wrap:break-word!important;
    writing-mode:horizontal-tb!important;
    text-orientation:mixed!important;
  }
  .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-row small{
    margin-top:5px!important;
    color:#475569!important;
    font-size:12px!important;
    font-weight:500!important;
  }
  .lrb-portal #lrb-my-bookings .lrb-my-bookings-mobile .lrb-status-badge{
    display:inline-flex!important;
    width:auto!important;
    max-width:100%!important;
    min-width:0!important;
    align-items:center!important;
    justify-content:center!important;
    padding:6px 10px!important;
    border-radius:999px!important;
    font-size:12px!important;
    line-height:1.15!important;
    white-space:nowrap!important;
    word-break:normal!important;
    writing-mode:horizontal-tb!important;
    text-orientation:mixed!important;
  }
  .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-actions{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
    width:100%!important;
    max-width:100%!important;
    margin-top:11px!important;
    padding-top:11px!important;
    border-top:1px solid rgba(39,53,131,.08)!important;
  }
  .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-actions .lrb-mini-button,
  .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-actions button,
  .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-actions .lrb-muted-action{
    display:flex!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    min-height:40px!important;
    align-items:center!important;
    justify-content:center!important;
    box-sizing:border-box!important;
    padding:9px 8px!important;
    border-radius:10px!important;
    font-size:13px!important;
    line-height:1.15!important;
    text-align:center!important;
    white-space:nowrap!important;
    writing-mode:horizontal-tb!important;
    text-orientation:mixed!important;
  }
  .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-actions .lrb-mini-danger,
  .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-actions .lrb-cancel{
    background:#dc3545!important;
    border-color:#dc3545!important;
    color:#fff!important;
  }
  .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-empty{
    padding:14px!important;
    border:1px solid rgba(39,53,131,.12)!important;
    border-radius:14px!important;
    background:#fff!important;
    color:#334155!important;
    font-size:14px!important;
  }
}

/* v1.7.86 - Telegram: card solo smartphone, filtri e permessi personali/operativi */

.lrb-telegram-smartphone-only{
  display:none!important;
}
.lrb-telegram-connect-card{
  margin:14px 0!important;
  padding:14px 16px!important;
  border-radius:18px!important;
}
.lrb-telegram-connect-card .lrb-card-title{
  margin-bottom:8px!important;
}
.lrb-telegram-connect-row{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  gap:12px!important;
  align-items:center!important;
}
.lrb-telegram-connect-copy p{
  margin:3px 0!important;
  line-height:1.35!important;
}
.lrb-telegram-connect-actions{
  display:flex!important;
  gap:8px!important;
  align-items:center!important;
  justify-content:flex-end!important;
  flex-wrap:wrap!important;
}
.lrb-telegram-connect-actions form{
  margin:0!important;
}
.lrb-telegram-filter-bar{
  display:flex!important;
  gap:8px!important;
  align-items:center!important;
  flex-wrap:wrap!important;
  margin:10px 0 12px!important;
  padding:10px!important;
  border:1px solid #e5e7eb!important;
  border-radius:10px!important;
  background:#f8fafc!important;
}
.lrb-telegram-filter-bar input[type="search"]{
  min-width:260px!important;
  max-width:420px!important;
  flex:1 1 260px!important;
}
.lrb-telegram-filter-bar select{
  min-width:150px!important;
}
.lrb-telegram-filter-count{
  color:#475569!important;
  font-size:12px!important;
  margin-left:auto!important;
}
.lrb-telegram-users-table td,
.lrb-telegram-users-table th{
  vertical-align:middle!important;
}

@media (max-width: 640px){
  .lrb-telegram-smartphone-only{
    display:block!important;
  }
}
@media (max-width: 782px){
  .lrb-telegram-connect-row{
    grid-template-columns:1fr!important;
  }
  .lrb-telegram-connect-actions{
    justify-content:stretch!important;
  }
  .lrb-telegram-connect-actions .lrb-button,
  .lrb-telegram-connect-actions button,
  .lrb-telegram-connect-actions form{
    width:100%!important;
  }
  .lrb-telegram-filter-count{
    width:100%!important;
    margin-left:0!important;
  }
}


/* v1.7.89 - Mostra/Nascondi password in registrazione e login */
.lrb-register-card .lrb-password-toggle-wrap,
.lrb-login-card .lrb-password-toggle-wrap {
  position: relative;
  width: 100%;
}
.lrb-register-card .lrb-password-toggle-wrap input[type="password"],
.lrb-register-card .lrb-password-toggle-wrap input[type="text"],
.lrb-login-card .lrb-password-toggle-wrap input[type="password"],
.lrb-login-card .lrb-password-toggle-wrap input[type="text"] {
  width: 100%;
  padding-right: 86px !important;
  box-sizing: border-box;
}
.lrb-register-card .lrb-password-toggle,
.lrb-login-card .lrb-password-toggle {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  border: 1px solid rgba(39, 53, 131, .18);
  background: #f8fafd;
  color: #273583;
  border-radius: 999px;
  padding: 6px 10px;
  font-size: 12px;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
}
.lrb-register-card .lrb-password-toggle:hover,
.lrb-register-card .lrb-password-toggle:focus,
.lrb-login-card .lrb-password-toggle:hover,
.lrb-login-card .lrb-password-toggle:focus {
  background: #eef3ff;
  outline: none;
}
@media (max-width: 520px) {
  .lrb-register-card .lrb-password-toggle-wrap input[type="password"],
  .lrb-register-card .lrb-password-toggle-wrap input[type="text"],
  .lrb-login-card .lrb-password-toggle-wrap input[type="password"],
  .lrb-login-card .lrb-password-toggle-wrap input[type="text"] {
    padding-right: 82px !important;
  }
  .lrb-register-card .lrb-password-toggle,
.lrb-login-card .lrb-password-toggle {
    right: 7px;
    padding: 6px 8px;
    font-size: 11px;
  }
}

/* v1.7.90 - Login password toggle non invasivo: nessun wrap DOM del campo password */
.lrb-login-card .lrb-login-password-toggle-row {
  width: 100%;
  max-width: 360px;
  margin: -6px auto 12px;
  display: flex;
  justify-content: flex-end;
}
.lrb-login-card .lrb-password-toggle-inline {
  position: static !important;
  transform: none !important;
  right: auto !important;
  top: auto !important;
  width: auto !important;
  min-height: 0 !important;
  border: 1px solid rgba(39, 53, 131, .18);
  background: #f8fafd;
  color: #273583;
  border-radius: 999px;
  padding: 7px 11px;
  font-size: 12px;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
  box-shadow: none !important;
}
.lrb-login-card .lrb-password-toggle-inline:hover,
.lrb-login-card .lrb-password-toggle-inline:focus {
  background: #eef3ff;
  outline: none;
}
@media (max-width: 520px) {
  .lrb-login-card .lrb-login-password-toggle-row {
    margin-top: -4px;
    margin-bottom: 12px;
  }
  .lrb-login-card .lrb-password-toggle-inline {
    padding: 7px 10px;
    font-size: 11px;
  }
}

/* v1.7.91 - stabilizzazione toggle password e link documenti */
.lrb-register-card .lrb-password-toggle-wrap {
  position: static !important;
  display: grid !important;
  grid-template-columns: 1fr auto;
  gap: 8px;
  align-items: center;
  width: 100%;
}
.lrb-register-card .lrb-password-toggle-wrap input[type="password"],
.lrb-register-card .lrb-password-toggle-wrap input[type="text"] {
  padding-right: 12px !important;
  min-width: 0;
}
.lrb-register-card .lrb-password-toggle,
.lrb-login-card .lrb-password-toggle-inline {
  position: static !important;
  transform: none !important;
  right: auto !important;
  top: auto !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  min-height: 38px;
  white-space: nowrap;
  z-index: 2;
  visibility: visible !important;
  opacity: 1 !important;
}
.lrb-login-card .lrb-login-password-toggle-row-fixed {
  width: 100%;
  max-width: 360px;
  margin: -4px auto 12px;
  display: flex !important;
  justify-content: flex-end;
}
@media (max-width: 520px) {
  .lrb-register-card .lrb-password-toggle-wrap {
    grid-template-columns: 1fr;
    gap: 7px;
  }
  .lrb-register-card .lrb-password-toggle,
  .lrb-login-card .lrb-password-toggle-inline {
    width: 100% !important;
    min-height: 40px;
  }
  .lrb-login-card .lrb-login-password-toggle-row-fixed {
    margin-top: -2px;
  }
}


/* v1.7.92 - icona occhio dentro i campi password e broadcast Telegram */
.lrb-register-card .lrb-password-toggle-wrap,
.lrb-login-card .lrb-password-toggle-wrap {
  position: relative !important;
  display: block !important;
  width: 100%;
}
.lrb-register-card .lrb-password-toggle-wrap input[type="password"],
.lrb-register-card .lrb-password-toggle-wrap input[type="text"],
.lrb-login-card .lrb-password-toggle-wrap input[type="password"],
.lrb-login-card .lrb-password-toggle-wrap input[type="text"] {
  width: 100%;
  padding-right: 52px !important;
  box-sizing: border-box;
}
.lrb-register-card .lrb-password-toggle.lrb-password-eye,
.lrb-login-card .lrb-password-toggle.lrb-password-eye {
  position: absolute !important;
  right: 8px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  width: 36px !important;
  height: 32px !important;
  min-height: 32px !important;
  padding: 0 !important;
  border-radius: 999px !important;
  border: 1px solid rgba(39,53,131,.18) !important;
  background: #f8fafd !important;
  color: #273583 !important;
  font-size: 16px !important;
  line-height: 1 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  cursor: pointer;
  z-index: 3;
}
.lrb-register-card .lrb-password-toggle.lrb-password-eye:hover,
.lrb-register-card .lrb-password-toggle.lrb-password-eye:focus,
.lrb-login-card .lrb-password-toggle.lrb-password-eye:hover,
.lrb-login-card .lrb-password-toggle.lrb-password-eye:focus {
  background: #eef3ff !important;
  outline: none !important;
}
.lrb-login-card .login-password .lrb-password-toggle-wrap {
  max-width: 360px;
  margin: 0 auto;
}
.lrb-login-card .lrb-login-password-toggle-row-fixed {
  display: none !important;
}
.lrb-telegram-broadcast-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
  max-width: 760px;
}
.lrb-telegram-broadcast-grid select {
  width: 100%;
  max-width: 360px;
}
.lrb-telegram-broadcast-panel textarea {
  max-width: 860px;
}

/* v1.7.94 - Priorita prenotazione uniforme su PC, tablet/PWA e smartphone. */
.lrb-grid-main-balanced {
  scroll-margin-top: 12px;
}

/* v1.7.95 - Azioni rapide solo PC/tablet e card scelta spazio/attrezzatura */
.lrb-choice-card{
  margin:12px 0 14px;
  padding:14px 16px;
  border:1px solid rgba(39,53,131,.16);
  border-radius:18px;
  background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%);
  box-shadow:0 8px 22px rgba(15,23,42,.06);
}
.lrb-choice-card .lrb-field{margin:0 0 10px!important;}
.lrb-choice-card .lrb-field:last-child{margin-bottom:0!important;}
.lrb-choice-card-label{
  display:flex!important;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  margin:0 0 8px!important;
  font-weight:800!important;
  color:#273583!important;
}
.lrb-choice-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:54px;
  height:24px;
  padding:0 10px;
  border-radius:999px;
  background:#fff6da;
  color:#8a6f33;
  font-size:12px;
  font-weight:800;
  line-height:1;
  text-transform:uppercase;
  letter-spacing:.02em;
}
.lrb-choice-card .lrb-highlight-label{font-weight:800;}
.lrb-choice-card select{margin-bottom:0!important;}
.lrb-choice-card .lrb-compact-toggle{
  margin:8px 0 0!important;
  padding:10px 12px!important;
  border:1px solid rgba(39,53,131,.12)!important;
  border-radius:14px!important;
  background:#ffffff!important;
}
.lrb-choice-card .lrb-advanced-select{
  margin-top:10px!important;
  padding-top:10px!important;
  border-top:1px solid rgba(39,53,131,.10)!important;
}
@media (max-width:700px){
  .lrb-quick-actions-card{display:none!important;}
  .lrb-choice-card{padding:12px!important;border-radius:16px!important;margin:10px 0 12px!important;}
  .lrb-choice-card-label{gap:6px;font-size:.95rem!important;}
  .lrb-choice-badge{height:22px;min-width:48px;font-size:11px;}
}

/* v1.7.98 - Selettore data/ora prenotazioni con step reali da 30 minuti */
.lrb-booking-datetime-row .lrb-datetime-hidden {
  display: none !important;
}
.lrb-datetime-combo {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(112px, .75fr);
  gap: 10px;
  width: 100%;
  align-items: center;
}
.lrb-datetime-combo .lrb-date-part,
.lrb-datetime-combo .lrb-time-part {
  width: 100%;
  min-width: 0;
}
.lrb-datetime-combo .lrb-time-part {
  cursor: pointer;
  text-align: center;
  text-align-last: center;
}
.lrb-datetime-combo .lrb-time-part option {
  text-align: center;
}
@media (max-width: 520px) {
  .lrb-booking-datetime-row .lrb-field {
    width: 100%;
  }
  .lrb-datetime-combo {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    width: 100% !important;
    max-width: 100% !important;
  }
  .lrb-datetime-combo .lrb-date-part,
  .lrb-datetime-combo .lrb-time-part {
    min-height: 46px;
    font-size: 15px;
    box-sizing: border-box !important;
  }
  .lrb-datetime-combo .lrb-date-part {
    flex: 1 1 auto !important;
    width: calc(100% - 110px) !important;
    min-width: 0 !important;
    max-width: calc(100% - 110px) !important;
    text-align: center !important;
    text-align-last: center !important;
  }
  .lrb-datetime-combo .lrb-time-part {
    flex: 0 0 102px !important;
    width: 102px !important;
    min-width: 102px !important;
    max-width: 102px !important;
    padding-left: 8px !important;
    padding-right: 8px !important;
    text-align: center !important;
    text-align-last: center !important;
  }
}

/* v1.7.101 - Avviso disponibilita inline nel form prenotazione */
.lrb-inline-availability {
  margin: 10px 0 8px !important;
  text-align: center;
  line-height: 1.35;
}
.lrb-inline-availability.lrb-inline-availability-checking {
  font-weight: 700;
}
@media (max-width: 700px) {
  .lrb-inline-availability {
    font-size: 13px;
    padding: 11px 12px;
  }
}


/* v1.7.102 - Correzione tooltip mobile e centratura select orari */
.lrb-datetime-combo .lrb-time-part {
  text-align: center !important;
  text-align-last: center !important;
}
@media (max-width: 640px) {
  .lrb-booking-form .lrb-advanced-select .lrb-inline-help,
  .lrb-booking-form .lrb-choice-card .lrb-inline-help {
    position: relative !important;
    overflow: visible !important;
    z-index: 60 !important;
  }
  .lrb-booking-form .lrb-advanced-select .lrb-inline-help .lrb-info-tip::after,
  .lrb-booking-form .lrb-choice-card .lrb-inline-help .lrb-info-tip::after {
    position: fixed !important;
    left: 14px !important;
    right: 14px !important;
    bottom: 18px !important;
    top: auto !important;
    width: auto !important;
    max-width: none !important;
    min-width: 0 !important;
    transform: none !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
    text-align: left !important;
    z-index: 999999 !important;
  }
  .lrb-booking-form .lrb-advanced-select .lrb-inline-help .lrb-info-tip:hover::after,
  .lrb-booking-form .lrb-advanced-select .lrb-inline-help .lrb-info-tip:focus::after,
  .lrb-booking-form .lrb-choice-card .lrb-inline-help .lrb-info-tip:hover::after,
  .lrb-booking-form .lrb-choice-card .lrb-inline-help .lrb-info-tip:focus::after {
    transform: none !important;
  }
}

/* v1.7.103 - Verifica pubblica a mezzore e calendario pubblico occupazioni opzionale */
.lrb-public-time-select{text-align:center;text-align-last:center;font-weight:700;color:#17346b}
/* =====================================================================
   v1.10.43 — Il pannello che apre una giornata del calendario
   ---------------------------------------------------------------------
   Sta attaccato al <body> e si posiziona rispetto alla FINESTRA: nessun
   contenitore con `overflow:hidden` — come quello del calendario, che ce l'ha
   per tenersi gli angoli tondi — puo' tagliarlo. Era quello il difetto:
   nell'ultima riga del mese il riquadro di FullCalendar usciva dal bordo e
   veniva mozzato.
   Su telefono si comporta come un foglio che sale dal basso: ci si arriva col
   pollice, e il margine di sicurezza tiene conto della barra di sistema.
   ===================================================================== */
.lrb-giorno-velo[hidden]{display:none !important}
.lrb-giorno-velo{position:fixed;inset:0;z-index:10000;background:rgba(14,22,40,.45);
  display:flex;align-items:center;justify-content:center;padding:16px}
.lrb-giorno-card{background:#fff;border-radius:18px;width:min(420px,100%);max-height:min(76vh,560px);
  display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 60px rgba(10,20,40,.35)}
.lrb-giorno-head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid #e6ecf5}
.lrb-giorno-head h3{margin:0;font-size:15.5px;line-height:1.25;color:#17346b;font-weight:800}
.lrb-giorno-chiudi{margin-left:auto;flex:0 0 auto;width:34px;height:34px;border:0;border-radius:10px;
  background:#eef4ff;color:#17346b;font-size:22px;line-height:1;cursor:pointer}
.lrb-giorno-chiudi:hover{background:#dfeaff}
.lrb-giorno-corpo{padding:12px 16px 16px;overflow:auto}
.lrb-giorno-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.lrb-giorno-lista li{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;
  padding:10px 12px;border:1px solid #e6ecf5;border-radius:12px;background:#f8fbff}
.lrb-giorno-ora{font-weight:800;color:#17346b;font-variant-numeric:tabular-nums;white-space:nowrap}
.lrb-giorno-cosa{color:#475467;flex:1 1 140px;min-width:0;overflow-wrap:anywhere}
.lrb-giorno-vuoto{margin:0;color:#475467}
/* Col pannello aperto la pagina sotto non si trascina: su telefono, scorrendo
   dentro l'elenco, si finiva per muovere la pagina dietro. */
body.lrb-giorno-aperto{overflow:hidden}
@media(max-width:560px){
  .lrb-giorno-velo{align-items:flex-end;padding:0}
  .lrb-giorno-card{width:100%;max-height:82vh;border-radius:18px 18px 0 0;
    padding-bottom:env(safe-area-inset-bottom,0px)}
}

.lrb-public-occupancy{margin:14px 0 10px;border:1px solid rgba(23,52,107,.14);border-radius:18px;background:#f8fbff;overflow:hidden;text-align:left}
.lrb-public-occupancy summary{display:grid;grid-template-columns:34px 1fr 34px;grid-template-areas:"icon title spacer";gap:0 10px;align-items:center;padding:12px 14px;cursor:pointer;list-style:none;color:#17346b}
.lrb-public-occupancy summary::-webkit-details-marker{display:none}
.lrb-public-occupancy summary .dashicons{grid-area:icon;width:34px;height:34px;line-height:34px;text-align:center;border-radius:12px;background:#edf4ff;color:#17346b}
.lrb-public-occupancy summary strong{grid-area:title;font-size:18px;line-height:1.15;text-align:center;font-weight:800}
.lrb-public-occupancy-note{margin:0 14px 10px!important;color:#667085!important;font-size:12px!important;line-height:1.35!important;text-align:left!important}
.lrb-public-occupancy-calendar{padding:0 12px 14px;background:#fff}
.lrb-public-occupancy-calendar .fc{font-size:12px}.lrb-public-occupancy-calendar .fc-toolbar-title{font-size:16px}.lrb-public-occupancy-calendar .fc-event-title,.lrb-public-occupancy-calendar .fc-list-event-title{font-weight:700}
@media(max-width:640px){.lrb-public-occupancy summary{grid-template-columns:34px 1fr 34px}.lrb-public-occupancy-calendar{padding:0 8px 12px}.lrb-public-occupancy-calendar .fc-header-toolbar{gap:6px;flex-wrap:wrap}.lrb-public-occupancy-calendar .fc-toolbar-title{font-size:14px}}


/* v1.7.104 - Rifinitura grafica calendario pubblico e verifica sale */
.lrb-public-availability-result{
  font-size:13px!important;
  line-height:1.32!important;
  padding-top:8px!important;
  padding-bottom:8px!important;
}
.lrb-public-availability-result small{
  font-size:11.5px!important;
  line-height:1.3!important;
}
.lrb-public-availability-result:before{
  top:9px!important;
  width:13px!important;
  height:13px!important;
}
.lrb-public-occupancy{
  box-shadow:0 12px 28px rgba(23,52,107,.08);
}
.lrb-public-occupancy-note{
  padding:0 2px 2px!important;
}
.lrb-public-occupancy-calendar{
  margin:0 12px 14px;
  padding:12px!important;
  border:1px solid rgba(23,52,107,.10);
  border-radius:16px;
  background:#fff!important;
  overflow:hidden;
}
.lrb-public-occupancy-calendar .fc{
  font-size:12px!important;
  --fc-button-bg-color:#17346b;
  --fc-button-border-color:#17346b;
  --fc-button-hover-bg-color:#0f2a58;
  --fc-button-hover-border-color:#0f2a58;
  --fc-button-active-bg-color:#0f2a58;
  --fc-button-active-border-color:#0f2a58;
  --fc-today-bg-color:rgba(255,196,0,.16);
}
.lrb-public-occupancy-calendar .fc-header-toolbar{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  margin-bottom:10px!important;
}
.lrb-public-occupancy-calendar .fc-toolbar-chunk{
  display:flex!important;
  align-items:center!important;
  gap:5px!important;
  min-width:0!important;
}
.lrb-public-occupancy-calendar .fc-toolbar-title{
  font-size:16px!important;
  font-weight:800!important;
  color:#17346b!important;
  line-height:1.15!important;
  text-align:center!important;
  white-space:normal!important;
}
.lrb-public-occupancy-calendar .fc-button,
.lrb-public-occupancy-calendar .fc-button-primary{
  min-height:30px!important;
  padding:5px 8px!important;
  border-radius:10px!important;
  font-size:11.5px!important;
  line-height:1.1!important;
  font-weight:800!important;
  color:#fff!important;
  background:#17346b!important;
  border-color:#17346b!important;
  box-shadow:none!important;
  opacity:1!important;
}
.lrb-public-occupancy-calendar .fc-button:hover,
.lrb-public-occupancy-calendar .fc-button:focus,
.lrb-public-occupancy-calendar .fc-button-primary:hover,
.lrb-public-occupancy-calendar .fc-button-primary:focus{
  color:#fff!important;
  background:#0f2a58!important;
  border-color:#0f2a58!important;
}
.lrb-public-occupancy-calendar .fc-button .fc-icon,
.lrb-public-occupancy-calendar .fc-icon{
  color:#fff!important;
  fill:#fff!important;
  font-size:15px!important;
  line-height:1!important;
  opacity:1!important;
}
.lrb-public-occupancy-calendar .fc-prev-button,
.lrb-public-occupancy-calendar .fc-next-button{
  width:32px!important;
  min-width:32px!important;
  padding-left:0!important;
  padding-right:0!important;
}
.lrb-public-occupancy-calendar .fc-button-group{
  display:flex!important;
  gap:4px!important;
  flex-wrap:nowrap!important;
}
.lrb-public-occupancy-calendar .fc-button-group>.fc-button{
  margin:0!important;
}
.lrb-public-occupancy-calendar .fc-event,
.lrb-public-occupancy-calendar .fc-list-event-dot{
  border-color:#17346b!important;
}
.lrb-public-occupancy-calendar .fc-event{
  background:#17346b!important;
  border-radius:7px!important;
  padding:1px 2px!important;
}
.lrb-public-occupancy-calendar .fc-event-title,
.lrb-public-occupancy-calendar .fc-list-event-title{
  font-weight:700!important;
}
@media(max-width:760px){
  .lrb-public-occupancy-calendar{
    margin:0 8px 12px;
    padding:10px!important;
    border-radius:14px;
  }
  .lrb-public-occupancy-calendar .fc-header-toolbar{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:7px!important;
  }
  .lrb-public-occupancy-calendar .fc-toolbar-chunk{
    width:100%!important;
    justify-content:center!important;
    flex-wrap:wrap!important;
  }
  .lrb-public-occupancy-calendar .fc-toolbar-title{
    font-size:15px!important;
    width:100%!important;
  }
  .lrb-public-occupancy-calendar .fc-button,
  .lrb-public-occupancy-calendar .fc-button-primary{
    min-height:29px!important;
    padding:5px 7px!important;
    font-size:11px!important;
  }
  .lrb-public-occupancy-calendar .fc-prev-button,
  .lrb-public-occupancy-calendar .fc-next-button{
    width:30px!important;
    min-width:30px!important;
  }
  .lrb-public-occupancy-calendar .fc-button-group{
    max-width:100%!important;
    flex-wrap:wrap!important;
    justify-content:center!important;
  }
}
@media(max-width:420px){
  .lrb-public-occupancy-calendar .fc-button,
  .lrb-public-occupancy-calendar .fc-button-primary{
    font-size:10.5px!important;
    padding:5px 6px!important;
  }
  .lrb-public-occupancy-calendar .fc-toolbar-title{font-size:14px!important;}
}


/* v1.7.105 - Rifinitura calendario pubblico mobile e messaggi verifica sale */
.lrb-public-availability-result{
  font-size:13px!important;
  line-height:1.35!important;
  padding:8px 10px 8px 30px!important;
  border-radius:12px!important;
}
.lrb-public-availability-result:before{
  top:10px!important;
  width:10px!important;
  height:10px!important;
}
.lrb-public-occupancy-calendar{
  overflow:hidden!important;
}
.lrb-public-occupancy-calendar .fc{
  font-size:11px!important;
}
.lrb-public-occupancy-calendar .fc-header-toolbar{
  align-items:center!important;
}
.lrb-public-occupancy-calendar .fc-button,
.lrb-public-occupancy-calendar .fc-button-primary{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-width:34px!important;
  min-height:30px!important;
  padding:5px 8px!important;
  font-size:11px!important;
  white-space:nowrap!important;
}
.lrb-public-occupancy-calendar .fc-prev-button,
.lrb-public-occupancy-calendar .fc-next-button{
  font-size:18px!important;
  line-height:1!important;
  font-weight:900!important;
}
.lrb-public-occupancy-calendar .fc-col-header-cell-cushion,
.lrb-public-occupancy-calendar .fc-daygrid-day-number{
  font-size:12px!important;
  line-height:1.15!important;
  font-weight:800!important;
  color:#172033!important;
}
.lrb-public-occupancy-calendar .fc-daygrid-day-frame{
  min-height:58px!important;
  padding:2px!important;
}
.lrb-public-occupancy-calendar .fc-daygrid-day-events{
  margin:0 1px!important;
}
.lrb-public-occupancy-calendar .fc-daygrid-event,
.lrb-public-occupancy-calendar .fc-event{
  max-width:100%!important;
  min-height:15px!important;
  margin:1px 0!important;
  padding:0 3px!important;
  border-radius:7px!important;
  overflow:hidden!important;
  font-size:9.5px!important;
  line-height:1.25!important;
}
.lrb-public-occupancy-calendar .fc-event-main,
.lrb-public-occupancy-calendar .fc-event-title,
.lrb-public-occupancy-calendar .fc-event-time{
  overflow:hidden!important;
  text-overflow:clip!important;
  white-space:nowrap!important;
  font-size:9.5px!important;
  line-height:1.25!important;
}
.lrb-public-occupancy-calendar .fc-daygrid-dot-event .fc-event-title,
.lrb-public-occupancy-calendar .fc-daygrid-dot-event .fc-event-time{
  flex:0 1 auto!important;
  min-width:0!important;
}
@media(max-width:760px){
  .lrb-public-occupancy-calendar{
    margin:0 6px 12px!important;
    padding:8px!important;
  }
  .lrb-public-occupancy-calendar .fc-header-toolbar{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:6px!important;
    margin-bottom:8px!important;
  }
  .lrb-public-occupancy-calendar .fc-toolbar-chunk{
    width:100%!important;
    justify-content:center!important;
    flex-wrap:wrap!important;
  }
  .lrb-public-occupancy-calendar .fc-toolbar-chunk:first-child{
    order:2;
  }
  .lrb-public-occupancy-calendar .fc-toolbar-chunk:nth-child(2){
    order:1;
  }
  .lrb-public-occupancy-calendar .fc-toolbar-chunk:nth-child(3){
    order:3;
  }
  .lrb-public-occupancy-calendar .fc-toolbar-title{
    font-size:14px!important;
    margin:0!important;
  }
  .lrb-public-occupancy-calendar .fc-button,
  .lrb-public-occupancy-calendar .fc-button-primary{
    min-width:31px!important;
    min-height:28px!important;
    padding:4px 7px!important;
    border-radius:9px!important;
    font-size:10.5px!important;
  }
  .lrb-public-occupancy-calendar .fc-prev-button,
  .lrb-public-occupancy-calendar .fc-next-button{
    font-size:18px!important;
  }
  .lrb-public-occupancy-calendar .fc-col-header-cell-cushion,
  .lrb-public-occupancy-calendar .fc-daygrid-day-number{
    font-size:11.5px!important;
  }
  .lrb-public-occupancy-calendar .fc-daygrid-day-frame{
    min-height:54px!important;
  }
  .lrb-public-occupancy-calendar .fc-daygrid-event,
  .lrb-public-occupancy-calendar .fc-event,
  .lrb-public-occupancy-calendar .fc-event-main,
  .lrb-public-occupancy-calendar .fc-event-title,
  .lrb-public-occupancy-calendar .fc-event-time{
    font-size:8.8px!important;
  }
}
@media(max-width:420px){
  .lrb-public-occupancy-calendar .fc-button,
  .lrb-public-occupancy-calendar .fc-button-primary{
    font-size:10px!important;
    padding:4px 6px!important;
  }
  .lrb-public-occupancy-calendar .fc-daygrid-day-frame{
    min-height:50px!important;
  }
}


/* v1.7.106 - Correzione reale layout calendario pubblico desktop/mobile */
.lrb-public-occupancy{
  max-width:760px!important;
  margin:14px auto 10px!important;
}
.lrb-public-occupancy-calendar{
  max-width:720px!important;
  margin:0 auto 14px!important;
  box-sizing:border-box!important;
}
.lrb-public-occupancy-calendar .fc-header-toolbar{
  display:grid!important;
  grid-template-columns:1fr!important;
  justify-items:center!important;
  align-items:center!important;
  gap:7px!important;
  margin:0 0 10px!important;
}
.lrb-public-occupancy-calendar .fc-toolbar-chunk{
  width:100%!important;
  display:flex!important;
  justify-content:center!important;
  align-items:center!important;
  gap:6px!important;
  min-width:0!important;
  flex-wrap:wrap!important;
}
.lrb-public-occupancy-calendar .fc-toolbar-chunk:first-child{order:2!important;}
.lrb-public-occupancy-calendar .fc-toolbar-chunk:nth-child(2){order:1!important;}
.lrb-public-occupancy-calendar .fc-toolbar-chunk:nth-child(3){order:3!important;}
.lrb-public-occupancy-calendar .fc-toolbar-title{
  width:100%!important;
  max-width:100%!important;
  text-align:center!important;
  margin:0!important;
}
.lrb-public-occupancy-calendar .fc-button-group{
  width:auto!important;
  max-width:100%!important;
  display:inline-flex!important;
  justify-content:center!important;
  align-items:center!important;
  gap:5px!important;
  flex-wrap:wrap!important;
}
.lrb-public-occupancy-calendar .fc-prev-button,
.lrb-public-occupancy-calendar .fc-next-button{
  position:relative!important;
  width:34px!important;
  min-width:34px!important;
  height:30px!important;
  padding:0!important;
  font-size:0!important;
}
.lrb-public-occupancy-calendar .fc-prev-button .fc-icon,
.lrb-public-occupancy-calendar .fc-next-button .fc-icon{
  display:none!important;
}
.lrb-public-occupancy-calendar .fc-prev-button:before,
.lrb-public-occupancy-calendar .fc-next-button:before{
  display:block!important;
  color:#fff!important;
  font-size:22px!important;
  line-height:28px!important;
  font-weight:900!important;
  font-family:Arial, Helvetica, sans-serif!important;
  text-align:center!important;
}
.lrb-public-occupancy-calendar .fc-prev-button:before{content:"‹"!important;}
.lrb-public-occupancy-calendar .fc-next-button:before{content:"›"!important;}
.lrb-public-occupancy-calendar .fc-today-button,
.lrb-public-occupancy-calendar .fc-dayGridMonth-button,
.lrb-public-occupancy-calendar .fc-timeGridWeek-button,
.lrb-public-occupancy-calendar .fc-listWeek-button{
  min-width:auto!important;
  width:auto!important;
  padding-left:10px!important;
  padding-right:10px!important;
}
.lrb-public-occupancy-calendar .fc-view-harness{
  max-width:100%!important;
  overflow:hidden!important;
}
.lrb-public-occupancy-calendar .fc-scrollgrid,
.lrb-public-occupancy-calendar table{
  width:100%!important;
}
.lrb-public-occupancy-calendar .fc-daygrid-event,
.lrb-public-occupancy-calendar .fc-event{
  box-sizing:border-box!important;
  width:auto!important;
  max-width:calc(100% - 2px)!important;
}
@media(max-width:640px){
  .lrb-public-occupancy{
    max-width:calc(100vw - 18px)!important;
  }
  .lrb-public-occupancy-calendar{
    max-width:100%!important;
    margin:0 6px 12px!important;
    padding:7px!important;
  }
  .lrb-public-occupancy-calendar .fc-toolbar-chunk{
    gap:5px!important;
  }
  .lrb-public-occupancy-calendar .fc-prev-button,
  .lrb-public-occupancy-calendar .fc-next-button{
    width:32px!important;
    min-width:32px!important;
    height:29px!important;
  }
  .lrb-public-occupancy-calendar .fc-prev-button:before,
  .lrb-public-occupancy-calendar .fc-next-button:before{
    font-size:21px!important;
    line-height:27px!important;
  }
}


/* v1.7.107 - Solo ritocco combinazione colori calendario pubblico */
.lrb-public-occupancy-calendar .fc-button,
.lrb-public-occupancy-calendar .fc-button-primary{
  color:#ffffff!important;
  background:#274a7a!important;
  border-color:#274a7a!important;
}
.lrb-public-occupancy-calendar .fc-button:hover,
.lrb-public-occupancy-calendar .fc-button:focus,
.lrb-public-occupancy-calendar .fc-button-primary:hover,
.lrb-public-occupancy-calendar .fc-button-primary:focus,
.lrb-public-occupancy-calendar .fc-button-primary:not(:disabled).fc-button-active,
.lrb-public-occupancy-calendar .fc-button-primary:not(:disabled):active{
  color:#ffffff!important;
  background:#1d3b63!important;
  border-color:#1d3b63!important;
}
.lrb-public-occupancy-calendar .fc-prev-button:before,
.lrb-public-occupancy-calendar .fc-next-button:before{
  color:#ffffff!important;
}
.lrb-public-occupancy-calendar .fc-col-header,
.lrb-public-occupancy-calendar .fc-scrollgrid,
.lrb-public-occupancy-calendar .fc-theme-standard td,
.lrb-public-occupancy-calendar .fc-theme-standard th{
  border-color:#d7e1ee!important;
}
.lrb-public-occupancy-calendar .fc-day-today{
  background:#fffaf0!important;
}
.lrb-public-occupancy-calendar .fc-daygrid-event,
.lrb-public-occupancy-calendar .fc-event{
  background:#e8f0fb!important;
  border:1px solid #bdd1eb!important;
  color:#17346b!important;
}
.lrb-public-occupancy-calendar .fc-event-main,
.lrb-public-occupancy-calendar .fc-event-title,
.lrb-public-occupancy-calendar .fc-event-time,
.lrb-public-occupancy-calendar .fc-daygrid-dot-event .fc-event-title,
.lrb-public-occupancy-calendar .fc-daygrid-dot-event .fc-event-time{
  color:#17346b!important;
}
.lrb-public-occupancy-calendar .fc-daygrid-dot-event .fc-event-time,
.lrb-public-occupancy-calendar .fc-daygrid-dot-event .fc-event-title{
  font-weight:700!important;
}
.lrb-public-occupancy-calendar .fc-daygrid-event-dot,
.lrb-public-occupancy-calendar .fc-list-event-dot{
  border-color:#4580c2!important;
}
.lrb-public-occupancy-calendar .fc-list,
.lrb-public-occupancy-calendar .fc-list-table{
  border-color:#d7e1ee!important;
}
.lrb-public-occupancy-calendar .fc-list-day-cushion{
  background:#f5f8fc!important;
  color:#17346b!important;
}
.lrb-public-occupancy-calendar .fc-list-event:hover td{
  background:#e9f1fb!important;
}
.lrb-public-occupancy-calendar .fc-list-event td,
.lrb-public-occupancy-calendar .fc-list-event-title a,
.lrb-public-occupancy-calendar .fc-list-event-time{
  background:#f7fbff!important;
  color:#17346b!important;
  border-color:#d7e1ee!important;
}
.lrb-public-occupancy-calendar .fc-list-event-graphic,
.lrb-public-occupancy-calendar .fc-list-event-title,
.lrb-public-occupancy-calendar .fc-list-event-time{
  color:#17346b!important;
}
.lrb-public-occupancy-calendar .fc-list-empty{
  background:#f7fbff!important;
  color:#667085!important;
}

/* v1.7.108 - Area operatore frontend: solo prenotazioni da approvare */
.lrb-operator-frontend-card{
  margin:16px 0 18px!important;
  scroll-margin-top:16px;
}
.lrb-operator-frontend-intro{
  margin:0 0 12px!important;
  color:#64748b!important;
  font-size:13px!important;
  line-height:1.45!important;
}
.lrb-operator-frontend-empty{
  margin:8px 0 0!important;
  padding:12px 14px!important;
  border-radius:14px!important;
  background:#f6f8fb!important;
  color:#475569!important;
  font-weight:700!important;
}
.lrb-operator-frontend-table-wrap{
  width:100%;
  overflow-x:auto;
  border:1px solid #e2e8f0;
  border-radius:16px;
  background:#fff;
}
.lrb-operator-frontend-table{
  width:100%;
  border-collapse:separate;
  border-spacing:0;
  font-size:12px;
  color:#172033;
}
.lrb-operator-frontend-table th{
  text-align:left;
  padding:10px 9px;
  background:#f4f7fb;
  color:#17346b;
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.03em;
  border-bottom:1px solid #e2e8f0;
}
.lrb-operator-frontend-table td{
  vertical-align:top;
  padding:10px 9px;
  border-bottom:1px solid #edf2f7;
  line-height:1.35;
}
.lrb-operator-frontend-table tr:last-child td{border-bottom:0;}
.lrb-operator-frontend-table small{color:#64748b;font-size:11px;}
.lrb-operator-frontend-table details summary,
.lrb-operator-frontend-details summary,
.lrb-operator-reject-box summary{
  cursor:pointer;
  font-weight:800;
  color:#274a7a;
  list-style:none;
}
.lrb-operator-frontend-table details summary::-webkit-details-marker,
.lrb-operator-frontend-details summary::-webkit-details-marker,
.lrb-operator-reject-box summary::-webkit-details-marker{display:none;}
.lrb-operator-frontend-table details summary:before,
.lrb-operator-frontend-details summary:before,
.lrb-operator-reject-box summary:before{content:'+';display:inline-block;margin-right:5px;font-weight:900;}
.lrb-operator-frontend-table details[open] summary:before,
.lrb-operator-frontend-details[open] summary:before,
.lrb-operator-reject-box[open] summary:before{content:'-';}
.lrb-operator-frontend-actions{
  display:flex;
  gap:6px;
  flex-wrap:wrap;
  align-items:flex-start;
}
.lrb-operator-frontend-actions form{margin:0;}
.lrb-operator-frontend-actions .lrb-mobile-op-btn{
  width:auto;
  min-width:82px;
  padding:8px 10px;
  font-size:11px;
}
.lrb-mobile-op-btn.danger{
  background:#fff1f2!important;
  color:#b4232c!important;
  border:1px solid #fecdd3!important;
}
.lrb-operator-reject-box{
  position:relative;
  min-width:126px;
}
.lrb-operator-reject-box textarea{
  width:100%;
  min-width:190px;
  margin:6px 0;
  border-radius:10px;
  border:1px solid #d7e1ee;
  padding:7px 9px;
  font-size:12px;
  box-sizing:border-box;
}
.lrb-operator-frontend-cards{display:none;}
.lrb-operator-frontend-item{
  border:1px solid #e2e8f0;
  border-radius:16px;
  padding:12px;
  background:#fff;
  box-shadow:0 8px 22px rgba(15,23,42,.06);
}
.lrb-operator-frontend-item + .lrb-operator-frontend-item{margin-top:10px;}
.lrb-operator-frontend-item-head{
  display:flex;
  gap:8px;
  align-items:flex-start;
  justify-content:space-between;
  flex-wrap:wrap;
}
.lrb-operator-frontend-item-head strong{font-size:14px;color:#172033;line-height:1.25;}
.lrb-operator-frontend-meta{
  display:flex;
  gap:6px;
  flex-wrap:wrap;
  margin:8px 0;
}
.lrb-operator-frontend-meta span{
  display:inline-flex;
  border-radius:999px;
  background:#eef4ff;
  color:#17346b;
  padding:4px 8px;
  font-size:11px;
  font-weight:800;
}
.lrb-operator-frontend-item p{
  margin:6px 0!important;
  color:#334155!important;
  font-size:12.5px!important;
  line-height:1.35!important;
}
.lrb-operator-frontend-details{
  margin:8px 0 10px;
  padding:8px 10px;
  border-radius:12px;
  background:#f8fafc;
}
@media (max-width:1100px){
  .lrb-operator-frontend-table-wrap{display:none;}
  .lrb-operator-frontend-cards{display:block;}
  .lrb-operator-frontend-card{margin:14px 0!important;}
  .lrb-operator-frontend-actions{display:grid;grid-template-columns:1fr;gap:8px;}
  .lrb-operator-frontend-actions .lrb-mobile-op-btn{width:100%;min-width:0;}
  .lrb-operator-reject-box textarea{min-width:0;width:100%;}
}
@media (min-width:768px) and (max-width:1100px){
  .lrb-operator-frontend-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
  .lrb-operator-frontend-item + .lrb-operator-frontend-item{margin-top:0;}
}
@media (max-width:767px){
  .lrb-operator-frontend-card{margin:12px 0 14px!important;padding:14px!important;}
  .lrb-operator-frontend-intro{text-align:center!important;font-size:12.5px!important;}
  .lrb-operator-frontend-item{padding:11px;border-radius:15px;}
}


/* v1.7.109 - Menu operativita frontend senza duplicare mobile */
.lrb-operator-menu-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:10px;
  margin:12px 0 14px;
}
.lrb-operator-menu-tile{
  display:flex;
  flex-direction:column;
  gap:4px;
  min-height:76px;
  padding:12px;
  border:1px solid #dbe6f3;
  border-radius:15px;
  background:#f8fbff;
  color:#17346b!important;
  text-decoration:none!important;
  box-shadow:0 6px 16px rgba(15,23,42,.05);
}
.lrb-operator-menu-tile .dashicons{font-size:20px;width:20px;height:20px;color:#274a7a;}
.lrb-operator-menu-tile strong{font-size:13px;line-height:1.15;}
.lrb-operator-menu-tile small{font-size:11px;color:#64748b;font-weight:700;}
.lrb-operator-menu-tile:hover,.lrb-operator-menu-tile:focus{background:#eef6ff;border-color:#b8cce6;}
.lrb-operator-work-section{margin-top:14px;padding-top:12px;border-top:1px solid #e2e8f0;scroll-margin-top:16px;}
.lrb-operator-work-section h4{margin:0 0 10px;color:#17346b;font-size:15px;line-height:1.2;}
.lrb-operator-deposit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:10px;}
.lrb-operator-deposit-item{border:1px solid #e2e8f0;border-radius:16px;background:#fff;padding:12px;box-shadow:0 8px 22px rgba(15,23,42,.05);}
.lrb-operator-deposit-item>div{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap;margin-bottom:7px;}
.lrb-operator-deposit-item strong{color:#172033;line-height:1.25;}
.lrb-operator-deposit-item p{margin:6px 0!important;color:#334155!important;font-size:12.5px!important;line-height:1.35!important;}
.lrb-operator-deposit-item small{color:#64748b;}
.lrb-operator-deposit-item form{margin:8px 0 0;}
.lrb-operator-deposit-item .lrb-mobile-op-btn{width:100%;}
.lrb-operator-today-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;}
.lrb-operator-today-item{display:grid;gap:3px;padding:10px;border:1px solid #e2e8f0;border-radius:13px;background:#fff;}
.lrb-operator-today-item strong{color:#17346b;font-size:13px;}
.lrb-operator-today-item span{color:#172033;font-size:12px;font-weight:800;}
.lrb-operator-today-item small{color:#64748b;font-size:11px;}
@media(max-width:767px){
  .lrb-operator-frontend-card{padding:13px!important;}
  .lrb-operator-menu-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:4px;}
  .lrb-operator-menu-tile{min-height:70px;padding:10px;border-radius:14px;text-align:center;align-items:center;justify-content:center;}
  .lrb-operator-menu-tile .dashicons{display:none;}
  .lrb-operator-menu-tile strong{font-size:12px;}
  .lrb-operator-menu-tile small{font-size:10.5px;}
  .lrb-operator-frontend-work-panels{display:none!important;}
}

/* v1.7.110 - Operativita mobile ravvicinata con blocchi espandibili */
.lrb-operator-mobile-priority{
  display:none;
}
.lrb-operator-priority-fold{
  border:1px solid #dbe6f3;
  border-radius:16px;
  background:#f8fbff;
  margin:10px 0;
  overflow:hidden;
  box-shadow:0 8px 20px rgba(15,23,42,.05);
}
.lrb-operator-priority-fold>summary{
  cursor:pointer;
  list-style:none;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:12px 13px;
  color:#17346b;
  font-weight:900;
}
.lrb-operator-priority-fold>summary::-webkit-details-marker{display:none;}
.lrb-operator-priority-fold>summary:after{
  content:'+';
  width:24px;
  height:24px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  background:#e8f0fb;
  color:#17346b;
  font-weight:900;
}
.lrb-operator-priority-fold[open]>summary:after{content:'-';}
.lrb-operator-priority-fold>summary strong{
  margin-left:auto;
  min-width:28px;
  height:24px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  background:#274a7a;
  color:#fff;
  font-size:12px;
}
.lrb-operator-users-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
  gap:10px;
}
.lrb-operator-user-item{
  border:1px solid #e2e8f0;
  border-radius:16px;
  background:#fff;
  padding:12px;
  box-shadow:0 8px 22px rgba(15,23,42,.05);
}
.lrb-operator-user-item>div:first-child{
  display:flex;
  gap:8px;
  align-items:flex-start;
  flex-wrap:wrap;
  margin-bottom:7px;
}
.lrb-operator-user-item strong{color:#172033;line-height:1.25;}
.lrb-operator-user-item p{margin:6px 0!important;color:#334155!important;font-size:12.5px!important;line-height:1.35!important;}
.lrb-operator-user-item small{color:#64748b;}
@media(max-width:767px){
  .lrb-operator-frontend-intro{display:none!important;}
  .lrb-operator-mobile-priority{display:block!important;margin:8px 0 12px!important;}
  .lrb-operator-mobile-priority .lrb-operator-frontend-cards,
  .lrb-operator-mobile-priority .lrb-operator-deposit-grid,
  .lrb-operator-mobile-priority .lrb-operator-mobile-cards-force{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:9px!important;
    padding:0 10px 11px!important;
  }
  .lrb-operator-mobile-priority .lrb-operator-frontend-empty{
    margin:0 10px 11px!important;
  }
  .lrb-operator-menu-grid{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:6px!important;
    margin:8px 0 4px!important;
  }
  .lrb-operator-menu-tile{
    min-height:54px!important;
    padding:7px 5px!important;
    border-radius:12px!important;
  }
  .lrb-operator-menu-tile strong{font-size:10.5px!important;}
  .lrb-operator-menu-tile small{font-size:9px!important;line-height:1.15!important;}
  .lrb-operator-users-grid{grid-template-columns:1fr!important;}
}

/* v1.7.111 - Area operatore unica, compatta ed espandibile */
.lrb-operator-main-fold{
  display:block;
}
.lrb-operator-main-summary{
  cursor:pointer;
  list-style:none;
  display:grid;
  grid-template-columns:34px minmax(120px,1fr) auto 28px;
  gap:10px;
  align-items:center;
  padding:4px 0 2px;
  color:#17346b;
}
.lrb-operator-main-summary::-webkit-details-marker{display:none;}
.lrb-operator-main-summary:after{
  content:'+';
  width:28px;
  height:28px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  background:#e8f0fb;
  color:#17346b;
  font-weight:900;
  font-size:18px;
}
.lrb-operator-main-fold[open]>.lrb-operator-main-summary:after{content:'-';}
.lrb-operator-main-summary>.dashicons{
  width:34px;
  height:34px;
  line-height:34px;
  text-align:center;
  border-radius:12px;
  background:#edf4ff;
  color:#274a7a;
}
.lrb-operator-main-title{
  font-size:18px;
  line-height:1.15;
  font-weight:900;
  color:#17346b;
}
.lrb-operator-main-counts{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:5px;
}
.lrb-operator-main-counts em{
  display:inline-flex;
  align-items:center;
  border-radius:999px;
  padding:4px 8px;
  background:#f1f5f9;
  color:#274a7a;
  font-size:11px;
  line-height:1;
  font-style:normal;
  font-weight:800;
  white-space:nowrap;
}
.lrb-operator-main-body{
  padding-top:12px;
}
.lrb-operator-search-form{
  display:grid;
  grid-template-columns:minmax(220px,1fr) auto auto;
  gap:8px;
  align-items:end;
  margin:0 0 10px;
}
.lrb-operator-search-form label{
  display:flex;
  flex-direction:column;
  gap:5px;
  color:#17346b;
  font-size:12px;
  font-weight:800;
}
.lrb-operator-search-form input{
  width:100%;
  min-height:38px;
  border:1px solid #d7e1ee;
  border-radius:12px;
  padding:8px 10px;
  box-sizing:border-box;
  font-size:13px;
}
@media(max-width:767px){
  .lrb-calendar-info-grid #lrb-mobile-operator-card,
  #lrb-mobile-operator-card-quick,
  .lrb-mobile-operator-quick-card{
    display:none!important;
  }
  .lrb-operator-frontend-card{
    margin:10px 0 12px!important;
    padding:12px!important;
  }
  .lrb-operator-main-summary{
    grid-template-columns:30px minmax(0,1fr) 26px;
    gap:8px;
    padding:0;
  }
  .lrb-operator-main-summary>.dashicons{
    width:30px;
    height:30px;
    line-height:30px;
    border-radius:10px;
  }
  .lrb-operator-main-title{
    font-size:15px;
  }
  .lrb-operator-main-counts{
    grid-column:1/-1;
    justify-content:flex-start;
    gap:4px;
    margin-top:5px;
  }
  .lrb-operator-main-counts em{
    font-size:10px;
    padding:3px 7px;
  }
  .lrb-operator-main-summary:after{
    width:26px;
    height:26px;
    font-size:16px;
  }
  .lrb-operator-main-body{
    padding-top:8px;
  }
  .lrb-operator-search-form{
    grid-template-columns:1fr;
  }
  .lrb-operator-search-form .lrb-mobile-op-btn{
    width:100%;
    text-align:center;
  }
}


/* v1.7.112 - Area operatore piu compatta: toggle in alto a destra e sezioni richiudibili */
.lrb-operator-main-summary{
  grid-template-areas:"icon title counts toggle";
}
.lrb-operator-main-summary>.dashicons{grid-area:icon;}
.lrb-operator-main-title{grid-area:title;}
.lrb-operator-main-counts{grid-area:counts;}
.lrb-operator-main-summary:after{grid-area:toggle;justify-self:end;}
.lrb-operator-work-section{
  border:1px solid #dbe6f3!important;
  border-radius:16px!important;
  background:#f8fbff!important;
  padding:0!important;
  margin-top:10px!important;
  overflow:hidden!important;
}
.lrb-operator-work-section>h4{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:10px!important;
  margin:0!important;
  padding:11px 13px!important;
  background:#f8fbff!important;
  color:#17346b!important;
  cursor:pointer!important;
}
.lrb-operator-section-body{
  padding:0 12px 12px!important;
  background:#fff!important;
}
.lrb-operator-section-toggle{
  flex:0 0 auto;
  width:26px;
  height:26px;
  border:0;
  border-radius:999px;
  background:#e8f0fb;
  color:#17346b;
  font-weight:900;
  line-height:1;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
}
.lrb-operator-section-toggle[aria-expanded="true"]{background:#274a7a;color:#fff;}
.lrb-operator-section-body[hidden]{display:none!important;}
.lrb-operator-section-body .lrb-operator-today-list,
.lrb-operator-section-body .lrb-operator-deposit-grid,
.lrb-operator-section-body .lrb-operator-users-grid{
  margin-top:10px;
}
@media(max-width:767px){
  .lrb-operator-main-summary{
    grid-template-columns:30px minmax(0,1fr) 26px!important;
    grid-template-areas:"icon title toggle" "counts counts counts"!important;
    align-items:center!important;
  }
  .lrb-operator-main-counts{
    grid-area:counts!important;
    justify-content:flex-start!important;
    margin-top:5px!important;
  }
  .lrb-operator-main-summary:after{
    grid-area:toggle!important;
    align-self:start!important;
    justify-self:end!important;
  }
  .lrb-operator-priority-fold>summary{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto 26px!important;
    gap:8px!important;
  }
  .lrb-operator-priority-fold>summary span{justify-self:start;text-align:left;}
  .lrb-operator-priority-fold>summary strong{margin-left:0!important;}
  .lrb-operator-priority-fold>summary:after{grid-column:3;grid-row:1;justify-self:end;}
  .lrb-operator-work-section>h4{font-size:13px!important;text-align:left!important;}
  .lrb-operator-section-body{padding:0 10px 10px!important;}
  .lrb-operator-menu-grid{position:sticky;top:0;z-index:5;background:#fff;padding:6px 0 4px;}
}


/* v1.7.114 - Nuova prenotazione richiudibile solo su mobile per operatori */
.lrb-mobile-booking-toggle{
  display:none;
  margin-left:auto;
  flex:0 0 auto;
  width:30px;
  height:30px;
  border:0;
  border-radius:999px;
  background:#e8f0fb;
  color:#17346b;
  font-weight:900;
  line-height:1;
  align-items:center;
  justify-content:center;
  cursor:pointer;
}
.lrb-mobile-booking-toggle[aria-expanded="true"]{
  background:#274a7a;
  color:#fff;
}
@media(max-width:767px){
  .lrb-is-operator-user #lrb-form-card.lrb-form-card{
    position:relative;
    overflow:hidden;
  }
  .lrb-is-operator-user #lrb-form-card .lrb-booking-form>.lrb-card-title{
    cursor:pointer;
    align-items:center;
  }
  .lrb-is-operator-user #lrb-form-card .lrb-booking-form>.lrb-card-title h3{
    flex:1 1 auto;
  }
  .lrb-is-operator-user #lrb-form-card .lrb-mobile-booking-toggle{
    display:inline-flex;
  }
  .lrb-is-operator-user #lrb-form-card.lrb-mobile-booking-collapsed .lrb-booking-form>*:not(.lrb-card-title){
    display:none!important;
  }
  .lrb-is-operator-user #lrb-form-card.lrb-mobile-booking-collapsed{
    margin-bottom:12px!important;
  }
  .lrb-is-operator-user #lrb-form-card.lrb-mobile-booking-collapsed .lrb-card-title{
    margin-bottom:0!important;
  }
}


/* v1.7.115 - Prenotazione espandibile su tutti i device e disponibilita in area utente */
.lrb-user-availability-card{
  margin:12px 0 14px!important;
}
.lrb-user-availability-card .lrb-public-availability{
  margin:0!important;
}
.lrb-user-availability .lrb-public-availability-note{
  display:none!important;
}
.lrb-is-operator-user #lrb-form-card.lrb-form-card{
  position:relative;
  overflow:hidden;
}
.lrb-is-operator-user #lrb-form-card .lrb-booking-form>.lrb-card-title{
  cursor:pointer;
  align-items:center;
}
.lrb-is-operator-user #lrb-form-card .lrb-booking-form>.lrb-card-title h3{
  flex:1 1 auto;
}
.lrb-is-operator-user #lrb-form-card .lrb-mobile-booking-toggle{
  display:inline-flex!important;
}
.lrb-is-operator-user #lrb-form-card.lrb-mobile-booking-collapsed .lrb-booking-form>*:not(.lrb-card-title){
  display:none!important;
}
.lrb-is-operator-user #lrb-form-card.lrb-mobile-booking-collapsed{
  margin-bottom:12px!important;
}
.lrb-is-operator-user #lrb-form-card.lrb-mobile-booking-collapsed .lrb-card-title{
  margin-bottom:0!important;
}
@media(max-width:767px){
  .lrb-mobile-simple-notice{display:none!important;}
  .lrb-mobile-occupancy>.lrb-muted{display:none!important;}
  .lrb-user-availability-card{margin:10px 0 12px!important;}
  .lrb-user-availability-card .lrb-public-availability summary strong{font-size:15px!important;}
}

/* v1.7.116 - Disponibilita utente coerente con permessi e calendario mobile area utente */
.lrb-user-occupancy{
  margin:12px 0 14px!important;
}
.lrb-user-occupancy .lrb-public-occupancy-note{
  font-size:11.5px!important;
  text-align:center!important;
  margin:0 14px 10px!important;
}
@media(max-width:767px){
  .lrb-user-occupancy{
    margin:10px 0 12px!important;
    border-radius:16px!important;
  }
  .lrb-user-occupancy summary strong{
    font-size:15px!important;
  }
  .lrb-user-occupancy .lrb-public-occupancy-calendar{
    padding:7px!important;
    margin:0 6px 10px!important;
  }
}


/* v1.7.117 - Pulizia frontend operatori e disponibilita su desktop */
/* v1.10.0-beta31 — «Verifica disponibilita» torna visibile anche da PC.
   Diego: «solo da pc quando allargo tutta la scheda scompare verifica
   disponibilita». Non era un difetto nuovo: sopra i 1101px questa sezione era
   nascosta di proposito, con la motivazione «da PC il calendario e' gia'
   presente». Il riquadro nella cartella spariva di conseguenza — il codice
   nasconde la mattonella quando la sezione dietro non e' apribile, e faceva
   il suo lavoro.

   Quella scelta pero' e' del 2024, quando le due cose stavano una sopra
   l'altra nella stessa pagina. Ora «Verifica disponibilita» e' il PRIMO PASSO
   della procedura dentro «Gestione prenotazioni», e non fa la stessa cosa del
   calendario: il calendario mostra com'e' messo il mese, la verifica risponde
   a «questa sala e' libera giovedi' dalle 20:30 alle 22:30?». Una domanda che
   ci si fa anche da computer.

   Resta nascosta `.lrb-user-occupancy` (il calendario rapido delle
   occupazioni), che da PC e' davvero un doppione del calendario grande. */
@media (min-width:1101px){
  .lrb-user-occupancy{
    display:none!important;
  }
}
@media (max-width:767px){
  /* Su smartphone i riquadri menu non aggiungevano operativita reale: restano i blocchi espandibili Approvazioni/Cauzioni. */
  #lrb-operator-frontend .lrb-operator-menu-grid{
    display:none!important;
  }
}


/* v1.7.118 - Step mobile operatori: riepilogo Da fare e blocco Oggi */
.lrb-operator-todo-strip{
  display:none;
}
@media(max-width:767px){
  .lrb-operator-todo-strip{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:6px;
    margin:2px 0 9px;
  }
  .lrb-operator-todo-strip span{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:2px;
    min-height:44px;
    border:1px solid #dbe6f3;
    border-radius:13px;
    background:#f8fbff;
    color:#17346b;
    font-size:10.5px;
    line-height:1.15;
    font-weight:800;
    text-align:center;
  }
  .lrb-operator-todo-strip strong{
    font-size:16px;
    line-height:1;
    color:#274a7a;
  }
  .lrb-operator-priority-today .lrb-operator-today-list{
    padding:0 10px 11px!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
  }
  .lrb-operator-priority-today .lrb-operator-today-item{
    border-radius:13px!important;
    background:#fff!important;
  }
}


/* v1.7.119 - Utenti da attivare più fruibili su mobile */
.lrb-operator-user-mobile-card .lrb-operator-user-head{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  flex-wrap:wrap!important;
}
.lrb-operator-user-mobile-card textarea,
.lrb-operator-users-grid textarea{
  width:100%!important;
  min-height:76px!important;
  border:1px solid #d8e0ee!important;
  border-radius:12px!important;
  padding:10px 12px!important;
  font-size:14px!important;
  box-sizing:border-box!important;
}
.lrb-operator-mobile-users-fold .lrb-operator-users-grid{
  grid-template-columns:1fr!important;
}
@media(max-width:760px){
  .lrb-operator-mobile-users-fold{display:block!important;}
  #lrb-operator-users-list{display:none!important;}
  .lrb-operator-user-item{padding:12px!important;}
  .lrb-operator-user-item .lrb-operator-frontend-actions{gap:8px!important;}
}
@media(min-width:761px){
  .lrb-operator-mobile-users-fold{display:none!important;}
}


/* v1.7.120 - Scheda utente essenziale e frontend senza barra WP */
.lrb-operator-user-mini-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
  margin:8px 0 8px;
}
.lrb-operator-user-mini-grid span{
  display:flex;
  flex-direction:column;
  gap:2px;
  padding:8px 9px;
  border:1px solid #e2e8f0;
  border-radius:12px;
  background:#f8fbff;
  min-width:0;
}
.lrb-operator-user-mini-grid small{
  color:#64748b!important;
  font-size:10.5px!important;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.025em;
}
.lrb-operator-user-mini-grid strong{
  color:#17346b!important;
  font-size:12px!important;
  line-height:1.25!important;
  overflow-wrap:anywhere;
}
@media(max-width:760px){
  .lrb-operator-user-mini-grid{grid-template-columns:1fr!important;gap:6px!important;}
}


/* v1.7.121 - Navigazione alta mobile senza scroll orizzontale */
@media (max-width: 760px) {
  .lrb-portal .lrb-topbar,
  .lrb-portal.lrb-doc-page .lrb-topbar {
    overflow: visible !important;
  }
  .lrb-portal .lrb-nav,
  .lrb-portal.lrb-doc-page .lrb-nav,
  .lrb-doc-topbar .lrb-nav {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    width: 100% !important;
    max-width: 100% !important;
    gap: 7px !important;
    overflow: visible !important;
    overflow-x: visible !important;
    padding: 4px 0 0 !important;
    justify-content: stretch !important;
    align-items: stretch !important;
    white-space: normal !important;
    scrollbar-width: none !important;
  }
  .lrb-portal .lrb-nav::-webkit-scrollbar,
  .lrb-portal.lrb-doc-page .lrb-nav::-webkit-scrollbar,
  .lrb-doc-topbar .lrb-nav::-webkit-scrollbar {
    display: none !important;
  }
  .lrb-portal .lrb-nav a,
  .lrb-portal.lrb-doc-page .lrb-nav a,
  .lrb-doc-topbar .lrb-nav a {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
    line-height: 1.15 !important;
    font-size: 11.5px !important;
    padding: 8px 6px !important;
    border-radius: 12px !important;
    min-height: 38px !important;
    box-sizing: border-box !important;
  }
}
@media (max-width: 360px) {
  .lrb-portal .lrb-nav a,
  .lrb-portal.lrb-doc-page .lrb-nav a,
  .lrb-doc-topbar .lrb-nav a {
    font-size: 10.8px !important;
    padding-left: 4px !important;
    padding-right: 4px !important;
  }
}


/* v1.7.122 - Evidenza permessi frontend operatore */
.lrb-operator-permission-badges{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 10px;align-items:center}
.lrb-operator-permission-badges span{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#eef4ff;color:#17346b;border:1px solid #d7e7ff;padding:4px 9px;font-size:11px;font-weight:800;line-height:1.2}
.lrb-operator-permission-badges.is-compact{margin:6px 0 8px}
.lrb-operator-permission-badges.is-empty span{background:#fff7ed;color:#9a3412;border-color:#fed7aa}
@media(max-width:760px){.lrb-operator-permission-badges{gap:5px}.lrb-operator-permission-badges span{font-size:10.5px;padding:4px 8px}}


/* v1.7.123 - Profili guidati utenti frontend */
.lrb-operator-profile-tools{width:100%;margin-top:6px;border:1px solid #dbe4f0;border-radius:12px;background:#f8fbff;overflow:hidden}
.lrb-operator-profile-tools>summary{cursor:pointer;list-style:none;padding:8px 10px;font-weight:800;color:#17346b;display:flex;align-items:center;justify-content:space-between;gap:8px}
.lrb-operator-profile-tools>summary::-webkit-details-marker{display:none}
.lrb-operator-profile-tools>summary:after{content:'+';display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:999px;background:#e8f0fb;color:#17346b;font-weight:900}
.lrb-operator-profile-tools[open]>summary:after{content:'−'}
.lrb-operator-profile-note{margin:0 10px 8px!important;color:#667085!important;font-size:12px!important;line-height:1.35!important}
.lrb-operator-profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;padding:0 10px 10px}
.lrb-profile-btn{width:100%;border:1px solid #c9d7ea;background:#fff;color:#17346b;border-radius:12px;padding:8px 9px;text-align:left;font-weight:800;cursor:pointer;min-height:58px}
.lrb-profile-btn small{display:block;margin-top:3px;color:#667085;font-weight:600;font-size:11px;line-height:1.25}
.lrb-profile-btn:hover,.lrb-profile-btn:focus{background:#eef5ff;border-color:#8fb0d9}
@media(max-width:640px){.lrb-operator-profile-grid{grid-template-columns:1fr}.lrb-profile-btn{min-height:0}}

/* v1.7.128 - Utenti attivi frontend e mini dashboard mobile */
.lrb-active-user-card .lrb-operator-frontend-details{margin-top:8px;border:1px solid #dbe4f0;border-radius:12px;background:#fff;overflow:hidden}
.lrb-active-user-card .lrb-operator-frontend-details>summary{padding:9px 11px;font-weight:800;color:#17346b;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px;list-style:none}
.lrb-active-user-card .lrb-operator-frontend-details>summary::-webkit-details-marker{display:none}
.lrb-active-user-card .lrb-operator-frontend-details>summary:after{content:'+';display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;background:#e8f0fb;color:#17346b;font-weight:900}
.lrb-active-user-card .lrb-operator-frontend-details[open]>summary:after{content:'−'}
.lrb-active-user-card .lrb-operator-frontend-details form{padding:0 10px 10px;display:grid;gap:8px}
.lrb-front-check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:7px;margin:4px 0 8px}
.lrb-front-check-grid label{display:flex;align-items:center;gap:6px;border:1px solid #e1e8f2;background:#f8fbff;border-radius:10px;padding:7px 8px;font-size:12px;font-weight:700;color:#26324d}
.lrb-front-stack-label{display:grid;gap:4px;font-size:12px;font-weight:800;color:#17346b}
.lrb-front-stack-label input,.lrb-front-stack-label select{width:100%;min-height:38px;border-radius:10px;border:1px solid #cfd9e8;padding:7px 9px;box-sizing:border-box;background:#fff}
.lrb-mobile-mini-dashboard{border:1px solid #dbe7f5;background:#f8fbff;border-radius:14px;padding:10px;margin:8px 0 12px}
.lrb-mobile-mini-dashboard h4{margin:0 0 8px!important;color:#17346b;font-size:14px!important}
.lrb-mobile-mini-dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}
.lrb-mobile-mini-dashboard-grid span{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:#fff;border:1px solid #dbe4f0;border-radius:12px;padding:8px 6px;min-height:54px}
.lrb-mobile-mini-dashboard-grid strong{font-size:20px;color:#17346b;line-height:1}
.lrb-mobile-mini-dashboard-grid small{font-size:11px;color:#667085;font-weight:700;margin-top:4px}
@media(max-width:760px){.lrb-front-check-grid{grid-template-columns:1fr}.lrb-active-user-card .lrb-operator-frontend-details form{padding:0 9px 9px}.lrb-mobile-mini-dashboard{display:block}}
@media(min-width:761px){.lrb-mobile-mini-dashboard{max-width:720px}}


/* v1.7.129 - Mobile operator cleanup: mini-dashboard only and active users visible */
@media(max-width:760px){
  .lrb-operator-main-body > .lrb-operator-permission-badges,
  .lrb-operator-todo-strip,
  .lrb-operator-menu-grid{
    display:none!important;
  }
  .lrb-mobile-mini-dashboard{
    margin:8px 0 14px!important;
  }
  .lrb-mobile-mini-dashboard-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:8px!important;
  }
  .lrb-mobile-mini-dashboard-grid span{
    min-height:58px!important;
    padding:8px 6px!important;
  }
  .lrb-operator-mobile-active-users-fold .lrb-operator-search-form{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
    margin:8px 0 10px!important;
  }
  .lrb-operator-mobile-active-users-fold .lrb-operator-search-form label{
    display:flex!important;
    flex-direction:column!important;
    gap:5px!important;
    font-weight:800!important;
    color:#17346b!important;
  }
  .lrb-operator-mobile-active-users-fold .lrb-operator-search-form input{
    width:100%!important;
    min-height:42px!important;
    border-radius:12px!important;
    border:1px solid #d6deec!important;
    padding:9px 11px!important;
    box-sizing:border-box!important;
  }
  .lrb-active-user-card .lrb-operator-user-mini-grid{
    grid-template-columns:1fr 1fr!important;
  }
}


/* v1.7.131 - Login mobile simmetrico e guida visibile */
.lrb-login-card .login-username,
.lrb-login-card .login-password{
  width:100%!important;
  max-width:100%!important;
  margin-left:auto!important;
  margin-right:auto!important;
  box-sizing:border-box!important;
}
.lrb-login-card .login-username input[type="text"],
.lrb-login-card .login-password .lrb-password-toggle-wrap,
.lrb-login-card .login-password input[type="password"],
.lrb-login-card .login-password input[type="text"]{
  width:100%!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}
.lrb-login-card .login-password .lrb-password-toggle-wrap{
  margin:0!important;
}
.lrb-login-card .login-username label,
.lrb-login-card .login-password label{
  text-align:center!important;
  display:block!important;
  width:100%!important;
}
@media(max-width:760px){
  .lrb-login-card .login-username,
  .lrb-login-card .login-password{
    margin-bottom:14px!important;
  }
  .lrb-login-card .login-username input[type="text"],
  .lrb-login-card .login-password input[type="password"],
  .lrb-login-card .login-password input[type="text"]{
    min-height:52px!important;
    border-radius:14px!important;
    text-align:center!important;
    font-size:18px!important;
  }
  .lrb-login-card .login-password .lrb-password-toggle.lrb-password-eye{
    right:8px!important;
    width:42px!important;
    height:38px!important;
    min-height:38px!important;
  }
  .lrb-login-card .login-password .lrb-password-toggle-wrap input[type="password"],
  .lrb-login-card .login-password .lrb-password-toggle-wrap input[type="text"]{
    padding-left:52px!important;
    padding-right:52px!important;
  }
  .lrb-portal .lrb-nav,
  .lrb-portal.lrb-doc-page .lrb-nav,
  .lrb-doc-topbar .lrb-nav{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .lrb-portal .lrb-nav a,
  .lrb-portal.lrb-doc-page .lrb-nav a,
  .lrb-doc-topbar .lrb-nav a{
    display:flex!important;
    visibility:visible!important;
    opacity:1!important;
  }
}


/* v1.7.132 - Rifinitura mobile operatori e toggle simmetrici */
@media(max-width:760px){
  .lrb-mobile-mini-dashboard h4{
    font-size:13px!important;
    line-height:1.15!important;
    margin-bottom:7px!important;
  }
  .lrb-mobile-mini-dashboard-grid{
    gap:6px!important;
  }
  .lrb-mobile-mini-dashboard-grid span{
    min-height:50px!important;
    padding:7px 5px!important;
    border-radius:11px!important;
  }
  .lrb-mobile-mini-dashboard-grid strong{
    font-size:17px!important;
    line-height:1!important;
  }
  .lrb-mobile-mini-dashboard-grid small{
    font-size:10px!important;
    line-height:1.12!important;
    margin-top:3px!important;
  }
  .lrb-operator-work-section>h4,
  .lrb-operator-priority-fold>summary,
  .lrb-active-user-card .lrb-operator-frontend-details>summary,
  .lrb-operator-profile-tools>summary{
    font-size:12.5px!important;
    line-height:1.2!important;
  }
  .lrb-operator-main-title{
    font-size:14px!important;
    line-height:1.15!important;
  }
  .lrb-operator-main-counts em{
    font-size:9.8px!important;
    line-height:1.1!important;
  }
}
.lrb-operator-section-toggle,
.lrb-mobile-booking-toggle,
.lrb-operator-main-summary:after,
.lrb-operator-priority-fold>summary:after,
.lrb-active-user-card .lrb-operator-frontend-details>summary:after,
.lrb-operator-profile-tools>summary:after{
  width:30px!important;
  height:30px!important;
  min-width:30px!important;
  min-height:30px!important;
  border-radius:999px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  background:#edf4ff!important;
  color:#17346b!important;
  border:1px solid #cfe0f6!important;
  box-shadow:0 2px 6px rgba(23,52,107,.08)!important;
  font-size:18px!important;
  font-weight:900!important;
  line-height:1!important;
  text-align:center!important;
  padding:0!important;
}
.lrb-operator-section-toggle[aria-expanded="true"],
.lrb-mobile-booking-toggle[aria-expanded="true"],
.lrb-operator-main[open]>.lrb-operator-main-summary:after,
.lrb-operator-priority-fold[open]>summary:after,
.lrb-active-user-card .lrb-operator-frontend-details[open]>summary:after,
.lrb-operator-profile-tools[open]>summary:after{
  background:#17346b!important;
  color:#fff!important;
  border-color:#17346b!important;
}
@media(max-width:760px){
  .lrb-operator-section-toggle,
  .lrb-mobile-booking-toggle,
  .lrb-operator-main-summary:after,
  .lrb-operator-priority-fold>summary:after,
  .lrb-active-user-card .lrb-operator-frontend-details>summary:after,
  .lrb-operator-profile-tools>summary:after{
    width:28px!important;
    height:28px!important;
    min-width:28px!important;
    min-height:28px!important;
    font-size:17px!important;
  }
}


/* v1.7.133 - Uniforma pulsanti + / - delle card richiudibili */
.lrb-operator-main-summary:after,
.lrb-mobile-booking-toggle{
  width:30px!important;
  height:30px!important;
  min-width:30px!important;
  min-height:30px!important;
  max-width:30px!important;
  max-height:30px!important;
  flex:0 0 30px!important;
  box-sizing:border-box!important;
  border-radius:999px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  place-items:center!important;
  padding:0!important;
  margin:0!important;
  background:#edf4ff!important;
  color:#17346b!important;
  border:1px solid #cfe0f6!important;
  box-shadow:0 2px 6px rgba(23,52,107,.10)!important;
  font-size:18px!important;
  font-weight:900!important;
  line-height:28px!important;
  text-align:center!important;
  vertical-align:middle!important;
}
button.lrb-mobile-booking-toggle{
  appearance:none!important;
  -webkit-appearance:none!important;
  font-family:inherit!important;
}
.lrb-operator-main-fold[open]>.lrb-operator-main-summary:after,
.lrb-mobile-booking-toggle[aria-expanded="true"]{
  background:#17346b!important;
  color:#fff!important;
  border-color:#17346b!important;
}
.lrb-is-operator-user #lrb-form-card .lrb-booking-form>.lrb-card-title,
.lrb-operator-main-summary{
  align-items:center!important;
}
.lrb-is-operator-user #lrb-form-card .lrb-booking-form>.lrb-card-title h3,
.lrb-operator-main-title{
  min-width:0!important;
}
@media(max-width:760px){
  .lrb-operator-main-summary:after,
  .lrb-mobile-booking-toggle{
    width:30px!important;
    height:30px!important;
    min-width:30px!important;
    min-height:30px!important;
    max-width:30px!important;
    max-height:30px!important;
    flex-basis:30px!important;
    font-size:18px!important;
    line-height:28px!important;
  }
}


/* v1.7.134 - Allineamento desktop area operatore e login password */
/* Login: forza utente/password alla stessa geometria su tutti i device. */
.lrb-login-card .login-username,
.lrb-login-card .login-password{
  width:100%!important;
  max-width:100%!important;
  margin-left:auto!important;
  margin-right:auto!important;
  box-sizing:border-box!important;
}
.lrb-login-card .login-username input[type="text"],
.lrb-login-card .login-username input[type="email"],
.lrb-login-card .login-password .lrb-password-toggle-wrap,
.lrb-login-card .login-password input[type="password"],
.lrb-login-card .login-password input[type="text"]{
  width:100%!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}
.lrb-login-card .login-password .lrb-password-toggle-wrap{
  display:block!important;
  position:relative!important;
  margin:0!important;
}
.lrb-login-card .login-password .lrb-password-toggle-wrap input[type="password"],
.lrb-login-card .login-password .lrb-password-toggle-wrap input[type="text"]{
  display:block!important;
  margin:0!important;
}
.lrb-login-card .login-password .lrb-password-toggle.lrb-password-eye{
  position:absolute!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  right:8px!important;
  margin:0!important;
}
/* Desktop/tablet: allinea i tile dei permessi frontend senza cambiare mobile. */
@media(min-width:761px){
  .lrb-operator-main-fold,
  #lrb-operator-frontend{
    max-width:1040px!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }
  .lrb-operator-main-summary{
    grid-template-columns:42px minmax(0,1fr) auto 34px!important;
    column-gap:12px!important;
    align-items:center!important;
  }
  .lrb-operator-main-title{
    min-width:0!important;
    line-height:1.15!important;
  }
  .lrb-operator-main-counts{
    justify-content:flex-end!important;
    align-items:center!important;
    gap:7px!important;
  }
  .lrb-operator-permission-badges{
    justify-content:flex-start!important;
    align-items:center!important;
    gap:7px!important;
  }
  .lrb-operator-permission-badges span{
    min-height:30px!important;
    padding:5px 11px!important;
    box-sizing:border-box!important;
  }
  .lrb-front-check-grid{
    grid-template-columns:repeat(auto-fit,minmax(220px,1fr))!important;
    gap:10px!important;
    align-items:stretch!important;
  }
  .lrb-front-check-grid label{
    min-height:44px!important;
    padding:9px 11px!important;
    border-radius:12px!important;
    display:flex!important;
    align-items:center!important;
    justify-content:flex-start!important;
    line-height:1.25!important;
    box-sizing:border-box!important;
  }
  .lrb-front-check-grid label input[type="checkbox"]{
    flex:0 0 auto!important;
    margin:0 6px 0 0!important;
  }
  .lrb-active-user-card .lrb-operator-frontend-details form{
    gap:10px!important;
  }
  .lrb-front-stack-label{
    min-width:0!important;
  }
  .lrb-front-stack-label input,
  .lrb-front-stack-label select{
    min-height:42px!important;
  }
  .lrb-operator-profile-grid{
    grid-template-columns:repeat(auto-fit,minmax(190px,1fr))!important;
    align-items:stretch!important;
  }
  .lrb-profile-btn{
    min-height:42px!important;
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    text-align:center!important;
  }
  .lrb-operator-section-toggle,
  .lrb-mobile-booking-toggle,
  .lrb-operator-main-summary:after,
  .lrb-operator-priority-fold>summary:after,
  .lrb-active-user-card .lrb-operator-frontend-details>summary:after,
  .lrb-operator-profile-tools>summary:after{
    width:30px!important;
    height:30px!important;
    min-width:30px!important;
    min-height:30px!important;
    line-height:28px!important;
  }
}


/* v1.7.135 - Correzione desktop area operatore e allineamento definitivo login */
/* Login: campo utente e password identici, occhio interno senza alterare la larghezza. */
.lrb-login-card .login-username,
.lrb-login-card .login-password{
  width:100%!important;
  max-width:360px!important;
  margin-left:auto!important;
  margin-right:auto!important;
  box-sizing:border-box!important;
}
.lrb-login-card .login-username input[type="text"],
.lrb-login-card .login-username input[type="email"],
.lrb-login-card .login-password .lrb-password-toggle-wrap{
  width:100%!important;
  max-width:360px!important;
  margin-left:auto!important;
  margin-right:auto!important;
  box-sizing:border-box!important;
}
.lrb-login-card .login-password .lrb-password-toggle-wrap{
  position:relative!important;
  display:block!important;
}
.lrb-login-card .login-password .lrb-password-toggle-wrap input[type="password"],
.lrb-login-card .login-password .lrb-password-toggle-wrap input[type="text"]{
  display:block!important;
  width:100%!important;
  max-width:360px!important;
  margin:0!important;
  box-sizing:border-box!important;
  padding-left:52px!important;
  padding-right:52px!important;
  text-align:center!important;
}
.lrb-login-card .login-password .lrb-password-toggle.lrb-password-eye{
  position:absolute!important;
  top:50%!important;
  right:8px!important;
  transform:translateY(-50%)!important;
  margin:0!important;
  z-index:4!important;
}

/* Desktop/tablet only: area operatore ordinata a griglia allineata, senza toccare mobile. */
@media(min-width:761px){
  .lrb-operator-main-fold,
  #lrb-operator-frontend{
    width:100%!important;
    max-width:1240px!important;
    margin-left:auto!important;
    margin-right:auto!important;
    box-sizing:border-box!important;
  }
  .lrb-operator-main-body{
    width:100%!important;
    box-sizing:border-box!important;
  }
  .lrb-operator-main-summary{
    grid-template-columns:42px minmax(260px,1fr) minmax(320px,auto) 34px!important;
    align-items:center!important;
  }
  .lrb-mobile-mini-dashboard{
    width:100%!important;
    max-width:none!important;
    margin:10px 0 14px!important;
    padding:12px!important;
    box-sizing:border-box!important;
  }
  .lrb-mobile-mini-dashboard-grid{
    display:grid!important;
    grid-template-columns:repeat(7,minmax(0,1fr))!important;
    gap:10px!important;
    width:100%!important;
  }
  .lrb-mobile-mini-dashboard-grid span{
    min-width:0!important;
    min-height:64px!important;
    padding:9px 8px!important;
    box-sizing:border-box!important;
  }
  .lrb-mobile-mini-dashboard-grid strong{
    font-size:20px!important;
    line-height:1!important;
  }
  .lrb-mobile-mini-dashboard-grid small{
    font-size:11px!important;
    line-height:1.15!important;
  }
  .lrb-operator-menu-grid{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:12px!important;
    width:100%!important;
    margin:14px 0!important;
    align-items:stretch!important;
  }
  .lrb-operator-menu-tile{
    min-height:88px!important;
    height:100%!important;
    padding:14px!important;
    box-sizing:border-box!important;
    display:grid!important;
    grid-template-columns:24px minmax(0,1fr)!important;
    grid-template-rows:auto auto!important;
    column-gap:10px!important;
    row-gap:3px!important;
    align-items:center!important;
  }
  .lrb-operator-menu-tile .dashicons{
    grid-row:1 / span 2!important;
    grid-column:1!important;
    align-self:start!important;
    margin-top:2px!important;
  }
  .lrb-operator-menu-tile strong,
  .lrb-operator-menu-tile small{
    grid-column:2!important;
    min-width:0!important;
    text-align:left!important;
  }
  .lrb-operator-menu-tile strong{
    font-size:13px!important;
    line-height:1.2!important;
  }
  .lrb-operator-menu-tile small{
    font-size:11px!important;
    line-height:1.2!important;
  }
  .lrb-operator-frontend-work-panels{
    width:100%!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:12px!important;
  }
  .lrb-operator-work-section{
    width:100%!important;
    margin:0!important;
    padding:0!important;
    border:1px solid #dbe6f3!important;
    border-radius:16px!important;
    background:#f8fbff!important;
    overflow:hidden!important;
    box-sizing:border-box!important;
  }
  .lrb-operator-work-section>h4{
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    min-height:48px!important;
    padding:12px 16px!important;
    margin:0!important;
    border-bottom:1px solid #e4edf8!important;
    background:#f8fbff!important;
    font-size:15px!important;
    line-height:1.2!important;
  }
  .lrb-operator-work-section .lrb-operator-frontend-empty,
  .lrb-operator-work-section .lrb-operator-frontend-table-wrap,
  .lrb-operator-work-section .lrb-operator-deposit-grid,
  .lrb-operator-work-section .lrb-operator-today-list,
  .lrb-operator-work-section .lrb-operator-users-grid,
  .lrb-operator-work-section .lrb-operator-frontend-cards{
    margin:12px!important;
  }
  .lrb-operator-deposit-grid,
  .lrb-operator-users-grid,
  .lrb-operator-today-list{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:12px!important;
  }
  .lrb-front-check-grid{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:10px!important;
  }
  .lrb-front-check-grid label{
    min-height:44px!important;
    box-sizing:border-box!important;
  }
}
@media(min-width:1200px){
  .lrb-operator-menu-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;}
  .lrb-operator-deposit-grid,
  .lrb-operator-users-grid,
  .lrb-operator-today-list{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
}


/* v1.7.136 - Desktop area operatore simmetrica e legenda permessi backend */
@media(min-width:761px){
  #lrb-operator-frontend.lrb-card,
  #lrb-operator-frontend.lrb-operator-frontend-card{
    width:100%!important;
    max-width:none!important;
    margin:14px 0 18px!important;
    padding:18px!important;
    box-sizing:border-box!important;
    border-radius:20px!important;
    border:1px solid #dbe6f3!important;
    background:#fff!important;
    box-shadow:0 10px 30px rgba(15,23,42,.045)!important;
  }
  #lrb-operator-frontend .lrb-operator-main-fold{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    box-sizing:border-box!important;
  }
  #lrb-operator-frontend .lrb-operator-main-summary{
    width:100%!important;
    min-height:70px!important;
    padding:0!important;
    display:grid!important;
    grid-template-columns:42px minmax(0,1fr) auto 36px!important;
    gap:14px!important;
    align-items:center!important;
    box-sizing:border-box!important;
  }
  #lrb-operator-frontend .lrb-operator-main-summary>.dashicons{
    width:36px!important;
    height:36px!important;
    line-height:36px!important;
    border-radius:12px!important;
  }
  #lrb-operator-frontend .lrb-operator-main-title{
    font-size:18px!important;
    line-height:1.15!important;
    text-align:left!important;
  }
  #lrb-operator-frontend .lrb-operator-main-counts{
    display:flex!important;
    justify-content:flex-end!important;
    align-items:center!important;
    gap:8px!important;
    min-width:0!important;
  }
  #lrb-operator-frontend .lrb-operator-main-counts em{
    white-space:nowrap!important;
    min-height:24px!important;
    padding:4px 9px!important;
    border-radius:999px!important;
    background:#f1f5fb!important;
    color:#17346b!important;
    font-size:11px!important;
    font-style:normal!important;
    font-weight:800!important;
  }
  #lrb-operator-frontend .lrb-operator-main-summary:after{
    width:34px!important;
    height:34px!important;
    min-width:34px!important;
    min-height:34px!important;
    line-height:32px!important;
    justify-self:end!important;
    box-sizing:border-box!important;
  }
  #lrb-operator-frontend .lrb-operator-main-body{
    width:100%!important;
    padding-top:14px!important;
    border-top:1px solid #e6edf6!important;
    box-sizing:border-box!important;
  }
  #lrb-operator-frontend .lrb-mobile-mini-dashboard{
    width:100%!important;
    max-width:none!important;
  }
  #lrb-operator-frontend .lrb-operator-menu-grid,
  #lrb-operator-frontend .lrb-operator-frontend-work-panels,
  #lrb-operator-frontend .lrb-operator-work-section{
    max-width:none!important;
  }
}


/* ============================================================
 * Console operatore frontend (v2) - porting da Demo Portale Servizi.
 * Layout autonomo, separato dal backend WordPress. Vedi operator-console.php.
 * ============================================================ */
/* ===== v1.7.137.135 - console operatore desktop opzionale ===== */
.lrb-operator-console-page {
  background: #eef3fb !important;
}

.lrb-operator-console-shell {
  min-height: 100vh;
  padding: 32px 22px;
  box-sizing: border-box;
}

.lrb-operator-console {
  max-width: 1180px;
  margin: 0 auto;
}

.lrb-operator-console-hero {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  align-items: center;
  padding: 26px 28px;
  border-radius: 24px;
  background: linear-gradient(135deg, #071c44, #0b3d91);
  color: #fff;
  box-shadow: 0 18px 45px rgba(15, 23, 42, .18);
}

.lrb-operator-console-kicker {
  display: inline-flex;
  padding: 5px 10px;
  border-radius: 999px;
  background: rgba(255,255,255,.14);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.lrb-operator-console-hero h1 {
  margin: 10px 0 8px;
  font-size: clamp(30px, 5vw, 48px);
  line-height: 1;
  color: #fff;
}

.lrb-operator-console-hero p {
  margin: 0;
  max-width: 680px;
  color: rgba(255,255,255,.84);
  font-size: 16px;
  line-height: 1.55;
}

.lrb-operator-console-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: flex-end;
}

.lrb-operator-console-actions .lrb-button {
  white-space: nowrap;
}

.lrb-operator-console-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px;
  margin-top: 22px;
}

.lrb-operator-console-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-height: 150px;
  padding: 20px;
  border: 1px solid #dbe6f5;
  border-radius: 20px;
  background: #fff;
  color: #0b2559;
  text-decoration: none;
  box-shadow: 0 10px 24px rgba(15, 23, 42, .08);
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}

.lrb-operator-console-card:hover {
  transform: translateY(-2px);
  border-color: #0b63ce;
  box-shadow: 0 16px 34px rgba(15, 23, 42, .13);
}

.lrb-operator-console-card .dashicons {
  width: 42px;
  height: 42px;
  font-size: 32px;
  line-height: 42px;
  border-radius: 14px;
  background: #eef5ff;
  color: #0b63ce;
  text-align: center;
}

.lrb-operator-console-card strong {
  font-size: 18px;
  line-height: 1.2;
}

.lrb-operator-console-card small {
  color: #64748b;
  font-size: 13px;
  line-height: 1.45;
}

@media (max-width: 860px) {
  .lrb-operator-console-shell {
    padding: 16px;
  }

  .lrb-operator-console-hero {
    flex-direction: column;
    align-items: flex-start;
    border-radius: 20px;
  }

  .lrb-operator-console-actions {
    justify-content: flex-start;
  }
}


/* ===== v1.7.137.137 - login console operatore desktop ===== */
.lrb-operator-console-login {
  min-height: calc(100vh - 64px);
  display: grid;
  place-items: center;
  padding: 32px 16px;
  background:
    radial-gradient(1100px 520px at 50% -8%, rgba(11, 99, 206, .10), transparent 60%),
    linear-gradient(180deg, #f4f8ff 0%, #eef3fb 100%);
}

.lrb-operator-console-login-card {
  width: min(440px, calc(100vw - 32px));
  padding: 40px 38px 32px;
  border-radius: 22px;
  background: #ffffff;
  border: 1px solid #e1e9f6;
  box-shadow: 0 24px 60px rgba(11, 42, 102, .16);
  color: #0b2559;
}

.lrb-operator-console-login-card img {
  display: block;
  max-width: 168px;
  max-height: 84px;
  object-fit: contain;
  margin: 0 auto 20px;
}

.lrb-operator-console-login-card h1 {
  margin: 0 0 6px;
  text-align: center;
  color: #0b2559;
  font-size: 26px;
  font-weight: 800;
  letter-spacing: -.01em;
}

.lrb-operator-console-login-card p {
  text-align: center;
  color: #5a6b85;
  line-height: 1.55;
  font-size: 14px;
  margin: 0;
}

.lrb-operator-console-login-card form {
  margin-top: 24px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 16px;
  align-items: end;
}

.lrb-operator-console-login-card .login-username,
.lrb-operator-console-login-card .login-password {
  margin: 0;
}

.lrb-operator-console-login-card .login-remember,
.lrb-operator-console-login-card .login-submit {
  grid-column: 1 / -1;
}

.lrb-operator-console-login-card label {
  display: block;
  font-weight: 700;
  color: #0b2559;
  font-size: 13px;
  margin: 14px 0 6px;
}

.lrb-operator-console-login-card .login-username label,
.lrb-operator-console-login-card .login-password label {
  margin-top: 0;
}

.lrb-operator-console-login-card input[type="text"],
.lrb-operator-console-login-card input[type="password"] {
  width: 100%;
  height: 46px;
  line-height: 46px;
  padding: 0 14px;
  border: 1px solid #ccd8eb;
  border-radius: 11px;
  font-size: 15px;
  color: #0b2559;
  background: #fbfdff;
  box-sizing: border-box;
  text-align: center;
  transition: border-color .15s, box-shadow .15s, background .15s;
}

.lrb-operator-console-login-card input[type="text"]:focus,
.lrb-operator-console-login-card input[type="password"]:focus {
  outline: none;
  border-color: #0b63ce;
  background: #ffffff;
  box-shadow: 0 0 0 3px rgba(11, 99, 206, .14);
}

.lrb-operator-console-login-card .login-remember {
  margin: 16px 0 4px;
}

.lrb-operator-console-login-card .login-remember label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 500;
  font-size: 13.5px;
  margin: 0;
  color: #485365;
}

.lrb-operator-console-login-card .login-submit {
  text-align: center;
  margin-top: 22px;
}

.lrb-operator-console-login-card input[type="submit"] {
  width: 100%;
  height: 48px;
  border: 0;
  border-radius: 12px;
  background: linear-gradient(180deg, #1273e0 0%, #0b63ce 100%);
  color: #fff;
  font-weight: 800;
  font-size: 15px;
  cursor: pointer;
  box-shadow: 0 8px 18px rgba(11, 99, 206, .26);
  transition: filter .15s, transform .05s;
}

.lrb-operator-console-login-card input[type="submit"]:hover {
  filter: brightness(1.06);
}

.lrb-operator-console-login-card input[type="submit"]:active {
  transform: translateY(1px);
}

.lrb-operator-console-login-card .lrb-login-help {
  text-align: center;
  margin-top: 16px;
}

.lrb-operator-console-login-card .lrb-login-help a {
  color: #0b63ce;
  font-weight: 700;
  font-size: 13.5px;
  text-decoration: none;
}

.lrb-operator-console-login-card .lrb-login-help a:hover {
  text-decoration: underline;
}

.lrb-operator-console-login-note {
  margin-top: 18px !important;
  padding-top: 16px;
  border-top: 1px solid #eef2f8;
  font-size: 12px !important;
  color: #7a8aa3 !important;
  line-height: 1.5 !important;
}

@media (max-width: 520px) {
  .lrb-operator-console-login-card {
    padding: 30px 22px 26px;
  }
  .lrb-operator-console-login-card form {
    grid-template-columns: 1fr;
  }
}


/* Pallino colore risorsa */
.lrb-oc-dot{display:inline-block;width:11px;height:11px;border-radius:50%;vertical-align:middle;margin-right:3px;border:1px solid rgba(0,0,0,.12)}

/* Pulsante "Console operatore" nella topbar del portale (switch verso la console) */
.lrb-console-switch{display:inline-flex;align-items:center;gap:6px;background:#0b63ce;color:#fff !important;border-radius:9px;padding:7px 12px;font-weight:700;font-size:13px;text-decoration:none;line-height:1;white-space:nowrap;margin-right:10px;transition:filter .15s}
.lrb-console-switch:hover{filter:brightness(1.08)}
.lrb-console-switch .dashicons{font-size:16px;width:16px;height:16px}
@media (max-width:600px){
  .lrb-console-switch{padding:6px 10px;font-size:12px}
  .lrb-console-switch .dashicons{font-size:15px;width:15px;height:15px}
}

/* CTA verso la console operatore (mostrata nel portale quando la console è attiva) */
.lrb-operator-console-cta{border:1px solid #cfe0fa;background:linear-gradient(180deg,#f5f9ff,#eef4ff)}
.lrb-operator-console-cta h3{color:#0b2a66}

/* ============================================================
 * CONSOLE OPERATORE v2 (frontend responsive)  [.lrb-oc-*]
 * Layout autonomo, separato dal backend WordPress.
 * ============================================================ */
.lrb-oc *{box-sizing:border-box}
.lrb-oc{--oc-blue:#0B2A66;--oc-blue2:#1267d8;--oc-bg:#f1f5fb;--oc-card:#ffffff;--oc-line:#e2e8f3;--oc-ink:#1f2a44;--oc-muted:#64748b;
  position:fixed;inset:0;display:flex;flex-direction:column;background:var(--oc-bg);color:var(--oc-ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;z-index:1;overflow:hidden}
.lrb-oc-skip{position:absolute;left:-9999px;top:0}
.lrb-oc-skip:focus{left:8px;top:8px;background:#fff;padding:8px 12px;border-radius:8px;z-index:50}

/* Topbar */
.lrb-oc-topbar{display:flex;align-items:center;gap:12px;background:var(--oc-blue);color:#fff;padding:10px 16px;flex:0 0 auto;box-shadow:0 2px 10px rgba(11,42,102,.18)}
.lrb-oc-menu-toggle{display:none;flex-direction:column;justify-content:center;gap:4px;width:40px;height:40px;border:0;border-radius:10px;background:rgba(255,255,255,.14);cursor:pointer;padding:0}
.lrb-oc-menu-toggle span{display:block;width:18px;height:2px;background:#fff;margin:0 auto;border-radius:2px}
.lrb-oc-brand{display:flex;align-items:center;gap:10px;min-width:0}
.lrb-oc-brand img{height:34px;width:auto;border-radius:6px;background:#fff;padding:2px}
.lrb-oc-brand-text{display:flex;flex-direction:column;line-height:1.1;min-width:0}
.lrb-oc-brand-text strong{font-size:15px}
.lrb-oc-brand-text small{font-size:11px;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lrb-oc-topbar-spacer{flex:1 1 auto}
.lrb-oc-topbar-actions{display:flex;align-items:center;gap:8px}
.lrb-oc-user{display:inline-flex;align-items:center;gap:6px;font-size:13px;opacity:.95;margin-right:4px}
.lrb-oc-user .dashicons{font-size:18px;width:18px;height:18px}

/* Body layout */
.lrb-oc-body{flex:1 1 auto;display:flex;min-height:0;position:relative}
.lrb-oc-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.4);z-index:30}

/* Sidebar */
.lrb-oc-sidebar{flex:0 0 248px;background:var(--oc-card);border-right:1px solid var(--oc-line);display:flex;flex-direction:column;overflow-y:auto}
.lrb-oc-sidebar ul{list-style:none;margin:0;padding:10px}
.lrb-oc-sidebar li{margin:0}
.lrb-oc-navlink{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:10px;color:var(--oc-ink);text-decoration:none;font-weight:600;font-size:14px;margin-bottom:2px;transition:background .15s,color .15s}
.lrb-oc-navlink .dashicons{font-size:20px;width:20px;height:20px;color:var(--oc-blue2)}
.lrb-oc-navlink:hover{background:#eef4ff}
.lrb-oc-navlink.is-active{background:var(--oc-blue);color:#fff}
.lrb-oc-navlink.is-active .dashicons{color:#fff}
.lrb-oc-navlabel{flex:1 1 auto}
.lrb-oc-soon{font-size:10px;font-weight:700;background:#fff3d6;color:#9a6700;padding:2px 6px;border-radius:20px;text-transform:uppercase;letter-spacing:.02em}
.lrb-oc-navlink.is-active .lrb-oc-soon{background:rgba(255,255,255,.25);color:#fff}
/* v1.8.73 - Link alla guida operatori in fondo alla sidebar della console. */
.lrb-oc-guide-link{margin-top:auto;display:flex;align-items:center;gap:9px;padding:11px 16px;border-top:1px solid var(--oc-line);color:var(--oc-blue);font-size:13px;font-weight:700;text-decoration:none}
.lrb-oc-guide-link:hover{background:#f3f7ff}
.lrb-oc-guide-link .dashicons{font-size:17px;width:17px;height:17px}
.lrb-oc-guide-link + .lrb-oc-sidebar-foot{margin-top:0}
.lrb-oc-sidebar-foot{margin-top:auto;padding:14px 16px;border-top:1px solid var(--oc-line);color:var(--oc-muted);font-size:12px;display:flex;flex-direction:column;gap:2px}

/* Main */
.lrb-oc-main{flex:1 1 auto;overflow-y:auto;padding:22px}
.lrb-oc-page{max-width:1100px;margin:0 auto}
/* === v1.8.88: le pagine con tabella possono essere più larghe ===
   Il tetto di 1100px è giusto per moduli e testi (righe troppo lunghe si leggono
   male), ma su una tabella a nove colonne significava ~120px a colonna anche con
   uno schermo da 1920: nomi come "Salone + frigo e lavello" andavano a capo tre
   volte mentre metà monitor restava vuoto. Il tetto si alza solo dove c'è davvero
   una tabella e solo sopra i 1200px, cioè dove la tabella viene mostrata; sotto
   quella soglia le schede occupano già tutta la larghezza. Se un browser molto
   vecchio non supporta :has(), semplicemente resta il tetto di prima: si perde
   un miglioramento, non si rompe nulla. */
@media (min-width:1201px){
  .lrb-oc-page:has(.lrb-oc-table-wrap){max-width:1500px}
}
.lrb-oc-page-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.lrb-oc-page-head h1{margin:0;font-size:22px;color:var(--oc-blue)}
.lrb-oc-page-head p{margin:3px 0 0;color:var(--oc-muted);font-size:13px}
/* v1.9.56 — I pulsanti in testata: il collegamento all'altra sezione accanto
   all'azione principale. Su schermo stretto vanno a capo insieme e restano
   affiancati fra loro, invece di impilarsi occupando due righe piene. */
/* v1.9.57 — «Da incassare»: importi incolonnati, uno per riga. Prima era una frase
   unica («cauzione + contributo/saldo») che accanto allo stato «Approvata» sembrava
   dire che alla prenotazione mancasse tutto. Due cifre lette come cifre non danno
   quell'impressione: dicono quanto c'è da riscuotere, non che qualcosa è andato storto. */
/* v1.9.58 — La riga raggiunta da un collegamento. Il risalto dura un momento e poi
   svanisce: serve a dire «è questa», non a marcarla in modo permanente. Il bordo a
   sinistra funziona anche a schede sul telefono, dove lo sfondo di una riga di
   tabella non si vedrebbe. `scroll-margin` lascia un po' d'aria sopra, così la riga
   non finisce incollata al bordo del riquadro che scorre. */
.lrb-oc-table tbody tr{scroll-margin-top:18px;scroll-margin-bottom:18px}
.lrb-oc-riga-trovata{animation:lrb-oc-trovata 2.6s ease-out 1}
@keyframes lrb-oc-trovata{
  0%,55%{background:#fff7ed;box-shadow:inset 4px 0 0 #d97706}
  100%{background:transparent;box-shadow:inset 4px 0 0 transparent}
}
@media (prefers-reduced-motion:reduce){
  /* Chi ha chiesto meno animazioni riceve comunque il segnale, senza dissolvenza. */
  .lrb-oc-riga-trovata{animation:none;background:#fff7ed;box-shadow:inset 4px 0 0 #d97706}
}
/* v1.9.61 — «Il periodo scelto ne nasconde N». Ambra e con un bordo a sinistra:
   non è un errore, ma non deve nemmeno passare inosservato — è l'avviso che
   l'elenco che si sta guardando non è tutto. Il collegamento accanto lo apre. */
.lrb-oc-fuori-periodo{margin:8px 0 0;padding:7px 11px;background:#fffbeb;border-left:3px solid #d97706;border-radius:0 8px 8px 0;font-size:12.5px;line-height:1.45;color:#78350f}
.lrb-oc-fuori-periodo a{color:#92400e;font-weight:800;white-space:nowrap}
.lrb-oc-daincassare{display:grid;gap:2px}
.lrb-oc-daincassare span{font-size:12.5px;color:var(--oc-muted);white-space:nowrap}
.lrb-oc-daincassare strong{color:var(--oc-ink);font-weight:800;margin-left:4px}
/* Quanto manca all'evento: neutro se c'è tempo, ambra sotto la settimana, rosso se
   è oggi o è già passato. È l'unica cosa che distingue una riga normale da una che
   chiede di essere seguita adesso. */
.lrb-oc-attesa{display:inline-block;margin-top:2px;font-size:11.5px;font-weight:700;border-radius:999px;padding:1px 8px}
.lrb-oc-attesa-calmo{background:#eef2f7;color:#64748b}
.lrb-oc-attesa-attenzione{background:#fef3c7;color:#92400e}
.lrb-oc-attesa-urgente{background:#fee2e2;color:#991b1b}
.lrb-oc-urg{color:#92400e}
.lrb-oc-head-azioni{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
@media (max-width:520px){
  .lrb-oc-head-azioni{width:100%}
  .lrb-oc-head-azioni .lrb-oc-btn{flex:1 1 0;min-width:0;justify-content:center}
}

/* Flash */
.lrb-oc-flash{max-width:1100px;margin:0 auto 16px;padding:12px 16px;border-radius:12px;font-weight:600;font-size:14px}
.lrb-oc-flash-success{background:#e7f7ed;color:#11663a;border:1px solid #b6e3c7}
.lrb-oc-flash-error{background:#fdecec;color:#9b1c1c;border:1px solid #f5c2c2}
/* v1.9.13: serviva un terzo tono. "Salvato, pero' attenzione a una cosa" non e'
   un successo pieno (verde) e non e' un errore (rosso): scritto in verde l'avviso
   non verrebbe letto, in rosso farebbe credere che il salvataggio sia fallito. */
.lrb-oc-flash-warning{background:#fff8e5;color:#8a5a00;border:1px solid #f0dca4}
/* Avviso sotto un campo: il dato e' salvabile, ma c'e' una conseguenza da sapere. */
.lrb-oc-warn-inline{display:block;margin-top:5px;color:#8a5a00;font-size:12px;line-height:1.4}
/* v1.9.13 — Intestazioni cliccabili per ordinare.
   Sotto i 1200px le tabelle diventano schede impilate e le intestazioni sono
   nascoste: li' ordinare da th non avrebbe senso, ma il default «prima gli
   imminenti» vale comunque, quindi su smartphone si vede gia' l'ordine giusto. */
.lrb-oc-th-sort{padding:0}
.lrb-oc-th-sort > a{display:flex;align-items:center;gap:5px;padding:10px 12px;color:inherit;text-decoration:none;white-space:nowrap}
.lrb-oc-th-sort > a:hover{background:rgba(23,52,107,.06);color:var(--oc-blue,#17346b)}
.lrb-oc-th-sort.is-sorted > a{color:var(--oc-blue,#17346b);font-weight:800}
.lrb-oc-sort-arrow{font-size:9px;line-height:1;opacity:.75}

/* v1.9.17 — Pastiglia del gruppo, dieci tinte.
   Il contrasto testo/sfondo di ognuna e' stato CALCOLATO (WCAG 2.1): la peggiore
   e' 5,47 contro il 4,5 richiesto per il testo piccolo. Non e' una scelta a
   occhio: una pastiglia illeggibile ripetuta su trecento righe e' un danno che
   non si nota subito e non si corregge mai.
   Il nome del gruppo resta SCRITTO dentro la pastiglia, quindi il colore aiuta
   ma non e' l'unico portatore dell'informazione. */
/* v1.9.19 — La pastiglia non si tronca piu' con i puntini: «Corso Prematrimo…»
   non dice quale gruppo sia, e il nome e' proprio l'informazione che porta.
   Va a capo se serve, in corpo piccolo. */
.lrb-oc-gruppo{display:inline-block;padding:2px 8px;border-radius:20px;font-size:10.5px;font-weight:800;
  line-height:1.35;max-width:100%;border:1px solid;overflow-wrap:anywhere}
.lrb-g-blu{background:#eef4ff;color:#1e40af;border-color:#c7d7fb}
.lrb-g-verde{background:#e8f7ee;color:#11663a;border-color:#bfe5cd}
.lrb-g-ambra{background:#fff5e0;color:#8a5a00;border-color:#f0dca4}
.lrb-g-rosa{background:#fdeef4;color:#9d174d;border-color:#f8cfe0}
.lrb-g-viola{background:#f3eefe;color:#5b21b6;border-color:#ddd0fa}
.lrb-g-ciano{background:#e6f6fa;color:#0e5b6b;border-color:#bfe6ef}
.lrb-g-terra{background:#f6efe8;color:#7c4a17;border-color:#e3d3c2}
.lrb-g-oliva{background:#f0f5e2;color:#4d6b12;border-color:#d7e3b8}
.lrb-g-corallo{background:#feeeea;color:#9a3412;border-color:#fbd5c8}
.lrb-g-ardesia{background:#eef1f6;color:#334155;border-color:#d3dbe6}

/* Selettore della tinta nella scheda del gruppo */
.lrb-g-picker{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.lrb-g-picker label{cursor:pointer;line-height:0}
.lrb-g-picker input{position:absolute;opacity:0;width:0;height:0}
.lrb-g-sw{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;
  border-radius:9px;border:2px solid transparent;font-size:0}
.lrb-g-picker input:checked + .lrb-g-sw{border-color:var(--oc-blue,#0B2A66)}
/* Il contorno alla messa a fuoco serve a chi naviga da tastiera: senza, il
   selettore diventa invisibile perche' il radio vero e' nascosto. */
.lrb-g-picker input:focus-visible + .lrb-g-sw{outline:2px solid var(--oc-blue2,#1267d8);outline-offset:2px}
.lrb-g-sw::after{content:'';width:16px;height:16px;border-radius:50%;background:currentColor}

/* =========================================================================
   v1.9.17 — Riga prenotazioni ricomposta.
   ========================================================================= */

/* Richiedente: nome, email, gruppo, WhatsApp in colonna. */
.lrb-oc-req{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.lrb-oc-req-nome{font-weight:700;color:var(--oc-ink,#1f2a44);line-height:1.2;font-size:12.5px}
/* v1.10.41 — Le prenotazioni dentro la scheda utente. Una riga per
   prenotazione: quando, cosa, com'e' messa, e il comando che la apre dove si
   gestisce davvero. Su schermo stretto i pezzi si impilano invece di
   spezzarsi a meta' parola. */
.lrb-oc-user-bk-conti{margin:0 0 8px;font-size:12.5px;color:var(--oc-muted,#64748b)}
.lrb-oc-user-bk-conti strong{color:var(--oc-ink,#1f2a44)}
.lrb-oc-user-bk-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.lrb-oc-user-bk-list li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  padding:7px 10px;border:1px solid var(--oc-line,#e6ecf5);border-radius:10px;background:#fff;font-size:12.5px}
.lrb-oc-user-bk-quando{font-weight:700;color:var(--oc-ink,#1f2a44);white-space:nowrap;font-variant-numeric:tabular-nums}
.lrb-oc-user-bk-cosa{flex:1 1 160px;min-width:0;color:var(--oc-muted,#64748b);overflow-wrap:anywhere}
.lrb-oc-user-bk-list .lrb-oc-btn-mini{margin-left:auto}
@media (max-width:600px){
  .lrb-oc-user-bk-list li{gap:5px}
  .lrb-oc-user-bk-cosa{flex:1 1 100%}
}

/* v1.10.41 — il nome che porta alla scheda utente. Sottolineato solo al
   passaggio: in un elenco fitto una riga di nomi tutti sottolineati diventa
   rumore, ma se non si distingue in nessun modo nessuno prova a premerlo. */
a.lrb-oc-req-link{text-decoration:none;cursor:pointer}
a.lrb-oc-req-link:hover,a.lrb-oc-req-link:focus-visible{text-decoration:underline;color:var(--oc-blue,#12376b)}
/* Email in corpo piccolo e con la sillabazione: un indirizzo lungo va a capo
   dove serve invece di allargare la colonna o uscire dal bordo. */
.lrb-oc-req-mail{font-size:11px;color:var(--oc-muted,#64748b);line-height:1.25;
  overflow-wrap:anywhere;word-break:normal}
.lrb-oc-req-wa{line-height:1}

/* Periodo: due righe, data e ora incolonnate, cifre a larghezza fissa cosi'
   le date restano allineate fra righe diverse. */
/* `justify-content:start`: senza, le tre colonne «auto» si spartiscono lo
   spazio che avanza nella cella, e su uno schermo largo giorno, data e ora
   finivano sparpagliati con dei buchi in mezzo. Sotto i 1200px lo stesso
   blocco va a destra (regola piu' sotto). */
.lrb-oc-per{display:grid;grid-template-columns:auto auto auto;justify-content:start;gap:2px 6px;font-size:12.5px;line-height:1.35;
  font-variant-numeric:tabular-nums;white-space:nowrap}
.lrb-oc-per-d{font-weight:700;color:var(--oc-ink,#1f2a44)}
.lrb-oc-per-o{color:var(--oc-muted,#64748b)}
/* v1.10.40 — il giorno della settimana, prima della data. Stesso colore
   dell'ora: e' un aiuto alla lettura, non deve pesare quanto la data, che
   resta l'unica cosa in grassetto della cella. */
.lrb-oc-per-g{color:var(--oc-muted,#64748b);font-weight:600}

/* Cauzione e affitto: etichetta, importo, stato — sempre negli stessi punti. */
.lrb-oc-pag{display:grid;grid-template-columns:auto auto 1fr;gap:5px 8px;align-items:center;font-size:12px}
.lrb-oc-pag-et{color:var(--oc-muted,#64748b);font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px}
.lrb-oc-pag-im{font-weight:800;color:var(--oc-ink,#1f2a44);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}

/* Stato compatto: pallino + parola breve. Il pallino NON e' l'unico segnale —
   la parola resta scritta, quindi chi non distingue i colori legge comunque. */
.lrb-oc-st{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;white-space:nowrap}
.lrb-oc-st::before{content:'';width:8px;height:8px;border-radius:50%;flex:0 0 8px}
.lrb-oc-st-ok{color:#11663a}  .lrb-oc-st-ok::before{background:#11663a}
.lrb-oc-st-att{color:#9a6700} .lrb-oc-st-att::before{background:#c98a00}
.lrb-oc-st-ko{color:#9b1c1c}  .lrb-oc-st-ko::before{background:#b91c1c}
.lrb-oc-st-neu{color:#516079} .lrb-oc-st-neu::before{background:#94a3b8}

/* Codice di accesso */
.lrb-oc-cod{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.lrb-oc-cod-val{font-weight:800;font-size:14px;letter-spacing:.04em;color:var(--oc-ink,#1f2a44);
  font-variant-numeric:tabular-nums;white-space:nowrap}
.lrb-oc-cod-inv{color:var(--oc-muted,#64748b);font-size:11px}

/* Azioni: 7 icone su due righe, 4 + 3. La larghezza e' esplicita (4x34 + 3x6)
   perche' con la sola griglia il browser stringeva la colonna e le icone
   finivano su tre righe. */
.lrb-oc-col-actions .lrb-oc-actions-inline{display:grid;grid-template-columns:repeat(4,34px);gap:6px;
  justify-content:end;width:154px;margin-left:auto}

@media (min-width:1201px){
  /* v1.9.19 — Larghezze dichiarate per OGNI colonna.
     Con table-layout:fixed le colonne senza larghezza si spartiscono l'avanzo in
     parti uguali: Richiedente restava a 128px come Risorse e Stato, e nome ed
     email andavano a capo mentre «Cauzione e affitto» aveva spazio in eccesso.
     Dichiarandole tutte, lo spazio va dove serve davvero. Somma = 100%. */
  .lrb-oc-bookings .lrb-oc-table{table-layout:fixed;width:100%}
  .lrb-oc-bookings .lrb-oc-table th.lrb-oc-col-ris{width:9%}
  .lrb-oc-bookings .lrb-oc-table th.lrb-oc-col-req{width:20%}
  /* v1.10.40 — Periodo da 8,5% a 12%, presi dal Titolo (24% → 20,5%).
     Col giorno della settimana davanti la data occupa 113px, e a 8,5% la
     colonna ne dava 76-98 fra i 1200 e i 1440px: misurato, il contenuto
     usciva dalla cella di 15-37px. Il Titolo e' la colonna con piu' margine —
     le sue righe vanno gia' a capo per natura, la data no (e' «nowrap»,
     perche' una data spezzata a meta' non si legge). */
  .lrb-oc-bookings .lrb-oc-table th.lrb-oc-col-tit{width:20.5%}
  .lrb-oc-bookings .lrb-oc-table th.lrb-oc-col-per{width:12%}
  .lrb-oc-bookings .lrb-oc-table th.lrb-oc-col-pag{width:13.5%}
  .lrb-oc-bookings .lrb-oc-table th.lrb-oc-col-cod{width:8%;padding-right:4px}
  .lrb-oc-bookings .lrb-oc-table td.lrb-oc-col-cod{padding-right:4px}
  .lrb-oc-bookings .lrb-oc-table th.lrb-oc-col-stato{width:6%;padding-left:4px}
  .lrb-oc-bookings .lrb-oc-table td.lrb-oc-col-stato{padding-left:4px}
  .lrb-oc-bookings .lrb-oc-table th.lrb-oc-col-actions{width:160px}
  /* Celle piu' strette in orizzontale: lo spazio recuperato va al contenuto. */
  .lrb-oc-bookings .lrb-oc-table td{padding-left:9px;padding-right:9px}
  .lrb-oc-bookings .lrb-oc-table th{padding-left:9px;padding-right:9px}
}
@media (max-width:1200px){
  /* Schede impilate: il valore va a destra, come per tutte le altre celle. */
  .lrb-oc-req{align-items:flex-end;text-align:right}
  .lrb-oc-per{justify-content:end}
  .lrb-oc-pag{justify-items:end}
  .lrb-oc-cod{align-items:flex-end}
  .lrb-oc-col-actions .lrb-oc-actions-inline{justify-content:end}
}
/* v1.9.14 — Avviso del filtro attivo e pulsante di copia. */
/* v1.9.16 — L'avviso deve stare nella stessa griglia dei pannelli.
   Ereditava da .lrb-oc-flash un max-width:1100px con margin auto e un raggio di
   12px: sopra i 1100px restava stretto e centrato mentre filtri e tabella erano
   a piena larghezza, e il bordo aveva una curva diversa. Misurato, non a occhio.
   Qui si riallinea a .lrb-oc-panel: stessa larghezza, stesso raggio, stesso
   padding orizzontale, cosi' i bordi sinistro e destro cadono sulla stessa
   linea verticale di tutto il resto. */
.lrb-oc-filtro-attivo{max-width:none;margin:0 0 16px;border-radius:14px;padding:13px 18px;font-weight:600;
  display:flex;align-items:center;justify-content:space-between;gap:10px 16px;flex-wrap:wrap}
.lrb-oc-filtro-attivo strong{font-weight:800}
@media (max-width:640px){
  /* Su schermo stretto il comando va sotto e a piena larghezza, invece di
     stringersi in un angolo accanto a un testo che va a capo. */
  .lrb-oc-filtro-attivo{align-items:stretch}
  .lrb-oc-filtro-attivo .lrb-oc-flash-actions{width:100%}
  .lrb-oc-filtro-attivo .lrb-oc-btn{width:100%;text-align:center}
}
.lrb-oc-wa-buttons{display:inline-flex;gap:8px;flex-wrap:wrap}
.lrb-oc-btn-copia.is-copiato{background:#e7f7ed;border-color:#b6e3c7;color:#11663a}
@media (max-width:600px){
  .lrb-oc-wa-buttons{width:100%}
  .lrb-oc-wa-buttons .lrb-oc-btn{flex:1 1 auto}
}
.lrb-field-hint{display:block;margin-top:4px;color:#64748b;font-size:12px;line-height:1.4}
.lrb-oc-flash-info{background:#eaf2fd;color:#1a4d8f;border:1px solid #bcd6f7;display:flex;flex-wrap:wrap;align-items:center;gap:10px;justify-content:space-between}
.lrb-oc-flash-info span{font-weight:600}
.lrb-oc-flash-info .lrb-oc-flash-actions{display:flex;gap:8px;flex-wrap:wrap}
.lrb-oc-flash-btn{border:1px solid #1a4d8f;background:#fff;color:#1a4d8f;border-radius:8px;padding:6px 12px;font-size:12.5px;font-weight:700;cursor:pointer}
.lrb-oc-flash-btn:hover{background:#1a4d8f;color:#fff}
.lrb-oc-flash-btn-ghost{border-color:#8ca7c9;color:#4a6a90}
.lrb-oc-flash-btn-ghost:hover{background:#8ca7c9;color:#fff}

/* Buttons */
.lrb-oc-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid transparent;border-radius:10px;padding:9px 15px;font-size:13.5px;font-weight:700;cursor:pointer;text-decoration:none;line-height:1.2;transition:filter .15s,background .15s,border-color .15s;white-space:nowrap}
.lrb-oc-btn .dashicons{font-size:17px;width:17px;height:17px}
.lrb-oc-btn-primary{background:var(--oc-blue2);color:#fff}
.lrb-oc-btn-primary:hover{filter:brightness(1.07)}
.lrb-oc-btn-ghost{background:#fff;color:var(--oc-blue);border-color:var(--oc-line)}
.lrb-oc-btn-ghost:hover{background:#f3f7ff}
.lrb-oc-topbar .lrb-oc-btn-ghost{background:rgba(255,255,255,.14);color:#fff;border-color:transparent}
.lrb-oc-topbar .lrb-oc-btn-ghost:hover{background:rgba(255,255,255,.24)}
.lrb-oc-btn-exit{background:#ffffff;color:var(--oc-blue)}
.lrb-oc-btn-mini{padding:5px 10px;font-size:12px;border-radius:8px}
/* v1.9.48 — Scorciatoia di periodo attualmente scelta. Deve distinguersi dalle
   altre a colpo d'occhio: senza, si finisce per non sapere quale periodo si sta
   guardando e si legge un elenco parziale credendolo completo. */
.lrb-oc-btn-ghost.lrb-oc-btn-on{background:var(--oc-blue);border-color:var(--oc-blue);color:#fff;font-weight:800}
.lrb-oc-btn-danger{background:#fff;color:#c0392b;border-color:#f0c2bc}
.lrb-oc-btn-danger:hover{background:#fdecec}
.lrb-oc-btn.is-disabled{opacity:.45;pointer-events:none}

/* Dashboard cards */
.lrb-oc-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.lrb-oc-card{display:flex;align-items:flex-start;gap:13px;background:var(--oc-card);border:1px solid var(--oc-line);border-radius:14px;padding:16px;text-decoration:none;color:var(--oc-ink);transition:transform .12s,box-shadow .12s,border-color .12s}
.lrb-oc-card:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(11,42,102,.10);border-color:#c9d8f3}
.lrb-oc-card-icon{font-size:26px;width:26px;height:26px;color:var(--oc-blue2);flex:0 0 auto}
.lrb-oc-card-body{display:flex;flex-direction:column;gap:3px}
.lrb-oc-card-body strong{font-size:15px;color:var(--oc-blue)}
.lrb-oc-card-body small{font-size:12.5px;color:var(--oc-muted);line-height:1.35}
.lrb-oc-card .lrb-oc-soon{align-self:flex-start;margin-left:6px}

/* Empty state */
.lrb-oc-empty{background:var(--oc-card);border:1px dashed var(--oc-line);border-radius:14px;padding:40px 22px;text-align:center;color:var(--oc-muted)}
.lrb-oc-empty .dashicons{font-size:44px;width:44px;height:44px;color:#b9c6df;margin-bottom:8px}
.lrb-oc-empty h2{margin:6px 0;color:var(--oc-blue);font-size:18px}
.lrb-oc-empty p{margin:0 0 14px;font-size:14px}

/* Filters */
.lrb-oc-filters{background:var(--oc-card);border:1px solid var(--oc-line);border-radius:14px;padding:14px;margin-bottom:16px}
/* v1.9.50 — `minmax(180px,1fr)` sembra innocuo ma la parte `1fr` ha come minimo
   implicito il contenuto: un <select> è largo almeno quanto la sua opzione più
   lunga, quindi la colonna si allargava oltre il riquadro e sul telefono il campo
   usciva dallo schermo. `min(180px,100%)` permette alla colonna di scendere sotto
   quel minimo quando lo spazio non c'è, ed è ciò che mancava. Il `min-width:0`
   sulle etichette serve allo stesso scopo un livello più sotto: senza, sarebbero
   loro a rifiutarsi di stringersi. */
/* v1.10.0-beta38 — Una griglia FISSA di sei colonne, non «quante ce ne stanno».
   `auto-fill` sembra la scelta comoda, ma il numero di colonne dipende dalla
   larghezza della finestra: a 1400px ne stanno 6 (due righe pulite), a 1700px
   ne stanno 7 e «Gruppo» sale in prima riga lasciando la seconda spaiata, a
   1920px ne salgono due, a 2400px stanno tutte su una riga sola. Ogni volta i
   campi cambiano posto e le due righe non si allineano piu': era la simmetria
   che saltava allargando la finestra a tutto schermo.
   Misurato in Chromium a quelle quattro larghezze prima di correggere.
   Con sei colonne fisse la disposizione e' sempre la stessa e allargando la
   finestra crescono le colonne, non il loro numero.

   Il conto delle colonne va fatto, non sperato. I campi sono dieci nell'ordine
   Riferimento, Ricerca libera, Data, Utente, Risorse, Gruppo, Stato, Cauzione,
   Periodo, Per pagina; con Ricerca libera e Risorse larghe il doppio fanno
   dodici colonne, cioe' due righe esatte da sei:

     riga 1 · Riferimento | Ricerca libera (2) | Data | Utente | Risorse (2)
              → 1 + 2 + 1 + 1 + ... e Risorse non ci sta: scende.

   Da qui la terza riga con «Per pagina» da sola, vista a 1700px.

   Il conto che chiude: Ricerca libera prende TRE colonne, le Risorse UNA.
     riga 1 · Riferimento 1 + Ricerca 3 + Data 1 + Utente 1 = 6
     riga 2 · Risorse 1 + Gruppo 1 + Stato 1 + Cauzione 1 + Periodo 1 + Per pagina 1 = 6
   Due righe piene a ogni larghezza. Le Risorse stanno strette in una colonna
   perche' sono un gruppo richiudibile: da chiuse mostrano solo il riepilogo, e
   quando si aprono l'elenco cresce in altezza, non in larghezza. */
/* Il tetto si mette al RIQUADRO, non alla griglia dentro: mettendolo alla
   griglia il riquadro bianco continuava ad allargarsi mentre i campi si
   fermavano, e restava una fascia vuota a destra. Lo stesso 1500px gia' usato
   dalla pagina con la tabella, cosi' filtri e tabella finiscono allineati. */
.lrb-oc-filters{max-width:1500px}
.lrb-oc-filter-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;
  align-items:start}

/* v1.10.5 — LE COLONNE LARGHE VALGONO SOLO DOVE LE COLONNE CI SONO.
   Diego, dalla produzione, con lo screenshot: «guarda come si vede male?» — il
   nome della risorsa scritto in verticale, una lettera per riga.

   Difetto mio, entrato con la griglia a sei colonne della 1.10.0. Avevo scritto
   `span 3` e `span 1` SENZA limitarli alle larghezze in cui sei colonne
   esistono davvero. Sul telefono la griglia e' a una colonna sola, ma un
   elemento che ne chiede tre costringe il browser a inventarne altre due,
   dimensionate sul contenuto: la casella delle risorse si stringe a pochi
   pixel e il nome va a capo a ogni lettera.
   Misurato a 390px prima di correggere: nome largo 1px, alto 345.

   E soprattutto era piu' SPECIFICO delle regole del telefono
   (`.lrb-oc-filter-grid>label.lrb-oc-filter-wide` batte `.lrb-oc-filter-wide`),
   quindi le scavalcava proprio dove non doveva valere. Da qui la regola:
   le larghezze si dichiarano DENTRO la media query della disposizione a cui
   appartengono, mai fuori. */
/* I TREDICI campi, nell'ordine in cui stanno nel modulo (v1.10.63: si sono
   aggiunti Tipo di evento e Com'e' stata lasciata, e i conti qui sotto sono
   stati rifatti — e' la cosa che il commento di sotto dice di fare):
     Riferimento · Ricerca libera · Dal · Al · Utente · Risorse
     Gruppo · Tipo di evento · Com'e' stata lasciata · Stato · Cauzione ·
     Periodo · Per pagina
   Per ogni fascia di larghezza si assegna a ciascuno quante colonne prende, in
   modo che le righe risultino SEMPRE piene: nessun campo spaiato in fondo, che
   e' quel che rende storta una schermata di filtri. Il conto e' scritto accanto
   a ogni fascia perche' e' l'unica cosa da rifare quando si aggiunge un campo. */

@media (min-width:1181px){
  /* Sei colonne, QUATTRO righe piene:
       Rif 1 + Ricerca 3 + Dal 1 + Al 1                 = 6
       Utente 2 + Risorse 2 + Gruppo 2                  = 6
       Tipo 2 + Sala 2 + Stato 1 + Cauzione 1           = 6
       Periodo 3 + Pagina 3                             = 6   */
  .lrb-oc-filter-grid>label.lrb-f-q{grid-column:span 3}
  .lrb-oc-filter-grid>.lrb-f-utente{grid-column:span 2}
  .lrb-oc-filter-grid>.lrb-f-risorse{grid-column:span 2}
  .lrb-oc-filter-grid>.lrb-f-gruppo{grid-column:span 2}
  .lrb-oc-filter-grid>.lrb-f-categoria{grid-column:span 2}
  .lrb-oc-filter-grid>.lrb-f-sala{grid-column:span 2}
  .lrb-oc-filter-grid>.lrb-f-periodo{grid-column:span 3}
  .lrb-oc-filter-grid>.lrb-f-pagina{grid-column:span 3}
}
@media (min-width:861px) and (max-width:1180px){
  /* Quattro colonne, CINQUE righe piene:
       Rif 1 + Ricerca 3                            = 4
       Dal 1 + Al 1 + Utente 2                      = 4
       Risorse 2 + Gruppo 2                         = 4
       Tipo 2 + Sala 2                              = 4
       Stato 1 + Cauzione 1 + Periodo 1 + Pagina 1  = 4   */
  .lrb-oc-filter-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .lrb-oc-filter-grid>label.lrb-f-q{grid-column:span 3}
  .lrb-oc-filter-grid>.lrb-f-utente{grid-column:span 2}
  .lrb-oc-filter-grid>.lrb-f-risorse{grid-column:span 2}
  .lrb-oc-filter-grid>.lrb-f-gruppo{grid-column:span 2}
  .lrb-oc-filter-grid>.lrb-f-categoria{grid-column:span 2}
  .lrb-oc-filter-grid>.lrb-f-sala{grid-column:span 2}
}
@media (min-width:601px) and (max-width:860px){
  /* Due colonne. Qui il conto ha una regola in piu' da rispettare: i campi
     stretti devono stare in numero PARI fra un campo largo e l'altro, altrimenti
     l'ultimo resta spaiato e il browser lascia mezza riga vuota. Misurato: con
     Riferimento e Utente da soli restavano due buchi.
     Da qui anche loro a riga intera, e NOVE righe tutte piene (v1.10.63):
       Rif 2 / Ricerca 2 / Dal+Al / Utente 2 / Risorse 2 /
       Gruppo+Tipo / Sala+Stato / Cauzione+Periodo / Pagina 2   */
  .lrb-oc-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lrb-oc-filter-grid>label.lrb-f-q{grid-column:span 2}
  .lrb-oc-filter-grid>.lrb-f-rif{grid-column:span 2}
  .lrb-oc-filter-grid>.lrb-f-utente{grid-column:span 2}
  .lrb-oc-filter-grid>.lrb-f-risorse{grid-column:span 2}
  .lrb-oc-filter-grid>.lrb-f-pagina{grid-column:span 2}
}
/* Telefono: UNA colonna, e nessun campo ne chiede piu' di una.
   E' la riga che mancava, ed e' quella che causava il difetto segnalato:
   un campo che ne chiedeva tre costringeva il browser a inventare colonne
   larghe pochi pixel, e i nomi delle risorse finivano scritti in verticale.
   La regola vale per QUALUNQUE figlio, cosi' un campo aggiunto domani senza la
   sua classe non puo' ricreare lo stesso guasto. */
@media (max-width:600px){
  /* `minmax(0,1fr)` invece di `1fr` per coerenza con le altre fasce.
     ONESTA': avevo scritto qui che era QUESTA la causa dei campi data piu'
     lunghi. L'ho misurato ed e' FALSO — con `1fr` o con `minmax(0,1fr)` il
     risultato e' identico. Quel che impedisce a un campo di sporgere e' il
     `min-width:0` sul figlio, non il modo in cui e' scritta la colonna.
     Lascio la forma esplicita perche' e' quella giusta, ma la spiegazione era
     sbagliata e non voglio lasciarla scritta: chi legge questo foglio fra un
     anno si fiderebbe. */
  .lrb-oc-filter-grid{grid-template-columns:minmax(0,1fr)}
  .lrb-oc-filter-grid>*{grid-column:1 / -1 !important;min-width:0}
}

/* v1.10.6 — I CAMPI DATA NON SPORGONO PIU' DEGLI ALTRI.
   Diego, con lo screenshot: «ci sono i campi data che sono più lunghi».

   Stessa causa gia' trovata nella 1.10.0 per il modulo di prenotazione: un
   `input[type=date]` non e' un campo di testo, ha una larghezza minima propria
   e senza un tetto se la prende. Li' era il pannello delle date multiple, qui
   sono i filtri della console — la regola e' la stessa, cambia il posto.

   NOTA DI ONESTA', e stavolta con un pezzo in piu' rispetto alla 1.10.0.
   Non riesco a riprodurre lo sbordo: Chromium stringe il campo dentro il
   contenitore, e WebKit non si installa su questa macchina. Ho quindi cercato
   la regola che lo permette, e per prima cosa ho verificato le mie ipotesi
   invece di fidarmene:
     - `1fr` contro `minmax(0,1fr)` sulla colonna: MISURATO, non cambia niente;
     - `min-width:0` sul contenitore: e' questo che impedisce lo sbordo
       (senza, il campo sporge di 536px nella prova) — ma c'era gia'.
   Resta quindi UNA sola differenza vera fra Safari e gli altri, e non e' una
   larghezza: iOS disegna i campi data col proprio aspetto di sistema, che ha
   misure sue e ignora quelle dichiarate finche' non si azzera
   `-webkit-appearance`. E' l'unica riga qui sotto che non fosse gia' altrove,
   ed e' la ragione per cui questa correzione puo' funzionare dove le altre non
   hanno funzionato.
   Il resto sono freni ridondanti: non fanno danno e chiudono la strada anche
   se la causa fosse un'altra. La conferma puoi darmela solo tu. */
.lrb-oc-filters input[type="date"],
.lrb-oc-filters input[type="time"],
.lrb-oc-filters input[type="datetime-local"]{
  /* LA riga che conta su iPhone: toglie l'aspetto di sistema, e con quello la
     larghezza propria che il controllo si porta dietro. */
  -webkit-appearance:none;
  appearance:none;
  width:100%;
  max-width:100%;
  min-width:0;
  box-sizing:border-box;
  /* Il valore allineato a sinistra come in ogni altro campo: su iOS un campo
     data lo centra da solo, e in una colonna di caselle allineate a sinistra
     quella centrata sembra storta. Visto in un tuo screenshot precedente,
     dove la data compariva come «1 set 2026» in mezzo alla casella. */
  text-align:left;
}

/* v1.10.5 — Col dito le voci da spuntare devono essere piu' alte.
   Misurate a 27px: con il polpastrello si sbaglia riga, e spuntare la sala
   sbagliata in un filtro vuol dire cercare a vuoto senza capire perche'.
   Vale solo dove si tocca: col mouse 27px sono comodi e la lista resta corta. */
@media (pointer:coarse){
  .lrb-oc-filters .lrb-oc-risorsa-voce{min-height:40px;padding:8px 10px}
  .lrb-oc-filters .lrb-oc-risorsa-voce input[type=checkbox]{width:19px;height:19px}
  /* Con righe piu' alte ne restano meno in vista: l'elenco puo' crescere un po'
     prima di mettersi a scorrere dentro di se'. */
  .lrb-oc-risorse-elenco{max-height:290px}
}
.lrb-oc-filters label{min-width:0}
.lrb-oc-filters select,.lrb-oc-filters input{width:100%;min-width:0}
.lrb-oc-filter-wide{grid-column:span 2}
.lrb-oc-filters label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--oc-muted)}
.lrb-oc-filters input,.lrb-oc-filters select{border:1px solid var(--oc-line);border-radius:9px;padding:8px 10px;font-size:14px;font-weight:500;color:var(--oc-ink);background:#fff}
/* Campo Data compatto con icona calendario (filtro prenotazioni console) */
.lrb-oc-filter-date .lrb-oc-input-icon{position:relative;display:block;max-width:170px}
.lrb-oc-filter-date .lrb-oc-input-icon .dashicons{position:absolute;left:9px;top:50%;transform:translateY(-50%);font-size:18px;width:18px;height:18px;color:var(--oc-muted);pointer-events:none}
.lrb-oc-filter-date .lrb-oc-input-icon input{width:100%;padding-left:32px}
/* ID prenotazione (piccolo, discreto) nella lista operatore */
.lrb-oc-bk-id{display:inline-block;font-size:11px;font-weight:700;color:var(--oc-muted);background:#f1f5fb;border:1px solid var(--oc-line);border-radius:6px;padding:1px 6px;margin-right:4px;vertical-align:middle;letter-spacing:.3px}
/* Riepilogo economico (sezione Pagamenti e cauzioni) */
.lrb-oc-money{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:4px}
.lrb-oc-money-card{background:#fff;border:1px solid var(--oc-line);border-left:4px solid #9aa6bf;border-radius:10px;padding:11px 13px}
.lrb-oc-money-card strong{display:block;font-size:20px;font-weight:800;color:var(--oc-blue);line-height:1.15}
.lrb-oc-money-card span{display:block;margin-top:2px;font-size:12.5px;font-weight:700;color:var(--oc-ink)}
.lrb-oc-money-card small{display:block;margin-top:2px;font-size:11.5px;color:var(--oc-muted)}
.lrb-oc-money-blue{border-left-color:#1267d8}
.lrb-oc-money-green{border-left-color:#1a7f37}
.lrb-oc-money-red{border-left-color:#b42318}
.lrb-oc-money-grey{border-left-color:#9aa6bf}
/* v1.9.49 — «Da restituire»: stesso ambra del contrassegno sulla prenotazione, così
   il colore vuol dire la stessa cosa ovunque nel portale. Quando non c'è nulla in
   sospeso la scheda diventa grigia e non è più un link: un riquadro colorato che
   invita a cliccare per non trovare niente è peggio di un riquadro spento. */
.lrb-oc-money-amber{border-left-color:#d97706;background:#fffbeb}
.lrb-oc-money-link{display:block;text-decoration:none;color:inherit;transition:box-shadow .15s,transform .15s}
.lrb-oc-money-link:hover,.lrb-oc-money-link:focus-visible{box-shadow:0 4px 14px rgba(217,119,6,.22);transform:translateY(-1px)}
.lrb-oc-money-link:focus-visible{outline:2px solid #d97706;outline-offset:2px}
.lrb-oc-hint-xs{font-size:10px;line-height:1.3;opacity:.8;margin-top:8px}
.lrb-oc-filter-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap;align-items:center}

/* ============================================================================
   v1.10.0-beta37 — Filtro risorse a caselle, e interruttore Attive/Tutte.
   ========================================================================= */

/* Il gruppo di caselle. E' un <details> perche' le risorse possono essere una
   dozzina: aperto sempre occuperebbe meta' del riquadro dei filtri, e le altre
   caselle finirebbero sotto la piega. Si apre da solo quando un filtro e' gia'
   attivo, cosi' non si nasconde mai una scelta in corso. */
.lrb-oc-risorse-box{border:1px solid var(--oc-line);border-radius:9px;background:#fff;overflow:hidden}
.lrb-oc-risorse-box>summary{display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:8px 10px;cursor:pointer;list-style:none;user-select:none}
.lrb-oc-risorse-box>summary::-webkit-details-marker{display:none}
.lrb-oc-risorse-box>summary::after{content:'';flex:0 0 auto;width:7px;height:7px;margin-left:2px;
  border-right:2px solid var(--oc-muted);border-bottom:2px solid var(--oc-muted);
  transform:rotate(45deg) translateY(-2px);transition:transform .15s}
.lrb-oc-risorse-box[open]>summary::after{transform:rotate(-135deg) translateY(-2px)}
.lrb-oc-risorse-box>summary:focus-visible{outline:2px solid var(--oc-blue);outline-offset:-2px}
.lrb-oc-risorse-tit{font-size:12px;font-weight:700;color:var(--oc-muted)}
/* Il riepilogo da chiuso: spento quando non filtra nulla, acceso quando filtra.
   Da chiuso e' l'unica cosa che dice cosa sta succedendo, quindi deve saltare
   all'occhio esattamente quando c'e' una scelta in corso. */
.lrb-oc-risorse-conta{font-size:12px;font-weight:600;color:var(--oc-muted);margin-left:auto}
.lrb-oc-risorse-conta.is-on{color:var(--oc-blue);font-weight:800}
/* Il `display:grid` puo' restare incondizionato: verificato in Chromium che da
   chiuso il gruppo resta alto quanto la sola intestazione con e senza la
   variante limitata a [open]. Il contenuto di un <details> chiuso viene tolto
   dal disegno dal contenitore, non dal proprio display — misurare l'altezza del
   div interno (che resta quella vera) porta fuori strada. */
.lrb-oc-risorse-elenco{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(200px,100%),1fr));
  gap:2px;padding:4px 6px 8px;max-height:230px;overflow-y:auto;border-top:1px solid var(--oc-line)}
.lrb-oc-risorse-vuoto{margin:6px;font-size:12.5px;color:var(--oc-muted)}
/* `.lrb-oc-filters label` piu' sopra impone flex-direction:column a OGNI etichetta
   del riquadro: qui serve una riga, quindi si riscrive la direzione. Senza questa
   riga la casella finirebbe sopra il nome invece che accanto. */
.lrb-oc-filters .lrb-oc-risorsa-voce{flex-direction:row;align-items:center;gap:8px;
  padding:6px 8px;border-radius:7px;font-size:13px;font-weight:600;color:var(--oc-ink);cursor:pointer}
.lrb-oc-filters .lrb-oc-risorsa-voce:hover{background:#f6f9ff}
.lrb-oc-filters .lrb-oc-risorsa-voce.is-on{background:#eef4ff}
.lrb-oc-filters .lrb-oc-risorsa-voce input[type=checkbox]{width:auto;min-width:0;flex:0 0 auto;margin:0;
  accent-color:var(--oc-blue);cursor:pointer}
.lrb-oc-risorsa-nome{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}
.lrb-oc-risorsa-nome em{font-style:normal;font-size:11px;font-weight:600;color:var(--oc-muted)}
.lrb-oc-risorsa-cat{flex:0 0 auto;font-size:10.5px;font-weight:700;color:var(--oc-muted);
  background:#f1f5fb;border-radius:5px;padding:1px 5px;white-space:nowrap}

/* L'interruttore a due stati. Non e' un pulsante che si preme e torna su: e' una
   coppia di caselle radio vestite da interruttore, quindi lo stato scelto RESTA
   visibilmente premuto ed e' un campo del modulo (viaggia con Filtra da solo). */
.lrb-oc-interruttore{display:inline-flex;border:1px solid var(--oc-line);border-radius:9px;
  background:#f1f5fb;padding:2px;gap:2px;flex-wrap:wrap}
.lrb-oc-filters .lrb-oc-int-voce{flex-direction:row;align-items:center;margin:0;
  padding:6px 12px;border-radius:7px;font-size:12.5px;font-weight:700;color:var(--oc-muted);
  cursor:pointer;white-space:nowrap;transition:background .12s,color .12s,box-shadow .12s}
/* La casella radio vera resta nel modulo ma non si vede: sparisce all'occhio, non
   alla tastiera e non ai lettori di schermo. `position:absolute;opacity:0` invece
   di `display:none` e' proprio questo — display:none la toglierebbe anche
   dall'ordine di tabulazione e l'interruttore non sarebbe piu' raggiungibile. */
.lrb-oc-filters .lrb-oc-int-voce input[type=radio]{position:absolute;opacity:0;width:1px;height:1px;
  min-width:0;margin:0;pointer-events:none}
.lrb-oc-filters .lrb-oc-int-voce.is-on{background:#fff;color:var(--oc-blue);
  box-shadow:0 1px 3px rgba(11,42,102,.16)}
.lrb-oc-filters .lrb-oc-int-voce:hover{color:var(--oc-ink)}
.lrb-oc-filters .lrb-oc-int-voce:focus-within{outline:2px solid var(--oc-blue);outline-offset:1px}
/* Quando la ricerca impone «tutte» (per data, per ID, per periodo, per stato) il
   comando resta acceso ma smorzato: dice il vero — quello e' lo stato in uso —
   senza far credere che sia stata una scelta dell'operatore. */
.lrb-oc-interruttore.is-imposto{opacity:.75}
.lrb-oc-int-nota{font-size:11.5px;font-weight:600;color:var(--oc-muted);flex:1 1 200px;min-width:0}

@media (max-width:600px){
  /* Sul telefono l'interruttore prende tutta la riga e le due meta' si dividono
     lo spazio: sono due bersagli da toccare, devono essere larghi. */
  .lrb-oc-interruttore{display:flex;width:100%}
  .lrb-oc-filters .lrb-oc-int-voce{flex:1 1 0;justify-content:center;text-align:center;padding:9px 8px}
  .lrb-oc-int-nota{flex-basis:100%}
  .lrb-oc-risorse-elenco{grid-template-columns:1fr;max-height:260px}
}

/* Table */
.lrb-oc-table-wrap{background:var(--oc-card);border:1px solid var(--oc-line);border-radius:14px;overflow:visible}
.lrb-oc-table thead th:first-child{border-top-left-radius:14px}
.lrb-oc-table thead th:last-child{border-top-right-radius:14px}
.lrb-oc-table{width:100%;border-collapse:collapse;font-size:13px}
.lrb-oc-table thead th{background:#f6f9ff;text-align:left;padding:11px 12px;font-size:12px;font-weight:800;color:var(--oc-blue);border-bottom:1px solid var(--oc-line);white-space:nowrap}
.lrb-oc-table tbody td{padding:11px 12px;border-bottom:1px solid #eef2f9;vertical-align:top}
.lrb-oc-table tbody tr:last-child td{border-bottom:0}
.lrb-oc-table tbody tr:hover{background:#fafcff}
.lrb-oc-table small{color:var(--oc-muted)}
.lrb-oc-col-actions{text-align:right;white-space:nowrap}

/* Status badges */
.lrb-oc-badge{display:inline-block;padding:4px 10px;border-radius:20px;font-size:11.5px;font-weight:800;white-space:nowrap}
.lrb-oc-badge-pending{background:#fff3d6;color:#9a6700}
.lrb-oc-badge-approved{background:#e3f6ea;color:#11663a}
.lrb-oc-badge-rejected{background:#fdecec;color:#9b1c1c}
.lrb-oc-badge-cancelled{background:#eceff4;color:#516079}
/* v1.9.34: prenotazione dichiarata non a scopo di lucro. Verde come il
   riquadro del modulo, cosi' chi l'ha spuntata riconosce la stessa cosa. */
.lrb-oc-badge-np{background:#dcfce7;color:#14532d;border:1px solid #bbf7d0}
/* v1.9.48 — «Da restituire»: ambra, non rosso. Non è un errore né un ritardo,
   è un'azione da fare — il rosso in questo elenco significa già «manca un
   incasso», e usarlo qui direbbe la cosa sbagliata. Sta sopra tutto il resto
   della cella perché è il motivo per cui quella riga chiede attenzione. */
.lrb-oc-badge-rendere{background:#fef3c7;color:#92400e;border:1px solid #fde68a;font-weight:800}
.lrb-oc-np-riga{margin-bottom:4px}

/* Deposit cell */
.lrb-oc-deposit{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.lrb-oc-deposit-none{color:var(--oc-muted);font-size:12px}
.lrb-oc-deposit-summary{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.lrb-oc-deposit-pill{font-size:11px;font-weight:800;padding:2px 8px;border-radius:20px;background:#eef2f9;color:#41506b}
/* v1.8.85: riga del compenso d'affitto sotto la cauzione, nella stessa cella. */
.lrb-oc-fee-line{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:6px;padding-top:6px;border-top:1px dashed #e2e8f3}
.lrb-oc-fee-label{font-size:11px;font-weight:800;color:var(--oc-muted);text-transform:uppercase;letter-spacing:.4px}
.lrb-oc-fee-pill-ok{background:#dcfce7;color:#166534}
.lrb-oc-fee-pill-due{background:#fff8e5;color:#8a5a00}
.lrb-oc-fee-pill-none{background:#eef2f9;color:#64748b}
.lrb-oc-modal-sub{margin:14px 0 8px;font-size:12px;font-weight:800;color:var(--oc-blue);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--oc-line);padding-bottom:5px}
.lrb-oc-modal-sub:first-of-type{margin-top:4px}
.lrb-oc-deposit-meta{display:flex;gap:8px;flex-wrap:wrap;font-size:11px;color:var(--oc-muted)}
/* v1.9.63 — Chi ha incassato / chi ha restituito. Una riga sola, piu' piccola
   del dato principale e piu' scura del contorno: si legge quando la si cerca,
   non ruba l'occhio all'importo, che resta la cosa per cui si guarda la riga.
   word-break perche' un nome lungo su telefono non deve allargare la colonna. */
.lrb-oc-chi{margin-top:3px;font-size:11px;line-height:1.35;color:var(--oc-muted);opacity:.85;word-break:break-word}
/* Da telefono la cella diventa flex a riga singola (etichetta a sinistra,
   valore a destra, senza andare a capo). Il contenuto di stato — pallino,
   parola, eventuale contrassegno «annullata», e ora i nomi — deve comportarsi
   come UN elemento solo, che puo' restringersi e mandare a capo al proprio
   interno; altrimenti ogni pezzo spinge il successivo fuori dalla cella.
   min-width:0 e' la parte indispensabile: senza, un elemento flex non scende
   mai sotto la larghezza del suo contenuto piu' lungo e trabocca in silenzio.
   Sistema anche il contrassegno «Prenotazione annullata», che gia' usciva. */
@media (max-width:820px){
  .lrb-oc-table td.lrb-oc-col-stato{flex-wrap:wrap}
  .lrb-oc-col-stato .lrb-oc-badge{white-space:normal;text-align:right}
  .lrb-oc-chi{min-width:0;flex:1 1 100%;text-align:right}
}
/* v1.9.16 — L'icona di gestione dentro le celle Cauzione e Codice accesso.
   Misura leggermente ridotta rispetto alla colonna Azioni (30 contro 34): li'
   le icone sono l'unico contenuto, qui convivono con badge e importi e devono
   pesare meno di quelli. Staccata dal contenuto sopra con un margine, cosi' non
   sembra appiccicata all'ultimo badge. */
/* v1.8.73 - Correzione: lrb_deposit_status_class() restituisce slug in inglese
   (received/refunded/withheld/expired), mentre questi selettori erano in italiano:
   la pillola dello stato cauzione non si e' mai colorata. */
.lrb-oc-deposit-received .lrb-oc-deposit-pill,.lrb-oc-deposit-refunded .lrb-oc-deposit-pill{background:#e3f6ea;color:#11663a}
.lrb-oc-deposit-withheld .lrb-oc-deposit-pill,.lrb-oc-deposit-expired .lrb-oc-deposit-pill{background:#fdecec;color:#9b1c1c}

/* Row actions menu */
.lrb-oc-actions{position:relative;display:inline-block}
.lrb-oc-actions summary{list-style:none;cursor:pointer;border:1px solid var(--oc-blue2);color:var(--oc-blue2);background:#fff;border-radius:8px;padding:5px 12px;font-size:12px;font-weight:800}
.lrb-oc-actions summary::-webkit-details-marker{display:none}
.lrb-oc-actions[open] summary{background:#eef4ff}
.lrb-oc-actions-list{position:absolute;right:0;top:34px;z-index:20;display:flex;flex-direction:column;gap:5px;min-width:130px;background:#fff;border:1px solid var(--oc-line);border-radius:12px;box-shadow:0 14px 34px rgba(15,23,42,.16);padding:8px}
.lrb-oc-actions-list .lrb-oc-btn{width:100%}
.lrb-oc-inline-form{margin:0}

/* Pagination */
.lrb-oc-pagination{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:16px;font-size:13px;color:var(--oc-muted)}

/* Modal */
body.lrb-oc-modal-open{overflow:hidden}
.lrb-oc-modal{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:100000;display:flex;align-items:center;justify-content:center;padding:16px}
.lrb-oc-modal[hidden]{display:none !important}
.lrb-oc-modal-card{width:min(520px,100%);max-height:calc(100vh - 40px);overflow:auto;background:#fff;border-radius:16px;box-shadow:0 24px 70px rgba(15,23,42,.3);padding:18px}
.lrb-oc-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
/* v1.9.54 — Le caselle «già incassato» nella finestra di approvazione. Riquadrate e
   staccate dalla nota perché sono una dichiarazione sul denaro, non un dettaglio del
   testo: chi spunta deve accorgersi di star affermando qualcosa. Fondo ambra come il
   resto di ciò che riguarda le cauzioni. */
.lrb-oc-approva-incassi{margin:12px 0 4px;padding:11px 12px;background:#fffbeb;border:1px solid #fde68a;border-radius:11px;display:grid;gap:7px}
.lrb-oc-approva-incassi .lrb-oc-hint{margin:0 0 2px;font-size:12px;line-height:1.4}
.lrb-oc-approva-incassi .lrb-oc-check{font-size:13.5px;font-weight:700;color:#78350f;display:flex;gap:8px;align-items:flex-start;line-height:1.35}
.lrb-oc-approva-incassi .lrb-oc-check input{margin-top:2px;flex:none;width:17px;height:17px}
/* v1.9.54 — Le stesse caselle nell'area operatore da telefono e nel pannello
   WordPress. Aspetto coerente nei tre punti: chi le vede una volta le riconosce
   ovunque. La casella è volutamente grande: si spunta col pollice, spesso in piedi
   davanti a chi sta consegnando i soldi. */
.lrb-mobile-incassi{display:grid;gap:6px;margin:8px 0;padding:9px 10px;background:#fffbeb;border:1px solid #fde68a;border-radius:10px;text-align:left}
.lrb-mobile-incassi label{display:flex;gap:8px;align-items:flex-start;font-size:.8rem;font-weight:700;color:#78350f;line-height:1.3;cursor:pointer}
.lrb-mobile-incassi input{margin-top:1px;flex:none;width:18px;height:18px}
.lrb-admin-incassi{margin:10px 0 2px;padding:10px 12px;background:#fffbeb;border:1px solid #fde68a;border-radius:8px}
.lrb-admin-incassi p{margin:0 0 7px;font-size:12.5px;color:#78350f;line-height:1.4}
.lrb-admin-incassi label{display:flex;gap:8px;align-items:flex-start;font-weight:700;color:#78350f;font-size:13px;line-height:1.35;margin-top:5px;cursor:pointer}
.lrb-oc-modal-head h3{margin:0;color:var(--oc-blue);font-size:17px}
.lrb-oc-modal-close{border:0;background:#f1f5fb;width:32px;height:32px;border-radius:8px;font-size:20px;line-height:1;cursor:pointer;color:#475569}
.lrb-oc-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px;flex-wrap:wrap}

/* Forms */
.lrb-oc-form{display:flex;flex-direction:column;gap:16px}
.lrb-oc-form-section{background:var(--oc-card);border:1px solid var(--oc-line);border-radius:14px;padding:18px}
.lrb-oc-form-section h2{margin:0 0 14px;font-size:16px;color:var(--oc-blue)}
.lrb-oc-form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:13px}
.lrb-oc-form-wide{grid-column:1 / -1}
/* Autocomplete utente nella nuova prenotazione */
.lrb-oc-autocomplete{position:relative;display:block}
/* v1.10.32 — LE ETICHETTE DENTRO LE FINESTRE.
   Terza volta che lo stesso difetto salta fuori in un posto nuovo: una <label>
   che non trova una regola sua si prende il corpo del PORTALE (16px) mentre il
   campo sotto resta a 13-14px, e l'etichetta esce piu' grande del dato che
   nomina. Nella 1.10.29 l'avevo sistemato per la scheda evento
   (.lrb-oc-sez-corpo); le finestre erano rimaste fuori perche' quelle vecchie
   avvolgono i campi in .lrb-oc-form-grid, che le sue misure ce l'ha.
   Qui si prendono le etichette dirette della finestra — quelle che NON stanno
   in una griglia — cosi' anche la prossima finestra nasce gia' giusta. */
.lrb-oc-modal-card > form > label,
.lrb-oc-modal-card > label{display:block;font-size:12px;font-weight:700;color:var(--oc-muted);line-height:1.35}
.lrb-oc-modal-card > form > label > input[type="text"],
.lrb-oc-modal-card > form > label > input[type="url"],
.lrb-oc-modal-card > form > label > input[type="email"],
.lrb-oc-modal-card > form > label > select,
.lrb-oc-modal-card > form > label > textarea,
.lrb-oc-modal-card .lrb-oc-autocomplete input{display:block;width:100%;margin-top:5px;
    padding:9px 11px;font-size:14px;font-weight:500;color:var(--oc-ink);
    border:1px solid var(--oc-line);border-radius:9px;background:#fff;box-sizing:border-box}
.lrb-oc-modal-card > form > label > small{display:block;margin-top:4px;
    font-size:11.5px;font-weight:600;color:var(--oc-muted);line-height:1.4}
.lrb-oc-suggest{position:absolute;left:0;right:0;top:100%;z-index:40;background:#fff;border:1px solid var(--oc-line);border-radius:10px;box-shadow:0 10px 28px rgba(15,23,42,.14);max-height:260px;overflow:auto;margin-top:4px}
.lrb-oc-suggest-item{display:flex;flex-direction:column;gap:2px;padding:8px 12px;cursor:pointer;border-bottom:1px solid #f1f5fb}
.lrb-oc-suggest-item:last-child{border-bottom:0}
.lrb-oc-suggest-item strong{font-size:13px;color:var(--oc-blue);font-weight:700}
.lrb-oc-suggest-item span{font-size:12px;color:var(--oc-muted)}
.lrb-oc-suggest-item:hover,.lrb-oc-suggest-item.is-active{background:#eef5ff}
.lrb-oc-user-chosen{color:#1a7f37;font-weight:700}
.lrb-oc-form label,.lrb-oc-form-grid label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;font-weight:700;color:var(--oc-ink)}
.lrb-oc-form input,.lrb-oc-form select,.lrb-oc-form textarea{border:1px solid var(--oc-line);border-radius:10px;padding:9px 11px;font-size:14px;font-weight:500;color:var(--oc-ink);background:#fff;width:100%}
.lrb-oc-form select[multiple]{min-height:140px}
.lrb-oc-form small{font-weight:500;color:var(--oc-muted);font-size:11.5px}
.lrb-oc-check{flex-direction:row !important;align-items:center;gap:8px !important;font-size:13.5px !important;margin-bottom:6px}
.lrb-oc-check input{width:18px !important;height:18px;flex:0 0 auto}
/* v1.10.35 — la spiegazione sotto una casella non deve gridare come la casella:
   dentro le finestre l'etichetta e' in grassetto, e il <small> ereditava peso e
   misura diventando una seconda riga altrettanto forte. */
.lrb-oc-check small{display:block;margin-top:3px;font-weight:500;font-size:11.5px;color:var(--oc-muted);line-height:1.35}
.lrb-oc-help{font-size:12px;color:var(--oc-muted);margin:10px 0 0;line-height:1.4}
.lrb-oc-form-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}

/* ============================================================
 * Console operatore v158 - Pagamenti & Utenti (stile allineato a Prenotazioni)
 * ============================================================ */

/* Badge stato utente mancanti */
.lrb-oc-badge-trusted{background:#dbeafe;color:#1e40af}
.lrb-oc-badge-blocked{background:#fdecec;color:#9b1c1c}
.lrb-oc-badge-yes{background:#e3f6ea;color:#11663a}
.lrb-oc-badge-no{background:#eceff4;color:#516079}

/* Pannello bianco riusabile (card contenitore di sezione) */
.lrb-oc-panel{background:var(--oc-card);border:1px solid var(--oc-line);border-radius:14px;padding:18px;margin-bottom:16px}
/* v1.8.80: riepilogo cucina degli eventi con pasto — i numeri per fascia d'età
   sono il dato che si guarda per primo, quindi vanno grandi e leggibili da lontano. */
.lrb-oc-meal-panel{border-left:4px solid #dba617}
/* v1.8.86: riepilogo quote per fascia. */
.lrb-oc-tier-panel{border-left:4px solid #166534}
/* v1.8.91: pannello di modifica completa di un'iscrizione, aperto su richiesta.
   In <details> invece che in un modale: la vista iscritti non carica lo script dei
   modali della sezione prenotazioni, e un pannello che si apre da solo non ha
   bisogno di JavaScript per funzionare. */
/* v1.8.92: la matita È il pulsante che apre il pannello, quindi <summary> deve
   avere l'aspetto di un'icona come le altre e non il triangolino predefinito. */
.lrb-oc-regedit{position:relative;display:inline-block}
.lrb-oc-regedit>summary{list-style:none;cursor:pointer}
.lrb-oc-regedit>summary::-webkit-details-marker{display:none}
.lrb-oc-regedit>summary::marker{content:""}
/* Il pannello si apre come una tendina sopra la tabella: dentro la cella
   allargherebbe la colonna azioni e sfaserebbe tutta la riga. */
.lrb-oc-regedit-panel{position:absolute;right:0;top:36px;z-index:40;width:340px;max-width:82vw;background:#fff;border:1px solid var(--oc-line);border-radius:12px;box-shadow:0 14px 34px rgba(15,23,42,.16);padding:12px;text-align:left}
.lrb-oc-regedit-sub{display:block;font-size:11px;font-weight:800;color:var(--oc-blue);text-transform:uppercase;letter-spacing:.4px;margin-top:2px}
.lrb-oc-regedit-check{flex-direction:row!important;align-items:center;gap:6px!important;font-weight:600!important;color:var(--oc-ink)!important}
/* v1.8.95: `min(140px,100%)` invece di `140px` secco — sui telefoni più stretti
   (320px) il minimo fisso non entrava nella colonna e la griglia sfondava di
   qualche pixel invece di scendere a una colonna sola. */
.lrb-oc-regedit-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(140px,100%),1fr));gap:7px}
.lrb-oc-regedit-form label{display:flex;flex-direction:column;gap:3px;font-size:11.5px;font-weight:700;color:var(--oc-muted)}
.lrb-oc-regedit-form input,.lrb-oc-regedit-form textarea{width:100%;font-size:13px;padding:6px 8px;border:1px solid var(--oc-line);border-radius:8px;box-sizing:border-box}
/* v1.10.2 — Niente maniglia di trascinamento su Intolleranze e Note.
   Diego: «posso modificare i campi intolleranze e note cliccando sugli angoli
   del riquadro dove indica la freccia».
   Il browser mette da solo una maniglia in basso a destra di ogni <textarea>:
   in un riquadro grande e' comoda, qui e' un danno. Il pannello e' una
   finestrella con la sua misura, e trascinando l'angolo il campo sborda dal
   riquadro e scompagina tutto il resto del modulo.
   Si toglie la maniglia e si lascia che siano i campi a crescere da soli
   secondo il testo (field-sizing, dove il browser lo supporta): il
   comportamento che uno si aspetta senza doverci pensare. */
.lrb-oc-regedit-form textarea{resize:none;min-height:52px;font-family:inherit;line-height:1.45;
  field-sizing:content;max-height:180px;overflow-y:auto}
.lrb-oc-regedit-wide{grid-column:1/-1}
.lrb-oc-regedit-actions{grid-column:1/-1}
.lrb-oc-regedit-danger{margin-top:10px;padding-top:8px;border-top:1px dashed #fecdd3;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.lrb-oc-regedit-danger .lrb-oc-hint{margin:0;flex:1 1 180px;font-size:11.5px}
@media (max-width:1200px){
  /* A schede la tendina non serve: c'è tutta la larghezza della scheda. */
  .lrb-oc-regedit{display:block}
  .lrb-oc-regedit-panel{position:static;width:auto;max-width:none;box-shadow:none;margin-top:8px}
}

/* ============================================================================
   v1.10.2 — DA PC LA MODIFICA ISCRIZIONE SI APRE AL CENTRO.

   Diego: «sarebbe più comoda nel centro dello schermo quella finestra».

   Prima il pannello era agganciato alla riga (position:absolute, right:0,
   top:36px). Con poche righe funzionicchiava; con l'elenco pieno la finestrella
   nasceva in fondo alla pagina, spesso mezza fuori dallo schermo, e per
   compilarla bisognava scorrere. Peggio ancora sull'ultima riga della tabella,
   dove si apriva oltre il bordo del riquadro.

   Al centro invece nasce sempre nello stesso posto, indipendentemente da quale
   riga si stava guardando: il posto lo si impara una volta sola.

   Vale solo sopra i 1200px, dove la tabella e' una tabella vera. Sotto resta
   com'era — a schede, il pannello in linea sotto la riga e' la cosa giusta e
   una finestra al centro sarebbe di troppo su uno schermo stretto.
   ========================================================================= */
@media (min-width:1201px){
  /* Il velo dietro: sta sul <details> aperto, non serve markup nuovo.
     `position:fixed` lo aggancia alla finestra, non alla riga — ed e' proprio
     il legame con la riga che si vuole rompere. */
  .lrb-oc-regedit[open]::before{
    content:'';position:fixed;inset:0;z-index:59;
    background:rgba(15,23,42,.42);
    animation:lrb-vela .16s ease-out}
  .lrb-oc-regedit[open] > .lrb-oc-regedit-panel{
    position:fixed;
    top:50%;left:50%;right:auto;
    transform:translate(-50%,-50%);
    z-index:60;
    width:min(560px,92vw);max-width:none;
    /* La finestra non deve mai superare lo schermo: se i campi sono tanti
       (evento con tariffario, viaggio, note) scorre dentro di se'. */
    max-height:86vh;overflow-y:auto;
    padding:18px 20px;
    box-shadow:0 24px 60px rgba(15,23,42,.28);
    animation:lrb-apri .16s ease-out}
  /* Con piu' spazio i campi possono stare piu' larghi e leggibili. */
  .lrb-oc-regedit[open] > .lrb-oc-regedit-panel .lrb-oc-regedit-form{
    grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:10px}
  .lrb-oc-regedit[open] > .lrb-oc-regedit-panel .lrb-oc-regedit-form input,
  .lrb-oc-regedit[open] > .lrb-oc-regedit-panel .lrb-oc-regedit-form textarea,
  .lrb-oc-regedit[open] > .lrb-oc-regedit-panel .lrb-oc-regedit-form select{
    font-size:14px;padding:8px 10px}
  .lrb-oc-regedit[open] > .lrb-oc-regedit-panel .lrb-oc-regedit-form label{font-size:12px}
}
@keyframes lrb-vela{from{opacity:0}to{opacity:1}}
@keyframes lrb-apri{from{opacity:0;transform:translate(-50%,-48%) scale(.98)}
                    to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@media (prefers-reduced-motion:reduce){
  .lrb-oc-regedit[open]::before,
  .lrb-oc-regedit[open] > .lrb-oc-regedit-panel{animation:none}
}
/* v1.8.89: blocco "partecipanti per fascia" nell'iscrizione manuale — celle tutte
   della stessa altezza, così i campi restano allineati anche quando un'etichetta
   va a capo e un'altra no (era il difetto segnalato). */
/* v1.8.90: griglia dei permessi operatore. Gli stili esistevano solo nello <style>
   inline della pagina wp-admin, quindi la stessa griglia riusata nella scheda utente
   della console sarebbe uscita senza formattazione — è lo stesso inciampo del picker
   gruppi in v1.8.79. Stanno qui, dove valgono in tutti e due i contesti. */
/* v1.8.92 - griglia permessi compatta: righe basse, colonne strette, cosi' i 17
   permessi stanno in poche righe invece che in una colonna lunghissima. */
.lrb-perm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:3px 10px;margin:6px 0 0}
.lrb-perm-grid label{background:#f6f7f7;border:1px solid #e2e4e7;border-radius:6px;padding:4px 7px;display:block;cursor:pointer}
.lrb-perm-grid label:hover{border-color:#1267d8;background:#fbfdff}
.lrb-perm-main{display:flex;align-items:center;gap:6px;font-weight:600;color:#1d2327;font-size:12px;line-height:1.25}
.lrb-perm-main input{margin:0;flex:0 0 auto;transform:scale(.92)}
.lrb-oc-tierbox{margin:0 0 12px}
.lrb-oc-tierbox-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:9px;margin-top:6px}
.lrb-oc-tiercell{display:grid;grid-template-columns:1fr 74px;grid-template-rows:auto auto;align-items:center;gap:1px 10px;background:#f8fafc;border:1px solid var(--oc-line);border-radius:10px;padding:8px 10px}
.lrb-oc-tiercell-name{grid-column:1;grid-row:1;font-size:13px;font-weight:700;color:var(--oc-ink);line-height:1.25}
.lrb-oc-tiercell-price{grid-column:1;grid-row:2;font-size:11.5px;font-weight:600;color:var(--oc-muted)}
.lrb-oc-tiercell input{grid-column:2;grid-row:1/span 2;width:100%;text-align:center;font-weight:700;align-self:center}
.lrb-oc-tier-panel .lrb-oc-meal-figure-main{background:#ecfdf3;border-color:#b7ebc6}
.lrb-oc-tier-panel .lrb-oc-meal-figure-main strong{color:#166534}
.lrb-oc-badge-meal{background:#fff8e5;color:#8a5a00;border:1px solid #f0dca4}
.lrb-oc-badge-trip{background:#eef4ff;color:#1e40af;border:1px solid #c7d7fb}
/* v1.8.82: scelta del tipo evento — ogni voce spiega cosa cambia nel modulo di adesione. */
.lrb-oc-eventtype{display:flex;align-items:flex-start;gap:9px;padding:9px 11px;margin:0 0 7px;border:1px solid var(--oc-line);border-radius:11px;background:#fff;cursor:pointer}
.lrb-oc-eventtype:hover{border-color:var(--oc-blue2);background:#fbfdff}
.lrb-oc-eventtype input{margin:3px 0 0;flex:0 0 auto}
.lrb-oc-eventtype span{display:block}
.lrb-oc-eventtype strong{display:block;font-size:13.5px;color:var(--oc-ink)}
.lrb-oc-eventtype small{display:block;margin-top:2px;font-size:12px;color:var(--oc-muted);line-height:1.45}
/* v1.10.27 — La scheda evento e' cresciuta di release in release ed era
   diventata un elenco unico di caselle, tutte allo stesso livello, ognuna
   seguita dalla sua spiegazione: dallo schermo di un telefono non si capiva
   piu' dove finiva un argomento e cominciava il successivo.
   Qui non si aggiunge grafica: si raggruppa. Stessi colori, stessi bordi e
   stesso raggio del resto della console; quello che cambia e' che ogni
   argomento sta in un blocco richiudibile, e i due che si usano sempre
   restano aperti. Le voci di uso raro si aprono solo quando servono. */
.lrb-oc-sez{border:1px solid var(--oc-line);border-radius:12px;background:#fff;margin:0 0 10px;overflow:hidden}
.lrb-oc-sez > summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;
    padding:11px 13px;font-size:13.5px;font-weight:800;color:var(--oc-blue);background:#f8fafd}
.lrb-oc-sez > summary::-webkit-details-marker{display:none}
.lrb-oc-sez > summary:hover{background:#f1f5fb}
/* La freccia: un solo carattere disegnato in CSS, nessuna immagine da caricare. */
.lrb-oc-sez > summary::before{content:'';flex:0 0 auto;width:7px;height:7px;margin-left:2px;
    border-right:2px solid var(--oc-muted);border-bottom:2px solid var(--oc-muted);
    transform:rotate(-45deg);transition:transform .15s ease}
.lrb-oc-sez[open] > summary::before{transform:rotate(45deg)}
.lrb-oc-sez > summary .lrb-oc-sez-nota{margin-left:auto;font-size:11.5px;font-weight:600;color:var(--oc-muted);text-align:right}
.lrb-oc-sez-corpo{padding:13px}
/* v1.10.47 — Console: la foto della settimana e gli avvisi liberi dell'Agenda.
   Gli avvisi sono coppie titolo+testo che si aggiungono e si tolgono: un filo
   di cornice basta a far capire dove finisce uno e comincia l'altro. */
/* v1.10.52 — Console: le schede dei servizi di turno.
   Compaiono solo dal secondo servizio in poi: con uno solo la sezione resta
   quella di sempre, e una fila di schede con una scheda sola sarebbe una
   decorazione che chiede di essere capita per niente. */
.lrb-oc-shift-servizi-bar{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.lrb-oc-shift-servizio{
  --srv-tinta:var(--oc-blue,#273583);
  display:inline-flex;align-items:center;gap:6px;
  padding:7px 14px;border-radius:999px;
  border:1px solid var(--oc-line,#e3e8f2);background:#fff;
  color:var(--oc-ink,#26324d);font-weight:700;font-size:13.5px;text-decoration:none;
}
.lrb-oc-shift-servizio:hover{border-color:var(--srv-tinta)}
.lrb-oc-shift-servizio.is-attivo{background:var(--srv-tinta);border-color:var(--srv-tinta);color:#fff}
.lrb-oc-shift-servizi-table tr.is-attivo td{background:#f3f6fb}
.lrb-oc-shift-fasce{display:flex;flex-direction:column;gap:6px;margin:10px 0}
/* v1.10.53 — LE FASCE IN COLONNE DI MISURA FISSA.
   Diego, a finestra massimizzata: «su pc allargando tutto sono sballati i
   campi». La riga era un flex con `flex:1 1 160px` sul nome: su un monitor da
   1920 quel campo diventava 812px — mezza schermata per scriverci «mattina» —
   e i due orari finivano appiccicati al bordo destro, lontani dalla parola che
   li riguarda.
   Qui le colonne sono una griglia che NON si allarga oltre il necessario
   (`justify-content:start`): la riga resta uguale a se stessa a 1280 come a
   1920, e il legame fra il nome e i suoi orari si vede perche' stanno vicini.
   Sotto i 700px la griglia si scioglie e torna una colonna, come tutto il
   resto della console. */
.lrb-oc-shift-fascia{
  display:grid;grid-template-columns:minmax(0,220px) auto;
  gap:8px 12px;align-items:center;justify-content:start;
}
.lrb-oc-shift-fascia input[type="text"]{min-width:0;width:100%}
.lrb-oc-shift-fascia-ore{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.lrb-oc-shift-fascia-ore label{
  display:inline-flex;align-items:center;gap:6px;
  font-size:12px;font-weight:700;color:var(--oc-muted,#5b6479);margin:0;
}
.lrb-oc-shift-fascia-ore input[type="time"]{width:118px}
@media (max-width:700px){
  .lrb-oc-shift-fascia{grid-template-columns:1fr}
  .lrb-oc-shift-fascia-ore{display:grid;grid-template-columns:1fr 1fr}
  .lrb-oc-shift-fascia-ore input[type="time"]{width:100%}
}
/* v1.10.53 — LE ETICHETTE DENTRO IL CORPO DI UNA SEZIONE. SESTA VOLTA.
   L'altra meta' della freccia verde di Diego, e quella che non si spiegava
   guardando il modulo: «Nome» finiva ACCANTO al suo campo mentre «Gruppo che
   lo copre» e «Colore (facoltativo)» stavano sopra il loro. Non era un caso:
   le etichette erano tutte e tre `display:block`, e le due lunghe sembravano
   a capo solo perche' il testo non ci stava in 250px e andava a capo da solo.
   La ragione e' la solita di questo foglio: la regola generica

       .lrb-oc-sez-corpo label:not(.lrb-oc-check):not(.lrb-oc-eventtype)

   vale (0,3,1) e batte `.lrb-oc-form-grid label`, che vale (0,1,1), anche se
   quella parla proprio delle etichette dentro una griglia. Finche' nessun
   modulo stava dentro un .lrb-oc-sez-corpo il conflitto non si vedeva; il
   pannello dei servizi (1.10.52) e' il primo, e l'ha svegliato.
   Si rialza la specificita' invece di mettere !important: cosi' la regola
   resta leggibile e chi aggiunge un modulo qui dentro trova gia' giusto.
   (Le cinque volte precedenti sono annotate nel RILASCIO: e' il difetto che
   in questo foglio di stile torna piu' spesso.) */
.lrb-oc-sez-corpo .lrb-oc-form-grid label:not(.lrb-oc-check):not(.lrb-oc-eventtype),
.lrb-oc-sez-corpo label.lrb-oc-field:not(.lrb-oc-check):not(.lrb-oc-eventtype){
  display:flex;flex-direction:column;gap:5px;
}
.lrb-oc-sez-corpo .lrb-oc-shift-fascia-ore label:not(.lrb-oc-check):not(.lrb-oc-eventtype){
  display:inline-flex;flex-direction:row;align-items:center;gap:6px;
}
/* Le note del servizio sono due righe, non un foglio: senza un tetto, su un
   monitor grande la casella diventa larga quanto il pannello. */
.lrb-oc-shift-servizi-panel .lrb-shift-form > label.lrb-oc-field{max-width:520px}
/* Il perche' del «non si puo' eliminare», al posto del pulsante che non c'e'. */
.lrb-oc-shift-servizio-nodel{font-size:11.5px;color:var(--oc-muted,#5b6479);cursor:help;border-bottom:1px dotted var(--oc-line,#e3e8f2)}
.lrb-shift-chiusura-tutti{font-size:11.5px;margin-right:6px}

.lrb-oc-agenda-foto{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:8px 0 4px}
.lrb-oc-agenda-foto img{width:180px;height:120px;object-fit:cover;border-radius:10px;border:1px solid var(--oc-line)}
.lrb-oc-agenda-avvisi{margin-top:16px}
.lrb-oc-agenda-avvisi h4{margin:0 0 4px}
.lrb-oc-agenda-avviso{border:1px solid var(--oc-line);border-radius:12px;padding:12px;margin:10px 0}
.lrb-oc-agenda-avviso .lrb-oc-field{margin-bottom:8px}
.lrb-oc-agenda-avviso .lrb-oc-field:last-child{margin-bottom:0}
/* Dentro una sezione i campi respirano da soli: niente margini a mano. */
.lrb-oc-sez-corpo > .lrb-oc-field{margin:0 0 14px !important}
.lrb-oc-sez-corpo > .lrb-oc-field:last-child{margin-bottom:0 !important}
.lrb-oc-sez-corpo .lrb-oc-hint{font-size:12px;line-height:1.45;color:var(--oc-muted)}
/* Una riga = una domanda: l'aiuto sta attaccato alla sua casella, non a mezza
   pagina di distanza. */
.lrb-oc-riga{padding:10px 0;border-top:1px dashed var(--oc-line)}
.lrb-oc-riga:first-child{padding-top:0;border-top:0}
.lrb-oc-riga:last-child{padding-bottom:0}
.lrb-oc-riga > .lrb-oc-hint{margin:5px 0 0 26px}
.lrb-oc-riga > label + .lrb-oc-hint{margin-left:26px}
.lrb-oc-riga > label:not(.lrb-oc-check) + .lrb-oc-hint{margin-left:0}
.lrb-oc-riga input[type="number"]{max-width:130px}
/* v1.10.29 — LA MISURA DELLE ETICHETTE, UNA VOLTA PER TUTTE.
   Diego, seconda segnalazione con lo screen di «Privacy e disdetta»: «da
   sistemare anche questo font grafica». Stesso difetto delle domande in piu',
   altro punto della scheda — e la prima volta l'avevo risolto solo per le
   domande (.lrb-oc-domanda) invece che alla radice.
   La causa e' sempre quella: una <label> dentro un blocco della scheda non
   trovava nessuna regola che le desse una misura, quindi si prendeva il corpo
   del PORTALE (16px) mentre il campo sotto restava a 13-14px. Risultato:
   l'etichetta piu' grande del dato, che e' il contrario di quello che serve.
   Il selettore prende QUALUNQUE etichetta dentro il corpo di una sezione, non
   un elenco di punti noti: cosi' anche il tariffario — che nessuno dei due
   aveva guardato, e che il collaudo ha trovato da solo — e' venuto a posto, e
   i campi che verranno aggiunti in futuro nascono gia' giusti. */
.lrb-oc-sez-corpo label:not(.lrb-oc-check):not(.lrb-oc-eventtype){
    display:block;font-size:12px;font-weight:700;color:var(--oc-muted);line-height:1.35}
/* Il dato e' piu' importante dell'etichetta che lo nomina: piu' grande, e nero. */
.lrb-oc-sez-corpo .lrb-oc-riga input[type="text"],
.lrb-oc-sez-corpo .lrb-oc-riga input[type="url"],
.lrb-oc-sez-corpo .lrb-oc-riga input[type="number"],
.lrb-oc-sez-corpo .lrb-oc-riga select,
.lrb-oc-sez-corpo .lrb-oc-riga textarea,
.lrb-oc-sez-corpo .lrb-oc-duo input[type="text"],
.lrb-oc-sez-corpo .lrb-oc-duo input[type="url"],
.lrb-oc-sez-corpo .lrb-oc-duo input[type="number"],
.lrb-oc-sez-corpo .lrb-oc-duo select,
.lrb-oc-sez-corpo .lrb-oc-duo textarea{
    display:block;width:100%;margin-top:4px;font-size:14px;font-weight:500;color:var(--oc-ink)}
/* Le caselle da spuntare restano leggibili: non sono etichette di campo. */
.lrb-oc-sez-corpo .lrb-oc-check{font-size:13.5px;font-weight:600;color:var(--oc-ink)}
/* Una tendina lunga non deve prendersi tutta la riga sul PC. */
.lrb-oc-sez-corpo .lrb-oc-duo select{max-width:340px}
.lrb-oc-sez-corpo .lrb-oc-riga textarea{min-height:72px;resize:vertical;font-family:inherit}
/* Due campi corti stanno affiancati sul PC e uno sotto l'altro sul telefono. */
.lrb-oc-duo{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
/* v1.10.29 — LE DOMANDE IN PIU' DEL MODULO.
   Nella 1.10.28 «Domanda 1» usciva grande come un titolo: la <label> stava
   dentro un <div> nudo e si prendeva il corpo del portale invece di quello
   della console, e la casella accanto restava piccola. Qui ogni domanda e' una
   scheda sua, con la misura scritta esplicitamente: non eredita piu' niente.
   Sono quattro, quindi due per riga sul PC e una per riga stretto. */
.lrb-oc-domande{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}
.lrb-oc-domanda{border:1px solid var(--oc-line);border-radius:11px;background:#fcfdff;padding:10px 11px}
/* La scheda di una domanda gia' impostata si stacca appena dalle vuote. */
.lrb-oc-domanda-piena{background:#fff;border-color:#cfe0f7}
.lrb-oc-domanda > label{display:block;font-size:12px !important;font-weight:700;color:var(--oc-muted);margin:0 0 5px}
.lrb-oc-domanda input[type="text"]{display:block;width:100%;margin-top:4px;font-size:14px;font-weight:500}
.lrb-oc-domanda > label.lrb-oc-check{display:flex;align-items:center;gap:8px;margin:0;
    font-size:13px !important;font-weight:600;color:var(--oc-ink)}
.lrb-oc-domanda > label.lrb-oc-check input{margin:0}
@media(max-width:640px){
  .lrb-oc-domande{grid-template-columns:1fr}
  .lrb-oc-domanda{padding:10px}
}
@media(max-width:640px){
  .lrb-oc-sez > summary{padding:12px 12px;font-size:13px}
  .lrb-oc-sez-corpo{padding:12px 11px}
  .lrb-oc-sez > summary .lrb-oc-sez-nota{display:none}
  .lrb-oc-riga > .lrb-oc-hint,.lrb-oc-riga > label + .lrb-oc-hint{margin-left:0}
  /* Sul telefono il dito ha bisogno di piu' bersaglio della vista. */
  .lrb-oc-sez-corpo .lrb-oc-check{align-items:flex-start;line-height:1.35}
  .lrb-oc-sez-corpo .lrb-oc-check input{width:20px;height:20px;margin-top:1px}
  .lrb-oc-riga input[type="number"]{max-width:100%}
}
/* v1.10.29 — L'INCASSO: ICONA EURO E FINESTRA, COME LE CAUZIONI.
   Diego: «fai un'icona con il $ come hai fatto per le cauzioni? cliccando sopra
   si decide quanto ha pagato e calcoli il restante». Quindi niente caselle
   dentro la riga (la prima stesura la riempiva): l'icona e' gia' quella delle
   prenotazioni, qui si veste solo il conto dentro la finestra. */
.lrb-oc-cassa-td small{display:block;margin-top:2px;font-size:11.5px;line-height:1.35;color:var(--oc-muted)}
.lrb-oc-cassa-fatto{font-weight:800;color:#1b7f35}
/* Il conto: tre righe, l'ultima e' quella che si legge a voce al banco. */
.lrb-oc-inc-conto{margin:0 0 14px;border:1px solid var(--oc-line);border-radius:12px;overflow:hidden;background:#f8fafd}
.lrb-oc-inc-conto > div{display:flex;justify-content:space-between;align-items:baseline;gap:14px;
    padding:9px 13px;border-bottom:1px solid var(--oc-line);font-size:13px}
.lrb-oc-inc-conto > div:last-child{border-bottom:0}
.lrb-oc-inc-conto span{color:var(--oc-muted);font-weight:600}
.lrb-oc-inc-conto strong{font-size:15px;color:var(--oc-ink);font-variant-numeric:tabular-nums}
.lrb-oc-inc-resta{background:#fff8e5}
.lrb-oc-inc-resta strong{font-size:19px;font-weight:800;color:#8a5a00}
.lrb-oc-inc-campo{display:block;font-size:12px;font-weight:700;color:var(--oc-muted)}
.lrb-oc-inc-campo input{display:block;width:100%;max-width:200px;margin-top:6px;padding:11px 12px;
    font-size:19px;font-weight:800;text-align:right;font-variant-numeric:tabular-nums;
    border:1px solid var(--oc-line);border-radius:10px;background:#fff;color:var(--oc-ink)}
.lrb-oc-inc-campo input:focus{border-color:var(--oc-blue2);outline:none;box-shadow:0 0 0 3px rgba(18,103,216,.14)}
.lrb-oc-inc-live{margin:8px 0 0;min-height:2.6em}
.lrb-oc-inc-troppo{color:#b42318;font-weight:700}
@media(max-width:640px){
  .lrb-oc-inc-campo input{max-width:100%;font-size:20px;padding:13px 12px}
  .lrb-oc-inc-resta strong{font-size:21px}
}
/* v1.8.82: riepilogo organizzatore dei viaggi, stesse figure del riepilogo cucina. */
.lrb-oc-trip-panel{border-left:4px solid #2563eb}
.lrb-oc-trip-panel .lrb-oc-meal-figure-main{background:#eef4ff;border-color:#c7d7fb}
.lrb-oc-trip-panel .lrb-oc-meal-figure-main strong{color:#1e40af}
.lrb-oc-meal-figures{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 12px}
.lrb-oc-meal-figure{flex:1 1 120px;min-width:110px;background:#f8fafc;border:1px solid var(--oc-line);border-radius:11px;padding:10px 12px;text-align:center}
.lrb-oc-meal-figure strong{display:block;font-size:22px;font-weight:800;color:var(--oc-blue);line-height:1.15}
.lrb-oc-meal-figure span{display:block;font-size:11.5px;font-weight:600;color:var(--oc-muted);margin-top:2px}
.lrb-oc-meal-figure-main{background:#fff8e5;border-color:#f0dca4}
.lrb-oc-meal-figure-main strong{color:#8a5a00}
.lrb-oc-meal-intol ul{margin:6px 0 0;padding-left:18px;list-style:disc;color:var(--oc-ink);font-size:13px;line-height:1.5}
@media(max-width:520px){.lrb-oc-meal-figure{flex:1 1 calc(50% - 10px)}}
.lrb-oc-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 14px}
.lrb-oc-panel-head h2{margin:0;font-size:16px;color:var(--oc-blue);font-weight:800}
.lrb-oc-panel-head .lrb-oc-count{font-size:12.5px;color:var(--oc-muted);font-weight:700}
.lrb-oc-panel-head p{margin:0;font-size:12.5px;color:var(--oc-muted)}
.lrb-oc-panel > .lrb-oc-table-wrap{margin:0}

/* Griglia form interna ai pannelli */
.lrb-oc-form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-bottom:14px}
.lrb-oc-form-grid label,.lrb-oc-field{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:700;color:var(--oc-muted)}
.lrb-oc-form-grid input,.lrb-oc-form-grid select,.lrb-oc-form-grid textarea,.lrb-oc-field input,.lrb-oc-field select,.lrb-oc-field textarea{border:1px solid var(--oc-line);border-radius:9px;padding:9px 11px;font-size:14px;font-weight:500;color:var(--oc-ink);background:#fff;box-sizing:border-box}
.lrb-oc-form-grid textarea,.lrb-oc-field textarea{min-height:64px;resize:vertical;font-family:inherit}
.lrb-oc-field > span{font-size:12px;font-weight:700;color:var(--oc-muted);display:block;margin-bottom:6px}
.lrb-oc-field input[type="color"]{padding:4px;height:42px;cursor:pointer}
/* v1.8.76 - Valore statico "di sola lettura" dentro un .lrb-oc-field, per un dato bloccato
   che non ha senso mostrare come <select>/<input> modificabile (es. "Destinatari" per un
   responsabile di gruppo scoped, dove l'unica scelta è già implicita). */
.lrb-oc-static-value{margin:0;padding:9px 11px;border:1px solid var(--oc-line);border-radius:9px;background:#f6f7fb;color:var(--oc-ink);font-size:14px;font-weight:500}
.lrb-oc-form-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}

/* v1.8.61: editor Comunicazioni — riga emoji rapide + anteprima email */
.lrb-oc-field .wp-editor-wrap{width:100%}
.lrb-oc-emoji-row{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}
.lrb-oc-emoji-btn{border:1px solid var(--oc-line);background:#fff;border-radius:8px;padding:4px 8px;font-size:16px;line-height:1.3;cursor:pointer}
.lrb-oc-emoji-btn:hover{border-color:var(--oc-blue);background:#f3f7ff}
.lrb-oc-comm-preview-panel{border:1px solid #dbe6fb;background:#f7faff}
.lrb-oc-comm-preview-frame{width:100%;min-height:520px;border:1px solid var(--oc-line);border-radius:10px;background:#fff}

/* Riga di checkbox (regole, restrizioni, gruppi) */
.lrb-oc-check-row{display:flex;flex-wrap:wrap;gap:10px 18px;margin:4px 0 14px}
.lrb-oc-check-row .lrb-oc-check{margin:0}
.lrb-oc-check{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:var(--oc-ink)}
.lrb-oc-check input{width:17px;height:17px;flex:0 0 auto}

/* Pallino colore risorsa */
.lrb-oc-dot{display:inline-block;width:11px;height:11px;border-radius:50%;vertical-align:middle;margin-right:3px;border:1px solid rgba(0,0,0,.12)}

/* Pulsante "Console operatore" nella topbar del portale (switch verso la console) */
.lrb-console-switch{display:inline-flex;align-items:center;gap:6px;background:#0b63ce;color:#fff !important;border-radius:9px;padding:7px 12px;font-weight:700;font-size:13px;text-decoration:none;line-height:1;white-space:nowrap;margin-right:10px;transition:filter .15s}
.lrb-console-switch:hover{filter:brightness(1.08)}
.lrb-console-switch .dashicons{font-size:16px;width:16px;height:16px}
@media (max-width:600px){
  .lrb-console-switch{padding:6px 10px;font-size:12px}
  .lrb-console-switch .dashicons{font-size:15px;width:15px;height:15px}
}

/* CTA verso la console operatore (mostrata nel portale quando la console è attiva) */
.lrb-operator-console-cta{border:1px solid #cfe0fa;background:linear-gradient(180deg,#f5f9ff,#eef4ff)}
.lrb-operator-console-cta h3{color:#0b2a66}
.lrb-operator-console-cta p{color:#46566f;font-size:13.5px;line-height:1.5;margin:6px 0 12px}
.lrb-operator-console-cta .lrb-button{display:block;text-align:center}

/* Ricerca dinamica (filtro istantaneo) */
.lrb-oc-search{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--oc-line);border-radius:10px;padding:0 12px;margin:0 0 14px;height:42px}
.lrb-oc-search .dashicons{color:var(--oc-muted);font-size:18px;width:18px;height:18px;flex:0 0 auto}
.lrb-oc-search input{flex:1 1 auto;border:0;outline:none;background:transparent;font-size:14px;color:var(--oc-ink);height:100%;padding:0}
.lrb-oc-search input::placeholder{color:#9aa7bd}
.lrb-oc-search-count{font-size:12px;color:var(--oc-muted);font-weight:700;white-space:nowrap;flex:0 0 auto}

/* Statistiche dashboard */
.lrb-oc-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;margin-bottom:22px}
.lrb-oc-stat{display:flex;align-items:center;gap:14px;background:var(--oc-card);border:1px solid var(--oc-line);border-radius:14px;padding:16px 18px;text-decoration:none;color:var(--oc-ink);transition:transform .12s,box-shadow .12s,border-color .12s;position:relative;overflow:hidden}
.lrb-oc-stat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--oc-blue2)}
.lrb-oc-stat:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(11,42,102,.10);border-color:#c9d8f3}
.lrb-oc-stat-icon{font-size:26px;width:42px;height:42px;display:flex;align-items:center;justify-content:center;border-radius:11px;background:#eef4ff;color:var(--oc-blue2);flex:0 0 auto}
.lrb-oc-stat-body{display:flex;flex-direction:column;gap:0;min-width:0}
.lrb-oc-stat-body strong{font-size:26px;line-height:1.05;color:var(--oc-blue);font-weight:800}
.lrb-oc-stat-label{font-size:13px;font-weight:700;color:var(--oc-ink);margin-top:2px}
.lrb-oc-stat-body small{font-size:11.5px;color:var(--oc-muted)}
.lrb-oc-stat-warn::before{background:#e0a008}
.lrb-oc-stat-warn .lrb-oc-stat-icon{background:#fff6e0;color:#a9710a}
.lrb-oc-stat-ok::before{background:#16a34a}
.lrb-oc-stat-ok .lrb-oc-stat-icon{background:#e6f7ec;color:#11663a}
.lrb-oc-stat-info::before{background:var(--oc-blue2)}
.lrb-oc-section-title{font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--oc-muted);margin:0 0 12px}

/* Grafici dashboard */
.lrb-oc-charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-bottom:24px}
.lrb-oc-chart-card{background:var(--oc-card);border:1px solid var(--oc-line);border-radius:14px;padding:18px}
.lrb-oc-chart-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}
.lrb-oc-chart-head h3{margin:0;font-size:15px;color:var(--oc-blue);font-weight:800}
.lrb-oc-chart-head span{font-size:12px;color:var(--oc-muted);font-weight:600}
.lrb-oc-donut-wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.lrb-oc-donut{flex:0 0 auto}
.lrb-oc-donut-num{font-size:26px;font-weight:800;fill:var(--oc-blue)}
.lrb-oc-donut-cap{font-size:9px;fill:var(--oc-muted);text-transform:uppercase;letter-spacing:.05em}
.lrb-oc-legend{list-style:none;margin:0;padding:0;flex:1 1 140px;display:flex;flex-direction:column;gap:8px}
.lrb-oc-legend li{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--oc-ink)}
.lrb-oc-legend-dot{width:11px;height:11px;border-radius:3px;flex:0 0 auto}
.lrb-oc-legend strong{margin-left:auto;color:var(--oc-blue);font-weight:800}
.lrb-oc-bars{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;height:170px;padding-top:10px}
.lrb-oc-bar-col{flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;height:100%}
.lrb-oc-bar-val{font-size:12px;font-weight:800;color:var(--oc-blue)}
.lrb-oc-bar{width:100%;max-width:46px;background:linear-gradient(180deg,#2f7be0,#0b63ce);border-radius:7px 7px 0 0;min-height:4px;transition:height .3s}
.lrb-oc-bar-label{font-size:11px;color:var(--oc-muted);font-weight:600}

/* Stato vuoto compatto dentro pannelli */
.lrb-oc-empty-text{text-align:center;color:var(--oc-muted);padding:26px 14px;font-size:13.5px;background:#fafcff;border:1px dashed var(--oc-line);border-radius:12px}

/* Cella azioni in tabella: bottoni inline o dropdown */
.lrb-oc-cell-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.lrb-oc-form-inline{display:inline-flex;gap:6px;align-items:center;margin:0}
.lrb-oc-form-inline input[type="password"],.lrb-oc-form-inline input[type="text"]{width:118px;border:1px solid var(--oc-line);border-radius:8px;padding:6px 9px;font-size:12.5px;box-sizing:border-box}

/* ---- Utenti: card pulita con accordion Gestisci ---- */
.lrb-oc-users-list{display:flex;flex-direction:column;gap:12px}
.lrb-oc-user-card{background:var(--oc-card);border:1px solid var(--oc-line);border-radius:14px;overflow:hidden;transition:box-shadow .12s,border-color .12s}
.lrb-oc-user-card:hover{border-color:#c9d8f3;box-shadow:0 6px 18px rgba(11,42,102,.07)}
.lrb-oc-user-head{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;padding:14px 16px}
.lrb-oc-user-ident{display:flex;flex-direction:column;gap:2px;min-width:0}
.lrb-oc-user-ident strong{font-size:15px;color:#1d2327;font-weight:700}
.lrb-oc-user-ident small{font-size:12.5px;color:var(--oc-muted);overflow:hidden;text-overflow:ellipsis}
.lrb-oc-user-badges{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;align-items:center}
.lrb-oc-user-card details{border-top:1px solid var(--oc-line)}
.lrb-oc-user-card details[open]{background:#fafcff}
.lrb-oc-user-card summary{cursor:pointer;padding:10px 16px;color:var(--oc-blue2);font-weight:800;font-size:12.5px;user-select:none;list-style:none;display:flex;align-items:center;gap:6px}
.lrb-oc-user-card summary::-webkit-details-marker{display:none}
.lrb-oc-user-card summary::before{content:"\f140";font-family:dashicons;font-size:18px;line-height:1;transition:transform .15s}
.lrb-oc-user-card details[open] summary::before{transform:rotate(180deg)}
.lrb-oc-user-body{padding:4px 16px 16px;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.lrb-oc-user-block{background:#fff;border:1px solid var(--oc-line);border-radius:12px;padding:13px}
.lrb-oc-user-block h4{margin:0 0 10px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--oc-blue);font-weight:800}
.lrb-oc-user-block form{margin:0}
.lrb-oc-user-block .lrb-oc-field{margin-bottom:10px}
.lrb-oc-user-block .lrb-oc-hint{font-size:12px;color:var(--oc-muted);margin:0 0 10px}
/* v1.9.47 — Tracciabilita' account: si legge, non si modifica. Sta sotto il form
   dello stato accesso, separata da un filo sottile perche' e' informazione di
   servizio e non deve competere con i comandi. Nessun colore d'allarme: dice cosa
   e' successo, non segnala un problema. */
.lrb-oc-traccia{margin:12px 0 0;padding:10px 0 0;border-top:1px dashed var(--oc-line)}
.lrb-oc-traccia h5{margin:0 0 6px;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--oc-muted);font-weight:800}
.lrb-oc-traccia ul{margin:0;padding:0;list-style:none;display:grid;gap:4px}
.lrb-oc-traccia li{font-size:12px;line-height:1.45;color:var(--oc-muted);overflow-wrap:anywhere}
.lrb-oc-traccia strong{color:var(--oc-ink);font-weight:700}
.lrb-oc-user-block-actions{display:flex;gap:7px;flex-wrap:wrap}
/* v1.10.42 — Il riquadro richiudibile dentro la scheda utente. Sta in riga con
   gli altri riquadri, ma il margine se lo toglie: la spaziatura fra i riquadri
   la mette gia' il contenitore col suo «gap», e sommarne un secondo lo
   allontanerebbe dai vicini. */
.lrb-oc-user-body > .lrb-oc-user-sez{margin:0;align-self:start}
.lrb-oc-user-sez > summary{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--oc-blue);font-weight:800}
.lrb-oc-user-sez > summary .lrb-oc-sez-nota{text-transform:none;letter-spacing:0;font-weight:600}
/* Sul telefono le sezioni della console nascondono la loro nota (regola piu'
   su, nata per le note lunghe della scheda evento). Qui no: la nota E' il
   motivo per cui il riquadro puo' restare chiuso — «13 in tutto · 12 da
   gestire» risparmia di aprirlo. Invece di nasconderla, va a capo sotto al
   titolo. */
@media(max-width:640px){
  .lrb-oc-user-sez > summary{flex-wrap:wrap}
  .lrb-oc-user-sez > summary .lrb-oc-sez-nota{display:block;flex:1 1 100%;margin-left:0;text-align:left}
}
/* Appartenenza gruppi + impostazioni prenotazioni (scheda utente console) */
.lrb-oc-field-label{font-size:12px;font-weight:700;color:var(--oc-muted)}
.lrb-oc-group-checks{display:flex;flex-direction:column;gap:6px;margin-top:6px;max-height:160px;overflow:auto;border:1px solid var(--oc-line);border-radius:9px;padding:8px 10px;background:#fff}
.lrb-oc-check-inline{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--oc-ink);margin-bottom:8px}
.lrb-oc-check-inline input{width:auto;margin:0}
.lrb-oc-group-checks .lrb-oc-check-inline{margin-bottom:0}

/* ---- Pagamenti: griglia filtri da get ---- */
.lrb-oc-filters .lrb-oc-filter-grid + .lrb-oc-filter-actions{margin-top:12px}

/* ---- Mobile ---- */
@media (max-width:880px){
  .lrb-oc-menu-toggle{display:flex}
  .lrb-oc-user{display:none}
  .lrb-oc-sidebar{position:absolute;left:0;top:0;bottom:0;z-index:40;width:264px;transform:translateX(-100%);transition:transform .22s ease;box-shadow:0 12px 40px rgba(15,23,42,.25)}
  .lrb-oc-sidebar.is-open{transform:translateX(0)}
  .lrb-oc-main{padding:16px}
  .lrb-oc-page-head h1{font-size:19px}
  .lrb-oc-filter-wide{grid-column:span 1}

  /* v1.8.84: le regole "tabella -> card" erano qui dentro (<=880px) e sono state
     spostate in una media query più ampia più sotto. Motivo: fra 881px e 1200px
     la console mostrava la tabella piena CON la barra laterale da 248px, quindi
     una tabella da ~1010px in circa 650-930px di spazio. Le ultime colonne
     ("Stato" e "Azioni") finivano fuori dallo schermo: erano raggiungibili solo
     scorrendo in orizzontale tutto il pannello, trascinando via anche titolo e
     filtri. È l'intervallo di tutti i tablet, iPad orizzontale compreso. */
  .lrb-oc-user-body{grid-template-columns:1fr}
}

/* === v1.8.84: tabelle console a schede fino a 1200px ===
   Misurato con browser reale: anche comprimendo font, spaziature e mandando a capo
   le intestazioni, la tabella prenotazioni non scende sotto ~870px di larghezza
   minima, che con la barra laterale richiede una finestra da almeno ~1160px. Sotto
   quella soglia le schede impilate sono l'unica forma davvero leggibile — ed è anche
   il motivo per cui non basta rendere scorrevole il contenitore della tabella: lì
   dentro si apre il menu azioni in posizione assoluta, che uno scroll ritaglierebbe. */
@media (max-width:1200px){
  /* v1.9.16 — `width:100%` con padding e box-sizing:content-box faceva sommare
     i 28px di padding orizzontale alla larghezza piena: ogni cella sforava di
     quel tanto e la pagina scorreva in orizzontale su smartphone e tablet.
     Difetto preesistente (misurato: 54px di sfondamento prima di questa
     versione), emerso misurando la riga e non segnalato da nessuno perche' si
     nota solo come un piccolo trascinamento laterale. */
  .lrb-oc-table,.lrb-oc-table thead,.lrb-oc-table tbody,.lrb-oc-table tr,.lrb-oc-table td{display:block;width:100%;box-sizing:border-box}
  .lrb-oc-table thead{display:none}
  .lrb-oc-table-wrap{border:0;background:transparent;overflow:visible}
  .lrb-oc-table tbody tr{background:var(--oc-card);border:1px solid var(--oc-line);border-radius:14px;margin-bottom:12px;padding:6px 4px}
  /* v1.10.35 — DUE COLONNE, NON «SPACE-BETWEEN».
     Diego: «Allinea a destra e deve essere simmetrico anche nome cognome e
     descrizione evento».
     Il difetto stava qui: la cella era un flex con `space-between`, e dentro
     una cella non c'e' UN valore ma tre pezzi — <strong>, <br>, <small>.
     Flex li trattava come tre elementi da DISTRIBUIRE, quindi il nome finiva
     a meta' cella e solo la data arrivava al bordo destro; la stessa cella,
     con un solo pezzo dentro, si allineava invece giusta. Ecco perche'
     l'allineamento sembrava cambiare «a caso» da una sezione all'altra: non
     dipendeva dalla sezione, dipendeva da quanti pezzi c'erano nella cella.
     La griglia risolve alla radice: colonna 1 l'etichetta, colonna 2 TUTTI i
     pezzi, ognuno sulla sua riga, tutti sullo stesso bordo destro. Misurato:
     14px esatti da ogni cella di ogni sezione, a 820 e a 390px.
     `min-width:0` sui figli serve a far spezzare le parole lunghe (gli
     indirizzi email) dentro la colonna invece di allargarla: senza, la
     griglia cresce e la pagina scorre in orizzontale. */
  /* v1.10.36 — Diego: «il banner in attesa/approvata non è in linea con le
     icone, deve avere la stessa larghezza delle icone».
     La misura sta qui, in un posto solo: la usano sia il blocco delle icone
     sia i contrassegni di stato, cosi' non possono piu' scollarsi l'uno
     dall'altro — e un domani si cambia una riga, non due. */
  .lrb-oc-table tbody td{--oc-azioni-w:154px;border-bottom:1px dashed #eef2f9;padding:9px 14px;display:grid;grid-template-columns:minmax(72px,32%) minmax(0,1fr);column-gap:12px;row-gap:0;text-align:right;align-items:start}
  .lrb-oc-table tbody tr td:last-child{border-bottom:0}
  .lrb-oc-table tbody td::before{content:attr(data-label);font-weight:800;color:var(--oc-blue);text-align:left;font-size:12px;grid-column:1;grid-row:1}
  .lrb-oc-table tbody td > *{grid-column:2;min-width:0}
  /* Il <br> serviva a mandare a capo dentro un flex; in griglia ogni pezzo e'
     gia' su una riga sua, e lasciarlo aggiungerebbe una riga vuota. */
  .lrb-oc-table tbody td br{display:none}
  .lrb-oc-table tbody td strong,.lrb-oc-table tbody td small{display:block}
  .lrb-oc-col-actions{text-align:right}
  .lrb-oc-actions{width:100%}
  .lrb-oc-actions summary{width:100%;text-align:center}
  .lrb-oc-actions-list{left:0;right:auto;width:100%}
  .lrb-oc-deposit{align-items:flex-end}
  /* Le due specie di cella azioni (quella delle prenotazioni e quella di tutte
     le altre tabelle) finiscono a destra come il resto: era l'unica cosa che
     restava a sinistra sotto i 1200px, e faceva sembrare la scheda sbilenca. */
  .lrb-oc-table tbody td.lrb-oc-cell-actions-td,.lrb-oc-table tbody td.lrb-oc-col-actions{display:grid;text-align:right}
  /* Scritta sulla CELLA e non sulle due classi delle azioni: le tabelle della
     console sono 13 e non tutte marcano la cella allo stesso modo — una regola
     per classe si sarebbe scollata alla prima tabella nuova. */
  .lrb-oc-table tbody td .lrb-oc-actions-inline{grid-column:2;justify-content:flex-end;width:auto;margin-left:auto}
  /* Il pannello di modifica di un'iscrizione si apre DENTRO la riga delle
     icone (scelta della 1.8.95: nella scheda non c'e' spazio per una finestra
     che galleggia). In griglia quella riga e' la seconda colonna, larga un
     terzo scarso: misurato, il pannello scendeva a 173px e i campi diventavano
     illeggibili. Quando e' aperto, la riga delle icone si prende tutta la
     cella — e appena si richiude torna a destra con le altre. */
  /* `margin-left:0` non e' un dettaglio: e' il margine automatico che spinge
     le icone a destra, ma su un elemento di griglia il margine automatico
     annulla anche lo «stiramento» — e la riga restava larga quanto il suo
     contenuto (misurato: 246px su una cella da 732). */
  .lrb-oc-table tbody td .lrb-oc-actions-inline:has(.lrb-oc-regedit[open]){grid-column:1/-1;margin-left:0}
  /* Le prenotazioni tengono la griglia da 4 per riga (e' cosi' che 7-8 icone
     stanno in due righe e non in tre), ma da flex: con la griglia a colonne
     fisse l'ultima riga incompleta restava incollata a SINISTRA, cioe' l'unico
     pezzo della scheda che non tornava a filo. In flex l'ultima riga si allinea
     a destra come tutto il resto. */
  .lrb-oc-table tbody td.lrb-oc-col-actions .lrb-oc-actions-inline{display:flex;flex-wrap:wrap;gap:6px;width:var(--oc-azioni-w);max-width:100%}
  /* Il contrassegno di stato era l'unico pezzo della scheda che si allargava
     a tutta la colonna: diventando elemento di griglia, uno <span> che era
     «inline-block» viene STIRATO, e la pastiglia si allungava per mezza
     scheda mentre le icone sotto stavano in 154px. Stessa larghezza delle
     icone e stessa colonna: la scheda torna a leggersi come una colonna sola.
     Vale per i contrassegni figli diretti della cella — quelli dentro un
     involucro (il tipo di utente accanto al nome) restano della misura della
     loro parola, come sono sempre stati. */
  .lrb-oc-table tbody td > .lrb-oc-badge{display:block;width:var(--oc-azioni-w);max-width:100%;margin-left:auto;text-align:center;white-space:normal}
  .lrb-oc-table tbody td > .lrb-oc-badge + .lrb-oc-badge{margin-top:5px}
  .lrb-oc-cell-actions{justify-content:flex-end}
  /* v1.8.84: sotto i 375px (telefoni piccoli e vecchi) un indirizzo email lungo
     non spezzava e spingeva la scheda oltre il bordo, di una decina di pixel.
     Difetto preesistente, non introdotto dal passaggio a schede: misurato identico
     prima e dopo la modifica, e corretto qui perché costa una riga.
     Solo su <small> (email e sottotitoli): applicarlo anche ai titoli in <strong>
     li spezzava a metà parola appena la colonna si stringeva — provato e scartato. */
  .lrb-oc-table td small{overflow-wrap:anywhere}
}

/* v1.10.35 — telefoni piccoli (320-340px: iPhone SE di prima generazione e
   simili). Li' la colonna dei valori scende sotto i 154px che servono a
   quattro icone da 34 piu' i loro margini, e la quarta scendeva sotto: sette
   icone tornavano su TRE righe, proprio quello che Diego non vuole. Due pixel
   in meno per icona bastano a far tornare il conto (4x30 + 3x6 = 138) e
   restano comodamente premibili col dito. */
@media (max-width:340px){
  /* Qui la colonna dei valori scende sotto i 138px, quindi le icone si
     prendono la riga intera sotto l'etichetta — sempre a filo destro, come
     tutto il resto della scheda. Il contrassegno di stato segue la stessa
     misura: e' la variabile che li tiene insieme. */
  .lrb-oc-table tbody td{--oc-azioni-w:138px}
  .lrb-oc-table tbody td.lrb-oc-col-actions .lrb-oc-actions-inline,
  .lrb-oc-table tbody td > .lrb-oc-badge{grid-column:1/-1}
  .lrb-oc-table tbody td.lrb-oc-col-actions .lrb-oc-iconbtn,
  .lrb-oc-table tbody td.lrb-oc-col-actions .lrb-oc-iconbtn-cell{width:30px;height:30px}
}

/* v1.8.84: fra 1201px e 1366px la tabella torna, ma compattata — intestazioni che
   possono andare a capo, spaziature e corpo leggermente ridotti, indirizzi email
   che spezzano invece di allargare la colonna. Serve ai portatili piccoli (1280),
   dove la tabella a larghezza piena sfiorava comunque il bordo. Sopra i 1366px
   non cambia nulla rispetto a prima. */
@media (min-width:1201px) and (max-width:1366px){
  .lrb-oc-table{font-size:12.5px}
  .lrb-oc-table thead th{white-space:normal;padding:9px 8px;font-size:11.5px}
  .lrb-oc-table tbody td{padding:9px 8px}
  .lrb-oc-table small{overflow-wrap:anywhere}
}
/* v1.8.94: su telefono le celle a schede (etichetta 38% a sinistra, valore a
   destra su una riga) vanno in crisi quando il valore è un testo lungo — luogo
   evento, riepilogo "2 Adulti, 2 Ragazzi, 1 Bambini" — perché deve stare compresso
   nel 62% residuo e si spezza carattere per carattere invece che a parole.
   Sotto i 480px (dove il problema è visibile) le celle che contengono un
   sottotitolo <small> passano da riga affiancata a blocco impilato: etichetta
   sopra, valore sotto su tutta la larghezza della scheda. Le celle senza <small>
   (stato, azioni, importi secchi) restano affiancate come oggi: sono già corte
   e impilarle sprecherebbe spazio verticale senza bisogno. */
@media (max-width:480px){
  .lrb-oc-table tbody td:has(small){display:block;text-align:left}
  .lrb-oc-table tbody td:has(small)::before{display:block;flex:none;margin-bottom:4px}
}
@media (max-width:520px){
  .lrb-oc-brand-text small{display:none}
  .lrb-oc-topbar-actions .lrb-oc-btn{padding:8px 10px;font-size:12px}
  .lrb-oc-filter-grid{grid-template-columns:1fr 1fr}
  .lrb-oc-form-grid{grid-template-columns:1fr}
  .lrb-oc-user-head{grid-template-columns:1fr;gap:8px}
  .lrb-oc-user-badges{justify-content:flex-start}
}

/* ===== v1.7.137.167 - Console: azioni a icone + ottimizzazioni mobile ===== */
/* Bottoni azione a icona, allineati e simmetrici, color-coded */
.lrb-oc-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:1px solid var(--oc-line);border-radius:9px;background:#fff;color:var(--oc-blue);cursor:pointer;text-decoration:none;transition:background .12s,border-color .12s,color .12s,transform .05s;flex:0 0 auto}
.lrb-oc-iconbtn:hover{transform:translateY(-1px)}
.lrb-oc-iconbtn:active{transform:translateY(0)}
.lrb-oc-iconbtn .dashicons{font-size:18px;width:18px;height:18px;line-height:1}
/* v1.9.16 — Icona di gestione dentro le celle Cauzione e Codice accesso.
   DEVE stare dopo .lrb-oc-iconbtn: stessa specificita', quindi vince l'ultima
   scritta. Messa prima (riga ~11054) veniva ignorata e l'icona restava 34px:
   e' la stessa trappola della v1.8.95 con le media query, ripetuta qui.
   Misura ridotta a 30px perche' qui l'icona convive con badge e importi e non
   deve pesare come quelle della colonna Azioni, dove sono l'unico contenuto. */
.lrb-oc-iconbtn-cell{width:30px;height:30px;margin-top:8px;border-radius:8px}
.lrb-oc-iconbtn-cell .dashicons{font-size:16px;width:16px;height:16px;line-height:16px}
/* L'icona deve SEMPRE andare a capo sotto il contenuto della cella.
   Misurato: con «Non impostato» (uno <span>, quindi inline) l'icona gli si
   affiancava e finiva a 100px dal bordo invece che a 12 come nelle righe con il
   badge — due righe vicine mostravano l'icona in due posti diversi, ed e'
   proprio l'asimmetria segnalata. `display:flex` sulla cella non va bene:
   spezzerebbe il layout delle celle impilate sotto i 1200px, dove etichetta e
   valore convivono. Si forza invece l'icona su una riga propria. */
.lrb-oc-table td > .lrb-oc-iconbtn-cell{display:flex}

/* v1.9.17 — Le due icone spostate nella colonna Azioni tornano alla misura
   piena. Sta DOPO .lrb-oc-iconbtn-cell di proposito: la specificita' maggiore
   basterebbe a farla vincere, ma l'ordine la rende vera anche se un domani
   qualcuno semplifica il selettore. E' la stessa trappola della v1.8.95 e della
   v1.9.16, evitata stavolta prima che mordesse. */
.lrb-oc-col-actions .lrb-oc-iconbtn-cell{width:34px;height:34px;margin-top:0;border-radius:9px}
.lrb-oc-col-actions .lrb-oc-iconbtn-cell .dashicons{font-size:18px;width:18px;height:18px}
.lrb-oc-iconbtn-edit{color:#0b63ce;border-color:#cfe0fa;background:#f3f8ff}
.lrb-oc-iconbtn-edit:hover{background:#e3eefe}
.lrb-oc-iconbtn-ok{color:#11663a;border-color:#bfe6cd;background:#eefaf2}
.lrb-oc-iconbtn-ok:hover{background:#dcf3e6}
.lrb-oc-iconbtn-warn{color:#a9710a;border-color:#f0dcab;background:#fff8e9}
.lrb-oc-iconbtn-warn:hover{background:#fdeecb}
.lrb-oc-iconbtn-danger{color:#c0392b;border-color:#f0c2bc;background:#fdf1ef}

/* v1.10.63 — La pastiglia della categoria dell'evento. Il colore lo sceglie
   la Parrocchia categoria per categoria e arriva come variabile: una classe
   per colore vorrebbe dire rimettere mano al CSS ogni volta che aggiungono
   un tipo di evento. Lo sfondo e' lo stesso colore molto scarico, cosi' dieci
   pastiglie in colonna restano leggibili invece di gridare. */
.lrb-oc-cat-pill{
  display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;
  font-size:12px;font-weight:700;line-height:1.5;white-space:nowrap;
  color:var(--cat,#64748b);border:1px solid color-mix(in srgb, var(--cat,#64748b) 35%, #fff);
  background:color-mix(in srgb, var(--cat,#64748b) 10%, #fff);
}
/* Dove color-mix non c'e' (browser vecchi) resta una pastiglia neutra
   leggibile invece di una senza sfondo: si degrada, non sparisce. */
@supports not (color: color-mix(in srgb, red 10%, white)){
  .lrb-oc-cat-pill{background:#f4f6fb;border-color:#e4e8f2}
}
.lrb-oc-cat-pill.is-proposta{border-style:dashed;opacity:.85}
.lrb-oc-cat-vuota{color:#8a93a6;font-size:12px;font-style:italic}
/* v1.10.64 — La descrizione sotto il titolo, nella schermata di
   classificazione: su un archivio importato e' l'unica cosa che distingue
   una riga dall'altra, quindi si legge, ma resta subordinata al titolo. */
.lrb-oc-tit-motivo{display:inline-block;color:#5b6479;font-size:12px;line-height:1.45;overflow-wrap:anywhere}

/* v1.10.63 — I due pieghevoli della riga: categoria e riscontro sulla sala.
   Sono <details>: chiusi occupano quanto una pastiglia, aperti mostrano il
   modulo. Niente JavaScript — in una tabella con trecento righe trecento
   gestori di eventi sono trecento occasioni di rallentare la pagina, e il
   browser questa cosa la sa gia' fare. */
.lrb-oc-cat-box,.lrb-oc-sala-box{display:block;margin-top:5px}
.lrb-oc-cat-box > summary,.lrb-oc-sala-box > summary{
  list-style:none;cursor:pointer;display:inline-block;max-width:100%;
}
.lrb-oc-cat-box > summary::-webkit-details-marker,
.lrb-oc-sala-box > summary::-webkit-details-marker{display:none}
.lrb-oc-cat-box > summary:focus-visible,.lrb-oc-sala-box > summary:focus-visible{
  outline:2px solid #273583;outline-offset:2px;border-radius:999px;
}
.lrb-oc-cat-form,.lrb-oc-sala-form{
  display:flex;flex-direction:column;gap:6px;margin-top:7px;padding:9px;
  border:1px solid #e4e8f2;border-radius:10px;background:#fbfcfe;min-width:190px;
}
.lrb-oc-cat-form select,.lrb-oc-sala-form input[type="text"]{
  width:100%;padding:7px 9px;border:1px solid #d6dcea;border-radius:8px;font-size:13px;
  /* 16px su telefono: sotto questa misura iOS ingrandisce la pagina da solo
     quando il campo prende il fuoco, e la tabella scappa di lato. */
}
@media (max-width:600px){
  .lrb-oc-cat-form select,.lrb-oc-sala-form input[type="text"]{font-size:16px}
}
.lrb-oc-sala-chiedi{
  font-size:12px;color:#8a5a00;background:#fff7e8;border:1px dashed #e8c98a;
  padding:3px 9px;border-radius:999px;white-space:nowrap;
}
.lrb-oc-sala-scelte{display:flex;gap:5px;flex-wrap:wrap}
.lrb-oc-sala-scelta{
  flex:1 1 auto;padding:8px 10px;font-size:12px;font-weight:700;border-radius:8px;
  border:1px solid #d6dcea;background:#fff;color:#38415a;cursor:pointer;
  /* 40px di altezza: e' un pulsante che si preme col pollice mentre si chiude
     la porta della sala, non col mouse seduti alla scrivania. */
  min-height:40px;
}
.lrb-oc-sala-scelta.is-yes:hover,.lrb-oc-sala-scelta.is-yes.is-on{background:#e8f6ec;border-color:#9fd0ad;color:#1e5130}
.lrb-oc-sala-scelta.is-pending:hover,.lrb-oc-sala-scelta.is-pending.is-on{background:#fff7e8;border-color:#e8c98a;color:#8a5a00}
.lrb-oc-sala-scelta.is-no:hover,.lrb-oc-sala-scelta.is-no.is-on{background:#fdf1ef;border-color:#f0c2bc;color:#c0392b}
.lrb-oc-sala-scelta.is-on{box-shadow:inset 0 0 0 1px currentColor}
.lrb-oc-sala-firma{
  display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;
  font-size:11px;color:#8a93a6;
}
.lrb-oc-iconbtn-danger:hover{background:#fbe1dc}
.lrb-oc-iconbtn-info{color:#0b63ce;border-color:#cfe0fa;background:#f3f8ff}
.lrb-oc-iconbtn-info:hover{background:#e3eefe}
.lrb-oc-iconbtn-muted{color:#516079;border-color:#dde3ec;background:#f6f8fc}
/* v1.9.22 — Cauzione e codice di accesso avevano lo sfondo bianco della
   variante base, mentre tutte le altre azioni della riga sono colorate:
   in mezzo alle altre sembravano disattivate. Due tinte nuove, distinte da
   quelle gia' in uso nella stessa colonna (verde=approva, rosso=rifiuta,
   ambra=cancella, blu=link pagamento), verificate sopra 3:1 di contrasto.
   Magenta-viola per il denaro, indaco per la chiave: restano riconoscibili
   anche a chi distingue male i colori, perche' l'icona resta diversa.

   v1.9.23: la cauzione era teal, ma il verde e' gia' usato due volte nella
   stessa riga (approva e WhatsApp) e a colpo d'occhio si confondeva. La tinta
   e' stata scelta cercando quella piu' LONTANA da tutte le altre gia' presenti:
   312 gradi, che dista almeno 56 gradi da ognuna (la piu' vicina e' l'indaco
   del codice) e tiene 7,8:1 di contrasto. */
.lrb-oc-iconbtn-euro{color:#841f70;border-color:#eccbe4;background:#fbeff8}
.lrb-oc-iconbtn-key{color:#5b3fb5;border-color:#d6cdf5;background:#f5f2ff}
.lrb-oc-iconbtn-muted:hover{background:#eaeef5}
/* Riga azioni inline (sostituisce il dropdown "Azioni") */
.lrb-oc-actions-inline{display:flex;gap:5px;flex-wrap:nowrap;align-items:center;justify-content:flex-end}
/* v1.10.60 — I valori pronti del tetto dei privati: 30, 60, 90. Non sono
   azioni di riga, quindi non usano .lrb-oc-actions-inline, che allinea a
   destra e non manda a capo: su un telefono i quattro pulsanti uscirebbero
   dal pannello. */
.lrb-oc-anticipo-rapidi{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.lrb-oc-anticipo-rapidi .lrb-oc-btn{padding:6px 11px;font-size:12px}

/* v1.10.60 — Il tetto dei giorni in avanti nel modulo: la riga che lo dice sta
   accanto a quella degli orari prenotabili e le somiglia, perche' dice la
   stessa cosa — dove sono i confini. Il campo con una data fuori dal tetto si
   segna in rosso: il browser non lo fa da solo quando la data c'era gia'. */
.lrb-anticipo-nota{color:#8a5a00}
.lrb-anticipo-nota:empty{display:none}
input.lrb-anticipo-fuori{border-color:#d9534f;background:#fff6f5}
/* v1.10.30 — LE ICONE DELLE AZIONI IN RIGA DRITTA.
   Diego: «in tutti gli eventi comunitari le icone non sono allineate».
   Misurando la riga vera, di storto ce n'era UNA sola: l'euro dell'incasso,
   4px piu' in basso. Aveva la classe .lrb-oc-iconbtn-cell, che vale 30px e
   margin-top:8px — giusta nelle celle cauzione (dove un altro selettore annulla
   il margine), sbagliata qui. Era una mia svista della 1.10.29: avevo copiato la
   classe insieme all'icona.
   La classe e' stata tolta dal pulsante; questa riga e' la rete perche' non
   ricapiti con la prossima icona che qualcuno copiera' da li'. Non si aggiunge
   altro: le prove hanno mostrato che tutto il resto era gia' allineato, e CSS
   che non cambia niente e' solo peso in piu'. */
.lrb-oc-actions-inline .lrb-oc-iconbtn{margin-top:0;margin-bottom:0}
/* v1.10.34 — IL MENU «⋯» DELLE AZIONI RARE.
   Diego: «vorrei evitare di passare a 3 righe di icone». Con 12 icone e una
   griglia da 4 la colonna Azioni era alta 102px su OGNI prenotazione. Qui
   restano in chiaro le sette di tutti i giorni e le altre stanno sotto il «⋯».
   Il pannello si apre come la tendina della matita: stessa forma, stesso modo
   di chiudersi, niente di nuovo da imparare. */
.lrb-oc-altre{position:relative;display:flex;align-items:center}
.lrb-oc-altre > summary{list-style:none;cursor:pointer}
.lrb-oc-altre > summary::-webkit-details-marker{display:none}
.lrb-oc-altre > summary::marker{content:""}
.lrb-oc-altre[open] > summary{border-color:var(--oc-blue2);color:var(--oc-blue2);background:#f4f9ff}
.lrb-oc-altre-menu{position:absolute;right:0;top:36px;z-index:45;min-width:250px;max-width:86vw;
    background:#fff;border:1px solid var(--oc-line);border-radius:12px;
    box-shadow:0 14px 34px rgba(15,23,42,.16);padding:6px;text-align:left}
.lrb-oc-altre-menu form{margin:0}
/* Ogni voce: icona a sinistra, parola accanto. In un elenco verticale non c'e'
   motivo di far indovinare, e su un telefono il `title` non si legge — non c'e'
   un puntatore da fermare sopra. */
.lrb-oc-altre-voce{display:flex;align-items:center;gap:9px;width:100%;
    padding:9px 10px;border:0;border-radius:9px;background:none;cursor:pointer;
    font-size:13px;font-weight:600;color:var(--oc-ink);text-align:left;line-height:1.3}
.lrb-oc-altre-voce:hover{background:#f1f5fb}
.lrb-oc-altre-voce .dashicons{flex:0 0 auto;width:18px;height:18px;font-size:18px;color:var(--oc-muted)}
.lrb-oc-altre-voce-attenzione{color:#a9710a}
.lrb-oc-altre-voce-attenzione:hover{background:#fff7ed}
.lrb-oc-altre-voce-attenzione .dashicons{color:#a9710a}
.lrb-oc-altre-voce-pericolo{color:#b42318}
.lrb-oc-altre-voce-pericolo:hover{background:#fef2f2}
.lrb-oc-altre-voce-pericolo .dashicons{color:#b42318}
/* Le azioni sull'INTERA serie sotto una riga che lo dice: agiscono su dodici
   prenotazioni, e chi preme deve accorgersene prima, non dopo. */
.lrb-oc-altre-sep{margin:6px 4px 3px;padding-top:7px;border-top:1px solid var(--oc-line);
    font-size:10.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#b42318}
@media (max-width:1200px){
  /* Nelle schede il pannello resta SOPRA, non nel flusso. Provato a metterlo
     nel flusso e misurato: la riga delle azioni e' una griglia da 34px di
     colonna, e un pannello «statico» ci finisce dentro come cella larga 34px —
     il testo andava a capo su ogni parola, la riga diventava alta 502px e le
     icone tornavano su tre righe. Esattamente il difetto da cui si partiva. */
  .lrb-oc-altre-voce{padding:11px 10px;font-size:13.5px}
  .lrb-oc-altre-menu{min-width:230px}
}
/* Il pannello non deve mai uscire dallo schermo: si ancora al bordo destro del
   suo bottone e si allarga verso sinistra, dove lo spazio c'e' sempre. */
.lrb-oc-altre-menu{max-width:min(300px,86vw)}
/* v1.8.95: il selettore era discendente (`.lrb-oc-actions-inline form`) e quindi
   catturava anche il modulo DENTRO il pannello di modifica iscrizione, che è
   annidato in <details><div>. Essendo più specifico di `.lrb-oc-regedit-form`
   vinceva lui, il pannello smetteva di essere una griglia e diventava una riga
   inline-flex: tutti i campi su una fila sola, larghi ~45px ("Di", "Mazz"), che
   sfondava il riquadro da 340px su desktop e arrivava a 721px su telefono.
   Qui torna a valere solo per i moduli figli diretti — le icone Annulla/Elimina,
   che sono l'unico caso a cui la regola serviva davvero (verificati tutti e 12 i
   blocchi `.lrb-oc-actions-inline`: solo quello delle iscrizioni ha un modulo
   annidato). */
.lrb-oc-actions-inline > form{display:inline-flex;margin:0}
/* Azioni prenotazione: 4 icone in una sola riga orizzontale (no stack verticale) */
.lrb-oc-actions-inline .lrb-oc-iconbtn{width:30px;height:30px}
.lrb-oc-col-actions{white-space:nowrap;min-width:152px}

/* v1.8.95: sotto i 1200px il pannello di modifica iscrizione sta nel flusso della
   scheda, ma <details> resta un elemento della riga flex `nowrap` qui sopra: da
   aperto veniva schiacciato a ~210px, con le icone Annulla/Elimina appese di
   fianco a metà altezza. Da aperto si prende una riga intera, così i campi usano
   tutta la larghezza della scheda e le altre due icone scendono sotto. Da chiuso
   non cambia nulla: la matita resta in linea con le altre icone.
   Il blocco sta QUI e non insieme agli altri stili del pannello (più in alto nel
   file) perché `.lrb-oc-actions-inline{flex-wrap:nowrap}` è definito poche righe
   sopra: a parità di specificità vince l'ultima regola, e una media query non
   aggiunge specificità — messo prima, l'override veniva ignorato. */
@media (max-width:1200px){
  .lrb-oc-actions-inline{flex-wrap:wrap}
  .lrb-oc-regedit[open]{flex:1 1 100%}
}

/* Reset PIN compatto a comparsa (icona + campo inline) */
.lrb-oc-pinreset{display:inline-flex;align-items:center;gap:6px}
.lrb-oc-pinreset input{width:104px;border:1px solid var(--oc-line);border-radius:8px;padding:6px 9px;font-size:12.5px;box-sizing:border-box}

/* Tutti i campi console non escono mai dallo schermo */
.lrb-oc-filters input,.lrb-oc-filters select,.lrb-oc-filter-form input,.lrb-oc-filter-form select,.lrb-oc-form-grid input,.lrb-oc-form-grid select,.lrb-oc-form-grid textarea,.lrb-oc-field input,.lrb-oc-field select,.lrb-oc-field textarea,.lrb-oc-search input{box-sizing:border-box;max-width:100%}

@media (max-width:880px){
  /* niente scroll orizzontale e niente scritta brand sovrapposta ai pulsanti */
  .lrb-oc-main{overflow-x:hidden}
  .lrb-oc-brand-text{display:none}
  .lrb-oc-brand img{height:30px}
  .lrb-oc-topbar{padding:8px 12px;gap:8px}
  .lrb-oc-topbar-actions{gap:6px}
  .lrb-oc-topbar-actions .lrb-oc-btn{padding:8px 10px;font-size:12.5px}
  /* v1.10.35 — vale ormai solo per i blocchi di icone FUORI dalle tabelle (per
     esempio dentro le finestre): nelle schede le azioni vanno a destra come il
     resto, e la regola che le porta li' e' scritta sulla cella, quindi vince su
     questa. */
  .lrb-oc-actions-inline{justify-content:flex-start}
  .lrb-oc-table tbody td.lrb-oc-col-actions{white-space:normal}
}
@media (max-width:600px){
  /* filtri sempre a piena larghezza, mai fuori schermo */
  .lrb-oc-filter-grid{grid-template-columns:1fr !important}
  .lrb-oc-filter-wide{grid-column:span 1}
  .lrb-oc-filters{padding:12px}
  .lrb-oc-page{max-width:100%}
}


/* ============================================================
 * Header portale compatto e responsive (menu Info + hamburger).
 * Porting da Demo Portale Servizi (v1.7.137.166).
 * ============================================================ */
/* ===== v1.7.137.166 - Header portale compatto e responsive (menu Info + hamburger) ===== */
.lrb-portal .lrb-topbar-v2{display:flex;align-items:center;gap:16px;flex-wrap:nowrap;padding:12px 18px}
.lrb-portal .lrb-topbar-v2 .lrb-brand{flex:0 0 auto;margin:0}
.lrb-portal .lrb-topbar-v2 .lrb-brand img{max-width:150px;max-height:42px;width:auto;height:auto;display:block;margin:0}
.lrb-portal .lrb-topbar-v2 .lrb-nav{display:flex;align-items:center;gap:6px;flex:1 1 auto;flex-wrap:wrap;justify-content:flex-start;margin:0}
.lrb-portal .lrb-topbar-v2 .lrb-nav > a,.lrb-portal .lrb-topbar-v2 .lrb-nav-more-btn{padding:8px 12px;border-radius:9px;font-size:14px;font-weight:600;color:#0b2a66;text-decoration:none;background:transparent;border:0;cursor:pointer;line-height:1;display:inline-flex;align-items:center;gap:4px}
.lrb-portal .lrb-topbar-v2 .lrb-nav > a:hover,.lrb-portal .lrb-topbar-v2 .lrb-nav > a.is-active,.lrb-portal .lrb-topbar-v2 .lrb-nav-more-btn:hover{background:#eef3fb;color:#0b63ce}
.lrb-portal .lrb-topbar-v2 .lrb-nav-more{position:relative}
.lrb-portal .lrb-topbar-v2 .lrb-nav-more-btn .dashicons{font-size:16px;width:16px;height:16px;transition:transform .15s}
.lrb-portal .lrb-topbar-v2 .lrb-nav-more.is-open .lrb-nav-more-btn .dashicons{transform:rotate(180deg)}
.lrb-portal .lrb-topbar-v2 .lrb-nav-more-menu{position:absolute;top:calc(100% + 6px);left:0;min-width:190px;background:#fff;border:1px solid #e1e9f6;border-radius:12px;box-shadow:0 14px 36px rgba(11,42,102,.14);padding:6px;display:none;z-index:60}
.lrb-portal .lrb-topbar-v2 .lrb-nav-more.is-open .lrb-nav-more-menu{display:block}
.lrb-portal .lrb-topbar-v2 .lrb-nav-more-menu a{display:block;padding:9px 12px;border-radius:8px;font-size:14px;color:#0b2a66;text-decoration:none}
.lrb-portal .lrb-topbar-v2 .lrb-nav-more-menu a:hover{background:#eef3fb;color:#0b63ce}
.lrb-portal .lrb-topbar-v2 .lrb-nav-userblock{display:none}
.lrb-portal .lrb-topbar-v2 .lrb-user-menu{display:flex;align-items:center;gap:10px;flex:0 0 auto;margin:0;width:auto}
.lrb-portal .lrb-topbar-v2 .lrb-user-desktop{font-weight:700;color:#0b2a66;font-size:14px;white-space:nowrap}
.lrb-portal .lrb-topbar-v2 .lrb-logout{color:#0b2a66;text-decoration:none;font-weight:600;font-size:14px;padding:7px 12px;border:1px solid #d8e2f1;border-radius:9px;background:#fff}
.lrb-portal .lrb-topbar-v2 .lrb-logout:hover{background:#fdecec;border-color:#f0c2bc;color:#c0392b}
.lrb-portal .lrb-topbar-v2 .lrb-nav-toggle{display:none;flex:0 0 auto;width:42px;height:42px;border:1px solid #d8e2f1;border-radius:10px;background:#fff;cursor:pointer;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:0}
.lrb-portal .lrb-topbar-v2 .lrb-nav-toggle span{display:block;width:20px;height:2px;background:#0b2a66;border-radius:2px}

@media (max-width:920px){
  .lrb-portal .lrb-topbar-v2{display:flex !important;grid-template-columns:none !important;text-align:left !important;flex-wrap:wrap;padding:10px 14px;position:relative;gap:10px}
  .lrb-portal .lrb-topbar-v2 .lrb-brand{margin:0 !important}
  .lrb-portal .lrb-topbar-v2 .lrb-brand img{max-width:130px;max-height:38px;margin:0 !important}
  .lrb-portal .lrb-topbar-v2 .lrb-nav-toggle{display:flex;order:5}
  .lrb-portal .lrb-topbar-v2 .lrb-user-menu{order:4;margin-left:auto !important;width:auto !important;justify-content:flex-end}
  .lrb-portal .lrb-topbar-v2 .lrb-user-desktop,.lrb-portal .lrb-topbar-v2 .lrb-logout-desktop{display:none}
  .lrb-portal .lrb-topbar-v2 .lrb-console-switch .lrb-console-switch-label{display:none}
  .lrb-portal .lrb-topbar-v2 .lrb-console-switch{margin-right:0;padding:9px 10px}
  .lrb-portal .lrb-topbar-v2 .lrb-nav{order:10;flex:1 0 100%;display:none !important;flex-direction:column;align-items:stretch;gap:2px;margin-top:6px;border-top:1px solid #eef2f8;padding-top:8px}
  .lrb-portal .lrb-topbar-v2.is-open .lrb-nav{display:flex !important}
  .lrb-portal .lrb-topbar-v2 .lrb-nav > a{width:100%;padding:11px 12px;font-size:15px}
  .lrb-portal .lrb-topbar-v2 .lrb-nav-more{position:static}
  .lrb-portal .lrb-topbar-v2 .lrb-nav-more-btn{display:none}
  .lrb-portal .lrb-topbar-v2 .lrb-nav-more-menu{position:static;display:block;border:0;box-shadow:none;padding:0;min-width:0}
  .lrb-portal .lrb-topbar-v2 .lrb-nav-more-menu a{padding:11px 12px;font-size:15px}
  .lrb-portal .lrb-topbar-v2 .lrb-nav-userblock{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;padding-top:10px;border-top:1px solid #eef2f8}
  .lrb-portal .lrb-topbar-v2 .lrb-nav-userblock .lrb-user{flex:1 1 auto;min-width:0;font-weight:700;color:#0b2a66;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .lrb-portal .lrb-topbar-v2 .lrb-nav-userblock .lrb-logout{flex:0 0 auto;width:auto !important;padding:8px 16px}
}

/* ===== v1.8.49 - menu account integrato nel nome utente (in alto a destra) =====
   Il menu riusa il meccanismo di .lrb-nav-more (stesso JS, stesso stile di base) ma vive fuori
   dalla barra di navigazione, dentro .lrb-user-menu. Servono quindi due correzioni rispetto al
   comportamento del menu "Info":
   1) la tendina va ancorata a DESTRA (left:0 la farebbe uscire dallo schermo, essendo il pulsante
      all'estremità destra della barra);
   2) sotto i 920px le regole del menu "Info" appiattiscono le tendine dentro l'hamburger
      (position:static, menu sempre aperto, pulsante nascosto): per il menu account vanno
      neutralizzate, perché questo menu resta in barra e deve continuare ad aprirsi/chiudersi. */
.lrb-portal .lrb-topbar-v2 .lrb-account-menu{position:relative}
.lrb-portal .lrb-topbar-v2 .lrb-account-menu .lrb-account-menu-list{left:auto;right:0;min-width:230px}
.lrb-portal .lrb-topbar-v2 .lrb-account-menu-btn{padding:7px 12px;border:1px solid #d8e2f1;border-radius:9px;background:#f4f7fc;font-weight:700;color:#0b2a66;font-size:14px;white-space:nowrap}
.lrb-portal .lrb-topbar-v2 .lrb-account-menu-btn:hover{background:#eef3fb;color:#0b63ce}
.lrb-portal .lrb-topbar-v2 .lrb-account-menu-icon{display:none}
.lrb-portal .lrb-topbar-v2 .lrb-account-menu-list a{display:flex;align-items:center;gap:8px}
.lrb-portal .lrb-topbar-v2 .lrb-account-menu-list a .dashicons{font-size:17px;width:17px;height:17px;color:#5b7099;flex:0 0 auto}
.lrb-portal .lrb-topbar-v2 .lrb-account-menu-list .lrb-account-menu-logout{margin-top:4px;padding-top:10px;border-top:1px solid #eef2f8;color:#c0392b}
.lrb-portal .lrb-topbar-v2 .lrb-account-menu-list .lrb-account-menu-logout .dashicons{color:#c0392b}
.lrb-portal .lrb-topbar-v2 .lrb-account-menu-list .lrb-account-menu-logout:hover{background:#fdecec;color:#c0392b}

@media (max-width:920px){
  /* Il nome per esteso non entra nella barra stretta: resta la sola icona utente, cliccabile,
     con la stessa tendina. Le regole "appiattisci dentro l'hamburger" vanno annullate qui. */
  .lrb-portal .lrb-topbar-v2 .lrb-account-menu{position:relative}
  .lrb-portal .lrb-topbar-v2 .lrb-account-menu .lrb-account-menu-btn{display:inline-flex;padding:9px 10px}
  .lrb-portal .lrb-topbar-v2 .lrb-account-menu .lrb-account-menu-list{position:absolute;display:none;border:1px solid #e1e9f6;box-shadow:0 14px 36px rgba(11,42,102,.14);padding:6px;min-width:230px;background:#fff;border-radius:12px}
  .lrb-portal .lrb-topbar-v2 .lrb-account-menu.is-open .lrb-account-menu-list{display:block}
  .lrb-portal .lrb-topbar-v2 .lrb-account-menu .lrb-account-menu-list a{padding:11px 12px;font-size:15px}
  .lrb-portal .lrb-topbar-v2 .lrb-account-menu-name{display:none}
  .lrb-portal .lrb-topbar-v2 .lrb-account-menu-icon{display:inline-block;font-size:18px;width:18px;height:18px}
}

/* ============================================================
 * Accordion 'Le mie prenotazioni' e toggle calendario prenotazioni.
 * Porting da Demo Portale Servizi (v1.7.137.133/.145/.146/.168).
 * ============================================================ */
/* ===== v1.7.137.133 - toggle +/− simmetrico per Le mie prenotazioni ===== */
.lrb-my-bookings-fold > summary.lrb-card-title {
  position: relative !important;
  padding-right: 46px !important;
}

.lrb-my-bookings-summary small {
  display: none !important;
}

.lrb-my-bookings-summary .lrb-fold-toggle {
  position: absolute !important;
  right: 14px !important;
  bottom: 12px !important;
  width: 28px !important;
  height: 28px !important;
  border-radius: 999px !important;
  border: 1px solid #d6deec !important;
  background: #f8fafc !important;
  box-shadow: 0 1px 2px rgba(15, 23, 42, .06) !important;
}

.lrb-my-bookings-summary .lrb-fold-toggle::before,
.lrb-my-bookings-summary .lrb-fold-toggle::after {
  content: "" !important;
  position: absolute !important;
  left: 8px !important;
  right: 8px !important;
  top: 50% !important;
  height: 2px !important;
  margin-top: -1px !important;
  border-radius: 2px !important;
  background: #0b3d91 !important;
}

.lrb-my-bookings-summary .lrb-fold-toggle::after {
  transform: rotate(90deg) !important;
}

.lrb-my-bookings-fold[open] > .lrb-my-bookings-summary .lrb-fold-toggle::after {
  display: none !important;
}

.lrb-my-bookings-fold[open] > .lrb-my-bookings-summary .lrb-fold-toggle {
  background: #eef5ff !important;
  border-color: #cfe0f7 !important;
}

@media (max-width: 760px) {
  .lrb-my-bookings-fold > summary.lrb-card-title {
    padding-right: 42px !important;
  }

  .lrb-my-bookings-summary .lrb-fold-toggle {
    right: 12px !important;
    bottom: 10px !important;
    width: 26px !important;
    height: 26px !important;
  }
}

.lrb-my-bookings-fold > summary.lrb-my-bookings-summary {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 10px !important;
  text-align: left !important;
  position: relative !important;
  padding-right: 52px !important;
}

.lrb-my-bookings-fold > summary.lrb-card-title h3,
.lrb-my-bookings-fold > summary.lrb-my-bookings-summary h3 {
  margin-right: 0 !important;
  flex: 0 1 auto !important;
  text-align: left !important;
}

.lrb-my-bookings-fold > summary.lrb-card-title .dashicons,
.lrb-my-bookings-fold > summary.lrb-my-bookings-summary .dashicons {
  flex: 0 0 auto !important;
}

.lrb-my-bookings-summary .lrb-fold-toggle {
  margin-left: 0 !important;
  position: absolute !important;
  right: 14px !important;
  bottom: 12px !important;
}

/* ===== v1.7.137.145 - toggle Nuova prenotazione e fix filtro ID ===== */
#lrb-form-card.lrb-new-booking-collapsed .lrb-booking-form > *:not(.lrb-card-title) {
  display: none !important;
}

#lrb-form-card .lrb-booking-form > .lrb-card-title {
  padding-right: 52px !important;
}

#lrb-form-card .lrb-new-booking-toggle {
  position: absolute !important;
  right: 14px !important;
  bottom: 12px !important;
  margin: 0 !important;
}

#lrb-form-card.lrb-new-booking-collapsed .lrb-new-booking-toggle::after {
  transform: translate(-50%, -50%) rotate(90deg) !important;
}

#lrb-form-card.lrb-new-booking-open .lrb-new-booking-toggle::after {
  opacity: 0 !important;
  transform: translate(-50%, -50%) rotate(90deg) !important;
}


/* ===== v1.7.137.146 - mobile Le mie prenotazioni compatto + toggle coerenti ===== */
.lrb-my-bookings-fold > summary.lrb-card-title,
.lrb-my-bookings-fold > summary.lrb-my-bookings-summary,
#lrb-form-card .lrb-booking-form > .lrb-card-title {
  position: relative !important;
  padding-right: 52px !important;
}

.lrb-my-bookings-summary .lrb-fold-toggle,
#lrb-form-card .lrb-new-booking-toggle {
  width: 28px !important;
  height: 28px !important;
  min-width: 28px !important;
  min-height: 28px !important;
  right: 14px !important;
  bottom: 12px !important;
  top: auto !important;
  border-radius: 999px !important;
  display: inline-flex !important;
  position: absolute !important;
  align-items: center !important;
  justify-content: center !important;
  background: #fff !important;
  border: 1px solid #cfe0f7 !important;
  box-shadow: 0 4px 10px rgba(15, 23, 42, .08) !important;
}

.lrb-my-bookings-summary .lrb-fold-toggle::before,
.lrb-my-bookings-summary .lrb-fold-toggle::after,
#lrb-form-card .lrb-new-booking-toggle::before,
#lrb-form-card .lrb-new-booking-toggle::after {
  content: "" !important;
  position: absolute !important;
  left: 50% !important;
  top: 50% !important;
  width: 12px !important;
  height: 2px !important;
  border-radius: 99px !important;
  background: #0b63ce !important;
  transform: translate(-50%, -50%) !important;
}

.lrb-my-bookings-summary .lrb-fold-toggle::after,
#lrb-form-card .lrb-new-booking-toggle::after {
  transform: translate(-50%, -50%) rotate(90deg) !important;
}

.lrb-my-bookings-fold[open] > .lrb-my-bookings-summary .lrb-fold-toggle::after,
#lrb-form-card.lrb-new-booking-open .lrb-new-booking-toggle::after {
  opacity: 0 !important;
}

/* ===== v1.7.137.168 - toggle +/- per il banner "Calendario prenotazioni" ===== */
.lrb-calendar-card-title {
  position: relative !important;
  padding-right: 52px !important;
}

.lrb-calendar-fold.lrb-calendar-collapsed .lrb-calendar-fold-body {
  display: none !important;
}

.lrb-calendar-toggle {
  position: absolute !important;
  right: 14px !important;
  top: 50% !important;
  margin-top: -14px !important;
  width: 28px !important;
  height: 28px !important;
  padding: 0 !important;
  border-radius: 999px !important;
  border: 1px solid #d6deec !important;
  background: #f8fafc !important;
  box-shadow: 0 1px 2px rgba(15, 23, 42, .06) !important;
  cursor: pointer !important;
}

.lrb-calendar-toggle::before,
.lrb-calendar-toggle::after {
  content: "" !important;
  position: absolute !important;
  left: 8px !important;
  right: 8px !important;
  top: 50% !important;
  height: 2px !important;
  margin-top: -1px !important;
  border-radius: 2px !important;
  background: #0b3d91 !important;
}

.lrb-calendar-toggle::after {
  transform: rotate(90deg) !important;
}

.lrb-calendar-fold.lrb-calendar-open .lrb-calendar-toggle::after {
  display: none !important;
}

.lrb-calendar-fold.lrb-calendar-open .lrb-calendar-toggle {
  background: #eef5ff !important;
  border-color: #cfe0f7 !important;
}

@media (max-width: 760px) {
  .lrb-calendar-card-title {
    padding-right: 42px !important;
  }

  .lrb-calendar-toggle {
    right: 12px !important;
    width: 26px !important;
    height: 26px !important;
    margin-top: -13px !important;
  }
}

/* === v1.10.47 — AGENDA DELLA COMUNITÀ (area utente) ======================
   Rifatta sul foglio di carta nuovo. Il linguaggio è quello del foglio — blu
   scuro sul titolo, fascia azzurra sulle intestazioni di colonna, righe
   alternate — ma messo dentro il riquadro pieghevole che il portale usa già
   per il calendario, perché una cosa che si apre e si chiude deve continuare
   a sembrare quello che è.

   Le due viste non sono due contenuti: sono lo stesso elenco disegnato in due
   modi. Sopra i 760px la tabella, come sul foglio; sotto, una scheda per
   giorno. A quattro colonne, su un telefono, la colonna delle letture si
   riduce a una parola per riga. */
.lrb-parish-agenda-summary-title {
  grid-area: title;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}
.lrb-parish-agenda-range {
  display: block;
  font-weight: 600;
  color: #5b6787;
  font-size: 12.5px;
}

/* --- intestazione ------------------------------------------------------- */
.lrb-agenda-testata {
  display: flex;
  gap: 16px;
  align-items: center;
  padding: 16px 16px 14px;
  background: linear-gradient(180deg, #f7fafd 0%, #e8f0f9 100%);
  border-bottom: 3px solid #a9c4dd;
}
.lrb-agenda-testata-testo { flex: 1 1 auto; min-width: 0; }
.lrb-agenda-testata h3 {
  margin: 0 !important;
  font-family: Georgia, "Times New Roman", serif;
  font-style: italic;
  font-weight: 700;
  color: #17346b !important;
  font-size: 25px !important;
  line-height: 1.15;
}
.lrb-agenda-periodo {
  margin: 8px 0 0 !important;
  font-weight: 700;
  color: #17346b !important;
  font-size: 15px !important;
}
.lrb-agenda-motto {
  margin: 3px 0 0 !important;
  color: #2f5aa8 !important;
  font-weight: 600;
  font-size: 15px !important;
}
.lrb-agenda-tempo {
  margin: 4px 0 0 !important;
  color: #8b1a2b !important;
  font-weight: 700;
  font-size: 12.5px !important;
}
.lrb-agenda-foto {
  flex: 0 0 160px;
  width: 160px;
  height: 108px;
  object-fit: cover;
  border-radius: 10px;
  border: 1px solid #c9d6e6;
}
.lrb-agenda-sottotitolo {
  margin: 12px 14px 10px !important;
  text-align: center;
  font-style: italic;
  font-weight: 600;
  color: #26324d !important;
  font-size: 13.5px !important;
}

/* --- la settimana, in tabella ------------------------------------------- */
.lrb-agenda-tabella-wrap { padding: 0 14px; overflow-x: auto; }
.lrb-agenda-tabella {
  width: 100%;
  border-collapse: collapse;
  font-size: 13.5px;
  color: #26324d;
}
.lrb-agenda-tabella th {
  background: #a9c4dd;
  color: #fff;
  border: 1px solid #93b3d2;
  padding: 8px 10px;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
  text-align: center;
}
.lrb-agenda-tabella th:first-child { text-align: left; }
.lrb-agenda-tabella td {
  border: 1px solid #c9d6e6;
  padding: 9px 10px;
  vertical-align: top;
  line-height: 1.45;
}
.lrb-agenda-tabella tbody tr:nth-child(even) td { background: #f3f6fb; }
.lrb-agenda-tabella .lrb-agenda-messa { font-style: italic; }
.lrb-agenda-giorno {
  display: block;
  color: #17346b;
  font-weight: 800;
  font-size: 14px;
}
.lrb-agenda-domenica .lrb-agenda-giorno { text-transform: uppercase; }
.lrb-agenda-santo { display: block; margin-top: 2px; }
.lrb-agenda-domenica .lrb-agenda-santo {
  font-weight: 700;
  color: #17346b;
  text-transform: uppercase;
  font-size: 12.5px;
}
.lrb-agenda-letture {
  display: block;
  margin-top: 5px;
  font-size: 11.5px;
  font-style: italic;
  color: #5d6b82;
}
/* La colonna della liturgia è quella che porta tre informazioni: le si dà
   spazio una volta sola, qui, invece di lasciarlo decidere al contenuto. */
.lrb-agenda-tabella th:nth-child(1) { width: 31%; }
.lrb-agenda-tabella th:nth-child(2) { width: 21%; }
.lrb-agenda-tabella th:nth-child(3) { width: 24%; }
.lrb-agenda-tabella th:nth-child(4) { width: 24%; }
.lrb-agenda-iscriviti {
  display: inline-block;
  margin-top: 6px;
  font-weight: 700;
  font-size: 12.5px;
  color: #17346b;
  text-decoration: underline;
}

/* --- la settimana, in schede (telefono) --------------------------------- */
.lrb-agenda-giorni { display: none; padding: 0 12px; flex-direction: column; gap: 10px; }
.lrb-agenda-gcard {
  border: 1px solid #c9d6e6;
  border-radius: 12px;
  overflow: hidden;
  background: #fff;
}
.lrb-agenda-gcard > header { background: #dce8f4; padding: 9px 12px; }
.lrb-agenda-gcard.lrb-agenda-domenica > header { background: #cfe0f3; }
.lrb-agenda-gcorpo { padding: 10px 12px; display: flex; flex-direction: column; gap: 9px; }
.lrb-agenda-voce { display: flex; gap: 8px; align-items: flex-start; font-size: 13.5px; }
.lrb-agenda-et {
  flex: 0 0 108px;
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: #17346b;
  padding-top: 2px;
}

/* --- il foglio: le parti della seconda pagina --------------------------- */
.lrb-agenda-foglio { padding: 14px; display: flex; flex-direction: column; gap: 14px; }
.lrb-agenda-foglio h4 {
  margin: 0 0 8px !important;
  font-size: 13.5px !important;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: #17346b !important;
}
.lrb-agenda-testo p { margin: 0 0 8px !important; font-size: 13.5px !important; color: #26324d !important; }
.lrb-agenda-testo p:last-child { margin-bottom: 0 !important; }
.lrb-agenda-magistero {
  background: linear-gradient(180deg, #eef4fb, #e2ecf7);
  border-radius: 12px;
  padding: 14px 16px;
  text-align: center;
}
.lrb-agenda-fonte {
  margin: 6px 0 0 !important;
  font-weight: 700;
  font-style: italic;
  font-size: 12.5px !important;
  color: #17346b !important;
}
.lrb-agenda-due { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.lrb-agenda-blocco {
  border: 1px solid #c9d6e6;
  border-radius: 12px;
  padding: 14px;
  background: #fff;
}
.lrb-agenda-vangelo { background: #f8fafd; }
/* Due sezioni nello stesso riquadro (introduzione e commento del parroco):
   la seconda ha bisogno d'aria sopra, se no sembra la coda della prima. */
.lrb-agenda-blocco .lrb-agenda-testo + h4 { margin-top: 15px !important; }
.lrb-agenda-rif { font-weight: 600; color: #5d6b82; text-transform: none; letter-spacing: 0; }
.lrb-agenda-avviso {
  border: 2px solid #17346b;
  border-radius: 12px;
  padding: 14px;
}
.lrb-agenda-avviso h4 {
  text-align: center;
  font-family: Georgia, serif;
  font-style: italic;
  font-size: 17px !important;
  color: #8b1a2b !important;
  text-transform: none;
  letter-spacing: 0;
}
.lrb-agenda-save { background: #dce8f4; border-radius: 12px; padding: 14px; }
.lrb-agenda-save ul { margin: 0; padding-left: 18px; }
.lrb-agenda-save li { margin: 4px 0; font-size: 13.5px; font-weight: 600; color: #17346b; }

@media (max-width: 760px) {
  .lrb-agenda-tabella-wrap { display: none; }
  .lrb-agenda-giorni { display: flex; }
  .lrb-agenda-due { grid-template-columns: 1fr; }
  .lrb-agenda-testata { flex-direction: column; align-items: flex-start; gap: 12px; }
  .lrb-agenda-testata h3 { font-size: 21px !important; }
  .lrb-agenda-foto { width: 100%; flex: 0 0 auto; height: 150px; }
}
@media (max-width: 420px) {
  /* Etichetta sopra e valore sotto: a 400px una colonna fissa di 108px lascia
     al testo meno di metà schermo, e «Ore 20.45 Consiglio Pastorale» esce a
     una parola per riga. */
  .lrb-agenda-voce { flex-direction: column; gap: 2px; }
  .lrb-agenda-et { flex: 0 0 auto; }
}

.lrb-button-small {
  padding: 6px 14px !important;
  font-size: 12.5px !important;
}

/* v1.8.34: cella "Codice accesso" (serratura Yale) in Console operatore, stesso
   linguaggio visivo della cella Cauzione già esistente. */
.lrb-oc-access-code{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.lrb-oc-access-code-summary{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.lrb-oc-access-code-summary strong{font-family:monospace;font-size:13px;letter-spacing:.02em}
@media (max-width: 782px) {
  .lrb-oc-access-code{align-items:flex-end}
}

/* v1.8.35: Bacheca gruppi (sondaggi/annunci) nell'area utente — stesso linguaggio
   visivo della lista Comunicazioni (.lrb-comm-*) già esistente. */
.lrb-group-posts-list{display:grid;gap:12px;}
.lrb-group-post{border:1px solid #dbe4f0;border-radius:16px;background:#fff;padding:14px 16px;box-shadow:0 8px 22px rgba(39,53,131,.05);}
.lrb-group-post.lrb-group-post-poll.is-open{border-color:#f2d36b;background:#fffdf2;}
.lrb-group-post-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;}
.lrb-group-post-head h4{margin:4px 0 0;color:#0b3b7a;font-size:1.05rem;}
.lrb-group-post-kind{display:inline-block;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;background:#eef2ff;color:#273583;border-radius:999px;padding:4px 8px;margin-right:6px;}
.lrb-group-post-group{font-size:.78rem;color:#64748b;font-weight:700;}
.lrb-group-post-body{font-size:.95rem;color:#26324d;line-height:1.55;margin-top:6px;}
.lrb-group-post-body p{margin:.35rem 0;}
.lrb-group-post-options{display:grid;gap:8px;margin:12px 0;}
.lrb-group-post-option{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid #e3e8f2;border-radius:12px;font-size:.9rem;}
.lrb-group-post-option.is-mine{border-color:#273583;background:#f0f4ff;}
.lrb-group-post-option-label{flex:1;}
.lrb-group-post-option-count{font-size:.78rem;color:#64748b;font-weight:700;white-space:nowrap;}
@media(max-width:720px){.lrb-group-post-head{display:block}.lrb-group-post{padding:12px}}

/* v1.8.36: accordion "Messaggi Telegram" in wp-admin (Operatività > Telegram) — raggruppa
   i template per categoria, chiusi di default, per accorciare la pagina senza spostare
   alcun campo/logica. */
.lrb-admin-telegram-msg-group{border:1px solid #dcdcde;border-radius:10px;background:#f9fafb;padding:10px 14px;margin:10px 0;}
.lrb-admin-telegram-msg-group summary{cursor:pointer;font-weight:600;padding:4px 0;list-style:revert;}
.lrb-admin-telegram-msg-group summary .description{font-weight:400;color:#646970;}
.lrb-admin-telegram-msg-group[open] summary{margin-bottom:6px;border-bottom:1px solid #e0e0e0;}
.lrb-admin-telegram-msg-group textarea{margin-top:4px;}

/* ===== v1.8.50 - Turni gestori circolo =====
   Griglia della settimana usata sia in Console operatore sia nella pagina frontend
   dei gestori. Volutamente sobria: riusa i colori del portale e non introduce un
   sistema visivo nuovo. */
.lrb-shift-team-line {
  margin: 0 0 12px;
  font-size: .96rem;
}
.lrb-shift-badge {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: .74rem;
  font-weight: 700;
  vertical-align: middle;
}
.lrb-shift-badge-override {
  background: #fef3c7;
  color: #92400e;
  border: 1px solid #fcd34d;
}
.lrb-shift-badge-today {
  background: #dbeafe;
  color: #1e40af;
  border: 1px solid #bfdbfe;
}
.lrb-shift-badge-cover {
  background: #fee2e2;
  color: #991b1b;
  border: 1px solid #fecaca;
}
.lrb-shift-table {
  width: 100%;
  border-collapse: collapse;
  margin: 0 0 10px;
}
.lrb-shift-table th,
.lrb-shift-table td {
  padding: 9px 10px;
  border-bottom: 1px solid #e8edf5;
  text-align: left;
  font-size: .92rem;
  vertical-align: middle;
}
.lrb-shift-table th {
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #64748b;
}
.lrb-shift-table tr.is-today td {
  background: #f5f9ff;
}
.lrb-shift-table tr.is-closed td {
  background: #fafafa;
  color: #94a3b8;
}
.lrb-shift-empty {
  color: #b45309;
  font-weight: 700;
}
.lrb-shift-summary {
  margin: 0;
  font-size: .9rem;
  color: #475569;
}
.lrb-shift-override-box {
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid #e6ecf5;
}
.lrb-shift-override-box h4 {
  margin: 0 0 8px;
}
.lrb-shift-weeknav {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin: 12px 0;
}
.lrb-shift-next-duty {
  background: #f0f7ff;
  border: 1px solid #d6e6fb;
  border-radius: 12px;
  padding: 10px 12px;
  margin: 0 0 12px;
  font-size: .92rem;
}
@media (max-width: 600px) {
  .lrb-shift-table th,
  .lrb-shift-table td {
    padding: 8px 6px;
    font-size: .86rem;
  }
}

/* ===== v1.8.53 - Turni gestori: layout piu' compatto e allineato =====
   La vista usava .lrb-oc-card, che nella console e' una card CLICCABILE in flex
   orizzontale: il titolo finiva affiancato al contenuto invece che sopra, da cui il
   disallineamento segnalato. Ora si usa .lrb-oc-panel come le altre sezioni. */
.lrb-shift-settings-panel > summary {
  cursor: pointer;
  list-style: none;
  margin-bottom: 0;
}
.lrb-shift-settings-panel > summary::-webkit-details-marker { display: none; }
.lrb-shift-settings-panel > summary::after {
  content: "▾";
  margin-left: auto;
  color: var(--oc-muted);
  font-size: 13px;
  transition: transform .15s;
}
.lrb-shift-settings-panel[open] > summary::after { transform: rotate(180deg); }
.lrb-shift-settings-panel[open] > summary { margin-bottom: 14px; }
.lrb-shift-settings-panel .lrb-oc-form-grid { margin-bottom: 10px; }

/* v1.9.64 — Pianificazione settimane.
   La riga dei periodi e la tabella con una tendina per settimana. La tendina ha
   una larghezza minima cosi' i nomi delle squadre non vengono tagliati, ma
   min-width:0 sulla cella le permette comunque di restringersi su schermo
   stretto invece di allargare la tabella (la stessa trappola gia' vista sui
   filtri: senza, un elemento non scende mai sotto il suo contenuto). */
.lrb-shift-plan-nav {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 12px;
}
.lrb-shift-plan-table td { vertical-align: middle; }
.lrb-shift-plan-table td[data-label="Squadra di turno"] { min-width: 0; }
.lrb-shift-plan-sel { width: 100%; max-width: 260px; min-width: 0; }
.lrb-shift-plan-table tr.is-today > td { background: var(--oc-soft, #f1f5fb); }
/* v1.9.65 — Lo stato come UN blocco: riquadro e motivo insieme, allineati come
   qualunque altro valore. Prima erano pezzi separati e da telefono, dove la cella
   diventa una fila etichetta/valore, la riga col motivo finiva a sinistra mentre
   tutte le altre restavano a destra: la colonna sembrava storta. */
.lrb-shift-plan-stato { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; }
.lrb-shift-plan-stato small { line-height: 1.3; }
.lrb-shift-notify-form { margin: 0; }
.lrb-shift-notify-past { opacity: .45; }
/* Riempimento a schema: chiuso di default, e' uno strumento che si usa a stagione,
   non la cosa che si guarda entrando. */
.lrb-shift-fill { margin-bottom: 14px; border: 1px solid var(--oc-line, #e6ecf5); border-radius: 10px; padding: 10px 12px; }
.lrb-shift-fill > summary { cursor: pointer; font-weight: 700; font-size: 13px; color: var(--oc-ink, #0B2A66); }
.lrb-shift-fill-form { margin-top: 10px; }
.lrb-shift-fill-teams { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
/* v1.9.66 — Sequenza di rotazione: posizioni numerate in fila, che vanno a capo
   su schermo stretto invece di stringersi fino a nascondere i nomi. */
.lrb-shift-seq-line { margin: 0 0 12px; font-size: 13px; line-height: 1.5; }
.lrb-shift-seq-slots { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.lrb-shift-seq-slot { display: flex; align-items: center; gap: 6px; }
.lrb-shift-seq-num {
  width: 20px; height: 20px; flex: 0 0 auto; border-radius: 50%;
  background: var(--oc-soft, #eef2f9); color: var(--oc-muted, #64748b);
  font-size: 11px; font-weight: 700; display: inline-flex;
  align-items: center; justify-content: center;
}
.lrb-shift-seq-slot select { min-width: 0; max-width: 190px; }
@media (max-width: 820px) {
  /* Da telefono la cella e' una fila etichetta/valore: il blocco stato si allinea
     a destra come il resto, cosi' la colonna resta dritta riga per riga. */
  .lrb-shift-plan-stato { align-items: flex-end; text-align: right; min-width: 0; }
}
.lrb-shift-plan-actions {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 12px;
}
.lrb-shift-plan-actions .lrb-oc-hint { margin: 0; flex: 1 1 260px; }
@media (max-width: 820px) {
  /* Da telefono la cella diventa una fila etichetta/valore: la tendina deve
     poter restringersi, altrimenti sfonda la cella come gia' successo altrove. */
  .lrb-shift-plan-sel { max-width: 60%; }
}

.lrb-shift-days-row {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}
.lrb-shift-days-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--oc-muted);
}
.lrb-shift-days { display: flex; gap: 6px; flex-wrap: wrap; }
.lrb-shift-day {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 10px;
  border: 1px solid var(--oc-line);
  border-radius: 8px;
  background: #fff;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--oc-ink);
  cursor: pointer;
}
.lrb-shift-day input { margin: 0; }
.lrb-shift-actions-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}

/* Squadre: elenco e form affiancati, invece che uno sotto l'altro */
.lrb-shift-teams-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 260px;
  gap: 18px;
  align-items: start;
}
.lrb-shift-teams-table th,
.lrb-shift-teams-table td { padding: 7px 8px; font-size: 13px; }
.lrb-shift-team-actions { white-space: nowrap; text-align: right; }
.lrb-shift-team-form {
  border: 1px solid var(--oc-line);
  border-radius: 12px;
  padding: 12px;
  background: #fbfcfe;
}
.lrb-shift-team-form h4 { margin: 0 0 10px; font-size: 13.5px; color: var(--oc-blue); }
.lrb-shift-team-form .lrb-oc-field { margin-bottom: 8px; }
.lrb-shift-team-form-actions { display: flex; gap: 6px; margin-top: 10px; }

.lrb-shift-weeknav { display: inline-flex; gap: 6px; }
.lrb-shift-actions-cell { white-space: nowrap; text-align: right; }
.lrb-shift-btn { padding: 5px 12px !important; font-size: 13px !important; }

@media (max-width: 900px) {
  .lrb-shift-teams-layout { grid-template-columns: 1fr; }
}

/* v1.8.53 - selettore di assegnazione diretta nella griglia settimana (console).
   Serve al referente quando un gestore chiede il cambio: riassegna la serata a
   un'altra persona della squadra senza passare dalle autoprenotazioni. */
.lrb-shift-manage-cell {
  white-space: nowrap;
  text-align: right;
}
.lrb-shift-assign-form {
  display: inline-block;
  margin-right: 6px;
}
.lrb-shift-assign-form select {
  border: 1px solid var(--oc-line);
  border-radius: 8px;
  padding: 5px 8px;
  font-size: 13px;
  background: #fff;
  color: var(--oc-ink);
  max-width: 190px;
}
@media (max-width: 700px) {
  .lrb-shift-manage-cell { text-align: left; }
  .lrb-shift-assign-form { display: block; margin: 0 0 6px; }
  .lrb-shift-assign-form select { width: 100%; max-width: none; }
}

/* ===== scheda utente console =====
   Storia breve, perché qui si è girato in tondo. In v1.8.55 si era passati dalla
   griglia alle colonne CSS per un motivo valido: la griglia di allora stirava ogni
   riquadro all'altezza del più alto della riga, lasciando vuoti. Ma le colonne CSS
   hanno introdotto un difetto peggiore, lo sbilanciamento descritto qui sotto.
   v1.8.99 torna alla griglia SENZA il problema originario, grazie ad
   `align-items:start` che era la risposta giusta già allora. */
/* v1.9.0 — Impaccamento senza vuoti. [SUPERATO DALLA v1.9.27 — vedi sotto:
   l'incastro e' stato tolto perche' impediva ai pulsanti Salva di allinearsi.
   Questo commento resta per capire perche' era stato fatto.]
   Le due strade ovvie falliscono ognuna a metà: le colonne CSS impacchettano bene
   ma riempiono le colonne in modo diseguale, la griglia allinea le colonne ma
   lascia un buco sotto ogni riquadro più corto del più alto della sua riga.
   Qui la griglia ha righe altissime 4px: ogni riquadro dichiara quante righe
   occupare in base alla propria altezza reale, calcolata dal browser, così quello
   sotto risale fino a toccarlo. Il risultato è un impaccamento a incastro con
   colonne di larghezza identica e ordine di lettura naturale.
   Il calcolo lo fa lo script della console (classe is-masonry): senza JavaScript
   restano queste regole di base, cioè una griglia ordinata e usabile, solo con i
   vuoti di prima. */
/* v1.9.27 — L'IMPACCAMENTO A INCASTRO E' STATO TOLTO.
   Faceva risalire ogni riquadro fino a toccare quello sopra: bello a vedersi,
   ma i riquadri della stessa riga finivano ad altezze diverse e i pulsanti
   "Salva" non stavano mai sulla stessa linea. Ora `align-items: stretch`
   allinea le righe e i pulsanti si incolonnano; in cambio un riquadro corto
   lascia un po' di spazio vuoto al proprio interno. E' il compromesso scelto:
   ritrovare il pulsante sempre nello stesso punto vale piu' di qualche
   centimetro di bianco. Lo script che calcolava gli span e' stato rimosso
   insieme a queste regole (era l'unico posto che usava .is-masonry). */
.lrb-oc-user-body {
  display: grid !important;
  grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
  align-items: stretch;
  gap: 14px;
  padding: 4px 16px 16px;
  columns: auto;
}
.lrb-oc-user-body > .lrb-oc-user-block {
  width: auto;
  margin: 0;
  /* Colonna: cosi' il piede con il pulsante puo' essere spinto in fondo con
     margin-top:auto, qualunque sia la lunghezza del contenuto sopra. */
  display: flex;
  flex-direction: column;
}
/* Il modulo dentro il riquadro deve poter crescere quanto il riquadro,
   altrimenti il suo pulsante resta appeso a meta' altezza. */
.lrb-oc-user-body > .lrb-oc-user-block > form {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  margin: 0;
}
/* Il piede: la fascia con la nota di stato e il pulsante di salvataggio.
   `margin-top: auto` e' quello che lo incolla in fondo.
   Lo stile si applica SOLO al contenitore .lrb-oc-user-block-actions, mai al
   pulsante: applicandolo al submit (che in diversi riquadri e' figlio diretto
   del form) il pulsante diventava largo quanto tutto il riquadro, con la
   scritta spinta a destra. Dove il contenitore manca lo crea lo script. */
.lrb-oc-user-body .lrb-oc-user-block .lrb-oc-user-block-actions {
  margin-top: auto;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  padding-top: 10px;
  border-top: 1px solid #f0f4fa;
}
/* Il pulsante dentro il piede non si stira: resta della sua misura. */
.lrb-oc-user-body .lrb-oc-user-block .lrb-oc-user-block-actions > .lrb-oc-btn { flex: 0 0 auto; }
/* La nota di stato la inserisce lo script, a sinistra del pulsante. */
.lrb-oc-blk-nota {
  margin-right: auto;
  font-size: 11.5px;
  font-weight: 700;
  color: #8a5a00;
}
.lrb-oc-blk-nota.is-quiet { color: #94a3b8; font-weight: 600; }
/* Riquadro con modifiche non salvate: bordo ambra, come i campi toccati. */
.lrb-oc-user-block.is-touched { border-color: #f0dca4; box-shadow: 0 0 0 1px #f0dca4; }
/* Campo toccato. La pastiglia NON esiste qui: il segnale e' il solo colore del
   bordo, perche' nella console i campi non hanno lo spazio per una pastiglia
   accanto all'etichetta senza spostare tutto il resto. */
.lrb-oc-field.is-mod > input,
.lrb-oc-field.is-mod > select,
.lrb-oc-field.is-mod > textarea,
.lrb-oc-field.is-mod input,
.lrb-oc-field.is-mod select,
.lrb-oc-field.is-mod textarea { border-color: #dba617; background: #fffdf5; }

/* ---------------------------------------------------------------------
   v1.9.27 — Barra delle AZIONI in cima alla scheda utente.
   Quattro (o meno) celle di larghezza IDENTICA: con display:flex ogni
   pulsante si dimensionava sulla propria etichetta e "Invia link password"
   risultava largo il doppio di "Impersonifica". auto-fit + 1fr le tiene
   uguali qualunque sia il numero di azioni visibili, che cambia con i
   permessi e con lo stato della 2FA.
   Icone e tinte sono quelle gia' in uso nella console (dashicons e le
   varianti di .lrb-oc-iconbtn): nessun secondo alfabeto da imparare.
   --------------------------------------------------------------------- */
.lrb-oc-quickbar {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
  padding: 12px 16px;
  background: #f8fbff;
  border-bottom: 1px solid var(--oc-line);
  /* v1.9.27 — TRE COLONNE FISSE, non auto-fit.
     Con sei comandi e larghezza libera l'ultima riga restava monca (quattro
     sopra, due sotto e un vuoto largo mezza scheda), che e' l'opposto
     dell'idea di ordine che questa barra deve dare. Tre colonne fisse fanno
     due righe sempre complete, e le celle restano tutte della stessa
     larghezza qualunque sia il numero di comandi visibili — che cambia con i
     permessi, con lo stato della 2FA e con chi si sta guardando.
     Il tetto NON si mette con max-width sulla barra: fermerebbe anche lo
     sfondo azzurro a meta' scheda (provato).
     Il numero di colonne lo decide il PHP in base a quanti comandi sono
     davvero visibili (classe -c1..-c5, oppure -c3 da sei in su): vedi la nota
     in lrb_oc_user_quickbar(). Qui sotto le regole per ogni caso. */
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
/* Fino a cinque comandi: una colonna per comando, quindi una riga sola e
   piena. A 1440px cinque celle sono larghe ~270px, spazio abbondante per
   l'etichetta su una riga sola. */
.lrb-oc-quickbar-c1 { grid-template-columns: minmax(0, 1fr); }
.lrb-oc-quickbar-c2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.lrb-oc-quickbar-c3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.lrb-oc-quickbar-c4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.lrb-oc-quickbar-c5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
/* Sotto i 1200px quattro o cinque colonne diventano troppo strette per
   l'etichetta: si scende a tre. Con cinque comandi il buco torna (3 + 2), ma
   e' il male minore rispetto a un'etichetta spezzata su tre righe. */
@media (max-width: 1200px) {
  .lrb-oc-quickbar-c4, .lrb-oc-quickbar-c5 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.lrb-oc-quick-f { margin: 0; display: flex; }
.lrb-oc-quick {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  /* L'altezza minima e' DICHIARATA e non lasciata al contenuto: e' questo a
     tenere tutti i pulsanti uguali anche quando un'etichetta va a capo e
     un'altra no. Misurato: 84px a 1440, 834 e 390px, senza eccezioni. */
  gap: 5px;
  width: 100%;
  min-height: 84px;
  padding: 9px 8px;
  border: 1px solid var(--oc-line);
  border-radius: 12px;
  background: #fff;
  color: var(--oc-blue);
  font-family: inherit;
  font-size: 12px;
  font-weight: 700;
  line-height: 1.25;
  text-align: center;
  cursor: pointer;
  transition: background .12s, border-color .12s, transform .05s;
}
.lrb-oc-quick:hover { transform: translateY(-1px); }
.lrb-oc-quick:active { transform: translateY(0); }
.lrb-oc-quick:focus-visible { outline: 2px solid var(--oc-blue2); outline-offset: 2px; }
/* Il cerchio dell'icona ha la stessa misura per tutte: cosi' le etichette
   partono dalla stessa altezza anche quando una va a capo e l'altra no. */
/* v1.9.27: cerchio 26px invece di 34 e glifo 15 invece di 19. L'icona resta
   riconoscibile ma smette di dominare, e il pulsante si accorcia di 17px.
   Misura uguale per tutti: e' quello che fa partire le etichette dalla stessa
   altezza anche quando una va a capo. */
.lrb-oc-quick-i {
  display: inline-flex; align-items: center; justify-content: center;
  width: 26px; height: 26px; border-radius: 8px; flex: 0 0 auto;
}
.lrb-oc-quick-i .dashicons { font-size: 15px; width: 15px; height: 15px; line-height: 1; }
.lrb-oc-quick-t { font-size: 12px; }
/* Lo stato attuale, sotto l'etichetta. Un interruttore senza stato inganna:
   "Abilita operatore" da solo non dice se lo e' gia'. */
.lrb-oc-quick-s { display: block; font-size: 10px; font-weight: 600; color: var(--oc-muted); line-height: 1.3; }
.lrb-oc-quick-s.is-ok { color: #11663a; }
.lrb-oc-quick-s.is-no { color: #8a5a00; }
.lrb-oc-quick-info { border-color: #cfe0fa; }
.lrb-oc-quick-info .lrb-oc-quick-i { background: #f3f8ff; color: #0b63ce; }
.lrb-oc-quick-info:hover { background: #f7fbff; border-color: #b9d3f7; }
.lrb-oc-quick-warn { border-color: #f0dcab; }
.lrb-oc-quick-warn .lrb-oc-quick-i { background: #fff8e9; color: #a9710a; }
.lrb-oc-quick-warn:hover { background: #fffdf6; border-color: #e8cd8a; }
/* L'azione piu' delicata e' l'unica con la scritta colorata: il colore da
   solo non basta a distinguerla, ma insieme all'icona e al bordo si vede. */
.lrb-oc-quick-danger { border-color: #f0c2bc; color: #c0392b; }
.lrb-oc-quick-danger .lrb-oc-quick-i { background: #fdf1ef; color: #c0392b; }
.lrb-oc-quick-danger:hover { background: #fff8f7; border-color: #e5a49c; }

/* ---------------------------------------------------------------------
   v1.9.27 — Barra delle modifiche non salvate, in fondo alla scheda.
   Resta agganciata mentre si scorre, cosi' non si perde di vista che c'e'
   qualcosa in sospeso. Nasce hidden nell'HTML: senza JavaScript non compare.
   --------------------------------------------------------------------- */
.lrb-oc-userbar {
  position: sticky;
  bottom: 0;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding: 10px 16px;
  background: #fff8e5;
  border-top: 1px solid #f0dca4;
  box-shadow: 0 -6px 16px rgba(11, 42, 102, .07);
}
.lrb-oc-userbar[hidden] { display: none; }
.lrb-oc-userbar-n { font-size: 12.5px; color: #8a5a00; }
.lrb-oc-userbar-n b { color: #7a4f00; }
.lrb-oc-userbar-b { display: flex; gap: 8px; flex-wrap: wrap; }

@media (max-width: 640px) {
  .lrb-oc-quickbar, .lrb-oc-quickbar-c3, .lrb-oc-quickbar-c4, .lrb-oc-quickbar-c5 {
    grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 10px 12px; }
  .lrb-oc-quick { min-height: 70px; font-size: 11.5px; }
  .lrb-oc-userbar { flex-direction: column; align-items: stretch; }
  .lrb-oc-userbar-b { justify-content: flex-end; }
}
/* Blocchi piu' compatti: meno padding e spaziature interne piu' strette */
.lrb-oc-user-block { padding: 12px !important; }
.lrb-oc-user-block h4 { margin: 0 0 8px !important; }
.lrb-oc-user-block .lrb-oc-field { margin-bottom: 8px !important; }
.lrb-oc-user-block .lrb-oc-hint { margin: 0 0 8px !important; line-height: 1.35; }
.lrb-oc-user-block .lrb-oc-group-checks { max-height: 150px; }
.lrb-oc-user-block-actions { margin-top: 8px; }

/* v1.8.93 - griglia dei destinatari notifiche nella pagina Template email. */
.lrb-oc-notif-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px;margin-top:6px}
.lrb-oc-notif-area{background:#f8fafc;border:1px solid var(--oc-line);border-radius:10px;padding:10px 12px;gap:2px}
.lrb-oc-notif-name{font-weight:800;font-size:13px;color:#1d2327}
.lrb-oc-notif-desc{font-size:11.5px;color:var(--oc-muted);line-height:1.35;margin-bottom:6px;font-weight:400!important}
.lrb-oc-notif-area textarea{width:100%;box-sizing:border-box;font-size:13px;padding:7px 9px;border:1px solid var(--oc-line);border-radius:8px;resize:vertical}

/* v1.8.92 - interruttore "Abilita/Disabilita operatore" dentro il riquadro permessi. */
.lrb-oc-optoggle{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px;padding:8px 10px;background:#f6f8fb;border:1px solid var(--oc-line);border-radius:9px}
.lrb-oc-optoggle-state{font-size:12px;color:var(--oc-muted)}
.lrb-oc-optoggle-state strong{color:#1d2327}

/* v1.8.92 - il riquadro dei permessi operatore attraversa tutte le colonne.
   Dentro una colonna da 300px i 17 permessi restavano incolonnati e il blocco
   diventava piu' alto dell'intera scheda utente; a tutta larghezza auto-fit ne
   affianca 5-6 per riga. Se il browser ignora column-span il blocco torna
   semplicemente in colonna, come prima: nessuna rottura. */
.lrb-oc-user-body > .lrb-oc-user-block-wide {
  display: block;
  -webkit-column-span: all;
  column-span: all;
}

@media (max-width: 1400px) { .lrb-oc-user-body { columns: 3 280px; } }
@media (max-width: 1100px) { .lrb-oc-user-body { columns: 2 260px; } }
@media (max-width: 782px)  { .lrb-oc-user-body { columns: 1; } }

/* v1.8.55 - .lrb-oc-hint era definita SOLO dentro .lrb-oc-user-block: altrove (es.
   sezione Turni gestori) le note esplicative ereditavano la dimensione del testo
   normale e risultavano grandi quanto i contenuti veri. Regola generale, cosi' le
   didascalie sono didascalie ovunque nella console. */
.lrb-oc-hint {
  font-size: 12px;
  line-height: 1.4;
  color: var(--oc-muted);
  margin: 0 0 8px;
}
.lrb-oc-section-head .lrb-oc-hint { font-size: 12.5px; }
/* Note della sezione turni: ancora piu' discrete, sono promemoria di configurazione */
.lrb-shift-teams-list .lrb-oc-hint,
.lrb-shift-override-box .lrb-oc-hint,
.lrb-shift-settings-panel .lrb-oc-hint {
  font-size: 11.5px;
  line-height: 1.35;
  color: var(--oc-muted);
  opacity: .9;
}
.lrb-shift-override-box h4 { font-size: 13px; }
.lrb-shift-team-line { font-size: 13.5px; }
.lrb-shift-summary { font-size: 12.5px; }

/* v1.8.55 - nota della pagina turni lato gestore (frontend): classe propria invece di
   riusare .lrb-oc-hint, che appartiene alla Console operatore e fuori da li' non ha
   uno stile garantito. */
.lrb-shift-note {
  margin: 12px 0 0;
  font-size: .86rem;
  line-height: 1.45;
  color: #64748b;
}

/* v1.8.55 - card "Turni circolo" nell'area utente (solo gestori).
   Riusa il riquadro pieghevole +/- di "Le mie prenotazioni", quindi su smartphone
   parte chiuso come tutte le altre sezioni. */
.lrb-shifts-card-body { padding: 0 4px 4px; }
.lrb-shifts-card .lrb-shift-week { margin-top: 4px; }

@media (max-width: 600px) {
  /* La tabella a colonne su schermo stretto risulta compressa: diventa un elenco di
     righe, una per serata, con giorno e nome sopra e il pulsante a destra. */
  .lrb-shift-table thead { display: none; }
  .lrb-shift-table,
  .lrb-shift-table tbody,
  .lrb-shift-table tr,
  .lrb-shift-table td { display: block; width: 100%; }
  .lrb-shift-table tr {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 10px;
    padding: 9px 10px;
    border: 1px solid #e8edf5;
    border-radius: 10px;
    margin-bottom: 7px;
  }
  .lrb-shift-table td { border: 0 !important; padding: 0 !important; width: auto; }
  .lrb-shift-table td:first-child { flex: 0 0 auto; min-width: 82px; font-weight: 700; }
  .lrb-shift-table td:nth-child(2) { flex: 1 1 auto; min-width: 0; }
  .lrb-shift-table td:last-child { flex: 0 0 auto; margin-left: auto; }
  .lrb-shift-table tr.is-today { background: #f5f9ff; border-color: #cfe0f7; }
  .lrb-shift-table tr.is-closed { background: #fafafa; }
  .lrb-shift-btn { padding: 7px 14px !important; }
}

/* v1.8.56 - salto diretto a una settimana lontana (turni). */
.lrb-shift-jump { display: inline-block; margin: 0; }
.lrb-shift-jump input[type="date"] {
  border: 1px solid var(--oc-line, #d8e2f1);
  border-radius: 8px;
  padding: 5px 8px;
  font-size: 13px;
  background: #fff;
  color: #0b2a66;
}
.lrb-shift-weeknav { display: inline-flex; gap: 6px; flex-wrap: wrap; align-items: center; }
@media (max-width: 600px) {
  .lrb-shift-jump, .lrb-shift-jump input[type="date"] { width: 100%; }
}

/* ===== v1.8.56 - disponibilita' e avviso squadra ===== */
.lrb-shift-avail { margin-top: 4px; display: flex; flex-wrap: wrap; gap: 4px 6px; }
.lrb-shift-avail-name {
  font-size: 11.5px;
  background: #eef4ff;
  color: #1e40af;
  border: 1px solid #dbe6fb;
  border-radius: 999px;
  padding: 2px 8px;
}
/* Chi non ha altre serate possibili: va assegnato per primo, quindi si nota. */
.lrb-shift-avail-name.is-only {
  background: #fff4e5;
  color: #92400e;
  border-color: #fcd9a4;
  font-weight: 700;
}
.lrb-shift-avail-name em { font-style: normal; opacity: .85; }
.lrb-shift-avail-none { color: #94a3b8; font-size: 11.5px; }

.lrb-shift-avail-form {
  margin-top: 14px;
  padding: 12px 14px;
  border: 1px solid #e1e9f6;
  border-radius: 12px;
  background: #fbfcfe;
}
.lrb-shift-avail-form h4 { margin: 0 0 6px; font-size: 14px; color: #1f3f78; }
.lrb-shift-avail-days { display: flex; flex-wrap: wrap; gap: 7px; margin: 0 0 10px; }
.lrb-shift-avail-day {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 11px;
  border: 1px solid #d8e2f1;
  border-radius: 9px;
  background: #fff;
  font-size: 13px;
  font-weight: 700;
  color: #0b2a66;
  cursor: pointer;
}
.lrb-shift-avail-day input { margin: 0; }

.lrb-shift-notify-box {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid #e6ecf5;
}
.lrb-shift-notify-box .dashicons { font-size: 15px; width: 15px; height: 15px; vertical-align: text-bottom; }

@media (max-width: 600px) {
  .lrb-shift-avail-days { gap: 6px; }
  .lrb-shift-avail-day { flex: 1 1 45%; justify-content: center; }
}

/* ===== v1.8.57 - riepilogo disponibilita' squadra (griglia membri x serate) =====
   Nella v1.8.56 i disponibili si vedevano solo sotto le serate "da coprire" e
   sparivano appena assegnate: il responsabile non aveva modo di vedere l'insieme.
   Questa griglia mostra tutto in un colpo d'occhio, incluso chi non ha risposto. */
.lrb-shift-matrix-box {
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid #e6ecf5;
}
.lrb-shift-matrix-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.lrb-shift-matrix-head h4 { margin: 0; font-size: 13.5px; color: #1f3f78; }
.lrb-shift-matrix-warn {
  margin: 0 0 10px;
  padding: 8px 10px;
  background: #fff4e5;
  border: 1px solid #fcd9a4;
  border-radius: 9px;
  font-size: 12.5px;
  color: #92400e;
}
.lrb-shift-matrix-scroll { overflow-x: auto; }
/* v1.8.59: su smartphone la griglia disponibilità ha troppe colonne per stare in verticale;
   l'avviso di ruotare il telefono resta nascosto su desktop/tablet (dove la tabella ci sta
   già tutta) e compare solo sotto i 700px, insieme a un bordo/ombra che rende più evidente
   che la tabella si scorre lateralmente col dito. */
.lrb-shift-matrix-rotate-hint {
  display: none;
  margin: 0 0 8px;
  padding: 7px 10px;
  background: #eef4ff;
  border: 1px solid #dbe6fb;
  border-radius: 9px;
  font-size: 12px;
  color: #1e40af;
}
@media (max-width: 700px) {
  .lrb-shift-matrix-rotate-hint { display: block; }
  .lrb-shift-matrix-scroll {
    border: 1px solid #e8edf5;
    border-radius: 10px;
    box-shadow: inset -14px 0 10px -12px rgba(15, 23, 42, .18);
  }
}
.lrb-shift-matrix {
  width: 100%;
  border-collapse: collapse;
  font-size: 12.5px;
}
.lrb-shift-matrix th,
.lrb-shift-matrix td {
  border: 1px solid #e8edf5;
  padding: 6px 8px;
  text-align: center;
  white-space: nowrap;
}
.lrb-shift-matrix th { background: #f7f9fc; font-size: 11.5px; color: #64748b; font-weight: 700; }
.lrb-shift-matrix th.is-assigned { background: #eef4ff; color: #1e40af; }
.lrb-shift-matrix td:first-child,
.lrb-shift-matrix th:first-child { text-align: left; white-space: normal; min-width: 150px; }
.lrb-shift-matrix tr.is-assigned td { background: #fbfdff; }
.lrb-shift-matrix tr.is-silent td:first-child { color: #92400e; }
.lrb-shift-matrix-cell { font-size: 14px; color: #cbd5e1; }
.lrb-shift-matrix-cell.is-av { background: #eef7ee; color: #15803d; font-weight: 700; }
.lrb-shift-matrix-cell.is-mine { background: #dbeafe; color: #1e40af; font-weight: 700; }
.lrb-shift-matrix-no { color: #dbe2ec; }
.lrb-shift-matrix-left { font-weight: 700; }
.lrb-shift-only { color: #b45309; }
.lrb-shift-matrix-silent {
  display: inline-block;
  margin-left: 6px;
  font-size: 10.5px;
  font-weight: 700;
  color: #92400e;
  background: #fff4e5;
  border: 1px solid #fcd9a4;
  border-radius: 999px;
  padding: 1px 7px;
}
.lrb-shift-avail.is-secondary { margin-top: 5px; opacity: .85; }
.lrb-shift-avail.is-secondary small { color: #94a3b8; font-size: 11px; margin-right: 2px; }

/* ===== v1.10.7 — Turni circolo: una sola voce, e meno scroll sul telefono =====
   Diego, con tre schermate in fila: «non ha una coerenza nel font a partire dalla
   prima schermata [...] rimpicciolire tutto per far stare piu' cose nella schermata
   di uno smartphone tipo iPhone 15 e fare meno scroll».

   Le stesse righe vivono in due posti: la scheda «Turni circolo» dentro il portale
   e la pagina intera /turni-circolo. Erano scritte in due modi diversi per due
   motivi distinti, e vanno separati:

   1. i TITOLI: sistemati sopra, su .lrb-doc-page h1/h2, perche' li' la misura la
      sceglieva il tema;
   2. il TESTO: qui sotto. `.lrb-doc-page p` (specificita' 0,1,1) e' una regola
      generica che scavalca le classi nate apposta — `.lrb-shift-note` (0,1,0) e
      compagne — e dentro la pagina imponeva interlinea 1.65 e colore #374151 al
      posto dei loro 1.45 e #64748b. Stessa classe, due rese, a seconda di dove
      capitava. Rimetto le classi al loro posto pareggiando la specificita' con il
      tag (`p.lrb-shift-note` = 0,1,1) e vincendo per ordine, invece di togliere di
      mezzo `.lrb-doc-page p`, che serve a tutte le altre pagine documento. */
p.lrb-shift-note { line-height: 1.45; color: #64748b; }
p.lrb-shift-summary { line-height: 1.45; color: #475569; }
p.lrb-shift-team-line { line-height: 1.45; color: inherit; }

@media (max-width: 600px) {
  /* Il contorno della pagina (due riquadri di servizio, navigazione settimana,
     sottotitolo) costava piu' spazio del contenuto: prima di vedere una serata
     bisognava gia' scorrere. Qui si stringe il contorno, non il testo, che resta
     alla misura di prima. */
  /* v1.10.7b — LA BARRA IN CIMA, che e' il pezzo piu' alto di tutti.
     Diego, con lo screenshot cerchiato: «questa parte rimane ancora troppo
     grande su smartphone». Aveva ragione e la colpa e' di una mia misura fatta
     male: il collaudo della 1.10.7 non aveva la barra nel fixture, quindi
     dicevo «contorno 381px» misurando una pagina senza logo ne' voci. Con la
     barra il contorno vero era 551px su 852: due terzi dello schermo prima di
     vedere una serata.
     Sul telefono logo e voci stavano su DUE righe centrate (58px di logo + 42
     di voci + margini = 170px). Su una riga sola, logo a sinistra e voci a
     destra, come qualunque barra di navigazione, ne bastano una sessantina.
     Serve !important perche' le regole che impilano le voci in griglia lo
     usano gia': si pareggia l'arma e si vince per specificita'. */
  .lrb-portal .lrb-doc-topbar {
    display: flex !important;
    flex-direction: row !important;
    align-items: center;
    gap: 8px;
    /* anche il padding va con !important: sotto i 760px c'e' gia'
       `.lrb-portal .lrb-topbar { padding: 12px !important }`, stessa
       specificita' della mia. */
    padding: 8px 10px !important;
    margin-bottom: 10px;
  }
  .lrb-portal .lrb-doc-topbar .lrb-brand {
    flex: 0 0 auto;
    margin: 0 !important;
    justify-content: flex-start !important;
  }
  .lrb-portal .lrb-doc-topbar .lrb-brand img {
    max-height: 34px !important;
    width: auto !important;
    margin: 0 !important;
  }
  .lrb-portal .lrb-doc-topbar .lrb-nav,
  .lrb-portal.lrb-doc-page .lrb-doc-topbar .lrb-nav {
    display: flex !important;
    flex-wrap: nowrap !important;
    width: auto !important;
    flex: 1 1 auto;
    justify-content: flex-end !important;
    gap: 6px !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  .lrb-portal .lrb-doc-topbar .lrb-nav a,
  .lrb-portal.lrb-doc-page .lrb-doc-topbar .lrb-nav a {
    width: auto !important;
    min-width: 0 !important;
    padding: 8px 10px !important;
    font-size: 13px !important;
    /* niente min-height qui: sotto i 760px c'e' gia'
       `.lrb-doc-topbar .lrb-nav a { min-height: 38px !important }`, che tiene
       le voci sopra la soglia del dito. Ce l'avevo messo e una mutazione ha
       mostrato che non serviva a niente: tolto invece di lasciarlo li' a
       sembrare che stia facendo qualcosa. */
  }

  /* Il riquadro grigio era il testo PIU' GRANDE della pagina: 16px con
     interlinea 1.65, cioe' piu' del titolo di una sezione e molto piu' delle
     righe delle serate (13.8px). Non era una scelta: `.lrb-doc-updated` non
     dichiara una misura e si prendeva quella del corpo pagina. Portato alla
     stessa misura di tutto il resto. */
  .lrb-shifts-page .lrb-doc-updated,
  .lrb-shifts-page .lrb-shift-next-duty {
    font-size: 13.5px;
    line-height: 1.45;
  }

  /* I due riquadri di servizio dicono la stessa cosa — dove sei e quando tocca a
     te — e stavano uno sopra l'altro con bordo, angoli e stacco propri. Sul
     telefono diventano un blocco solo: si risparmiano lo stacco e una linea, e
     soprattutto si legge come una informazione sola invece che come due. */
  .lrb-shifts-page .lrb-doc-updated { padding: 8px 11px; border-radius: 10px 10px 0 0; margin: 0; }
  .lrb-shifts-page .lrb-doc-updated + .lrb-shift-next-duty {
    border-radius: 0 0 10px 10px;
    border-top: 0;
    margin: 0 0 8px;
  }
  .lrb-shifts-page .lrb-shift-next-duty { padding: 8px 11px; border-radius: 10px; margin: 0 0 8px; }
  .lrb-shifts-page .lrb-shift-weeknav { margin: 8px 0; gap: 6px; }
  .lrb-shifts-page h2 { margin: 14px 0 8px; }
  .lrb-shift-week .lrb-shift-team-line { margin-bottom: 8px; }
  .lrb-shift-table tr { padding: 7px 9px; margin-bottom: 5px; }
  .lrb-shift-avail-form { margin-top: 10px; padding: 10px 11px; }
  .lrb-shift-avail-form h4 { margin-bottom: 4px; }
  /* Le sei serate da spuntare stavano due per riga (tre righe) perche' ogni
     etichetta si allargava quanto il suo contenuto. A griglia ne stanno tre per
     riga, in due righe.
     `auto-fit` e non `repeat(3, ...)`: l'etichetta e' date_i18n('D d/m'), e
     l'abbreviazione del giorno la decide la lingua di WordPress. In italiano
     sono tre lettere e tre colonne ci stanno larghe; se una lingua ne desse di
     piu' lunghe, una griglia fissa a tre le taglierebbe. Cosi' invece scendono
     da sole a due, che e' come stavano prima: si guadagna dove si puo' e non si
     rompe niente dove non si puo'. */
  .lrb-shift-avail-days {
    display: grid;
    /* 92px, non un numero a caso: lo spazio utile dentro il riquadro su un
       iPhone 15 e' 295px (393 meno lo shell, la card e il form), quindi tre
       colonne piu' due spazi da 6 fanno 94px l'una. Sopra i 94 se ne
       otterrebbero due, com'era prima. */
    grid-template-columns: repeat(auto-fit, minmax(92px, 1fr));
    gap: 6px;
    margin-bottom: 8px;
  }
  .lrb-shift-avail-day { padding: 6px 4px; gap: 4px; min-width: 0; }

  /* Rimpicciolire la pagina non deve rimpicciolire i bersagli del dito: qui
     «Prendi» stava a 30px di altezza e il campo data a 32. Portati a 36, che sta
     ben sopra il minimo WCAG 2.2 (24x24) senza rubare le righe che Diego vuole
     guadagnare. Non i 40px pretesi sui filtri: li' c'era spazio da spendere. */
  .lrb-shift-weeknav .lrb-button,
  .lrb-shift-btn,
  .lrb-shift-avail-day {
    min-height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
  }
  .lrb-shift-jump input[type="date"] { min-height: 36px; box-sizing: border-box; }
}

/* v1.8.61: banner "stai impersonando" — sempre in cima, sopra a tutto (incluso lo shell
   fisso della console), finché l'amministratore non preme "Torna al tuo account". */
.lrb-impersonate-banner {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000000;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 10px 16px;
  padding: 9px 16px;
  background: #7c2d12;
  color: #fff7ed;
  font-size: 13.5px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, .18);
}
.lrb-impersonate-banner-text strong { color: #fed7aa; }
.lrb-impersonate-exit-form { margin: 0; }
.lrb-impersonate-exit-btn {
  border: 1px solid #fed7aa;
  background: #fff7ed;
  color: #7c2d12;
  font-weight: 700;
  font-size: 12.5px;
  border-radius: 999px;
  padding: 5px 14px;
  cursor: pointer;
}
.lrb-impersonate-exit-btn:hover { background: #fed7aa; }
@media (max-width: 600px) {
  /* v1.9.44 — Sul telefono la banda deve costare POCHE righe: e' un avviso, non
     un contenuto, e ogni riga che prende e' una riga in meno per il portale.
     Prima il testo lungo andava a capo due o tre volte e — sommato al fatto che
     niente spostava in giu' la pagina — copriva del tutto la barra dei menu. */
  .lrb-impersonate-banner {
    font-size: 12px; padding: 6px 10px; gap: 6px 10px;
    justify-content: space-between; flex-wrap: nowrap;
  }
  .lrb-impersonate-banner-text {
    min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  }
  /* La frase si accorcia, ma il NOME resta: e' l'unica informazione che conta
     davvero — sapere come chi si sta vedendo il portale. */
  .lrb-impersonate-banner-text .lrb-solo-largo { display: none; }
  .lrb-impersonate-exit-btn { padding: 5px 11px; font-size: 12px; white-space: nowrap; flex: 0 0 auto; }
}

/* v1.8.63: sezione "Template email" nella console operatore */
.lrb-oc-tpl-service{margin:0 0 18px}
.lrb-oc-tpl-service-head{display:flex;align-items:center;gap:8px;margin:0 0 8px;font-size:13.5px;font-weight:800;color:var(--oc-blue)}
.lrb-oc-tpl-dot{display:inline-block;width:10px;height:10px;border-radius:999px;flex:0 0 auto}
.lrb-oc-tpl{border:1px solid var(--oc-line);border-radius:10px;background:#fff;margin-bottom:6px}
.lrb-oc-tpl > summary{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  padding:9px 12px;cursor:pointer;list-style:none;font-size:13px;font-weight:600;color:var(--oc-ink)}
.lrb-oc-tpl > summary::-webkit-details-marker{display:none}
.lrb-oc-tpl > summary::after{content:"+";font-size:15px;line-height:1;color:var(--oc-blue2);font-weight:800;order:3}
.lrb-oc-tpl[open] > summary::after{content:"−"}
.lrb-oc-tpl-label{flex:1 1 auto}
.lrb-oc-tpl-badge{font-size:10.5px;font-weight:700;color:#1e40af;background:#eef4ff;border:1px solid #dbe6fb;
  border-radius:999px;padding:2px 8px;white-space:nowrap}
.lrb-oc-tpl-body{padding:2px 12px 12px;border-top:1px solid #f0f3f9}
.lrb-oc-tpl-body .lrb-oc-field{margin-bottom:10px}
.lrb-oc-tpl-vars{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin:0 0 10px}
.lrb-oc-tpl-vars-title{font-size:11px;font-weight:700;color:var(--oc-muted);margin-right:4px}
.lrb-oc-tpl-var{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;color:#0f766e;
  background:#e9f7f5;border:1px solid #cbe9e4;border-radius:6px;padding:1px 6px;cursor:help}

/* v1.8.67 - Rete di sicurezza per i fumetti "i" (.lrb-info-tip) su schermi stretti.
   La regola base ancora il fumetto con "right: 0" rispetto all'icona: se l'icona si
   trova vicino al bordo sinistro dello schermo (comune nei form, dove il tocco apre
   il fumetto tramite :focus), il riquadro puo' uscire dal viewport a sinistra. Diversi
   contesti (2FA, calendario, form prenotazione) avevano gia' una correzione dedicata;
   questa regola generale copre tutti gli altri "i" non ancora sistemati, facendo si'
   che il fumetto resti sempre largo quanto lo schermo (meno un margine) invece di
   essere ancorato all'icona: non puo' quindi mai sporgere ne' a destra ne' a sinistra.
   Le regole piu' specifiche gia' esistenti (con selettore su piu' classi) restano
   prioritarie per specificita' e continuano a funzionare come prima. */
@media (max-width: 600px) {
  .lrb-info-tip::after {
    left: 12px;
    right: 12px;
    width: auto;
    max-width: none;
  }
}

/* v1.8.81: rimosse le regole .lrb-oc-grouppick* del vecchio selettore gruppi della
   console operatore. Sostituito ovunque dal componente condiviso lrb_group_picker_markup(),
   che stampa i propri stili perche' deve funzionare anche dove questo foglio non e' caricato
   (es. schermata profilo utente di WordPress). Nessun markup emette piu' quelle classi. */

/* v1.8.99 — Foto profilo utente. Il cerchio ha dimensioni fisse e `object-fit:cover`
   perché la foto, pur ritagliata quadrata al caricamento, deve restare integra anche
   se un giorno arrivasse un'immagine con proporzioni diverse (es. una vecchia foto
   caricata prima di questa versione). */
.lrb-avatar-row { display: flex; gap: 20px; align-items: flex-start; flex-wrap: wrap; margin-top: 12px; }
.lrb-avatar-preview { flex: 0 0 auto; width: 112px; height: 112px; border-radius: 50%; overflow: hidden;
  background: #eef3fb; border: 1px solid #dbe4f0; display: flex; align-items: center; justify-content: center; }
.lrb-avatar-preview img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lrb-avatar-preview .dashicons { font-size: 54px; width: 54px; height: 54px; color: #90a4c4; }
.lrb-avatar-forms { flex: 1 1 240px; min-width: 0; }
.lrb-avatar-form { margin: 0 0 10px; }
.lrb-avatar-form input[type="file"] { max-width: 100%; }
.lrb-avatar-form small { display: block; margin-top: 4px; color: #64748b; font-size: .85rem; }
/* La foto nel menu account sostituisce l'icona: stessa area, così la barra non si muove. */
.lrb-account-menu-photo { width: 26px; height: 26px; border-radius: 50%; object-fit: cover; display: block; flex: 0 0 auto; }
@media (max-width: 480px) {
  .lrb-avatar-preview { width: 88px; height: 88px; }
}

/* v1.9.5 — Filtri del Registro attività. Si dispongono su una riga sola quando
   c'è spazio e vanno a capo da soli sugli schermi stretti: sono cinque campi, e
   forzarli in colonne fisse li renderebbe illeggibili su telefono. */
.lrb-oc-log-filters { display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: flex-end; margin: 0 0 14px; }
.lrb-oc-log-filters .lrb-oc-field { margin: 0; flex: 1 1 170px; min-width: 0; }
.lrb-oc-log-filters .lrb-oc-field select,
.lrb-oc-log-filters .lrb-oc-field input { width: 100%; padding: 7px 9px; border: 1px solid var(--oc-line); border-radius: 8px; box-sizing: border-box; }
.lrb-oc-log-filters-actions { display: flex; gap: 8px; flex: 0 0 auto; }
.lrb-oc-log-pager { display: flex; align-items: center; gap: 12px; margin-top: 14px; flex-wrap: wrap; }
/* La colonna "Dettaglio" contiene frasi lunghe: deve poter andare a capo invece
   di allargare la tabella oltre lo schermo. */
.lrb-oc-table td[data-label="Dettaglio"] { overflow-wrap: anywhere; }
/* Su telefono le schede impilano etichetta e valore solo per le celle che hanno
   un sottotitolo (regola di v1.8.94). Qui "Chi" e "Dettaglio" non ne hanno, ma
   contengono un indirizzo email e una frase intera: affiancati restavano
   compressi nella metà destra e andavano a capo ogni due parole. */
@media (max-width: 480px) {
  .lrb-oc-log-table td[data-label="Chi"],
  .lrb-oc-log-table td[data-label="Dettaglio"] { display: block; text-align: left; }
  .lrb-oc-log-table td[data-label="Chi"]::before,
  .lrb-oc-log-table td[data-label="Dettaglio"]::before { display: block; flex: none; margin-bottom: 4px; }
}
@media (max-width: 640px) {
  .lrb-oc-log-filters .lrb-oc-field { flex: 1 1 100%; }
  .lrb-oc-log-filters-actions { width: 100%; }
}

/* v1.9.6 — Pagina Impostazioni dell'area utente.
   I <small> di aiuto sotto i campi devono stare SOTTO e non a fianco: essendo
   elementi inline si affiancavano all'input, finendo mezzi fuori dal riquadro. */
.lrb-account-page .lrb-field small { display: block; margin-top: 4px; color: #64748b; font-size: .85rem; line-height: 1.4; }
.lrb-account-page .lrb-field { margin-bottom: 12px; }
.lrb-field-optional { font-weight: 400; color: #64748b; font-size: .85rem; }

/* v1.9.7 — Numero del prenotante con collegamento a WhatsApp.
   L'etichetta "WA" è testo e non un'immagine: resta leggibile anche dove le icone
   del tema non vengono caricate, e non aggiunge richieste alla pagina. */
.lrb-phone { white-space: nowrap; }
.lrb-phone-wa { color: #1b7f35; text-decoration: none; font-weight: 600; }
.lrb-phone-wa:hover { text-decoration: underline; }
.lrb-phone-wa-icon { display: inline-block; font-size: 9.5px; font-weight: 800; letter-spacing: .04em;
  background: #25d366; color: #fff; border-radius: 4px; padding: 1px 4px; vertical-align: 1px; }
/* Sul telefono l'area toccabile deve essere comoda: il numero è un bersaglio da
   colpire col pollice, non da centrare. */
@media (max-width: 640px) {
  .lrb-phone-wa { display: inline-block; padding: 4px 0; }
}

/* v1.9.8 — Riga "Invia al prenotante" nella finestra del codice di accesso.
   Il pulsante resta visibile anche quando non è ancora utilizzabile, con la
   motivazione accanto: su telefono la spiegazione va SOTTO, altrimenti stringe
   il pulsante in pochi pixel. */
.lrb-oc-modal-actions-send { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.lrb-oc-modal-actions-send .lrb-oc-hint { margin: 0; flex: 1 1 200px; min-width: 0; text-align: left; }
.lrb-oc-btn[disabled] { opacity: .55; cursor: not-allowed; }
@media (max-width: 640px) {
  .lrb-oc-modal-actions-send { flex-direction: column; align-items: stretch; }
  .lrb-oc-modal-actions-send .lrb-oc-btn { width: 100%; }
}

/* v1.9.9 — Pulsante "riepilogo su WhatsApp" fra le azioni della prenotazione.
   L'etichetta e' testo: WordPress non ha un'icona WhatsApp fra le dashicons, e
   un pulsante con dentro un'icona inesistente sarebbe apparso vuoto. */
.lrb-oc-iconbtn-wa { border-color: #b6e6c6; background: #f2fbf5; color: #14733a; }
.lrb-oc-iconbtn-wa:hover { background: #e2f6ea; border-color: #8fd8ab; }
.lrb-oc-wa-mark { font-size: 10px; font-weight: 800; letter-spacing: .03em; line-height: 1; }

/* v1.9.11 — Finestra di scelta del template WhatsApp.
   Il contenitore avvolge pulsante + finestra cosi' che il JS trovi la modale
   come fratello del pulsante, esattamente come per cauzione e codice Yale.
   Serve inline-flex e non display:contents: il pulsante deve restare allineato
   alle altre icone della riga, e con display:contents perderebbe il contenitore
   di riferimento su cui il JS fa parentElement. */
.lrb-oc-wa-wrap { display: inline-flex; }
.lrb-oc-wa-card { width: min(620px, 100%); }
.lrb-oc-wa-tpl { border: 1px solid var(--oc-line, #e2e8f0); border-radius: 12px; padding: 11px 13px; margin: 0 0 10px; background: #fff; }
.lrb-oc-wa-tpl.is-off { background: #f8fafc; opacity: .75; }
.lrb-oc-wa-tpl-head { display: flex; align-items: center; justify-content: space-between; gap: 10px 14px; flex-wrap: wrap; }
.lrb-oc-wa-tpl-head strong { display: block; font-size: 14px; color: #1d2327; }
.lrb-oc-wa-tpl-head small { display: block; color: #64748b; font-size: 12px; line-height: 1.35; margin-top: 2px; }
/* Bersaglio comodo al dito: il pulsante si preme dal telefono, spesso di fretta. */
.lrb-oc-wa-tpl-head .lrb-oc-btn { min-height: 38px; display: inline-flex; align-items: center; justify-content: center; }
.lrb-oc-btn-wa { background: #14733a; border-color: #14733a; color: #fff; }
.lrb-oc-btn-wa:hover { background: #0f5c2e; border-color: #0f5c2e; color: #fff; }
.lrb-oc-wa-prev { margin-top: 9px; }
.lrb-oc-wa-prev summary { cursor: pointer; font-size: 12px; font-weight: 700; color: var(--oc-blue, #17346b); }
/* Il messaggio va letto come arrivera' su WhatsApp: a capo veri, niente
   scorrimento orizzontale, e le parole lunghe spezzate invece di sfondare. */
.lrb-oc-wa-prev pre { margin: 8px 0 0; padding: 10px 12px; background: #f6f7f9; border: 1px solid #e6e8ec; border-radius: 10px; font-family: inherit; font-size: 13px; line-height: 1.45; white-space: pre-wrap; overflow-wrap: anywhere; max-height: 260px; overflow: auto; }
.lrb-oc-wa-why { margin: 8px 0 0; }
@media (max-width: 600px) {
  .lrb-oc-wa-tpl-head { align-items: stretch; }
  .lrb-oc-wa-tpl-head .lrb-oc-btn { width: 100%; text-align: center; }
}

/* v1.9.11 — Editor dei template WhatsApp nella sezione Template. */
.lrb-oc-wa-help { background: #f8fbff; border: 1px solid #dbe6f3; border-radius: 12px; padding: 11px 14px; margin: 0 0 14px; }
.lrb-oc-wa-help summary { cursor: pointer; font-weight: 700; color: var(--oc-blue, #17346b); }
.lrb-oc-wa-help-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: 6px 16px; margin: 10px 0; }
.lrb-oc-wa-help-grid code { background: #fff; border: 1px solid #dbe6f3; border-radius: 6px; padding: 1px 6px; font-size: 12px; color: #17346b; }
.lrb-oc-wa-help-grid span { color: #475569; font-size: 12px; }
.lrb-oc-wa-help-esempio { margin: 8px 0 10px; padding: 9px 12px; background: #fff; border: 1px solid #dbe6f3; border-radius: 8px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 12px; line-height: 1.5; color: #17346b; white-space: pre-wrap; overflow-wrap: anywhere; }
.lrb-oc-wa-editor { border: 1px solid var(--oc-line, #e2e8f0); border-radius: 12px; padding: 13px 15px; margin: 0 0 14px; background: #fff; }
.lrb-oc-wa-editor-head { display: flex; align-items: center; justify-content: space-between; gap: 10px 14px; flex-wrap: wrap; margin-bottom: 4px; }
.lrb-oc-wa-editor-head strong { font-size: 14px; color: #1d2327; }
/* Testo a spaziatura fissa: qui si conta sugli a capo, e con un carattere
   proporzionale non si vede dove finisce davvero una riga. */
.lrb-oc-wa-editor textarea { width: 100%; margin-top: 8px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 13px; line-height: 1.5; resize: vertical; }

/* =====================================================================
   v1.9.20 — App installata (PWA): la pagina non si sposta col dito
   ---------------------------------------------------------------------
   Si applica SOLO quando il portale gira come app installata: la classe
   .lrb-pwa-standalone la mette lrb_pwa_viewport_lock_js() su <html> in
   wp_head. Dentro un browser normale nulla di tutto questo vale, cosi'
   chi ha bisogno di ingrandire con le dita per leggere puo' continuare
   a farlo: e' un ausilio di accessibilita' e non va tolto a tutti.

   touch-action: pan-x pan-y  -> restano permessi gli scorrimenti nelle due
     direzioni (indispensabile: le tabelle larghe scorrono in orizzontale
     dentro il loro contenitore), ma vengono disabilitati sia il pizzico per
     ingrandire sia il doppio tap, che erano quelli che lasciavano la pagina
     ingrandita e scentrata.
   overscroll-behavior: none  -> niente rimbalzo elastico ai bordi e niente
     trascinamento verso il basso per ricaricare.
   overflow-x: hidden         -> il documento non scorre lateralmente; le
     tabelle larghe continuano a scorrere perche' hanno un proprio
     contenitore con overflow-x:auto, che non e' toccato da questa regola.
   ===================================================================== */
/* v1.10.0-beta35 — LA ROTELLINA DEL MOUSE NELLA APP INSTALLATA.
   Diego, da settimane: nella PWA da PC la rotellina non scorre. Frecce e
   barra di scorrimento funzionano, e nel browser normale la rotellina va:
   solo nella finestra dell'app no. La diagnosi eseguita sulla sua macchina
   ha dato il numero che mancava — «eventi rotellina: 0»: la rotellina non
   arriva NEMMENO alla pagina. Non era quindi il CSS dello scorrimento (li'
   gli eventi arriverebbero e sarebbe la pagina a non muoversi), ma qualcosa
   che li intercetta prima.

   La causa e' `touch-action` su <html>. Serviva per una cosa diversa e
   sensata: nella app installata su iPhone il pizzico per ingrandire lasciava
   la pagina spostata e scentrata, e `pan-x pan-y` toglie il pizzico
   lasciando gli scorrimenti. Su un telefono funziona.

   Su Windows no: nella finestra della PWA il motore tratta la rotellina come
   un gesto di trascinamento governato da `touch-action`, e con quel valore
   la scarta. Il dito continuerebbe a scorrere, il mouse no — ed e'
   esattamente quello che vede Diego.

   Rimedio: `touch-action` si applica solo dove serve davvero, cioe' dove
   esiste un dito. `pointer: coarse` e' vero su schermi tattili e falso su un
   computer col mouse. Cosi' il pizzico resta bloccato sul telefono, e sul
   computer la rotellina torna a funzionare.

   `overscroll-behavior` resta ovunque: riguarda il rimbalzo ai bordi e non
   ha mai avuto a che fare con la rotellina. */
@media (pointer: coarse) {
  html.lrb-pwa-standalone,
  html.lrb-pwa-standalone body {
    touch-action: pan-x pan-y;
  }
}
/* v1.10.0-beta36 — Secondo tentativo sulla rotellina.
   Con beta35 (touch-action solo dove c'e' un dito) la rotellina ancora non
   va. Restavano due sole regole attive SOLO in modalita' app installata, e
   sono queste. Le limito entrambe agli schermi tattili, per lo stesso motivo
   per cui l'ho fatto con touch-action: sono nate per risolvere problemi del
   DITO su iPhone, e su un computer col mouse non servono a niente.

   `overscroll-behavior: none` toglie il rimbalzo elastico ai bordi e il
   trascinamento verso il basso per ricaricare: due gesti che esistono solo
   col dito. Su Windows non c'e' niente da togliere — ma la proprieta' agisce
   sulla catena di scorrimento, ed e' l'ultima cosa rimasta che potrebbe
   interferire con la rotellina nella finestra della PWA.

   `overflow-x: hidden` su <html> serviva a impedire che la pagina si
   lasciasse trascinare di lato dopo un pizcico. Anche questo e' un gesto del
   dito. E ha un effetto collaterale noto: un elemento con overflow-x:hidden
   NON puo' avere overflow-y:visible — il browser lo forza ad `auto`, cioe'
   trasforma <html> in un contenitore che scorre per conto suo. E' la stessa
   regola del CSS che mi ha fatto sbagliare due volte sul suggerimento «i».

   Se dopo questa la rotellina va, sapremo quale delle due era. Se non va,
   nella app installata non resta piu' NIENTE di diverso dal browser normale
   — dove la rotellina funziona — e la causa sara' fuori dal portale. */
@media (pointer: coarse) {
  html.lrb-pwa-standalone,
  html.lrb-pwa-standalone body {
    overscroll-behavior: none;
  }
}
/* v1.10.39 — LA HOME CHE NON SCORRE NELLA APP ANDROID.
   Diego: «su app pwa installata su android non fa scroll la home page», e
   aggiunge: «su iOS e PC al momento funziona, il problema sembra essere solo
   android».
   Quel «solo nella app, solo su Android» restringe il campo a una riga sola:
   `overflow-x:hidden` su <html> vale SOLTANTO in modalita' app e SOLTANTO
   dove c'e' un dito. Nel browser dello stesso telefono non c'e', e infatti li'
   la pagina scorre.
   Il meccanismo e' quello gia' annotato qui sopra nella beta36, e vale la pena
   scriverlo fino in fondo: un elemento con `overflow-x:hidden` NON puo' avere
   `overflow-y:visible` — il browser lo alza a `auto`. Cosi' <html> smette di
   essere un elemento normale e diventa un CONTENITORE CHE SCORRE per conto
   suo; con anche il <body> nella stessa condizione, su Chrome per Android la
   catena dello scorrimento col dito si perde per strada. Col mouse e su iOS
   no: per questo il difetto si vedeva su un solo sistema.
   `overflow-x:clip` taglia allo stesso modo in orizzontale ma NON crea un
   contenitore di scorrimento: `overflow-y` resta `visible`, la pagina torna a
   scorrere dalla finestra come nel browser, e il trascinamento laterale dopo
   un pizzico resta impedito — che era lo scopo della regola.
   Il ripiego serve ai browser piu' vecchi di `clip` (Chrome 90, Safari 16):
   li' si tiene `hidden`, ma su <html> soltanto, mai su tutti e due insieme. */
@media (pointer: coarse) {
  html.lrb-pwa-standalone {
    overflow-x: clip;
  }
}
@supports not (overflow-x: clip) {
  @media (pointer: coarse) {
    html.lrb-pwa-standalone {
      overflow-x: hidden;
    }
  }
}
html.lrb-pwa-standalone {
  /* Evita che iOS ingrandisca da solo il testo ruotando il dispositivo:
     cambierebbe la larghezza del contenuto e rimetterebbe la pagina
     nella condizione di potersi spostare. */
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
/* Stesso ragionamento: `overflow-x:hidden` sul body, in modalita' app,
   trasforma anche il body in un contenitore che scorre per conto suo. Nato
   per il dito, tenuto solo dove c'e' il dito. */
html.lrb-pwa-standalone body {
  max-width: 100%;
}
/* v1.10.39 — stessa correzione del blocco qui sopra: `clip` invece di
   `hidden`, cosi' nella app installata NEMMENO il body diventa un contenitore
   che scorre per conto suo. Erano due, e bastava uno solo a rompere la catena
   dello scorrimento col dito su Android. */
@media (pointer: coarse) {
  html.lrb-pwa-standalone body {
    overflow-x: clip;
  }
}
/* Niente ripiego per il body: sui browser senza `clip` il taglio resta su
   <html>, e il body ha gia' `max-width:100%` qui sopra. Metterlo a `hidden` su
   tutti e due sarebbe tornare esattamente alla combinazione che ha causato il
   guasto. */

/* =====================================================================
   v1.9.21 — Moduli in bacheca
   ---------------------------------------------------------------------
   Classi nuove per il costruttore di domande (console), la compilazione
   (area utente) e la lettura delle risposte. Usano i token gia' in uso
   nel resto del portale — bordo var(--oc-line), testo var(--oc-ink) /
   var(--oc-muted), accento var(--oc-blue2), raggio 9px campi, 10px
   pulsanti, 12px riquadri — cosi' non introducono un secondo linguaggio
   grafico accanto a quello esistente.
   ===================================================================== */

/* ---------- Costruttore di domande (console) ---------- */
.lrb-gpf { max-width: 100%; }
.lrb-gpf-intro { margin: -6px 0 13px; }
.lrb-gpf-rows { display: grid; gap: 9px; margin: 0 0 12px; }
.lrb-gpf-row { border: 1px solid var(--oc-line); border-radius: 12px; background: #fff; }
.lrb-gpf-row:hover { border-color: #c9d8f2; }
.lrb-gpf-grid { display: grid; grid-template-columns: 26px minmax(0, 1fr) 176px auto auto; gap: 10px; align-items: center; padding: 11px 12px; }
.lrb-gpf-n { width: 26px; height: 26px; border-radius: 50%; background: #eef3fb; color: var(--oc-blue); font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; }

/* Altezza fissata su campi e menu: i <select> rendono un pixel piu' alti
   degli <input> per via degli stili predefiniti del browser, e affiancati
   sulla stessa riga la differenza si vede. */
.lrb-gpf-grid input[type="text"],
.lrb-gpf-grid select { width: 100%; border: 1px solid var(--oc-line); border-radius: 9px; padding: 0 11px; height: 38px; line-height: normal; font-size: 14px; font-weight: 500; color: var(--oc-ink); background: #fff; box-sizing: border-box; font-family: inherit; }
.lrb-gpf-grid select { cursor: pointer; }
.lrb-gpf-grid input[type="text"]:focus,
.lrb-gpf-grid select:focus { outline: 2px solid var(--oc-blue2); outline-offset: -1px; border-color: var(--oc-blue2); }
.lrb-gpf-sel { display: block; min-width: 0; }

.lrb-gpf-req { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 600; color: var(--oc-muted); white-space: nowrap; cursor: pointer; padding: 0 2px; }
.lrb-gpf-req input { width: auto; margin: 0; }

.lrb-gpf-cmd { display: inline-flex; gap: 5px; align-items: center; }
.lrb-gpf-icon { width: 38px; height: 38px; border: 1px solid var(--oc-line); background: #fff; border-radius: 9px; color: var(--oc-muted); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; line-height: 1; padding: 0; }
.lrb-gpf-icon:hover { background: #f3f7ff; color: var(--oc-blue2); border-color: #c9d8f2; }
.lrb-gpf-icon-del:hover { background: #fef2f2; color: #b91c1c; border-color: #f2c8c8; }
.lrb-gpf-icon:disabled { opacity: .32; cursor: default; }
.lrb-gpf-icon:disabled:hover { background: #fff; color: var(--oc-muted); border-color: var(--oc-line); }

.lrb-gpf-opts { border-top: 1px dashed #e6ecf5; padding: 11px 12px 12px; display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 10px; }
.lrb-gpf-opts[hidden] { display: none; }
.lrb-gpf-opts-in { grid-column: 2; }
.lrb-gpf-opts-lab { display: block; font-size: 11px; font-weight: 700; color: var(--oc-muted); text-transform: uppercase; letter-spacing: .4px; margin-bottom: 5px; }
.lrb-gpf-opts textarea { width: 100%; border: 1px solid var(--oc-line); border-radius: 9px; padding: 9px 11px; font-size: 14px; font-weight: 500; color: var(--oc-ink); background: #fff; box-sizing: border-box; font-family: inherit; min-height: 64px; resize: vertical; }

.lrb-gpf-add { width: 100%; border: 1px dashed #b8c6de; background: #fafcff; color: var(--oc-blue); border-radius: 12px; padding: 12px; cursor: pointer; font-size: 13.5px; font-weight: 700; font-family: inherit; }
.lrb-gpf-add:hover { background: #f3f7ff; border-color: var(--oc-blue2); }
.lrb-gpf-vuoto[hidden] { display: none; }

.lrb-gpf-sez { padding: 0 0 14px; margin: 0 0 14px; border-bottom: 1px solid #eef2f8; }
.lrb-gpf-sez:last-child { border-bottom: 0; padding-bottom: 0; margin-bottom: 0; }
.lrb-gpf-avviso { background: #fff8e5; border: 1px solid #f0dca4; border-left: 3px solid #dba617; border-radius: 10px; padding: 10px 13px; color: #8a5a00; font-size: 12.5px; line-height: 1.5; margin: 8px 0 0; }
.lrb-gpf-linkrow { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: center; margin-top: 10px; }
.lrb-gpf-linkrow input { border: 1px solid var(--oc-line); border-radius: 9px; padding: 9px 11px; font-size: 12.5px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; color: var(--oc-muted); background: #f8fafd; box-sizing: border-box; width: 100%; }
.lrb-gpf-revoca { grid-column: 1 / -1; margin: 2px 0 0; font-size: 12.5px; }

/* ---------- Compilazione (area utente) ---------- */
.lrb-gp-sep { border: 0; border-top: 1px solid #eef2f8; margin: 14px 0; }
.lrb-gp-campo { margin: 0 0 15px; }
.lrb-gp-campo-et { display: block; font-weight: 700; color: #26324d; font-size: .92rem; margin-bottom: 6px; line-height: 1.4; }
.lrb-gp-campo-et .req { color: #b91c1c; margin-left: 3px; }
.lrb-gp-campo input[type="text"], .lrb-gp-campo input[type="email"], .lrb-gp-campo input[type="tel"],
.lrb-gp-campo input[type="number"], .lrb-gp-campo input[type="date"], .lrb-gp-campo input[type="time"],
.lrb-gp-campo textarea { width: 100%; padding: 10px 12px; border: 1px solid #e3e8f2; border-radius: 12px; font-size: .93rem; box-sizing: border-box; font-family: inherit; color: #26324d; background: #fff; }
.lrb-gp-campo input:focus, .lrb-gp-campo textarea:focus { outline: 2px solid #273583; outline-offset: -1px; border-color: #273583; }
.lrb-gp-campo textarea { min-height: 84px; resize: vertical; }
.lrb-gp-campo input:disabled, .lrb-gp-campo textarea:disabled { background: #f6f8fb; color: #64748b; }

.lrb-gp-scelte { display: grid; gap: 7px; }
.lrb-gp-scelta { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid #e3e8f2; border-radius: 12px; font-size: .92rem; cursor: pointer; background: #fff; transition: border-color .12s, background .12s; }
.lrb-gp-scelta:hover { border-color: #c7d2fe; background: #f8faff; }
.lrb-gp-scelta.is-mine { border-color: #273583; background: #f0f4ff; font-weight: 600; }
.lrb-gp-scelta input { margin: 0; flex: 0 0 auto; }
.lrb-gp-scelta-lab { flex: 1; min-width: 0; }
.lrb-gp-scelta-n { font-size: .78rem; color: #64748b; font-weight: 700; white-space: nowrap; }

.lrb-gp-nota { display: flex; align-items: flex-start; gap: 8px; background: #f4f6fa; border: 1px solid #e6ebf3; border-radius: 12px; padding: 10px 12px; font-size: .82rem; color: #475569; margin: 0 0 14px; line-height: 1.45; }
.lrb-gp-inviato { display: flex; align-items: flex-start; gap: 8px; background: #edfaef; border: 1px solid #bfe5c8; border-radius: 12px; padding: 10px 12px; color: #1b7f35; font-size: .85rem; margin: 0 0 12px; line-height: 1.45; }
.lrb-gp-errore { display: flex; align-items: flex-start; gap: 8px; background: #fdf1f1; border: 1px solid #f0c6c6; border-radius: 12px; padding: 10px 12px; color: #a12626; font-size: .85rem; margin: 0 0 12px; line-height: 1.45; }

/* Pagina del link pubblico: una sola scheda centrata, senza il resto del portale */
.lrb-gp-pub { max-width: 640px; margin: 0 auto; }
.lrb-gp-pub h1 { color: #273583; font-size: clamp(22px, 4vw, 30px); margin: 0 0 10px; }

/* ---------- Lettura risposte (console) ---------- */
.lrb-gpr-nota { display: flex; align-items: flex-start; gap: 8px; background: #f4f6fa; border: 1px solid #e6ebf3; border-radius: 12px; padding: 10px 12px; font-size: 12.5px; color: var(--oc-muted); margin: 0 0 14px; line-height: 1.45; }
.lrb-gpr-kpi { display: grid; grid-template-columns: repeat(auto-fit, minmax(132px, 1fr)); gap: 10px; margin: 0 0 16px; }
.lrb-gpr-k { background: #fafcff; border: 1px solid var(--oc-line); border-radius: 12px; padding: 12px 14px; }
.lrb-gpr-k b { display: block; font-size: 1.5rem; color: var(--oc-blue); line-height: 1.15; font-weight: 800; }
.lrb-gpr-k span { font-size: 10.5px; color: var(--oc-muted); text-transform: uppercase; letter-spacing: .5px; font-weight: 800; }

.lrb-gpr-dom { border: 1px solid var(--oc-line); border-radius: 12px; background: #fff; padding: 14px 16px; margin: 0 0 10px; }
.lrb-gpr-dom-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 0 0 10px; }
.lrb-gpr-dom h3 { margin: 0; font-size: 14.5px; color: var(--oc-blue); font-weight: 800; }
.lrb-gpr-tipo { font-size: 10.5px; color: var(--oc-muted); text-transform: uppercase; letter-spacing: .5px; font-weight: 800; }

.lrb-gpr-barre { display: grid; gap: 8px; }
.lrb-gpr-b { display: grid; grid-template-columns: minmax(120px, 190px) minmax(0, 1fr) 72px; gap: 11px; align-items: center; font-size: 13px; color: var(--oc-ink); }
.lrb-gpr-t { height: 10px; background: #eef2f8; border-radius: 999px; overflow: hidden; }
.lrb-gpr-t i { display: block; height: 100%; background: var(--oc-blue2); border-radius: 999px; }
/* La risposta piu' scelta in tinta piena: si legge il risultato senza
   dover confrontare i numeri uno per uno. */
.lrb-gpr-t.is-top i { background: var(--oc-blue); }
.lrb-gpr-n { text-align: right; color: var(--oc-muted); font-weight: 800; font-size: 12px; font-variant-numeric: tabular-nums; }

.lrb-gpr-num { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 9px; }
.lrb-gpr-num div { background: #fafcff; border: 1px solid var(--oc-line); border-radius: 10px; padding: 9px 12px; }
.lrb-gpr-num b { display: block; font-size: 1.15rem; color: var(--oc-blue); font-weight: 800; line-height: 1.2; }
.lrb-gpr-num span { font-size: 11px; color: var(--oc-muted); font-weight: 700; }

.lrb-gpr-libere { display: grid; gap: 7px; }
.lrb-gpr-l { background: #fafcff; border: 1px solid var(--oc-line); border-radius: 10px; padding: 9px 12px; font-size: 13px; color: var(--oc-ink); line-height: 1.45; }
.lrb-gpr-l em { color: var(--oc-muted); font-style: normal; font-size: 11.5px; display: block; margin-top: 3px; font-weight: 600; }

@media (max-width: 820px) {
  /* Su schermo stretto la riga del costruttore si impila: menu, spunta e
     comandi passano sotto il testo della domanda, allineati alla sua colonna. */
  .lrb-gpf-grid { grid-template-columns: 26px minmax(0, 1fr); gap: 9px; }
  .lrb-gpf-grid > .lrb-gpf-sel,
  .lrb-gpf-grid > .lrb-gpf-req,
  .lrb-gpf-grid > .lrb-gpf-cmd { grid-column: 2; }
  .lrb-gpr-b { grid-template-columns: minmax(0, 1fr) 66px; gap: 5px; }
  .lrb-gpr-b > .lrb-gpr-t { grid-column: 1 / -1; order: 3; }
}

/* v1.9.21 — Testo riservato ai lettori di schermo.
   La classe è quella convenzionale di WordPress, ma sul frontend la definisce
   il TEMA e non il core: il portale però disegna una propria pagina completa
   (.lrb-app-body) che il tema non tocca, quindi senza questa regola il testo
   comparirebbe a video. C'era già un uso in console che ne era scoperto. */
.screen-reader-text {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
.screen-reader-text:focus {
  position: static !important;
  width: auto; height: auto;
  margin: 0; overflow: visible;
  clip: auto; clip-path: none;
  white-space: normal;
}

/* =====================================================================
   v1.9.22 — Colore nella bacheca
   ---------------------------------------------------------------------
   Il colore qui non e' decorativo: serve a distinguere a colpo d'occhio
   la FORMA del contenuto (annuncio / sondaggio / modulo) e la FAMIGLIA
   della domanda. Resta comunque sempre affiancato a un'etichetta scritta
   e a un'icona diversa, cosi' chi distingue male i colori non perde
   informazione. Tutte le tinte sono verificate sopra 4,5:1 di contrasto.
   ===================================================================== */

/* Forma del contenuto: una banda colorata sul lato della scheda */
.lrb-group-post { border-left-width: 4px; }
.lrb-group-post-announcement { border-left-color: #2f6fd0; }
.lrb-group-post-poll { border-left-color: #d9a406; }
.lrb-group-post-form { border-left-color: #109070; }
/* La sfumatura di fondo resta solo su cio' che e' ancora aperto: e' quella
   che dice "qui c'e' qualcosa da fare", e su un contenuto chiuso mentirebbe. */
.lrb-group-post.lrb-group-post-poll.is-open { border-color: #f2d36b; border-left-color: #d9a406; background: #fffdf2; }
.lrb-group-post.lrb-group-post-form.is-open { border-color: #b7e3d5; border-left-color: #109070; background: #f5fdfa; }

.lrb-group-post-announcement .lrb-group-post-kind { background: #e8f1fd; color: #12518f; }
.lrb-group-post-poll .lrb-group-post-kind { background: #fff3d4; color: #7a5300; }
.lrb-group-post-form .lrb-group-post-kind { background: #e2f6ef; color: #0b5c47; }

/* Famiglia della domanda: pastiglia colorata al posto del grigio uniforme,
   sia nell'elenco risposte sia nel costruttore. */
.lrb-gpr-tipo,
.lrb-gpf-fam { display: inline-block; padding: 3px 9px; border-radius: 999px; background: #eef1f6; color: #475569; }
.lrb-gpr-tipo[data-fam="scelta"],  .lrb-gpf-fam[data-fam="scelta"]  { background: #e8f1fd; color: #12518f; }
.lrb-gpr-tipo[data-fam="testo"],   .lrb-gpf-fam[data-fam="testo"]   { background: #eef1f6; color: #475569; }
.lrb-gpr-tipo[data-fam="tempo"],   .lrb-gpf-fam[data-fam="tempo"]   { background: #f2eeff; color: #5b3fb5; }
.lrb-gpr-tipo[data-fam="numero"],  .lrb-gpf-fam[data-fam="numero"]  { background: #e6f7f4; color: #0f6b64; }
.lrb-gpr-tipo[data-fam="recapito"],.lrb-gpf-fam[data-fam="recapito"]{ background: #fff5df; color: #8a5a00; }

/* Il numero della domanda nel costruttore prende la tinta della sua famiglia:
   scorrendo l'elenco si distinguono i blocchi senza doverli leggere. */
.lrb-gpf-row[data-fam="scelta"]   .lrb-gpf-n { background: #e8f1fd; color: #12518f; }
.lrb-gpf-row[data-fam="tempo"]    .lrb-gpf-n { background: #f2eeff; color: #5b3fb5; }
.lrb-gpf-row[data-fam="numero"]   .lrb-gpf-n { background: #e6f7f4; color: #0f6b64; }
.lrb-gpf-row[data-fam="recapito"] .lrb-gpf-n { background: #fff5df; color: #8a5a00; }

/* Riquadri dei totali: una tinta tenue diversa per ciascuno, così la riga
   non è più una fila di rettangoli identici. */
.lrb-gpr-k:nth-child(1) { background: #f3f8ff; border-color: #d6e6fb; }
.lrb-gpr-k:nth-child(2) { background: #f6f4ff; border-color: #ded6fa; }
.lrb-gpr-k:nth-child(3) { background: #f1fbf7; border-color: #c9ecdd; }
.lrb-gpr-k:nth-child(4) { background: #fffaf0; border-color: #f2e2bd; }

/* Pulsante WhatsApp accanto al link: resta della stessa altezza degli altri */
.lrb-gpf-linkbtn { display: inline-flex; gap: 6px; align-items: center; }
.lrb-gpf-linkbtn .lrb-oc-btn { white-space: nowrap; }
.lrb-gpf-linkbtn .dashicons { font-size: 15px; width: 15px; height: 15px; }

/* v1.9.23 — Titolo di gruppo dentro l'editor dei messaggi WhatsApp:
   separa i testi delle prenotazioni da quelli della bacheca, che hanno
   segnaposto diversi e non vanno confusi fra loro. */
.lrb-oc-wa-gruppo { margin: 26px 0 4px; padding-top: 18px; border-top: 1px solid var(--oc-line); font-size: 15px; color: var(--oc-blue); font-weight: 800; }

/* v1.9.24 — La finestra WhatsApp vive dentro la cella "Azioni" della tabella,
   che ha white-space:nowrap per tenere le icone su una riga sola. La finestra
   lo EREDITAVA e la frase introduttiva usciva dal riquadro, tagliata a meta'.
   Vale anche per la finestra delle prenotazioni, che ha la stessa struttura.
   Qui il testo torna a comportarsi da testo. */
/* Oltre a white-space, la cella "Azioni" allinea a destra per accostare le
   icone al bordo: anche quello veniva ereditato e il testo della finestra
   finiva tutto a destra. La finestra riparte da capo su entrambi. */
.lrb-oc-modal,
.lrb-oc-modal-card { white-space: normal; text-align: left; }

/* I pulsanti del template vanno sempre su una riga propria: prima restavano
   accanto al titolo quando l'etichetta era corta e andavano a capo quando era
   lunga, e i tre blocchi risultavano di altezze diverse senza motivo. */
.lrb-oc-wa-card .lrb-oc-wa-tpl-head { flex-direction: column; align-items: stretch; gap: 10px; text-align: left; }
.lrb-oc-wa-card .lrb-oc-wa-buttons { width: 100%; }
/* =====================================================================
   v1.9.26 — Bacheca gruppi a fisarmonica (area utente)
   ---------------------------------------------------------------------
   Prima ogni contenuto era steso per intero, uno sotto l'altro: con tre o
   quattro moduli l'area utente diventava un rotolo lunghissimo. Ora ogni
   contenuto e' una riga richiusa e si apre solo quello che serve.

   Si usa <details>/<summary>, lo stesso meccanismo gia' usato dalle altre
   schede del portale (.lrb-my-bookings-fold): funziona senza JavaScript,
   quindi non puo' introdurre altri blocchi di scorrimento, e resta
   accessibile da tastiera.

   I colori sono quelli gia' in uso per le tre forme:
     annuncio  #2f6fd0   sondaggio #d9a406   modulo #109070
   ===================================================================== */

.lrb-gpx-hint {
  margin: 0 0 12px;
  font-size: .85rem;
  color: #64748b;
}

.lrb-gpx {
  border: 1px solid #dbe4f0;
  border-left-width: 4px;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 6px 16px rgba(39, 53, 131, .05);
  overflow: hidden;
}

.lrb-gpx-announcement { border-left-color: #2f6fd0; }
.lrb-gpx-poll         { border-left-color: #d9a406; }
.lrb-gpx-form         { border-left-color: #109070; }

/* --- la riga richiusa --------------------------------------------- */
.lrb-gpx-sum {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 13px 15px;
  cursor: pointer;
  list-style: none;
  font-family: "Trebuchet MS", "Segoe UI", Arial, sans-serif;
}
.lrb-gpx-sum::-webkit-details-marker { display: none; }
.lrb-gpx-sum:hover { background: #f8faff; }
.lrb-gpx-sum:focus-visible {
  outline: 2px solid #273583;
  outline-offset: -2px;
}

.lrb-gpx-ico {
  flex: 0 0 auto;
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  font-size: 17px;
  line-height: 1;
}
.lrb-gpx-announcement .lrb-gpx-ico { background: #e8f1fd; }
.lrb-gpx-poll         .lrb-gpx-ico { background: #fff3d4; }
.lrb-gpx-form         .lrb-gpx-ico { background: #e2f6ef; }

.lrb-gpx-txt {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.lrb-gpx-t {
  font-weight: 700;
  color: #0b3b7a;
  font-size: .98rem;
  line-height: 1.3;
  /* Un titolo lungo si taglia con i puntini invece di mandare a capo la
     riga: cosi' tutte le righe restano alte uguali e l'elenco si legge
     come un elenco. Il titolo per intero si vede aprendo il contenuto. */
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lrb-gpx-m {
  font-size: .76rem;
  color: #64748b;
  font-weight: 600;
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}
.lrb-gpx-kind {
  text-transform: uppercase;
  letter-spacing: .04em;
  font-weight: 800;
  font-size: .68rem;
}
.lrb-gpx-announcement .lrb-gpx-kind { color: #12518f; }
.lrb-gpx-poll         .lrb-gpx-kind { color: #7a5300; }
.lrb-gpx-form         .lrb-gpx-kind { color: #0b5c47; }
.lrb-gpx-sep { color: #cbd5e1; }

.lrb-gpx-right {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 8px;
}

/* Stato personale: risposto / da compilare. */
.lrb-gpx-done,
.lrb-gpx-todo {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 20px;
  font-size: 11.5px;
  font-weight: 800;
  white-space: nowrap;
}
.lrb-gpx-done { background: #e3f6ea; color: #11663a; }
.lrb-gpx-todo { background: #eef2ff; color: #273583; }

/* Freccia che ruota all'apertura. */
.lrb-gpx-chev {
  width: 10px;
  height: 10px;
  border-right: 2px solid #94a3b8;
  border-bottom: 2px solid #94a3b8;
  transform: rotate(45deg);
  transition: transform .15s ease;
  margin: -4px 4px 0 2px;
}
.lrb-gpx[open] > .lrb-gpx-sum .lrb-gpx-chev {
  transform: rotate(-135deg);
  margin-top: 2px;
}

/* --- il contenuto aperto ------------------------------------------ */
.lrb-gpx-body {
  padding: 0 15px 15px;
  border-top: 1px solid #eef2f8;
  margin-top: 2px;
  padding-top: 13px;
}
.lrb-gpx[open] { background: #fcfdff; }
.lrb-gpx-announcement[open] { background: #fbfdff; }
.lrb-gpx-poll[open]         { background: #fffdf2; }
.lrb-gpx-form[open]         { background: #f7fdfb; }

/* Quelli gia' risposti scendono in fondo (li ordina il PHP) e si
   presentano in tono minore: restano leggibili ma non chiedono
   attenzione. */
.lrb-gpx.is-done { opacity: .82; }
.lrb-gpx.is-done:hover,
.lrb-gpx.is-done[open] { opacity: 1; }

/* --- telefono ------------------------------------------------------
   Su schermo stretto le due pillole (stato personale + aperto/chiuso) non
   stanno sulla stessa riga del titolo. Vanno a capo SOTTO il testo, non
   sopra: cosi' l'icona resta accanto al titolo e non si crea la riga
   quasi vuota con l'icona a sinistra e le pillole lontane a destra. */
@media (max-width: 640px) {
  .lrb-gpx-sum {
    flex-wrap: wrap;
    gap: 10px;
    padding: 12px;
    align-items: flex-start;
  }
  .lrb-gpx-ico { order: 1; }
  .lrb-gpx-txt { order: 2; flex: 1 1 0; }
  .lrb-gpx-chev { order: 3; margin-top: 12px; }
  .lrb-gpx-right {
    order: 4;
    flex: 1 1 100%;
    /* La freccia resta in alto a destra insieme al titolo; qui restano le
       sole pillole, allineate a sinistra sotto al testo. */
    padding-left: 46px;
    gap: 6px;
  }
  .lrb-gpx-right .lrb-gpx-chev { display: none; }
  .lrb-gpx-t {
    white-space: normal;
    /* Al massimo due righe, poi i puntini: un titolo lungo non deve far
       diventare la riga richiusa alta come una scheda aperta. */
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .lrb-gpx-body { padding: 12px 12px 13px; }
}

/* ---------------------------------------------------------------------
   v1.9.26 — Tinta del GRUPPO sulla riga della bacheca.
   Sono le stesse dieci tinte gia' censite per i gruppi e gia' usate nelle
   prenotazioni (.lrb-g-*), qui applicate alla banda a sinistra e allo
   sfondo dell'icona. I valori del bordo sono quelli del testo della
   pastiglia corrispondente: sono le varianti scure, gia' verificate sopra
   il 4,5:1 di contrasto quando la v1.9.17 ha scelto la tavolozza.
   La forma (annuncio / sondaggio / modulo) resta scritta a parole nella
   riga, quindi nessuna informazione viaggia sul solo colore.
   --------------------------------------------------------------------- */
.lrb-gpx.lrb-gc-blu     { border-left-color: #1e40af; }
.lrb-gpx.lrb-gc-verde   { border-left-color: #11663a; }
.lrb-gpx.lrb-gc-ambra   { border-left-color: #8a5a00; }
.lrb-gpx.lrb-gc-rosa    { border-left-color: #9d174d; }
.lrb-gpx.lrb-gc-viola   { border-left-color: #5b21b6; }
.lrb-gpx.lrb-gc-ciano   { border-left-color: #0e5b6b; }
.lrb-gpx.lrb-gc-terra   { border-left-color: #7c4a17; }
.lrb-gpx.lrb-gc-oliva   { border-left-color: #4d6b12; }
.lrb-gpx.lrb-gc-corallo { border-left-color: #9a3412; }
.lrb-gpx.lrb-gc-ardesia { border-left-color: #334155; }

/* Lo sfondo dell'icona segue la stessa tinta, in versione chiara: e' la
   stessa coppia sfondo/testo della pastiglia, quindi l'occhio collega
   subito la banda, l'icona e il nome del gruppo. */
.lrb-gpx.lrb-gc-blu     .lrb-gpx-ico { background: #eef4ff; }
.lrb-gpx.lrb-gc-verde   .lrb-gpx-ico { background: #e8f7ee; }
.lrb-gpx.lrb-gc-ambra   .lrb-gpx-ico { background: #fff5e0; }
.lrb-gpx.lrb-gc-rosa    .lrb-gpx-ico { background: #fdeef4; }
.lrb-gpx.lrb-gc-viola   .lrb-gpx-ico { background: #f3eefe; }
.lrb-gpx.lrb-gc-ciano   .lrb-gpx-ico { background: #e6f6fa; }
.lrb-gpx.lrb-gc-terra   .lrb-gpx-ico { background: #f6efe8; }
.lrb-gpx.lrb-gc-oliva   .lrb-gpx-ico { background: #f0f5e2; }
.lrb-gpx.lrb-gc-corallo .lrb-gpx-ico { background: #feeeea; }
.lrb-gpx.lrb-gc-ardesia .lrb-gpx-ico { background: #eef1f6; }

/* Quando il contenuto e' aperto lo sfondo resta neutro: con dieci tinte di
   gruppo possibili, tingere anche il corpo renderebbe i campi del modulo
   meno leggibili. Sostituisce le tre tinte per forma della prima stesura. */
.lrb-gpx[open],
.lrb-gpx-announcement[open],
.lrb-gpx-poll[open],
.lrb-gpx-form[open] { background: #fcfdff; }

/* La pastiglia del gruppo dentro la riga: stessa resa delle prenotazioni,
   solo un filo piu' compatta perche' qui sta in una riga di metadati. */
.lrb-gpx-m .lrb-oc-gruppo { font-size: 10px; padding: 1px 7px; }

/* v1.9.27 — Stati della barra durante "Salva tutto".
   Mentre invia: azzurra e con i pulsanti spenti, cosi' non si preme due volte.
   Se si ferma: rossa, con scritto a che punto si e' fermata. In quel caso la
   pagina NON viene ricaricata, per non perdere quello che c'e' scritto a video. */
.lrb-oc-userbar.is-busy { background: #eef4ff; border-top-color: #c7d7fb; }
.lrb-oc-userbar.is-busy .lrb-oc-userbar-n { color: var(--oc-blue2); }
.lrb-oc-userbar.is-error { background: #fdf1ef; border-top-color: #f0c2bc; }
.lrb-oc-userbar.is-error .lrb-oc-userbar-n { color: #c0392b; }
.lrb-oc-userbar.is-error .lrb-oc-userbar-n b { color: #a5281c; }
/* Riquadro appena salvato dentro un "Salva tutto": verde per un attimo, finche'
   la pagina non si ricarica con i dati veri del server. */
.lrb-oc-user-block.is-saved { border-color: #bfe5cd; box-shadow: 0 0 0 1px #bfe5cd; }

/* v1.9.29 — Pagine dell'elenco utenti. */
.lrb-oc-upages {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; flex-wrap: wrap;
  margin-top: 14px; padding: 11px 14px;
  background: #f8fbff; border: 1px solid var(--oc-line); border-radius: 12px;
}
.lrb-oc-upages-t { font-size: 12.5px; font-weight: 700; color: var(--oc-muted); }
.lrb-oc-upages-b { display: flex; gap: 8px; }

/* v1.9.30 — Nota sotto la casella di ricerca: dice su COSA sta cercando.
   Con l'elenco impaginato non e' ovvio, e l'ambiguita' costa cara: chi non
   trova una persona conclude che non ci sia. */
.lrb-oc-search-hint { margin: 6px 2px 0; font-size: 11.5px; color: var(--oc-muted); }

/* ---------------------------------------------------------------------
   v1.9.31 — INTERRUTTORI DELLE FUNZIONI nella scheda utente.
   Sopra le azioni. Servono a due cose insieme: dire a colpo d'occhio quali
   funzioni sono accese su questa persona, e far comparire il riquadro di
   configurazione solo quando serve davvero. Su un utente privato la scheda
   passa da otto riquadri a quattro.
   Piu' piccoli delle azioni (62px invece di 84) perche' si guardano, non si
   premono di continuo: l'icona sta di fianco all'etichetta, non sopra.
   --------------------------------------------------------------------- */
.lrb-oc-fxbar {
  padding: 12px 16px 0;
  background: #f8fbff;
}
.lrb-oc-fxbar-h {
  display: block; margin-bottom: 7px;
  font-size: 10.5px; text-transform: uppercase; letter-spacing: .04em;
  font-weight: 800; color: var(--oc-blue);
}
/* Stesso criterio della barra delle azioni: il numero di colonne segue il
   numero di interruttori visibili (cambia con i permessi), cosi' le righe
   restano sempre piene. */
.lrb-oc-fxbar-b { display: grid; gap: 8px; }
.lrb-oc-fxbar-c1 { grid-template-columns: minmax(0, 1fr); }
.lrb-oc-fxbar-c2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.lrb-oc-fxbar-c3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.lrb-oc-fxbar-c4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.lrb-oc-fx-f { margin: 0; display: flex; }

.lrb-oc-fx {
  display: grid; grid-template-columns: 26px minmax(0, 1fr);
  grid-template-areas: "i t" "i s";
  gap: 0 9px; align-items: center;
  width: 100%; min-height: 62px; padding: 8px 10px; box-sizing: border-box;
  border: 1px solid var(--oc-line); border-radius: 11px;
  background: #fff; color: var(--oc-ink);
  font-family: inherit; text-align: left; text-decoration: none; cursor: pointer;
  transition: background .12s, border-color .12s;
}
.lrb-oc-fx:hover { background: #f8fbff; }
.lrb-oc-fx:focus-visible { outline: 2px solid var(--oc-blue2); outline-offset: 2px; }
.lrb-oc-fx-i {
  grid-area: i; width: 26px; height: 26px; border-radius: 8px;
  display: inline-flex; align-items: center; justify-content: center;
  background: #eef2f7; color: #94a3b8;
}
.lrb-oc-fx-i .dashicons { font-size: 15px; width: 15px; height: 15px; line-height: 1; }
.lrb-oc-fx-t { grid-area: t; font-size: 12px; font-weight: 700; line-height: 1.25; }
.lrb-oc-fx-s { grid-area: s; font-size: 10px; font-weight: 600; color: #94a3b8; line-height: 1.3; }
/* Funzione accesa: verde. E' l'unica informazione che conta davvero a colpo
   d'occhio quando si apre la scheda di qualcuno. */
.lrb-oc-fx.is-on { border-color: #bfe5cd; background: #f6fcf8; }
.lrb-oc-fx.is-on .lrb-oc-fx-i { background: #e3f6ea; color: #11663a; }
.lrb-oc-fx.is-on .lrb-oc-fx-s { color: #11663a; }
.lrb-oc-fx.is-on .lrb-oc-fx-t { color: #0b3b2a; }

@media (max-width: 900px) { .lrb-oc-fxbar-c3, .lrb-oc-fxbar-c4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .lrb-oc-fxbar { padding: 10px 12px 0; } }

/* =====================================================================
   v1.9.32 — IMPOSTAZIONI DELL'AREA UTENTE.

   Com'era: quattro riquadri a tutta larghezza uno sotto l'altro, ognuno con
   un <h1> grande come il titolo di una pagina, e i campi larghi 240px persi
   in mezzo al bianco. Si scorreva parecchio per fare poco.

   Com'e': una griglia di riquadri con la stessa testata a icona usata nel
   pannello operatore, i campi che si dividono lo spazio, e i pulsanti sempre
   nello stesso posto — in fondo al riquadro, in un piede allineato.
   ===================================================================== */
.lrb-ac-page .lrb-ac-top {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 16px; flex-wrap: wrap; margin: 0 0 18px;
}
.lrb-ac-page .lrb-ac-top h1 { margin: 0; font-size: 27px; color: #273583; }
.lrb-ac-page .lrb-ac-top p { margin: 4px 0 0; color: #64748b; font-size: 14px; }

/* Due colonne fisse, non `auto-fit`: sul portale largo l'auto-fit ne faceva
   tre, e con sei riquadri la seconda riga restava monca — due riquadri e un
   buco largo un terzo di pagina. Due colonne, con i due riquadri che stanno
   meglio larghi (calendario e verifica in due passaggi) marcati `is-wide`,
   riempiono tutte le righe: [dati|password] [foto|Telegram] [calendario]
   [2FA]. Sotto i 900px si passa a una colonna sola. */
.lrb-ac-grid-cards {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px; align-items: stretch;
}
@media (max-width: 900px) { .lrb-ac-grid-cards { grid-template-columns: 1fr; } }
.lrb-ac-card {
  display: flex; flex-direction: column; min-width: 0;
  background: #fff; border: 1px solid #e3e8f2; border-radius: 18px;
  box-shadow: 0 8px 24px rgba(39, 53, 131, .07); overflow: hidden;
}
.lrb-ac-card.is-wide { grid-column: 1 / -1; }
.lrb-ac-card-h {
  display: flex; align-items: center; gap: 12px;
  padding: 15px 18px; border-bottom: 1px solid #eef2f8;
  background: linear-gradient(180deg, #f8faff 0%, #fff 100%);
}
.lrb-ac-card-i {
  width: 36px; height: 36px; border-radius: 11px; flex: 0 0 auto;
  background: #eef2fe; color: #273583;
  display: inline-flex; align-items: center; justify-content: center;
}
.lrb-ac-card-i .dashicons { font-size: 19px; width: 19px; height: 19px; line-height: 1; }
.lrb-ac-card-t { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.lrb-ac-card-t strong { font-size: 17px; color: #273583; }
.lrb-ac-card-t em { font-style: normal; font-size: 12.5px; color: #64748b; }
/* align-content:start tiene i campi in cima anche nei riquadri corti, cosi'
   due riquadri affiancati non hanno i campi a due altezze diverse. */
.lrb-ac-card-b { flex: 1 1 auto; padding: 18px; display: grid; gap: 14px; align-content: start; min-width: 0; }
.lrb-ac-card-f {
  display: flex; justify-content: flex-end; gap: 9px;
  padding: 13px 18px; background: #f8fafc; border-top: 1px solid #eef2f8;
}

/* I campi si dividono lo spazio invece di restare larghi 240px in mezzo al
   bianco: e' la differenza piu' evidente rispetto a prima. */
/* Due colonne fisse, non `auto-fit`. Con auto-fit il numero di colonne
   cambiava con la larghezza del riquadro, e a tre colonne una riga di due
   campi lasciava un buco largo un terzo: lo stesso difetto della griglia
   grande, in piccolo. Due colonne, e i campi che devono stare larghi (email,
   conferma password) marcati `is-wide`: ogni riga e' sempre piena. */
.lrb-ac-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 13px; }
@media (max-width: 560px) { .lrb-ac-grid { grid-template-columns: 1fr; } }
.lrb-ac-field { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.lrb-ac-field.is-wide { grid-column: 1 / -1; }
.lrb-ac-field label { font-size: 12.5px; font-weight: 700; color: #26324d; }
.lrb-ac-field input {
  height: 42px; box-sizing: border-box; width: 100%; padding: 0 12px;
  border: 1px solid #e3e8f2; border-radius: 12px; background: #fff;
  font-family: inherit; font-size: 14px; color: #26324d;
}
.lrb-ac-field input[type="file"] { height: auto; padding: 9px 12px; }
.lrb-ac-field input:focus { outline: 2px solid #273583; outline-offset: -1px; border-color: #273583; }
.lrb-ac-field small { font-size: 11.5px; color: #64748b; line-height: 1.45; }
.lrb-ac-nota { margin: 0; font-size: 13px; color: #475569; line-height: 1.5; }

/* v1.9.43 — Casella "voglio riceverli" del riquadro Avvisi via email.
   Tutta la riga e' cliccabile (l'etichetta avvolge la casella): su telefono
   centrare il dito su un quadratino di 16px e' fastidioso, e una casella che
   sembra non rispondere fa credere che l'impostazione non si salvi. */
.lrb-ac-check {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
  font-weight: 600;
  color: #1f2937;
  line-height: 1.45;
  margin: 0 0 12px;
  padding: 10px 12px;
  border: 1px solid #e4e7ef;
  border-radius: 12px;
  background: #f8fafc;
}
.lrb-ac-check:hover { border-color: #c9d0e8; }
/* Il contenuto sta dentro un <form>, che per la griglia del riquadro e' UN
   elemento solo: il suo `gap` non arriva ai figli, e le due note finivano
   attaccate come se fossero un blocco unico. La spaziatura si ridichiara
   qui dentro, con lo stesso passo del riquadro. */
#lrb-ac-form-comm { display: grid; gap: 12px; }
.lrb-ac-check input[type="checkbox"] {
  width: 18px;
  height: 18px;
  margin: 1px 0 0;
  flex: 0 0 auto;
  accent-color: #273583;
  cursor: pointer;
}

/* Il campo che serve SOLO in un caso sta in un riquadro suo, con scritto
   quando serve: prima era un campo come gli altri con "(solo se cambi
   l'email)" nell'etichetta, e si compilava per abitudine. */
.lrb-ac-cond {
  display: flex; gap: 12px; align-items: flex-start;
  padding: 12px 14px; background: #f8fafc;
  border: 1px dashed #cbd5e1; border-radius: 14px;
}
.lrb-ac-cond-i { color: #64748b; flex: 0 0 auto; }
.lrb-ac-cond-i .dashicons { font-size: 17px; width: 17px; height: 17px; }
.lrb-ac-cond-c { display: flex; flex-direction: column; gap: 4px; flex: 1 1 auto; min-width: 0; }
.lrb-ac-cond-c strong { font-size: 12.5px; }
.lrb-ac-cond-c strong label { cursor: pointer; }
.lrb-ac-cond-c em { font-style: normal; font-size: 11.5px; color: #64748b; }
.lrb-ac-cond-c input {
  height: 42px; box-sizing: border-box; width: 100%; padding: 0 12px; margin-top: 3px;
  border: 1px solid #e3e8f2; border-radius: 12px; font-family: inherit; font-size: 14px;
}

/* Foto profilo */
.lrb-ac-foto { display: flex; gap: 16px; align-items: flex-start; }
.lrb-ac-foto-img {
  width: 84px; height: 84px; border-radius: 50%; flex: 0 0 auto; overflow: hidden;
  background: linear-gradient(135deg, #dbe4f7, #c7d2fe);
  border: 3px solid #fff; box-shadow: 0 3px 10px rgba(39,53,131,.18);
  display: inline-flex; align-items: center; justify-content: center; color: #273583;
}
.lrb-ac-foto-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lrb-ac-foto-img .dashicons { font-size: 38px; width: 38px; height: 38px; }
.lrb-ac-foto-c { display: flex; flex-direction: column; gap: 10px; min-width: 0; flex: 1 1 auto; }
.lrb-ac-foto-form { margin: 0; }

/* Pulsanti, nello stile del portale */
.lrb-ac-btn {
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid transparent; border-radius: 12px;
  padding: 10px 18px; font-family: inherit; font-size: 14px; font-weight: 700;
  cursor: pointer; text-decoration: none; line-height: 1.2;
}
.lrb-ac-btn-primary { background: #273583; color: #fff; }
.lrb-ac-btn-primary:hover { filter: brightness(1.12); color: #fff; }
.lrb-ac-btn-ghost { background: #fff; color: #273583; border-color: #e3e8f2; }
.lrb-ac-btn-ghost:hover { background: #f3f7ff; color: #273583; }

/* v1.9.43 — Pulsanti a icona nei piedi dei riquadri.
   Stesso principio delle icone della console: l'azione si riconosce dal
   simbolo, non da una scritta che allunga il pulsante.

   Tre accortezze che NON sono decorazione:
   - 44x44: e' la misura minima perche' un dito lo prenda al primo colpo.
     Un'icona da 34px come quelle della console va bene col mouse, non col
     pollice, e qui il portale si usa molto da telefono.
   - title + aria-label obbligatori su ogni pulsante: senza la scritta,
     quelli sono l'unico modo per sapere cosa fa — col mouse fermo sopra e
     per chi usa un lettore di schermo.
   - il colore distingue: pieno = l'azione principale (salva), chiaro =
     secondaria (rimuovi). Due icone uguali affiancate si confondono. */
.lrb-ac-btn-icon {
  width: 44px; height: 44px; padding: 0; border-radius: 12px; flex: 0 0 auto;
}
.lrb-ac-btn-icon .dashicons {
  font-size: 20px; width: 20px; height: 20px; line-height: 1;
}
.lrb-ac-btn-icon:hover { transform: translateY(-1px); }
.lrb-ac-btn-icon:active { transform: translateY(0); }
/* Il contorno alla navigazione da tastiera: senza la scritta, sapere quale
   pulsante e' selezionato conta ancora di piu'. */
.lrb-ac-btn-icon:focus-visible { outline: 3px solid #ffd500; outline-offset: 2px; }

/* I riquadri che arrivano da altre parti del plugin (2FA, Telegram,
   calendario) entrano qui col loro markup originale, cornice compresa. Qui
   dentro la cornice va tolta: due bordi annidati e due sfondi bianchi
   sembrerebbero un riquadro dentro un riquadro. Le stesse funzioni continuano
   a disegnarsi normalmente altrove, dove la cornice serve. */
/* Gli `!important` non sono un vezzo: le regole originali di questi riquadri
   (`.lrb-calendar-link-card`, `.lrb-telegram-connect-card`, `.lrb-side-card`)
   dichiarano padding, margini e raggi con `!important` — servivano a tenerli
   in riga nella sidebar. Senza pari forza qui restavano una cornice bianca
   dentro la cornice bianca del riquadro, cioe' proprio il "riquadro dentro il
   riquadro" che si voleva togliere. */
.lrb-ac-card-b > .lrb-card,
.lrb-ac-card-b > .lrb-telegram-connect-card {
  background: none !important; border: 0 !important; box-shadow: none !important;
  border-radius: 0 !important; padding: 0 !important; margin: 0 !important;
}
/* Il titolo lo dice gia' la testata del riquadro: ripeterlo dentro sarebbe
   scritto due volte a quattro centimetri di distanza. */
.lrb-ac-card-b > .lrb-card > h3,
.lrb-ac-card-b > .lrb-card > .lrb-card-title { display: none !important; }
.lrb-ac-card-b .lrb-calendar-feed-box input { width: 100%; min-width: 0; }

/* IL PUNTO IMPORTANTE della verifica in due passaggi. Il pannello di WP 2FA
   e' un componente esterno: se apre un velo `position: fixed` a tutto schermo,
   quel velo copre la pagina e si mangia la rotella del mouse (v1.9.28).
   Un antenato con `transform` fa si' che i discendenti `position: fixed` si
   posizionino rispetto a QUESTO riquadro invece che rispetto alla finestra:
   il velo resta chiuso qui dentro. `contain: layout paint` rafforza la cosa. */
.lrb-ac-card-b .lrb-security-wp2fa-form {
  position: relative;
  transform: translateZ(0);
  contain: layout paint;
}

@media (max-width: 780px) {
  .lrb-ac-foto { flex-direction: column; }
  .lrb-ac-card-f { flex-wrap: wrap; }
  .lrb-ac-card-f .lrb-ac-btn { flex: 1 1 auto; }
  /* v1.9.43: i pulsanti a icona NO. La regola qui sopra allarga a tutta riga
     i pulsanti con la scritta, ed e' giusto: su schermo stretto una scritta
     centrata in un pulsante largo si legge meglio. Un'icona allargata a 284px
     diventa invece un rettangolo enorme con un simbolo minuscolo in mezzo —
     misurato: 284x44 su un telefono da 390px. Il quadrato resta quadrato. */
  .lrb-ac-card-f .lrb-ac-btn-icon { flex: 0 0 auto; width: 44px; }
}

/* =====================================================================
   v1.9.35 — «Evento non a scopo di lucro» nel modulo di prenotazione.

   Due righe esatte, sempre, su qualunque larghezza:
     [x] Evento non a scopo di lucro (i)
         Niente contributo e niente cauzione — offerta libera ben accetta!

   La griglia a due colonne (casella | testo) tiene la seconda riga
   incolonnata sotto la prima invece che sotto la casella: e' quello che
   rende il riquadro simmetrico invece che a bandiera.
   ===================================================================== */
.lrb-nonprofit-box {
  display: grid; grid-template-columns: auto 1fr; align-items: start;
  column-gap: 10px; row-gap: 2px;
  margin: 0 0 12px; padding: 10px 12px;
  background: #f0fdf4; border: 1px solid #bbf7d0; border-left: 4px solid #16a34a;
  border-radius: 12px;
}
/* NON usa .lrb-checkbox: sotto i 760px quella classe diventa un riquadro
   bianco con bordo e padding, e dentro questo riquadro verde faceva una
   cornice dentro la cornice. */
/* Gli `!important` servono davvero: sul telefono il modulo impone agli input
   un'altezza da dito (40px), e la casella diventava 13x40 — schiacciata e
   storta accanto al testo. La regola base .lrb-checkbox input del progetto
   usa `!important` per lo stesso identico motivo. */
.lrb-nonprofit-box > input[type="checkbox"] {
  width: 19px !important; height: 19px !important;
  min-width: 19px !important; min-height: 19px !important;
  flex: 0 0 auto; margin: 1px 0 0 !important; padding: 0 !important;
  cursor: pointer; accent-color: #16a34a;
}
.lrb-nonprofit-text { min-width: 0; }
/* La «i» accanto al titolo: e' la parola «lucro» che ha bisogno di essere
   spiegata, e un'icona a mezzo riquadro di distanza non si collega a niente. */
.lrb-nonprofit-riga1 { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.lrb-nonprofit-riga1 label { margin: 0; cursor: pointer; }
.lrb-nonprofit-riga1 strong { font-size: 15px; color: #14532d; line-height: 1.25; }
.lrb-nonprofit-riga2 { font-size: 12.5px; color: #3f6212; line-height: 1.35; }
.lrb-nonprofit-riga2 em { font-style: normal; font-weight: 700; color: #15803d; }
.lrb-nonprofit-box .lrb-info-tip { flex: 0 0 auto; margin: 0; }

/* IL FUMETTO NON DEVE USCIRE DALLO SCHERMO.
   La regola base lo ancora con `right: 0` all'icona, e la rete di sicurezza
   della 1.8.67 vale solo sotto i 600px: da PC, con l'icona a meta' riquadro,
   il fumetto sporgeva fuori dalla finestra (segnalato dall'utente con uno
   screenshot). Qui e' ancorato al RIQUADRO, non all'icona: il riquadro sta
   dentro il modulo, quindi il fumetto non puo' sporgere da nessun lato.
   Serve `position: static` sull'icona, altrimenti resterebbe lei il
   riferimento. */
.lrb-nonprofit-box { position: relative; }
.lrb-nonprofit-box .lrb-nonprofit-tip { position: static; }
.lrb-nonprofit-box .lrb-nonprofit-tip::after {
  left: 0; right: 0; width: auto; max-width: none;
  bottom: calc(100% + 8px);
}

@media (max-width: 560px) {
  .lrb-nonprofit-box { padding: 9px 10px; column-gap: 8px; }
  .lrb-nonprofit-riga1 strong { font-size: 14.5px; }
  .lrb-nonprofit-riga2 { font-size: 12px; }
}

/* =====================================================================
   v1.9.44 — MENU DELLA CONSOLE A GRUPPI + REGISTRO ATTIVITÀ A COLORI
   =====================================================================
   Tre layout, sempre: computer (barra laterale fissa), tablet e telefono
   (barra a scomparsa sotto gli 880px, tabelle a schede sotto i 1200px).
   Le regole qui sotto sono scritte per reggere tutti e tre, non solo il
   primo su cui si guarda. */

/* ---------- 1. Menu laterale a gruppi ---------- */

/* La Dashboard resta in cima, staccata dai gruppi da una riga sottile:
   è il punto di partenza, non una voce come le altre. */
.lrb-oc-sidebar .lrb-oc-nav-pinned{margin-bottom:6px;padding-bottom:6px;border-bottom:1px solid var(--oc-line)}

.lrb-oc-navgroup{margin:0 10px 2px}
.lrb-oc-navgroup > ul{padding:0 0 6px !important}

/* summary: si toglie il triangolino del browser (ce n'è già uno disegnato,
   e i due insieme sono confusi) ma NON la possibilità di arrivarci da
   tastiera: <summary> resta focalizzabile e si apre con Invio o Spazio,
   come qualunque tendina nativa. */
.lrb-oc-navgroup-head{
  display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:10px;cursor:pointer;
  color:var(--oc-blue);font-weight:800;font-size:12.5px;letter-spacing:.005em;
  list-style:none;user-select:none;
}
.lrb-oc-navgroup-head::-webkit-details-marker{display:none}
.lrb-oc-navgroup-head::marker{content:""}
.lrb-oc-navgroup-head:hover{background:#f3f7ff}
.lrb-oc-navgroup-head:focus-visible{outline:2px solid var(--oc-blue2);outline-offset:2px}

/* Fondo e colore del glifo arrivano dal PHP (lrb_oc_section_groups): qui si
   dice solo la forma. Il quadrato e' 29px invece dei 26 della prima stesura —
   e' l'icona che identifica il gruppo, e sotto una certa misura smette di
   leggersi come tale. Non alza il titolo: l'altezza di quella riga la danno
   il padding e il testo, non l'icona. */
.lrb-oc-navgroup-icon{
  width:29px;height:29px;border-radius:9px;flex:0 0 auto;
  display:inline-flex;align-items:center;justify-content:center;
}
.lrb-oc-navgroup-icon .dashicons{font-size:17px;width:17px;height:17px;line-height:17px}
.lrb-oc-navgroup-label{flex:1 1 auto;min-width:0}
.lrb-oc-navgroup-count{
  background:#eef4ff;color:var(--oc-blue2);font-size:10.5px;font-weight:800;
  padding:1px 7px;border-radius:20px;flex:0 0 auto;
}
.lrb-oc-navgroup-chev{
  flex:0 0 auto;color:var(--oc-muted);font-size:15px;width:15px;height:15px;line-height:15px;
  transition:transform .16s ease;
}
.lrb-oc-navgroup[open] > .lrb-oc-navgroup-head .lrb-oc-navgroup-chev{transform:rotate(90deg)}

/* Le voci di un gruppo rientrano, e un filo verticale le lega al titolo che
   sta sopra. Senza il rientro il testo delle voci partirebbe dallo stesso
   punto di quello del titolo — il titolo ha davanti il quadrato dell'icona,
   che lo spinge a destra — e chi guarda non vedrebbe più chi contiene chi. */
.lrb-oc-navgroup > ul{margin-left:22px;border-left:1px solid var(--oc-line)}
/* v1.9.45 — La VOCE dentro un gruppo resta identica a com'era prima che i
   gruppi esistessero: stessa icona, stessa misura (20px), stesso colore.
   Il raggruppamento e' una cosa che si aggiunge SOPRA, non una scusa per
   ritoccare quello che c'era gia' e che andava bene. L'unica differenza e' il
   rientro, che serve a far vedere chi contiene chi.
   In particolare l'icona NON si rimpicciolisce: la barra laterale e' fatta di
   quindici icone diverse che si riconoscono a colpo d'occhio, ed e' proprio
   quello il modo in cui ci si orienta. Rimpicciolirle le rende tutte piu'
   simili fra loro, cioe' toglie l'unica cosa che le distingue in fretta. */
.lrb-oc-navgroup > ul .lrb-oc-navlink{padding-left:12px;border-radius:0 10px 10px 0}

/* Voci non ancora assegnate a nessun gruppo (vedi lrb_oc_group_sections):
   si vedono, staccate, invece di sparire. */
.lrb-oc-nav-loose{border-top:1px solid var(--oc-line);margin-top:6px;padding-top:6px !important}

/* ---------- 2. Registro attività: colore per categoria ---------- */

/* Un colore per riga, dichiarato una volta sola come variabile: le regole
   che lo usano (filo a sinistra, pillola, pallino in legenda) restano tre
   righe invece di tre per ogni categoria. */
.lrb-log-cat{--log-c:#64748b;--log-bg:#f1f5f9;--log-fg:#475569}
.lrb-log-cat-creazione{--log-c:#2eaf49;--log-bg:#e3f6ea;--log-fg:#11663a}
.lrb-log-cat-modifica{--log-c:#1267d8;--log-bg:#eef4ff;--log-fg:#0b3b7a}
.lrb-log-cat-eliminazione{--log-c:#d92626;--log-bg:#fde2e2;--log-fg:#b42318}
.lrb-log-cat-sicurezza{--log-c:#8061d4;--log-bg:#efe9fb;--log-fg:#5b3fa0}
.lrb-log-cat-comunicazione{--log-c:#0f766e;--log-bg:#e9f7f5;--log-fg:#0f766e}
.lrb-log-cat-errore{--log-c:#c2410c;--log-bg:#ffedd5;--log-fg:#9a3412}
.lrb-log-cat-altro{--log-c:#64748b;--log-bg:#f1f5f9;--log-fg:#475569}

/* COMPUTER — tabella vera: il filo colorato sta sul bordo sinistro della
   prima cella. Non aggiunge altezza alla riga: è un bordo, non un elemento.
   Il padding cala di 4px esatti per compensare il bordo, così il testo
   della colonna «Quando» resta allineato a quello dell'intestazione. */
.lrb-oc-log-table tbody tr.lrb-log-cat > td:first-child{
  border-left:4px solid var(--log-c);padding-left:8px;
}

/* La cella «Azione» è UN solo blocco. Serve perché sotto i 1200px la cella
   diventa flex (etichetta a sinistra, valore a destra) e senza contenitore
   la pillola e il nome finirebbero come due voci separate della scheda. */
.lrb-log-act{display:block}
/* DUE righe esatte, quante ne aveva la cella prima di questa versione — ed è
   il motivo per cui la riga non si alza. Su una pagina da cinquanta voci un
   rigo in più a riga sarebbe stato uno schermo intero di scorrimento in più:
   il colore doveva entrare a costo zero, non farsi pagare in altezza.
   Prima riga: pillola e oggetto, tutti e due corti e senza andare a capo. */
.lrb-log-pill{
  display:inline-block;padding:0 7px;border-radius:20px;
  font-size:10.5px;font-weight:800;line-height:15px;white-space:nowrap;
  background:var(--log-bg);color:var(--log-fg);vertical-align:middle;
}
.lrb-log-obj{
  margin-left:6px;font-size:11px;color:var(--oc-muted);
  white-space:nowrap;vertical-align:middle;
}
/* Seconda riga: il nome tecnico dell'azione. Resta perché è quello che si
   incolla nel filtro «Azione» per rivedere solo quelle righe — piccolo, ma
   non nascosto. Spezza a metà parola se serve, invece di allargare la
   colonna e rubare spazio al dettaglio. */
.lrb-log-slug{
  display:block;font-size:11px;line-height:15px;color:var(--oc-muted);
  overflow-wrap:anywhere;
}

/* COMPUTER — larghezze fisse delle cinque colonne.
   Senza queste, il browser distribuisce lo spazio da solo guardando il
   contenuto: aggiungendo la pillola la colonna «Azione» si è ristretta di
   una trentina di pixel, e proprio le azioni dal nome lungo hanno preso un
   rigo in più — cioè la riga si è alzata, che è l'unica cosa da non fare.
   Fissandole, «Azione» ha lo spazio che le serve e «Dettaglio» resta la
   colonna più larga, com'è giusto: è la frase che si legge davvero. */
@media (min-width:1201px){
  .lrb-oc-log-table{table-layout:fixed}
  /* «Quando» larga quanto basta a tenere data e ora su UNA riga: spezzata in
     due righe faceva da pavimento all'altezza di tutte le righe della tabella,
     anche quelle con poco testo altrove. */
  .lrb-oc-log-table th:nth-child(1){width:11%}
  .lrb-oc-log-table th:nth-child(2){width:19%}
  .lrb-oc-log-table th:nth-child(3){width:24%}
  .lrb-oc-log-table th:nth-child(4){width:36.5%}
  .lrb-oc-log-table th:nth-child(5){width:9.5%}
  .lrb-oc-log-table tbody td[data-label="Quando"]{white-space:nowrap}
  /* Con table-layout:fixed una parola lunghissima non allarga più la
     colonna: sfonderebbe la cella. Va detto esplicitamente di spezzarla. */
  .lrb-oc-log-table tbody td{overflow-wrap:anywhere}
  /* ...tranne l'indirizzo di origine. Un IP spezzato porta a capo una cifra
     sola: due righe per quindici caratteri, e il numero non si legge più
     come un numero. Qui non si spezza mai: la colonna è larga quanto basta
     al più lungo possibile (255.255.255.255) e il corpo scende di mezzo
     punto, che è quanto serve per farcelo stare. */
  .lrb-oc-log-table tbody td[data-label="Origine"]{overflow-wrap:normal}
  .lrb-oc-log-table tbody td[data-label="Origine"] small{white-space:nowrap;font-size:10.5px}
}

/* La colonna «Chi»: il nome sopra, l'indirizzo sotto in piccolo. Scritti di
   fila su una riga sola — «Mario Rossi <mario@example.org>» — il nome, che è
   quello che si cerca scorrendo, resta annegato nell'indirizzo, e la riga va
   a capo dove capita. Su due righe il nome si trova subito, e l'ingombro in
   altezza è lo stesso di prima, perché prima quella riga andava comunque a
   capo per la lunghezza. */
.lrb-log-chi{display:block;line-height:1.3}
.lrb-log-chi-nome{display:block;font-weight:600}
.lrb-log-chi-mail{display:block;font-size:11px;line-height:1.3;color:var(--oc-muted);overflow-wrap:anywhere}

/* Il dettaglio è la frase che si legge davvero: nero pieno, non grigio. */
.lrb-oc-log-table tbody td[data-label="Dettaglio"]{color:var(--oc-ink)}

/* Legenda: allineata, va a capo da sola sugli schermi stretti. */
.lrb-log-legenda{display:flex;flex-wrap:wrap;gap:7px 16px;margin:14px 2px 0}
.lrb-log-legenda-voce{
  display:inline-flex;align-items:center;gap:6px;
  font-size:11.5px;font-weight:700;color:var(--oc-muted);white-space:nowrap;
}
.lrb-log-legenda-voce i{
  width:9px;height:9px;border-radius:50%;background:var(--log-c);flex:0 0 auto;display:inline-block;
}

/* TABLET E TELEFONO (<=1200px) — qui la tabella diventa schede impilate:
   le celle sono blocchi, quindi il filo sulla prima cella non si vedrebbe
   più come segno della riga. Passa sul bordo sinistro della SCHEDA, dove
   torna a marcare l'intera voce. */
@media (max-width:1200px){
  .lrb-oc-log-table tbody tr.lrb-log-cat > td:first-child{border-left:0;padding-left:14px}
  .lrb-oc-log-table tbody tr.lrb-log-cat{border-left:4px solid var(--log-c)}
  /* Nella scheda la cella «Azione» è una riga sola: pillola, oggetto e nome
     tecnico di seguito, che vanno a capo solo se non ci stanno. Tenere qui
     le due righe del computer allungherebbe ogni scheda di un rigo — ed è
     su telefono e tablet, dove si scorre col pollice, che si sentirebbe di
     più. Restano allineati come tutti gli altri valori della scheda perché
     ereditano il text-align della cella invece di decidere per conto loro. */
  .lrb-log-slug{display:inline;font-size:11px}
  /* Nella scheda il nome e l'indirizzo restano uno sopra l'altro, allineati
     col resto dei valori: e' l'unico punto della scheda con due informazioni
     nella stessa cella, e affiancarle qui le farebbe sembrare due campi. */
  .lrb-log-chi{display:block}
  .lrb-log-obj::after{content:" ·";color:#94a3b8;margin-left:2px}
}

/* TELEFONO stretto — la legenda su una riga sola diventa illeggibile:
   si compatta e si stringe, restando comunque tutta visibile. */
@media (max-width:520px){
  .lrb-log-legenda{gap:6px 12px}
  .lrb-log-legenda-voce{font-size:11px}
  /* Il menu a gruppi: titoli e voci un filo più compatti, perché sul
     telefono la barra laterale è una tendina che si apre sopra il
     contenuto e deve starci tutta senza scorrere troppo. */
  .lrb-oc-navgroup-head{padding:8px 9px}
  .lrb-oc-navgroup > ul .lrb-oc-navlink{padding-top:9px;padding-bottom:9px}
}

/* v1.9.44 — «Solo contorno»: un filo al posto del fondo. Il colore del filo e'
   lo stesso del simbolo, quindi basta currentColor e il tema non deve
   dichiararlo due volte. */
.lrb-oc-navgroup-icon.is-contorno{box-shadow:inset 0 0 0 1.5px currentColor}

/* v1.9.44 — Scelta dell'aspetto del menu (solo amministratori), in fondo alla
   barra laterale. Chiusa di norma: si tocca una volta e poi non piu'. */
/* Chiuso di suo, e da chiuso costa UNA riga bassa: e' una cosa che si tocca
   una volta e poi non piu', e non deve rubare spazio alle voci che invece si
   usano ogni giorno. */
.lrb-oc-aspetto{margin:4px 10px 0}
.lrb-oc-aspetto > summary{
  display:flex;align-items:center;gap:7px;padding:5px 10px;border-radius:8px;cursor:pointer;
  color:var(--oc-muted);font-size:11.5px;font-weight:700;list-style:none;opacity:.85;
}
.lrb-oc-aspetto[open] > summary{opacity:1;color:var(--oc-blue)}
.lrb-oc-aspetto > summary::-webkit-details-marker{display:none}
.lrb-oc-aspetto > summary::marker{content:""}
.lrb-oc-aspetto > summary:hover{background:#f3f7ff;color:var(--oc-blue)}
.lrb-oc-aspetto > summary:focus-visible{outline:2px solid var(--oc-blue2);outline-offset:2px}
.lrb-oc-aspetto > summary .dashicons{font-size:14px;width:14px;height:14px;line-height:14px}
.lrb-oc-aspetto-form{padding:2px 10px 10px}
.lrb-oc-aspetto-tit{
  margin:6px 0 3px;font-size:10.5px;font-weight:800;text-transform:uppercase;
  letter-spacing:.04em;color:var(--oc-muted);
}
.lrb-oc-aspetto-riga{
  display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:8px;
  font-size:12.5px;color:var(--oc-ink);cursor:pointer;
}
.lrb-oc-aspetto-riga:hover{background:#f3f7ff}
.lrb-oc-aspetto-riga input{margin:0;flex:0 0 auto;accent-color:var(--oc-blue2)}
/* I quattro quadratini mostrano il tema com'e' davvero: si sceglie guardando,
   non leggendo un nome. */
.lrb-oc-aspetto-camp{display:inline-flex;gap:3px;flex:0 0 auto}
.lrb-oc-aspetto-camp i{width:11px;height:11px;border-radius:3px;display:block}
.lrb-oc-aspetto-nome{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lrb-oc-aspetto-form .lrb-oc-btn{margin-top:8px;width:100%;justify-content:center}

/* ==========================================================================
   v1.9.67 — Home a riquadri dell'area utente (opzione "home_tiles_enabled").
   Tutto qui sotto vive dietro .lrb-tiles-js / .lrb-sections-tiled: con
   l'opzione spenta, o con JavaScript non attivo, nessuna di queste regole
   entra in gioco e la home resta esattamente quella verticale di prima.
   ========================================================================== */

.lrb-home-tiles{display:flex;flex-direction:column;gap:10px;margin:0 0 14px}

.lrb-tiles-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  grid-auto-rows:1fr;
  gap:10px;
}

.lrb-tile{
  position:relative;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;
  min-height:100px;padding:14px 10px;
  background:#fff;border:1px solid var(--lrb-border,#e4e7ef);border-radius:16px;
  box-shadow:0 6px 16px rgba(20,31,68,.05);
  color:var(--lrb-text,#111827);text-decoration:none;
  transition:transform .12s ease,box-shadow .12s ease;
}
.lrb-tile:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(20,31,68,.09);color:var(--lrb-text,#111827)}
.lrb-tile:active{transform:scale(.97)}
.lrb-tile:focus-visible{outline:2px solid var(--lrb-blue,#273583);outline-offset:2px}

.lrb-tile-ic{
  flex:0 0 auto;
  width:34px;height:34px;border-radius:10px;background:#eef1fb;
  display:flex;align-items:center;justify-content:center;
  color:var(--lrb-blue,#273583);
}
.lrb-tile-svg{width:18px;height:18px;display:block}

/* Il riquadro di testo ha un'altezza fissa da due righe. Non e' un dettaglio
   estetico: senza, un titolo che va a capo alza l'icona di mezza riga e le
   icone della stessa riga non sono piu' allineate fra loro. */
.lrb-tile-title{
  display:flex;align-items:center;justify-content:center;
  min-height:28.8px;margin-top:12px;
  font-size:12px;font-weight:800;line-height:1.2;
}
.lrb-tile-sub{
  min-height:25px;margin-top:2px;
  font-size:10px;line-height:1.25;color:var(--lrb-muted,#6b7280);
}

.lrb-tile-badge{
  position:absolute;top:8px;right:8px;
  min-width:18px;height:18px;padding:0 5px;border-radius:9px;
  background:var(--lrb-red,#d92626);color:#fff;
  font-size:10px;font-weight:800;line-height:1;
  display:flex;align-items:center;justify-content:center;
}

/* Eventi: righe compatte, cosi' due o tre eventi non mangiano la griglia.
   Oltre lrb_home_tiles_events_shown() il resto diventa "+N altri". */
.lrb-tiles-events{display:flex;flex-direction:column;gap:8px}
.lrb-tiles-event{
  display:flex;align-items:center;gap:9px;
  padding:9px 12px;border-radius:12px;
  background:linear-gradient(135deg,var(--lrb-blue,#273583),#1c2766);
  box-shadow:0 6px 14px rgba(39,53,131,.22);
  color:#fff;text-decoration:none;
}
.lrb-tiles-event:hover{color:#fff}
.lrb-tiles-event .lrb-tile-svg{width:18px;height:18px;flex:0 0 auto;color:#ffd500}
.lrb-tiles-event-title{flex:1;min-width:0;font-size:12px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lrb-tiles-event-when{flex:0 0 auto;font-size:11px;font-weight:800;color:#ffd500}
.lrb-tiles-event-more{
  display:flex;align-items:center;justify-content:center;
  padding:7px 12px;border-radius:12px;
  background:#eef1fb;border:1px solid #d9e0f5;
  font-size:11.5px;font-weight:800;color:var(--lrb-blue,#273583);text-decoration:none;
}

/* Barra "torna alla home", visibile solo dentro una sezione aperta. */
.lrb-section-bar{
  display:flex;align-items:center;gap:10px;
  margin:0 0 12px;padding:10px 12px;
  background:#fff;border:1px solid var(--lrb-border,#e4e7ef);border-radius:14px;
}
.lrb-section-back{
  width:34px;height:34px;flex:0 0 auto;padding:0;
  display:flex;align-items:center;justify-content:center;
  background:#fff;border:1px solid var(--lrb-border,#e4e7ef);border-radius:10px;
  color:var(--lrb-blue,#273583);cursor:pointer;
}
.lrb-section-back:hover{background:#eef1fb}
.lrb-section-bar-title{font-size:14px;font-weight:800;color:var(--lrb-blue,#273583)}

/* Una sezione alla volta. Applicato solo quando lo script e' partito
   (.lrb-tiles-js): senza JS le sezioni restano tutte visibili.

   v1.9.68 — !important obbligatorio, non per pigrizia: nel foglio esistono gia'
   piu' regole "display:grid !important" e "display:flex !important" su questi
   contenitori (servono al comportamento responsive della home classica). Senza
   !important qui, quei riquadri restavano visibili sotto ogni sezione aperta,
   che e' esattamente il difetto segnalato sullo staging. */
.lrb-tiles-js .lrb-sections-tiled > *{display:none !important}
.lrb-tiles-js .lrb-sections-tiled > .lrb-section-active{display:block !important}
.lrb-tiles-js.lrb-viewing-section .lrb-home-tiles{display:none !important}
.lrb-tiles-js.lrb-viewing-section .lrb-hero{display:none !important}

/* v1.9.68 — intestazione compatta quando la home e' a riquadri.
   Il titolo a clamp(30px,4vw,46px) e la citazione a tutta altezza mangiavano
   mezza schermata da telefono, costringendo a scorrere proprio la pagina che
   non dovrebbe scorrere. Vale solo qui: la home classica resta com'era. */
/* L'attributo hidden vale display:none solo nel foglio del browser: qualunque
   nostra regola con display lo scavalca. Va quindi riaffermato, o la barra
   "indietro" resta a schermo anche in home (difetto visto sullo staging). */
.lrb-section-bar[hidden],
.lrb-tile[hidden]{display:none !important}

/* L'intestazione in modalita' riquadri torna a flusso normale: da tablet era
   flex in colonna e la citazione, come figlio flex, si stirava a 560px
   spingendo tutto fuori schermo. */
.lrb-home-tiles-on .lrb-hero{display:block !important;margin-bottom:8px;gap:8px}
.lrb-home-tiles-on .lrb-daily-quote{
  display:flex !important;flex-direction:row !important;align-items:center;
}
.lrb-home-tiles-on .lrb-daily-quote > *{flex:0 1 auto;min-width:0}
/* v1.9.68b — valori espliciti, non clamp(): sull'h1 la clamp veniva risolta al
   massimo invece che al minimo, quindi il titolo restava grande. */
.lrb-home-tiles-on .lrb-hero h1{font-size:16px !important;line-height:1.2;margin:0}
/* Il sottotitolo descrittivo e' la voce che costa piu' spazio in rapporto a
   quanto serve: e' sempre lo stesso e l'utente lo ha gia' letto al primo
   accesso. Sparisce solo in modalita' riquadri. */
.lrb-home-tiles-on .lrb-hero-copy > p{display:none !important}
.lrb-home-tiles-on .lrb-daily-quote{padding:7px 10px;gap:8px;margin:8px 0 0}
.lrb-home-tiles-on .lrb-daily-quote-icon{font-size:14px}
/* L'etichetta "PENSIERO DEL GIORNO" e' ridondante dentro un riquadro che gia'
   si riconosce; l'attribuzione resta ma minuta. */
.lrb-home-tiles-on .lrb-daily-quote strong{display:none}
/* v1.9.70 — la firma resta: senza, la frase sembra nostra invece che citata.
   Minuta, ma presente. */
.lrb-home-tiles-on .lrb-daily-quote span{font-size:9.5px;line-height:1.25;margin-top:1px}
/* Riquadri leggermente piu' compatti: il testo resta a due righe fisse, quindi
   le icone restano allineate. */
.lrb-home-tiles-on .lrb-tile{padding:9px 8px}
.lrb-home-tiles-on .lrb-tiles-grid{gap:8px}
.lrb-home-tiles-on .lrb-tiles-events{gap:6px}
.lrb-home-tiles-on .lrb-tile-title{margin-top:8px}
.lrb-home-tiles-on .lrb-home-tiles{gap:8px;margin-bottom:10px}
/* due righe al massimo, poi taglia: la citazione e' un di piu', non deve
   spingere fuori schermo le sezioni che servono davvero. */
.lrb-home-tiles-on .lrb-daily-quote p{
  font-size:12px !important;line-height:1.3 !important;margin:0 !important;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;
  /* Cintura oltre le bretelle: -webkit-line-clamp funziona solo con
     display:-webkit-box, e qui altre regole possono cambiare il display. Il
     tetto in altezza taglia comunque a due righe (12px * 1.3 * 2). */
  max-height:31.2px;
}

@media (min-width:700px){
  .lrb-tiles-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
  .lrb-tile{min-height:148px;padding:20px 18px;border-radius:18px}
  .lrb-tile-ic{width:46px;height:46px;border-radius:13px}
  .lrb-tile-svg{width:24px;height:24px}
  .lrb-tile-title{min-height:37.5px;margin-top:18px;font-size:15px;line-height:1.25}
  .lrb-tile-sub{min-height:33.8px;font-size:12.5px;line-height:1.35}
  .lrb-tile-badge{top:14px;right:14px;min-width:22px;height:22px;border-radius:11px;font-size:12px}
  .lrb-tiles-event-title{font-size:14px}
}

@media (min-width:1100px){
  .lrb-tiles-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
  .lrb-tile{min-height:156px;padding:22px 20px}
  .lrb-tile-title{min-height:38.8px;margin-top:20px;font-size:15.5px}
}


/* v1.9.70 — selettore vista del calendario (Mese / Elenco). */
.lrb-cal-views{display:inline-flex;gap:2px;margin-left:auto;background:#eef1fb;border-radius:9px;padding:2px}
.lrb-cal-view{
  border:0;background:transparent;cursor:pointer;
  padding:4px 9px;border-radius:7px;
  font-size:11.5px;font-weight:800;color:var(--lrb-blue,#273583);
  line-height:1.2;
}
.lrb-cal-view.is-active{background:#fff;box-shadow:0 1px 3px rgba(20,31,68,.16)}
.lrb-cal-view:focus-visible{outline:2px solid var(--lrb-blue,#273583);outline-offset:1px}
/* Su schermo stretto il titolo del riquadro va a capo: il selettore deve restare
   sulla sua riga invece di schiacciare il titolo. */
@media (max-width:520px){
  .lrb-calendar-card-title{flex-wrap:wrap}
  .lrb-cal-views{margin-left:0;order:3;width:100%;justify-content:center;margin-top:6px}
}

/* ==========================================================================
   v1.9.71 — calendario dentro la home a riquadri: niente sbordo orizzontale.

   Prova sullo staging: nella vista elenco i titoli uscivano dallo schermo a
   destra ("Sala Bar - Comme...") e il pannello "Prossime prenotazioni" andava
   a pezzi. Il primo difetto e' documentato dallo screenshot: la tabella della
   vista elenco e' piu' larga del contenitore e trascina in largo tutta la
   pagina. Il secondo non sono riuscito a riprodurlo in isolamento (con il
   markup vero la colonna delle date misura 182px, non 12), quindi la seconda
   regola qui sotto e' una protezione, non una correzione mirata: impedisce
   comunque alla colonna di collassare, qualunque cosa la stringa.
   ========================================================================== */

/* La tabella della vista elenco non deve poter superare il contenitore: il
   titolo va mandato a capo o troncato, non fatto uscire dallo schermo. */
.lrb-calendar-card .fc-list-table{table-layout:fixed;width:100%;max-width:100%}
.lrb-calendar-card .fc-list-event-title{overflow:hidden;text-overflow:ellipsis}
.lrb-calendar-card .fc-list-event-title a{
  display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
/* I figli di una griglia non si restringono sotto il proprio contenuto se non
   glielo si dice: senza min-width:0 un contenuto lungo allarga la colonna e
   con essa la pagina. */
.lrb-calendar-card,
.lrb-calendar-fold-body,
.lrb-calendar-info-grid,
.lrb-calendar-info-grid > *{min-width:0}
.lrb-calendar-fold-body{overflow-x:hidden}

/* Protezione: la colonna Inizio/Fine non scende sotto una larghezza leggibile. */
.lrb-upcoming-period{min-width:118px}
.lrb-upcoming-date{min-width:56px}

/* ==========================================================================
   v1.9.72 — "Prossime prenotazioni" leggibile da telefono.

   Difetto PREESISTENTE, non introdotto dalla home a riquadri: a <=760px una
   regola con !important impone alla riga "grid-template-columns:58px 1fr",
   e quei 58px vanno divisi fra Inizio e Fine — circa 22px a testa, dove non
   ci sta nemmeno la parola "Inizio". Il risultato e' una colonna di lettere
   incolonnate. Non si vedeva perche' sul telefono il riquadro del calendario
   e' chiuso di default: aprendolo dai riquadri il difetto e' venuto a galla.

   Qui la riga viene impilata: prima il periodo (Inizio e Fine affiancati a
   larghezza naturale), poi la risorsa, poi le azioni.
   ========================================================================== */
@media (max-width:760px){
  .lrb-home-tiles-on .lrb-upcoming-item{grid-template-columns:1fr !important;gap:8px !important}
  .lrb-home-tiles-on .lrb-upcoming-period{
    grid-template-columns:auto auto !important;
    justify-content:start;gap:18px !important;
  }
  /* v1.9.75: qui c'era min-width:0, ed era l'errore. Vedi il blocco in fondo. */
  .lrb-home-tiles-on .lrb-upcoming-date small{white-space:nowrap}
  .lrb-home-tiles-on .lrb-upcoming-date strong,
  .lrb-home-tiles-on .lrb-upcoming-date span{white-space:nowrap}
}

/* Nella fascia 761-1366px il foglio nasconde del tutto il calendario
   (.fc{display:none!important}) e lascia solo la vista elenco. Con il
   selettore Mese/Elenco introdotto in 1.9.70 quella scelta forzata non ha piu'
   senso: se l'utente chiede il mese, il mese deve comparire. FullCalendar 6
   vuole flex in colonna sulla radice. */
.lrb-home-tiles-on .lrb-calendar-card .fc{display:flex !important;flex-direction:column}

/* v1.9.76 — il gruppo in "Le mie prenotazioni" usa la pastiglia colorata
   dell'area operatore (.lrb-oc-gruppo), non un'etichetta grigia a parte: lo
   stesso gruppo deve avere lo stesso colore nei due posti. */
.lrb-booking-group{display:inline-block;margin-top:4px}
.lrb-booking-group .lrb-oc-gruppo{font-size:11px}


/* ==========================================================================
   v1.9.75 — "Prossime prenotazioni": la correzione vera, dai numeri misurati
   sul telefono di Diego (393x671, plugin 1.9.73).

     riga: colonne ....... 0.09375px 254.90625px
     periodo: larghezza .. 0
     data: min-width ..... 0px
     etichetta "Inizio" .. 0x60px

   La prima traccia della griglia si dimensiona sul contenuto; il contenuto puo'
   ridursi a zero (min-width:0, che avevo messo IO in 1.9.72 credendo di
   aiutare, e che c'e' comunque gia' altrove nel foglio); quindi si riduce a
   zero. A quel punto le parole si spezzano lettera per lettera e "Inizio"
   diventa una colonna verticale alta 60px e larga 0.

   Due ipotesi precedenti sono state SMENTITE dalla misura, e vanno lasciate
   scritte per non ripercorrerle: la pagina NON sborda in orizzontale, e il
   foglio di stile caricato E' quello aggiornato.

   Qui si smette di litigare con la griglia: la riga torna a flusso normale e
   il periodo diventa una fila di due blocchi che non possono stringersi sotto
   la loro larghezza naturale (min-width:max-content). Senza tracce da
   collassare, il difetto non puo' ripresentarsi.

   La specificita' e' volutamente alta (quattro classi) perche' le regole in
   gioco sono gia' tutte !important e devono essere superate senza ambiguita'.
   ========================================================================== */
.lrb-portal.lrb-home-tiles-on .lrb-upcoming-list .lrb-upcoming-item{
  display:block !important;
}
.lrb-portal.lrb-home-tiles-on .lrb-upcoming-list .lrb-upcoming-period{
  display:flex !important;
  flex-direction:row !important;
  flex-wrap:wrap;
  gap:6px 20px !important;
  width:auto !important;
  margin:0 0 8px !important;
}
.lrb-portal.lrb-home-tiles-on .lrb-upcoming-list .lrb-upcoming-date{
  flex:0 0 auto !important;
  width:auto !important;
  /* la riga che chiude la questione: sotto la larghezza naturale non si scende */
  min-width:max-content !important;
  word-break:normal !important;
  overflow-wrap:normal !important;
}
.lrb-portal.lrb-home-tiles-on .lrb-upcoming-list .lrb-upcoming-date > *{
  white-space:nowrap !important;
}
.lrb-portal.lrb-home-tiles-on .lrb-upcoming-list .lrb-upcoming-main{
  display:block !important;min-width:0;margin-bottom:8px;
}
.lrb-portal.lrb-home-tiles-on .lrb-upcoming-list .lrb-upcoming-actions{
  display:flex !important;flex-wrap:wrap;align-items:center;gap:8px;
}

/* ==========================================================================
   v1.9.80 — LA CAUSA VERA per cui il calendario non si vedeva su telefono.

   Nel foglio esiste da tempo questa regola:

       @media (max-width:760px){
         #lrb-calendar .fc-dayGridMonth-view{display:none !important}
       }

   Su telefono la vista mese e' NASCOSTA di proposito: risale a quando il
   calendario doveva mostrarsi solo come elenco. Percio' cambiare initialView
   (1.9.76) non poteva funzionare - il mese veniva disegnato e subito nascosto -
   e il riquadro restava alto 118px, cioe' la sola barra dei comandi.

   Nota sulla specificita': quelle regole usano #lrb-calendar, un id. Le mie
   della 1.9.79 usavano solo classi e perdevano il confronto, ed e' il motivo
   per cui nemmeno la barra compatta era comparsa. Qui si usa l'id anche noi.

   Le viste settimana e giorno restano nascoste su telefono: li' la scelta di
   partenza e' ancora giusta, sono illeggibili su uno schermo stretto.
   ========================================================================== */
@media (max-width:760px){
  /* il mese torna visibile quando la home a riquadri e' attiva */
  .lrb-home-tiles-on #lrb-calendar .fc-dayGridMonth-view{display:block !important}

  /* barra comandi su una riga sola invece che impilata */
  .lrb-home-tiles-on #lrb-calendar .fc-toolbar.fc-header-toolbar{
    display:flex !important;grid-template-columns:none !important;
    flex-wrap:nowrap !important;align-items:center !important;
    gap:8px !important;margin-bottom:8px !important;
  }
  .lrb-home-tiles-on #lrb-calendar .fc-toolbar-chunk{
    display:flex !important;align-items:center;gap:4px !important;
    justify-content:flex-start !important;flex-wrap:nowrap !important;margin:0 !important;
  }
  .lrb-home-tiles-on #lrb-calendar .fc-toolbar-chunk:nth-child(2){
    flex:1;justify-content:center !important;min-width:0;
  }
  .lrb-home-tiles-on #lrb-calendar .fc-toolbar-title{
    font-size:15px !important;line-height:1.2 !important;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .lrb-home-tiles-on #lrb-calendar .fc-button,
  .lrb-home-tiles-on #lrb-calendar .fc-button-primary{
    min-height:30px !important;padding:4px 9px !important;
    font-size:12px !important;border-radius:8px !important;
  }

  /* caselle dei giorni: compatte ma leggibili, come il calendario pubblico */
  .lrb-home-tiles-on #lrb-calendar .fc-daygrid-day-frame{min-height:44px !important}
  .lrb-home-tiles-on #lrb-calendar .fc-col-header-cell-cushion{font-size:11px;padding:4px 2px}
  .lrb-home-tiles-on #lrb-calendar .fc-daygrid-day-number{font-size:12px;padding:2px 4px}
  .lrb-home-tiles-on #lrb-calendar .fc-daygrid-event{font-size:10.5px;padding:1px 3px}
}

/* ==========================================================================
   v1.9.83 (riportata anche qui) — Le finestre della console perdevano i colori.

   Le variabili --oc-* sono dichiarate su .lrb-oc, ma le finestre vengono create
   con document.body.appendChild() e finiscono FUORI da quel contenitore: le
   variabili non le raggiungono, "background:var(--oc-blue2)" decade e resta
   "color:#fff". Il "Conferma" era bianco su bianco: presente e cliccabile, ma
   invisibile. Ridichiarate sulla finestra stessa, cosi' vale per tutte.

   Correzione nata su produzione (1.9.83) e riportata qui subito, come vuole la
   regola dei due rami: altrimenti pubblicando la 1.10.0 tornerebbe il difetto.
   ========================================================================== */
.lrb-oc-modal{
  --oc-blue:#0B2A66;--oc-blue2:#1267d8;--oc-bg:#f1f5fb;--oc-card:#ffffff;
  --oc-line:#e2e8f3;--oc-ink:#1f2a44;--oc-muted:#64748b;
}



/* =========================================================================
   v1.10.0-beta12 — SERIE A DATE LIBERE
   -------------------------------------------------------------------------
   Terza stesura. Le prime due sbagliavano la stessa cosa in due modi: si
   costruivano componenti PROPRI dove il modulo ne aveva gia' di suoi.

   - la prima riusava .lrb-weekdays-compact, che porta con se' una decina di
     definizioni in conflitto a colpi di !important e sotto i 520px diventa
     una griglia a 3 colonne: sette giorni su tre file;
   - la seconda metteva campi nudi (input date/time) in una griglia inventata:
     larghezze e allineamenti diversi dal resto del modulo, e l'ora disegnata
     dal sistema operativo — quindi "09:00 PM" su un dispositivo a 12 ore.

   Adesso il pannello usa .lrb-field, .lrb-form-row, .lrb-date-part e il menu
   .lrb-time-part del modulo. L'allineamento non e' ottenuto: e' ereditato.
   E l'ora e' sempre 24 ore, perche' e' un elenco nostro.

   Qui restano solo le poche cose che il modulo non ha gia': i gettoni dei
   giorni, la scheda di una data, e i colori della disponibilita'.
   ========================================================================= */

.lrb-serie-panel[hidden] { display: none !important; }  /* batte il display del browser */

/* NIENTE riquadro intorno al pannello.
   Era proprio quello a produrre l'asimmetria: bordo piu' padding facevano
   rientrare di 15px tutti i campi del pannello rispetto a quelli del modulo
   che sta sopra, e l'occhio lo vedeva subito. Il raggruppamento si ottiene
   con due righe orizzontali — come fa gia' il modulo con .lrb-form-section —
   invece che con una scatola, cosi' i campi partono e finiscono esattamente
   sulla stessa colonna degli altri. */
.lrb-serie-panel {
  margin: 18px 0;
  padding: 14px 0;
  border-top: 1px solid rgba(39, 53, 131, .14);
  border-bottom: 1px solid rgba(39, 53, 131, .14);
}
.lrb-serie-box { margin-top: 12px; }
.lrb-serie-box.lrb-hidden { display: none; }
.lrb-serie-intro {
  margin: 0 0 14px;
  font-size: 13px;
  line-height: 1.5;
  color: #4b5563;
}
.lrb-serie-gen-azione { margin-bottom: 4px; }
.lrb-serie-genera-btn { width: 100%; }

/* --- I gettoni dei giorni ----------------------------------------------- */
/* Sette su una riga sola anche a 320px: minmax(0,1fr) e' quello che glielo
   permette, perche' senza il contenuto minimo impedirebbe di stringersi. */
.lrb-serie-giorni {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 4px;
  /* Su schermo largo i gettoni non si stirano fino a diventare bottoni da
     120px per tre lettere. */
  max-width: 460px;
}
/* Il modulo ha una regola sulle <label> che le rende `flex`, e in un
   contenitore flex il gettone si stringe al testo: la fila si vedeva come
   sette isolotti con grandi vuoti in mezzo invece di sette caselle uguali.
   Chiesto al browser QUALE regola vincesse (protocollo DevTools) invece di
   tirare a indovinare, e alzata la specificita' — non messo un !important:
   e' proprio l'accumulo di !important su .lrb-weekdays-compact ad aver reso
   quella classe inservibile. */
.lrb-serie-giorni .lrb-serie-giorno {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  cursor: pointer;
}
/* E se un domani qualcuno la riportasse a flex, il gettone riempie lo stesso. */
.lrb-serie-giorni .lrb-serie-giorno span { width: 100%; flex: 1 1 auto; }
/* La casella resta nel documento — raggiungibile da tastiera e dai lettori di
   schermo — ma invisibile: il gettone e' la sua parte visibile. */
.lrb-serie-giorno input {
  position: absolute;
  width: 1px; height: 1px;
  opacity: 0;
  pointer-events: none;
}
.lrb-serie-giorno span {
  display: block;
  text-align: center;
  padding: 9px 2px;
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  color: #475569;
  background: #fff;
  border: 1px solid #dbe4f0;
  border-radius: 10px;
  transition: background .12s, color .12s, border-color .12s;
}
.lrb-serie-giorno input:checked + span {
  background: #273583;
  border-color: #273583;
  color: #fff;
}
.lrb-serie-giorno input:focus-visible + span {
  outline: 2px solid #2563eb;
  outline-offset: 2px;
}

/* --- L'elenco delle date ------------------------------------------------ */
.lrb-serie-elenco { display: flex; flex-direction: column; gap: 8px; }

.lrb-serie-riga {
  display: grid;
  /* Telefono: numero, data e ✕ sopra; i due orari sotto; lo stato a capo
     quando c'e' qualcosa da dire. */
  grid-template-columns: 30px minmax(0, 1fr) 30px;
  grid-template-areas:
    "n     data   togli"
    "orari orari  orari"
    "stato stato  stato";
  align-items: center;
  gap: 8px;
  padding: 10px;
  background: #fff;
  border: 1px solid #e6ecf5;
  border-radius: 12px;
}
.lrb-serie-n {
  grid-area: n;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  color: #94a3b8;
  font-weight: 700;
}
.lrb-serie-data { grid-area: data; width: 100%; min-width: 0; }
.lrb-serie-orari {
  grid-area: orari;
  display: grid;
  /* Due menu uguali e la freccia in mezzo: essendo tendine, la larghezza e'
     prevedibile e non dipende da come il sistema operativo scrive l'ora. */
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 8px;
}
.lrb-serie-orari .lrb-time-part { width: 100%; min-width: 0; }
.lrb-serie-freccia { color: #94a3b8; font-size: 13px; }

/* Lo stato non viene mai nascosto per far entrare il resto: e' l'informazione
   per cui esiste il pulsante Verifica. Quando e' vuoto sparisce e la scheda
   torna a due righe. */
.lrb-serie-stato {
  grid-area: stato;
  min-width: 0;
  font-size: 11.5px;
  font-weight: 600;
  line-height: 1.3;
  color: #94a3b8;
  overflow-wrap: anywhere;
}
.lrb-serie-stato:empty { display: none; }
.lrb-serie-stato.libero { color: #15803d; }
.lrb-serie-stato.occupato { color: #b91c1c; }

.lrb-serie-togli {
  grid-area: togli;
  width: 30px; height: 30px;
  display: flex; align-items: center; justify-content: center;
  border: 0;
  background: #f1f5f9;
  color: #64748b;
  border-radius: 9px;
  cursor: pointer;
  font-size: 13px;
  line-height: 1;
  padding: 0;
}
.lrb-serie-togli:hover { background: #fee2e2; color: #b91c1c; }

/* --- Azioni e avvisi ---------------------------------------------------- */
.lrb-serie-azioni {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 12px;
}
.lrb-serie-azioni .lrb-btn { width: 100%; }
.lrb-serie-conteggio { font-size: 12.5px; color: #667085; text-align: center; }
.lrb-serie-avviso {
  margin-top: 10px;
  padding: 9px 12px;
  border-radius: 10px;
  font-size: 12.5px;
  line-height: 1.5;
  background: #eef2ff;
  color: #273583;
}
.lrb-serie-avviso.ok { background: #ecfdf5; color: #15803d; }
.lrb-serie-avviso.error { background: #fef2f2; color: #b91c1c; }
.lrb-serie-avviso.lrb-hidden { display: none; }

/* --- Da tablet in su: una riga sola ------------------------------------- */
@media (min-width: 640px) {
  /* Nessun tetto di larghezza qui: il pannello deve seguire il modulo, e il
     modulo su desktop occupa tutta la colonna. Un tetto suo lo farebbe
     finire prima degli altri campi — cioe' la stessa asimmetria, dall'altra
     parte. Sono i singoli campi ad avere una misura sensata, non il blocco. */
  .lrb-serie-genera-btn { width: auto; }

  /* v1.10.0-beta20 — LO STATO NON SI SCHIACCIA MAI A UNA LETTERA PER RIGA.
     Difetto segnalato da Diego con screenshot: dopo «Verifica disponibilita'»
     la parola «libera» compariva scritta in verticale, una lettera sotto
     l'altra.
     Causa: la colonna dello stato era minmax(0, 1fr). Il minimo 0 permette
     alla colonna di ridursi fino a sparire quando le altre quattro prendono
     la loro larghezza massima; a quel punto `overflow-wrap: anywhere` — che
     serve per non far sbordare un messaggio lungo — spezza la parola lettera
     per lettera. Misurato: a 640px la colonna era larga 0px e «libera»
     occupava 6 righe; un messaggio di occupato ne occupava 19.
     Il difetto stava in una fascia stretta (640-760px circa), che e' proprio
     dove la riga passa alla disposizione orizzontale senza averne lo spazio.

     Rimedio in due tempi:
     1) la disposizione su una riga sola parte da 900px invece che da 640px —
        sotto, la scheda resta impilata, che e' leggibile;
     2) la colonna dello stato ha comunque un minimo vero (110px), cosi' se
        anche lo spazio si stringesse non potrebbe piu' collassare. */
  .lrb-serie-riga {
    grid-template-columns: 24px minmax(140px, 210px) minmax(200px, 300px) 30px;
    grid-template-areas:
      "n     data  orari togli"
      "stato stato stato stato";
    gap: 10px;
  }
  .lrb-serie-stato { font-size: 12px; }

  /* Questi restano da 640px in su: riguardano la barra dei comandi sotto
     l'elenco, non la riga, e a quella larghezza ci stanno gia' benissimo. */
  .lrb-serie-azioni { flex-direction: row; align-items: center; }
  .lrb-serie-azioni .lrb-btn { width: auto; }
  .lrb-serie-conteggio { margin-left: auto; }
}

/* Solo quando c'e' spazio davvero: cinque colonne su una riga sola. */
@media (min-width: 900px) {
  .lrb-serie-riga {
    grid-template-columns: 24px minmax(140px, 210px) minmax(200px, 300px) minmax(110px, 1fr) 30px;
    grid-template-areas: "n data orari stato togli";
  }
}

/* --- Le mie prenotazioni: la serie raggruppata -------------------------- */
.lrb-serie-capo > td { background: #f4f7fd; }
.lrb-serie-capo small { color: #667085; }
.lrb-serie-apri {
  border: 0; background: transparent; cursor: pointer;
  font-size: 13px; color: #273583; padding: 0 6px 0 0; line-height: 1;
}
.lrb-serie-mancanti {
  display: inline-block; margin-top: 4px; font-size: 12px;
  color: #b45309; font-weight: 600; line-height: 1.4;
}
.lrb-serie-cauzione {
  display: inline-block; margin-top: 4px; font-size: 12px;
  color: #1e3a8a; background: #eff6ff; border-radius: 999px;
  padding: 2px 9px; line-height: 1.5;
}
.lrb-serie-cauzione em { color: #667085; font-style: normal; font-size: 11px; }
.lrb-serie-occ[hidden] { display: none !important; }  /* batte il display della tabella */
.lrb-serie-occ > td:first-child { padding-left: 22px; }
.lrb-serie-n-occ {
  font-size: 11px; text-transform: uppercase; letter-spacing: .03em;
  color: #667085; font-weight: 700;
}

/* v1.10.0-beta13 — L'orario del generatore e i due comandi di servizio. */
.lrb-serie-gen-orario {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 8px;
  max-width: 320px;
}
.lrb-serie-gen-orario .lrb-time-part { width: 100%; min-width: 0; }

/* Due comandi di servizio, non due azioni principali: hanno l'aspetto di
   collegamenti perche' «Proponi le date» e «Verifica disponibilita'» restino
   i pulsanti che si notano. */
.lrb-serie-applica,
.lrb-serie-svuota {
  border: 0;
  background: none;
  padding: 0;
  margin-top: 6px;
  font-size: 12.5px;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.lrb-serie-applica { color: #273583; }
.lrb-serie-svuota { color: #b45309; margin-top: 0; }
.lrb-serie-applica:hover { color: #1d4ed8; }
.lrb-serie-svuota:hover { color: #b91c1c; }
.lrb-serie-applica[hidden],
.lrb-serie-svuota[hidden] { display: none; }

@media (min-width: 640px) {
  /* Sul telefono i comandi vanno a capo sotto il conteggio; qui stanno in fila
     con il resto senza spingere via il conteggio, che resta a destra. */
  .lrb-serie-azioni .lrb-serie-svuota { margin-left: 14px; }
}

/* v1.10.0-beta14 — Le serie e la pastiglia del gruppo nelle schede da telefono.
   Sotto i 760px la tabella e' nascosta e si vedono queste: tutto cio' che si
   aggiunge alla tabella va aggiunto anche qui, o da telefono non esiste. */
.lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-head {
  flex-wrap: wrap !important;
  gap: 8px !important;
}
.lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-head .lrb-booking-group {
  margin-top: 0;
}
/* La specificita' va ALZATA fino a superare la regola della scheda, che ha un
   ID nel selettore (#lrb-my-bookings) e un !important:
       .lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-card{display:block!important}
   Con il solo `.lrb-serie-occ-mob[hidden]` perdeva il confronto, gli incontri
   restavano sempre visibili e il pulsante «Vedi gli incontri» sembrava morto.
   E' la quarta volta che l'attributo `hidden` viene scavalcato da un `display`
   in questo foglio: barra indietro (1.9.68), velo delle finestrelle (beta5),
   riquadri della home, e adesso qui. */
.lrb-portal #lrb-my-bookings .lrb-my-booking-mobile-card.lrb-serie-occ-mob[hidden] {
  display: none !important;
}
.lrb-portal #lrb-my-bookings .lrb-serie-occ-mob {
  margin-left: 14px !important;
  width: calc(100% - 14px) !important;
  border-left: 3px solid rgba(39, 53, 131, .22) !important;
}
.lrb-portal #lrb-my-bookings .lrb-serie-scheda {
  background: #f4f7fd !important;
}
.lrb-portal #lrb-my-bookings .lrb-serie-scheda .lrb-serie-mancanti,
.lrb-portal #lrb-my-bookings .lrb-serie-scheda .lrb-serie-cauzione {
  display: inline-block;
  margin-top: 5px;
}

/* v1.10.0-beta15 — Numero e giorno della settimana, incolonnati. */
.lrb-serie-n {
  display: flex;
  flex-direction: column;
  align-items: center;
  line-height: 1.15;
}
.lrb-serie-num { font-weight: 700; }
.lrb-serie-gg {
  font-style: normal;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .02em;
  color: #64748b;
}
.lrb-serie-gg:empty { display: none; }

/* v1.10.0-beta16 — Il contrassegno e le azioni di serie nella console. */
.lrb-oc-serie {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  margin-top: 4px;
  padding: 1px 7px;
  border-radius: 999px;
  background: #eef2ff;
  color: #3730a3;
  font-size: 10.5px;
  font-weight: 800;
  line-height: 1.5;
  white-space: nowrap;
}
.lrb-oc-serie .dashicons {
  font-size: 12px;
  width: 12px;
  height: 12px;
  line-height: 12px;
}
.lrb-oc-serie-form { display: inline; }

/* v1.10.18 — QUANDO E' ARRIVATA LA RICHIESTA, e il QR del pagamento.

   Diego: «attenzione sempre alla grafica, cosi' va benissimo quella che c'e'
   ora, quindi se possibile non appesantirla troppo». Quindi: nessun colore
   nuovo, nessun riquadro nuovo, nessuna misura toccata. L'icona del QR usa la
   tinta del denaro gia' esistente (.lrb-oc-iconbtn-euro) e la finestra e' la
   .lrb-oc-modal di sempre. Qui sotto c'e' solo cio' che senza una regola non
   avrebbe misura: il disegno del QR e la riga della data. */
.lrb-oc-bk-creata {
  display: block;
  margin-top: 3px;
  color: var(--oc-muted);
  font-size: 11.5px;
  line-height: 1.45;
}
/* Il segno del QR nel pulsante: stessa misura delle dashicons accanto
   (.lrb-oc-iconbtn .dashicons), cosi' la fila di icone non si scompone. */
.lrb-oc-qr-glyph { width: 18px; height: 18px; display: block; }
.lrb-oc-col-actions .lrb-oc-iconbtn-cell .lrb-oc-qr-glyph { width: 18px; height: 18px; }
.lrb-oc-qr { margin: 4px 0 10px; text-align: center; }
/* Il QR e' un SVG senza misure proprie (`scalable`): la grandezza la decide
   qui. Massimo 260px perche' oltre non serve — un telefono lo legge da 15 cm —
   e il bordo bianco e' la «zona di quiete» che i lettori si aspettano attorno. */
.lrb-oc-qr svg {
  width: 100%;
  max-width: 260px;
  height: auto;
  background: #fff;
  border: 10px solid #fff;
  border-radius: 12px;
  box-shadow: 0 6px 18px rgba(39, 53, 131, .12);
}
/* v1.10.20 — LA PAGINA D'ISCRIZIONE CON INDIRIZZO PROPRIO.

   Diego: «l'immagine da caricare nella pagina dell'iscrizione per non lasciarla
   asettica». La pagina riusa la .lrb-card del portale: qui c'e' solo cio' che
   senza una regola non avrebbe misura — la locandina e la larghezza della
   colonna, perche' su uno schermo grande un modulo largo 1400px non si legge. */
.lrb-evento-pubblico { max-width: 720px; margin: 0 auto; padding: 18px 14px 40px; }
.lrb-evento-pubblico-card { overflow: hidden; }
/* La locandina esce dai fianchi della scheda e arriva ai bordi: e' la prima
   cosa che si vede, e incorniciarla la farebbe sembrare un allegato. */
/* I margini negativi devono valere ESATTAMENTE il padding della .lrb-card,
   altrimenti restano due strisce bianche ai lati della locandina. La card
   e' 20px, e sotto i 640px scende a 16px (vedi il @media piu' su): i due
   valori vanno tenuti insieme, non indovinati. */
.lrb-evento-pubblico-foto {
  margin: -20px -20px 14px;
  background: #eef2f8;
}
.lrb-evento-pubblico-foto img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 420px;
  /* Ritaglia invece di deformare: una locandina storta si nota subito. */
  object-fit: cover;
}
.lrb-evento-pubblico-titolo { margin: 0 0 8px; line-height: 1.2; }
.lrb-evento-pubblico-meta { margin-bottom: 10px; }
@media (max-width: 640px) {
  .lrb-evento-pubblico { padding: 10px 8px 28px; }
  /* Segue il padding ridotto della .lrb-card, che a 640px diventa 16px. */
  .lrb-evento-pubblico-foto { margin: -16px -16px 12px; }
  .lrb-evento-pubblico-foto img { max-height: 260px; }
}

.lrb-oc-qr-chi { margin-bottom: 2px; }
.lrb-oc-qr-manca {
  margin: 0 0 6px;
  color: #841f70;
  font-size: 13px;
  font-weight: 700;
}
.lrb-oc-iconbtn-warn { background: #fff7ed; color: #b45309; }
.lrb-oc-iconbtn-warn:hover { background: #ffedd5; color: #9a3412; }

/* Un'icona come tutte le altre, in fila. Che agisca sulla SERIE e non sulla
   singola prenotazione si vede da un contrassegno nell'angolo — non da una
   parola in piu' accanto, che mandava a capo la fila e rompeva
   l'allineamento della colonna. Il numero di incontri sta nel title. */
.lrb-oc-iconbtn-serie { position: relative; }
.lrb-oc-iconbtn-serie::after {
  content: "";
  position: absolute;
  top: 2px;
  right: 2px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
  box-shadow: 0 0 0 1.5px #fff;
}

/* v1.10.0-beta16 — Le date candidate da spuntare.
   Ogni data e' un gettone con il giorno della settimana e il numero: cosi' si
   riconosce «ven 14» senza leggere una data per esteso, e si spunta a colpo
   d'occhio quali del ritmo servono davvero. */
.lrb-serie-candidate {
  margin: 12px 0 14px;
  padding: 12px;
  border: 1px solid rgba(39, 53, 131, .16);
  border-radius: 14px;
  background: #fff;
}
.lrb-serie-candidate.lrb-hidden { display: none; }
.lrb-serie-cand-testa {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 2px;
}
.lrb-serie-cand-testa strong { font-size: 14px; color: #1f2937; }
.lrb-serie-cand-orario { font-size: 12px; color: #667085; font-variant-numeric: tabular-nums; }
.lrb-serie-cand-nota { margin: 0 0 10px; font-size: 12px; color: #667085; }

.lrb-serie-cand-mese {
  grid-column: 1 / -1;
  margin: 8px 0 2px;
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #94a3b8;
}
.lrb-serie-cand-mese:first-child { margin-top: 0; }

.lrb-serie-candidate-elenco {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(58px, 1fr));
  gap: 6px;
  align-items: start;
}
.lrb-serie-cand {
  display: block;
  margin: 0;
  padding: 0;
  cursor: pointer;
  text-align: center;
  border: 1px solid #dbe4f0;
  border-radius: 10px;
  background: #fff;
  padding: 6px 2px;
  transition: background .12s, border-color .12s, color .12s;
}
.lrb-serie-cand input {
  position: absolute;
  width: 1px; height: 1px;
  opacity: 0;
  pointer-events: none;
}
.lrb-serie-cand-gg {
  display: block;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .02em;
  color: #94a3b8;
  line-height: 1.2;
}
.lrb-serie-cand-num {
  display: block;
  font-size: 15px;
  font-weight: 700;
  color: #334155;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
}
.lrb-serie-cand:has(input:checked) {
  background: #273583;
  border-color: #273583;
}
.lrb-serie-cand:has(input:checked) .lrb-serie-cand-gg,
.lrb-serie-cand:has(input:checked) .lrb-serie-cand-num { color: #fff; }
.lrb-serie-cand:has(input:focus-visible) { outline: 2px solid #2563eb; outline-offset: 2px; }
/* Gia' in elenco: si vede che c'e' ma non si puo' rispuntare, cosi' generando
   due volte non nascono doppioni senza accorgersene. */
.lrb-serie-cand.gia {
  background: #eef2ff;
  border-color: #c7d2fe;
  cursor: default;
  opacity: .75;
}
.lrb-serie-cand.gia .lrb-serie-cand-num { color: #3730a3; }

.lrb-serie-cand-azioni {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}
.lrb-serie-cand-link {
  border: 0;
  background: none;
  padding: 0;
  font-size: 12.5px;
  font-weight: 600;
  color: #273583;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.lrb-serie-cand-conteggio { font-size: 12.5px; color: #667085; margin-left: auto; }
.lrb-serie-cand-azioni .lrb-btn[disabled] { opacity: .5; cursor: not-allowed; }

@media (max-width: 639px) {
  .lrb-serie-cand-azioni .lrb-btn { width: 100%; }
  .lrb-serie-cand-conteggio { margin-left: 0; }
}

/* --- v1.10.0-beta19 — LA CELLA «AZIONI» TORNA A ESSERE UNA CELLA ---------
   Difetto segnalato da Diego con screenshot: nella riga di intestazione di
   una serie la scritta «Conclusa» finiva in alto a destra, fuori dalla
   colonna Azioni, e la cella restava piu' bassa delle altre.

   Causa: `.lrb-portal #lrb-my-bookings .lrb-row-actions{display:flex!important}`
   e' applicata a un <td>. Un elemento con display:flex NON e' piu' una cella
   di tabella: esce dalla griglia delle colonne, non prende la larghezza della
   colonna ne' l'altezza della riga, e con justify-content:flex-end il suo
   contenuto viene spinto a destra. Con due pulsanti larghi non si notava;
   con un solo testo breve — «Conclusa» — si vedeva benissimo.

   Il collaudo di beta18 non l'aveva preso perche' misurava una riga con un
   <button> nelle azioni, dove la cella si allargava comunque abbastanza da
   sembrare allineata. Ora il collaudo prova ANCHE la riga con «Conclusa».

   Rimedio: sopra i 760px (le uniche larghezze in cui la tabella esiste: sotto
   e' display:none e si vedono le schede) la cella torna table-cell e la
   disposizione orizzontale dei pulsanti si ottiene con un contenitore interno
   implicito — i pulsanti sono inline-block e si dispongono da soli. Nessuna
   delle quattordici regole esistenti viene toccata: cambia solo il display
   della cella, alle larghezze in cui la tabella e' visibile. */
@media (min-width: 761px) {
  .lrb-portal #lrb-my-bookings td.lrb-row-actions {
    display: table-cell !important;
    vertical-align: middle !important;
    text-align: left !important;
    white-space: normal !important;
  }
  .lrb-portal #lrb-my-bookings td.lrb-row-actions > * {
    display: inline-block !important;
    vertical-align: middle !important;
    margin: 2px 4px 2px 0 !important;
  }
  /* «Conclusa», «Non disponibile», «Prenotazione storica»: sono etichette,
     non pulsanti. Devono leggersi come tali e stare nella loro colonna. */
  .lrb-portal #lrb-my-bookings td.lrb-row-actions .lrb-muted-action {
    color: #667085 !important;
    font-size: 12.5px !important;
    line-height: 1.3 !important;
    white-space: nowrap !important;
  }
}

/* --- v1.10.0-beta19 — La serie annullata si spegne ----------------------
   Vale per tutte e due le strutture: la riga della tabella (da PC) e la
   scheda (da telefono). Non si nasconde niente: lo storico resta, ma si
   distingue a colpo d'occhio da una prenotazione ancora in piedi. */
.lrb-serie-capo.lrb-serie-spenta > td,
.lrb-my-booking-mobile-card.lrb-serie-spenta {
  background: #f7f8fa !important;
  color: #6b7280 !important;
}
.lrb-serie-capo.lrb-serie-spenta strong,
.lrb-my-booking-mobile-card.lrb-serie-spenta .lrb-serie-scheda-titolo strong {
  text-decoration: line-through;
  text-decoration-color: #9ca3af;
  color: #6b7280 !important;
  font-weight: 600;
}
.lrb-my-booking-mobile-card.lrb-serie-spenta {
  border-color: #e5e7eb !important;
}

/* --- v1.10.0-beta22 — Il pulsante che c'e' ma non si preme ---------------
   «Modifica» su una prenotazione cancellata: resta in fila con gli altri
   perche' senza, la riga delle azioni cambierebbe forma da una riga
   all'altra e l'occhio perderebbe la colonna. Ma deve dire da solo che non
   si preme: colore spento, niente cambio al passaggio del mouse, cursore
   che non invita. Il fatto che non funzioni e' garantito dal PHP
   (disabled + niente classe .lrb-edit); questo e' solo il modo di dirlo. */
.lrb-mini-button.lrb-mini-inerte,
.lrb-mini-button.lrb-mini-inerte:hover,
.lrb-mini-button.lrb-mini-inerte:focus {
  background: #f3f4f6 !important;
  border-color: #e5e7eb !important;
  color: #9ca3af !important;
  cursor: not-allowed !important;
  box-shadow: none !important;
  transform: none !important;
  opacity: 1;               /* niente trasparenza: sbiadirebbe anche il testo */
}

/* --- v1.10.45 — Il pulsante di una prenotazione in archivio --------------
   Stesso grigio del pulsante inerte qui sopra, ma questo si PREME: al tocco
   apre la finestrella che spiega perche' non si puo' piu' modificare. Il
   cursore lo dice — `help`, non `not-allowed` — perche' premerlo serve a
   qualcosa, e sul telefono, dove il cursore non esiste, serve ancora di piu'
   che qualcosa succeda. */
.lrb-mini-button.lrb-mini-inerte.lrb-archivio,
.lrb-mini-button.lrb-mini-inerte.lrb-archivio:hover,
.lrb-mini-button.lrb-mini-inerte.lrb-archivio:focus {
  cursor: help !important;
}

/* --- v1.10.0-beta25 — «Gestione prenotazioni» e' una CARTELLA -------------
   Diego: «doveva funzionare come una cartella di esplora file… volevo ridurre
   i riquadri cosi nella home per non far fare scroll all'utente».

   Quindi in home c'e' una mattonella sola che apre un secondo livello con
   dentro le quattro. Nove mattonelle diventano sei: e' l'unico modo di
   togliere lo scorrimento, che era lo scopo. */

/* Il secondo livello e' nascosto finche' non si apre la cartella.
   L'`!important` qui e' necessario: in questo foglio l'attributo `hidden`
   viene battuto da qualunque regola che imponga un display, ed e' un errore
   gia' capito quattro volte in questo progetto. */
.lrb-tiles-cartella[hidden] { display: none !important; }
.lrb-tiles-grid[hidden] { display: none !important; }

/* La mattonella-cartella si distingue da quelle che aprono una sezione:
   porta da qualche altra parte, e deve dirlo prima che la si tocchi. */
.lrb-tile-cartella { position: relative; }
.lrb-tile-cartella .lrb-tile-freccia {
  position: absolute; right: 10px; bottom: 8px;
  font-size: 18px; line-height: 1; color: #94a3b8; font-weight: 700;
}
.lrb-tile-cartella .lrb-tile-title { color: #1e2a63; }
/* Un accenno di "pila di fogli" dietro la mattonella: dice «qui dentro ce
   n'e' altre» senza aggiungere parole. */
.lrb-tile-cartella::before {
  content: ""; position: absolute; left: 8px; right: 8px; top: -4px; height: 8px;
  border: 1px solid #e0e7f5; border-bottom: 0;
  border-radius: 10px 10px 0 0; background: #f7f9fe; z-index: -1;
}

/* --- v1.10.0-beta23 — ETICHETTE E CAMPI CENTRATI -------------------------
   Scelta di Diego dopo aver visto il mokup, e con una ragione precisa:
   «il titolo non deve essere lunghissimo, esiste nella prenotazione il campo
   descrizione/attività e li si può mettere qualcosa di lungo».

   Ha ragione, e cambia il conto che avevo fatto io: l'obiezione al centrato
   era che un testo lungo dentro un campo largo galleggia in mezzo. Ma se i
   campi di una riga sola portano per progetto testi BREVI — un titolo, un
   gruppo, una data, un numero — quel problema non si presenta, e resta solo
   la simmetria.

   Su tutte le larghezze, come chiesto: telefono, tablet e computer.

   UNA SOLA ECCEZIONE, e non e' un ripensamento: le AREE DI TESTO. Sono i
   campi in cui si scrive davvero qualcosa di lungo — la descrizione
   dell'attivita', le note, le esigenze particolari — su piu' righe. Un
   paragrafo centrato si legge male (ogni riga comincia in un punto diverso,
   l'occhio deve ricercare l'inizio a ogni capo) ed e' proprio li' che il
   testo si sposterebbe sotto le dita mentre si scrive. Sono il posto dove i
   testi lunghi devono stare: quindi restano allineate a sinistra, che e' poi
   la ragione per cui il centrato altrove funziona. */
.lrb-portal .lrb-booking-form .lrb-field > label,
.lrb-portal .lrb-booking-form .lrb-field > label > span,
.lrb-portal .lrb-booking-form .lrb-field-help,
.lrb-portal .lrb-booking-form .lrb-inline-help {
  text-align: center;
}
/* L'etichetta e' `inline-flex` (serve per tenere in riga la spia «i»
   accanto al testo). Un elemento inline-flex e' largo quanto il suo
   contenuto: `text-align:center` al suo interno non lo sposta di un pixel,
   perche' non ha spazio libero da distribuire — resta dove la riga lo mette,
   cioe' a sinistra. E' esattamente quello che si vedeva nella prima prova:
   campi centrati ed etichette ancora a sinistra.
   Serve dargli tutta la larghezza (width:100%) e poi centrare il contenuto
   con justify-content: allora il testo dell'etichetta si mette in mezzo. */
.lrb-portal .lrb-booking-form .lrb-field > label,
.lrb-portal .lrb-booking-form .lrb-inline-help {
  width: 100%;
  justify-content: center;
}
.lrb-portal .lrb-booking-form .lrb-field > input,
.lrb-portal .lrb-booking-form .lrb-field > select,
.lrb-portal .lrb-booking-form .lrb-field input[type="text"],
.lrb-portal .lrb-booking-form .lrb-field input[type="number"],
.lrb-portal .lrb-booking-form .lrb-field input[type="date"],
.lrb-portal .lrb-booking-form .lrb-field input[type="time"],
.lrb-portal .lrb-booking-form .lrb-field input[type="search"],
.lrb-portal .lrb-booking-form .lrb-field select {
  text-align: center;
}
/* Le tendine hanno bisogno di due cose in piu'.
   1) `text-align-last`, perche' text-align da solo non sposta la voce
      selezionata: quella la disegna il sistema operativo.
   2) `!important`, e qui e' necessario, non pigrizia: dalla v1.6.21 esiste
      `.lrb-portal select { text-align: left !important }` — una regola
      generale con l'important gia' dentro. Contro un important non si vince
      con la specificita': o si toglie quella regola (ma vale su tutto il
      portale, non solo sul modulo di prenotazione) o si usa lo stesso
      strumento in un ambito piu' stretto. Qui l'ambito e' stretto:
      SOLO le tendine del modulo di prenotazione. */
.lrb-portal .lrb-booking-form .lrb-field select,
.lrb-portal .lrb-booking-form .lrb-field > select {
  text-align: center !important;
  text-align-last: center !important;
}
/* L'ECCEZIONE: dove si scrive un testo lungo, si resta a sinistra. */
.lrb-portal .lrb-booking-form .lrb-field textarea {
  text-align: left !important;
}

/* v1.10.0-beta23 — Il contatore del titolo. Discreto finche' c'e' spazio,
   si fa notare quando lo spazio finisce. */
.lrb-title-conta { font-size: 12px; line-height: 1.45; }
.lrb-title-conta .is-quasi { color: #b45309; font-weight: 700; }
.lrb-title-conta .is-troppo { color: #b91c1c; font-weight: 800; }

/* --- v1.10.0-beta26 — IL SUGGERIMENTO «i» SUL TELEFONO --------------------
   Difetto con screenshot di Diego: nelle «Prossime prenotazioni», aprendo la
   «i» accanto a «Richiedi contatto», il riquadro scuro usciva dal bordo destro
   e si leggeva una lettera per riga.

   Due cause, e la seconda mi ha fatto sbagliare due tentativi:

   1) il riquadro e' ancorato con `right:0` al bordo destro della «i», che sta
      all'estremita' destra della riga: 260px di larghezza partono da li' e
      quello che avanza esce dallo schermo;

   2) i contenitori lo TAGLIANO. «Prossime prenotazioni» e la scheda del
      calendario hanno `overflow:hidden` — serve, e' quello che impedisce alla
      tabella del calendario di allargare la pagina. E qui c'e' una regola del
      CSS che va conosciuta: un elemento con `overflow-x:hidden` NON puo' avere
      `overflow-y:visible`, il browser lo forza a `auto`. L'ho provato: il
      valore calcolato restava `auto` e il testo restava tagliato lo stesso.
      Non esiste modo di far uscire in verticale un elemento in flusso da quel
      pannello.

   Rimedio: sotto i 760px il suggerimento esce dal flusso con `position:fixed`.
   Un elemento fisso si posiziona rispetto alla finestra, non ai contenitori:
   nessun `overflow` di nessun antenato puo' tagliarlo, e la larghezza la
   prende dalla finestra invece che dalla «i». Diventa una fascia in basso,
   sopra tutto, larga quanto lo schermo meno un margine.

   Vale per OGNI «i» del portale, non solo per questa: il problema non era di
   questa icona ma di come sono posizionati tutti i suggerimenti. */
@media (max-width: 760px) {
  .lrb-portal .lrb-info-tip::after {
    position: fixed;
    left: 12px;
    right: 12px;
    bottom: 16px;
    top: auto;
    width: auto;
    max-width: none;
    white-space: normal;
    text-align: left;
    font-size: 13px;
    line-height: 1.4;
    padding: 12px 14px;
    border-radius: 14px;
    box-shadow: 0 18px 40px rgba(0,0,0,.35);
    /* Sopra a tutto: la barra delle sezioni e le schede hanno z-index propri. */
    z-index: 9999;
    transform: none;
  }
  /* Le regole che lo aprono stanno molto piu' su nel foglio e, a parita' di
     specificita', perdono per posizione: vanno riaffermate qui o la fascia e'
     posizionata benissimo e non si vede mai. */
  .lrb-portal .lrb-info-tip:hover::after,
  .lrb-portal .lrb-info-tip:focus::after,
  .lrb-portal .lrb-info-tip:focus-within::after {
    opacity: 1;
    visibility: visible;
    transform: none;
  }
}

/* --- v1.10.0-beta27 — «Prenotazioni del mese»: piu' righe nello schermo ---
   Diego: «sicuramente su smartphone va tutto ridotto un po' come carattere per
   farci stare più cose».
   Ha senso ora piu' di prima: il riquadro non mostra piu' sei righe fisse ma
   TUTTE le prenotazioni del mese, che per un corso di dodici incontri sono
   parecchie. Si stringe la scala del testo e le spaziature, senza scendere
   sotto la misura in cui un nome di sala resta leggibile. */
@media (max-width: 760px) {
  .lrb-portal .lrb-upcoming-panel { padding: 12px !important; }
  .lrb-portal .lrb-upcoming-head h3 { font-size: 1.05rem !important; }
  .lrb-portal .lrb-upcoming-head p { font-size: 11.5px !important; line-height: 1.35 !important; }
  .lrb-portal .lrb-upcoming-list { gap: 8px !important; }
  .lrb-portal .lrb-upcoming-item { padding: 10px !important; gap: 6px !important; }
  /* Le due date: da riquadri grandi a due etichette compatte. Restano
     affiancate — impilarle raddoppierebbe l'altezza di ogni riga. */
  .lrb-portal .lrb-upcoming-date { padding: 6px 8px !important; }
  .lrb-portal .lrb-upcoming-date small { font-size: 9.5px !important; letter-spacing: .02em !important; }
  .lrb-portal .lrb-upcoming-date strong { font-size: 13px !important; }
  .lrb-portal .lrb-upcoming-date span { font-size: 12px !important; }
  /* Il nome delle sale e' l'informazione principale: si stringe meno del
     resto, e puo' andare a capo invece di essere troncato — «Sala 1 + Sala 2
     + Salone» deve leggersi tutto, era il difetto segnalato. */
  .lrb-portal .lrb-upcoming-main strong {
    font-size: 13.5px !important;
    line-height: 1.3 !important;
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
  }
  /* v1.10.0-beta27 — «SaloneCorso prematrimoniale» attaccati.
     Si vede anche nello screenshot di Diego: «Salone + frigo e lavelloOccupata».
     Causa: da telefono la v1.9.75 imposta `display:block` su questo blocco
     (serviva per un altro difetto, e va lasciato). Con block, <strong> e
     <span> restano due elementi in linea uno dopo l'altro e fra due tag
     adiacenti non c'e' spazio: le parole si toccano.
     Il titolo va sulla sua riga, come fa il layout da PC. */
  .lrb-portal .lrb-upcoming-main span {
    font-size: 12px !important;
    display: block !important;
    margin-top: 2px !important;
  }
  .lrb-portal .lrb-upcoming-status { font-size: 11px !important; padding: 3px 8px !important; }
  .lrb-portal .lrb-upcoming-actions .lrb-contact-owner {
    font-size: 12.5px !important;
    padding: 7px 12px !important;
  }
}

/* --- v1.10.0-beta29 — I campi «Dal» e «Al» che sborsano su iPhone ---------
   Difetto con screenshot di Diego: nel pannello delle date multiple, da
   telefono, i due campi data escono dal riquadro sulla destra.

   Causa: dalla v1.9.x c'e' una regola che da telefono dice
       .lrb-booking-form input { width:100%; max-width:none }
   `max-width:none` toglie il tetto. Per un campo di testo non cambia niente —
   width:100% basta — ma un `input[type=date]` NON e' un campo di testo: lo
   disegna il sistema operativo e ha una larghezza minima propria, quella che
   serve a scrivere «gg/mm/aaaa» piu' l'icona del calendario. Se quella misura
   e' maggiore dello spazio disponibile, senza un tetto il campo se lo prende
   e sborda.

   UNA COSA DA DIRE, perche' cambia quanto e' solida questa correzione: NON
   sono riuscito a riprodurre lo sbordo sul banco di prova. Chromium stringe
   il campo dentro il contenitore anche senza tetto; iOS Safari no — ed e' li'
   che Diego l'ha visto. Quindi non ho misurato il difetto: ho trovato la
   regola che lo permette e l'ho chiusa. Il collaudo verifica che il tetto ci
   sia e che i campi non superino il contenitore, cosa che si puo' misurare.

   Rimedio: si rimette il tetto e si aggiunge min-width:0. Vale per tutti i
   campi nativi di data e ora del modulo, non solo per questi due: il problema
   e' della regola, non di questa coppia. */
@media (max-width: 760px) {
  .lrb-portal .lrb-booking-form input[type="date"],
  .lrb-portal .lrb-booking-form input[type="time"],
  .lrb-portal .lrb-booking-form input[type="datetime-local"],
  .lrb-portal .lrb-booking-form .lrb-date-part,
  .lrb-portal .lrb-booking-form .lrb-time-part {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
  }
  /* E il contenitore non deve poter essere allargato dal figlio: in una
     griglia una traccia si dimensiona sul contenuto minimo, che per un campo
     nativo non e' zero. Con minmax(0,1fr) la traccia puo' stringersi e il
     campo la segue invece di spingerla. */
  .lrb-portal .lrb-booking-form .lrb-form-row,
  .lrb-portal .lrb-booking-form .lrb-serie-gen-orario {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  .lrb-portal .lrb-booking-form .lrb-serie-gen-orario {
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) !important;
  }
  .lrb-portal .lrb-booking-form .lrb-field { min-width: 0 !important; }
}

/* v1.10.0-beta31 — La fascia degli eventi si vede in HOME, non dentro una
   cartella. In home e' la prima cosa dopo la frase, come chiesto da Diego;
   dentro «Gestione prenotazioni» si infilava fra la barra del «torna
   indietro» e i quattro riquadri, spezzando in due la navigazione.

   Lo nasconde il JS (che governa gia' i livelli) mettendo `hidden`, non una
   regola `:has()`: quel selettore esiste da Safari 15.4 e Chrome 105, e su un
   browser piu' vecchio la fascia resterebbe in mezzo ai riquadri. Con
   l'attributo il comportamento e' lo stesso ovunque. */
.lrb-portal .lrb-tiles-events[hidden] { display: none !important; }

/* ============================================================================
   v1.10.3 — LA HOME A RIQUADRI STA TUTTA NELLO SCHERMO (telefono e tablet).

   Diego: «vorrei che le informazioni su versione pulsante aggiorna ecc fossero
   nella parte bassa e che tutto il contenuto della schermata sia ben visibile e
   fisso nello schermo dello smartphone in modo che l'utente non possa fare
   scroll su e giu' (attenzione a non bloccare completamente il pc). Lo scroll
   deve essere bloccato solo nella "home" dove ci sono tutti i riquadri, una
   volta entrato in un riquadro e aperta una funzione lo scroll deve poter
   funzionare bene dappertutto».

   Tre condizioni, tutte necessarie, e nessuna di piu':

     1. `max-width:1024px`  — telefoni e tablet, non il PC.
     2. `pointer:coarse`    — si tocca con un dito. Un PC con la finestra
        stretta resta libero di scorrere, che e' la richiesta esplicita.
        E' la stessa distinzione che ha risolto la rotellina del mouse nella
        1.10.0: li' avevo bloccato per tutti una cosa che riguardava solo il
        dito, e la rotellina ha smesso di funzionare per settimane.
     3. `.lrb-home-tiles-on:not(.lrb-viewing-section)` — SOLO la home. Aperta
        una sezione la classe `lrb-viewing-section` compare e tutto questo
        blocco smette di valere da solo, senza bisogno di disfarlo.

   Il blocco vero dello scorrimento NON sta qui: lo mette il JS con la classe
   `lrb-home-fissa` su <html>, e solo dopo aver verificato che il contenuto ci
   stia davvero. Vedi la valvola di sicurezza in lrb.js: una home bloccata piu'
   alta dello schermo renderebbe irraggiungibili i riquadri in fondo, che e' un
   guasto peggiore di quello che si sta correggendo.
   ========================================================================= */
@media (max-width:1024px) and (pointer:coarse){

  /* La colonna alta quanto lo schermo. `100dvh` e non `100vh`: su telefono le
     barre del browser compaiono e scompaiono, e `vh` resta ancorato allo
     schermo INTERO — con `vh` il fondo della pagina finirebbe sotto la barra
     degli indirizzi, cioe' proprio il pezzo che si vuole tenere in vista.

     L'altezza va data al CONTENITORE ESTERNO, non al portale: `.lrb-app-shell`
     ha 12px di imbottitura sopra e sotto, quindi un portale alto 100dvh dentro
     uno shell imbottito fa una pagina alta 100dvh + 24px — e ventiquattro
     pixel di troppo bastano a far comparire la barra di scorrimento, cioe'
     esattamente quello che si vuole togliere. Misurato: pagina 868px su uno
     schermo da 844.

     La condizione «sono in home» arriva dalla classe `lrb-home-schermo` che il
     JS mette su <html>. Si potrebbe scrivere con `:has()`, ma in questo foglio
     c'e' gia' la regola di non usarlo (esiste da Safari 15.4 / Chrome 105, e su
     un telefono piu' vecchio la home resterebbe senza disposizione): una classe
     si comporta allo stesso modo ovunque. */
  html.lrb-home-schermo .lrb-app-shell{
    min-height:100dvh;
    display:flex;
    flex-direction:column;
    box-sizing:border-box;
  }
  html.lrb-home-schermo .lrb-home-tiles-on:not(.lrb-viewing-section){
    flex:1 1 auto;
    min-height:0;
    display:flex;
    flex-direction:column;
    box-sizing:border-box;
  }

  /* Il footer scende in fondo da solo. `margin-top:auto` in una colonna flex
     spinge l'elemento all'estremita' senza doverne calcolare l'altezza — e
     senza `position:fixed`, che lo sovrapporrebbe ai riquadri quando invece
     lo spazio basta. */
  html.lrb-home-schermo .lrb-home-tiles-on:not(.lrb-viewing-section) > .lrb-footer{
    margin-top:auto;
    padding-top:10px;
    padding-bottom:calc(6px + env(safe-area-inset-bottom,0px));
    flex:0 0 auto;
  }

  /* I riquadri prendono lo spazio che avanza. `min-height:0` e' obbligatorio:
     senza, un figlio flex non scende sotto la propria altezza naturale e la
     colonna sfonda comunque lo schermo.
     Attenzione all'ordine vero del markup: `.lrb-home-tiles` e' fratello di
     `.lrb-sections`, non figlio — la prima stesura di questa regola dava per
     scontato il contrario e non agganciava niente. */
  html.lrb-home-schermo .lrb-home-tiles-on:not(.lrb-viewing-section) > .lrb-home-tiles{
    flex:1 1 auto;min-height:0;margin-bottom:0;justify-content:flex-start;
  }
  html.lrb-home-schermo .lrb-home-tiles-on:not(.lrb-viewing-section) > .lrb-sections{
    flex:0 0 auto;
  }
  /* Lo spazio che avanza va ai riquadri, non lasciato come buco.
     Senza questo, con cinque mattonelle su un telefono restava una fascia vuota
     di ~230px fra l'ultima fila e il footer: la pagina «ci stava» ma sembrava
     rotta. Le righe si allargano fino a un tetto, cosi' su uno schermo alto non
     diventano riquadroni sproporzionati e su uno basso restano leggibili. */
  /* La griglia deve CRESCERE dentro il suo contenitore: senza `flex`, resta
     alta quanto le sue righe (misurato: 304px dentro un contenitore da 2000) e
     lo spazio in piu' diventa un buco fra i riquadri e il footer.
     `align-content:stretch` da solo non bastava proprio per questo: allargava
     le righe dentro una griglia che non si era allargata. */
  /* Le righe si allargano fino a un tetto, e quel che avanza si divide SOPRA e
     SOTTO il blocco invece che fra una fila e l'altra.
     Provate e scartate, in quest'ordine:
      - `align-content:start`   → tutto in alto e un buco di 230px sopra il footer;
      - `align-content:stretch` con i riquadri limitati in altezza → le righe si
        allargavano ma i riquadri no, e il vuoto finiva FRA le due file: peggio
        del buco di prima, perche' sembrava un errore di disegno.
     `space-evenly` mette lo stesso respiro sopra, sotto e in mezzo: qualunque
     sia il numero di file, la disposizione resta equilibrata. */
  html.lrb-home-schermo .lrb-home-tiles-on:not(.lrb-viewing-section) .lrb-tiles-grid{
    flex:1 1 auto;min-height:0;
    align-content:space-evenly;
    grid-auto-rows:minmax(0,170px);
  }

  /* Quando lo scorrimento e' bloccato (classe messa dal JS solo se ci sta) la
     pagina e' esattamente lo schermo. Le due righe vanno insieme: `overflow`
     da solo su <html> non basta su iOS, dove a scorrere e' il <body>. */
  html.lrb-home-fissa,
  html.lrb-home-fissa body.lrb-app-body{
    height:100%;
    overflow:hidden;
  }
  /* La citazione e il sottotitolo sono le prime cose a cedere quando lo spazio
     manca: sono un di piu' e non devono spingere fuori i riquadri, che sono il
     motivo per cui la pagina esiste. */
  html.lrb-home-fissa .lrb-daily-quote p{
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
    overflow:hidden;
  }
}

/* ============================================================================
   v1.10.4 — I RIQUADRI SI RIMPICCIOLISCONO PER STARCI TUTTI.

   Diego: «io intendevo rimpicciolire i riquadri per farcene stare altri».

   Nella 1.10.3 i riquadri avevano una misura sola: quando non ci stavano piu',
   la home tornava semplicemente a scorrere. Misurato allora: sei riquadri su un
   iPhone, tre su un telefono piccolo. Aggiungendone altri si perdeva la
   schermata fissa.

   Adesso ci sono TRE misure, e il JS prova la piu' generosa che ci sta:

     (normale)   icona grande, titolo, sottotitolo      — com'era
     .lrb-d1     icona media, titolo, niente sottotitolo — riquadri piu' bassi
     .lrb-d2     quattro colonne, icona piccola, titolo su una riga

   Si scende di misura solo quando serve: con pochi riquadri restano grandi come
   prima. E se nemmeno .lrb-d2 basta, la home torna a scorrere — la valvola di
   sicurezza della 1.10.3 resta l'ultima parola, perche' un riquadro
   irraggiungibile e' sempre peggio di uno piccolo.

   Il sottotitolo e' la prima cosa che si sacrifica perche' e' una descrizione
   di comodo («Comunicazioni parrocchia»): il nome del riquadro basta a capire
   dove si va, e chi apre il portale tutti i giorni non lo legge piu'.
   ========================================================================= */
@media (max-width:1024px) and (pointer:coarse){

  /* --- Misura 1: via il sottotitolo, riquadri piu' bassi ------------------ */
  html.lrb-home-schermo .lrb-tiles-grid.lrb-d1 .lrb-tile-sub{display:none}
  html.lrb-home-schermo .lrb-tiles-grid.lrb-d1 .lrb-tile{
    min-height:74px;padding:8px 6px;border-radius:13px;
  }
  html.lrb-home-schermo .lrb-tiles-grid.lrb-d1 .lrb-tile-ic{
    width:34px;height:34px;border-radius:10px;
  }
  html.lrb-home-schermo .lrb-tiles-grid.lrb-d1 .lrb-tile-svg{width:17px;height:17px}
  html.lrb-home-schermo .lrb-tiles-grid.lrb-d1 .lrb-tile-title{
    margin-top:6px;font-size:12.5px;line-height:1.2;min-height:0;max-height:none;
  }

  /* --- Misura 2: quattro colonne e riquadri minimi ------------------------ */
  /* Le colonne passano da tre a quattro: e' il guadagno piu' grosso, perche'
     dodici riquadri diventano tre file invece di quattro. Sotto i 340px di
     larghezza no: quattro colonne darebbero riquadri da 70px, troppo stretti
     perche' un nome ci stia dentro. */
  html.lrb-home-schermo .lrb-tiles-grid.lrb-d2{gap:7px}
  @media (min-width:341px){
    html.lrb-home-schermo .lrb-tiles-grid.lrb-d2{grid-template-columns:repeat(4,minmax(0,1fr))}
  }
  html.lrb-home-schermo .lrb-tiles-grid.lrb-d2 .lrb-tile-sub{display:none}
  html.lrb-home-schermo .lrb-tiles-grid.lrb-d2 .lrb-tile{
    min-height:60px;padding:6px 4px;border-radius:11px;
  }
  html.lrb-home-schermo .lrb-tiles-grid.lrb-d2 .lrb-tile-ic{
    width:26px;height:26px;border-radius:8px;
  }
  html.lrb-home-schermo .lrb-tiles-grid.lrb-d2 .lrb-tile-svg{width:14px;height:14px}
  html.lrb-home-schermo .lrb-tiles-grid.lrb-d2 .lrb-tile-title{
    margin-top:4px;font-size:10.5px;line-height:1.15;min-height:0;max-height:none;
    /* Due righe al massimo: «Gestione prenotazioni» deve restare leggibile,
       non diventare una colonna di sillabe. */
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  }
  /* Il contrassegno rosso col numero resta leggibile anche piccolo: e' il
     motivo per cui uno guarda quel riquadro. */
  html.lrb-home-schermo .lrb-tiles-grid.lrb-d2 .lrb-tile-badge{
    top:4px;right:4px;min-width:16px;height:16px;border-radius:8px;font-size:10px;
  }

  /* Il tetto dell'altezza di fila scende con la densita': a misura ridotta due
     riquadroni alti 170px vanificherebbero il rimpicciolimento. */
  html.lrb-home-schermo .lrb-home-tiles-on:not(.lrb-viewing-section) .lrb-tiles-grid.lrb-d1{
    grid-auto-rows:minmax(0,110px);
  }
  html.lrb-home-schermo .lrb-home-tiles-on:not(.lrb-viewing-section) .lrb-tiles-grid.lrb-d2{
    grid-auto-rows:minmax(0,84px);
  }
}

/* ===== v1.10.9 — La finestra di conferma, una per tutto il portale =====
   Vale nel portale, nella console e in wp-admin: e' l'unica barriera davanti a
   cio' che cancella o annulla. Lo z-index sta sopra alla finestra della console
   (100000) perche' una conferma puo' aprirsi sopra una finestra gia' aperta —
   per esempio annullando qualcosa dalla scheda cauzioni. */
body.lrb-conferma-aperta { overflow: hidden; }
.lrb-conferma {
  position: fixed;
  inset: 0;
  z-index: 100010;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  background: rgba(15, 23, 42, .5);
}
.lrb-conferma[hidden] { display: none !important; }
.lrb-conferma-card {
  width: min(400px, 100%);
  box-sizing: border-box;
  background: #fff;
  border-radius: 16px;
  box-shadow: 0 24px 70px rgba(15, 23, 42, .32);
  padding: 20px;
  font-family: inherit;
}
.lrb-conferma-testo {
  margin: 0 0 14px;
  font-size: 15px;
  line-height: 1.45;
  color: #17346b;
  font-weight: 600;
}
.lrb-conferma-avviso {
  margin: -6px 0 14px;
  padding: 8px 10px;
  border-radius: 10px;
  background: #fef3c7;
  border: 1px solid #fcd34d;
  color: #92400e;
  font-size: 12.5px;
  line-height: 1.4;
}
.lrb-conferma-azioni {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  flex-wrap: wrap;
}
/* Il minimo per il dito: qui si conferma qualcosa di distruttivo, il bersaglio
   non deve essere risicato. */
.lrb-conferma-azioni button {
  min-height: 44px;
  padding: 10px 16px;
  border-radius: 10px;
  font-size: 14px;
  font-weight: 700;
  font-family: inherit;
  cursor: pointer;
  border: 1px solid transparent;
  flex: 1 1 auto;
}
.lrb-conferma-no {
  background: #f1f5fb;
  border-color: #d8e2f1 !important;
  color: #334155;
}
.lrb-conferma-si {
  background: #b91c1c;
  color: #fff;
  position: relative;
  overflow: hidden;
}
.lrb-conferma-si:focus-visible,
.lrb-conferma-no:focus-visible { outline: 3px solid #0b63ce; outline-offset: 2px; }

/* La barriera forte: il pulsante si riempie mentre lo si tiene premuto, cosi'
   si vede che sta succedendo qualcosa e quanto manca. Chi stacca il dito prima
   non ha eliminato niente. */
.lrb-conferma-si.is-forte::after {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 0;
  background: rgba(255, 255, 255, .28);
  pointer-events: none;
}
.lrb-conferma-si.is-forte.is-carica::after {
  width: 100%;
  transition: width 1s linear;
}
@media (prefers-reduced-motion: reduce) {
  .lrb-conferma-si.is-forte.is-carica::after { transition: none; }
}
@media (max-width: 400px) {
  /* In colonna il «No» sta SOPRA e il rosso sotto. Non e' un dettaglio: con
     `column-reverse` il pulsante distruttivo finiva primo, cioe' proprio dove
     cade il pollice e dove si appoggia lo sguardo. Su una finestra che esiste
     per fermare un gesto involontario, mettere il gesto involontario in cima
     sarebbe stato un controsenso. Visto in uno screenshot, non nelle misure. */
  .lrb-conferma-azioni { flex-direction: column; }
  .lrb-conferma-azioni button { width: 100%; }
}

/* ===== v1.10.9 — Le finestre della console su uno schermo da telefono =====
   Diego, con lo screenshot della gestione cauzioni: «da smartphone tutte le
   opzioni escono dallo schermo e bisogna fare scroll. E' possibile ridurre
   quella finestra?».

   Misurato prima di intervenire, a 393x852: 1083px di contenuto dentro un
   riquadro alto 812, quindi 271px da scorrere, e soprattutto il pulsante
   «Salva» fuori dalla vista. Quella finestra tiene DUE cose insieme — la
   cauzione e il compenso d'affitto, dodici campi e due note — e su un telefono
   non e' un problema di pixel da limare: qualcosa da scorrere restera' sempre.

   Il punto vero non e' lo scorrimento, e' che per salvare bisognava arrivare in
   fondo ogni volta. Quindi: intestazione e pulsanti ANCORATI, il solo corpo
   scorre. «Salva» resta sotto il pollice dall'inizio alla fine, e il resto si
   stringe quel tanto che basta.

   Vale per tutte le .lrb-oc-modal, non solo per le cauzioni: sono tutte fatte
   con lo stesso stampo (intestazione, corpo, azioni), e quella cauzioni e' solo
   la piu' lunga. Correggerne una sola avrebbe lasciato le altre a meta' strada.
   Sopra i 600px non cambia niente: li' lo spazio c'era e la finestra andava
   bene cosi'. */
@media (max-width: 600px) {
  /* L'ALTEZZA LA DECIDE L'AREA DAVVERO VISIBILE, NON IL VELO.
     Diego, con lo screenshot dalla PWA su iPhone: la finestra partiva in cima,
     sforava sotto e «Salva» non si vedeva. Il velo e' position:fixed;inset:0 e
     su WebKit, dentro una PWA con la barra del browser, si estende oltre la
     parte visibile dello schermo. La card, alta al massimo quanto il velo,
     finiva mezza sotto la piega. Riprodotto in laboratorio: 179px fuori.
     Rimedio: il velo stesso si limita all'altezza visibile (100dvh, con 100vh
     come ripiego per i browser che non conoscono dvh) e scorre lui se serve.
     Cosi' la card non puo' essere piu' alta di quello che si vede, qualunque
     cosa creda la viewport. */
  .lrb-oc-modal {
    padding: 8px;
    align-items: flex-end;
    height: 100vh;
    height: 100dvh;
    max-height: 100vh;
    max-height: 100dvh;
    overflow: hidden;
  }

  /* Il riquadro diventa una colonna: testa fissa, corpo che scorre, piede
     fisso. `min-height:0` sul corpo e' quello che permette al flex di
     restringerlo davvero invece di lasciarlo crescere e spingere fuori il
     piede. */
  .lrb-oc-modal-card {
    display: flex;
    flex-direction: column;
    /* `100%` del velo, non `100dvh` della finestra: il velo qui sopra e' gia'
       limitato all'area visibile, quindi la card eredita il limite giusto anche
       dove dvh mente. Con dvh diretto la card si misurava su una viewport piu'
       alta di quella che si vede — ed e' cosi' che «Salva» finiva sotto. */
    max-height: 100%;
    padding: 12px 12px 0;
    border-radius: 16px;
  }
  .lrb-oc-modal-card > form {
    display: flex;
    flex-direction: column;
    min-height: 0;
    flex: 1 1 auto;
  }
  .lrb-oc-modal-head {
    flex: 0 0 auto;
    margin: 0 0 8px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--oc-line, #e6ecf5);
  }
  .lrb-oc-modal-head h3 { font-size: 15px; }

  /* Il piede: sempre visibile, staccato dal corpo da una linea, e con un
     fondo pieno perche' il contenuto ci scorre sotto. */
  .lrb-oc-modal-actions {
    flex: 0 0 auto;
    position: sticky;
    bottom: 0;
    margin: 0 -12px;
    padding: 10px 12px calc(10px + env(safe-area-inset-bottom, 0px));
    background: #fff;
    border-top: 1px solid var(--oc-line, #e6ecf5);
    box-shadow: 0 -6px 14px -10px rgba(15, 23, 42, .35);
    gap: 8px;
  }
  .lrb-oc-modal-actions .lrb-oc-btn {
    flex: 1 1 auto;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }

  /* Il corpo, cioe' l'unica parte che scorre. */
  .lrb-oc-modal-card > form > .lrb-oc-form-grid,
  .lrb-oc-modal-card > form > .lrb-oc-modal-sub,
  .lrb-oc-modal-card > form > .lrb-oc-hint,
  .lrb-oc-modal-card > form > .lrb-oc-check { flex: 0 0 auto; }

  /* Si stringe il contorno, non i campi: i campi restano prendibili col dito
     (36px) e leggibili. Quello che si toglie e' lo spazio fra loro, le note
     alte il doppio del necessario e i titoletti spaziosi. */
  .lrb-oc-modal .lrb-oc-form-grid { gap: 8px; margin-bottom: 8px; }
  .lrb-oc-modal .lrb-oc-form-grid label { font-size: 11.5px; gap: 3px; }
  .lrb-oc-modal .lrb-oc-form-grid input,
  .lrb-oc-modal .lrb-oc-form-grid select,
  .lrb-oc-modal .lrb-oc-form-grid textarea {
    padding: 7px 9px;
    min-height: 36px;
    font-size: 14px;   /* sotto i 16px iOS ingrandisce da solo: non scendere */
  }
  .lrb-oc-modal .lrb-oc-form-grid textarea { min-height: 44px; }
  .lrb-oc-modal .lrb-oc-modal-sub { margin: 8px 0 6px; padding-bottom: 3px; font-size: 11px; }
  .lrb-oc-modal .lrb-oc-modal-sub:first-of-type { margin-top: 0; }
  .lrb-oc-modal .lrb-oc-hint { font-size: 11px; line-height: 1.35; margin: 6px 0; }
  .lrb-oc-modal .lrb-oc-check { margin: 6px 0 8px; font-size: 12.5px !important; }
}

/* ===== v1.10.12 — «La matita non fa nulla» =====
   Diego, dal telefono. Faceva: ricaricava la pagina con lrb_team=<id> e il
   modulo in fondo al pannello diventava «Modifica squadra», gia' compilato.
   Ma sotto i 900px la griglia del pannello passa a una colonna e quel modulo
   scivola SOTTO la tabella — misurato a 1095px dall'alto su uno schermo da
   852 — mentre la pagina ricaricata riparte dalla cima. L'azione avveniva
   fuori dalla vista, che sul telefono e' come non farla.

   L'ancora nel link porta il browser sul modulo. Qui si aggiunge la seconda
   meta': che una volta arrivati si veda di essere in MODIFICA e non davanti al
   solito modulo «Nuova squadra». Senza questo, uno ci arriva e non capisce
   perche' i campi sono pieni. */
.lrb-shift-team-form.is-modifica {
  border-color: var(--oc-blue, #0b2a66);
  box-shadow: 0 0 0 3px rgba(11, 42, 102, .12);
}
.lrb-shift-team-form.is-modifica h4 {
  color: var(--oc-blue, #0b2a66);
}
/* Su telefono il modulo arriva dopo un'ancora, cioe' appiccicato al bordo
   alto: un po' d'aria sopra evita che sembri tagliato. */
@media (max-width: 900px) {
  .lrb-shift-team-form { scroll-margin-top: 12px; }
  .lrb-shift-team-form.is-modifica { scroll-margin-top: 12px; }
}


/* ============================================================
   v1.10.54 — LA FINESTRA DI MODIFICA DI UNA PRENOTAZIONE
   ============================================================
   Diego: «non è chiaro che deve espandere il menu nuova prenotazione per
   modificarla. sarebbe utile che si aprisse un popup».

   Dentro ci finisce IL MODULO VERO, spostato — non una copia (vedi il
   commento in lrb.js). Qui si veste la finestra e si tolgono di mezzo le due
   cose che nel modulo servono alla pagina e non alla finestra: il titolo
   «Nuova prenotazione» (la finestra ha la sua intestazione) e il pulsante
   +/- della sezione pieghevole, che qui non ha niente da piegare.

   La finestra non supera MAI l'altezza dello schermo: scorre il suo corpo,
   non la pagina sotto. Su un telefono, con un modulo lungo come questo, è la
   differenza fra potersi muovere e perdersi. */
.lrb-modifica-velo{
  position:fixed;inset:0;z-index:999998;
  background:rgba(12,18,38,.46);backdrop-filter:blur(4px);
  display:flex;align-items:flex-start;justify-content:center;
  padding:24px 16px;overflow:auto;
}
.lrb-modifica-finestra{
  width:min(760px,100%);background:#fff;border:1px solid #e4e8f2;border-radius:22px;
  box-shadow:0 28px 80px rgba(39,53,131,.26);
  display:flex;flex-direction:column;max-height:calc(100vh - 48px);overflow:hidden;
}
.lrb-modifica-testa{
  display:flex;align-items:center;gap:12px;
  padding:16px 18px;border-bottom:1px solid #eef1f8;background:#f7f8fc;
}
.lrb-modifica-testa h3{
  margin:0;font-size:1.02rem;color:#17346b;flex:1 1 auto;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.lrb-modifica-chiudi{
  flex:0 0 auto;width:38px;height:38px;border-radius:12px;
  border:1px solid #e4e8f2;background:#fff;color:#5b6479;
  font-size:22px;line-height:1;cursor:pointer;
}
.lrb-modifica-chiudi:hover{background:#fdecec;border-color:#f0c2bc;color:#c0392b}
.lrb-modifica-corpo{padding:16px 18px 20px;overflow:auto;-webkit-overflow-scrolling:touch}
/* Il modulo, dentro la finestra, è gia' «la scheda»: niente seconda cornice. */
.lrb-modifica-corpo > .lrb-booking-form{background:none;border:0;box-shadow:none;padding:0;margin:0}
.lrb-modifica-corpo > .lrb-booking-form > .lrb-card-title,
.lrb-modifica-corpo .lrb-new-booking-toggle{display:none !important}
/* Nessun campo esce dalla finestra: dentro una finestra stretta un campo che
   sborda non si puo' nemmeno raggiungere scorrendo, perche' a scorrere e' il
   corpo in verticale. */
.lrb-modifica-corpo input,
.lrb-modifica-corpo select,
.lrb-modifica-corpo textarea{max-width:100%;box-sizing:border-box}
/* La pagina sotto non scorre: se scorresse, chiudendo la finestra ci si
   ritroverebbe in un punto diverso da quello da cui si era partiti. */
body.lrb-modifica-aperta{overflow:hidden}
/* La scheda rimasta senza il suo modulo non deve lasciare un riquadro vuoto. */
body.lrb-modifica-aperta #lrb-form-card{display:none !important}
@media (max-width:700px){
  .lrb-modifica-velo{padding:0}
  .lrb-modifica-finestra{width:100%;max-height:100vh;border-radius:0;border:0}
  .lrb-modifica-corpo{padding:14px 14px 22px}
}


/* ============================================================
   v1.10.54 — I SERVIZI DI TURNO NEL PORTALE (tappa 3)
   ============================================================
   Le schede compaiono solo a chi ha piu' di un servizio: con uno solo la
   pagina resta quella di sempre, senza una fila di schede da capire.
   Sono le stesse della console (1.10.52) ma vestite da portale. */
.lrb-shift-schede{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.lrb-shift-scheda{
  --srv-tinta:#273583;
  display:inline-flex;align-items:center;gap:6px;
  padding:8px 15px;border-radius:999px;
  border:1px solid #e3e8f2;background:#fff;
  color:#26324d;font-weight:700;font-size:.92rem;text-decoration:none;
}
.lrb-shift-scheda:hover{border-color:var(--srv-tinta)}
.lrb-shift-scheda.is-attiva{background:var(--srv-tinta);border-color:var(--srv-tinta);color:#fff}
/* Il nome della fascia, sotto alla data: serve solo quando il servizio ha piu'
   turni nello stesso giorno, se no due righe uguali non si distinguerebbero. */
.lrb-shift-fascia-nome{display:block;color:#5b6479;font-size:.8rem;margin-top:2px}
/* Le prenotazioni dello spazio collegato: chi apre deve sapere chi arriva.
   Stanno sotto al giorno, in piccolo: sono un contorno, non il turno. */
.lrb-shift-prenotazioni{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline;margin-top:4px}
.lrb-shift-prenotazioni > small{color:#5b6479;font-size:.78rem;font-weight:700}
.lrb-shift-pren{
  font-size:.78rem;color:#17346b;background:#eef2fb;
  border-radius:999px;padding:2px 9px;white-space:nowrap;
  max-width:100%;overflow:hidden;text-overflow:ellipsis;
}
/* SUL TELEFONO la riga del turno diventa una striscia flessibile e la cella del
   giorno si dimensiona sul contenuto (`flex:0 0 auto`, regola del 1.8.55): con
   dentro due prenotazioni la cella diventava piu' larga della striscia e la
   pagina scorreva di lato di 154px — misurati. Qui la cella si lascia
   restringere e le prenotazioni prendono una riga tutta loro. */
@media (max-width:600px){
  .lrb-shift-table td:first-child{min-width:0;max-width:100%}
  .lrb-shift-prenotazioni{flex-basis:100%;width:100%;min-width:0}
}

/* v1.10.56 — Scheda utente: una squadra per ogni servizio di turno. Con un
   servizio solo il riquadro resta quello di sempre e queste regole non hanno
   niente da separare. */
.lrb-oc-user-turni-servizio + .lrb-oc-user-turni-servizio{
  margin-top:10px;padding-top:10px;border-top:1px dashed var(--oc-line,#e3e8f2);
}


/* ============================================================
   v1.10.58 — PRENOTAZIONI CONDIVISE
   ============================================================
   Il distintivo sulla riga dice due cose in tre parole: che quella
   prenotazione non e' tua e di chi e'. Senza, un elenco con dentro le
   prenotazioni di altri diventa incomprensibile alla seconda riga. */
.lrb-badge-condivisa{
  display:inline-block;font-size:.72rem;font-weight:700;
  color:#0e5a6b;background:#e6f6fa;border:1px solid #bfe6ef;
  border-radius:999px;padding:1px 9px;white-space:nowrap;vertical-align:middle;
}
/* Quante persone: un numero piccolo attaccato al pulsante, non una frase. */
.lrb-condivisa-n{
  display:inline-block;min-width:17px;padding:0 5px;margin-left:4px;
  border-radius:999px;background:#273583;color:#fff;font-size:.7rem;line-height:17px;text-align:center;
}
/* La finestra riusa il velo della modifica (1.10.54): stessa casa, stesse
   misure, stesso comportamento su telefono. */
.lrb-cond-finestra{width:min(520px,100%)}
.lrb-cond-quando{margin:0 0 6px;font-weight:700;color:#17346b}
.lrb-cond-spiega{margin:0 0 14px;color:#5b6479;font-size:.88rem;line-height:1.5}
.lrb-cond-elenco{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.lrb-cond-persona{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:8px 12px;border:1px solid #e4e8f2;border-radius:12px;background:#f7f8fc;
}
.lrb-cond-vuoto{margin:0;color:#8a93a6;font-size:.86rem}
.lrb-cond-campo{display:flex;flex-direction:column;gap:5px;font-size:.8rem;font-weight:700;color:#5b6479}
.lrb-cond-campo input{
  width:100%;box-sizing:border-box;
  /* Un campo da toccare col dito: 21px era l'altezza che prende un input
     «nudo» dentro la finestra, e su un telefono non si prende. */
  min-height:42px;padding:9px 12px;
  border:1px solid #d7deea;border-radius:12px;font-size:15px;
}
.lrb-cond-campo input:focus{outline:2px solid #273583;outline-offset:1px}
.lrb-cond-risultati{display:flex;flex-direction:column;gap:4px;margin-top:8px}
.lrb-cond-trovato{
  text-align:left;padding:9px 12px;border:1px solid #e4e8f2;border-radius:12px;
  background:#fff;color:#17346b;font-weight:700;font-size:.9rem;cursor:pointer;
}
.lrb-cond-trovato:hover{background:#eef2fb;border-color:#c9d6f0}
/* v1.10.59 — La riga che spiega perché per nome si trova solo il proprio giro,
   e il pulsante della condivisione per indirizzo: è un'azione, non un
   risultato di ricerca, quindi si distingue. */
.lrb-cond-nota{
  margin:8px 0 0;padding:9px 11px;border-radius:10px;background:#f4f7fd;
  color:#5b6479;font-size:.8rem;font-weight:400;line-height:1.45;
}
.lrb-cond-nota strong{color:#17346b}
.lrb-cond-trovato.lrb-cond-email{
  background:#eef7f0;border-color:#bfe0c8;color:#1e5130;overflow-wrap:anywhere;
}
.lrb-cond-trovato.lrb-cond-email:hover{background:#e2f1e7;border-color:#9fd0ad}
.lrb-cond-trovato.lrb-cond-email[disabled]{opacity:.55;cursor:default}
.lrb-cond-esito{margin:12px 0 0;font-size:.86rem;color:#1e5130;min-height:1.1em}
.lrb-cond-esito.is-errore{color:#b42318}
.lrb-cond-conta{margin:4px 0 0;font-size:.78rem;color:#8a93a6}

/* ============================================================
 * v1.10.67 — STATISTICHE E RISCONTRI NELLA SCHEDA UTENTE
 *
 * Diego: «una statistica e categorizzazione delle persone che prenotano la
 * sala, soprattutto per i compleanni, da registrare nella scheda utente».
 * Quattro gruppi dentro un <details> che parte chiuso: la riga del riassunto
 * e' quella che si legge scorrendo, il resto si apre quando serve davvero.
 * Tutto interno al backend operatori.
 * ============================================================ */

/* Il grigio neutro delle pastiglie: serviva un tono che non dica ne' bene ne'
   male (una disdetta non e' un errore, un servizio «non attivo» non e' un
   allarme). Senza, la classe restava senza stile e la pastiglia compariva
   come testo nudo in mezzo alle altre. */
.lrb-oc-badge-neu{background:#eef1f6;color:#4a5568}
.lrb-oc-stat-gruppo{margin:0 0 14px}
.lrb-oc-stat-gruppo:last-child{margin-bottom:0}
.lrb-oc-stat-gruppo > h5{
  margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;
  color:#8a93a6;font-weight:800;
}
/* v1.10.70 — NON è un flex. Era `display:flex;flex-wrap:wrap`, e un flex
   tratta ogni figlio come un blocco a sé: «<strong>101</strong> approvate ·
   dalla prima il…» andava a capo DOPO il numero, lasciando «101» da solo su
   una riga e la frase sotto. Su un telefono succedeva sempre.
   Qui è prosa: prosa con dentro un numero grosso, non una fila di elementi.
   Il flex resta solo dove servono davvero delle pastiglie in fila
   (.lrb-oc-stat-pastiglie). */
.lrb-oc-stat-riga{margin:0 0 4px;font-size:13px;color:#38415a;line-height:1.55}
.lrb-oc-stat-riga strong{white-space:nowrap}
.lrb-oc-stat-pastiglie{
  margin:0 0 4px;font-size:13px;color:#38415a;
  display:flex;flex-wrap:wrap;align-items:center;gap:6px;
}
.lrb-oc-stat-riga strong{color:#17346b;font-size:15px}
/* Il residuo da incassare e' l'unica riga che chiede di fare qualcosa: ha una
   tinta sua perche' in mezzo a tre riquadri di numeri, un numero che richiede
   un'azione passa inosservato. */
.lrb-oc-stat-attenzione{
  background:#fff7e8;border:1px solid #f0dcb4;border-radius:9px;
  padding:7px 10px;color:#8a5a00;
}
.lrb-oc-stat-attenzione strong{color:#8a5a00}
.lrb-oc-stat-attenzione .lrb-oc-btn{margin-left:auto}

/* Le categorie: un elenco, non una tabella. I numeri a destra sono allineati
   con tabular-nums, se no «12» e «9» ballano e la colonna non si legge. */
.lrb-oc-stat-cat{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}
/* v1.10.70 — una griglia a tre colonne, non un flex. Con il flex la terza
   voce («12 da confermare») spingeva il numero ora a destra ora accanto al
   nome a seconda che ci fosse o no: due righe vicine avevano il numero in due
   posti diversi, e la colonna dei numeri non esisteva. Su telefono la nota
   scende sotto, dove c'è spazio per leggerla. */
.lrb-oc-stat-cat li{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;
  align-items:baseline;column-gap:8px;row-gap:2px;
  font-size:13px;color:#38415a;padding:4px 0;border-bottom:1px dashed #edf0f6;
}
.lrb-oc-stat-cat li > small{grid-column:2 / -1;justify-self:start}
.lrb-oc-stat-cat li:last-child{border-bottom:0}
.lrb-oc-stat-pallino{
  width:9px;height:9px;border-radius:50%;align-self:center;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.12);
}
.lrb-oc-stat-cat-nome{min-width:0;overflow-wrap:anywhere}
.lrb-oc-stat-cat-n{
  font-weight:800;color:#17346b;font-variant-numeric:tabular-nums;
  min-width:2ch;text-align:right;
}
.lrb-oc-stat-cat small{font-size:11px;color:#8a93a6}

/* Le note dei gestori: la parola scritta da chi ha chiuso la sala vale quanto
   il voto, quindi sta in chiaro e non dentro un title da scoprire col mouse. */
.lrb-oc-stat-note{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:5px}
.lrb-oc-stat-note li{
  display:flex;flex-wrap:wrap;align-items:center;gap:7px;font-size:12px;
  color:#4a5568;background:#fbfcfe;border:1px solid #edf0f6;border-radius:9px;padding:6px 9px;
}
.lrb-oc-stat-quando{color:#8a93a6;font-variant-numeric:tabular-nums;white-space:nowrap}
.lrb-oc-stat-cosa{flex:1 1 120px;min-width:0;overflow-wrap:anywhere;color:#38415a}
.lrb-oc-stat-nota{flex:1 1 100%;color:#6b7280;font-style:italic;overflow-wrap:anywhere}

/* v1.10.67 — «Non si e' presentato»: modulo a parte sotto il riscontro sulla
   sala, con una riga di separazione, perche' e' un'altra domanda. */
.lrb-oc-assenza-form{margin-top:6px;border-style:dashed}
.lrb-oc-sala-scelta.is-ghost{color:#8a93a6}
.lrb-oc-sala-scelta.is-ghost:hover{background:#fdf1ef;border-color:#f0c2bc;color:#c0392b}

/* v1.10.67 — I GRUPPI ACCANTO AL NOME.
   Diego: «vedere a colpo d'occhio di quali gruppi fa parte». Il gruppo
   principale ha il bordo pieno, i secondari no: senza la differenza, chi ne
   ha tre vede tre pastiglie uguali e non sa con quale di quelle prenota. */
.lrb-oc-badge-grp{background:#eef4ff;color:#1e40af;border:1px solid transparent;max-width:14ch;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lrb-oc-badge-grp.is-primario{border-color:#9db8ef;font-weight:800}
@media (max-width:600px){
  /* Su telefono la riga delle pastiglie e' quella che spinge il nome a capo:
     qui si stringono, non si nascondono — nasconderle vorrebbe dire togliere
     proprio sul telefono la cosa che serviva a colpo d'occhio. */
  .lrb-oc-badge-grp{max-width:9ch}
}

/* v1.10.67 — ARRIVO DALLA SCHEDA UTENTE NELLA SEZIONE TURNI. */
.lrb-oc-shift-persona{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;
  padding:11px 13px;border:1px solid #cfe0fa;border-radius:12px;background:#f3f8ff;
}
.lrb-oc-shift-persona-chi{display:flex;flex-direction:column;gap:2px;min-width:0}
.lrb-oc-shift-persona-chi strong{color:#17346b;font-size:14px}
.lrb-oc-shift-persona-chi .lrb-oc-hint{margin:0;font-size:12px}
.lrb-oc-shift-persona-sq{display:flex;flex-wrap:wrap;gap:5px;flex:1 1 auto}
.lrb-oc-shift-persona-sq a{text-decoration:none}
.lrb-oc-shift-persona-vai{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto}
@media (max-width:600px){
  .lrb-oc-shift-persona-vai{margin-left:0;flex:1 1 100%}
}

/* ============================================================
 * v1.10.68 — SERVIZI A PERSONE, CON RUOLI
 *
 * Diego: «non ci sia la questione del gruppo, ma che ognuno si prenda oppure
 * si segni disponibile per quella domenica»; e «un chitarrista e un organista
 * devono poter scegliere quale domenica loro è più congeniale».
 * ============================================================ */

/* La scelta della modalità: due blocchi alti, non due radio in riga. È una
   decisione che si prende una volta e cambia il senso di mezza pagina, quindi
   ogni opzione si porta dietro la frase che spiega cosa comporta — due
   etichette nude («a squadre» / «a persone») avrebbero costretto a provarle
   per capirle. */
.lrb-oc-shift-modo{display:flex;flex-direction:column;gap:7px;margin:0 0 14px}
.lrb-oc-radio{
  display:flex;align-items:flex-start;gap:9px;padding:10px 12px;cursor:pointer;
  border:1px solid #e4e8f2;border-radius:11px;background:#fbfcfe;
}
.lrb-oc-radio:hover{border-color:#cfe0fa;background:#f3f8ff}
.lrb-oc-radio input{margin-top:3px;flex:0 0 auto}
.lrb-oc-radio > span{display:flex;flex-direction:column;gap:2px;min-width:0}
.lrb-oc-radio strong{font-size:13px;color:#17346b}
.lrb-oc-radio small{font-size:12px;color:#6b7280;line-height:1.45}
/* La scelta attiva si vede anche da lontano: con due riquadri uguali e un
   pallino piccolo, su schermo largo non si capisce quale è in vigore.
   :has() non c'è su tutti i browser in circolazione, e qui va bene cosi':
   dove manca resta il pallino, che è il comportamento di sempre. Non e' una
   regola su cui si appoggia nessuna informazione — solo un rinforzo. */
.lrb-oc-radio:has(input:checked){border-color:#9db8ef;background:#eef4ff}

/* I ruoli: nome largo, «quanti» stretto e fisso. Stessa misura delle fasce
   orarie, per la stessa ragione scritta lì: su monitor larghi il nome si
   prendeva tutto lo spazio e il numero finiva al bordo destro, lontano dalla
   parola che riguarda. */
.lrb-oc-shift-ruoli{display:flex;flex-direction:column;gap:6px;margin:0 0 14px}
/* `justify-content:start` e la colonna a misura massima, come le fasce: senza,
   a finestra massimizzata il nome del ruolo si prendeva mezza schermata e il
   «quanti» finiva al bordo destro. E' la settima volta che questo progetto
   inciampa nella stessa cosa — una griglia che si allarga quanto il
   contenitore invece che quanto le serve. */
.lrb-oc-shift-ruolo{
  display:grid;grid-template-columns:minmax(0,220px) auto;
  gap:8px 12px;align-items:center;justify-content:start;
}
.lrb-oc-shift-ruolo input[type="text"]{width:100%;padding:7px 9px;border:1px solid #d6dcea;border-radius:8px;font-size:13px}
.lrb-oc-shift-ruolo label{display:flex;align-items:center;gap:6px;font-size:12px;color:#6b7280}
.lrb-oc-shift-ruolo label input{width:56px;padding:7px;border:1px solid #d6dcea;border-radius:8px;font-size:13px}
@media (max-width:700px){
  .lrb-oc-shift-ruolo{grid-template-columns:1fr}
  .lrb-oc-shift-ruolo input[type="text"],
  .lrb-oc-shift-ruolo label input{font-size:16px}
}

/* Il nome del posto nella tabella settimanale. Quello del PROPRIO ruolo si
   distingue: con quattro righe per domenica, un musicista deve trovare la
   sua senza leggerle tutte. */
.lrb-shift-ruolo-nome{
  display:block;margin-top:2px;font-size:11px;font-weight:700;
  text-transform:uppercase;letter-spacing:.04em;color:#8a93a6;
}
.lrb-shift-ruolo-nome.is-mio{color:#1e40af}

/* ============================================================
 * v1.10.69 — PIANIFICAZIONE A MESI
 *
 * Diego: «una pianificazione almeno trimestrale o semestrale, in modo che
 * venga inviata una notifica a tutti i musicisti e loro o si prendono le date
 * oppure segnano le loro disponibilità».
 * ============================================================ */

.lrb-shift-periodo{margin:14px 0 0}
.lrb-shift-periodo-testa{
  margin:0 0 12px;padding:10px 13px;border-radius:11px;
  background:#f3f8ff;border:1px solid #cfe0fa;color:#38415a;font-size:.9rem;
}
.lrb-shift-periodo-testa strong{color:#17346b}
/* Il mese è l'unità in cui si ragiona guardando un trimestre: l'intestazione
   è appiccicosa perché scorrendo tredici domeniche si perde il filo di quale
   mese si sta leggendo. */
.lrb-shift-mese{margin:0 0 16px}
.lrb-shift-mese > h4{
  position:sticky;top:0;z-index:2;margin:0 0 6px;padding:5px 2px;
  background:var(--lrb-card,#fff);
  font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:#8a93a6;font-weight:800;
}
.lrb-shift-table-periodo{width:100%;border-collapse:collapse}
.lrb-shift-table-periodo td{padding:7px 8px;border-bottom:1px solid #eef1f6;vertical-align:middle}
.lrb-shift-table-periodo tr.is-closed td{opacity:.6}
/* La riga che è TUA si vede scorrendo: con ventisei righe, trovarle leggendo
   i nomi uno per uno è esattamente la fatica che questo quadro deve togliere. */
.lrb-shift-table-periodo tr.is-mio{background:#eef7f0}
.lrb-shift-table-periodo tr.is-today{background:#fff7e8}
.lrb-shift-periodo-quando{white-space:nowrap;font-variant-numeric:tabular-nums;min-width:11ch}
.lrb-shift-periodo-ruolo{white-space:nowrap}
.lrb-shift-periodo-chi{width:100%}
.lrb-shift-periodo-azione{white-space:nowrap;text-align:right}
.lrb-shift-periodo-disp{white-space:nowrap;text-align:right}
.lrb-shift-periodo-disp .lrb-shift-avail-day{margin:0;font-size:12px}
.lrb-shift-periodo-azioni{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:6px;
  padding-top:12px;border-top:1px solid #eef1f6;
}
.lrb-shift-periodo-azioni .lrb-shift-note{margin:0;flex:1 1 220px}
@media (max-width:700px){
  /* Su telefono la tabella diventa una pila: cinque colonne in 360px
     renderebbero illeggibili sia il nome sia i pulsanti. La data resta in
     cima a ogni blocco, che è l'unica cosa che serve per orientarsi. */
  .lrb-shift-table-periodo,
  .lrb-shift-table-periodo tbody,
  .lrb-shift-table-periodo tr,
  .lrb-shift-table-periodo td{display:block;width:auto}
  .lrb-shift-table-periodo tr{
    border:1px solid #eef1f6;border-radius:10px;padding:8px 10px;margin-bottom:7px;
  }
  .lrb-shift-table-periodo td{border:0;padding:2px 0}
  .lrb-shift-periodo-azione,.lrb-shift-periodo-disp{text-align:left}
  .lrb-shift-periodo-quando:empty{display:none}
}

/* Il pannello della console: i tre comandi in riga, con l'invito staccato
   dagli altri due — è l'unico che manda qualcosa fuori dal portale. */
.lrb-oc-piano-azioni{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:12px 0}
.lrb-oc-piano-apri{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.lrb-oc-piano-apri .lrb-oc-field-label{margin:0 4px 0 0}
.lrb-oc-piano-avvisa{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  padding-left:12px;border-left:1px solid #e4e8f2;
}
.lrb-oc-piano-avvisa .lrb-oc-hint{margin:0}
@media (max-width:700px){
  .lrb-oc-piano-avvisa{padding-left:0;border-left:0;flex:1 1 100%}
}

/* v1.10.70 — date fuori dal giro, ruoli a caselle, interruttore gestione. */
.lrb-shift-extra{margin-top:16px;padding-top:14px;border-top:1px solid #eef1f6}
.lrb-shift-extra > h4{margin:0 0 4px;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#8a93a6;font-weight:800}
.lrb-shift-extra-list{list-style:none;margin:8px 0;padding:0;display:flex;flex-direction:column;gap:5px}
.lrb-shift-extra-list li{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;color:#38415a;
  background:#fbfcfe;border:1px solid #edf0f6;border-radius:9px;padding:6px 9px;
}
.lrb-shift-extra-list li span{color:#6b7280}
.lrb-shift-extra-list li form{margin-left:auto}
.lrb-shift-extra-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px;margin-top:8px}
.lrb-shift-extra-form label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:#6b7280}
.lrb-shift-extra-form input{padding:7px 9px;border:1px solid #d6dcea;border-radius:8px;font-size:13px}
@media (max-width:600px){
  .lrb-shift-extra-form{flex-direction:column;align-items:stretch}
  .lrb-shift-extra-form input{font-size:16px}
}
/* Il motivo accanto alla data: senza, un sabato in mezzo alle domeniche
   sembra un errore del portale. */
.lrb-shift-extra-nota{
  display:block;margin-top:2px;font-size:11px;font-weight:700;color:#8a5a00;
}
/* Le caselle degli strumenti, in riga e a capo quando non ci stanno. */
.lrb-oc-ruoli-caselle{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:4px}
.lrb-admin-ruoli{display:flex;flex-wrap:wrap;gap:4px 14px}
/* L'interruttore fra la vista del musicista e quella di chi gestisce. */
.lrb-shift-gestione-switch{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 12px;
  padding:9px 12px;border-radius:11px;background:#f3f8ff;border:1px solid #cfe0fa;
  font-size:.9rem;color:#38415a;
}
.lrb-shift-assegna-form,.lrb-shift-chiudi-form{display:inline-block;margin:0 0 3px}
.lrb-shift-assegna-form select{max-width:200px;padding:5px 7px;border:1px solid #d6dcea;border-radius:7px;font-size:12px}

/* v1.10.70 — il ruolo di chi guarda, a capo e non in coda al conto dei posti. */
.lrb-shift-mio-ruolo{display:block;margin-top:3px;font-size:.85rem;color:#4a5568}
.lrb-shift-mio-ruolo strong{color:#1e40af}
/* I comandi di chi gestisce, nella tabella della settimana: piccoli e in
   colonna sul telefono, dove ogni riga diventa un riquadro. «Segna chiuso»
   era un pulsante primario grande come il titolo del giorno, ripetuto per
   ogni posto — ora compare una volta per giorno ed è un comando fra gli altri. */
.lrb-shift-manage-cell .lrb-oc-btn{font-size:12px;padding:5px 9px}
.lrb-shift-manage-cell select{max-width:190px;padding:5px 7px;border:1px solid #d6dcea;border-radius:7px;font-size:12px}
.lrb-shift-chiusura-tutti{font-size:11px;color:#6b7280}
@media (max-width:700px){
  .lrb-shift-manage-cell{display:flex;flex-direction:column;align-items:stretch;gap:6px}
  .lrb-shift-manage-cell select{max-width:none;width:100%;font-size:16px}
  .lrb-shift-manage-cell .lrb-shift-chiudi-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .lrb-shift-manage-cell .lrb-shift-chiudi-form .lrb-oc-btn{margin-left:auto}
}

/* ============================================================
 * v1.10.71 — IL QUADRO DEI TURNI A RIQUADRI PER GIORNO
 *
 * Diego: «è brutta, nel front-end utente, quella sbrodolata lunga di date. È
 * possibile metterle due sulla stessa riga, oppure fare delle righe più
 * piccole in modo che ci stiano tutte le informazioni su una riga meno alta».
 *
 * La causa non era l'altezza delle righe: era che l'unità di disegno era il
 * POSTO. Una domenica con organista e chitarrista faceva due righe, e su
 * telefono due riquadri. Ora l'unità è il GIORNO: tanti riquadri quante sono
 * le domeniche, e la griglia ne mette due o tre per riga da sé, secondo lo
 * spazio — senza che sia il CSS a decidere quante, che è il modo in cui due
 * colonne fisse diventano illeggibili a 360px.
 * ============================================================ */

.lrb-shift-giorni{
  display:grid;gap:10px;
  grid-template-columns:repeat(auto-fill,minmax(248px,1fr));
}
.lrb-shift-giorno{
  border:1px solid #e4e8f2;border-radius:12px;background:#fff;
  padding:9px 11px;display:flex;flex-direction:column;gap:6px;
}
.lrb-shift-giorno.is-today{border-color:#e8c98a;background:#fffdf7}
.lrb-shift-giorno.is-mio{border-color:#9fd0ad;background:#f7fcf8}
.lrb-shift-giorno.is-closed{background:#f7f8fb;color:#8a93a6}
.lrb-shift-giorno-testa{
  display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;
  padding-bottom:5px;border-bottom:1px solid #f0f2f7;
}
.lrb-shift-giorno-data{font-weight:800;color:#17346b;font-size:.95rem;font-variant-numeric:tabular-nums}
.lrb-shift-giorno-chiuso{margin:0;font-size:.85rem;color:#8a93a6}
/* «posso» a destra nella testata: è la cosa che si tocca scorrendo l'elenco,
   e deve stare sempre nello stesso punto di ogni riquadro. */
.lrb-shift-posso{
  margin-left:auto;display:inline-flex;align-items:center;gap:5px;
  font-size:11px;color:#5b6479;cursor:pointer;white-space:nowrap;
}
.lrb-shift-posso input{margin:0}

/* I posti: una riga ciascuno, bassa. Ruolo a sinistra, chi c'è al centro, il
   comando a destra — tre cose su una riga sola, che è quello che Diego
   chiedeva. */
.lrb-shift-posti{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.lrb-shift-posti li{
  display:flex;align-items:center;gap:7px;min-height:26px;
  font-size:.86rem;color:#38415a;
}
.lrb-shift-posto-ruolo{
  font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;
  color:#8a93a6;min-width:7.5ch;
}
.lrb-shift-posto-ruolo.is-mio{color:#1e40af}
.lrb-shift-posto-chi{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}
.lrb-shift-posto-chi em{font-style:normal;font-size:10px;font-weight:800;color:#1e5130;margin-left:4px}
.lrb-shift-posti .lrb-shift-empty{color:#b45309;font-size:.82rem}
/* Comandi piccoli: in un riquadro da 248px un pulsante grande è il riquadro. */
.lrb-shift-mini{
  flex:0 0 auto;padding:3px 9px;font-size:11px;font-weight:700;border-radius:7px;
  border:1px solid #d6dcea;background:#fff;color:#38415a;cursor:pointer;line-height:1.6;
}
.lrb-shift-mini:hover{border-color:#9db8ef;color:#17346b}
.lrb-shift-mini-prendi{border-color:#9db8ef;background:#eef4ff;color:#17346b}
.lrb-shift-mini-libera{color:#8a5a00;border-color:#e8c98a;background:#fff7e8}
.lrb-shift-giorno .lrb-shift-assegna-form{margin:0;flex:0 0 auto}
.lrb-shift-giorno .lrb-shift-assegna-form select{max-width:120px;font-size:11px;padding:3px 5px}
.lrb-shift-giorno-piede{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding-top:5px;border-top:1px solid #f0f2f7;
}
.lrb-shift-disp-conta{font-size:11px;color:#8a93a6}
.lrb-shift-giorno-piede form{margin:0 0 0 auto}

@media (max-width:420px){
  /* Sotto i 420px la griglia è già a una colonna da sola (minmax): qui si
     stringe solo quel che resta largo. */
  .lrb-shift-giorno{padding:8px 10px}
  .lrb-shift-posto-ruolo{min-width:6.5ch}
  .lrb-shift-giorno .lrb-shift-assegna-form select{max-width:100%;font-size:16px}
}

/* ===== v1.10.72 — LA BARRA DEL MESE =====
   Prende il posto di «← Questa settimana →», che in un servizio a persone non
   muoveva niente. Stessa forma di quella, perché è la stessa cosa a un passo
   diverso: due frecce, in mezzo il mese, e sotto il salto diretto.
   Le frecce spente restano al loro posto invece di sparire, se no «→» si
   sposta sotto il dito fra il primo mese e il secondo. */
.lrb-shift-mesenav {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 8px 12px;
    margin: 10px 0 14px;
}
.lrb-shift-mesenav a.lrb-shift-mini { text-decoration: none; }
.lrb-shift-mesenav .lrb-shift-mini {
    min-width: 44px;          /* il bersaglio del dito, non la larghezza della freccia */
    text-align: center;
    font-size: 1.05em;
}
.lrb-shift-mesenav .is-spenta {
    opacity: .35;
    cursor: default;
    pointer-events: none;
}
.lrb-shift-mese-corrente {
    font-size: 1.05em;
    min-width: 9.5em;         /* «maggio» e «settembre» non devono spostare le frecce */
    text-align: center;
}
.lrb-shift-mese-salto { flex: 0 0 auto; }
.lrb-shift-mese-salto input[type="month"] {
    padding: 4px 8px;
    border: 1px solid #d4d9e2;
    border-radius: 8px;
    background: #fff;
    font: inherit;
    font-size: .9em;
    color: inherit;
}
.lrb-shift-mesenav .lrb-shift-note { flex: 1 1 100%; text-align: center; }

/* ===== v1.10.71 — LE PAGINE DEL PERIODO =====
   Quattro date per volta e due frecce. La barra e' la stessa sopra e sotto il
   quadro: su un telefono, dopo quattro riquadri, l'alto della pagina e' lontano.
   Le frecce spente restano al loro posto invece di sparire, altrimenti
   «successive» si sposta sotto il dito fra la prima pagina e la seconda. */
.lrb-shift-pagine {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 12px;
    margin: 10px 0 14px;
}
.lrb-shift-pagine a.lrb-shift-mini { text-decoration: none; }
.lrb-shift-pagine .is-spenta {
    opacity: .4;
    cursor: default;
    pointer-events: none;
}
.lrb-shift-pagine-conta {
    font-size: .85em;
    opacity: .75;
    font-variant-numeric: tabular-nums;
}
.lrb-shift-pagine .lrb-shift-note { flex: 1 1 100%; }

/* v1.10.72 — in gestione, su uno schermo stretto la tendina di chi assegna
   non sta sulla stessa riga del ruolo: a 390px il nome del ruolo e il nome
   della persona si accavallavano alla tendina. La riga va a capo e la
   tendina prende tutta la larghezza, che è anche il bersaglio giusto per un
   dito. */
@media (max-width: 560px) {
    .lrb-shift-posti li { flex-wrap: wrap; }
    .lrb-shift-posti li .lrb-shift-assegna-form {
        flex: 1 1 100%;
        margin-top: 4px;
    }
    .lrb-shift-posti li .lrb-shift-assegna-form select { width: 100%; }
}

/* v1.10.72 — le date in più che cadono fuori dal mese a schermo. Una riga,
   non un riquadro: è un richiamo, non una sezione. */
.lrb-shift-altrove {
    margin: 0 0 12px;
    padding: 8px 12px;
    border-left: 3px solid #e0a800;
    background: #fffaf0;
    border-radius: 0 8px 8px 0;
    font-size: .92em;
}
.lrb-shift-altrove a { font-weight: 600; }
