* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
  }
  
  :root {
    /* OPLAB BRANDING v3 - SD OPERIS */
    --sd-primary: #7CFF4F;
    --sd-secondary: #22B8FF;
    --sd-dark: #0f172a;
    --sd-text: #1f2937;
    --sd-bg-dark: #050b16;
    --sd-bg: #f0f9fb;
    --sd-sidebar: #0b1f24;
    --sd-card: #ffffff;
    --sd-accent-green: #7cff4f;
    --sd-accent-blue: #22b8ff;
    --sd-muted: #64748b;
    --sd-border: #e2e8f0;
    --sd-danger: #dc2626;

    /* SD OPERIS Admin v4 — design system unificato (ph-feste-mode) */
    --sd-admin-bg: #07131b;
    --sd-admin-sidebar: #0f1722;
    --sd-admin-header: #10232e;
    --sd-admin-card: #132733;
    --sd-admin-border: #203744;
    --sd-admin-primary: #14B8A6;
    --sd-admin-secondary: #38BDF8;
    --sd-admin-success: #22C55E;
    --sd-admin-warning: #F59E0B;
    --sd-admin-danger: #EF4444;
    --sd-admin-text: #F8FAFC;
    --sd-admin-text-muted: #94A3B8;
    --sd-admin-radius: 16px;
    --sd-admin-shadow: 0 4px 24px rgba(0, 0, 0, 0.28);
    --sd-admin-shadow-hover: 0 8px 32px rgba(0, 0, 0, 0.36);
    --sd-admin-font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", system-ui, sans-serif;
    --sd-admin-gradient-primary: linear-gradient(90deg, #14B8A6, #38BDF8);
    --sd-admin-card-alt: #11222d;

    --ph-colore-primario: #14B8A6;
    --ph-colore-secondario: #38BDF8;
    --ph-header-gradient: linear-gradient(
      135deg,
      var(--ph-colore-primario) 0%,
      var(--ph-colore-secondario) 100%
    );
  }

  body {
    font-family: "Segoe UI", Arial, sans-serif;
    background: #f5f6fa;
    color: #2d3436;
  }
  
  .container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 15px;
  }
  
  header {
    background: var(--ph-header-gradient);
    color: white;
    padding: 20px;
    border-radius: 12px;
    margin-bottom: 20px;
    text-align: center;
  }

  .app-header-branded .brand-block-header {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    flex-wrap: wrap;
  }

  .brand-block-login {
    text-align: center;
  }

  .brand-logo {
    display: none;
    width: 72px;
    height: 72px;
    margin: 0 auto 12px;
    object-fit: contain;
  }

  .brand-logo-header {
    width: 56px;
    height: 56px;
    margin: 0;
    flex-shrink: 0;
  }

  .brand-block-header.brand-senza-logo,
  .brand-block-login.brand-senza-logo {
    justify-content: center;
    text-align: center;
  }

  .brand-block-header.brand-senza-logo .brand-header-testi {
    text-align: center;
  }

  .app-header-branded h1 {
    font-size: 1.6rem;
    margin: 0;
  }

  .app-header-branded p {
    margin: 4px 0 0;
    opacity: 0.92;
  }

  .dashboard-brand-titolo {
    font-size: 1.1rem;
    color: var(--ph-colore-primario);
    margin-bottom: 14px;
    font-weight: 600;
  }

  .dashboard-section {
    margin-bottom: 24px;
  }

  .dashboard-section-title {
    font-size: 1.05rem;
    color: var(--ph-colore-primario);
    margin-bottom: 14px;
    font-weight: 600;
  }

  .dashboard-kpi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 14px;
  }

  .dashboard-kpi-card {
    background: white;
    border-radius: 12px;
    padding: 18px 14px;
    text-align: center;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);
    border-top: 3px solid var(--ph-colore-primario);
  }

  .dashboard-kpi-card-accent {
    border-top-color: var(--ph-colore-secondario);
  }

  .dashboard-kpi-value {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--ph-colore-primario);
    line-height: 1.2;
    margin-bottom: 6px;
  }

  .dashboard-kpi-card-accent .dashboard-kpi-value {
    color: var(--ph-colore-secondario);
  }

  .dashboard-kpi-label {
    font-size: 0.82rem;
    color: #636e72;
    line-height: 1.3;
  }

  .dashboard-attivita-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
  }

  .dashboard-oggi-card {
    padding: 16px 18px;
  }

  .dashboard-oggi-title {
    margin-bottom: 8px;
  }

  .dashboard-oggi-count {
    font-size: 0.92rem;
    color: #636e72;
    margin-bottom: 10px;
  }

  .dashboard-oggi-count span {
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--ph-colore-primario);
    margin-right: 4px;
  }

  .dashboard-oggi-lista .dashboard-riga-titolo {
    font-weight: 600;
  }

  .dashboard-alert-lista {
    display: flex;
    flex-direction: column;
    gap: 0;
  }

  .dashboard-alert-gruppo {
    margin-bottom: 12px;
  }

  .dashboard-alert-gruppo:last-child {
    margin-bottom: 0;
  }

  .dashboard-alert-gruppo-title {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin: 0 0 6px;
    padding: 0 2px;
  }

  .dashboard-alert-gruppo-critici {
    color: #c0392b;
  }

  .dashboard-alert-gruppo-attenzione {
    color: #d35400;
  }

  .dashboard-alert-gruppo-info {
    color: #2980b9;
  }

  .dashboard-riga-alert-critico {
    border-left: 4px solid #c0392b;
    background: #fdecea;
  }

  .dashboard-riga-alert-critico:hover {
    background: #fadbd8;
  }

  .dashboard-riga-alert-attenzione {
    border-left: 4px solid #e67e22;
    background: #fef5e7;
  }

  .dashboard-riga-alert-attenzione:hover {
    background: #fdebd0;
  }

  .dashboard-riga-alert-info {
    border-left: 4px solid #3498db;
    background: #ebf5fb;
  }

  .dashboard-riga-alert-info:hover {
    background: #d6eaf8;
  }

  .dashboard-attivita-card h4 {
    margin-bottom: 12px;
    font-size: 0.95rem;
    color: #2d3436;
  }

  .dashboard-lista {
    display: flex;
    flex-direction: column;
    gap: 8px;
  }

  .dashboard-riga {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 12px;
    background: #f8f9ff;
    border-radius: 8px;
    border-left: 3px solid var(--ph-colore-primario);
    cursor: pointer;
    transition: background 0.15s ease;
  }

  .dashboard-riga:hover {
    background: #eef1ff;
  }

  .dashboard-riga-alert {
    border-left-color: #e17055;
    background: #fff8f6;
  }

  .dashboard-riga-alert:hover {
    background: #ffede8;
  }

  .dashboard-riga-stato {
    display: inline-block;
    margin-top: 4px;
    font-size: 0.72rem;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 12px;
    background: #dfe6e9;
    color: #2d3436;
  }

  .dashboard-riga-main {
    flex: 1;
    min-width: 0;
  }

  .dashboard-riga-titolo {
    font-weight: 600;
    font-size: 0.9rem;
    color: #2d3436;
    margin-bottom: 2px;
  }

  .dashboard-riga-meta {
    font-size: 0.8rem;
    color: #636e72;
  }

  .dashboard-riga-importo {
    font-weight: 700;
    font-size: 0.9rem;
    color: var(--ph-colore-secondario);
    white-space: nowrap;
  }

  .dashboard-lista-vuota {
    font-size: 0.88rem;
    color: #636e72;
    padding: 8px 4px;
  }

  @media (max-width: 1100px) {
    .dashboard-kpi-grid {
      grid-template-columns: repeat(3, 1fr);
    }

    .dashboard-attivita-grid {
      grid-template-columns: repeat(2, 1fr);
    }
  }

  @media (min-width: 1200px) {
    .dashboard-attivita-grid {
      grid-template-columns: repeat(4, 1fr);
    }
  }

  @media (max-width: 768px) {
    .dashboard-kpi-grid {
      grid-template-columns: repeat(2, 1fr);
    }

    .dashboard-attivita-grid {
      grid-template-columns: 1fr;
    }
  }

  @media (max-width: 480px) {
    .dashboard-kpi-grid {
      grid-template-columns: 1fr;
    }

    .dashboard-kpi-value {
      font-size: 1.5rem;
    }
  }
  
  header h1 {
    font-size: 1.6rem;
  }
  
  .subtitle {
    text-align: center;
    color: #636e72;
    margin-bottom: 20px;
  }
  
  .hidden {
    display: none !important;
  }

  .tab-admin-only-hidden,
  .tab-perm-hidden {
    display: none !important;
  }

  #sd-config-sidebar .tab-perm-config-hidden,
  .sd-config-drawer .tab-perm-config-hidden {
    display: none !important;
  }
  
  .full-width {
    width: 100%;
  }
  
  .margin-top {
    margin-top: 15px;
  }
  
  hr {
    border: none;
    border-top: 1px solid #dfe6e9;
    margin: 18px 0;
  }
  
  /* LOGIN */
  .login-box {
    max-width: 400px;
    margin: 60px auto;
    background: white;
    padding: 30px;
    border-radius: 14px;
    box-shadow: 0 4px 20px rgba(0,0,0,0.1);
  }
  
  .login-box-branded {
    border-top: 4px solid var(--ph-colore-primario);
  }

  /* OPLAB BRANDING v3 - SD OPERIS: login */
  body:has(#login-page:not(.hidden)) {
    min-height: 100vh;
    background: linear-gradient(
      180deg,
      var(--sd-bg-dark) 0%,
      #081322 45%,
      #0c1b2c 100%
    );
    color: #e8edf5;
  }

  #login-page:not(.hidden) {
    max-width: none;
    width: 100%;
    margin: 0;
    padding: 24px 20px 48px;
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    isolation: isolate;
  }

  #login-page:not(.hidden)::before {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    background:
      radial-gradient(ellipse 80% 50% at 20% 10%, rgba(34, 184, 255, 0.14), transparent 55%),
      radial-gradient(ellipse 60% 40% at 85% 25%, rgba(124, 255, 79, 0.08), transparent 50%),
      radial-gradient(ellipse 70% 45% at 50% 100%, rgba(34, 184, 255, 0.1), transparent 55%);
  }

  .login-box-oplab-v3 {
    position: relative;
    z-index: 1;
    width: min(440px, 100%);
    max-width: 440px;
    margin: 0;
    border-top: none;
    background: rgba(18, 27, 42, 0.88);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(34, 184, 255, 0.18);
    border-radius: 28px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
    padding: 36px 32px;
  }

  .oplab-branding-v3-login {
    margin-bottom: 8px;
  }

  .oplab-login-logo-full {
    display: block;
    width: min(320px, 90vw);
    max-width: 320px;
    height: auto;
    margin: 0 auto 18px;
    object-fit: contain;
  }

  .oplab-login-brand-title {
    margin: 0 0 4px;
    text-align: center;
    font-size: 1.65rem;
    font-weight: 800;
    letter-spacing: 0.06em;
    color: #f1f5f9;
    line-height: 1.15;
  }

  .oplab-login-brand-sub {
    margin: 0 0 6px;
    text-align: center;
    font-size: 0.95rem;
    font-weight: 500;
    letter-spacing: 0.02em;
    color: var(--sd-accent-blue);
    line-height: 1.3;
  }

  .oplab-login-accesso {
    text-align: center;
    margin: 0 0 22px;
    color: #94a3b8;
    font-size: 0.92rem;
  }

  .login-box-oplab-v3 .form-group label {
    display: block;
    font-size: 0.82rem;
    font-weight: 600;
    color: #94a3b8;
    margin-bottom: 8px;
    letter-spacing: 0.02em;
  }

  .login-box-oplab-v3 .btn {
    min-height: 48px;
    touch-action: manipulation;
    border-radius: 12px;
    font-weight: 700;
  }

  .login-box-oplab-v3 .btn-primary {
    background: linear-gradient(90deg, var(--sd-primary), var(--sd-secondary));
    border: none;
    color: #050b16;
    box-shadow: 0 8px 24px rgba(34, 184, 255, 0.25);
  }

  .login-box-oplab-v3 .btn-primary:hover {
    filter: brightness(1.05);
    transform: translateY(-1px);
  }

  .login-box-oplab-v3 input {
    font-size: 16px;
    width: 100%;
    min-height: 48px;
    padding: 12px 14px;
    border-radius: 12px;
    border: 1px solid rgba(34, 184, 255, 0.22);
    background: rgba(8, 12, 22, 0.55);
    color: #f1f5f9;
  }

  .login-box-oplab-v3 input::placeholder {
    color: rgba(148, 163, 184, 0.75);
  }

  .login-box-oplab-v3 input:focus {
    outline: none;
    border-color: var(--sd-accent-blue);
    box-shadow: 0 0 0 3px rgba(34, 184, 255, 0.18);
  }

  #login-page .btn-link-forgot {
    color: var(--sd-accent-blue);
  }

  #login-page .btn-link-forgot:hover,
  #login-page .btn-link-forgot:focus {
    color: var(--sd-accent-green);
  }

  .oplab-branding-v3-fallback {
    display: none !important;
  }

  .login-box h2,
  #login-brand-titolo {
    text-align: center;
    margin-bottom: 10px;
    color: var(--ph-colore-primario);
  }
  
  .login-error {
    display: none;
    color: #d63031;
    text-align: center;
    margin-top: 15px;
  }
  
  /* USER BAR */
  .user-bar {
    background: #2d3436;
    color: white;
    padding: 10px 15px;
    border-radius: 8px;
    margin-bottom: 15px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
  }

  .user-bar-actions {
    display: flex;
    align-items: center;
    gap: 12px;
  }

  .google-stato-wrap {
    display: flex;
    align-items: center;
    gap: 8px;
    position: relative;
  }

  .btn-sync-google {
    font-size: 0.72rem;
    padding: 4px 10px;
    line-height: 1.2;
    white-space: nowrap;
  }

  .btn-sync-google.btn-sync-icon-only {
    width: 34px;
    height: 34px;
    min-width: 34px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.2);
    font-size: 0;
  }

  .btn-sync-google.btn-sync-icon-only .btn-sync-icon {
    font-size: 1rem;
    line-height: 1;
    display: block;
  }

  .btn-sync-google.is-syncing {
    opacity: 0.85;
    pointer-events: none;
  }

  .btn-sync-google.is-syncing .btn-sync-icon {
    animation: oplab-sync-spin 0.85s linear infinite;
  }

  @keyframes oplab-sync-spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
  }

  .google-sync-toast {
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    z-index: 50;
    font-size: 0.72rem;
    padding: 4px 10px;
    border-radius: 6px;
    background: rgba(30, 30, 30, 0.92);
    color: #fff;
    white-space: nowrap;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
    animation: google-toast-in 0.2s ease-out;
  }

  .google-sync-toast-success {
    background: rgba(0, 150, 100, 0.95);
  }

  .google-sync-toast-warning {
    background: rgba(214, 48, 49, 0.92);
  }

  .google-sync-toast-info {
    background: rgba(45, 52, 54, 0.92);
  }

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

  .google-stato-indicatore {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    background: rgba(255, 255, 255, 0.08);
    border-radius: 8px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    min-width: 140px;
  }

  .google-stato-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    flex-shrink: 0;
    background: #b2bec3;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.15);
  }

  .google-stato-indicatore[data-stato="online"] .google-stato-dot {
    background: #00b894;
    box-shadow: 0 0 8px rgba(0, 184, 148, 0.6);
  }

  .google-stato-indicatore[data-stato="syncing"] .google-stato-dot {
    background: #f39c12;
    animation: google-stato-pulse 1s ease-in-out infinite;
  }

  .google-stato-indicatore[data-stato="offline"] .google-stato-dot,
  .google-stato-indicatore[data-stato="error"] .google-stato-dot {
    background: #d63031;
    box-shadow: 0 0 6px rgba(214, 48, 49, 0.5);
  }

  @keyframes google-stato-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.65; transform: scale(1.15); }
  }

  .google-stato-testi {
    display: flex;
    flex-direction: column;
    line-height: 1.25;
  }

  .google-stato-label {
    font-size: 0.82rem;
    font-weight: 600;
  }

  .google-stato-ultimo-sync {
    font-size: 0.68rem;
    color: rgba(255, 255, 255, 0.65);
    font-weight: 400;
  }

  .google-stato-indicatore[data-stato="syncing"] .google-stato-label {
    color: #fdcb6e;
  }

  .google-stato-indicatore[data-stato="online"] .google-stato-label {
    color: #55efc4;
  }

  .google-stato-indicatore[data-stato="offline"] .google-stato-label,
  .google-stato-indicatore[data-stato="error"] .google-stato-label {
    color: #ff7675;
  }

  .google-stato-indicatore.google-stato-minimal {
    min-width: 0;
    padding: 3px 10px;
    gap: 5px;
    border-radius: 999px;
    font-size: 0.78rem;
    line-height: 1.2;
  }

  .google-stato-indicatore.google-stato-minimal .google-stato-emoji {
    font-size: 0.72rem;
    line-height: 1;
  }

  .google-stato-indicatore.google-stato-minimal .google-stato-label {
    font-size: 0.78rem;
    font-weight: 600;
  }

  .google-stato-indicatore.google-stato-minimal[data-stato="online"] {
    background: rgba(0, 184, 148, 0.18);
    border-color: rgba(0, 184, 148, 0.45);
  }

  .google-stato-indicatore.google-stato-minimal[data-stato="online"] .google-stato-label {
    color: #00b894;
  }

  .google-stato-indicatore.google-stato-minimal[data-stato="syncing"] {
    background: rgba(253, 203, 110, 0.15);
    border-color: rgba(253, 203, 110, 0.45);
  }

  .google-stato-indicatore.google-stato-minimal[data-stato="syncing"] .google-stato-label {
    color: #f1c40f;
  }

  .google-stato-indicatore.google-stato-minimal[data-stato="offline"],
  .google-stato-indicatore.google-stato-minimal[data-stato="error"] {
    background: rgba(214, 48, 49, 0.15);
    border-color: rgba(214, 48, 49, 0.4);
  }

  .google-stato-indicatore.google-stato-minimal[data-stato="offline"] .google-stato-label,
  .google-stato-indicatore.google-stato-minimal[data-stato="error"] .google-stato-label {
    color: #e17055;
  }

  .user-bar-operator-line {
    font-size: 0.72rem;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.82);
    letter-spacing: 0.02em;
  }

  body.ph-lab-solo-mode .user-bar-legacy-info {
    display: none !important;
  }

  body.ph-lab-solo-mode #user-bar.user-bar-lab-compact,
  body.ph-lab-solo-mode #user-bar.lab-sd-user-bar {
    padding: 5px 10px;
    margin-bottom: 0;
    min-height: 0;
    gap: 6px;
    border-radius: 8px;
  }

  body.ph-lab-solo-mode #user-bar .btn-user-bar-action {
    padding: 4px 10px;
    font-size: 0.74rem;
    line-height: 1.2;
    border-radius: 6px;
  }

  body.ph-lab-solo-mode #user-bar .google-stato-wrap {
    gap: 6px;
  }

  body.ph-lab-solo-mode #user-bar-home-anchor:empty {
    display: none;
  }
  
  /* CONFIG BOX */
  .config-box {
    background: #fff3cd;
    border: 2px solid #ffc107;
    padding: 15px;
    border-radius: 10px;
    margin-bottom: 20px;
  }
  
  /* TABS */
  .tabs {
    display: flex;
    gap: 8px;
    margin-bottom: 20px;
    flex-wrap: wrap;
  }
  
  .tab {
    padding: 12px 20px;
    background: white;
    border: none;
    border-radius: 8px;
    cursor: pointer;
    font-weight: 600;
    color: #636e72;
    transition: all 0.2s;
    box-shadow: 0 1px 5px rgba(0,0,0,0.05);
  }
  
  .tab.active {
    background: var(--ph-colore-primario);
    color: white;
  }
  
  .tab:hover:not(.active) {
    background: #dfe6e9;
  }
  
  /* PANEL */
  .panel {
    display: none;
    background: white;
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 2px 10px rgba(0,0,0,0.08);
  }
  
  .panel.active {
    display: block;
  }
  
  /* CARD */
  .card {
    background: #f8f9fa;
    border-radius: 10px;
    padding: 15px;
    margin-bottom: 14px;
    border-left: 4px solid #667eea;
  }
  
  .card h2,
  .card h3 {
    margin-bottom: 12px;
  }
  
  /* FORM */
  .form-group {
    margin-bottom: 15px;
  }
  
  label {
    display: block;
    font-weight: 600;
    margin-bottom: 5px;
    font-size: 0.9rem;
  }
  
  input,
  select,
  textarea {
    width: 100%;
    padding: 10px 12px;
    border: 2px solid #dfe6e9;
    border-radius: 8px;
    font-size: 0.95rem;
    background: white;
  }
  
  textarea {
    min-height: 80px;
    resize: vertical;
  }
  
  input:focus,
  select:focus,
  textarea:focus {
    outline: none;
    border-color: #667eea;
  }
  
  /* BUTTONS */
  .btn {
    padding: 12px 22px;
    border: none;
    border-radius: 8px;
    font-weight: 600;
    cursor: pointer;
    font-size: 0.95rem;
    transition: all 0.2s;
  }
  
  .btn:hover {
    opacity: 0.9;
    transform: translateY(-1px);
  }
  
  .btn-primary {
    background: var(--ph-colore-primario);
    color: var(--ph-testo-su-primario, #fff);
    color: white;
  }
  
  .btn-success {
    background: #00b894;
    color: white;
  }
  
  .btn-danger {
    background: #d63031;
    color: white;
  }
  
  .btn-warning {
    background: #fdcb6e;
    color: #2d3436;
  }
  
  .btn-whatsapp {
    background: #25d366;
    color: white;
  }
  
  .btn-contratto {
    background: #e17055;
    color: white;
  }

  .evento-azioni-rapide {
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px solid #dfe6e9;
  }

  .evento-azioni-rapide h4 {
    font-size: 0.95rem;
    margin-bottom: 10px;
    color: var(--ph-colore-primario);
    font-weight: 600;
  }

  .evento-azioni-rapide-grid {
    flex-wrap: wrap;
    gap: 8px;
  }

  .btn-azione-conferma {
    background: var(--ph-colore-primario);
    color: var(--ph-testo-su-primario, #fff);
  }

  .btn-azione-acconto {
    background: #fdcb6e;
    color: #2d3436;
  }

  .btn-azione-saldato {
    background: #00b894;
    color: #fff;
  }

  .btn-azione-annulla-evento {
    background: #d63031;
    color: #fff;
  }

  .modal-acconto-overlay {
    z-index: 1100;
  }

  .modal-box-small {
    max-width: 380px;
    width: 92%;
  }

  .modal-acconto-hint {
    font-size: 0.88rem;
    color: #636e72;
    margin-bottom: 12px;
  }

  .evento-dettaglio-pagamenti {
    background: #f8f9ff;
    border-radius: 8px;
    padding: 10px 12px;
    margin: 12px 0;
    font-size: 0.9rem;
  }

  .evento-storico-movimenti {
    margin-top: 16px;
    padding-top: 12px;
    border-top: 1px solid #dfe6e9;
  }

  .evento-storico-movimenti h4 {
    font-size: 0.95rem;
    margin-bottom: 10px;
    color: var(--ph-colore-primario);
    font-weight: 600;
  }

  .evento-storico-lista {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
  }

  .evento-storico-lista li {
    font-size: 0.82rem;
    color: #636e72;
    padding: 8px 10px;
    background: #f8f9fa;
    border-radius: 6px;
    border-left: 3px solid var(--ph-colore-secondario);
  }
  
  .btn-fornitore {
    background: #74b9ff;
    color: white;
  }
  
  .btn-small {
    padding: 7px 12px;
    font-size: 0.82rem;
  }
  
  .button-group {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    align-items: center;
  }
  
  /* GRID */
  .grid-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
  }
  
  .grid-3 {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 15px;
  }
  
  /* STATS */
  .stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 15px;
    margin-bottom: 20px;
  }
  
  .stat-box {
    background: white;
    padding: 20px;
    border-radius: 12px;
    text-align: center;
    box-shadow: 0 2px 10px rgba(0,0,0,0.08);
  }
  
  .stat-box .number {
    font-size: 2rem;
    font-weight: 700;
    color: #667eea;
  }
  
  /* BADGES */
  .badge {
    display: inline-block;
    padding: 4px 10px;
    border-radius: 20px;
    font-size: 0.75rem;
    font-weight: 700;
  }
  
  .badge-preventivo {
    background: #ffeaa7;
    color: #b35c00;
  }

  .badge-confermato {
    background: #74b9ff;
    color: #0652dd;
  }

  .badge-saldato {
    background: #55efc4;
    color: #006b54;
  }

  .badge-chiuso {
    background: #dfe6e9;
    color: #636e72;
  }
  
  .badge-annullato {
    background: #ff7675;
    color: white;
  }

  .form-hint-stato {
    margin-top: 6px;
    font-size: 0.82rem;
    color: #636e72;
  }

  .evento-stato-form-row {
    margin-top: 4px;
  }
  
  /* PACCHETTI */
  .pacchetti-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
    gap: 15px;
  }
  
  .pacchetto-card {
    border: 2px solid #dfe6e9;
    border-radius: 10px;
    padding: 15px;
    cursor: pointer;
    background: white;
    transition: all 0.2s;
  }
  
  .pacchetto-card:hover {
    border-color: #667eea;
  }
  
  .pacchetto-card.selected {
    border-color: #667eea;
    background: #f0f3ff;
  }
  
  .pacchetto-card h4 {
    color: #667eea;
    margin-bottom: 8px;
  }
  
  .pacchetto-readonly-box {
    margin-top: 16px;
    padding: 14px;
    background: #f8f9fc;
    border: 1px solid #dfe6e9;
    border-radius: 10px;
  }

  .pacchetto-readonly-titolo {
    margin-bottom: 12px;
    font-size: 1rem;
    color: #2d3436;
  }

  .pacchetto-readonly-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 12px;
    margin-bottom: 12px;
  }

  .listino-readonly input[readonly] {
    background: #eef1f6;
    color: #2d3436;
    cursor: not-allowed;
    border-color: #cfd8dc;
  }

  .pacchetto-inclusi-list {
    margin: 8px 0 0 18px;
    padding: 0;
    color: #2d3436;
    line-height: 1.45;
  }

  .pacchetto-inclusi-list li {
    margin-bottom: 4px;
  }

  .pacchetto-inclusi-vuoto {
    margin: 0;
    color: #636e72;
    font-style: italic;
  }

  .card-subtitle {
    margin: -4px 0 14px;
    font-size: 0.88rem;
    color: #636e72;
    line-height: 1.4;
  }

  .listino-extra-container {
    display: flex;
    flex-direction: column;
    gap: 14px;
  }

  .listino-cat-card {
    background: #f8f9fc;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    overflow: hidden;
  }

  .listino-cat-header {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    color: #fff;
  }

  .listino-cat-header h4 {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 600;
    color: #fff;
  }

  .listino-cat-icon {
    font-size: 1.1rem;
  }

  .listino-voci {
    padding: 8px 10px 10px;
  }

  .listino-voce-row {
    display: grid;
    grid-template-columns: 1fr auto auto auto;
    gap: 12px;
    align-items: center;
    padding: 10px 8px;
    border-bottom: 1px solid #eef1f6;
  }

  .listino-voce-row:last-child {
    border-bottom: none;
  }

  .listino-voce-nome {
    font-weight: 500;
    color: #2d3436;
    font-size: 0.92rem;
  }

  .listino-prezzo-badge {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-end;
    padding: 4px 10px;
    background: #eef1f6;
    border-radius: 6px;
    font-size: 0.88rem;
    font-weight: 600;
    color: #2d3436;
    white-space: nowrap;
  }

  .listino-prezzo-badge small {
    font-weight: 400;
    font-size: 0.72rem;
    color: #636e72;
  }

  .listino-voce-qta input {
    width: 72px;
    text-align: center;
    padding: 8px;
    border: 1px solid #b2bec3;
    border-radius: 6px;
    font-size: 0.95rem;
  }

  .listino-qta-label,
  .listino-totale-label {
    display: block;
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #636e72;
    margin-bottom: 2px;
  }

  .listino-voce-totale {
    text-align: right;
    min-width: 72px;
  }

  .listino-voce-totale strong {
    color: #667eea;
    font-size: 0.95rem;
  }

  .listino-readonly-field {
    background: #eef1f6 !important;
    color: #2d3436;
    cursor: not-allowed;
    border-color: #cfd8dc;
  }

  .voci-personalizzate-vuoto {
    margin: 0 0 10px;
    padding: 12px;
    background: #f8f9fc;
    border-radius: 8px;
    color: #636e72;
    font-size: 0.88rem;
    line-height: 1.45;
  }

  .extra-listino-riepilogo {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px dashed #dfe6e9;
  }

  @media (max-width: 720px) {
    .listino-voce-row {
      grid-template-columns: 1fr 1fr;
      gap: 8px;
    }

    .listino-voce-totale {
      grid-column: 1 / -1;
      text-align: left;
    }
  }

  .contratto-dinamico {
    padding: 20px;
    font-size: 14px;
  }

  .contratto-dinamico-titolo {
    text-align: center;
    margin-bottom: 20px;
    font-size: 1.25rem;
  }

  .contratto-blocco-dinamico {
    margin-bottom: 8px;
  }

  .pacchetto-card .prezzo {
    font-size: 1.6rem;
    font-weight: 700;
    color: #00b894;
    margin-bottom: 6px;
  }
  
  /* RIGHE DINAMICHE */
  .dynamic-row {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr auto;
    gap: 10px;
    align-items: center;
    padding: 8px 0;
    border-bottom: 1px solid #dfe6e9;
  }
  
  .dynamic-row input {
    padding: 8px;
  }
  
  .fornitore-card {
    border: 2px solid #dfe6e9;
    border-radius: 8px;
    padding: 10px;
    margin-bottom: 8px;
    background: white;
  }
  
  .fornitore-card input,
  .fornitore-card select {
    margin-bottom: 7px;
  }
  
  /* TOTALI */
  .total-card {
    background: #f0f3ff;
    border-left-color: #00b894;
  }
  
  .total-card span {
    color: #00b894;
  }
  
  .riepilogo-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
    gap: 8px;
    font-weight: 600;
  }
  
  /* MODAL */
  .modal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0,0,0,0.55);
    display: none;
    justify-content: center;
    align-items: center;
    z-index: 1000;
    padding: 15px;
  }
  
  .modal-box {
    background: white;
    padding: 25px;
    border-radius: 12px;
    max-width: 700px;
    width: 95%;
    max-height: 85vh;
    overflow-y: auto;
    position: relative;
  }
  
  .close-modal {
    position: absolute;
    right: 18px;
    top: 12px;
    cursor: pointer;
    font-size: 1.2rem;
  }
  
  /* MESSAGGI */
  .msg {
    padding: 14px;
    border-radius: 8px;
    margin-bottom: 15px;
    font-weight: 600;
  }
  
  .msg-success {
    background: #55efc4;
    color: #006b54;
  }
  
  .msg-error {
    background: #ff7675;
    color: white;
  }
  
  .msg-warning,
  .msg-info {
    background: #ffeaa7;
    color: #8a6d00;
  }
  
  /* TABELLE */
  table {
    width: 100%;
    border-collapse: collapse;
  }
  
  th,
  td {
    padding: 10px;
    border-bottom: 1px solid #dfe6e9;
    text-align: left;
  }
  
  /* PRINT */
  #contratto-stampa,
  #ordine-stampa-container {
    display: none;
  }
  
  @media print {
    body:not(.print-bolla-ordine) * {
      visibility: hidden;
    }
  
    body:not(.print-bolla-ordine) #ordine-stampa-container,
    body:not(.print-bolla-ordine) #ordine-stampa-container *,
    body:not(.print-bolla-ordine) #contratto-stampa,
    body:not(.print-bolla-ordine) #contratto-stampa * {
      visibility: visible;
    }
  
    body:not(.print-bolla-ordine) #ordine-stampa-container,
    body:not(.print-bolla-ordine) #contratto-stampa {
      display: block !important;
      position: absolute;
      left: 0;
      top: 0;
      width: 100%;
    }
  }

  /* Ordini fornitori — modal + bolla A4 */
  .ordini-evento-info {
    font-weight: 600;
    margin-bottom: 8px;
  }

  .ordini-fornitori-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-top: 12px;
  }

  .ordine-fornitore-card {
    border: 1px solid #dfe6e9;
    border-radius: 8px;
    padding: 12px 14px;
    background: #fafbfc;
  }

  .ordine-fornitore-card h4 {
    margin: 0 0 10px;
    font-size: 1rem;
  }

  .ordine-fornitore-card h4 small {
    font-weight: normal;
    color: #636e72;
  }

  .ordine-fornitore-actions {
    margin: 0;
  }

  .fornitore-ordine-row,
  .prodotto-ordine-row {
    display: grid;
    grid-template-columns: 1.2fr 1fr 1fr auto 1.5fr auto;
    gap: 8px;
    align-items: center;
    margin-bottom: 8px;
  }

  .prodotto-ordine-row {
    grid-template-columns: 1.2fr 1fr 1fr 0.8fr 0.8fr 1fr 1fr auto auto;
  }

  #config .config-pane[hidden] {
    display: none !important;
  }

  #config .config-pane:not(.active) {
    display: none !important;
  }

  .bolla-ordine-a4 {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 10pt;
    color: #000;
    background: #fff;
    width: 210mm;
    max-width: 210mm;
    height: 297mm;
    max-height: 297mm;
    margin: 0 auto;
    padding: 5mm 8mm;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    page-break-inside: avoid;
    page-break-after: avoid;
  }

  .bolla-top {
    flex: 0 0 auto;
    margin: 0;
    padding: 0;
  }

  .bolla-footer {
    flex: 0 0 auto;
    margin-top: 2mm;
  }

  .bolla-header {
    text-align: right;
    margin: 0 0 2px;
    padding: 0;
  }

  .bolla-logo-img {
    max-height: 42px;
    max-width: 160px;
    object-fit: contain;
  }

  .bolla-logo-testo {
    font-size: 18pt;
    font-weight: bold;
    line-height: 1.05;
  }

  .bolla-logo-testo small {
    color: #c0392b;
    font-size: 9pt;
  }

  .bolla-intestazione {
    background: #e0e0e0;
    text-align: center;
    font-size: 7.5pt;
    line-height: 1.2;
    padding: 2px 4px;
    margin: 0 0 2px;
  }

  .bolla-consegna {
    background: #d5d5d5;
    text-align: center;
    font-weight: bold;
    font-size: 10pt;
    padding: 3px 4px;
    margin: 0 0 3px;
    letter-spacing: 0.02em;
  }

  .bolla-tabella {
    width: 100%;
    border-collapse: collapse;
    border: 2px solid #000;
    margin: 0 0 3px;
    flex: 0 0 auto;
    table-layout: fixed;
  }

  .bolla-tabella th,
  .bolla-tabella td {
    border: 1px solid #000;
    padding: 2px 4px;
    vertical-align: middle;
    box-sizing: border-box;
  }

  .bolla-riga-prodotto td,
  .bolla-riga-vuota td {
    height: 18px;
    min-height: 0;
    max-height: 18px;
    line-height: 1.1;
    font-size: 9pt;
    overflow: hidden;
  }

  .bolla-riga-vuota .bolla-col-desc,
  .bolla-riga-vuota .bolla-col-euro {
    height: 18px;
  }

  .bolla-riga-campo td {
    padding-top: 3px;
    padding-bottom: 3px;
    font-size: 9pt;
    line-height: 1.15;
  }

  .bolla-valore-campo {
    text-align: left;
    font-weight: normal;
  }

  .bolla-tabella th {
    font-weight: bold;
    text-align: center;
    background: #fff;
    font-size: 9pt;
    padding: 3px 4px;
  }

  .bolla-col-n {
    width: 8%;
    text-align: center;
  }

  .bolla-col-desc {
    width: 72%;
  }

  .bolla-col-euro {
    width: 20%;
    text-align: right;
  }

  .bolla-label {
    font-weight: bold;
  }

  .bolla-totale-row td {
    border-top: 2px solid #000;
  }

  .bolla-totale-label {
    text-align: right;
    padding-right: 8px;
  }

  .bolla-inviato {
    margin: 0 0 4px;
    font-size: 9pt;
    line-height: 1.2;
  }

  .bolla-modifiche div {
    margin-bottom: 6px;
    font-size: 9pt;
    line-height: 1.2;
  }

  .bolla-modifiche div:last-child {
    margin-bottom: 0;
  }
  
  /* MOBILE */
  @media (max-width: 768px) {
    .grid-2,
    .grid-3,
    .dynamic-row {
      grid-template-columns: 1fr;
    }
  
    .user-bar {
      flex-direction: column;
      gap: 10px;
      text-align: center;
    }
  
    .button-group {
      flex-direction: column;
      align-items: stretch;
    }
  
    .btn {
      width: 100%;
    }
  
    .tabs {
      flex-direction: column;
    }
  
    .tab {
      width: 100%;
    }
  }
/* ============================================================
   CONTRATTO STAMPA — A4 verticale, 1 pagina
   ============================================================ */

#contratto-stampa {
  display: none;
}

.contratto-wrapper {
  width: 100%;
  max-width: 100%;
}

.contratto-a4 {
  width: 210mm;
  max-width: 100%;
  padding: 4mm;
  background: #fff;
  color: #000;
  font-family: Arial, sans-serif;
  font-size: 9pt;
  line-height: 1.2;
  box-sizing: border-box;
}

.contratto-riga {
  display: flex;
  width: 100%;
}

.box {
  border: 1px solid #000;
  padding: 3px 5px;
  min-height: 0;
  box-sizing: border-box;
  vertical-align: middle;
}

.box.grande,
.box.intera {
  width: 100%;
}

.box.mezza {
  width: 50%;
}

.alto .box {
  margin-top: 4px;
}

.data-box {
  width: 45%;
  min-height: 44px;
}

.orario-box {
  width: 55%;
  min-height: 44px;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 4px;
}

.titolo-data {
  font-size: 16px;
  font-weight: bold;
  margin-right: 10px;
}

.data-linea {
  font-size: 11px;
}

.orari-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 3px;
  font-size: 8pt;
}

.fascia-serale {
  color: red;
  font-weight: bold;
  width: 88px;
  font-size: 8pt;
  flex-shrink: 0;
}

.rosso {
  color: red;
}

.avviso {
  font-size: 7.5pt;
  text-align: center;
  font-weight: bold;
  line-height: 1.15;
}

.catering-box {
  width: 50%;
  min-height: 40px;
  font-size: 8pt;
}

.note-box {
  width: 100%;
  min-height: 28px;
  font-size: 8pt;
}

.totale {
  text-align: right;
  font-weight: bold;
  font-size: 8.5pt;
}

.firma {
  margin-top: 6px;
  border: 1px solid #000;
  padding: 6px 8px;
  width: 100%;
  font-weight: bold;
  font-size: 8.5pt;
  color: red;
}

.contratto-firme {
  margin-top: 4px;
  page-break-inside: avoid;
}

.firma-box {
  min-height: 36px;
}

@media print {
  @page {
    size: A4 portrait;
    margin: 6mm;
  }

  body.print-contratto {
    width: 210mm;
    height: 297mm;
    overflow: hidden;
    margin: 0 !important;
    padding: 0 !important;
    background: #fff !important;
  }

  body.print-contratto * {
    page-break-inside: avoid;
  }

  body.print-contratto > *:not(#contratto-stampa) {
    display: none !important;
  }

  body.print-contratto #contratto-stampa,
  body.print-contratto #contratto-stampa * {
    visibility: visible !important;
  }

  body.print-contratto #contratto-stampa {
    display: block !important;
    position: fixed !important;
    left: 0 !important;
    top: 0 !important;
    width: 210mm !important;
    height: 297mm !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    page-break-after: avoid !important;
    page-break-inside: avoid !important;
    background: #fff !important;
    box-sizing: border-box !important;
  }

  body.print-contratto .contratto-wrapper {
    width: 100% !important;
    max-width: 100% !important;
    height: 100% !important;
    overflow: hidden !important;
  }

  body.print-contratto .contratto-a4 {
    width: 100% !important;
    max-width: 100% !important;
    min-height: 0 !important;
    height: auto !important;
    max-height: 285mm !important;
    padding: 1.5mm 2mm !important;
    font-size: 7.5pt !important;
    line-height: 1.12 !important;
    overflow: hidden !important;
    page-break-after: avoid !important;
    page-break-inside: avoid !important;
    box-sizing: border-box !important;
  }

  body.print-contratto .box {
    padding: 2px 4px !important;
    vertical-align: middle !important;
  }

  body.print-contratto .data-box,
  body.print-contratto .orario-box {
    min-height: 0 !important;
    height: auto !important;
  }

  body.print-contratto .catering-box,
  body.print-contratto .note-box {
    min-height: 0 !important;
  }

  body.print-contratto .firma,
  body.print-contratto .contratto-firme {
    margin-top: 4px !important;
    padding: 4px 6px !important;
    page-break-inside: avoid !important;
  }

  body.print-contratto .titolo-data {
    font-size: 13px !important;
  }

  body.print-contratto .orari-grid {
    font-size: 7pt !important;
    gap: 2px !important;
  }

  body.print-contratto .avviso {
    font-size: 6.8pt !important;
  }
}

.ph-input-importo-euro {
  font-variant-numeric: tabular-nums;
}

  .config-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 16px;
  }

  .config-tab {
    padding: 10px 16px;
    border: 1px solid #dfe6e9;
    border-radius: 8px;
    background: #fff;
    cursor: pointer;
    font-size: 0.95rem;
  }

  .config-tab.active {
    background: var(--ph-colore-primario);
    color: var(--ph-testo-su-primario, #fff);
    border-color: var(--ph-colore-primario);
  }

  #config .config-pane {
    display: none !important;
  }

  #config .config-pane.active {
    display: block !important;
  }

  .brand-preset-row {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 12px 0;
  }

  .config-brand-anteprima {
    margin: 14px 0;
    padding: 24px 16px;
    border-radius: 10px;
    text-align: center;
    font-weight: 600;
    min-height: 72px;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .config-brand-avviso {
    color: #e17055;
    font-size: 0.9rem;
    margin-bottom: 8px;
  }

  .config-listino-editor {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 10px;
  }

  .config-listino-row {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr auto auto;
    gap: 8px;
    align-items: center;
    padding: 8px;
    background: #f8f9fa;
    border-radius: 8px;
  }

  .config-listino-row[data-tipo="pacchetti"] {
    grid-template-columns: 1.5fr 1fr 0.8fr 0.8fr auto auto;
  }

  .config-listino-row[data-tipo="torte"] {
    grid-template-columns: 2fr 1fr auto;
  }

  .config-listino-row[data-tipo="catering"],
  .config-listino-row[data-tipo="panini"],
  .config-listino-row[data-tipo="extra"],
  .config-listino-row[data-tipo="spettacoli"] {
    grid-template-columns: 2fr 1fr auto auto;
  }

  .config-legacy-details summary {
    cursor: pointer;
    font-weight: 600;
  }

  .btn-secondary {
    background: #636e72;
    color: #fff;
  }

  .config-form-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 14px;
  }

  .config-form-grid .wide {
    grid-column: 1 / -1;
  }

  .config-placeholder-card {
    border-left: 4px solid var(--ph-colore-primario);
  }

  .config-status-msg {
    margin-top: 12px;
    color: #636e72;
    font-size: 0.9rem;
  }

  .config-actions {
    margin-top: 20px;
  }

  .config-tools-actions {
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 14px;
  }

  .config-backup-status {
    margin-top: 14px;
    font-size: 0.9rem;
    color: #636e72;
  }

  .pagamenti-evento-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
  }

  @media (max-width: 700px) {
    .pagamenti-evento-grid,
    .config-form-grid {
      grid-template-columns: 1fr;
    }
  }

      .extra-contratto-card {
        background: #f8f9ff;
        border-left: 4px solid #667eea;
      }
      
      .extra-contratto-card h3 {
        margin-bottom: 18px;
        color: #2d3436;
      }
      
      .extra-contratto-grid {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        gap: 14px;
        align-items: end;
      }
      
      .extra-contratto-grid .wide {
        grid-column: span 2;
      }
      
      .extra-contratto-grid input {
        height: 44px;
      }
      
      #preventivo-contratto {
        background: #eafaf1;
        font-weight: 700;
        color: #00b894;
      }
      
      @media (max-width: 900px) {
        .extra-contratto-grid {
          grid-template-columns: 1fr 1fr;
        }
      
        .extra-contratto-grid .wide {
          grid-column: span 2;
        }
      }
      
      @media (max-width: 600px) {
        .extra-contratto-grid {
          grid-template-columns: 1fr;
        }
      
        .extra-contratto-grid .wide {
          grid-column: span 1;
        }
      }
  }

  .extra-evento-row {
    grid-template-columns: 1fr 1.5fr 0.7fr 0.7fr auto;
  }

  .extra-categoria-select {
    min-width: 0;
  }

  .btn-whatsapp-modifica {
    background: #128c7e;
  }

  .config-template-label {
    display: block;
    font-weight: 600;
    margin: 12px 0 6px;
  }

  .config-template-label:first-of-type {
    margin-top: 0;
  }

  .config-template-wa {
    width: 100%;
    min-height: 180px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.85rem;
    line-height: 1.45;
    padding: 10px 12px;
    border: 1px solid #dfe6e9;
    border-radius: 6px;
    box-sizing: border-box;
    resize: vertical;
  }

  .config-template-wa:focus {
    outline: none;
    border-color: #667eea;
    box-shadow: 0 0 0 2px rgba(102, 126, 234, 0.15);
  }

  /* Stampa bolla ordine — 1 foglio A4, layout compatto modulo cartaceo */
  @media print {
    @page {
      size: A4 portrait;
      margin: 0;
    }

    body.print-bolla-ordine {
      margin: 0 !important;
      padding: 0 !important;
      width: 210mm !important;
      height: 297mm !important;
      overflow: hidden !important;
    }

    body.print-bolla-ordine > *:not(#ordine-stampa-container) {
      display: none !important;
    }

    body.print-bolla-ordine #ordine-stampa-container,
    body.print-bolla-ordine #ordine-stampa-container * {
      visibility: visible !important;
    }

    body.print-bolla-ordine #ordine-stampa-container {
      display: block !important;
      position: fixed !important;
      left: 0 !important;
      top: 0 !important;
      width: 210mm !important;
      height: 297mm !important;
      margin: 0 !important;
      padding: 0 !important;
      overflow: hidden !important;
      page-break-after: avoid !important;
      page-break-inside: avoid !important;
      background: #fff !important;
      box-sizing: border-box !important;
    }

    body.print-bolla-ordine .bolla-ordine-a4 {
      width: 210mm !important;
      height: 297mm !important;
      max-height: 297mm !important;
      min-height: 0 !important;
      margin: 0 !important;
      padding: 5mm 8mm !important;
      box-sizing: border-box !important;
      page-break-after: avoid !important;
      page-break-inside: avoid !important;
      overflow: hidden !important;
      background: #fff !important;
      display: flex !important;
      flex-direction: column !important;
    }

    body.print-bolla-ordine .bolla-top {
      margin: 0 !important;
      padding: 0 !important;
    }

    body.print-bolla-ordine .bolla-tabella {
      margin-top: 0 !important;
      page-break-inside: avoid !important;
    }

    body.print-bolla-ordine .bolla-riga-prodotto td,
    body.print-bolla-ordine .bolla-riga-vuota td {
      height: 18px !important;
      max-height: 18px !important;
      min-height: 0 !important;
      padding: 1px 3px !important;
    }

    body.print-bolla-ordine .bolla-footer,
    body.print-bolla-ordine .bolla-inviato,
    body.print-bolla-ordine .bolla-modifiche {
      page-break-inside: avoid !important;
    }
  }

  /* ============================================================
     Modulo pubblico Laboratorio — SD OPERIS Apple UI v2
     ============================================================ */
  html.public-laboratorio-boot body > *:not(#laboratorio-public-page):not(script),
  body.public-laboratorio-mode > *:not(#laboratorio-public-page):not(script),
  body.public-laboratorio-mode .ph-public-lab-hidden {
    display: none !important;
    visibility: hidden !important;
    height: 0 !important;
    max-height: 0 !important;
    overflow: hidden !important;
    pointer-events: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
  }

  html.public-laboratorio-boot #laboratorio-public-page,
  body.public-laboratorio-mode #laboratorio-public-page {
    display: block !important;
    visibility: visible !important;
    min-height: 100vh;
    width: 100%;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    pointer-events: auto !important;
    position: relative;
    z-index: 1;
  }

  body.public-laboratorio-mode #laboratorio-public-page.hidden {
    display: block !important;
  }

  body.public-laboratorio-mode,
  html.public-laboratorio-boot body {
    min-height: 100vh;
    margin: 0;
    overflow-x: hidden;
    font-family:
      -apple-system,
      BlinkMacSystemFont,
      "SF Pro Display",
      "Segoe UI",
      sans-serif;
    background: linear-gradient(
      180deg,
      #050b16 0%,
      #081322 45%,
      #0c1b2c 100%
    );
    color: #e8edf5;
  }

  body.laboratorio-public-mode {
    min-height: 100vh;
  }

  body.laboratorio-public-mode .laboratorio-public-page {
    display: block;
    min-height: 100vh;
    padding: 0;
    position: relative;
    isolation: isolate;
  }

  #laboratorio-public-page .lab-public-bg-glow {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    background:
      radial-gradient(ellipse 80% 50% at 20% 10%, rgba(34, 184, 255, 0.14), transparent 55%),
      radial-gradient(ellipse 60% 40% at 85% 25%, rgba(124, 255, 79, 0.08), transparent 50%),
      radial-gradient(ellipse 70% 45% at 50% 100%, rgba(34, 184, 255, 0.1), transparent 55%);
  }

  #laboratorio-public-page .laboratorio-public-wrap {
    position: relative;
    z-index: 1;
    max-width: 1000px;
    margin: 0 auto;
    padding: 24px 20px 48px;
  }

  #laboratorio-public-page .laboratorio-public-wrap:has(#lab-portale-ordine-wrap:not(.hidden)) {
    max-width: none;
    padding: 0;
  }

  #laboratorio-public-page .laboratorio-public-header {
    text-align: center;
    margin-bottom: 28px;
    padding: 8px 12px 0;
    background: none;
    border: none;
  }

  #laboratorio-public-page .lab-public-logo {
    width: 96px;
    height: auto;
    margin: 0 auto 12px;
    display: block;
    object-fit: contain;
  }

  #laboratorio-public-page .lab-public-brand {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 800;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #f8fafc;
  }

  #laboratorio-public-page .lab-public-brand-sub {
    margin: 4px 0 20px;
    font-size: 18px;
    opacity: 0.75;
    color: #94a3b8;
  }

  #laboratorio-public-page .lab-public-title {
    margin: 0 0 8px;
    font-size: clamp(2rem, 6vw, 48px);
    font-weight: 800;
    letter-spacing: -0.02em;
    color: #fff;
    line-height: 1.1;
  }

  #laboratorio-public-page .laboratorio-public-subtitle {
    margin: 0;
    font-size: 18px;
    opacity: 0.75;
    color: #94a3b8;
  }

  #laboratorio-public-page .laboratorio-public-glass-card {
    background: rgba(18, 27, 42, 0.88);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(34, 184, 255, 0.18);
    border-radius: 28px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
    padding: 36px;
  }

  #laboratorio-public-page .laboratorio-public-panel {
    margin-bottom: 24px;
  }

  #laboratorio-public-page .lab-public-form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px 20px;
    margin-bottom: 28px;
  }

  #laboratorio-public-page .lab-field-full {
    grid-column: 1 / -1;
  }

  #laboratorio-public-page .lab-ordine-form .lab-field {
    margin-bottom: 0;
  }

  #laboratorio-public-page .lab-ordine-form label {
    display: block;
    font-size: 0.82rem;
    font-weight: 600;
    color: #94a3b8;
    margin-bottom: 8px;
    letter-spacing: 0.02em;
  }

  #laboratorio-public-page .lab-required {
    color: #7cff4f;
  }

  #laboratorio-public-page .lab-ordine-form input[type="text"],
  #laboratorio-public-page .lab-ordine-form input[type="tel"],
  #laboratorio-public-page .lab-ordine-form input[type="number"],
  #laboratorio-public-page .lab-ordine-form input[type="datetime-local"],
  #laboratorio-public-page .lab-ordine-form select,
  #laboratorio-public-page .lab-ordine-form textarea {
    width: 100%;
    min-height: 56px;
    padding: 14px 16px;
    font-size: 1rem;
    border: 1px solid rgba(34, 184, 255, 0.12);
    border-radius: 16px;
    background: #11192b;
    color: #f1f5f9;
    box-sizing: border-box;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
  }

  #laboratorio-public-page .lab-ordine-form textarea {
    min-height: 96px;
    resize: vertical;
  }

  #laboratorio-public-page .lab-ordine-form input::placeholder,
  #laboratorio-public-page .lab-ordine-form textarea::placeholder {
    color: #64748b;
  }

  #laboratorio-public-page .lab-ordine-form input:focus,
  #laboratorio-public-page .lab-ordine-form select:focus,
  #laboratorio-public-page .lab-ordine-form textarea:focus {
    outline: none;
    border-color: #22b8ff;
    box-shadow: 0 0 0 3px rgba(34, 184, 255, 0.15);
  }

  #laboratorio-public-page .lab-qty-row {
    display: flex;
    align-items: stretch;
    gap: 10px;
  }

  #laboratorio-public-page .lab-qty-row input {
    flex: 1;
    text-align: center;
    font-weight: 700;
    min-height: 56px;
  }

  #laboratorio-public-page .lab-qty-btn {
    width: 50px;
    height: 50px;
    min-height: 50px;
    flex-shrink: 0;
    align-self: center;
    border: 1px solid rgba(34, 184, 255, 0.15);
    border-radius: 14px;
    background: #192338;
    color: #f8fafc;
    font-size: 1.5rem;
    line-height: 1;
    cursor: pointer;
    transition: background 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;
  }

  #laboratorio-public-page .lab-qty-btn:hover {
    background: linear-gradient(135deg, #7cff4f, #22b8ff);
    color: #050b16;
    box-shadow: 0 4px 16px rgba(34, 184, 255, 0.35);
  }

  #laboratorio-public-page .lab-section-title {
    margin: 0 0 6px;
    font-size: 1.35rem;
    font-weight: 700;
    color: #f8fafc;
  }

  #laboratorio-public-page .lab-section-subtitle {
    margin: 0 0 20px;
    font-size: 0.95rem;
    opacity: 0.75;
    color: #94a3b8;
  }

  #laboratorio-public-page .lab-articoli-section {
    margin-bottom: 28px;
  }

  #laboratorio-public-page .lab-articoli-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 14px;
    margin-bottom: 8px;
  }

  #laboratorio-public-page .lab-articoli-empty {
    grid-column: 1 / -1;
    text-align: center;
    color: #64748b;
    font-size: 0.9rem;
    padding: 24px;
  }

  #laboratorio-public-page .lab-articolo-select-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
  }

  #laboratorio-public-page .lab-articolo-card {
    position: relative;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 190px;
    min-height: 260px;
    margin: 0 auto;
    padding: 0;
    border: 1px solid rgba(34, 184, 255, 0.12);
    border-radius: 18px;
    background: #11192b;
    color: #e2e8f0;
    cursor: pointer;
    text-align: left;
    overflow: hidden;
    transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.15s ease;
  }

  #laboratorio-public-page .lab-articolo-card:hover {
    border-color: rgba(34, 184, 255, 0.35);
    transform: translateY(-2px);
  }

  #laboratorio-public-page .lab-articolo-card.selected {
    border-color: #7cff4f;
    box-shadow:
      0 0 0 1px rgba(124, 255, 79, 0.5),
      0 8px 28px rgba(124, 255, 79, 0.2);
  }

  #laboratorio-public-page .lab-articolo-card-check {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: linear-gradient(135deg, #7cff4f, #22b8ff);
    color: #050b16;
    font-size: 0.85rem;
    font-weight: 800;
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 2;
  }

  #laboratorio-public-page .lab-articolo-card.selected .lab-articolo-card-check {
    display: flex;
  }

  #laboratorio-public-page .lab-articolo-card-img {
    height: 120px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(8, 12, 22, 0.55);
    border-bottom: 1px solid rgba(34, 184, 255, 0.08);
    overflow: hidden;
    border-radius: 18px 18px 0 0;
    padding: 10px;
    box-sizing: border-box;
  }

  #laboratorio-public-page .lab-articolo-card-photo {
    width: 100%;
    height: 100%;
    max-height: 110px;
    object-fit: contain;
    display: block;
  }

  #laboratorio-public-page .lab-articolo-card-icon {
    font-size: 2.2rem;
    font-weight: 800;
    color: #22b8ff;
    text-shadow: 0 0 24px rgba(34, 184, 255, 0.4);
  }

  #laboratorio-public-page .lab-articolo-card-body {
    flex: 1;
    padding: 12px 14px 14px;
    display: flex;
    flex-direction: column;
    gap: 4px;
  }

  #laboratorio-public-page .lab-articolo-card-title {
    margin: 0;
    font-size: 0.92rem;
    font-weight: 700;
    color: #f8fafc;
    line-height: 1.25;
  }

  #laboratorio-public-page .lab-articolo-card-desc {
    margin: 0;
    font-size: 0.78rem;
    color: #94a3b8;
    line-height: 1.35;
    flex: 1;
  }

  #laboratorio-public-page .lab-articolo-card-prezzo {
    margin: 6px 0 0;
    font-size: 0.85rem;
    font-weight: 700;
    color: #7cff4f;
  }

  #laboratorio-public-page .lab-upload-row {
    display: block;
    margin-bottom: 16px;
  }

  #laboratorio-public-page .lab-upload-row-compact {
    margin-top: 4px;
  }

  #laboratorio-public-page .lab-upload-dropzone {
    position: relative;
    border: 1.5px dashed rgba(34, 184, 255, 0.28);
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.02);
    padding: 14px 16px 10px;
    text-align: center;
    transition: border-color 0.2s ease, background 0.2s ease;
    min-height: 96px;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }

  #laboratorio-public-page .lab-upload-dropzone.is-dragover {
    border-color: #22b8ff;
    background: rgba(34, 184, 255, 0.08);
  }

  #laboratorio-public-page .lab-upload-dropzone input[type="file"] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
    z-index: 2;
  }

  #laboratorio-public-page .lab-upload-dropzone-inner {
    pointer-events: none;
    position: relative;
    z-index: 1;
  }

  #laboratorio-public-page .lab-upload-icon {
    font-size: 1.5rem;
    display: block;
    margin-bottom: 4px;
    filter: grayscale(0.2);
  }

  #laboratorio-public-page .lab-upload-title {
    margin: 0 0 2px;
    font-size: 0.92rem;
    font-weight: 700;
    color: #f1f5f9;
  }

  #laboratorio-public-page .lab-upload-hint {
    margin: 0 0 4px;
    font-size: 0.8rem;
    color: #94a3b8;
  }

  #laboratorio-public-page .lab-upload-formats {
    margin: 0;
    font-size: 0.72rem;
    color: #64748b;
  }

  #laboratorio-public-page .lab-file-info {
    position: relative;
    z-index: 3;
    font-size: 0.82rem;
    color: #7cff4f;
    margin: 12px 0 0;
    word-break: break-all;
  }

  #laboratorio-public-page .lab-file-info-error {
    color: #f87171;
  }

  #laboratorio-public-page .lab-portale-auth-form {
    max-width: 420px;
    margin: 0 auto;
    padding: 0 8px 8px;
  }

  #laboratorio-public-page .lab-portale-auth-form .lab-field {
    margin-bottom: 18px;
  }

  #laboratorio-public-page .lab-portale-auth-form label {
    display: block;
    font-size: 0.82rem;
    font-weight: 600;
    color: #94a3b8;
    margin-bottom: 8px;
    letter-spacing: 0.02em;
  }

  #laboratorio-public-page .lab-portale-auth-form input[type="text"],
  #laboratorio-public-page .lab-portale-auth-form input[type="password"],
  #laboratorio-public-page .lab-portale-auth-form input[type="email"] {
    width: 100%;
    box-sizing: border-box;
    padding: 14px 16px;
    border-radius: 14px;
    border: 1px solid rgba(34, 184, 255, 0.18);
    background: rgba(8, 12, 22, 0.72);
    color: #f1f5f9;
    font-size: 1rem;
  }

  #laboratorio-public-page .lab-portale-auth-form input:focus {
    outline: none;
    border-color: #22b8ff;
    box-shadow: 0 0 0 3px rgba(34, 184, 255, 0.12);
  }

  #laboratorio-public-page .lab-portale-link-btn {
    display: block;
    width: 100%;
    margin-top: 14px;
    background: transparent;
    border: none;
    color: #22b8ff;
    font-size: 0.92rem;
    cursor: pointer;
    text-align: center;
    padding: 8px;
  }

  #laboratorio-public-page .lab-portale-link-btn:hover {
    color: #7cff4f;
  }

  #laboratorio-public-page .lab-form-message {
    font-size: 0.88rem;
    margin: 0 0 14px;
    padding: 10px 12px;
    border-radius: 12px;
    text-align: center;
  }

  #laboratorio-public-page .lab-form-error {
    color: #fecaca;
    background: rgba(248, 113, 113, 0.12);
    border: 1px solid rgba(248, 113, 113, 0.25);
  }

  #laboratorio-public-page .lab-form-success {
    color: #bbf7d0;
    background: rgba(124, 255, 79, 0.08);
    border: 1px solid rgba(124, 255, 79, 0.2);
  }

  #laboratorio-public-page .lab-portale-auth-header {
    margin-bottom: 28px;
  }

  #laboratorio-public-page #lab-portale-ordine-header {
    position: relative;
    padding-bottom: 8px;
  }

  #laboratorio-public-page .lab-portale-user-bar {
    margin: 8px 0 0;
    font-size: 0.88rem;
    color: #94a3b8;
  }

  #laboratorio-public-page .lab-portale-logout-btn {
    position: absolute;
    top: 0;
    right: 0;
  }

  #laboratorio-public-page .lab-portale-account-summary {
    grid-column: 1 / -1;
    padding: 14px 16px;
    border-radius: 14px;
    background: rgba(34, 184, 255, 0.06);
    border: 1px solid rgba(34, 184, 255, 0.14);
    color: #cbd5e1;
    font-size: 0.92rem;
    line-height: 1.5;
  }

  #laboratorio-public-page .lab-portale-account-summary strong {
    color: #f1f5f9;
  }

  #laboratorio-public-page .lab-cascade-section {
    margin-top: 8px;
  }

  #laboratorio-public-page .lab-cascade-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
  }

  #laboratorio-public-page .lab-cascade-grid select {
    width: 100%;
    box-sizing: border-box;
    padding: 12px 14px;
    border-radius: 14px;
    border: 1px solid rgba(34, 184, 255, 0.18);
    background: rgba(8, 12, 22, 0.72);
    color: #f1f5f9;
    font-size: 0.95rem;
  }

  #laboratorio-public-page .lab-portale-storico-panel {
    margin-bottom: 18px;
  }

  #laboratorio-public-page .lab-portale-storico-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 20px;
    margin-bottom: 14px;
  }

  #laboratorio-public-page .lab-storico-stat {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 120px;
  }

  #laboratorio-public-page .lab-storico-stat-label {
    font-size: 0.78rem;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 0.04em;
  }

  #laboratorio-public-page .lab-storico-ultimo {
    width: 100%;
    margin: 0;
    color: #cbd5e1;
    font-size: 0.92rem;
  }

  #laboratorio-public-page .lab-storico-ordini-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
  }

  #laboratorio-public-page .lab-storico-ordini-list li {
    padding: 10px 12px;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid rgba(34, 184, 255, 0.1);
    font-size: 0.88rem;
    color: #cbd5e1;
  }

  #laboratorio-public-page .lab-storico-data {
    color: #94a3b8;
    margin-right: 6px;
  }

  #laboratorio-public-page .lab-storico-stato {
    color: #7cff4f;
    font-size: 0.8rem;
  }

  /* ── Portale cliente v2.1 — area personale ── */
  #laboratorio-public-page .lab-portale-shell {
    display: flex;
    min-height: 100vh;
    position: relative;
  }

  #laboratorio-public-page .lab-portale-sidebar-backdrop {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
    z-index: 120;
  }

  #laboratorio-public-page .lab-portale-sidebar {
    width: 260px;
    flex-shrink: 0;
    background: #0f1722;
    border-right: 1px solid #203744;
    padding: 20px 14px;
    display: flex;
    flex-direction: column;
    gap: 16px;
    position: sticky;
    top: 0;
    align-self: flex-start;
    min-height: 100vh;
    z-index: 130;
  }

  #laboratorio-public-page .lab-portale-sidebar-brand {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 6px 12px;
    border-bottom: 1px solid #203744;
  }

  #laboratorio-public-page .lab-portale-sidebar-logo {
    border-radius: 12px;
  }

  #laboratorio-public-page .lab-portale-sidebar-title {
    display: block;
    color: #f1f5f9;
    font-size: 1rem;
  }

  #laboratorio-public-page .lab-portale-sidebar-sub {
    display: block;
    color: #94a3b8;
    font-size: 0.78rem;
  }

  #laboratorio-public-page .lab-portale-user-bar {
    margin: 0;
    padding: 8px 10px;
    border-radius: 10px;
    background: rgba(34, 184, 255, 0.08);
    border: 1px solid rgba(34, 184, 255, 0.16);
    color: #cbd5e1;
    font-size: 0.82rem;
    line-height: 1.4;
  }

  #laboratorio-public-page .lab-portale-nav {
    display: flex;
    flex-direction: column;
    gap: 6px;
  }

  #laboratorio-public-page .lab-portale-nav-btn {
    width: 100%;
    text-align: left;
    padding: 11px 14px;
    border-radius: 12px;
    border: 1px solid transparent;
    background: transparent;
    color: #cbd5e1;
    font-size: 0.92rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
  }

  #laboratorio-public-page .lab-portale-nav-btn:hover,
  #laboratorio-public-page .lab-portale-nav-btn.active {
    background: rgba(34, 184, 255, 0.1);
    border-color: rgba(34, 184, 255, 0.22);
    color: #f1f5f9;
  }

  #laboratorio-public-page .lab-portale-nav-logout {
    margin-top: auto;
    color: #fca5a5;
  }

  #laboratorio-public-page .lab-portale-main {
    flex: 1;
    min-width: 0;
    padding: 16px 20px 28px;
  }

  #laboratorio-public-page .lab-portale-mobile-header {
    display: none;
    align-items: center;
    gap: 12px;
    margin-bottom: 14px;
  }

  #laboratorio-public-page .lab-portale-nav-toggle {
    width: 42px;
    height: 42px;
    border-radius: 12px;
    border: 1px solid #203744;
    background: #132733;
    color: #f1f5f9;
    font-size: 1.2rem;
    cursor: pointer;
  }

  #laboratorio-public-page .lab-portale-mobile-title {
    color: #f1f5f9;
    font-weight: 700;
    font-size: 1.05rem;
  }

  #laboratorio-public-page .lab-portale-section-header {
    margin-bottom: 18px;
  }

  #laboratorio-public-page .lab-portale-page-title {
    margin: 0 0 6px;
    color: #f1f5f9;
    font-size: 1.45rem;
  }

  #laboratorio-public-page .lab-portale-page-sub {
    margin: 0;
    color: #94a3b8;
    font-size: 0.92rem;
  }

  #laboratorio-public-page .lab-portale-kpi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 12px;
    margin-bottom: 16px;
  }

  #laboratorio-public-page .lab-portale-kpi-card,
  #laboratorio-public-page .lab-portale-dash-card {
    background: #132733;
    border: 1px solid #203744;
    border-radius: 16px;
    padding: 16px;
  }

  #laboratorio-public-page .lab-portale-kpi-card strong {
    display: block;
    margin-top: 6px;
    color: #f1f5f9;
    font-size: 1.25rem;
  }

  #laboratorio-public-page .lab-portale-kpi-label {
    color: #94a3b8;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
  }

  #laboratorio-public-page .lab-portale-dash-card-title {
    margin: 0 0 12px;
    color: #cbd5e1;
    font-size: 0.95rem;
  }

  #laboratorio-public-page .lab-portale-dash-actions {
    margin-top: 16px;
  }

  #laboratorio-public-page .lab-portale-form-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 14px;
    padding: 12px;
    border-radius: 14px;
    background: #132733;
    border: 1px solid #203744;
  }

  #laboratorio-public-page .lab-portale-step-hidden {
    display: none !important;
  }

  #laboratorio-public-page .lab-portale-ordini-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 14px;
  }

  #laboratorio-public-page .lab-portale-ordine-card {
    background: #132733;
    border: 1px solid #203744;
    border-radius: 16px;
    padding: 16px;
  }

  #laboratorio-public-page .lab-portale-ordine-card.is-compact {
    padding: 12px 14px;
  }

  #laboratorio-public-page .lab-portale-card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 10px;
  }

  #laboratorio-public-page .lab-portale-card-id {
    color: #22b8ff;
    font-size: 0.92rem;
  }

  #laboratorio-public-page .lab-portale-card-row {
    margin: 0 0 6px;
    color: #cbd5e1;
    font-size: 0.88rem;
    line-height: 1.45;
  }

  #laboratorio-public-page .lab-portale-card-lbl {
    color: #94a3b8;
  }

  #laboratorio-public-page .lab-portale-card-importo {
    margin: 10px 0 0;
    color: #7cff4f;
    font-weight: 700;
    font-size: 1rem;
  }

  #laboratorio-public-page .lab-portale-badge-stato {
    display: inline-block;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
  }

  #laboratorio-public-page .lab-portale-badge-stato.is-nuovo {
    background: rgba(34, 184, 255, 0.15);
    color: #22b8ff;
  }

  #laboratorio-public-page .lab-portale-badge-stato.is-lavorazione {
    background: rgba(251, 191, 36, 0.15);
    color: #fbbf24;
  }

  #laboratorio-public-page .lab-portale-badge-stato.is-pronto {
    background: rgba(124, 255, 79, 0.15);
    color: #7cff4f;
  }

  #laboratorio-public-page .lab-portale-badge-stato.is-consegnato {
    background: rgba(148, 163, 184, 0.15);
    color: #94a3b8;
  }

  #laboratorio-public-page .lab-portale-badge-stato.is-annullato {
    background: rgba(239, 68, 68, 0.15);
    color: #fca5a5;
  }

  #laboratorio-public-page .lab-portale-filters {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 12px;
    margin-bottom: 16px;
    padding: 14px;
    border-radius: 14px;
    background: #132733;
    border: 1px solid #203744;
  }

  #laboratorio-public-page .lab-portale-empty {
    color: #94a3b8;
    font-size: 0.92rem;
    margin: 8px 0;
  }

  #laboratorio-public-page .lab-portale-profilo-dl {
    display: grid;
    grid-template-columns: 140px 1fr;
    gap: 10px 16px;
    margin: 0;
  }

  #laboratorio-public-page .lab-portale-profilo-dl dt {
    color: #94a3b8;
    font-size: 0.85rem;
  }

  #laboratorio-public-page .lab-portale-profilo-dl dd {
    margin: 0;
    color: #f1f5f9;
    font-size: 0.92rem;
  }

  #laboratorio-public-page .lab-success-title {
    margin: 0 0 14px;
    color: #7cff4f;
    font-size: 1.35rem;
  }

  #laboratorio-public-page .lab-portale-success-card {
    background: #132733;
    border: 1px solid #203744;
    border-radius: 16px;
    padding: 16px;
    margin-bottom: 16px;
  }

  #laboratorio-public-page .lab-portale-success-dl {
    display: grid;
    grid-template-columns: 160px 1fr;
    gap: 10px 14px;
    margin: 0;
  }

  #laboratorio-public-page .lab-portale-success-dl dt {
    color: #94a3b8;
    font-size: 0.85rem;
  }

  #laboratorio-public-page .lab-portale-success-dl dd {
    margin: 0;
    color: #f1f5f9;
    font-size: 0.92rem;
  }

  #laboratorio-public-page .lab-success-actions {
    display: flex;
    flex-direction: column;
    gap: 10px;
  }

  #laboratorio-public-page .lab-portale-footer {
    margin-top: 24px;
  }

  #laboratorio-public-page .lab-portale-sidebar-brand-text {
    padding: 4px 6px 14px;
  }

  #laboratorio-public-page .lab-portale-sidebar-powered {
    margin-top: auto;
    padding: 14px 8px 4px;
    border-top: 1px solid #203744;
  }

  #laboratorio-public-page .lab-portale-powered-label {
    display: block;
    color: #64748b;
    font-size: 0.72rem;
    letter-spacing: 0.02em;
  }

  #laboratorio-public-page .lab-portale-powered-sub {
    display: block;
    color: #475569;
    font-size: 0.68rem;
    margin-top: 2px;
  }

  #laboratorio-public-page .lab-portale-user-lbl {
    display: block;
    color: #94a3b8;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 4px;
  }

  #laboratorio-public-page .lab-portale-user-name {
    display: block;
    color: #f8fafc;
    font-size: 0.95rem;
    font-weight: 700;
    line-height: 1.3;
  }

  #laboratorio-public-page .lab-portale-shell {
    background: #07131b;
  }

  #laboratorio-public-page .lab-portale-main {
    background: #07131b;
  }

  #laboratorio-public-page .lab-portale-dash-brand-wrap {
    text-align: center;
    margin: 20px auto 28px;
  }

  #laboratorio-public-page .lab-portale-dash-logo {
    display: block;
    max-width: 520px;
    width: 100%;
    height: auto;
    margin: 0 auto;
    object-fit: contain;
  }

  #laboratorio-public-page .lab-portale-dash-header {
    text-align: center;
    margin-bottom: 22px;
  }

  #laboratorio-public-page .lab-portale-kpi-grid-v3 {
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 14px;
    margin-bottom: 20px;
  }

  #laboratorio-public-page .lab-portale-kpi-card-v3 {
    position: relative;
    background: #132733;
    border: 1px solid #203744;
    border-radius: 16px;
    padding: 18px 16px 14px;
    overflow: hidden;
  }

  #laboratorio-public-page .lab-portale-kpi-card-v3::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: linear-gradient(90deg, #14b8a6, #38bdf8);
    opacity: 0.85;
  }

  #laboratorio-public-page .lab-portale-kpi-accent-green::before {
    background: #22c55e;
  }

  #laboratorio-public-page .lab-portale-kpi-accent-amber::before {
    background: #f59e0b;
  }

  #laboratorio-public-page .lab-portale-kpi-accent-sky::before {
    background: #38bdf8;
  }

  #laboratorio-public-page .lab-portale-kpi-accent-slate::before {
    background: #64748b;
  }

  #laboratorio-public-page .lab-portale-kpi-icon {
    display: block;
    font-size: 1.1rem;
    margin-bottom: 10px;
    opacity: 0.9;
  }

  #laboratorio-public-page .lab-portale-kpi-value {
    display: block;
    color: #f8fafc;
    font-size: 1.55rem;
    font-weight: 700;
    line-height: 1.15;
    margin-bottom: 6px;
    word-break: break-word;
  }

  #laboratorio-public-page .lab-portale-kpi-card-v3 .lab-portale-kpi-label {
    display: block;
    color: #94a3b8;
    font-size: 0.76rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin: 0;
  }

  #laboratorio-public-page .lab-portale-kpi-sub {
    display: block;
    margin-top: 6px;
    color: #64748b;
    font-size: 0.72rem;
    line-height: 1.35;
  }

  #laboratorio-public-page .lab-portale-kpi-articolo {
    display: block;
    margin: 2px 0 4px;
    font-size: 0.78rem;
    font-weight: 500;
    color: #94a3b8;
    line-height: 1.25;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  #laboratorio-public-page .lab-portale-kpi-value-ordine {
    font-size: 1.15rem;
  }

  #laboratorio-public-page .lab-portale-profilo-articolo {
    display: block;
    margin-top: 4px;
    font-size: 0.78rem;
    font-weight: 500;
    color: #94a3b8;
  }

  #laboratorio-public-page .lab-portale-dash-welcome {
    background: linear-gradient(135deg, #132733 0%, #11222d 100%);
    border: 1px solid #203744;
    border-radius: 18px;
    padding: 22px 24px;
    margin-bottom: 20px;
  }

  #laboratorio-public-page .lab-portale-welcome-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    flex-wrap: wrap;
  }

  #laboratorio-public-page .lab-portale-welcome-title {
    margin: 0 0 8px;
    color: #f8fafc;
    font-size: 1.35rem;
    font-weight: 700;
  }

  #laboratorio-public-page .lab-portale-welcome-text {
    margin: 0;
    color: #94a3b8;
    font-size: 0.95rem;
    line-height: 1.55;
    max-width: 52ch;
  }

  #laboratorio-public-page .lab-portale-welcome-btn {
    flex-shrink: 0;
    background: linear-gradient(90deg, #14b8a6, #38bdf8);
    border: none;
    color: #042f2e;
    font-weight: 700;
    padding: 12px 22px;
    border-radius: 12px;
  }

  #laboratorio-public-page .lab-portale-welcome-btn:hover {
    filter: brightness(1.06);
  }

  #laboratorio-public-page .lab-portale-dash-columns {
    display: grid;
    grid-template-columns: 1.45fr 0.85fr;
    gap: 16px;
    align-items: start;
  }

  #laboratorio-public-page .lab-portale-dash-recenti {
    min-height: 220px;
  }

  #laboratorio-public-page .lab-portale-dash-supporto {
    background: #11222d;
  }

  #laboratorio-public-page .lab-portale-supporto-text {
    margin: 0 0 16px;
    color: #94a3b8;
    font-size: 0.92rem;
    line-height: 1.55;
  }

  #laboratorio-public-page .lab-portale-supporto-phone {
    margin: 0 0 18px;
    padding: 12px 14px;
    border-radius: 12px;
    background: rgba(20, 184, 166, 0.08);
    border: 1px solid rgba(20, 184, 166, 0.2);
  }

  #laboratorio-public-page .lab-portale-supporto-phone-lbl {
    display: block;
    color: #94a3b8;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 4px;
  }

  #laboratorio-public-page .lab-portale-supporto-phone strong {
    color: #f8fafc;
    font-size: 1.15rem;
  }

  #laboratorio-public-page .lab-portale-whatsapp-btn {
    width: 100%;
    text-align: center;
    background: linear-gradient(90deg, #14b8a6, #38bdf8);
    border: none;
    color: #042f2e;
    font-weight: 700;
  }

  #laboratorio-public-page .lab-portale-recenti-table-wrap {
    overflow-x: auto;
    margin-top: 4px;
  }

  #laboratorio-public-page .lab-portale-recenti-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.88rem;
  }

  #laboratorio-public-page .lab-portale-recenti-table th {
    text-align: left;
    color: #94a3b8;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 10px 12px 10px 0;
    border-bottom: 1px solid #203744;
    font-weight: 600;
  }

  #laboratorio-public-page .lab-portale-recenti-table td {
    padding: 12px 12px 12px 0;
    color: #e2e8f0;
    border-bottom: 1px solid rgba(32, 55, 68, 0.65);
    vertical-align: middle;
  }

  #laboratorio-public-page .lab-portale-recenti-row {
    cursor: pointer;
    transition: background 0.15s;
  }

  #laboratorio-public-page .lab-portale-recenti-row:hover,
  #laboratorio-public-page .lab-portale-recenti-row:focus {
    outline: none;
    background: rgba(20, 184, 166, 0.06);
  }

  #laboratorio-public-page .lab-portale-recenti-action {
    color: #38bdf8;
    font-size: 1.1rem;
    text-align: right;
    padding-right: 4px !important;
    width: 36px;
  }

  #laboratorio-public-page .lab-portale-empty-inset {
    margin: 12px 0 16px;
    padding: 20px;
    border-radius: 12px;
    background: rgba(15, 23, 34, 0.55);
    border: 1px dashed #203744;
    text-align: center;
  }

  #laboratorio-public-page .lab-portale-dettaglio-modal {
    position: fixed;
    inset: 0;
    z-index: 200;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
  }

  #laboratorio-public-page .lab-portale-dettaglio-modal.hidden {
    display: none;
  }

  #laboratorio-public-page .lab-portale-dettaglio-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.62);
  }

  #laboratorio-public-page .lab-portale-dettaglio-box {
    position: relative;
    width: min(520px, 100%);
    max-height: 85vh;
    overflow: auto;
    background: #132733;
    border: 1px solid #203744;
    border-radius: 18px;
    padding: 20px;
    box-shadow: 0 24px 48px rgba(0, 0, 0, 0.45);
  }

  #laboratorio-public-page .lab-portale-dettaglio-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
  }

  #laboratorio-public-page .lab-portale-dettaglio-title {
    margin: 0;
    color: #f8fafc;
    font-size: 1.1rem;
  }

  #laboratorio-public-page .lab-portale-dettaglio-close {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    border: 1px solid #203744;
    background: #11222d;
    color: #94a3b8;
    font-size: 1.4rem;
    line-height: 1;
    cursor: pointer;
  }

  #laboratorio-public-page .lab-portale-footer-v3 {
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    border-top-color: #203744;
  }

  #laboratorio-public-page .lab-footer-powered {
    text-align: left;
  }

  #laboratorio-public-page .lab-footer-powered-label {
    display: block;
    color: #64748b;
    font-size: 0.78rem;
    margin-bottom: 2px;
  }

  #laboratorio-public-page .lab-footer-center {
    text-align: center;
  }

  #laboratorio-public-page .lab-footer-center strong {
    color: #f8fafc;
    font-size: 1rem;
  }

  #laboratorio-public-page .lab-footer-hours {
    text-align: right;
    color: #94a3b8;
  }

  #laboratorio-public-page .lab-portale-nav-btn:hover,
  #laboratorio-public-page .lab-portale-nav-btn.active {
    background: rgba(20, 184, 166, 0.1);
    border-color: rgba(20, 184, 166, 0.22);
    color: #f8fafc;
  }

  #laboratorio-public-page .lab-portale-nav-btn.active {
    background: linear-gradient(90deg, rgba(20, 184, 166, 0.18), rgba(56, 189, 248, 0.12));
    border-color: rgba(56, 189, 248, 0.28);
  }

  @media (max-width: 1100px) {
    #laboratorio-public-page .lab-portale-kpi-grid-v3 {
      grid-template-columns: repeat(3, minmax(0, 1fr));
    }
  }

  @media (max-width: 900px) {
    #laboratorio-public-page .lab-portale-sidebar-backdrop:not(.hidden) {
      display: block;
    }

    #laboratorio-public-page .lab-portale-sidebar {
      position: fixed;
      left: 0;
      top: 0;
      transform: translateX(-105%);
      transition: transform 0.22s ease;
      box-shadow: 8px 0 24px rgba(0, 0, 0, 0.35);
    }

    #laboratorio-public-page .lab-portale-sidebar.is-open {
      transform: translateX(0);
    }

    #laboratorio-public-page .lab-portale-mobile-header {
      display: flex;
    }

    #laboratorio-public-page .lab-portale-main {
      padding: 12px 14px 24px;
    }

    #laboratorio-public-page .lab-portale-form-toolbar {
      flex-direction: column;
    }

    #laboratorio-public-page .lab-portale-form-toolbar .btn {
      width: 100%;
    }

    #laboratorio-public-page .lab-portale-success-dl,
    #laboratorio-public-page .lab-portale-profilo-dl {
      grid-template-columns: 1fr;
      gap: 4px;
    }

    #laboratorio-public-page .lab-portale-kpi-grid-v3 {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    #laboratorio-public-page .lab-portale-dash-columns {
      grid-template-columns: 1fr;
    }

    #laboratorio-public-page .lab-portale-dash-logo {
      max-width: 320px;
    }

    #laboratorio-public-page .lab-portale-footer-v3 {
      grid-template-columns: 1fr;
      text-align: center;
      gap: 12px;
    }

    #laboratorio-public-page .lab-footer-powered,
    #laboratorio-public-page .lab-footer-hours {
      text-align: center;
    }
  }

  @media (max-width: 520px) {
    #laboratorio-public-page .lab-portale-kpi-grid-v3 {
      grid-template-columns: 1fr;
    }

    #laboratorio-public-page .lab-portale-welcome-inner {
      flex-direction: column;
      align-items: stretch;
    }

    #laboratorio-public-page .lab-portale-welcome-btn {
      width: 100%;
    }
  }

  #laboratorio-public-page .lab-riepilogo-prezzo {
    margin: 20px 0;
    padding: 16px 18px;
    border-radius: 16px;
    background: rgba(34, 184, 255, 0.06);
    border: 1px solid rgba(34, 184, 255, 0.16);
  }

  #laboratorio-public-page .lab-riepilogo-prezzo-title {
    margin: 0 0 12px;
    font-size: 1rem;
    color: #f1f5f9;
  }

  #laboratorio-public-page .lab-riepilogo-prezzo-dl {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 6px 16px;
    margin: 0 0 12px;
    font-size: 0.9rem;
  }

  #laboratorio-public-page .lab-riepilogo-prezzo-dl dt {
    color: #94a3b8;
    margin: 0;
  }

  #laboratorio-public-page .lab-riepilogo-prezzo-dl dd {
    margin: 0;
    color: #f1f5f9;
  }

  #laboratorio-public-page .lab-importo-ordine {
    margin: 0;
    font-size: 1.15rem;
    font-weight: 700;
    color: #7cff4f;
  }

  #laboratorio-public-page .lab-minimo-ordine-hint {
    margin: 8px 0 0;
    font-size: 0.82rem;
    color: #94a3b8;
  }

  #laboratorio-public-page .lab-articolo-card-min {
    margin: 4px 0 0;
    font-size: 0.78rem;
    color: #94a3b8;
  }

  #laboratorio-public-page .lab-success-riepilogo {
    margin: 16px 0 20px;
    text-align: left;
  }

  #laboratorio-public-page .lab-success-riepilogo-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
    color: #cbd5e1;
    font-size: 0.92rem;
  }

  .lab-cfg-portale-riepilogo {
    margin: 12px 0;
    padding: 12px;
    border-radius: 10px;
    background: rgba(34, 184, 255, 0.06);
    font-size: 0.9rem;
  }

  .lab-cfg-portale-ordini-mini {
    margin: 8px 0 0;
    padding-left: 18px;
    font-size: 0.85rem;
  }

  .lab-cfg-art-catalogo-hint {
    margin: 0 0 10px;
    font-size: 0.85rem;
    color: #64748b;
  }

  .lab-cfg-art-cascade-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  .lab-cfg-art-cascade-grid select {
    width: 100%;
    box-sizing: border-box;
  }

  .lab-cfg-art-prezzi-row {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
  }

  .lab-config-table-articoli {
    font-size: 0.82rem;
  }

  /* —— Config Articoli: toolbar, lista compatta, card mobile —— */
  .lab-cfg-articoli-toolbar {
    margin-bottom: 14px;
    padding: 14px 16px;
    border-radius: 12px;
    background: rgba(12, 28, 38, 0.65);
    border: 1px solid rgba(59, 184, 255, 0.12);
  }

  .lab-cfg-articoli-filtri-row {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 0.75fr);
    gap: 12px;
    align-items: end;
  }

  .lab-cfg-articoli-lbl {
    display: block;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #94a3b8;
    margin-bottom: 6px;
  }

  .lab-cfg-articoli-search,
  .lab-cfg-articoli-select {
    width: 100%;
    box-sizing: border-box;
    padding: 9px 12px;
    border-radius: 8px;
    border: 1px solid rgba(148, 163, 184, 0.25);
    background: rgba(7, 19, 27, 0.55);
    color: #e2e8f0;
    font-size: 0.88rem;
    line-height: 1.3;
  }

  .lab-cfg-articoli-search:focus,
  .lab-cfg-articoli-select:focus {
    outline: none;
    border-color: rgba(59, 184, 255, 0.55);
    box-shadow: 0 0 0 2px rgba(59, 184, 255, 0.15);
  }

  .lab-cfg-articoli-count {
    margin: 12px 0 0;
    font-size: 0.84rem;
    color: #94a3b8;
  }

  .lab-cfg-articoli-count strong {
    color: #e2e8f0;
    font-weight: 700;
  }

  .lab-cfg-articoli-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
  }

  .lab-cfg-articoli-table-wrap {
    max-height: min(62vh, 720px);
    overflow: auto;
    border-radius: 12px;
    border: 1px solid rgba(148, 163, 184, 0.15);
    background: rgba(7, 19, 27, 0.35);
  }

  .lab-cfg-articoli-table thead th {
    position: sticky;
    top: 0;
    z-index: 2;
  }

  .lab-cfg-articoli-table tbody tr td {
    padding: 10px 12px;
    vertical-align: middle;
  }

  .lab-cfg-articoli-table .lab-cfg-breadcrumb {
    max-width: 220px;
    font-size: 0.78rem;
    color: #94a3b8;
    line-height: 1.35;
    word-break: break-word;
  }

  .lab-cfg-articoli-table .lab-cfg-art-nome-cell strong {
    font-size: 0.88rem;
    line-height: 1.3;
  }

  .lab-cfg-articoli-cards {
    display: none;
  }

  .lab-cfg-art-card {
    display: flex;
    gap: 12px;
    padding: 12px;
    border-radius: 12px;
    border: 1px solid rgba(148, 163, 184, 0.18);
    background: rgba(12, 28, 38, 0.55);
  }

  .lab-cfg-art-card-media {
    flex-shrink: 0;
  }

  .lab-cfg-art-card-body {
    flex: 1;
    min-width: 0;
  }

  .lab-cfg-art-card-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 6px;
  }

  .lab-cfg-art-card-nome {
    font-size: 0.92rem;
    color: #f1f5f9;
  }

  .lab-cfg-art-card-meta {
    margin: 0 0 4px;
    font-size: 0.8rem;
    color: #94a3b8;
    line-height: 1.35;
  }

  .lab-cfg-art-card-meta span {
    color: #64748b;
    font-weight: 600;
    margin-right: 4px;
  }

  .lab-cfg-articoli-pagination {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 8px 0 4px;
  }

  .lab-cfg-articoli-page-info {
    font-size: 0.84rem;
    color: #94a3b8;
    padding: 0 6px;
  }

  .lab-cfg-art-readonly-lbl {
    font-size: 0.78rem;
    color: #64748b;
    font-style: italic;
  }

  .lab-cfg-art-img-placeholder {
    width: 44px;
    height: 44px;
    border-radius: 8px;
    border: 1px dashed rgba(148, 163, 184, 0.35);
    background: rgba(7, 19, 27, 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
  }

  .lab-cfg-art-img-icon {
    font-size: 1.1rem;
    line-height: 1;
    opacity: 0.75;
  }

  @media (max-width: 900px) {
    .lab-cfg-articoli-filtri-row {
      grid-template-columns: 1fr 1fr;
    }

    .lab-cfg-articoli-search-wrap {
      grid-column: 1 / -1;
    }
  }

  @media (max-width: 720px) {
    .lab-cfg-articoli-table-wrap {
      display: none;
    }

    .lab-cfg-articoli-cards {
      display: flex;
      flex-direction: column;
      gap: 10px;
    }

    .lab-cfg-articoli-filtri-row {
      grid-template-columns: 1fr;
    }
  }

  .lab-cat-badge-ok {
    color: #7cff4f;
    font-size: 0.82rem;
    font-weight: 600;
  }

  .lab-cat-badge-empty {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 8px;
    background: rgba(248, 113, 113, 0.15);
    color: #fecaca;
    font-size: 0.78rem;
    font-weight: 600;
  }

  @media (max-width: 560px) {
    #laboratorio-public-page .lab-cascade-grid {
      grid-template-columns: 1fr;
    }
  }

  .lab-cfg-portale-password-hint {
    margin: 6px 0 0;
    font-size: 0.82rem;
    color: #64748b;
  }

  @media (max-width: 560px) {
    #laboratorio-public-page .lab-portale-logout-btn {
      position: static;
      display: block;
      margin: 12px auto 0;
    }
  }

  #laboratorio-public-page .lab-info-boxes {
    display: flex;
    flex-direction: column;
    gap: 12px;
  }

  #laboratorio-public-page .lab-info-box {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    padding: 14px 16px;
    border-radius: 16px;
    background: rgba(17, 25, 43, 0.85);
    border: 1px solid rgba(34, 184, 255, 0.1);
  }

  #laboratorio-public-page .lab-info-icon {
    flex-shrink: 0;
    width: 28px;
    height: 28px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.9rem;
    font-weight: 800;
  }

  #laboratorio-public-page .lab-info-icon-ok {
    background: rgba(124, 255, 79, 0.15);
    color: #7cff4f;
  }

  #laboratorio-public-page .lab-info-icon-preview {
    background: rgba(34, 184, 255, 0.15);
    color: #22b8ff;
  }

  #laboratorio-public-page .lab-info-icon-time {
    background: rgba(124, 255, 79, 0.12);
    color: #7cff4f;
  }

  #laboratorio-public-page .lab-info-box strong {
    display: block;
    font-size: 0.88rem;
    color: #f1f5f9;
    margin-bottom: 2px;
  }

  #laboratorio-public-page .lab-info-box p {
    margin: 0;
    font-size: 0.8rem;
    color: #94a3b8;
    line-height: 1.35;
  }

  #laboratorio-public-page .lab-form-message {
    font-size: 0.9rem;
    padding: 12px 14px;
    border-radius: 14px;
    margin-bottom: 16px;
  }

  #laboratorio-public-page .lab-form-error {
    background: rgba(248, 113, 113, 0.12);
    border: 1px solid rgba(248, 113, 113, 0.4);
    color: #fecaca;
  }

  #laboratorio-public-page .lab-submit-btn {
    width: 100%;
    min-height: 70px;
    margin-top: 4px;
    border: none;
    border-radius: 18px;
    background: linear-gradient(90deg, #7cff4f, #22b8ff);
    color: #050b16;
    font-size: clamp(1.1rem, 4vw, 28px);
    font-weight: 700;
    letter-spacing: 0.04em;
    cursor: pointer;
    transition: transform 0.15s ease, box-shadow 0.2s ease;
    box-shadow: 0 8px 32px rgba(34, 184, 255, 0.25);
  }

  #laboratorio-public-page .lab-submit-btn:hover:not(:disabled) {
    transform: translateY(-2px);
    box-shadow:
      0 12px 40px rgba(124, 255, 79, 0.3),
      0 8px 24px rgba(34, 184, 255, 0.35);
  }

  #laboratorio-public-page .lab-submit-btn:disabled {
    opacity: 0.55;
    cursor: not-allowed;
  }

  #laboratorio-public-page .lab-loading-text {
    text-align: center;
    padding: 32px 8px 8px;
    color: #94a3b8;
    font-size: 1.05rem;
  }

  #laboratorio-public-page .lab-loading-subtext {
    text-align: center;
    padding: 0 12px 32px;
    color: #cbd5e1;
    font-size: 0.92rem;
    line-height: 1.45;
  }

  #laboratorio-public-page .lab-weekend-notice {
    margin: 0 0 20px;
    padding: 14px 16px;
    border-radius: 14px;
    background: rgba(251, 191, 36, 0.12);
    border: 1px solid rgba(251, 191, 36, 0.35);
    color: #fde68a;
    font-size: 0.92rem;
    line-height: 1.45;
    text-align: center;
  }

  #laboratorio-public-page .lab-weekend-notice.hidden {
    display: none;
  }

  #laboratorio-public-page .lab-success-message {
    text-align: center;
    font-size: 1.05rem;
    line-height: 1.5;
    color: #86efac;
    margin-bottom: 20px;
    padding: 16px;
    background: rgba(124, 255, 79, 0.1);
    border-radius: 16px;
    border: 1px solid rgba(124, 255, 79, 0.35);
  }

  #laboratorio-public-page .laboratorio-public-footer {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 24px;
    margin-top: 40px;
    padding: 28px 8px 8px;
    border-top: 1px solid rgba(34, 184, 255, 0.12);
    font-size: 0.85rem;
    color: #94a3b8;
  }

  #laboratorio-public-page .lab-footer-brand {
    display: flex;
    align-items: center;
    gap: 12px;
  }

  #laboratorio-public-page .lab-footer-logo {
    width: 48px;
    height: 48px;
    object-fit: contain;
    border-radius: 10px;
  }

  #laboratorio-public-page .lab-footer-brand strong,
  #laboratorio-public-page .lab-footer-tagline strong {
    display: block;
    color: #e2e8f0;
    font-size: 0.9rem;
    margin-bottom: 2px;
  }

  #laboratorio-public-page .lab-footer-brand span,
  #laboratorio-public-page .lab-footer-tagline span {
    display: block;
    line-height: 1.4;
  }

  #laboratorio-public-page .lab-footer-contact {
    display: flex;
    flex-direction: column;
    gap: 6px;
    align-items: center;
    text-align: center;
  }

  #laboratorio-public-page .lab-footer-contact a {
    color: #22b8ff;
    text-decoration: none;
    font-weight: 600;
  }

  #laboratorio-public-page .lab-footer-contact a:hover {
    color: #7cff4f;
  }

  #laboratorio-public-page .lab-footer-tagline {
    text-align: right;
  }

  @media (max-width: 900px) {
    #laboratorio-public-page .lab-articoli-grid {
      grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    #laboratorio-public-page .lab-upload-row {
      grid-template-columns: 1fr;
    }

    #laboratorio-public-page .laboratorio-public-footer {
      grid-template-columns: 1fr;
      text-align: center;
    }

    #laboratorio-public-page .lab-footer-brand {
      justify-content: center;
    }

    #laboratorio-public-page .lab-footer-tagline {
      text-align: center;
    }
  }

  @media (max-width: 640px) {
    #laboratorio-public-page .laboratorio-public-wrap {
      padding: 16px 14px 32px;
    }

    #laboratorio-public-page .laboratorio-public-glass-card {
      padding: 22px 18px;
      border-radius: 22px;
    }

    #laboratorio-public-page .lab-public-form-grid {
      grid-template-columns: 1fr;
    }

    #laboratorio-public-page .lab-articoli-grid {
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 10px;
    }

    #laboratorio-public-page .lab-articolo-card {
      max-width: none;
      min-height: 220px;
    }

    #laboratorio-public-page .lab-public-title {
      font-size: 2rem;
    }

    #laboratorio-public-page .lab-public-brand-sub,
    #laboratorio-public-page .laboratorio-public-subtitle {
      font-size: 16px;
    }
  }

  /* Laboratorio interno v2 — admin / operatore1 */
  .tab-lab-internal-hidden {
    display: none !important;
  }

  #tab-laboratorio {
    position: relative;
  }

  .tab-lab-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.35rem;
    height: 1.35rem;
    margin-left: 6px;
    padding: 0 5px;
    border-radius: 999px;
    background: #e53e3e;
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    line-height: 1;
    vertical-align: middle;
  }

  .tab-lab-has-badge {
    padding-right: 4px;
  }

  .lab-kpi-grid .dashboard-kpi-card:last-child .dashboard-kpi-value {
    color: #e53e3e;
  }

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

  .lab-filtri {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
  }

  .lab-filtro-btn.active {
    background: var(--ph-colore-primario, #667eea);
    color: #fff;
    border-color: transparent;
  }

  .lab-ricerca {
    flex: 1 1 200px;
    max-width: 320px;
  }

  .lab-ricerca input {
    width: 100%;
    padding: 8px 12px;
    border-radius: 8px;
    border: 1px solid #cbd5e0;
  }

  .lab-tabella-wrap {
    overflow-x: auto;
    border-radius: 8px;
    border: 1px solid #e2e8f0;
  }

  .lab-ordini-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
  }

  .lab-ordini-table th,
  .lab-ordini-table td {
    padding: 10px 12px;
    text-align: left;
    border-bottom: 1px solid #edf2f7;
  }

  .lab-ordini-table th {
    background: #f7fafc;
    font-weight: 600;
    white-space: nowrap;
  }

  .lab-ordini-table tbody tr.lab-ordini-row {
    cursor: pointer;
  }

  .lab-ordini-table tbody tr.lab-ordini-row:hover {
    background: #edf2f7;
  }

  .lab-badge-stato {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 600;
    white-space: nowrap;
  }

  .lab-badge-nuovo {
    background: #ebf8ff;
    color: #2b6cb0;
  }

  .lab-badge-lavorazione,
  .lab-badge-lavorazione-evidenziato {
    background: #f6ad55;
    color: #7b341e;
    border: 1px solid #dd6b20;
    font-weight: 700;
    box-shadow: 0 0 0 1px rgba(221, 107, 32, 0.25);
  }

  .lab-badge-pronto {
    background: #c6f6d5;
    color: #276749;
  }

  .lab-badge-consegnato {
    background: #e2e8f0;
    color: #4a5568;
  }

  .lab-azioni-cell {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
  }

  .modal-lab-body {
    max-height: 60vh;
    overflow-y: auto;
  }

  .modal-lab-dl {
    display: grid;
    grid-template-columns: minmax(120px, 38%) 1fr;
    gap: 8px 14px;
    margin: 0 0 12px;
  }

  .modal-lab-dl dt {
    font-weight: 600;
    color: #4a5568;
    margin: 0;
  }

  .modal-lab-dl dd {
    margin: 0;
    word-break: break-word;
  }

  .modal-lab-stati {
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid #e2e8f0;
  }

  .modal-lab-allegato {
    margin-top: 8px;
  }

  .modal-lab-errore {
    color: #c53030;
    font-weight: 600;
    margin: 12px 0;
  }

  .lab-allegato-azioni {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px;
    font-size: 0.85rem;
  }

  .lab-allegato-azioni a {
    color: var(--ph-colore-primario, #667eea);
    font-weight: 600;
    text-decoration: none;
  }

  .lab-allegato-azioni a:hover {
    text-decoration: underline;
  }

  .lab-allegato-sep {
    color: #a0aec0;
  }

  .lab-allegato-btns {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
  }

  .lab-config-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 12px;
  }

  .lab-config-tab-btn.active {
    background: linear-gradient(135deg, var(--sd-secondary) 0%, #0ea5e9 100%);
    color: #fff;
    border-color: transparent;
    box-shadow: 0 8px 18px rgba(34, 184, 255, 0.25);
  }

  .lab-config-editor {
    overflow-x: auto;
    margin-bottom: 12px;
  }

  .lab-config-table {
    width: 100%;
    border-collapse: collapse;
  }

  .lab-config-table th,
  .lab-config-table td {
    padding: 8px;
    border-bottom: 1px solid #e2e8f0;
  }

  .lab-config-table input {
    width: 100%;
    min-width: 80px;
  }

  .dashboard-lab-nuovi-card .dashboard-riga {
    cursor: pointer;
  }

  .dashboard-lab-nuovi-card .dashboard-riga:hover {
    background: #f7fafc;
  }

  .lab-stampa-card {
    margin-bottom: 16px;
  }

  .lab-stampa-title {
    margin: 0 0 12px;
    font-size: 1rem;
  }

  .lab-stampa-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 12px;
  }

  .lab-stampa-periodo {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
  }

  .lab-stampa-label {
    font-size: 0.88rem;
    font-weight: 600;
    color: #4a5568;
  }

  .lab-stampa-date {
    padding: 6px 10px;
    border-radius: 6px;
    border: 1px solid #cbd5e0;
  }

  .lab-wa-mancante {
    font-size: 0.78rem;
    color: #a0aec0;
    font-style: italic;
  }

  .lab-wa-pronto {
    white-space: nowrap;
  }

  .modal-lab-wa {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid #e2e8f0;
  }

  .lab-ordini-stampa-wrap {
    display: none;
  }

  /* ============================================================
     SD OPERIS OPLab — design system
     ============================================================ */
  .oplab-shell {
    /* OPLAB BRANDING v3 - SD OPERIS palette */
    --sd-primary: #7CFF4F;
    --sd-secondary: #22B8FF;
    --sd-dark: #0f172a;
    --sd-bg: #f0f9fb;
    --sd-card: #ffffff;
    --sd-border: #e2e8f0;
    --sd-text: #1f2937;
    --sd-text-muted: #64748b;
    --sd-header-bg: #071216;
    --sd-header-border: #0b1f24;
    --sd-sidebar-bg: #0b1f24;
    --sd-sidebar-width: 240px;
    --sd-radius: 16px;
    --sd-shadow: 0 4px 24px rgba(15, 23, 42, 0.06);
    --sd-shadow-hover: 0 8px 32px rgba(15, 23, 42, 0.1);
    --sd-font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", system-ui, sans-serif;
    font-family: var(--sd-font);
    color: var(--sd-text);
    background: var(--sd-bg);
    min-height: calc(100vh - 30px);
    display: none;
    flex-direction: column;
    border-radius: 0;
    margin: 0;
    padding: 0;
    max-width: none;
    width: 100%;
    box-shadow: none;
  }

  body.ph-lab-solo-mode .tabs,
  body.ph-lab-solo-mode .config-box,
  body.ph-lab-solo-mode #dashboard,
  body.ph-lab-solo-mode #app-header,
  body.ph-lab-solo-mode #user-bar-home-anchor {
    display: none !important;
  }

  body.ph-lab-solo-mode .container {
    max-width: none;
    padding: 0;
    margin: 0;
    width: 100%;
  }

  body.ph-lab-solo-mode #laboratorio.oplab-shell.panel {
    display: flex;
  }

  body.ph-lab-solo-mode.ph-lab-solo-app,
  body.ph-lab-solo-mode #app-page {
    background: var(--sd-bg);
    min-height: 100vh;
  }

  body.ph-lab-solo-mode #app-page > .container {
    padding: 0;
  }

  body.ph-lab-solo-mode #laboratorio.oplab-shell {
    min-height: 100vh;
  }

  #laboratorio.oplab-shell.panel.active {
    display: flex;
    padding: 0;
    background: var(--sd-bg);
    border-radius: 0;
    box-shadow: none;
  }

  #laboratorio.oplab-shell.panel:not(.active) {
    display: none !important;
  }

  .lab-v26-pro.oplab-shell {
    max-width: none;
    margin: 0;
  }

  .oplab-hero-header {
    width: 100%;
    min-height: 88px;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 14px 24px;
    background:
      radial-gradient(circle at 18% 50%, rgba(124, 255, 79, 0.14), transparent 42%),
      radial-gradient(circle at 72% 80%, rgba(34, 184, 255, 0.22), transparent 38%),
      linear-gradient(135deg, #0f172a 0%, #111827 48%, #0b1f24 100%);
    border-radius: 0;
    overflow: hidden;
    position: relative;
    flex-shrink: 0;
    margin: 0;
    color: #e6fffa;
    border: none;
    border-bottom: 1px solid #0b1f24;
    box-shadow: 0 4px 28px rgba(0, 0, 0, 0.28);
    z-index: 20;
  }

  .oplab-hero-header::after {
    content: "";
    position: absolute;
    left: 28%;
    right: 0;
    bottom: 0;
    height: 90px;
    background: linear-gradient(
      110deg,
      transparent 0%,
      rgba(45, 212, 191, 0.12) 30%,
      rgba(34, 211, 238, 0.45) 48%,
      rgba(59, 130, 246, 0.45) 72%,
      transparent 100%
    );
    filter: blur(2px);
    opacity: 0.9;
    pointer-events: none;
  }

  /* OPLAB HEADER USE LOGO-HEADER v1.5 — header app */
  .oplab-hero-brand {
    position: relative;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    min-width: 0;
    flex: 0 1 auto;
  }

  .oplab-brand-logo-header {
    display: block;
    width: auto;
    height: 58px;
    max-height: 58px;
    max-width: 100%;
    object-fit: contain;
    object-position: left center;
    flex-shrink: 1;
  }

  .oplab-brand-subtitle {
    font-size: 0.78rem;
    font-weight: 500;
    letter-spacing: 0.03em;
    color: rgba(34, 184, 255, 0.92);
    line-height: 1.2;
  }

  .oplab-hero-logo {
    position: relative;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    width: 35%;
    max-width: 35%;
    min-width: 0;
  }

  .oplab-hero-logo img,
  .oplab-header-logo img,
  .oplab-hero-logo .lab-sd-logo-img {
    display: block;
    width: auto;
    height: 90px;
    max-height: 90px;
    object-fit: contain;
    object-position: left center;
    border: none;
    background: transparent;
  }

  .oplab-hero-actions {
    position: relative;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    white-space: nowrap;
    flex-shrink: 0;
  }

  .oplab-hero-actions .lab-sd-user-slot {
    display: flex;
    align-items: center;
    justify-content: flex-end;
  }

  .oplab-hero-actions .lab-sd-user-slot:empty {
    display: none;
  }

  .oplab-hero-header .user-bar-legacy-info {
    display: none !important;
  }

  .oplab-hero-header .lab-sd-user-bar.user-bar,
  .oplab-hero-header .user-bar.lab-sd-user-bar {
    margin: 0;
    padding: 0;
    border-radius: 0;
    background: transparent;
    border: none;
    font-size: 0.82rem;
    gap: 12px;
    min-height: 0;
    flex-direction: row;
    align-items: center;
    flex-wrap: nowrap;
    box-shadow: none;
  }

  .oplab-hero-header .lab-sd-user-bar .user-bar-actions {
    gap: 12px;
    flex-wrap: nowrap;
    align-items: center;
  }

  .oplab-hero-header .lab-sd-user-bar .user-bar-operator-line {
    font-size: 0.84rem;
    font-weight: 600;
    white-space: nowrap;
    color: #e2e8f0;
    padding-right: 12px;
    margin-right: 0;
    border-right: 1px solid rgba(94, 234, 212, 0.22);
  }

  .oplab-hero-header #btn-sync-google {
    width: 44px;
    min-width: 44px;
    height: 38px;
    padding: 0;
    font-size: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    background: rgba(20, 184, 166, 0.18);
    border: 1px solid rgba(94, 234, 212, 0.35);
    color: #5eead4;
    line-height: 1;
  }

  .oplab-hero-header #btn-sync-google .btn-sync-icon {
    display: none;
  }

  .oplab-hero-header #btn-sync-google::before {
    content: "↻";
    font-size: 22px;
    line-height: 1;
    color: #5eead4;
  }

  .oplab-hero-header #btn-sync-google.is-syncing::before {
    animation: oplab-sync-spin 0.85s linear infinite;
  }

  .oplab-hero-header #btn-sync-google:hover {
    background: rgba(20, 184, 166, 0.32);
  }

  .oplab-hero-header .btn-danger.btn-user-bar-action {
    background: #dc2626;
    border-color: #b91c1c;
    color: #fff;
    font-weight: 600;
    padding: 8px 16px;
    border-radius: 8px;
    font-size: 0.82rem;
    height: 38px;
  }

  .oplab-hero-header .btn-danger.btn-user-bar-action:hover {
    background: #b91c1c;
  }

  .lab-sd-user-slot {
    flex-shrink: 0;
    display: flex;
    align-items: center;
  }

  .lab-sd-user-slot:empty {
    display: none;
  }

  /* OPLAB BRANDING v3 - indicatore sync minimal (solo stato colore) */
  .oplab-hero-header .google-stato-label,
  .oplab-hero-header .google-stato-ultimo-sync,
  .lab-sd-user-bar .google-stato-label,
  .lab-sd-user-bar .google-stato-ultimo-sync {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
  }

  .oplab-hero-header .google-stato-indicatore.google-stato-minimal,
  .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal {
    min-width: 0;
    padding: 6px 10px;
    gap: 0;
  }

  .oplab-hero-header .google-stato-indicatore.google-stato-minimal .google-stato-emoji,
  .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal .google-stato-emoji {
    font-size: 0.85rem;
    line-height: 1;
  }

  .oplab-hero-header .google-stato-indicatore.google-stato-minimal[data-stato="online"],
  .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="online"] {
    background: rgba(0, 184, 148, 0.22);
    border-color: rgba(0, 184, 148, 0.5);
  }

  .oplab-hero-header .google-stato-indicatore.google-stato-minimal[data-stato="syncing"],
  .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="syncing"] {
    background: rgba(241, 196, 15, 0.2);
    border-color: rgba(241, 196, 15, 0.5);
  }

  .oplab-hero-header .google-stato-indicatore.google-stato-minimal[data-stato="offline"],
  .oplab-hero-header .google-stato-indicatore.google-stato-minimal[data-stato="error"],
  .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="offline"],
  .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="error"] {
    background: rgba(214, 48, 49, 0.2);
    border-color: rgba(214, 48, 49, 0.45);
  }

  .lab-sd-user-bar .btn-small {
    padding: 3px 8px;
    font-size: 0.72rem;
  }

  .oplab-body {
    display: flex;
    flex: 1;
    min-height: 0;
    align-items: stretch;
  }

  .oplab-sidebar {
    width: var(--sd-sidebar-width);
    flex-shrink: 0;
    background: var(--sd-sidebar-bg);
    border-right: 1px solid rgba(94, 234, 212, 0.12);
    display: flex;
    flex-direction: column;
    padding: 16px 12px;
    gap: 16px;
  }

  .oplab-sidebar-profile {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 4px 8px 14px;
    margin-bottom: 2px;
    border-bottom: 1px solid rgba(94, 234, 212, 0.12);
    flex-shrink: 0;
  }

  .oplab-sidebar-profile-avatar {
    width: 40px;
    height: 40px;
    min-width: 40px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(
      135deg,
      rgba(20, 184, 166, 0.35) 0%,
      rgba(14, 165, 233, 0.22) 100%
    );
    border: 1px solid rgba(94, 234, 212, 0.28);
    color: #e6fffa;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1;
    flex-shrink: 0;
  }

  .oplab-sidebar-profile-text {
    min-width: 0;
    flex: 1;
  }

  .oplab-sidebar-profile-name {
    font-weight: 700;
    font-size: 0.92rem;
    color: #e6fffa;
    line-height: 1.3;
    word-break: break-word;
  }

  .oplab-sidebar-profile-role {
    font-size: 12px;
    color: rgba(167, 243, 208, 0.88);
    line-height: 1.35;
    margin-top: 2px;
    word-break: break-word;
  }

  .oplab-sidebar-account-actions {
    display: flex;
    flex-direction: column;
    gap: 8px;
    width: 100%;
    padding-top: 4px;
    border-top: 1px solid rgba(94, 234, 212, 0.12);
  }

  .oplab-sidebar-account-actions .btn {
    width: 100%;
    justify-content: center;
    min-height: 44px;
    border-radius: 10px;
    font-size: 0.82rem;
  }

  .oplab-sidebar-nav {
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex: 1;
  }

  .oplab-nav-btn {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 10px 12px;
    border: none;
    border-radius: 10px;
    background: transparent;
    color: rgba(230, 255, 250, 0.75);
    font-size: 0.88rem;
    font-weight: 500;
    text-align: left;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
    font-family: inherit;
  }

  .oplab-nav-btn:hover {
    background: rgba(20, 184, 166, 0.12);
    color: #e6fffa;
  }

  .oplab-nav-btn.active {
    background: linear-gradient(135deg, rgba(20, 184, 166, 0.28) 0%, rgba(14, 165, 233, 0.18) 100%);
    color: #fff;
    box-shadow: inset 0 0 0 1px rgba(94, 234, 212, 0.25);
  }

  .oplab-nav-icon {
    font-size: 1.05rem;
    width: 1.4rem;
    text-align: center;
    flex-shrink: 0;
  }

  .oplab-sidebar-actions {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding-top: 12px;
    border-top: 1px solid rgba(94, 234, 212, 0.12);
  }

  .oplab-sidebar-actions .oplab-btn-action {
    width: 100%;
    justify-content: center;
    border-radius: 10px;
    font-size: 0.82rem;
  }

  .oplab-sidebar-actions .btn-primary {
    background: var(--sd-primary);
    border-color: var(--sd-primary);
    color: #042f2e;
    font-weight: 600;
  }

  .oplab-sidebar-actions .btn-secondary {
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(94, 234, 212, 0.25);
    color: #a7f3d0;
  }

  .oplab-main {
    flex: 1;
    min-width: 0;
    overflow-y: auto;
    padding: 20px 24px 28px;
    background: var(--sd-bg);
  }

  .lab-oplab-vista {
    animation: oplab-fade-in 0.2s ease-out;
  }

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

  .oplab-page-head {
    margin-bottom: 20px;
  }

  .oplab-page-title {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--sd-text);
    letter-spacing: -0.02em;
  }

  .oplab-page-sub {
    margin: 4px 0 0;
    font-size: 0.9rem;
    color: var(--sd-text-muted);
  }

  .oplab-stampe-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
    margin-bottom: 20px;
  }

  .oplab-stampa-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    padding: 20px;
    background: var(--sd-card);
    border: 1px solid var(--sd-border);
    border-radius: var(--sd-radius);
    box-shadow: var(--sd-shadow);
    cursor: pointer;
    text-align: left;
    transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
    font-family: inherit;
  }

  .oplab-stampa-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--sd-shadow-hover);
    border-color: rgba(20, 184, 166, 0.35);
  }

  .oplab-stampa-card-icon {
    font-size: 1.5rem;
  }

  .oplab-stampa-card-title {
    font-size: 1rem;
    font-weight: 700;
    color: var(--sd-text);
  }

  .oplab-stampa-card-desc {
    font-size: 0.82rem;
    color: var(--sd-text-muted);
    line-height: 1.4;
  }

  .oplab-impostazioni-card {
    background: var(--sd-card);
    border: 1px solid var(--sd-border);
    border-radius: var(--sd-radius);
    box-shadow: var(--sd-shadow);
    padding: 28px 24px;
    max-width: 520px;
  }

  .oplab-impostazioni-desc {
    margin: 0 0 20px;
    font-size: 0.95rem;
    line-height: 1.55;
    color: var(--sd-text-muted);
  }

  .oplab-impostazioni-btn {
    border-radius: 10px;
    font-weight: 600;
    padding: 10px 18px;
  }

  .oplab-legacy-vista-nav {
    display: none !important;
  }

  .oplab-shell .lab-pro-filtri-wrap {
    background: var(--sd-card);
    border: 1px solid var(--sd-border);
    border-radius: var(--sd-radius);
    padding: 14px 16px;
    box-shadow: var(--sd-shadow);
    margin-bottom: 20px;
  }

  .oplab-shell .lab-filtro-btn {
    border-radius: 999px;
    font-size: 0.78rem;
    padding: 5px 12px;
    border: 1px solid var(--sd-border);
    background: var(--sd-bg);
    color: var(--sd-text-muted);
    transition: all 0.15s ease;
  }

  .oplab-shell .lab-filtro-btn.active {
    background: var(--sd-primary);
    border-color: var(--sd-primary);
    color: #042f2e;
    font-weight: 600;
  }

  .oplab-shell .lab-ricerca input {
    border-radius: 10px;
    border: 1px solid var(--sd-border);
    padding: 8px 12px;
    font-size: 0.88rem;
  }

  .oplab-shell .lab-stampa-periodo-inline {
    background: var(--sd-card);
    border: 1px solid var(--sd-border);
    border-radius: var(--sd-radius);
    padding: 16px;
    box-shadow: var(--sd-shadow);
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
  }

  .lab-pro-kpi-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin-bottom: 0;
  }

  .oplab-shell .lab-pro-kpi-card {
    background: var(--sd-card);
    border: 1px solid var(--sd-border);
    border-radius: var(--sd-radius);
    padding: 20px 18px;
    text-align: center;
    box-shadow: var(--sd-shadow);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
  }

  .oplab-shell .lab-pro-kpi-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--sd-shadow-hover);
  }

  .lab-pro-kpi-clickable {
    cursor: pointer;
    user-select: none;
  }

  .lab-pro-kpi-clickable:active {
    transform: translateY(0);
    box-shadow: var(--sd-shadow);
  }

  .lab-pro-kpi-clickable.active {
    border-color: #4299e1;
    box-shadow: 0 0 0 2px rgba(66, 153, 225, 0.28);
  }

  .lab-pro-kpi-nuovi {
    border-color: #9ae6b4;
    background: #f0fff4;
  }

  .lab-pro-kpi-nuovi .lab-pro-kpi-value {
    color: #276749;
  }

  .lab-pro-kpi-preview {
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px solid rgba(39, 103, 73, 0.18);
    text-align: left;
  }

  .lab-pro-kpi-preview-head {
    margin-bottom: 8px;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #276749;
  }

  .lab-pro-kpi-preview-item + .lab-pro-kpi-preview-item {
    margin-top: 8px;
    padding-top: 8px;
    border-top: 1px solid rgba(39, 103, 73, 0.12);
  }

  .lab-pro-kpi-preview-nome {
    font-size: 0.78rem;
    font-weight: 700;
    line-height: 1.35;
    color: #22543d;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .lab-pro-kpi-preview-ora {
    margin-top: 2px;
    font-size: 0.7rem;
    font-weight: 600;
    color: #38a169;
  }

  .lab-pro-kpi-preview-vuoto {
    margin: 0;
    font-size: 0.72rem;
    font-weight: 500;
    color: #68d391;
    text-align: center;
    font-style: italic;
  }

  .oplab-shell .lab-pro-ricerca-wrap {
    flex: 1 1 100%;
    width: 100%;
    margin-bottom: 4px;
  }

  .oplab-shell .lab-pro-ricerca-input {
    width: 100%;
    box-sizing: border-box;
  }

  .lab-pro-card-body {
    margin-top: 8px;
  }

  .lab-pro-card-row {
    margin: 0 0 6px;
    font-size: 0.8rem;
    line-height: 1.4;
    color: #2d3748;
  }

  .lab-pro-card-lbl {
    display: block;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #718096;
    margin-bottom: 1px;
  }

  .lab-pro-card-val {
    display: block;
    font-weight: 600;
    color: #1a202c;
  }

  .lab-clienti-page-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
  }

  .lab-clienti-page-head .btn {
    flex-shrink: 0;
    margin-top: 4px;
  }

  .lab-clienti-layout {
    display: grid;
    grid-template-columns: minmax(280px, 360px) minmax(0, 1fr);
    gap: 20px;
    align-items: start;
  }

  .lab-clienti-lista-panel,
  .lab-clienti-dettaglio-panel {
    background: var(--sd-card);
    border: 1px solid var(--sd-border);
    border-radius: var(--sd-radius);
    box-shadow: var(--sd-shadow);
    padding: 16px;
  }

  .lab-clienti-ricerca-wrap {
    margin-bottom: 14px;
  }

  .lab-clienti-ricerca-wrap .lab-pro-ricerca-input {
    width: 100%;
    box-sizing: border-box;
  }

  .lab-clienti-grid {
    display: flex;
    flex-direction: column;
    gap: 12px;
    max-height: calc(100vh - 280px);
    overflow-y: auto;
  }

  .lab-clienti-card {
    border: 1px solid var(--sd-border);
    border-radius: 12px;
    padding: 14px;
    background: var(--sd-bg);
    cursor: pointer;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
  }

  .lab-clienti-card:hover,
  .lab-clienti-card-active {
    border-color: #4299e1;
    box-shadow: 0 0 0 2px rgba(66, 153, 225, 0.18);
  }

  .lab-clienti-card-id {
    margin: 0 0 4px;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: #718096;
  }

  .lab-clienti-card-nome {
    margin: 0 0 4px;
    font-size: 0.95rem;
    font-weight: 700;
    color: #1a202c;
  }

  .lab-clienti-card-tel {
    margin: 0 0 8px;
    font-size: 0.8rem;
    color: #4a5568;
  }

  .lab-clienti-card-meta {
    margin: 0 0 4px;
    font-size: 0.76rem;
    color: #4a5568;
  }

  .lab-clienti-card-meta span {
    font-weight: 700;
    color: #718096;
    margin-right: 4px;
  }

  .lab-clienti-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 10px;
  }

  .lab-clienti-badge {
    font-size: 0.68rem;
    padding: 3px 8px;
  }

  .lab-clienti-badge-fonte {
    font-size: 0.68rem;
    padding: 3px 8px;
    font-weight: 700;
    letter-spacing: 0.02em;
  }

  .lab-badge-anagrafica {
    background: #e6fffa;
    color: #234e52;
    border: 1px solid #81e6d9;
  }

  .lab-badge-da-ordine {
    background: #fefcbf;
    color: #744210;
    border: 1px solid #f6e05e;
  }

  .lab-clienti-badges-fonte {
    margin-top: 8px;
    margin-bottom: 4px;
  }

  .lab-clienti-dettaglio-nota-ordine {
    margin: 10px 0 0;
    padding: 10px 12px;
    font-size: 0.82rem;
    color: #744210;
    background: #fffff0;
    border: 1px solid #f6e05e;
    border-radius: 8px;
  }

  .lab-clienti-dettaglio-placeholder {
    margin: 0;
    color: #718096;
    font-size: 0.9rem;
    font-style: italic;
  }

  .lab-clienti-stato-vuoto {
    padding: 20px 16px;
    border-radius: 12px;
    background: #f7fafc;
    border: 1px dashed #cbd5e0;
    color: #4a5568;
    text-align: center;
  }

  .lab-clienti-stato-vuoto strong {
    display: block;
    margin-bottom: 6px;
    font-size: 0.95rem;
    color: #2d3748;
  }

  .lab-clienti-stato-vuoto p {
    margin: 0;
    font-size: 0.84rem;
    color: #718096;
  }

  .lab-clienti-dettaglio-nome {
    margin: 12px 0 8px;
    font-size: 1.2rem;
    font-weight: 800;
    color: #1a202c;
  }

  .lab-clienti-dettaglio-row {
    margin: 0 0 6px;
    font-size: 0.84rem;
    color: #2d3748;
  }

  .lab-clienti-dettaglio-row span {
    display: inline-block;
    min-width: 130px;
    font-weight: 700;
    color: #718096;
  }

  .lab-clienti-dettaglio-stats {
    margin: 12px 0 0;
    padding-top: 12px;
    border-top: 1px solid var(--sd-border);
  }

  .lab-clienti-badges-dettaglio {
    margin-top: 10px;
  }

  .lab-clienti-indietro {
    display: none;
  }

  .lab-clienti-storico-titolo {
    margin: 18px 0 10px;
    font-size: 0.82rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #4a5568;
  }

  .lab-clienti-storico {
    display: flex;
    flex-direction: column;
    gap: 12px;
    max-height: calc(100vh - 420px);
    overflow-y: auto;
  }

  .lab-clienti-ordine-riga {
    border: 1px solid var(--sd-border);
    border-radius: 10px;
    padding: 12px;
    background: var(--sd-bg);
  }

  .lab-clienti-ordine-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 8px;
  }

  .lab-clienti-ordine-id {
    font-size: 0.9rem;
    color: #1a202c;
  }

  .lab-clienti-ordine-meta {
    margin: 0 0 4px;
    font-size: 0.78rem;
    color: #4a5568;
  }

  .lab-clienti-ordine-meta span {
    font-weight: 700;
    color: #718096;
    margin-right: 4px;
  }

  .lab-clienti-ordine-azioni {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 10px;
  }

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

    .lab-clienti-grid {
      max-height: none;
    }

    .lab-clienti-indietro {
      display: inline-flex;
    }
  }

  .lab-pro-card-evidenziato {
    outline: 3px solid #48bb78;
    outline-offset: 2px;
    box-shadow: 0 0 0 5px rgba(72, 187, 120, 0.28);
    animation: labCardEvidenziaPulse 0.9s ease 2;
  }

  @keyframes labCardEvidenziaPulse {
    0%,
    100% {
      box-shadow: 0 0 0 5px rgba(72, 187, 120, 0.28);
    }
    50% {
      box-shadow: 0 0 0 9px rgba(72, 187, 120, 0.14);
    }
  }

  .lab-pro-kpi-value {
    font-size: 2rem;
    font-weight: 800;
    line-height: 1.1;
    color: #2d3748;
  }

  .lab-pro-kpi-label {
    margin-top: 6px;
    font-size: 0.78rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #718096;
  }

  .lab-pro-kpi-ritardo .lab-pro-kpi-value {
    color: #c53030;
  }

  .lab-pro-kpi-ritardo {
    border-color: #feb2b2;
    background: #fff5f5;
  }

  .lab-pro-kpi-lavorazione {
    border-color: #f6ad55;
    background: #fffaf0;
  }

  .lab-pro-kpi-lavorazione .lab-pro-kpi-value {
    color: #c05621;
  }

  .lab-pro-kpi-annullati {
    border-color: #e2e8f0;
    background: #f7fafc;
  }

  .lab-pro-kpi-annullati .lab-pro-kpi-value {
    color: #718096;
  }

  .oplab-nav-btn-sub {
    margin-left: 12px;
    padding-left: 14px;
    font-size: 0.88rem;
    opacity: 0.92;
  }

  .oplab-nav-btn-sub .oplab-nav-icon {
    font-size: 0.95rem;
  }

  .lab-pro-date-filtri {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: flex-end;
    margin-bottom: 10px;
  }

  .lab-pro-data-field {
    flex: 0 1 150px;
    min-width: 130px;
  }

  .lab-pro-data-field label {
    display: block;
    font-size: 0.78rem;
    color: #718096;
    margin-bottom: 4px;
  }

  .lab-pro-data-field input[type="date"] {
    width: 100%;
    padding: 8px 10px;
    border-radius: 10px;
    border: 1px solid #cbd5e0;
    background: #fff;
    color: #1a202c;
  }

  .lab-pro-sezione-annullati-titolo {
    color: #718096;
  }

  .lab-pro-card-annullato {
    opacity: 0.82;
    border-color: #e2e8f0 !important;
    background: #f8fafc !important;
  }

  .lab-pro-card-annullato .lab-pro-card-head {
    filter: grayscale(0.15);
  }

  .lab-badge-annullato {
    background: #edf2f7;
    color: #718096;
    border: 1px solid #cbd5e0;
  }

  .lab-calendario-wrap {
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 20px;
    padding: 20px;
    box-shadow: 0 8px 30px rgba(15, 23, 42, 0.06);
  }

  .lab-calendario-head {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 16px;
  }

  .lab-calendario-mese-titolo {
    flex: 1;
    text-align: center;
    margin: 0;
    font-size: 1.15rem;
    font-weight: 600;
    color: #1a202c;
    letter-spacing: -0.02em;
  }

  .lab-calendario-nav,
  .lab-calendario-oggi {
    min-width: 40px;
  }

  .lab-calendario-oggi {
    margin-left: auto;
  }

  .lab-calendario-help {
    margin: 0 0 14px;
    font-size: 0.9rem;
    color: #718096;
    line-height: 1.45;
  }

  .lab-calendario-mascotte-filtro {
    margin-bottom: 16px;
    max-width: 360px;
  }

  .lab-calendario-mascotte-filtro label {
    display: block;
    font-size: 0.78rem;
    font-weight: 600;
    color: #4a5568;
    margin-bottom: 6px;
    text-transform: uppercase;
    letter-spacing: 0.03em;
  }

  .lab-calendario-mascotte-select {
    width: 100%;
    padding: 10px 12px;
    border-radius: 12px;
    border: 1px solid #cbd5e0;
    background: #fff;
    color: #1a202c;
    font: inherit;
    cursor: pointer;
  }

  .lab-calendario-weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 6px;
    margin-bottom: 8px;
    padding: 0 2px;
  }

  .lab-calendario-weekdays span {
    text-align: center;
    font-size: 0.72rem;
    font-weight: 600;
    color: #a0aec0;
    text-transform: uppercase;
    letter-spacing: 0.04em;
  }

  .lab-calendario-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 6px;
  }

  .lab-calendario-day {
    position: relative;
    min-height: 72px;
    border: none;
    border-radius: 14px;
    background: #f8fafc;
    color: #2d3748;
    font: inherit;
    cursor: default;
    padding: 8px 8px 6px;
    text-align: left;
    transition: background 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
  }

  .lab-calendario-day.is-outside {
    background: transparent;
    pointer-events: none;
  }

  .lab-calendario-day.is-today {
    box-shadow: inset 0 0 0 2px #3182ce;
  }

  .lab-calendario-day.is-occupied-mascotte {
    cursor: pointer;
    background: rgba(49, 130, 206, 0.18);
    border: 1px solid rgba(49, 130, 206, 0.35);
  }

  .lab-calendario-day.is-occupied-mascotte:hover {
    background: rgba(49, 130, 206, 0.28);
    transform: translateY(-1px);
  }

  .lab-calendario-day.is-occupied-mascotte-red {
    cursor: pointer;
    background: rgba(229, 62, 62, 0.22);
    border: 1px solid rgba(229, 62, 62, 0.55);
    box-shadow: inset 0 0 0 1px rgba(254, 178, 178, 0.35);
  }

  .lab-calendario-day.is-occupied-mascotte-red:hover {
    background: rgba(229, 62, 62, 0.32);
    transform: translateY(-1px);
  }

  .lab-calendario-day.is-occupied-mascotte-red .lab-calendario-day-num {
    color: #fff;
    font-weight: 700;
  }

  .lab-calendario-day.is-selected {
    background: #ebf8ff;
    box-shadow: inset 0 0 0 2px #4299e1;
  }

  .lab-calendario-day.is-occupied-mascotte-red.is-selected {
    background: rgba(229, 62, 62, 0.38);
    box-shadow: inset 0 0 0 2px #fc8181;
  }

  .lab-calendario-day:disabled {
    opacity: 1;
  }

  .lab-calendario-day-num {
    display: block;
    font-size: 0.95rem;
    font-weight: 600;
    line-height: 1.2;
  }

  .lab-calendario-day-dots {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-top: 8px;
  }

  .lab-calendario-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    flex: 0 0 auto;
  }

  .lab-calendario-dot.is-active {
    background: #3182ce;
  }

  .lab-calendario-dot.is-red {
    background: #e53e3e;
    box-shadow: 0 0 0 2px rgba(254, 178, 178, 0.45);
  }

  .lab-calendario-dot.is-annullato {
    background: #a0aec0;
  }

  .lab-calendario-day-count {
    margin-left: auto;
    font-size: 0.72rem;
    font-weight: 600;
    color: #718096;
  }

  .lab-calendario-giorno-panel {
    margin-top: 20px;
    padding-top: 18px;
    border-top: 1px solid #e2e8f0;
  }

  .lab-calendario-giorno-titolo {
    margin: 0 0 12px;
    font-size: 1rem;
    font-weight: 600;
    color: #2d3748;
  }

  .lab-calendario-giorno-ordini {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 14px;
  }

  .lab-calendario-ordine-riga {
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 14px;
    padding: 14px 16px;
  }

  .lab-calendario-ordine-riga.is-annullato {
    opacity: 0.78;
    border-color: #cbd5e0;
    background: #edf2f7;
  }

  .lab-calendario-ordine-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 10px;
  }

  .lab-calendario-ordine-id {
    font-size: 0.95rem;
    color: #1a202c;
  }

  .lab-calendario-ordine-row {
    margin: 0 0 6px;
    font-size: 0.88rem;
    color: #2d3748;
    line-height: 1.4;
  }

  .lab-calendario-ordine-lbl {
    color: #718096;
    font-weight: 600;
    margin-right: 4px;
  }

  .lab-oplab-toast-stack {
    position: fixed;
    bottom: 22px;
    right: 22px;
    z-index: 10060;
    display: flex;
    flex-direction: column;
    gap: 8px;
    pointer-events: none;
  }

  .lab-oplab-toast {
    pointer-events: auto;
    padding: 12px 16px;
    border-radius: 12px;
    background: #1a202c;
    color: #f7fafc;
    font-size: 0.9rem;
    font-weight: 500;
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.22);
    animation: labOrdineToastIn 0.28s ease;
  }

  .lab-oplab-toast-success {
    background: #22543d;
  }

  .lab-oplab-toast-warning {
    background: #744210;
  }

  .lab-oplab-toast-out {
    animation: labOrdineToastOut 0.28s ease forwards;
  }

  .lab-ordine-toast-stack {
    position: fixed;
    top: 18px;
    right: 18px;
    z-index: 10050;
    display: flex;
    flex-direction: column;
    gap: 10px;
    max-width: min(360px, calc(100vw - 36px));
    pointer-events: none;
  }

  .lab-ordine-toast {
    pointer-events: auto;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    border-radius: 14px;
    background: #1a202c;
    color: #f7fafc;
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.28);
    border: 1px solid rgba(255, 255, 255, 0.08);
    cursor: pointer;
    animation: labOrdineToastIn 0.32s ease;
  }

  .lab-ordine-toast-out {
    animation: labOrdineToastOut 0.28s ease forwards;
  }

  @keyframes labOrdineToastIn {
    from {
      opacity: 0;
      transform: translateX(24px);
    }
    to {
      opacity: 1;
      transform: translateX(0);
    }
  }

  @keyframes labOrdineToastOut {
    from {
      opacity: 1;
      transform: translateX(0);
    }
    to {
      opacity: 0;
      transform: translateX(24px);
    }
  }

  .lab-ordine-toast-icon {
    flex: 0 0 auto;
    font-size: 1.35rem;
    line-height: 1;
  }

  .lab-ordine-toast-body {
    flex: 1 1 auto;
    min-width: 0;
  }

  .lab-ordine-toast-title {
    font-size: 0.92rem;
    font-weight: 700;
    line-height: 1.25;
  }

  .lab-ordine-toast-meta {
    margin-top: 3px;
    font-size: 0.8rem;
    color: #cbd5e0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .lab-ordine-toast-apri {
    flex: 0 0 auto;
    border: none;
    border-radius: 999px;
    padding: 7px 14px;
    font-size: 0.78rem;
    font-weight: 700;
    background: #48bb78;
    color: #fff;
    cursor: pointer;
  }

  .lab-ordine-toast-apri:hover {
    background: #38a169;
  }

  .lab-pro-sezione-titolo-lavorazione {
    color: #c05621;
    border-bottom-color: #f6ad55;
  }

  .lab-pro-card-lavorazione {
    border-color: #f6ad55;
    background: #fffaf0;
    box-shadow: 0 0 0 1px rgba(246, 173, 85, 0.35);
  }

  .lab-filtro-btn[data-lab-filtro="In lavorazione"].active {
    background: #ed8936;
    border-color: #dd6b20;
    color: #fff;
  }

  .lab-stato-btn-lavorazione:not(.lab-stato-btn-lavorazione-active) {
    border-color: #f6ad55;
    color: #c05621;
    background: #fffaf0;
  }

  .lab-stato-btn-lavorazione-active,
  .lab-stato-btn-lavorazione.btn-primary {
    background: #ed8936 !important;
    border-color: #dd6b20 !important;
    color: #fff !important;
  }

  .lab-pro-vista-nav {
    display: flex;
    gap: 8px;
    margin-bottom: 16px;
  }

  .lab-vista-btn.active {
    background: var(--ph-colore-primario, #667eea);
    color: #fff;
    border-color: transparent;
  }

  .lab-pro-filtri-wrap {
    display: flex;
    flex-direction: column;
    flex-wrap: wrap;
    gap: 12px;
    align-items: stretch;
    justify-content: flex-start;
    margin-bottom: 18px;
  }

  .lab-pro-filtri {
    flex: 1 1 auto;
  }

  .lab-pro-sezione {
    margin-bottom: 24px;
  }

  .lab-pro-sezione-titolo {
    margin: 0 0 12px;
    font-size: 0.9rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #4a5568;
    padding-bottom: 8px;
    border-bottom: 2px solid #e2e8f0;
  }

  .lab-pro-sezione-ritardi-titolo {
    color: #c53030;
    border-bottom-color: #fc8181;
  }

  .lab-pro-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
  }

  .oplab-shell .lab-pro-card {
    position: relative;
    background: var(--sd-card);
    border: 1px solid var(--sd-border);
    border-radius: var(--sd-radius);
    padding: 16px;
    box-shadow: var(--sd-shadow);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
  }

  .oplab-shell .lab-pro-card:hover {
    transform: translateY(-1px);
    box-shadow: var(--sd-shadow-hover);
  }

  .lab-pro-card {
    position: relative;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    padding: 14px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
  }

  .lab-pro-card-ritardo {
    border-color: #fc8181;
    background: #fff5f5;
    box-shadow: 0 0 0 1px #fed7d7;
  }

  .lab-pro-badge-ritardo {
    position: absolute;
    top: 10px;
    right: 10px;
    background: #e53e3e;
    color: #fff;
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.05em;
    padding: 3px 8px;
    border-radius: 4px;
  }

  .lab-pro-card-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 8px;
    padding-right: 72px;
  }

  .lab-pro-card-ritardo .lab-pro-card-head {
    padding-right: 88px;
  }

  .lab-pro-card-id {
    font-size: 1.05rem;
    color: #2d3748;
  }

  .lab-pro-card-cliente {
    margin: 0 0 6px;
    font-size: 1rem;
    font-weight: 600;
    color: #2d3748;
  }

  .lab-pro-card-meta {
    margin: 0 0 4px;
    font-size: 0.85rem;
    color: #4a5568;
  }

  .lab-pro-card-meta span {
    color: #718096;
    font-weight: 600;
  }

  .lab-pro-card-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px solid #edf2f7;
  }

  .lab-card-stato-label {
    display: flex;
    flex-direction: column;
    gap: 2px;
    font-size: 0.72rem;
    font-weight: 600;
    color: #718096;
    text-transform: uppercase;
  }

  .lab-card-stato-select {
    font-size: 0.82rem;
    padding: 4px 6px;
    border-radius: 6px;
    border: 1px solid #cbd5e0;
    min-width: 120px;
  }

  .lab-archivio-desc {
    margin: 0 0 12px;
    color: #718096;
    font-size: 0.9rem;
  }

  .lab-archivio-filtri {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 20px;
    margin-bottom: 16px;
    align-items: flex-end;
  }

  .lab-archivio-data {
    flex: 0 1 160px;
  }

  .lab-archivio-ricerca {
    flex: 1 1 220px;
    min-width: 180px;
  }

  @media (max-width: 1100px) {
    .lab-pro-kpi-grid {
      grid-template-columns: repeat(3, 1fr);
    }

    .lab-pro-grid {
      grid-template-columns: repeat(2, 1fr);
    }
  }

  @media (max-width: 1024px) {
    .oplab-shell {
      --sd-sidebar-width: 72px;
    }

    .oplab-nav-label {
      display: none;
    }

    .oplab-nav-btn {
      justify-content: center;
      padding: 12px 8px;
    }

    .oplab-sidebar-actions .oplab-btn-action {
      font-size: 0;
      padding: 10px;
    }

    .oplab-sidebar-actions .oplab-btn-action::after {
      font-size: 0.82rem;
    }

    .oplab-sidebar-actions .btn-primary.oplab-btn-action::after {
      content: "+";
      font-size: 1.1rem;
      font-weight: 700;
    }

    .oplab-main {
      padding: 16px 18px 24px;
    }

    .oplab-stampe-grid {
      grid-template-columns: 1fr;
    }
  }

  @media (max-width: 1024px) {
    .oplab-hero-header {
      min-height: 80px;
      padding: 12px 18px;
      gap: 14px;
    }

    .oplab-brand-logo-header {
      height: 54px;
      max-height: 54px;
    }
  }

  @media (max-width: 768px) {
    .oplab-login-logo-full {
      max-width: 260px;
    }

    .oplab-hero-header:not(.oplab-header-premium) {
      min-height: auto;
      flex-direction: column;
      align-items: stretch;
      padding: 12px 14px;
      gap: 10px;
    }

    .oplab-hero-brand {
      gap: 10px;
    }

    .oplab-brand-subtitle {
      font-size: 0.72rem;
    }

    .oplab-hero-actions {
      width: 100%;
      justify-content: flex-end;
    }

    .oplab-hero-actions .lab-sd-user-slot,
    .oplab-hero-header .lab-sd-user-bar.user-bar,
    .oplab-hero-header .user-bar.lab-sd-user-bar {
      width: 100%;
      justify-content: flex-end;
      flex-wrap: wrap;
    }

    .oplab-body {
      flex-direction: column;
    }

    .oplab-sidebar {
      width: 100%;
      flex-direction: row;
      flex-wrap: wrap;
      padding: 10px 12px;
      border-right: none;
      border-bottom: 1px solid rgba(94, 234, 212, 0.12);
    }

    .oplab-sidebar-nav {
      flex-direction: row;
      flex-wrap: wrap;
      flex: 1 1 100%;
      gap: 6px;
    }

    .oplab-nav-btn {
      flex: 1 1 auto;
      min-width: calc(50% - 6px);
      justify-content: center;
    }

    .oplab-nav-label {
      display: inline;
      font-size: 0.78rem;
    }

    .oplab-sidebar-actions {
      flex-direction: row;
      flex: 1 1 100%;
      border-top: none;
      padding-top: 0;
      gap: 8px;
    }

    .oplab-sidebar-actions .oplab-btn-action {
      flex: 1;
      font-size: 0.82rem;
    }

    .oplab-sidebar-actions .oplab-btn-action::after {
      content: none;
    }

    .lab-pro-kpi-grid {
      grid-template-columns: repeat(2, 1fr);
      gap: 12px;
    }

    .lab-pro-grid {
      grid-template-columns: 1fr;
    }

    .oplab-page-title {
      font-size: 1.25rem;
    }
  }

  .lab-panel-interno {
    padding-top: 4px;
  }

  .lab-header-interno {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    padding: 16px 18px;
    border-radius: 12px;
    background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
    border: 1px solid #e2e8f0;
  }

  .lab-header-titolo {
    margin: 0 0 4px;
    font-size: 1.45rem;
    font-weight: 700;
    color: #2d3748;
  }

  .lab-header-sottotitolo {
    margin: 0;
    font-size: 0.92rem;
    color: #718096;
  }

  .lab-header-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
  }

  .lab-stampa-periodo-inline {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
    margin-bottom: 16px;
    padding: 12px 14px;
    background: #f7fafc;
    border-radius: 8px;
    border: 1px solid #e2e8f0;
  }

  .lab-manuale-form .lab-manuale-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px 16px;
  }

  .lab-manuale-note,
  .lab-manuale-file,
  .lab-cli-full {
    grid-column: 1 / -1;
  }

  .lab-man-cerca-cliente-wrap {
    grid-column: 1 / -1;
    position: relative;
  }

  .lab-cerca-cliente-risultati {
    position: absolute;
    z-index: 20;
    left: 0;
    right: 0;
    top: calc(100% + 4px);
    max-height: 220px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid var(--sd-border);
    border-radius: 10px;
    box-shadow: var(--sd-shadow);
  }

  .lab-cerca-cliente-item {
    display: block;
    width: 100%;
    text-align: left;
    padding: 10px 12px;
    border: none;
    border-bottom: 1px solid #edf2f7;
    background: transparent;
    font-size: 0.84rem;
    color: #2d3748;
    cursor: pointer;
  }

  .lab-cerca-cliente-item:hover,
  .lab-cerca-cliente-item:focus {
    background: #ebf8ff;
    outline: none;
  }

  .lab-cerca-cliente-item:last-child {
    border-bottom: none;
  }

  .lab-cerca-cliente-vuoto {
    margin: 0;
    padding: 12px;
    font-size: 0.84rem;
    color: #718096;
    font-style: italic;
  }

  .modal-box-lab-nuovo {
    max-width: 720px;
  }

  .modal-box-lab-cliente {
    max-width: 680px;
  }

  .lab-mod-allegato-attuale {
    margin-bottom: 8px;
    font-size: 0.9rem;
  }

  .lab-mod-allegato-link a {
    font-weight: 600;
    color: var(--ph-colore-primario, #667eea);
  }

  .lab-mod-no-allegato {
    color: #718096;
    font-size: 0.88rem;
    margin: 0 0 8px;
  }

  .modal-lab-modifica-wrap {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid #e2e8f0;
  }

  .config-admin-card .config-admin-header {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px 16px;
    margin-bottom: 16px;
  }

  .config-admin-card .config-admin-header h3 {
    margin: 0 0 4px;
  }

  .config-admin-card .config-admin-header .card-subtitle {
    margin: 0;
  }

  .config-utenti-lista,
  .config-tenants-lista {
    display: flex;
    flex-direction: column;
    gap: 16px;
  }

  .config-utente-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
  }

  .config-utente-card-nuovo,
  .config-tenant-card-nuovo {
    border-color: var(--ph-colore-primario, #667eea);
    box-shadow: 0 0 0 1px rgba(102, 126, 234, 0.25);
  }

  .config-field-hint {
    font-size: 0.78rem;
    color: #718096;
    font-weight: 400;
  }

  .config-utente-sezione textarea[data-f="permessiJson"] {
    width: 100%;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 0.82rem;
    min-height: 88px;
    padding: 8px 10px;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    resize: vertical;
  }

  .config-tenant-color-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
  }

  .config-tenant-color-picker {
    width: 48px;
    height: 40px;
    padding: 2px;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    cursor: pointer;
    background: #fff;
  }

  .config-tenant-color-hex {
    flex: 1;
    min-width: 120px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 0.88rem;
  }

  .config-tenant-preset-row {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 10px 0;
  }

  .config-tenant-preset-btn {
    font-size: 0.78rem;
  }

  .config-tenant-color-anteprima {
    margin-top: 8px;
    padding: 14px 16px;
    border-radius: 10px;
    color: #fff;
    font-weight: 600;
    font-size: 0.9rem;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
  }

  .config-tenant-logo-memo {
    margin: 10px 0;
    padding: 10px 12px;
    font-size: 0.78rem;
    line-height: 1.45;
    color: #4a5568;
    background: #f7fafc;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
  }

  .config-tenant-logo-preview-wrap {
    margin-top: 10px;
    padding: 12px;
    background: #1a202c;
    border-radius: 10px;
    text-align: center;
  }

  .config-tenant-logo-preview {
    max-width: 100%;
    max-height: 120px;
    object-fit: contain;
  }

  .config-tenant-logo-preview.hidden {
    display: none;
  }

  .config-utente-card {
    padding: 14px;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    background: #fafafa;
  }

  .config-utente-card-v2 {
    background: #fff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
  }

  .config-utente-header-v2 {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
    padding-bottom: 12px;
    border-bottom: 1px solid #e2e8f0;
  }

  .config-utente-titoli {
    display: flex;
    flex-direction: column;
    gap: 2px;
  }

  .config-utente-titoli strong {
    font-size: 1.05rem;
  }

  .config-utente-ruolo {
    font-size: 0.82rem;
    color: #718096;
    font-weight: 600;
  }

  .config-utente-attivo {
    font-size: 0.88rem;
    display: flex;
    align-items: center;
    gap: 6px;
  }

  .config-utente-sezione {
    margin-bottom: 14px;
  }

  .config-utente-sezione h4,
  .config-permessi-sezione h5 {
    margin: 0 0 8px;
    font-size: 0.82rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #4a5568;
  }

  .config-permessi-sezione {
    margin-bottom: 10px;
  }

  .config-utente-salva {
    margin-top: 8px;
  }

  .lab-config-v25-toolbar {
    margin-bottom: 12px;
  }

  .lab-config-table-v25 {
    font-size: 0.9rem;
  }

  .lab-config-table-v25 .lab-cfg-actions {
    white-space: nowrap;
  }

  .lab-config-table-v25 .lab-cfg-actions .btn {
    margin: 2px 0;
  }

  .lab-cfg-fieldset {
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    padding: 10px 12px;
    margin: 12px 0;
  }

  .lab-cfg-fieldset legend {
    font-size: 0.85rem;
    font-weight: 600;
    padding: 0 4px;
  }

  .lab-cfg-art-immagine-wrap {
    margin-top: 12px;
  }

  .lab-cfg-art-immagine-row {
    display: flex;
    gap: 16px;
    align-items: flex-start;
    flex-wrap: wrap;
    margin-bottom: 10px;
  }

  .lab-cfg-art-preview-wrap {
    width: 120px;
    height: 90px;
    border-radius: 12px;
    border: 1px solid #e2e8f0;
    background: #f8fafc;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
  }

  .lab-cfg-art-preview {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }

  .lab-cfg-art-preview-fallback {
    font-size: 0.75rem;
    color: #94a3b8;
    text-align: center;
    padding: 8px;
  }

  .lab-cfg-art-immagine-actions {
    flex: 1;
    min-width: 200px;
  }

  .lab-cfg-art-img-file {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
  }

  .lab-cfg-art-img-memo {
    margin: 8px 0 0;
    font-size: 0.78rem;
    line-height: 1.45;
    color: #64748b;
  }

  #lab-cfg-art-immagine-url {
    font-size: 0.82rem;
    color: #475569;
    background: #f1f5f9;
  }

  .lab-cfg-art-thumb-cell {
    width: 56px;
    min-width: 56px;
    max-width: 72px;
    vertical-align: middle;
  }

  .lab-cfg-art-thumb {
    width: 44px;
    height: 44px;
    object-fit: cover;
    border-radius: 8px;
    border: 1px solid rgba(148, 163, 184, 0.25);
    display: block;
    background: rgba(7, 19, 27, 0.45);
  }

  .lab-cfg-articoli-table .lab-cfg-art-row-actions {
    margin-top: 4px;
    margin-bottom: 0;
    gap: 4px;
  }

  .lab-cfg-articoli-table .lab-cfg-art-row-actions .btn {
    font-size: 0.68rem;
    padding: 2px 6px;
  }

  .lab-cfg-actions-cell {
    white-space: nowrap;
    min-width: 200px;
  }

  .lab-cfg-actions-cell .btn {
    font-size: 0.72rem;
    padding: 4px 8px;
  }

  .lab-cfg-art-no-img {
    color: #94a3b8;
    font-size: 0.85rem;
  }

  .lab-cfg-art-row-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 8px;
    margin-bottom: 6px;
  }

  .lab-cfg-art-url-mini {
    width: 100%;
    max-width: 220px;
    font-size: 0.68rem;
    padding: 4px 6px;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    background: #f8fafc;
    color: #64748b;
    margin-top: 4px;
  }

  .lab-cfg-art-url-empty {
    display: block;
    font-size: 0.72rem;
    color: #94a3b8;
    margin-top: 4px;
  }

  .lab-cfg-art-row-file {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
  }

  .login-forgot-wrap {
    display: block;
    text-align: center;
    margin: 14px 0 4px;
    padding: 0;
  }

  .btn-link-forgot {
    display: inline-block;
    background: none;
    border: none;
    padding: 8px 12px;
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--ph-colore-primario, #667eea);
    text-decoration: underline;
    cursor: pointer;
    line-height: 1.4;
  }

  .btn-link-forgot:hover,
  .btn-link-forgot:focus {
    color: #4c51bf;
    text-decoration: underline;
    outline: none;
  }

  #login-page .login-forgot-wrap {
    visibility: visible;
    opacity: 1;
  }

  .btn-reset-pwd-badge {
    background: #fff5f5;
    border: 1px solid #fc8181;
    color: #c53030;
  }

  .btn-reset-pwd-badge-active {
    animation: reset-pwd-pulse 1.5s ease-in-out infinite;
  }

  @keyframes reset-pwd-pulse {
    0%,
    100% {
      box-shadow: 0 0 0 0 rgba(229, 62, 62, 0.4);
    }
    50% {
      box-shadow: 0 0 0 6px rgba(229, 62, 62, 0);
    }
  }

  .reset-password-lista {
    display: flex;
    flex-direction: column;
    gap: 12px;
    max-height: 60vh;
    overflow-y: auto;
  }

  .reset-pwd-item {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 12px;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    background: #f7fafc;
  }

  .reset-pwd-item-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
  }

  .modal-box-small {
    max-width: 420px;
  }

  [data-lab-campo].hidden {
    display: none !important;
  }

  .config-permessi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 6px 12px;
    margin-bottom: 4px;
  }

  .config-perm-check {
    font-size: 0.9rem;
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    padding: 6px 8px;
    border-radius: 6px;
    background: #f7fafc;
    border: 1px solid #edf2f7;
    cursor: pointer;
    line-height: 1.3;
    color: #2d3748;
  }

  .config-perm-check input[type="checkbox"] {
    width: 16px;
    height: 16px;
    margin: 0;
    flex-shrink: 0;
  }

  .config-utente-permessi .config-permessi-sezione + .config-permessi-sezione {
    margin-top: 8px;
    padding-top: 8px;
    border-top: 1px dashed #e2e8f0;
  }

  .lab-stampa-excel {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 8pt;
    color: #111;
    padding: 8mm 10mm;
    margin: 0 auto;
  }

  .lab-stampa-a4 {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11pt;
    color: #111;
    padding: 12mm 14mm;
    max-width: 210mm;
    margin: 0 auto;
  }

  .lab-stampa-a4 h1 {
    font-size: 18pt;
    margin: 0 0 6px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
  }

  .lab-stampa-sub {
    margin: 0 0 16px;
    font-size: 11pt;
    color: #444;
  }

  .lab-stampa-giorno {
    margin-bottom: 14px;
    page-break-inside: avoid;
  }

  .lab-stampa-giorno h3 {
    font-size: 12pt;
    margin: 0 0 8px;
    padding-bottom: 4px;
    border-bottom: 2px solid #333;
  }

  .lab-stampa-ordine-card {
    border: 1px solid #ccc;
    border-radius: 6px;
    padding: 10px 12px;
    margin-bottom: 10px;
    page-break-inside: avoid;
  }

  .lab-stampa-ordine-card h4 {
    margin: 0 0 8px;
    font-size: 11pt;
  }

  .lab-stampa-dl {
    display: grid;
    grid-template-columns: 130px 1fr;
    gap: 4px 10px;
    margin: 0;
  }

  .lab-stampa-dl dt {
    font-weight: 700;
    margin: 0;
  }

  .lab-stampa-dl dd {
    margin: 0;
    word-break: break-word;
  }

  .lab-stampa-tabella-excel {
    width: 100%;
    border-collapse: collapse;
    font-size: 7.5pt;
    margin-bottom: 10px;
  }

  .lab-stampa-tabella-excel th,
  .lab-stampa-tabella-excel td {
    border: 1px solid #333;
    padding: 3px 5px;
    text-align: left;
    vertical-align: top;
  }

  .lab-stampa-tabella-excel th {
    background: #e8e8e8;
    font-weight: 700;
    white-space: nowrap;
  }

  @media print {
    @page {
      size: A4 landscape;
      margin: 10mm;
    }

    body.print-lab-ordini,
    body.print-lab-excel {
      margin: 0 !important;
      padding: 0 !important;
      background: #fff !important;
    }

    body.print-lab-ordini > *:not(#lab-ordini-stampa-container),
    body.print-lab-excel > *:not(#lab-ordini-stampa-container) {
      display: none !important;
    }

    body.print-lab-ordini #lab-ordini-stampa-container,
    body.print-lab-ordini #lab-ordini-stampa-container *,
    body.print-lab-excel #lab-ordini-stampa-container,
    body.print-lab-excel #lab-ordini-stampa-container * {
      visibility: visible !important;
    }

    body.print-lab-ordini #lab-ordini-stampa-container,
    body.print-lab-excel #lab-ordini-stampa-container {
      display: block !important;
      position: static !important;
      width: auto !important;
      height: auto !important;
      overflow: visible !important;
      z-index: auto !important;
      background: #fff !important;
    }

    body.print-lab-excel .lab-stampa-excel {
      width: 100%;
      max-width: none;
      padding: 0;
    }

    body.print-lab-excel .lab-stampa-tabella-excel {
      page-break-inside: auto;
    }

    body.print-lab-excel .lab-stampa-giorno {
      page-break-inside: avoid;
    }
  }

/* ============================================================
   OPLAB BRANDING v3 - SD OPERIS: header layout override
   ============================================================ */
#laboratorio .oplab-hero-header {
  min-height: 84px !important;
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 16px !important;
  padding: 12px 20px !important;
  grid-template-columns: none !important;
  overflow: visible !important;
}

#laboratorio .oplab-hero-brand {
  flex: 0 1 auto !important;
  min-width: 0 !important;
}

@media (min-width: 769px) {
  #laboratorio .oplab-brand-logo-header {
    width: auto !important;
    height: 58px !important;
    max-height: 58px !important;
    object-fit: contain !important;
  }
}

#laboratorio .oplab-hero-actions {
  flex: 0 0 auto !important;
  margin-right: 8px !important;
  justify-content: flex-end !important;
}

/* ============================================================
   OPLAB MOBILE UX v1.2 — PWA-style mobile experience
   Desktop (>768px): invariato. Mobile: drawer, header compatto, KPI 2 col.
   ============================================================ */

.oplab-hamburger-btn {
  display: none;
}

.oplab-sidebar-overlay {
  display: none;
}


body.oplab-nav-lock {
  overflow: hidden;
}

@media (min-width: 769px) {
  #laboratorio .oplab-hamburger-btn,
  #laboratorio .oplab-sidebar-overlay {
    display: none !important;
  }

}

@media (max-width: 768px) {
  /* OPLAB HEADER USE LOGO-HEADER v1.5 — ☰ logo-header.png 🟢 */
  #laboratorio .oplab-hero-header {
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    min-height: 82px !important;
    max-height: 82px !important;
    height: 82px !important;
    padding: 0 14px 0 12px !important;
    overflow: hidden !important;
    background:
      radial-gradient(circle at 12% 50%, rgba(124, 255, 79, 0.16), transparent 46%),
      radial-gradient(circle at 88% 40%, rgba(34, 184, 255, 0.18), transparent 42%),
      linear-gradient(135deg, #0b1220 0%, #0f172a 52%, #0b1f24 100%) !important;
  }

  #laboratorio .oplab-hero-header::after {
    opacity: 0.55;
    height: 82px;
  }

  #laboratorio .oplab-hamburger-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    order: 0;
    flex-shrink: 0;
    width: 42px;
    height: 42px;
    min-height: 42px;
    min-width: 42px;
    margin: 0;
    padding: 0;
    border: 1px solid rgba(124, 255, 79, 0.32);
    border-radius: 14px;
    background: rgba(15, 23, 42, 0.72);
    color: #f8fafc;
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.22);
  }

  #laboratorio .oplab-hamburger-btn:active {
    background: rgba(34, 184, 255, 0.18);
  }

  #laboratorio .oplab-hero-brand {
    order: 1;
    flex: 1 1 auto;
    min-width: 0;
    align-items: center !important;
    justify-content: center !important;
    overflow: hidden;
  }

  #laboratorio .mobile-brand-logo,
  #laboratorio .oplab-header-logo {
    width: 260px !important;
    max-width: 52vw !important;
    height: 54px !important;
    max-height: 54px !important;
    object-fit: contain !important;
    object-position: center center !important;
    display: block !important;
    flex-shrink: 1 !important;
    margin: 0 auto;
  }

  #laboratorio .oplab-hero-actions {
    order: 2;
    flex: 0 0 auto !important;
    width: auto !important;
    margin-right: 0 !important;
    justify-content: flex-end !important;
  }

  #laboratorio .oplab-hero-actions .lab-sd-user-slot,
  #laboratorio .oplab-hero-header .lab-sd-user-bar.user-bar,
  #laboratorio .oplab-hero-header .user-bar.lab-sd-user-bar {
    width: auto !important;
    flex-wrap: nowrap !important;
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
    border: none !important;
    min-height: 0 !important;
  }

  #laboratorio .oplab-hero-header .lab-sd-user-bar .user-bar-legacy-info,
  #laboratorio .oplab-hero-header .lab-sd-user-bar .user-bar-operator-line,
  #laboratorio .oplab-hero-header .lab-sd-user-bar #btn-sync-google,
  #laboratorio .oplab-hero-header .lab-sd-user-bar .btn-danger,
  #laboratorio .oplab-hero-header .lab-sd-user-bar .btn-reset-pwd-badge {
    display: none !important;
  }

  #laboratorio .oplab-hero-header .lab-sd-user-bar .user-bar-actions {
    gap: 0 !important;
  }

  #laboratorio .oplab-hero-header .lab-sd-user-bar .google-stato-wrap {
    margin: 0;
  }

  #laboratorio .oplab-hero-header .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal {
    width: 28px !important;
    height: 28px !important;
    min-width: 28px !important;
    max-width: 28px !important;
    padding: 0 !important;
    margin: 0 !important;
    border-radius: 50% !important;
    border-width: 2px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex-shrink: 0 !important;
    background: rgba(15, 23, 42, 0.55) !important;
  }

  #laboratorio .oplab-hero-header .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal .google-stato-emoji {
    width: 16px !important;
    height: 16px !important;
    font-size: 0 !important;
    line-height: 0 !important;
    border-radius: 50% !important;
    display: block !important;
    overflow: hidden !important;
    background: #d63031;
    box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.08);
  }

  #laboratorio .oplab-hero-header .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="online"] {
    border-color: rgba(0, 184, 148, 0.55) !important;
    background: rgba(0, 184, 148, 0.12) !important;
  }

  #laboratorio .oplab-hero-header .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="online"] .google-stato-emoji {
    background: #00b894 !important;
    box-shadow: 0 0 10px rgba(0, 184, 148, 0.45);
  }

  #laboratorio .oplab-hero-header .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="syncing"] {
    border-color: rgba(241, 196, 15, 0.55) !important;
    background: rgba(241, 196, 15, 0.1) !important;
  }

  #laboratorio .oplab-hero-header .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="syncing"] .google-stato-emoji {
    background: #f1c40f !important;
    box-shadow: 0 0 10px rgba(241, 196, 15, 0.4);
    animation: oplab-sync-pulse 1s ease-in-out infinite;
  }

  #laboratorio .oplab-hero-header .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="offline"] .google-stato-emoji,
  #laboratorio .oplab-hero-header .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="error"] .google-stato-emoji {
    background: #d63031 !important;
    box-shadow: 0 0 8px rgba(214, 48, 49, 0.4);
  }

  #laboratorio .oplab-hero-header .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="offline"],
  #laboratorio .oplab-hero-header .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="error"] {
    border-color: rgba(214, 48, 49, 0.5) !important;
    background: rgba(214, 48, 49, 0.1) !important;
  }

  /* --- Priorità 1: sidebar drawer --- */
  #laboratorio .oplab-body {
    flex-direction: row !important;
    position: relative;
  }

  #laboratorio .oplab-sidebar-overlay {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 240;
    background: rgba(15, 23, 42, 0.58);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.25s ease, visibility 0.25s ease;
  }

  #laboratorio.oplab-mobile-nav-open .oplab-sidebar-overlay {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }

  #laboratorio .oplab-sidebar {
    position: fixed !important;
    top: 0;
    left: 0;
    bottom: 0;
    z-index: 250;
    width: min(288px, 86vw) !important;
    max-width: 86vw;
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    padding: 16px 14px !important;
    border-right: 1px solid rgba(94, 234, 212, 0.12) !important;
    border-bottom: none !important;
    transform: translateX(-105%);
    transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 8px 0 32px rgba(0, 0, 0, 0.35);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }

  #laboratorio.oplab-mobile-nav-open .oplab-sidebar {
    transform: translateX(0);
  }

  #laboratorio .oplab-sidebar-nav {
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    gap: 6px !important;
  }

  #laboratorio .oplab-nav-btn {
    min-height: 48px;
    flex: none !important;
    width: 100% !important;
    justify-content: flex-start !important;
    padding: 12px 14px !important;
    border-radius: 12px;
  }

  #laboratorio .oplab-nav-label {
    display: inline !important;
    font-size: 0.9rem !important;
  }

  #laboratorio .oplab-sidebar-actions {
    flex-direction: column !important;
    border-top: 1px solid rgba(94, 234, 212, 0.12) !important;
    padding-top: 12px !important;
    margin-top: auto;
  }

  #laboratorio .oplab-sidebar-actions .oplab-btn-action {
    min-height: 48px;
    font-size: 0.88rem !important;
    flex: none !important;
  }

  #laboratorio .oplab-sidebar-actions .oplab-btn-action::after {
    content: none !important;
  }

  #laboratorio .oplab-sidebar-profile {
    padding: 8px 10px 14px;
  }

  #laboratorio .oplab-sidebar-account-actions .btn {
    min-height: 48px;
    font-size: 0.88rem;
  }

  #laboratorio .oplab-main {
    width: 100%;
    padding: 12px 14px 20px !important;
  }

  /* --- FIX 4: dashboard KPI 2 colonne --- */
  #laboratorio .oplab-kpi-desktop-only {
    display: none !important;
  }

  #laboratorio .lab-pro-kpi-grid {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 10px !important;
  }

  #laboratorio .oplab-shell .lab-pro-kpi-card,
  #laboratorio .lab-pro-kpi-card {
    width: 100%;
    min-height: 68px;
    padding: 12px 14px !important;
    text-align: center;
    display: flex;
    flex-direction: column;
    justify-content: center;
    border-radius: 14px;
  }

  #laboratorio .lab-pro-kpi-value {
    font-size: 1.45rem !important;
    line-height: 1.1;
  }

  #laboratorio .lab-pro-kpi-label {
    font-size: 0.68rem !important;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    margin-top: 4px;
    line-height: 1.25;
  }

  #laboratorio .lab-pro-kpi-nuovi {
    min-height: auto;
    text-align: left;
  }

  #laboratorio .lab-pro-kpi-preview-ora {
    font-size: 0.72rem;
    line-height: 1.35;
    word-break: break-word;
  }

  #laboratorio .oplab-page-head {
    margin-bottom: 14px;
  }

  #laboratorio .oplab-page-sub {
    font-size: 0.84rem;
  }

  /* --- Priorità 4: touch targets --- */
  #laboratorio .btn,
  #laboratorio .oplab-nav-btn,
  #laboratorio .oplab-stampa-card,
  #laboratorio .lab-pro-filtri .btn,
  #laboratorio .lab-pro-filtri button,
  #laboratorio .lab-clienti-card,
  #laboratorio .lab-pro-card,
  #laboratorio .oplab-btn-action {
    min-height: 48px;
    touch-action: manipulation;
  }

  #laboratorio .btn-small {
    min-height: 44px;
    padding-top: 10px;
    padding-bottom: 10px;
  }

  .login-box-oplab-v3 .btn {
    min-height: 48px;
    touch-action: manipulation;
  }

  /* --- Priorità 5: form mobile --- */
  #laboratorio input,
  #laboratorio select,
  #laboratorio textarea,
  #laboratorio .lab-pro-ricerca-input,
  .modal-box-lab-nuovo input,
  .modal-box-lab-nuovo select,
  .modal-box-lab-nuovo textarea,
  .modal-box-lab-cliente input,
  .modal-box-lab-cliente select,
  .modal-box-lab-cliente textarea,
  .login-box-oplab-v3 input {
    font-size: 16px !important;
    max-width: 100%;
  }

  #laboratorio select,
  .modal-box-lab-nuovo select,
  .modal-box-lab-cliente select {
    min-height: 48px;
  }

  #laboratorio .lab-manuale-form .form-group,
  .modal-box-lab-nuovo .form-group {
    width: 100%;
  }

  /* --- Priorità 6: tabelle scroll --- */
  #laboratorio .oplab-table-scroll,
  #laboratorio .lab-ordini-stampa-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
  }

  #laboratorio table {
    display: block;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  /* --- Priorità 7: look app --- */
  #laboratorio.oplab-shell {
    --sd-radius: 14px;
  }

  #laboratorio .lab-pro-grid {
    gap: 12px !important;
  }

  #laboratorio .lab-pro-card,
  #laboratorio .lab-clienti-card,
  #laboratorio .oplab-stampa-card {
    border-radius: 14px;
  }

  #laboratorio .lab-pro-filtri-wrap {
    gap: 8px;
    margin-bottom: 12px;
  }

  #laboratorio .lab-clienti-layout {
    gap: 12px;
  }

  #laboratorio .modal-box-lab-nuovo,
  #laboratorio .modal-box-lab-cliente {
    max-width: calc(100vw - 24px);
    margin: 12px;
  }
}

@keyframes oplab-sync-pulse {
  0%,
  100% {
    opacity: 1;
    transform: scale(1);
  }
  50% {
    opacity: 0.72;
    transform: scale(0.92);
  }
}

/* OPLAB HEADER USE LOGO-HEADER v1.5 — sync dot desktop + schermi piccoli */
@media (min-width: 769px) {
  #laboratorio .oplab-hero-header.oplab-header-premium {
    min-height: 84px !important;
    padding: 14px 22px !important;
  }

  #laboratorio .oplab-hero-header.oplab-header-premium .oplab-brand-logo-header {
    height: 58px !important;
    max-height: 58px !important;
    max-width: none !important;
    object-position: left center !important;
    margin: 0;
  }

  #laboratorio .oplab-hero-header.oplab-header-premium .oplab-hero-brand {
    justify-content: flex-start !important;
  }

  #laboratorio .oplab-hero-header.oplab-header-premium .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal {
    width: 28px !important;
    height: 28px !important;
    min-width: 28px !important;
    padding: 0 !important;
    border-radius: 50% !important;
    border-width: 2px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
  }

  #laboratorio .oplab-hero-header.oplab-header-premium .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal .google-stato-emoji {
    width: 16px !important;
    height: 16px !important;
    font-size: 0 !important;
    border-radius: 50% !important;
    display: block !important;
    background: #d63031;
  }

  #laboratorio .oplab-hero-header.oplab-header-premium .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="online"] .google-stato-emoji {
    background: #00b894 !important;
  }

  #laboratorio .oplab-hero-header.oplab-header-premium .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="syncing"] .google-stato-emoji {
    background: #f1c40f !important;
    animation: oplab-sync-pulse 1s ease-in-out infinite;
  }

  #laboratorio .oplab-hero-header.oplab-header-premium .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="offline"] .google-stato-emoji,
  #laboratorio .oplab-hero-header.oplab-header-premium .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal[data-stato="error"] .google-stato-emoji {
    background: #d63031 !important;
  }

  #laboratorio .oplab-hero-header.oplab-header-premium .lab-sd-user-bar #btn-sync-google,
  #laboratorio .oplab-hero-header.oplab-header-premium .lab-sd-user-bar .btn-danger {
    display: inline-flex !important;
  }
}

@media (max-width: 390px) {
  #laboratorio .oplab-hero-header {
    gap: 8px !important;
    padding: 0 10px 0 8px !important;
  }

  #laboratorio .oplab-hamburger-btn {
    width: 38px;
    height: 38px;
    min-width: 38px;
    min-height: 38px;
  }
}

/* DEBUG HEADER MOBILE — logo-header.png: larghezza guida, no altezza fissa */
@media (max-width: 768px) {
  #laboratorio .oplab-hero-header {
    overflow: visible !important;
  }

  #laboratorio .header-brand,
  #laboratorio .mobile-brand,
  #laboratorio .oplab-hero-brand {
    flex: 1 1 40% !important;
    min-width: 0 !important;
    max-width: none !important;
    overflow: visible !important;
    justify-content: center !important;
  }

  #laboratorio .header-brand img,
  #laboratorio .mobile-brand img,
  #laboratorio .oplab-header-logo,
  #laboratorio .oplab-brand-logo-header {
    width: 220px !important;
    max-width: 220px !important;
    height: auto !important;
    max-height: none !important;
    min-width: 0 !important;
    object-fit: contain !important;
    display: block !important;
    flex-shrink: 0 !important;
    margin: 0 auto;
    transform: none !important;
    zoom: 1 !important;
  }
}

@media (max-width: 390px) {
  #laboratorio .header-brand img,
  #laboratorio .mobile-brand img,
  #laboratorio .oplab-header-logo,
  #laboratorio .oplab-brand-logo-header {
    width: min(220px, 58vw) !important;
    max-width: min(220px, 58vw) !important;
  }
}

/* ============================================================
   OPLAB RESPONSIVE SEPARATION v1
   Mobile (<=768) e desktop (>=769) con regole indipendenti.
   ============================================================ */

@media (max-width: 768px) {
  .desktop-only {
    display: none !important;
  }
}

@media (min-width: 769px) {
  .mobile-only {
    display: none !important;
  }
}

/* --- MOBILE: header compatto --- */
@media (max-width: 768px) {
  #laboratorio .oplab-mobile-header.oplab-hero-header {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
  }

  #laboratorio .oplab-mobile-header .oplab-hero-brand.oplab-mobile-brand {
    flex: 1 1 auto !important;
    justify-content: center !important;
    min-width: 0 !important;
    overflow: visible !important;
  }

  #laboratorio .oplab-mobile-header .oplab-header-actions-slot {
    flex: 0 0 auto !important;
    justify-content: flex-end !important;
  }

  #laboratorio .oplab-mobile-header .lab-sd-user-bar .user-bar-operator-line,
  #laboratorio .oplab-mobile-header .lab-sd-user-bar .user-bar-legacy-info,
  #laboratorio .oplab-mobile-header .lab-sd-user-bar #btn-sync-google,
  #laboratorio .oplab-mobile-header .lab-sd-user-bar .btn-danger,
  #laboratorio .oplab-mobile-header .lab-sd-user-bar .btn-reset-pwd-badge {
    display: none !important;
  }

  #laboratorio .oplab-mobile-header .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal {
    display: inline-flex !important;
  }

  /* --- MOBILE: drawer profilo completo --- */
  #laboratorio .oplab-mobile-drawer-profile {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    width: 100% !important;
    padding: 12px 10px 14px !important;
    margin-bottom: 4px !important;
    border-bottom: 1px solid rgba(94, 234, 212, 0.12) !important;
    flex-shrink: 0 !important;
  }

  #laboratorio .oplab-mobile-drawer-profile .oplab-sidebar-profile-text {
    display: block !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
    overflow: visible !important;
  }

  #laboratorio .oplab-mobile-drawer-profile .oplab-sidebar-profile-name {
    display: block !important;
    font-weight: 700 !important;
    font-size: 0.95rem !important;
    color: #e6fffa !important;
    line-height: 1.3 !important;
    word-break: break-word !important;
  }

  #laboratorio .oplab-mobile-drawer-profile .oplab-sidebar-profile-role {
    display: block !important;
    font-size: 13px !important;
    color: rgba(167, 243, 208, 0.9) !important;
    line-height: 1.35 !important;
    margin-top: 2px !important;
    word-break: break-word !important;
  }

  #laboratorio .oplab-mobile-drawer-profile .oplab-sidebar-profile-avatar {
    width: 40px !important;
    height: 40px !important;
    min-width: 40px !important;
    border-radius: 50% !important;
    flex-shrink: 0 !important;
  }
}

/* --- DESKTOP: header con logo valorizzato, no operatore --- */
@media (min-width: 769px) {
  #laboratorio.oplab-shell {
    --sd-sidebar-width: 240px;
  }

  #laboratorio .oplab-nav-label {
    display: inline !important;
  }

  #laboratorio .oplab-nav-btn {
    justify-content: flex-start !important;
    padding: 10px 12px !important;
  }

  #laboratorio .oplab-desktop-header.oplab-hero-header {
    position: relative !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    min-height: 88px !important;
    padding: 14px 24px !important;
  }

  #laboratorio .oplab-desktop-header .oplab-hero-brand.oplab-desktop-brand {
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    transform: translate(-50%, -50%) !important;
    z-index: 2 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: auto !important;
    max-width: min(520px, 58vw) !important;
    pointer-events: none !important;
  }

  #laboratorio .oplab-desktop-header .oplab-desktop-brand .oplab-brand-logo-header,
  #laboratorio .oplab-desktop-header .oplab-desktop-brand .oplab-header-logo {
    width: auto !important;
    height: 64px !important;
    max-height: 64px !important;
    min-height: 58px !important;
    object-fit: contain !important;
    object-position: center center !important;
    display: block !important;
    margin: 0 auto !important;
  }

  #laboratorio .oplab-desktop-header .oplab-header-actions-slot {
    position: relative !important;
    z-index: 3 !important;
    margin-left: auto !important;
    flex: 0 0 auto !important;
  }

  #laboratorio .oplab-desktop-header .lab-sd-user-bar .user-bar-operator-line,
  #laboratorio .oplab-desktop-header .lab-sd-user-bar .user-bar-legacy-info {
    display: none !important;
  }

  #laboratorio .oplab-desktop-header .lab-sd-user-bar #btn-sync-google,
  #laboratorio .oplab-desktop-header .lab-sd-user-bar .btn-danger {
    display: inline-flex !important;
  }

  #laboratorio .oplab-desktop-header .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal {
    display: inline-flex !important;
  }

  /* --- DESKTOP: sidebar profilo completo --- */
  #laboratorio .oplab-desktop-sidebar-profile {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    width: 100% !important;
    padding: 4px 8px 14px !important;
    margin-bottom: 2px !important;
    border-bottom: 1px solid rgba(94, 234, 212, 0.12) !important;
    flex-shrink: 0 !important;
  }

  #laboratorio .oplab-desktop-sidebar-profile .oplab-sidebar-profile-text {
    display: block !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
    overflow: visible !important;
  }

  #laboratorio .oplab-desktop-sidebar-profile .oplab-sidebar-profile-name {
    display: block !important;
    font-weight: 700 !important;
    font-size: 0.92rem !important;
    color: #e6fffa !important;
    line-height: 1.3 !important;
    word-break: break-word !important;
  }

  #laboratorio .oplab-desktop-sidebar-profile .oplab-sidebar-profile-role {
    display: block !important;
    font-size: 12px !important;
    color: rgba(167, 243, 208, 0.88) !important;
    line-height: 1.35 !important;
    margin-top: 2px !important;
    word-break: break-word !important;
  }

  #laboratorio .oplab-desktop-sidebar-profile .oplab-sidebar-profile-avatar {
    width: 40px !important;
    height: 40px !important;
    min-width: 40px !important;
    border-radius: 50% !important;
    flex-shrink: 0 !important;
  }
}

/* ============================================================
   OPLAB FIX LOGO DESKTOP + PROFILE MOBILE v1
   ============================================================ */

@media (min-width: 769px) {
  #laboratorio .oplab-desktop-header.oplab-hero-header {
    min-height: 90px !important;
    max-height: 90px !important;
    padding: 12px 24px !important;
    justify-content: space-between !important;
  }

  #laboratorio .oplab-desktop-header .oplab-hero-brand.oplab-desktop-brand,
  #laboratorio .oplab-desktop-brand,
  #laboratorio .oplab-desktop-header .oplab-hero-brand {
    position: static !important;
    left: auto !important;
    top: auto !important;
    transform: none !important;
    flex: 1 !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    overflow: visible !important;
    max-width: none !important;
    width: auto !important;
    pointer-events: auto !important;
  }

  #laboratorio .oplab-desktop-brand img,
  #laboratorio .oplab-desktop-header .oplab-brand-logo-header,
  #laboratorio .oplab-desktop-header .oplab-header-logo {
    width: 360px !important;
    max-width: 360px !important;
    height: auto !important;
    max-height: 72px !important;
    object-fit: contain !important;
    display: block !important;
    margin: 0 auto !important;
  }

  #laboratorio .oplab-desktop-header .oplab-header-actions-slot {
    flex: 0 0 auto !important;
    margin-left: 0 !important;
  }
}

@media (max-width: 768px) {
  #laboratorio .oplab-sidebar {
    flex-direction: column !important;
    flex-wrap: nowrap !important;
  }

  #laboratorio .oplab-mobile-drawer-profile,
  #laboratorio .oplab-sidebar-profile {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    width: 100% !important;
    padding: 18px 22px !important;
    margin-bottom: 18px !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12) !important;
    flex-shrink: 0 !important;
    flex-wrap: nowrap !important;
    overflow: visible !important;
  }

  #laboratorio .oplab-mobile-drawer-profile .oplab-sidebar-profile-text {
    display: block !important;
    flex: 1 1 auto !important;
    min-width: 120px !important;
    width: auto !important;
    max-width: none !important;
    overflow: visible !important;
    opacity: 1 !important;
    visibility: visible !important;
  }

  #laboratorio .oplab-sidebar-profile-name,
  #laboratorio .oplab-sidebar-profile-role,
  #laboratorio .oplab-profile-name,
  #laboratorio .oplab-profile-role {
    display: block !important;
    opacity: 1 !important;
    visibility: visible !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    overflow: visible !important;
    font-size: initial !important;
    color: #ffffff !important;
  }

  #laboratorio .oplab-sidebar-profile-name,
  #laboratorio .oplab-profile-name {
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
  }

  #laboratorio .oplab-sidebar-profile-role,
  #laboratorio .oplab-profile-role {
    font-size: 12px !important;
    color: rgba(255, 255, 255, 0.72) !important;
    margin-top: 3px !important;
  }
}

/* ============================================================
   OPLAB DESKTOP HEADER FINAL v1 — solo desktop (>=769px)
   ============================================================ */

@media (min-width: 769px) {
  #laboratorio .oplab-desktop-header.oplab-hero-header,
  #laboratorio .oplab-desktop-header {
    min-height: 100px !important;
    max-height: none !important;
  }

  #laboratorio .oplab-desktop-brand img,
  #laboratorio .oplab-desktop-header .oplab-brand-logo-header,
  #laboratorio .oplab-desktop-header .oplab-header-logo {
    width: 520px !important;
    max-width: 520px !important;
    height: 86px !important;
    max-height: 86px !important;
    object-fit: contain !important;
    display: block !important;
    margin: 0 auto !important;
  }

  #laboratorio .oplab-desktop-brand,
  #laboratorio .oplab-desktop-header .oplab-hero-brand.oplab-desktop-brand,
  #laboratorio .oplab-desktop-header .oplab-hero-brand {
    position: static !important;
    left: auto !important;
    top: auto !important;
    transform: none !important;
    flex: 1 1 auto !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    overflow: visible !important;
    min-width: 520px !important;
    max-width: none !important;
    width: auto !important;
    pointer-events: auto !important;
  }

  /* Header destro: solo pallino sync */
  #laboratorio .oplab-desktop-header .lab-sd-user-bar #btn-sync-google,
  #laboratorio .oplab-desktop-header .lab-sd-user-bar .btn-danger,
  #laboratorio .oplab-desktop-header .lab-sd-user-bar .btn-reset-pwd-badge,
  #laboratorio .oplab-hero-header.oplab-header-premium .lab-sd-user-bar #btn-sync-google,
  #laboratorio .oplab-hero-header.oplab-header-premium .lab-sd-user-bar .btn-danger {
    display: none !important;
  }

  #laboratorio .oplab-desktop-header .lab-sd-user-bar .google-stato-indicatore.google-stato-minimal {
    display: inline-flex !important;
  }

  /* Sidebar: + Nuovo ordine, poi Aggiorna / Esci */
  #laboratorio .oplab-sidebar {
    display: flex !important;
    flex-direction: column !important;
  }

  #laboratorio .oplab-sidebar-profile {
    order: 0;
  }

  #laboratorio .oplab-sidebar-nav {
    order: 1;
    flex: 1 1 auto;
  }

  #laboratorio .oplab-sidebar-actions {
    order: 2;
    margin-top: auto;
    padding-top: 12px;
    border-top: 1px solid rgba(94, 234, 212, 0.12);
  }

  #laboratorio .oplab-sidebar-account-actions,
  #laboratorio .oplab-sidebar-account-actions-panel {
    order: 3;
    display: flex !important;
    flex-direction: column;
    gap: 8px;
    width: 100%;
    padding-top: 8px;
    border-top: none;
  }

  #laboratorio .oplab-sidebar-account-actions .btn,
  #laboratorio .oplab-sidebar-account-actions-panel .btn {
    width: 100%;
    justify-content: center;
    min-height: 44px;
    border-radius: 10px;
    font-size: 0.82rem;
  }
}/* PATCH PARTY HOUSE UI MODERNIZATION v1 */

body.ph-feste-mode {
  background: var(--sd-admin-bg);
  overflow-x: hidden;
  font-family: var(--sd-admin-font);
  color: var(--sd-admin-text);
}

body.ph-feste-mode #app-page {
  max-width: none;
  padding: 0;
  margin: 0;
}

body.ph-feste-mode .ph-feste-user-bar-legacy {
  display: none !important;
}

body.ph-lab-solo-mode #ph-feste-shell,
body.ph-feste-lab-active #ph-feste-shell {
  display: none !important;
}

.ph-feste-shell {
  --ph-sidebar-bg: var(--sd-admin-sidebar);
  --ph-sidebar-border: var(--sd-admin-border);
  --ph-sidebar-text: rgba(248, 250, 252, 0.78);
  --ph-sidebar-text-active: var(--sd-admin-text);
  --ph-sidebar-width: 260px;
  --ph-bg: var(--sd-admin-bg);
  --ph-card: var(--sd-admin-card);
  --ph-border: var(--sd-admin-border);
  --ph-text: var(--sd-admin-text);
  --ph-text-muted: var(--sd-admin-text-muted);
  --ph-radius: 16px;
  --ph-shadow: 0 4px 24px rgba(15, 23, 42, 0.06);
  --ph-shadow-hover: 0 8px 32px rgba(15, 23, 42, 0.1);
  --ph-font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", system-ui, sans-serif;
  --sd-cfg-sidebar: #0c2028;
  --sd-cfg-border: #1b3642;
  --sd-cfg-muted: #9eb2c2;
  --sd-cfg-text: #ffffff;
  --sd-cfg-font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", system-ui, sans-serif;
  display: flex;
  min-height: 100vh;
  width: 100%;
  font-family: var(--ph-font);
  color: var(--ph-text);
  background: var(--ph-bg);
  position: relative;
}

/* Shell feste: solo sidebar principale + main (drawer Configura è esterno) */
.ph-feste-shell > .ph-feste-sidebar {
  flex-shrink: 0;
}

.ph-feste-shell > .ph-feste-main {
  flex: 1;
  min-width: 0;
}

.ph-feste-sidebar {
  width: var(--ph-sidebar-width);
  flex-shrink: 0;
  background: var(--ph-sidebar-bg);
  border-right: 1px solid var(--ph-sidebar-border);
  display: flex;
  flex-direction: column;
  padding: 18px 14px 12px;
  gap: 8px;
  z-index: 120;
}

@media (min-width: 769px) {
  .ph-feste-sidebar {
    position: sticky;
    top: 0;
    height: 100vh;
    max-height: 100vh;
    overflow: hidden;
  }
}

.ph-feste-sidebar-brand {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 4px 8px 16px;
  border-bottom: 1px solid var(--ph-sidebar-border);
  flex-shrink: 0;
}

.ph-sidebar-logo {
  width: 44px;
  height: 44px;
  object-fit: contain;
  border-radius: 10px;
  flex-shrink: 0;
  background: rgba(255, 255, 255, 0.06);
}

.ph-sidebar-brand-avatar {
  width: 44px;
  height: 44px;
  min-width: 44px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  background: linear-gradient(
    135deg,
    rgba(20, 184, 166, 0.35) 0%,
    rgba(14, 165, 233, 0.22) 100%
  );
  border: 1px solid rgba(94, 234, 212, 0.28);
  color: #e6fffa;
  font-size: 1.1rem;
  font-weight: 700;
  line-height: 1;
  text-transform: uppercase;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);
}

.ph-sidebar-brand-name {
  font-weight: 700;
  font-size: 0.95rem;
  color: #f8fafc;
  line-height: 1.3;
  word-break: break-word;
}

.ph-sidebar-brand-sub {
  font-size: 0.78rem;
  color: rgba(203, 213, 225, 0.85);
  margin-top: 2px;
  line-height: 1.35;
}

.ph-feste-sidebar-nav {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1;
  overflow-y: auto;
  min-height: 0;
}

.ph-feste-nav-btn.tab {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 11px 12px;
  border: none;
  border-radius: 10px;
  background: transparent;
  color: var(--ph-sidebar-text);
  font-size: 0.88rem;
  font-weight: 500;
  text-align: left;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
  font-family: inherit;
}

.ph-feste-nav-btn.tab:hover:not(.active) {
  background: rgba(20, 184, 166, 0.12);
  color: #e6fffa;
}

.ph-feste-nav-btn.tab.active {
  background: linear-gradient(
    135deg,
    rgba(20, 184, 166, 0.28) 0%,
    rgba(14, 165, 233, 0.18) 100%
  );
  color: #fff;
  box-shadow: inset 0 0 0 1px rgba(94, 234, 212, 0.25);
}

.ph-feste-nav-icon {
  font-size: 1.05rem;
  width: 1.4rem;
  text-align: center;
  flex-shrink: 0;
}

.ph-feste-nav-label {
  flex: 1;
}

.ph-feste-sidebar-lab {
  flex-shrink: 0;
  margin-top: auto;
  padding-top: 4px;
}

.ph-feste-sidebar-separator {
  height: 1px;
  margin: 6px 8px 10px;
  background: var(--ph-sidebar-border);
}

.ph-feste-nav-btn-lab {
  opacity: 0.92;
}

.ph-feste-sidebar-footer {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 10px 6px 6px;
  margin-top: 0;
  border-top: 1px solid var(--ph-sidebar-border);
  flex-shrink: 0;
}

.ph-feste-sidebar-profile {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 4px 8px;
}

.ph-feste-profile-avatar {
  width: 40px;
  height: 40px;
  min-width: 40px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(
    135deg,
    rgba(20, 184, 166, 0.35) 0%,
    rgba(14, 165, 233, 0.22) 100%
  );
  border: 1px solid rgba(94, 234, 212, 0.28);
  color: #e6fffa;
  font-size: 1rem;
  font-weight: 700;
}

.ph-feste-profile-name {
  font-weight: 700;
  font-size: 0.9rem;
  color: #f8fafc;
  line-height: 1.3;
}

.ph-feste-profile-role {
  font-size: 0.75rem;
  color: rgba(203, 213, 225, 0.88);
  margin-top: 2px;
}

.ph-feste-sidebar-account-actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.ph-feste-sidebar-account-actions .btn {
  width: 100%;
  justify-content: center;
  min-height: 42px;
  border-radius: 10px;
  font-size: 0.82rem;
}

.ph-feste-sidebar-sync {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.18);
  color: #e2e8f0;
}

.ph-feste-sidebar-exit {
  font-weight: 600;
}

.ph-feste-main {
  flex: 1;
  min-width: 0;
  overflow-y: auto;
  padding: 24px 28px 32px;
}

.ph-feste-page-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 24px;
  flex-wrap: wrap;
  padding: 22px 26px;
  border-radius: 22px;
  background: linear-gradient(135deg, #0b1f24 0%, #0f2d35 55%, #0b2530 100%);
  box-shadow: 0 10px 28px rgba(5, 11, 22, 0.25);
  border: 1px solid rgba(94, 234, 212, 0.12);
}

.ph-feste-page-head-text {
  min-width: 0;
}

.ph-feste-page-title {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", system-ui, sans-serif;
  font-size: 1.72rem;
  font-weight: 600;
  color: #ffffff;
  letter-spacing: -0.035em;
  line-height: 1.15;
}

.ph-feste-page-sub {
  margin: 6px 0 0;
  font-size: 0.94rem;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.86);
  letter-spacing: -0.01em;
  line-height: 1.4;
}

.ph-feste-page-status .google-stato-wrap {
  display: flex;
  align-items: center;
  gap: 8px;
}

.ph-feste-page-status .google-stato-indicatore.google-stato-minimal {
  padding: 6px 12px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.14);
  border: 1px solid rgba(255, 255, 255, 0.22);
  box-shadow: none;
  font-size: 0.78rem;
  color: #fff;
}

.ph-feste-page-status .google-stato-label,
.ph-feste-page-status .google-stato-ultimo-sync {
  color: rgba(255, 255, 255, 0.92);
}

.ph-feste-page-status #btn-sync-google {
  display: none;
}

.ph-feste-main .panel {
  display: none;
  animation: ph-feste-fade-in 0.2s ease-out;
}

.ph-feste-main .panel.active {
  display: block;
}

@keyframes ph-feste-fade-in {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

.ph-dash-brand {
  margin-bottom: 22px;
  padding: 18px 22px;
  background: var(--ph-card);
  border: 1px solid var(--ph-border);
  border-radius: 20px;
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.06);
  border-left: 4px solid var(--ph-colore-primario);
}

.ph-dash-brand-name {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", system-ui, sans-serif;
  font-size: 1.35rem;
  font-weight: 600;
  color: var(--ph-text);
  letter-spacing: -0.03em;
}

.ph-dash-brand-sub {
  margin: 4px 0 0;
  font-size: 0.92rem;
  color: var(--ph-text-muted);
  letter-spacing: -0.01em;
}

.ph-kpi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px;
}

.ph-kpi-card {
  background: #fff;
  border: 1px solid var(--ph-border);
  border-radius: 20px;
  padding: 18px 16px;
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.ph-kpi-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.1);
}

.ph-kpi-card-accent {
  border-color: color-mix(in srgb, var(--ph-colore-secondario) 35%, var(--ph-border));
}

.ph-kpi-icon {
  font-size: 1.25rem;
  margin-bottom: 8px;
  opacity: 0.9;
}

.ph-kpi-value {
  font-size: 1.65rem;
  font-weight: 700;
  color: var(--ph-colore-primario);
  line-height: 1.2;
  margin-bottom: 4px;
}

.ph-kpi-card-accent .ph-kpi-value {
  color: var(--ph-colore-secondario);
}

.ph-kpi-label {
  font-size: 0.86rem;
  font-weight: 600;
  color: var(--ph-text);
  margin-bottom: 2px;
}

.ph-kpi-desc {
  font-size: 0.74rem;
  color: var(--ph-text-muted);
  line-height: 1.35;
}

.ph-dash-section {
  margin-bottom: 24px;
}

.ph-dash-card {
  background: #fff;
  border: 1px solid var(--ph-border);
  border-radius: 20px;
  padding: 20px;
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.06);
}

.ph-dash-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}

.ph-dash-card-title {
  margin: 0 0 14px;
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", system-ui, sans-serif;
  font-size: 1.02rem;
  font-weight: 600;
  color: var(--ph-text);
  letter-spacing: -0.02em;
}

.ph-dash-card-head .ph-dash-card-title {
  margin-bottom: 0;
}

.ph-dash-oggi-badge {
  font-size: 0.82rem;
  color: var(--ph-text-muted);
  background: #f1f5f9;
  padding: 4px 10px;
  border-radius: 999px;
}

.ph-dash-oggi-badge span {
  font-weight: 700;
  color: var(--ph-colore-primario);
}

.ph-dash-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}

.ph-dash-card-wide {
  grid-column: 1 / -1;
}

.ph-dash-lista {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.ph-dash-item {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  background: #f8fafc;
  border: 1px solid var(--ph-border);
  border-radius: 12px;
  border-left: 3px solid var(--ph-colore-primario);
  transition: background 0.15s ease, box-shadow 0.15s ease;
}

.ph-dash-item.ph-dash-item-clickable {
  cursor: pointer;
}

.ph-dash-item.ph-dash-item-clickable:hover {
  background: #f1f5f9;
  box-shadow: var(--ph-shadow);
}

.ph-dash-item-body {
  flex: 1;
  min-width: 0;
}

.ph-dash-item-title {
  font-weight: 600;
  font-size: 0.92rem;
  color: var(--ph-text);
  margin-bottom: 4px;
}

.ph-dash-item-meta {
  font-size: 0.8rem;
  color: var(--ph-text-muted);
  line-height: 1.45;
}

.ph-dash-item-importo {
  font-weight: 700;
  font-size: 1rem;
  color: var(--ph-colore-secondario);
  white-space: nowrap;
  align-self: center;
}

.ph-feste-main .btn-primary {
  background: linear-gradient(90deg, var(--sd-primary), var(--sd-secondary));
  border-color: transparent;
  color: #042f2e;
  font-weight: 600;
  border-radius: 10px;
}

.ph-feste-main .btn-primary:hover {
  filter: brightness(1.03);
}

.ph-dash-item-apri {
  align-self: center;
  flex-shrink: 0;
  min-height: 36px;
  border-radius: 8px;
  background: var(--ph-colore-primario);
  border-color: var(--ph-colore-primario);
}

.ph-dash-item-oggi-orario {
  font-size: 0.78rem;
  font-weight: 700;
  color: #0d9488;
  margin-bottom: 2px;
}

.ph-dash-alert-gruppo {
  margin-bottom: 14px;
}

.ph-dash-alert-gruppo:last-child {
  margin-bottom: 0;
}

.ph-dash-alert-gruppo-title {
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0 0 8px;
  padding: 0 2px;
}

.ph-dash-alert-gruppo-critici { color: #dc2626; }
.ph-dash-alert-gruppo-attenzione { color: #ea580c; }
.ph-dash-alert-gruppo-info { color: #2563eb; }

.ph-dash-item-alert-critico {
  border-left-color: #dc2626;
  background: #fef2f2;
}

.ph-dash-item-alert-attenzione {
  border-left-color: #ea580c;
  background: #fff7ed;
}

.ph-dash-item-alert-info {
  border-left-color: #2563eb;
  background: #eff6ff;
}

.ph-feste-main .card {
  border-radius: var(--ph-radius);
  border: 1px solid var(--ph-border);
  box-shadow: var(--ph-shadow);
}

.ph-feste-hamburger {
  display: none;
  position: fixed;
  top: 12px;
  left: 12px;
  z-index: 200;
  width: 48px;
  height: 48px;
  border: none;
  border-radius: 12px;
  background: var(--ph-sidebar-bg);
  color: #fff;
  font-size: 1.35rem;
  cursor: pointer;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
}

.ph-feste-sidebar-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.45);
  z-index: 110;
}

body.ph-feste-nav-lock {
  overflow: hidden;
}

@media (max-width: 1100px) {
  .ph-dash-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 768px) {
  .mobile-only,
  .ph-feste-hamburger.mobile-only {
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .ph-feste-sidebar {
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    transform: translateX(-105%);
    transition: transform 0.25s ease;
    box-shadow: 4px 0 24px rgba(0, 0, 0, 0.2);
    padding-bottom: max(12px, env(safe-area-inset-bottom, 12px));
  }

  .ph-feste-sidebar-footer {
    padding-bottom: max(8px, env(safe-area-inset-bottom, 8px));
  }

  .ph-feste-shell.ph-feste-mobile-nav-open .ph-feste-sidebar {
    transform: translateX(0);
  }

  .ph-feste-shell.ph-feste-mobile-nav-open .ph-feste-sidebar-overlay {
    display: block;
  }

  .ph-feste-main {
    padding: 72px 16px 24px;
  }

  .ph-kpi-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
  }

  .ph-feste-sidebar-account-actions .btn,
  .ph-feste-nav-btn.tab {
    min-height: 48px;
  }

  .ph-dash-item-apri {
    min-height: 48px;
    min-width: 48px;
  }
}

@media (max-width: 480px) {
  .ph-kpi-grid {
    grid-template-columns: 1fr;
  }
}

/* ── Dashboard alert compatte (Attenzione + Info) ── */
.ph-dash-alert-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  grid-column: 1 / -1;
}

.ph-dash-alert-compact-slot {
  min-width: 0;
}

.ph-dash-alert-compact-card {
  background: #fff;
  border-radius: 18px;
  border: 1px solid var(--ph-border, #e8ecf1);
  box-shadow: 0 4px 20px rgba(15, 23, 42, 0.06);
  padding: 14px 16px;
  height: 100%;
}

.ph-dash-alert-tint-attenzione {
  background: linear-gradient(180deg, #fff8f3 0%, #ffffff 48%);
  border-color: rgba(234, 88, 12, 0.18);
}

.ph-dash-alert-tint-info {
  background: linear-gradient(180deg, #f0f9ff 0%, #ffffff 48%);
  border-color: rgba(37, 99, 235, 0.16);
}

.ph-dash-alert-compact-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 10px;
}

.ph-dash-alert-compact-title {
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.ph-dash-alert-tint-attenzione .ph-dash-alert-compact-title {
  color: #c2410c;
}

.ph-dash-alert-tint-info .ph-dash-alert-compact-title {
  color: #1d4ed8;
}

.ph-dash-alert-compact-count {
  font-size: 0.75rem;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(15, 23, 42, 0.06);
  color: #475569;
}

.ph-dash-alert-compact-empty {
  margin: 0;
  font-size: 0.88rem;
  color: #94a3b8;
}

.ph-dash-alert-compact-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.ph-dash-alert-compact-item {
  display: flex;
  align-items: flex-start;
  min-height: 56px;
  max-height: 84px;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.72);
  border: 1px solid rgba(15, 23, 42, 0.06);
  cursor: pointer;
  transition: background 0.15s ease, box-shadow 0.15s ease;
  overflow: hidden;
}

.ph-dash-alert-compact-item:hover {
  background: #fff;
  box-shadow: 0 2px 10px rgba(15, 23, 42, 0.08);
}

.ph-dash-alert-compact-msg {
  font-size: 0.88rem;
  font-weight: 600;
  color: #0f172a;
  line-height: 1.35;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.ph-dash-alert-compact-meta {
  margin-top: 2px;
  font-size: 0.78rem;
  color: #64748b;
  line-height: 1.3;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.ph-dash-alert-vedi-tutti {
  margin-top: 10px;
  padding: 0;
  border: none;
  background: none;
  font-size: 0.82rem;
  font-weight: 600;
  color: #2563eb;
  cursor: pointer;
  text-align: left;
}

.ph-dash-alert-tint-attenzione .ph-dash-alert-vedi-tutti {
  color: #ea580c;
}

.ph-dash-alert-compact-more.hidden {
  display: none;
}

@media (max-width: 768px) {
  .ph-dash-alert-row {
    grid-template-columns: 1fr;
  }
}

/* ── Wizard Nuovo Evento ── */
#nuovo.panel.active {
  max-width: 1180px;
  margin: 0 auto;
}

.ph-wizard-shell {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.ph-wizard-header {
  background: #fff;
  border-radius: 22px;
  border: 1px solid var(--ph-border, #e8ecf1);
  box-shadow: 0 8px 32px rgba(15, 23, 42, 0.07);
  padding: 20px 24px 16px;
}

.ph-wizard-titolo {
  margin: 0 0 16px;
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: #0f172a;
}

.ph-wizard-stepper {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.ph-wizard-step-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  border: 1px solid #e2e8f0;
  border-radius: 999px;
  background: #f8fafc;
  color: #64748b;
  font-size: 0.82rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s ease;
  min-height: 44px;
}

.ph-wizard-step-pill:hover {
  border-color: #cbd5e1;
  background: #fff;
}

.ph-wizard-step-pill.active {
  background: linear-gradient(
    90deg,
    var(--ph-colore-primario, #7cff4f),
    var(--ph-colore-secondario, #22b8ff)
  );
  border-color: transparent;
  color: #0f172a;
  box-shadow: 0 4px 16px rgba(34, 184, 255, 0.25);
}

.ph-wizard-step-pill.done {
  border-color: rgba(34, 197, 94, 0.35);
  background: #f0fdf4;
  color: #166534;
}

.ph-wizard-step-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: rgba(15, 23, 42, 0.08);
  font-size: 0.75rem;
  font-weight: 700;
}

.ph-wizard-step-pill.active .ph-wizard-step-num {
  background: rgba(255, 255, 255, 0.55);
}

.ph-wizard-body {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.ph-wizard-step {
  display: none;
  flex-direction: column;
  gap: 16px;
}

.ph-wizard-step.active {
  display: flex;
}

.ph-wizard-card {
  border-radius: 22px !important;
  border: 1px solid var(--ph-border, #e8ecf1) !important;
  box-shadow: 0 6px 28px rgba(15, 23, 42, 0.06) !important;
}

.ph-wizard-card .form-group input,
.ph-wizard-card .form-group select,
.ph-wizard-card .form-group textarea {
  min-height: 48px;
  font-size: 1rem;
  border-radius: 14px;
  padding: 12px 14px;
}

.ph-wizard-card .form-group textarea {
  min-height: 96px;
}

.ph-wizard-card .form-group select {
  padding-right: 36px;
}

.ph-wizard-confirm-card {
  background: linear-gradient(180deg, #f8fafc 0%, #ffffff 60%);
}

.ph-wizard-card-title {
  margin: 0 0 14px;
  font-size: 1.1rem;
  font-weight: 700;
}

.ph-wizard-confirm-body {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 24px;
}

.ph-wizard-confirm-row {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 10px 0;
  border-bottom: 1px solid #f1f5f9;
}

.ph-wizard-confirm-label {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #94a3b8;
}

.ph-wizard-confirm-value {
  font-size: 0.95rem;
  font-weight: 600;
  color: #0f172a;
  line-height: 1.4;
  word-break: break-word;
}

.ph-wizard-nav {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 4px 0 8px;
  position: sticky;
  bottom: 0;
  background: linear-gradient(180deg, transparent, #f8fafc 24%);
  z-index: 5;
}

.ph-wizard-nav-btn {
  flex: 1;
  min-height: 52px;
  border-radius: 16px !important;
  font-size: 1rem;
  font-weight: 600;
}

.ph-wizard-nav-btn.hidden {
  display: none;
}

.ph-wizard-actions {
  margin-top: 4px;
}

.ph-wizard-actions .btn-primary {
  min-height: 52px;
  border-radius: 16px;
  font-size: 1rem;
  font-weight: 700;
  width: 100%;
}

@media (max-width: 900px) {
  .ph-wizard-confirm-body {
    grid-template-columns: 1fr;
  }

  .ph-wizard-step-label {
    display: none;
  }

  .ph-wizard-step-pill {
    padding: 10px 12px;
  }
}

@media (max-width: 600px) {
  .ph-wizard-header {
    padding: 16px;
    border-radius: 18px;
  }

  .ph-wizard-stepper {
    justify-content: space-between;
  }

  .ph-wizard-step-pill {
    flex: 1;
    justify-content: center;
    min-width: 0;
    padding: 8px 6px;
  }

  #nuovo.panel.active {
    padding-left: 0;
    padding-right: 0;
  }
}

/* SD Operis Lab — Configura Laboratorio Apple UI v5 */
#config-pane-laboratorio .lab-cfg-apple-card {
  background: rgba(255, 255, 255, 0.92);
  border: 1px solid #dde8f0;
  border-radius: 24px;
  box-shadow: 0 18px 48px rgba(15, 23, 42, 0.08);
  padding: 28px 32px;
  max-width: 1280px;
}

.lab-cfg-apple-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 24px;
  flex-wrap: wrap;
}

.lab-cfg-apple-title {
  margin: 0 0 6px;
  font-size: 1.55rem;
  font-weight: 700;
  color: #0f172a;
  letter-spacing: -0.02em;
}

.lab-cfg-apple-subtitle {
  margin: 0;
  color: #64748b;
  font-size: 0.95rem;
  line-height: 1.5;
  max-width: 640px;
}

.lab-cfg-apple-header-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.lab-cfg-btn-primary {
  background: linear-gradient(90deg, var(--sd-primary), var(--sd-secondary));
  color: #042f2e;
  border: none;
  border-radius: 12px;
  padding: 10px 18px;
  font-weight: 600;
  box-shadow: 0 8px 20px rgba(34, 184, 255, 0.22);
}

.lab-cfg-btn-primary:hover {
  filter: brightness(1.05);
}

.lab-cfg-btn-secondary,
.lab-cfg-btn-ghost {
  background: #fff;
  color: #0f172a;
  border: 1px solid #dde8f0;
  border-radius: 12px;
  padding: 10px 16px;
  font-weight: 600;
}

.lab-cfg-btn-ghost:hover,
.lab-cfg-btn-secondary:hover {
  background: #f8fbff;
}

.lab-cfg-btn-danger {
  background: #fff;
  color: #b91c1c;
  border: 1px solid #fecaca;
  border-radius: 12px;
  padding: 6px 12px;
  font-weight: 600;
  font-size: 0.85rem;
}

.lab-cfg-btn-danger:hover {
  background: #fef2f2;
}

.lab-import-modal {
  max-width: 560px;
}

.lab-import-hint {
  font-size: 0.9rem;
  color: #64748b;
  margin: 0 0 16px;
  line-height: 1.45;
}

.lab-import-dropzone {
  border: 2px dashed #cbd5e1;
  border-radius: 16px;
  padding: 28px 20px;
  text-align: center;
  background: #f8fafc;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s;
}

.lab-import-dropzone:hover,
.lab-import-dropzone.lab-import-dropzone-over {
  border-color: #3b82f6;
  background: #eff6ff;
}

.lab-import-dropzone-title {
  font-weight: 600;
  margin: 0 0 4px;
  color: #0f172a;
}

.lab-import-dropzone-sub {
  margin: 8px 0;
  font-size: 0.85rem;
  color: #94a3b8;
}

.lab-import-dropzone-formats {
  margin: 10px 0 0;
  font-size: 0.8rem;
  color: #64748b;
}

.lab-import-file-name {
  margin: 12px 0 0;
  font-size: 0.88rem;
  color: #334155;
  word-break: break-all;
}

.lab-import-preview {
  margin-top: 18px;
}

.lab-import-stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}

@media (min-width: 480px) {
  .lab-import-stats {
    grid-template-columns: repeat(4, 1fr);
  }
}

.lab-import-stat {
  background: #f1f5f9;
  border-radius: 12px;
  padding: 12px;
  text-align: center;
}

.lab-import-stat-ok strong { color: #15803d; }
.lab-import-stat-warn strong { color: #b45309; }
.lab-import-stat-err strong { color: #b91c1c; }

.lab-import-stat-label {
  display: block;
  font-size: 0.75rem;
  color: #64748b;
  margin-bottom: 4px;
}

.lab-import-errori-list {
  margin-top: 12px;
  max-height: 120px;
  overflow-y: auto;
  font-size: 0.82rem;
  color: #b91c1c;
  background: #fef2f2;
  border-radius: 10px;
  padding: 10px 12px;
}

.lab-import-progress-wrap {
  margin-top: 16px;
}

.lab-import-progress-bar {
  height: 8px;
  background: #e2e8f0;
  border-radius: 999px;
  overflow: hidden;
}

.lab-import-progress-fill {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, #3b82f6, #2563eb);
  border-radius: 999px;
  transition: width 0.25s ease;
}

.lab-import-progress-label {
  margin: 8px 0 0;
  font-size: 0.85rem;
  color: #475569;
}

.lab-import-report {
  margin-top: 16px;
  padding: 14px;
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  border-radius: 12px;
  font-size: 0.9rem;
  line-height: 1.6;
  color: #14532d;
}

.lab-config-tabs-apple {
  display: flex;
  gap: 8px;
  flex-wrap: nowrap;
  overflow-x: auto;
  padding-bottom: 6px;
  margin-bottom: 18px;
  scrollbar-width: thin;
}

.lab-config-tabs-apple .lab-config-tab-btn {
  border: 1px solid #dde8f0;
  background: #fff;
  color: #475569;
  border-radius: 999px;
  padding: 10px 16px;
  font-weight: 600;
  white-space: nowrap;
  transition: all 0.18s ease;
}

.lab-config-tabs-apple .lab-config-tab-btn:hover {
  background: #f8fbff;
}

.lab-config-tabs-apple .lab-config-tab-btn.active {
  background: linear-gradient(135deg, #22b8ff 0%, #0ea5e9 100%);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 8px 18px rgba(34, 184, 255, 0.25);
}

.lab-cfg-apple-body {
  background: #f8fbff;
  border: 1px solid #e8f0f6;
  border-radius: 18px;
  padding: 8px;
  min-height: 200px;
}

.lab-config-table-apple {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: #fff;
  border-radius: 14px;
  overflow: hidden;
}

.lab-config-table-apple thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #f1f7fb;
  color: #475569;
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 14px 16px;
  border-bottom: 1px solid #e2e8f0;
}

.lab-config-table-apple tbody tr {
  min-height: 64px;
}

.lab-config-table-apple tbody tr:nth-child(even) {
  background: #fbfdff;
}

.lab-config-table-apple tbody tr:hover {
  background: #f0f9ff;
}

.lab-config-table-apple td {
  padding: 16px;
  border-bottom: 1px solid #eef4f8;
  color: #0f172a;
  vertical-align: middle;
}

.lab-cfg-breadcrumb {
  font-size: 0.88rem;
  color: #334155;
  line-height: 1.45;
}

.lab-cfg-badge {
  display: inline-flex;
  align-items: center;
  padding: 5px 10px;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.lab-cfg-badge-ok {
  background: rgba(34, 197, 94, 0.12);
  color: #166534;
}

.lab-cfg-badge-off {
  background: rgba(148, 163, 184, 0.18);
  color: #64748b;
}

.lab-cfg-badge-warn {
  background: rgba(244, 114, 182, 0.14);
  color: #be185d;
}

.lab-cfg-empty {
  text-align: center;
  padding: 48px 24px;
  background: #fff;
  border-radius: 16px;
  border: 1px dashed #d7e3ec;
}

.lab-cfg-empty-title {
  margin: 0 0 8px;
  font-size: 1.1rem;
  font-weight: 700;
  color: #0f172a;
}

.lab-cfg-empty-sub {
  margin: 0;
  color: #64748b;
}

.lab-cfg-color-swatch {
  display: inline-block;
  width: 28px;
  height: 28px;
  border-radius: 8px;
  border: 1px solid #cbd5e1;
  vertical-align: middle;
}

.lab-cfg-modal .modal-box,
.lab-cfg-modal-box {
  max-width: 760px;
  border-radius: 24px;
  padding: 28px;
}

.lab-cfg-modal-title {
  margin: 0 0 20px;
  font-size: 1.35rem;
  color: #0f172a;
}

.lab-cfg-modal-footer {
  position: sticky;
  bottom: 0;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, #fff 24%);
  padding-top: 16px;
  margin-top: 12px;
}

.lab-cfg-form-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 14px;
}

.lab-cfg-section .form-group select,
.lab-cfg-section .form-group input,
.lab-cfg-modal-box .form-group input,
.lab-cfg-modal-box .form-group select {
  min-height: 44px;
  border-radius: 12px;
  border: 1px solid #d7e3ec;
  padding: 10px 14px;
}

.lab-cfg-section .form-group select:focus,
.lab-cfg-modal-box .form-group input:focus,
.lab-cfg-modal-box .form-group select:focus {
  outline: none;
  border-color: #22b8ff;
  box-shadow: 0 0 0 3px rgba(34, 184, 255, 0.18);
}

.lab-cfg-status {
  margin-top: 12px;
  color: #64748b;
}

@media (max-width: 900px) {
  #config-pane-laboratorio .lab-cfg-apple-card {
    padding: 20px 16px;
    border-radius: 18px;
  }

  .lab-config-table-apple {
    display: block;
    overflow-x: auto;
  }
}

/* ============================================================
   PATCH SD OPERIS — Unificazione look Admin + Login generale
   Solo grafica: login, sidebar admin, Configura, tabelle lab
   ============================================================ */

.ph-feste-sidebar-account-actions .btn-primary {
  background: var(--sd-primary);
  border-color: var(--sd-primary);
  color: #042f2e;
  font-weight: 600;
}

.ph-feste-sidebar-account-actions .btn-secondary,
.ph-feste-sidebar-sync {
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(94, 234, 212, 0.18);
  color: #e6fffa;
}

.ph-feste-sidebar-account-actions .btn-secondary:hover,
.ph-feste-sidebar-sync:hover {
  background: rgba(20, 184, 166, 0.12);
}

.ph-feste-main {
  background: var(--sd-bg);
}

.ph-feste-main #config.panel {
  background: transparent;
  box-shadow: none;
  padding: 0;
  border-radius: 0;
}

.ph-feste-main #config .config-tabs {
  display: flex;
  flex-wrap: nowrap;
  gap: 8px;
  margin-bottom: 20px;
  padding-bottom: 6px;
  overflow-x: auto;
  scrollbar-width: thin;
}

.ph-feste-main #config .config-tab {
  flex-shrink: 0;
  padding: 10px 16px;
  border: 1px solid var(--sd-border);
  border-radius: 999px;
  background: var(--sd-card);
  color: #475569;
  font-size: 0.88rem;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.18s ease, color 0.18s ease, box-shadow 0.18s ease;
  box-shadow: none;
}

.ph-feste-main #config .config-tab:hover:not(.active) {
  background: #f0f9ff;
  color: #0f172a;
}

.ph-feste-main #config .config-tab.active {
  background: linear-gradient(135deg, var(--sd-secondary) 0%, #0ea5e9 100%);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 8px 18px rgba(34, 184, 255, 0.25);
}

.ph-feste-main #config .card {
  background: var(--sd-card);
  border: 1px solid var(--sd-border);
  border-left: none;
  border-radius: 20px;
  padding: 22px 24px;
  margin-bottom: 18px;
  box-shadow: var(--ph-shadow);
}

.ph-feste-main #config .card h3,
.ph-feste-main #config .card h4 {
  color: #0f172a;
  font-weight: 700;
  letter-spacing: -0.02em;
}

.ph-feste-main #config .card-subtitle {
  color: var(--sd-muted);
}

.ph-feste-main #config .form-group label {
  font-size: 0.82rem;
  font-weight: 600;
  color: #475569;
}

.ph-feste-main #config input[type="text"],
.ph-feste-main #config input[type="number"],
.ph-feste-main #config input[type="email"],
.ph-feste-main #config input[type="tel"],
.ph-feste-main #config input[type="url"],
.ph-feste-main #config input[type="password"],
.ph-feste-main #config select,
.ph-feste-main #config textarea {
  border-radius: 12px;
  border: 1px solid var(--sd-border);
  min-height: 44px;
  padding: 10px 14px;
}

.ph-feste-main #config input:focus,
.ph-feste-main #config select:focus,
.ph-feste-main #config textarea:focus {
  outline: none;
  border-color: var(--sd-accent-blue);
  box-shadow: 0 0 0 3px rgba(34, 184, 255, 0.15);
}

.ph-feste-main .btn-secondary {
  background: #f8fafc;
  border: 1px solid var(--sd-border);
  color: #334155;
  border-radius: 10px;
  font-weight: 600;
}

.ph-feste-main .btn-secondary:hover {
  background: #f0f9ff;
}

.ph-feste-main .btn-danger {
  background: #fff;
  color: var(--sd-danger);
  border: 1px solid #fecaca;
  border-radius: 10px;
  font-weight: 600;
}

.ph-feste-main .btn-danger:hover {
  background: #fef2f2;
}

.ph-feste-main .btn-small {
  border-radius: 10px;
  font-weight: 600;
}

.ph-dash-brand {
  border-left: 4px solid var(--sd-accent-green);
}

.ph-kpi-value {
  color: #0f766e;
}

.ph-kpi-card-accent .ph-kpi-value {
  color: #0369a1;
}

.ph-dash-item-importo {
  color: #0369a1;
}

.ph-dash-item-apri {
  background: linear-gradient(90deg, var(--sd-primary), var(--sd-secondary));
  border-color: transparent;
  color: #042f2e;
}

#config-pane-laboratorio .lab-cfg-apple-card {
  background: rgba(255, 255, 255, 0.96);
  border: 1px solid var(--sd-border);
  box-shadow: var(--ph-shadow);
}

.lab-cfg-apple-title {
  color: #0f172a;
}

.lab-cfg-apple-subtitle,
.lab-cfg-status,
.lab-cfg-breadcrumb {
  color: var(--sd-muted);
}

.lab-config-tabs-apple .lab-config-tab-btn.active {
  background: linear-gradient(135deg, var(--sd-secondary) 0%, #0ea5e9 100%);
}

.lab-cfg-apple-body {
  background: #f4fafc;
  border-color: var(--sd-border);
}

.lab-config-table-apple thead th {
  background: #edf5f9;
  color: #475569;
}

.lab-config-table-apple tbody tr:hover {
  background: #f0f9ff;
}

.lab-config-table-v25 .lab-cfg-actions .btn {
  border-radius: 10px;
  font-weight: 600;
  font-size: 0.82rem;
}

.lab-config-table-v25 .lab-cfg-actions .btn-primary,
.lab-config-table-v25 .lab-cfg-actions .btn:not(.btn-danger):not(.btn-secondary) {
  background: linear-gradient(90deg, var(--sd-primary), var(--sd-secondary));
  border-color: transparent;
  color: #042f2e;
}

.lab-config-table-v25 .lab-cfg-actions .btn-secondary {
  background: #f8fafc;
  border: 1px solid var(--sd-border);
  color: #334155;
}

.lab-config-table-v25 .lab-cfg-actions .btn-danger {
  background: #fff;
  color: var(--sd-danger);
  border: 1px solid #fecaca;
}

.lab-cfg-modal .modal-box,
.lab-cfg-modal-box {
  border: 1px solid var(--sd-border);
  box-shadow: 0 24px 64px rgba(15, 23, 42, 0.18);
}

.lab-cfg-section .form-group select:focus,
.lab-cfg-modal-box .form-group input:focus,
.lab-cfg-modal-box .form-group select:focus {
  border-color: var(--sd-accent-blue);
  box-shadow: 0 0 0 3px rgba(34, 184, 255, 0.15);
}

/* ============================================================
   SD OPERIS — Configura v3 (layout 3 colonne + dark theme)
   ============================================================ */

#config.sd-config-panel {
  --sd-cfg-bg: #07131b;
  --sd-cfg-sidebar: #0c2028;
  --sd-cfg-card: #11222d;
  --sd-cfg-green: #66f245;
  --sd-cfg-blue: #3bb8ff;
  --sd-cfg-text: #ffffff;
  --sd-cfg-muted: #9eb2c2;
  --sd-cfg-border: #1b3642;
  --sd-cfg-font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", system-ui, sans-serif;
  --sd-cfg-radius: 18px;
  --sd-cfg-shadow: 0 8px 32px rgba(0, 0, 0, 0.28);
  font-family: var(--sd-cfg-font);
  color: var(--sd-cfg-text);
  background: var(--sd-cfg-bg);
}

.ph-feste-main:has(#config.panel.active) {
  padding: 0;
  background: var(--sd-cfg-bg, #07131b);
  overflow: hidden;
  flex: 1;
  width: 100%;
  max-width: none;
}

.ph-feste-main:has(#config.panel.active) .ph-feste-page-head {
  display: none;
}

#config.sd-config-panel.panel {
  display: none;
  min-height: calc(100vh - 0px);
  border-radius: 0;
  box-shadow: none;
  padding: 0;
  margin: 0;
}

#config.sd-config-panel.panel.active {
  display: block;
}

.sd-config-shell {
  display: block;
  min-height: calc(100vh - 0px);
  width: 100%;
  position: relative;
  background: var(--sd-cfg-bg);
}

/* Drawer Configura v3.1 — overlay off-canvas, NON nella shell principale */
.sd-config-drawer-root {
  position: fixed;
  inset: 0;
  z-index: 240;
  pointer-events: none;
  visibility: hidden;
}

body.sd-config-drawer-open .sd-config-drawer-root {
  pointer-events: auto;
  visibility: visible;
}

.sd-config-drawer-overlay,
#sd-config-sidebar-overlay.sd-config-drawer-overlay {
  position: fixed;
  top: 0;
  left: var(--ph-sidebar-width, 260px);
  right: 0;
  bottom: 0;
  z-index: 241;
  background: rgba(7, 19, 27, 0.58);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  display: none;
  cursor: pointer;
}

body.sd-config-drawer-open .sd-config-drawer-overlay,
body.sd-config-drawer-open #sd-config-sidebar-overlay.sd-config-drawer-overlay {
  display: block;
}

#sd-config-sidebar.sd-config-drawer,
.sd-config-drawer {
  position: fixed;
  top: 0;
  left: var(--ph-sidebar-width, 260px);
  width: 300px;
  max-width: min(320px, calc(100vw - var(--ph-sidebar-width, 260px) - 12px));
  height: 100vh;
  max-height: 100vh;
  background: var(--sd-cfg-sidebar, #0c2028);
  border-right: 1px solid rgba(59, 184, 255, 0.28);
  display: flex;
  flex-direction: column;
  padding: 18px 12px 16px;
  gap: 8px;
  overflow-y: auto;
  z-index: 242;
  box-shadow: 16px 0 48px rgba(0, 0, 0, 0.45);
  font-family: var(--sd-cfg-font, -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", system-ui, sans-serif);
  color: var(--sd-cfg-text, #fff);
  transform: translateX(-108%);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition:
    transform 0.24s cubic-bezier(0.4, 0, 0.2, 1),
    opacity 0.2s ease,
    visibility 0.2s ease;
}

body.sd-config-drawer-open #sd-config-sidebar.sd-config-drawer,
body.sd-config-drawer-open .sd-config-drawer {
  transform: translateX(0);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.sd-config-drawer-head,
.sd-config-sidebar-head {
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--sd-cfg-muted, #9eb2c2);
  padding: 4px 12px 14px;
  border-bottom: 1px solid var(--sd-cfg-border, #1b3642);
  margin-bottom: 4px;
}

.sd-config-hamburger {
  display: none !important;
}

/* Sidebar principale: mai stili drawer/config */
.ph-feste-sidebar .sd-config-nav,
.ph-feste-sidebar .config-tab,
.ph-feste-sidebar .sd-config-drawer {
  display: none !important;
}

.sd-config-nav {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.sd-config-nav-parent {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 11px 12px;
  border: none;
  border-radius: 10px;
  background: transparent;
  color: var(--sd-cfg-muted);
  font-size: 0.88rem;
  font-weight: 500;
  text-align: left;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
  font-family: inherit;
}

.sd-config-nav-parent:hover:not(.active) {
  background: rgba(59, 184, 255, 0.08);
  color: var(--sd-cfg-text);
}

.sd-config-nav-parent.active {
  background: linear-gradient(
    135deg,
    rgba(102, 242, 69, 0.14) 0%,
    rgba(59, 184, 255, 0.12) 100%
  );
  color: var(--sd-cfg-text);
  box-shadow: inset 0 0 0 1px rgba(59, 184, 255, 0.22);
}

.sd-config-nav-icon {
  font-size: 1.05rem;
  width: 1.4rem;
  text-align: center;
  flex-shrink: 0;
}

.sd-config-nav-label {
  flex: 1;
  min-width: 0;
}

.sd-config-chevron {
  font-size: 0.65rem;
  opacity: 0.7;
  transition: transform 0.2s ease;
}

.sd-config-nav-group-expandable.sd-config-nav-group-open .sd-config-chevron {
  transform: rotate(0deg);
}

.sd-config-nav-group-expandable:not(.sd-config-nav-group-open) .sd-config-chevron {
  transform: rotate(-90deg);
}

.sd-config-subnav {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 4px 0 8px 8px;
  margin-left: 12px;
  border-left: 1px solid var(--sd-cfg-border);
}

.sd-config-subnav-item {
  display: block;
  width: 100%;
  padding: 9px 12px;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--sd-cfg-muted);
  font-size: 0.84rem;
  font-weight: 500;
  text-align: left;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s, color 0.15s;
}

.sd-config-subnav-item:hover:not(.active) {
  background: rgba(59, 184, 255, 0.06);
  color: var(--sd-cfg-text);
}

.sd-config-subnav-item.active {
  background: rgba(59, 184, 255, 0.14);
  color: var(--sd-cfg-blue);
  font-weight: 600;
}

/* Colonna 3 — contenuto full width */
.sd-config-main {
  flex: 1;
  min-width: 0;
  width: 100%;
  max-width: none;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--sd-cfg-bg);
}

.sd-config-page-header {
  flex-shrink: 0;
  padding: 22px 28px 16px;
  border-bottom: 1px solid var(--sd-cfg-border);
  background: var(--sd-cfg-bg);
}

.sd-config-page-title {
  margin: 0;
  font-size: 1.1rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  color: var(--sd-cfg-text);
  line-height: 1.2;
}

.sd-config-breadcrumb {
  margin: 6px 0 0;
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--sd-cfg-muted);
  line-height: 1.4;
}

.sd-config-content {
  flex: 1;
  overflow-y: auto;
  padding: 20px 28px 28px;
  min-height: 0;
}

.sd-config-footer {
  flex-shrink: 0;
  padding: 16px 28px 24px;
  border-top: 1px solid var(--sd-cfg-border);
  background: rgba(12, 32, 40, 0.5);
}

/* Hamburger mobile */
.sd-config-hamburger {
  display: none;
  align-items: center;
  gap: 8px;
  position: fixed;
  top: 12px;
  left: 280px;
  z-index: 140;
  padding: 10px 14px;
  border: 1px solid var(--sd-cfg-border);
  border-radius: 10px;
  background: var(--sd-cfg-sidebar);
  color: var(--sd-cfg-text);
  font-size: 0.88rem;
  font-weight: 600;
  cursor: pointer;
  font-family: var(--sd-cfg-font);
  box-shadow: var(--sd-cfg-shadow);
}

.sd-config-hamburger {
  display: none !important;
}

/* overlay legacy — unificato con drawer */
.sd-config-sidebar-overlay:not(.sd-config-drawer-overlay) {
  display: none !important;
}

/* Card e contenuti */
.sd-config-content .config-pane {
  animation: sd-config-fade-in 0.18s ease-out;
}

@keyframes sd-config-fade-in {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

.sd-config-content .card,
.sd-config-card,
#config .lab-cfg-apple-card {
  background: var(--sd-cfg-card);
  border: 1px solid var(--sd-cfg-border);
  border-radius: var(--sd-cfg-radius);
  box-shadow: var(--sd-cfg-shadow);
  padding: 22px 24px;
  margin-bottom: 16px;
  color: var(--sd-cfg-text);
}

.sd-config-content .card h3,
.sd-config-content .card h4,
.sd-config-card h3,
.lab-cfg-modal-title {
  color: var(--sd-cfg-text);
  font-weight: 700;
  letter-spacing: -0.02em;
}

.sd-config-content .card-subtitle,
.sd-config-content .config-status-msg,
.sd-config-content label,
.sd-config-content .form-group label {
  color: var(--sd-cfg-muted);
}

.sd-config-content input[type="text"],
.sd-config-content input[type="number"],
.sd-config-content input[type="email"],
.sd-config-content input[type="tel"],
.sd-config-content input[type="url"],
.sd-config-content input[type="password"],
.sd-config-content input[type="color"],
.sd-config-content select,
.sd-config-content textarea,
.sd-config-card input,
.sd-config-card select,
.sd-config-card textarea,
.lab-cfg-modal-box input,
.lab-cfg-modal-box select,
.lab-cfg-modal-box textarea {
  background: rgba(7, 19, 27, 0.55);
  border: 1px solid var(--sd-cfg-border);
  border-radius: 12px;
  color: var(--sd-cfg-text);
  min-height: 44px;
  padding: 10px 14px;
  font-family: var(--sd-cfg-font);
}

.sd-config-content input::placeholder,
.sd-config-content textarea::placeholder {
  color: rgba(158, 178, 194, 0.55);
}

.sd-config-content input:focus,
.sd-config-content select:focus,
.sd-config-content textarea:focus,
.lab-cfg-modal-box input:focus,
.lab-cfg-modal-box select:focus {
  outline: none;
  border-color: var(--sd-cfg-blue);
  box-shadow: 0 0 0 3px rgba(59, 184, 255, 0.15);
}

.sd-config-content code {
  background: rgba(59, 184, 255, 0.1);
  color: var(--sd-cfg-blue);
  padding: 2px 6px;
  border-radius: 6px;
  font-size: 0.88em;
}

/* Toolbar laboratorio nel contenuto */
.sd-config-pane-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: flex-end;
  margin-bottom: 16px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--sd-cfg-border);
}

.lab-cfg-apple-body,
#config .lab-cfg-apple-body {
  background: rgba(7, 19, 27, 0.35);
  border: 1px solid var(--sd-cfg-border);
  border-radius: 14px;
  padding: 8px;
}

/* Bottoni */
#config .btn-primary,
#config .lab-cfg-btn-primary,
.sd-config-content .btn-primary {
  background: linear-gradient(90deg, var(--sd-cfg-green), var(--sd-cfg-blue));
  border: none;
  color: #07131b;
  font-weight: 700;
  border-radius: 10px;
}

#config .btn-secondary,
#config .lab-cfg-btn-secondary,
#config .lab-cfg-btn-ghost {
  background: rgba(27, 54, 66, 0.85);
  border: 1px solid var(--sd-cfg-border);
  color: var(--sd-cfg-text);
  border-radius: 10px;
  font-weight: 600;
}

#config .btn-secondary:hover,
#config .lab-cfg-btn-secondary:hover,
#config .lab-cfg-btn-ghost:hover {
  background: rgba(59, 184, 255, 0.12);
  border-color: rgba(59, 184, 255, 0.3);
}

#config .btn-danger,
#config .lab-cfg-btn-danger {
  background: rgba(220, 38, 38, 0.12);
  border: 1px solid rgba(248, 113, 113, 0.35);
  color: #fca5a5;
  border-radius: 10px;
  font-weight: 600;
}

#config .btn-danger:hover,
#config .lab-cfg-btn-danger:hover {
  background: rgba(220, 38, 38, 0.22);
}

#config .btn-success {
  background: rgba(102, 242, 69, 0.15);
  border: 1px solid rgba(102, 242, 69, 0.35);
  color: var(--sd-cfg-green);
}

#config .btn-warning {
  background: rgba(251, 191, 36, 0.12);
  border: 1px solid rgba(251, 191, 36, 0.3);
  color: #fcd34d;
}

/* Badge */
#config .lab-cfg-badge-ok {
  background: rgba(102, 242, 69, 0.14);
  color: var(--sd-cfg-green);
}

#config .lab-cfg-badge-warn {
  background: rgba(248, 113, 113, 0.14);
  color: #fca5a5;
}

#config .lab-cfg-badge-off {
  background: rgba(158, 178, 194, 0.12);
  color: var(--sd-cfg-muted);
}

/* Tabelle */
#config .lab-config-table-apple,
#config .lab-config-table-v25,
#config .lab-config-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: transparent;
  border-radius: 12px;
  overflow: hidden;
}

#config .lab-config-table-apple thead th,
#config .lab-config-table-v25 thead th,
#config .lab-config-table thead th {
  background: rgba(12, 32, 40, 0.95);
  color: var(--sd-cfg-muted);
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 14px 16px;
  border-bottom: 1px solid var(--sd-cfg-border);
  font-weight: 700;
}

#config .lab-config-table-apple td,
#config .lab-config-table-v25 td,
#config .lab-config-table td {
  padding: 14px 16px;
  border-bottom: 1px solid var(--sd-cfg-border);
  color: var(--sd-cfg-text);
  vertical-align: middle;
}

#config .lab-config-table-apple tbody tr:nth-child(even),
#config .lab-config-table-v25 tbody tr:nth-child(even) {
  background: rgba(17, 34, 45, 0.45);
}

#config .lab-config-table-apple tbody tr:hover,
#config .lab-config-table-v25 tbody tr:hover {
  background: rgba(59, 184, 255, 0.06);
}

#config .lab-cfg-empty {
  background: var(--sd-cfg-card);
  border: 1px dashed var(--sd-cfg-border);
  color: var(--sd-cfg-muted);
}

#config .lab-cfg-empty-title {
  color: var(--sd-cfg-text);
}

/* Modali lab config */
.lab-cfg-modal .modal-box,
.lab-cfg-modal-box {
  background: var(--sd-cfg-card);
  border: 1px solid var(--sd-cfg-border);
  color: var(--sd-cfg-text);
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.45);
}

.lab-cfg-modal-footer {
  background: linear-gradient(180deg, rgba(17, 34, 45, 0) 0%, var(--sd-cfg-card) 24%);
}

.lab-import-dropzone {
  background: rgba(7, 19, 27, 0.45);
  border-color: var(--sd-cfg-border);
  color: var(--sd-cfg-muted);
}

.lab-import-dropzone:hover,
.lab-import-dropzone.lab-import-dropzone-over {
  border-color: var(--sd-cfg-blue);
  background: rgba(59, 184, 255, 0.08);
}

/* Nascondi tab orizzontali legacy se presenti */
#config .config-tabs,
#config .lab-config-tabs-apple,
#config .lab-cfg-apple-header {
  display: none !important;
}

/* Permessi */
#config .tab-perm-config-hidden,
#sd-config-sidebar .tab-perm-config-hidden {
  display: none !important;
}

/* Listino / admin rows */
#config .config-listino-row,
#config .config-tenant-row,
#config .config-utente-row {
  border-color: var(--sd-cfg-border);
}

#config .config-brand-anteprima {
  border: 1px solid var(--sd-cfg-border);
}

/* Responsive drawer — mobile: overlay full screen, drawer da sinistra */
@media (max-width: 1100px) {
  .sd-config-drawer-overlay,
  #sd-config-sidebar-overlay.sd-config-drawer-overlay {
    left: 0;
  }

  #sd-config-sidebar.sd-config-drawer,
  .sd-config-drawer {
    left: 0;
    width: min(320px, 92vw);
    max-width: 92vw;
  }
}

/* ============================================================
   PATCH SD OPERIS ADMIN v4 — Unificazione grafica totale
   Scope: body.ph-feste-mode (admin SD Event)
   Laboratorio (.oplab-shell) non toccato
   ============================================================ */

body.ph-feste-mode .ph-feste-main {
  background: var(--sd-admin-bg);
  color: var(--sd-admin-text);
  font-family: var(--sd-admin-font);
}

/* Header pagine — stile Laboratorio */
body.ph-feste-mode .ph-feste-page-head {
  background:
    radial-gradient(circle at 18% 50%, rgba(20, 184, 166, 0.12), transparent 42%),
    radial-gradient(circle at 72% 80%, rgba(56, 189, 248, 0.16), transparent 38%),
    linear-gradient(135deg, var(--sd-admin-header) 0%, #0f1f28 48%, var(--sd-admin-sidebar) 100%);
  border: 1px solid var(--sd-admin-border);
  border-radius: var(--sd-admin-radius);
  box-shadow: var(--sd-admin-shadow);
  margin-bottom: 22px;
  padding: 18px 24px;
  transition: box-shadow 0.2s ease;
}

body.ph-feste-mode .ph-feste-page-title {
  color: var(--sd-admin-text);
  font-weight: 700;
  letter-spacing: -0.03em;
}

body.ph-feste-mode .ph-feste-page-sub {
  color: var(--sd-admin-text-muted);
}

body.ph-feste-mode .ph-feste-page-status .google-stato-indicatore.google-stato-minimal {
  background: rgba(20, 184, 166, 0.12);
  border: 1px solid rgba(20, 184, 166, 0.35);
  color: var(--sd-admin-text);
}

body.ph-feste-mode .ph-feste-page-status .google-stato-label,
body.ph-feste-mode .ph-feste-page-status .google-stato-ultimo-sync {
  color: var(--sd-admin-text-muted);
}

/* Sidebar principale — palette admin v4 */
body.ph-feste-mode .ph-feste-sidebar {
  background: var(--sd-admin-sidebar);
  border-right: 1px solid var(--sd-admin-border);
}

body.ph-feste-mode .ph-feste-nav-btn.tab:hover:not(.active) {
  background: rgba(20, 184, 166, 0.1);
  color: var(--sd-admin-text);
}

body.ph-feste-mode .ph-feste-nav-btn.tab.active {
  background: linear-gradient(
    135deg,
    rgba(20, 184, 166, 0.22) 0%,
    rgba(56, 189, 248, 0.16) 100%
  );
  color: var(--sd-admin-text);
  box-shadow: inset 0 0 0 1px rgba(56, 189, 248, 0.25);
}

body.ph-feste-mode .ph-sidebar-brand-avatar,
body.ph-feste-mode .ph-feste-profile-avatar {
  background: linear-gradient(135deg, rgba(20, 184, 166, 0.35) 0%, rgba(56, 189, 248, 0.22) 100%);
  border-color: rgba(56, 189, 248, 0.28);
  color: var(--sd-admin-text);
}

body.ph-feste-mode .ph-feste-sidebar-account-actions .btn-primary {
  background: var(--sd-admin-primary);
  border-color: var(--sd-admin-primary);
  color: #042f2e;
}

body.ph-feste-mode .ph-feste-sidebar-sync,
body.ph-feste-mode .ph-feste-sidebar-account-actions .btn-secondary {
  background: rgba(19, 39, 51, 0.65);
  border: 1px solid var(--sd-admin-border);
  color: var(--sd-admin-text);
}

/* Panel — niente box bianco legacy */
body.ph-feste-mode .ph-feste-main .panel {
  background: transparent;
  box-shadow: none;
  border-radius: 0;
  padding: 0;
  color: var(--sd-admin-text);
}

/* Card — identiche spirito Laboratorio, tema scuro */
body.ph-feste-mode .ph-feste-main .card,
body.ph-feste-mode .ph-feste-main .ph-wizard-card,
body.ph-feste-mode .ph-feste-main .ph-dash-card,
body.ph-feste-mode .ph-feste-main .ph-dash-brand,
body.ph-feste-mode .ph-feste-main .ph-kpi-card {
  background: var(--sd-admin-card);
  border: 1px solid var(--sd-admin-border);
  border-left: 1px solid var(--sd-admin-border);
  border-radius: var(--sd-admin-radius);
  box-shadow: var(--sd-admin-shadow);
  color: var(--sd-admin-text);
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

body.ph-feste-mode .ph-feste-main .card:hover,
body.ph-feste-mode .ph-feste-main .ph-kpi-card:hover,
body.ph-feste-mode .ph-feste-main .ph-dash-item:hover {
  transform: translateY(-1px);
  box-shadow: var(--sd-admin-shadow-hover);
  border-color: rgba(56, 189, 248, 0.28);
}

body.ph-feste-mode .ph-feste-main .card h2,
body.ph-feste-mode .ph-feste-main .card h3,
body.ph-feste-mode .ph-feste-main .card h4,
body.ph-feste-mode .ph-feste-main .ph-dash-card-title,
body.ph-feste-mode .ph-feste-main .ph-dash-brand-name {
  color: var(--sd-admin-text);
}

body.ph-feste-mode .ph-feste-main .card-subtitle,
body.ph-feste-mode .ph-feste-main .ph-kpi-desc,
body.ph-feste-mode .ph-feste-main .ph-kpi-label,
body.ph-feste-mode .ph-feste-main .ph-dash-brand-sub {
  color: var(--sd-admin-text-muted);
}

body.ph-feste-mode .ph-kpi-value {
  color: var(--sd-admin-primary);
}

body.ph-feste-mode .ph-kpi-card-accent .ph-kpi-value {
  color: var(--sd-admin-secondary);
}

/* Dashboard righe / eventi — stile card ordini lab */
body.ph-feste-mode .ph-dash-item,
body.ph-feste-mode .dashboard-riga {
  background: var(--sd-admin-card);
  border: 1px solid var(--sd-admin-border);
  border-radius: 14px;
  padding: 14px 16px;
  margin-bottom: 10px;
  transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}

body.ph-feste-mode .ph-dash-item-clickable,
body.ph-feste-mode .dashboard-riga[role="button"],
body.ph-feste-mode .dashboard-lab-nuovi-click {
  cursor: pointer;
}

body.ph-feste-mode .ph-dash-item-title,
body.ph-feste-mode .dashboard-riga-titolo {
  color: var(--sd-admin-text);
  font-weight: 600;
}

body.ph-feste-mode .ph-dash-item-meta,
body.ph-feste-mode .dashboard-riga-meta {
  color: var(--sd-admin-text-muted);
  font-size: 0.86rem;
}

body.ph-feste-mode .ph-dash-item-importo,
body.ph-feste-mode .dashboard-riga-importo {
  color: var(--sd-admin-secondary);
  font-weight: 700;
}

/* Bottoni — mai bianchi legacy */
body.ph-feste-mode .ph-feste-main .btn-primary,
body.ph-feste-mode .ph-feste-main .ph-dash-item-apri {
  background: var(--sd-admin-gradient-primary);
  border: none;
  color: #042f2e;
  font-weight: 700;
  border-radius: 10px;
  transition: filter 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

body.ph-feste-mode .ph-feste-main .btn-primary:hover,
body.ph-feste-mode .ph-feste-main .ph-dash-item-apri:hover {
  filter: brightness(1.05);
  transform: translateY(-1px);
}

body.ph-feste-mode .ph-feste-main .btn-secondary {
  background: rgba(16, 35, 46, 0.9);
  border: 1px solid var(--sd-admin-border);
  color: var(--sd-admin-text);
  border-radius: 10px;
  font-weight: 600;
}

body.ph-feste-mode .ph-feste-main .btn-secondary:hover {
  background: rgba(56, 189, 248, 0.1);
  border-color: rgba(56, 189, 248, 0.3);
}

body.ph-feste-mode .ph-feste-main .btn-success {
  background: rgba(34, 197, 94, 0.15);
  border: 1px solid rgba(34, 197, 94, 0.35);
  color: var(--sd-admin-success);
}

body.ph-feste-mode .ph-feste-main .btn-warning {
  background: rgba(245, 158, 11, 0.12);
  border: 1px solid rgba(245, 158, 11, 0.35);
  color: var(--sd-admin-warning);
}

body.ph-feste-mode .ph-feste-main .btn-danger {
  background: rgba(239, 68, 68, 0.12);
  border: 1px solid rgba(239, 68, 68, 0.35);
  color: #fca5a5;
  border-radius: 10px;
}

body.ph-feste-mode .ph-feste-main .btn-danger:hover {
  background: rgba(239, 68, 68, 0.22);
}

body.ph-feste-mode .ph-feste-main .btn-small {
  border-radius: 10px;
}

/* Ghost / link */
body.ph-feste-mode .ph-feste-main .btn-link-forgot,
body.ph-feste-mode .ph-feste-main .btn-ghost {
  background: transparent;
  border: 1px solid transparent;
  color: var(--sd-admin-secondary);
}

/* Input — tema scuro */
body.ph-feste-mode .ph-feste-main input[type="text"],
body.ph-feste-mode .ph-feste-main input[type="number"],
body.ph-feste-mode .ph-feste-main input[type="email"],
body.ph-feste-mode .ph-feste-main input[type="tel"],
body.ph-feste-mode .ph-feste-main input[type="url"],
body.ph-feste-mode .ph-feste-main input[type="password"],
body.ph-feste-mode .ph-feste-main input[type="date"],
body.ph-feste-mode .ph-feste-main input[type="datetime-local"],
body.ph-feste-mode .ph-feste-main input[type="time"],
body.ph-feste-mode .ph-feste-main input[type="color"],
body.ph-feste-mode .ph-feste-main select,
body.ph-feste-mode .ph-feste-main textarea {
  background: rgba(7, 19, 27, 0.55);
  border: 1px solid var(--sd-admin-border);
  border-radius: 12px;
  color: var(--sd-admin-text);
  min-height: 44px;
  padding: 10px 14px;
  font-family: var(--sd-admin-font);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

body.ph-feste-mode .ph-feste-main input::placeholder,
body.ph-feste-mode .ph-feste-main textarea::placeholder {
  color: rgba(148, 163, 184, 0.65);
}

body.ph-feste-mode .ph-feste-main input:focus,
body.ph-feste-mode .ph-feste-main select:focus,
body.ph-feste-mode .ph-feste-main textarea:focus {
  outline: none;
  border-color: var(--sd-admin-secondary);
  box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.15);
}

body.ph-feste-mode .ph-feste-main label,
body.ph-feste-mode .ph-feste-main .form-group label {
  color: var(--sd-admin-text-muted);
  font-size: 0.82rem;
  font-weight: 600;
}

/* Tabelle — stile Articoli Laboratorio */
body.ph-feste-mode .ph-feste-main table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: transparent;
  border-radius: 12px;
  overflow: hidden;
}

body.ph-feste-mode .ph-feste-main table thead th {
  background: rgba(16, 35, 46, 0.95);
  color: var(--sd-admin-text-muted);
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 14px 16px;
  border-bottom: 1px solid var(--sd-admin-border);
  font-weight: 700;
}

body.ph-feste-mode .ph-feste-main table td {
  padding: 14px 16px;
  border-bottom: 1px solid var(--sd-admin-border);
  color: var(--sd-admin-text);
  vertical-align: middle;
}

body.ph-feste-mode .ph-feste-main table tbody tr:nth-child(even) {
  background: rgba(19, 39, 51, 0.45);
}

body.ph-feste-mode .ph-feste-main table tbody tr:hover {
  background: rgba(56, 189, 248, 0.06);
}

/* Modali admin (non laboratorio) */
body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .modal-box:not(.lab-cfg-modal-box):not(.modal-box-lab-nuovo):not(.modal-box-lab-cliente) {
  background: var(--sd-admin-card);
  border: 1px solid var(--sd-admin-border);
  border-radius: var(--sd-admin-radius);
  color: var(--sd-admin-text);
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.45);
}

body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .modal-box h2,
body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .modal-box h3 {
  color: var(--sd-admin-text);
}

body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .modal-box input,
body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .modal-box select,
body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .modal-box textarea {
  background: rgba(7, 19, 27, 0.55);
  border: 1px solid var(--sd-admin-border);
  color: var(--sd-admin-text);
  border-radius: 12px;
}

body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .modal-box input:focus,
body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .modal-box select:focus {
  border-color: var(--sd-admin-secondary);
  box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.15);
  outline: none;
}

/* Messaggi */
body.ph-feste-mode .ph-feste-main .msg-success {
  background: rgba(34, 197, 94, 0.14);
  color: var(--sd-admin-success);
  border: 1px solid rgba(34, 197, 94, 0.3);
}

body.ph-feste-mode .ph-feste-main .msg-error {
  background: rgba(239, 68, 68, 0.14);
  color: #fca5a5;
  border: 1px solid rgba(239, 68, 68, 0.3);
}

body.ph-feste-mode .ph-feste-main .msg-warning,
body.ph-feste-mode .ph-feste-main .msg-info {
  background: rgba(245, 158, 11, 0.12);
  color: var(--sd-admin-warning);
  border: 1px solid rgba(245, 158, 11, 0.3);
}

/* Wizard nuovo evento */
body.ph-feste-mode .ph-wizard-steps .ph-wizard-step {
  color: var(--sd-admin-text-muted);
  border-color: var(--sd-admin-border);
}

body.ph-feste-mode .ph-wizard-steps .ph-wizard-step.active {
  color: var(--sd-admin-primary);
  border-color: var(--sd-admin-primary);
}

body.ph-feste-mode .ph-wizard-nav-btn {
  border-radius: 10px;
}

/* Elimina viola legacy in admin */
body.ph-feste-mode .ph-feste-main .card,
body.ph-feste-mode .ph-feste-main .dashboard-section-title,
body.ph-feste-mode .ph-feste-main .dashboard-brand-titolo {
  border-left-color: var(--sd-admin-border) !important;
}

body.ph-feste-mode .ph-feste-main [style*="#667eea"],
body.ph-feste-mode .ph-feste-main [style*="#764ba2"] {
  border-color: var(--sd-admin-border) !important;
}

/* Config area — allinea token admin v4 */
#config.sd-config-panel {
  --sd-cfg-bg: var(--sd-admin-bg);
  --sd-cfg-sidebar: var(--sd-admin-sidebar);
  --sd-cfg-card: var(--sd-admin-card);
  --sd-cfg-green: var(--sd-admin-primary);
  --sd-cfg-blue: var(--sd-admin-secondary);
  --sd-cfg-text: var(--sd-admin-text);
  --sd-cfg-muted: var(--sd-admin-text-muted);
  --sd-cfg-border: var(--sd-admin-border);
}

body.ph-feste-mode .sd-config-page-header {
  background:
    radial-gradient(circle at 18% 50%, rgba(20, 184, 166, 0.12), transparent 42%),
    radial-gradient(circle at 72% 80%, rgba(56, 189, 248, 0.16), transparent 38%),
    linear-gradient(135deg, var(--sd-admin-header) 0%, #0f1f28 48%, var(--sd-admin-sidebar) 100%);
  border-bottom: 1px solid var(--sd-admin-border);
}

body.ph-feste-mode .sd-config-page-title {
  color: var(--sd-admin-text);
  letter-spacing: 0.14em;
}

body.ph-feste-mode .sd-config-breadcrumb {
  color: var(--sd-admin-text-muted);
}

body.ph-feste-mode #config .btn-primary,
body.ph-feste-mode #config .lab-cfg-btn-primary {
  background: var(--sd-admin-gradient-primary);
  color: #042f2e;
}

/* Drawer Configura — palette admin */
body.ph-feste-mode .sd-config-drawer {
  background: var(--sd-admin-sidebar);
  border-right-color: rgba(56, 189, 248, 0.28);
}

body.ph-feste-mode .sd-config-nav-parent.active {
  background: linear-gradient(135deg, rgba(20, 184, 166, 0.2) 0%, rgba(56, 189, 248, 0.14) 100%);
  box-shadow: inset 0 0 0 1px rgba(56, 189, 248, 0.22);
}

body.ph-feste-mode .sd-config-subnav-item.active {
  background: rgba(56, 189, 248, 0.14);
  color: var(--sd-admin-secondary);
}

/* hr, code */
body.ph-feste-mode .ph-feste-main hr {
  border-top-color: var(--sd-admin-border);
}

body.ph-feste-mode .ph-feste-main code {
  background: rgba(56, 189, 248, 0.1);
  color: var(--sd-admin-secondary);
}

/* Fade panel */
body.ph-feste-mode .ph-feste-main .panel.active {
  animation: sd-admin-fade-in 0.2s ease-out;
}

@keyframes sd-admin-fade-in {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Drawer slide — già su transform 0.24s */
body.ph-feste-mode .sd-config-drawer {
  transition:
    transform 0.2s cubic-bezier(0.4, 0, 0.2, 1),
    opacity 0.2s ease,
    visibility 0.2s ease;
}

/* Responsive — preserva mobile */
@media (max-width: 768px) {
  body.ph-feste-mode .ph-feste-main {
    padding: 16px 14px 24px;
  }

  body.ph-feste-mode .ph-feste-page-head {
    padding: 16px 18px;
    border-radius: 14px;
  }

  body.ph-feste-mode .ph-feste-main:has(#config.panel.active) {
    padding: 16px 14px 0;
  }

  body.ph-feste-mode .sd-config-content {
    padding: 16px 14px 24px;
  }
}

/* ============================================================
   PATCH SD OPERIS ADMIN v5 — Unificazione grafica Configura
   + kill legacy bianco/viola nelle schermate admin
   Solo CSS — nessuna modifica logica
   ============================================================ */

/* Token Configura allineati al design system ufficiale */
body.ph-feste-mode #config.sd-config-panel {
  --sd-cfg-bg: var(--sd-admin-bg);
  --sd-cfg-sidebar: var(--sd-admin-sidebar);
  --sd-cfg-card: var(--sd-admin-card);
  --sd-cfg-card-alt: var(--sd-admin-card-alt);
  --sd-cfg-green: var(--sd-admin-primary);
  --sd-cfg-blue: var(--sd-admin-secondary);
  --sd-cfg-text: var(--sd-admin-text);
  --sd-cfg-muted: var(--sd-admin-text-muted);
  --sd-cfg-border: var(--sd-admin-border);
  --sd-cfg-font: var(--sd-admin-font);
  --sd-cfg-radius: var(--sd-admin-radius);
  --sd-cfg-shadow: var(--sd-admin-shadow);
}

/* Header pagina Configura: titolo in ph-feste-page-head, breadcrumb sotto */
body.ph-feste-mode .ph-feste-main:has(#config.panel.active) {
  padding: 22px 24px 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

body.ph-feste-mode .ph-feste-main:has(#config.panel.active) .ph-feste-page-head {
  display: flex !important;
  flex-shrink: 0;
  margin-bottom: 0;
  border-radius: var(--sd-admin-radius) var(--sd-admin-radius) 0 0;
}

body.ph-feste-mode .ph-feste-main:has(#config.panel.active) #config.sd-config-panel.panel.active {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  border-radius: 0 0 var(--sd-admin-radius) var(--sd-admin-radius);
  overflow: hidden;
}

body.ph-feste-mode .ph-feste-main:has(#config.panel.active) .sd-config-page-title {
  display: none;
}

body.ph-feste-mode .ph-feste-main:has(#config.panel.active) .sd-config-page-header {
  padding: 10px 28px 14px;
  background: rgba(16, 35, 46, 0.55);
  border-bottom: 1px solid var(--sd-admin-border);
}

body.ph-feste-mode .ph-feste-main:has(#config.panel.active) .sd-config-breadcrumb {
  color: var(--sd-admin-secondary);
  font-weight: 600;
}

/* Drawer nav — teal/azzurro ufficiale (no verde neon legacy) */
body.ph-feste-mode .sd-config-nav-parent.active {
  background: linear-gradient(
    135deg,
    rgba(20, 184, 166, 0.2) 0%,
    rgba(56, 189, 248, 0.14) 100%
  ) !important;
  box-shadow: inset 0 0 0 1px rgba(56, 189, 248, 0.22) !important;
}

body.ph-feste-mode .sd-config-subnav-item.active {
  color: var(--sd-admin-secondary) !important;
  background: rgba(56, 189, 248, 0.14) !important;
}

/* ——— CONFIG: card annidate, admin, utenti, tenant ——— */
body.ph-feste-mode #config .card.margin-top,
body.ph-feste-mode #config .config-admin-card,
body.ph-feste-mode #config .config-placeholder-card {
  background: var(--sd-admin-card-alt);
  border: 1px solid var(--sd-admin-border);
  border-left: 1px solid var(--sd-admin-border);
  border-radius: var(--sd-admin-radius);
  box-shadow: var(--sd-admin-shadow);
  color: var(--sd-admin-text);
}

body.ph-feste-mode #config .config-utente-card,
body.ph-feste-mode #config .config-utente-card-v2,
body.ph-feste-mode #config .config-tenant-card {
  background: var(--sd-admin-card-alt);
  border: 1px solid var(--sd-admin-border);
  border-radius: 14px;
  color: var(--sd-admin-text);
  box-shadow: var(--sd-admin-shadow);
}

body.ph-feste-mode #config .config-utente-card-nuovo,
body.ph-feste-mode #config .config-tenant-card-nuovo {
  border-color: rgba(20, 184, 166, 0.45);
  box-shadow: 0 0 0 1px rgba(20, 184, 166, 0.2);
}

body.ph-feste-mode #config .config-utente-header-v2 {
  border-bottom-color: var(--sd-admin-border);
}

body.ph-feste-mode #config .config-utente-titoli strong {
  color: var(--sd-admin-text);
}

body.ph-feste-mode #config .config-utente-ruolo,
body.ph-feste-mode #config .config-field-hint {
  color: var(--sd-admin-text-muted);
}

body.ph-feste-mode #config .config-utente-sezione h4,
body.ph-feste-mode #config .config-permessi-sezione h5 {
  color: var(--sd-admin-text-muted);
}

body.ph-feste-mode #config .config-utente-sezione textarea[data-f="permessiJson"] {
  background: rgba(7, 19, 27, 0.55);
  border: 1px solid var(--sd-admin-border);
  color: var(--sd-admin-text);
  border-radius: 12px;
}

body.ph-feste-mode #config .config-utente-permessi .config-permessi-sezione + .config-permessi-sezione {
  border-top-color: var(--sd-admin-border);
}

body.ph-feste-mode #config .config-perm-check {
  background: rgba(17, 34, 45, 0.65);
  border: 1px solid var(--sd-admin-border);
  color: var(--sd-admin-text);
  border-radius: 10px;
  transition: background 0.15s ease, border-color 0.15s ease;
}

body.ph-feste-mode #config .config-perm-check:hover {
  background: rgba(56, 189, 248, 0.08);
  border-color: rgba(56, 189, 248, 0.28);
}

body.ph-feste-mode #config .config-perm-check input[type="checkbox"] {
  accent-color: var(--sd-admin-primary);
}

body.ph-feste-mode #config .config-tenant-color-picker {
  background: rgba(7, 19, 27, 0.55);
  border: 1px solid var(--sd-admin-border);
  border-radius: 10px;
}

body.ph-feste-mode #config .config-tenant-logo-memo {
  background: rgba(7, 19, 27, 0.45);
  border: 1px solid var(--sd-admin-border);
  color: var(--sd-admin-text-muted);
  border-radius: 10px;
}

body.ph-feste-mode #config .config-status-msg,
body.ph-feste-mode #config .config-backup-status {
  color: var(--sd-admin-text-muted);
}

body.ph-feste-mode #config .config-brand-avviso {
  color: var(--sd-admin-warning);
}

body.ph-feste-mode #config .config-legacy-details summary {
  color: var(--sd-admin-text);
}

body.ph-feste-mode #config .config-legacy-details {
  border: 1px solid var(--sd-admin-border);
  border-radius: 12px;
  padding: 12px 14px;
  background: rgba(17, 34, 45, 0.45);
}

/* Branding */
body.ph-feste-mode #config .brand-preset-row .btn {
  background: rgba(17, 34, 45, 0.85);
  border: 1px solid var(--sd-admin-border);
  color: var(--sd-admin-text);
  border-radius: 10px;
  font-weight: 600;
}

body.ph-feste-mode #config .brand-preset-row .btn:hover {
  background: rgba(56, 189, 248, 0.12);
  border-color: rgba(56, 189, 248, 0.3);
}

body.ph-feste-mode #config .config-brand-anteprima {
  background: linear-gradient(
    135deg,
    var(--sd-admin-header) 0%,
    rgba(20, 184, 166, 0.25) 50%,
    rgba(56, 189, 248, 0.2) 100%
  );
  border: 1px solid var(--sd-admin-border);
  color: var(--sd-admin-text);
  border-radius: 14px;
}

/* Listino / Prezzi in Configura */
body.ph-feste-mode #config .config-listino-row {
  background: var(--sd-admin-card-alt);
  border: 1px solid var(--sd-admin-border);
  border-radius: 12px;
  padding: 10px 12px;
}

body.ph-feste-mode #config .listino-cat-card {
  background: var(--sd-admin-card-alt);
  border: 1px solid var(--sd-admin-border);
  border-radius: 14px;
  overflow: hidden;
}

body.ph-feste-mode #config .listino-cat-header {
  background: linear-gradient(
    135deg,
    rgba(20, 184, 166, 0.35) 0%,
    rgba(56, 189, 248, 0.28) 100%
  );
  color: var(--sd-admin-text);
  border-bottom: 1px solid var(--sd-admin-border);
}

body.ph-feste-mode #config .listino-cat-header h4 {
  color: var(--sd-admin-text);
}

body.ph-feste-mode #config .listino-voce-row {
  border-bottom-color: var(--sd-admin-border);
}

body.ph-feste-mode #config .listino-voce-nome {
  color: var(--sd-admin-text);
}

body.ph-feste-mode #config .listino-prezzo-badge {
  background: rgba(7, 19, 27, 0.55);
  color: var(--sd-admin-secondary);
  border: 1px solid var(--sd-admin-border);
}

body.ph-feste-mode #config .listino-prezzo-badge small {
  color: var(--sd-admin-text-muted);
}

/* Contratto CHI.EM / template */
body.ph-feste-mode #config .config-template-label {
  color: var(--sd-admin-text);
}

body.ph-feste-mode #config .config-template-wa {
  background: rgba(7, 19, 27, 0.55);
  border: 1px solid var(--sd-admin-border);
  color: var(--sd-admin-text);
  border-radius: 12px;
}

body.ph-feste-mode #config .config-template-wa:focus {
  border-color: var(--sd-admin-secondary);
  box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.15);
  outline: none;
}

/* Strumenti / fornitori */
body.ph-feste-mode #config .config-tools-actions .btn {
  border-radius: 10px;
}

body.ph-feste-mode #config .fornitore-card {
  background: var(--sd-admin-card-alt);
  border: 1px solid var(--sd-admin-border);
  border-radius: 12px;
  color: var(--sd-admin-text);
}

/* Laboratorio in Configura — fieldset, anteprime, tabelle */
body.ph-feste-mode #config .lab-cfg-fieldset {
  border: 1px solid var(--sd-admin-border);
  border-radius: 12px;
  background: rgba(7, 19, 27, 0.35);
  color: var(--sd-admin-text);
}

body.ph-feste-mode #config .lab-cfg-fieldset legend {
  color: var(--sd-admin-text-muted);
}

body.ph-feste-mode #config .lab-cfg-art-preview-wrap {
  background: rgba(7, 19, 27, 0.55);
  border-color: var(--sd-admin-border);
}

body.ph-feste-mode #config .lab-cfg-art-img-memo,
body.ph-feste-mode #config #lab-cfg-art-immagine-url {
  color: var(--sd-admin-text-muted);
  background: rgba(7, 19, 27, 0.45);
}

body.ph-feste-mode #config .lab-cfg-art-thumb,
body.ph-feste-mode #config .lab-cfg-art-url-mini {
  border-color: var(--sd-admin-border);
  background: rgba(7, 19, 27, 0.45);
  color: var(--sd-admin-text-muted);
}

body.ph-feste-mode #config .lab-cfg-articoli-toolbar {
  background: rgba(12, 28, 38, 0.75);
  border-color: var(--sd-admin-border);
}

body.ph-feste-mode #config .lab-cfg-articoli-search,
body.ph-feste-mode #config .lab-cfg-articoli-select {
  background: rgba(7, 19, 27, 0.55);
  border-color: var(--sd-admin-border);
  color: var(--sd-admin-text);
}

body.ph-feste-mode #config .lab-cfg-articoli-table-wrap,
body.ph-feste-mode #config .lab-cfg-art-card {
  background: rgba(7, 19, 27, 0.4);
  border-color: var(--sd-admin-border);
}

body.ph-feste-mode #config .lab-cfg-art-img-placeholder {
  border-color: var(--sd-admin-border);
  background: rgba(7, 19, 27, 0.55);
}

body.ph-feste-mode #config .lab-config-table-v25 .lab-cfg-actions .btn-secondary {
  background: rgba(17, 34, 45, 0.9);
  border: 1px solid var(--sd-admin-border);
  color: var(--sd-admin-text);
}

body.ph-feste-mode #config .lab-config-table-v25 .lab-cfg-actions .btn-danger {
  background: rgba(239, 68, 68, 0.12);
  border: 1px solid rgba(239, 68, 68, 0.35);
  color: #fca5a5;
}

body.ph-feste-mode #config .lab-config-table-v25 .lab-cfg-actions .btn-primary,
body.ph-feste-mode #config .lab-config-table-v25 .lab-cfg-actions .btn:not(.btn-danger):not(.btn-secondary) {
  background: var(--sd-admin-gradient-primary);
  border: none;
  color: #042f2e;
}

body.ph-feste-mode #config .lab-cfg-section .form-group select,
body.ph-feste-mode #config .lab-cfg-section .form-group input,
body.ph-feste-mode #config .lab-cfg-modal-box .form-group input,
body.ph-feste-mode #config .lab-cfg-modal-box .form-group select {
  background: rgba(7, 19, 27, 0.55);
  border: 1px solid var(--sd-admin-border);
  color: var(--sd-admin-text);
}

body.ph-feste-mode #config .lab-cfg-section .form-group select:focus,
body.ph-feste-mode #config .lab-cfg-modal-box .form-group input:focus,
body.ph-feste-mode #config .lab-cfg-modal-box .form-group select:focus {
  border-color: var(--sd-admin-secondary);
  box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.15);
}

body.ph-feste-mode #config .lab-cfg-status {
  color: var(--sd-admin-text-muted);
}

body.ph-feste-mode #config .btn-success,
body.ph-feste-mode #config .lab-cfg-badge-ok {
  background: rgba(34, 197, 94, 0.14);
  border-color: rgba(34, 197, 94, 0.35);
  color: var(--sd-admin-success);
}

body.ph-feste-mode #config .btn-primary,
body.ph-feste-mode #config .lab-cfg-btn-primary,
body.ph-feste-mode #config .sd-config-content .btn-primary {
  background: var(--sd-admin-gradient-primary) !important;
  color: #042f2e !important;
}

/* ——— Pagine operative admin (Eventi, Nuovo evento, Cassa, Consumi) ——— */
body.ph-feste-mode .ph-feste-main .pacchetto-card {
  background: var(--sd-admin-card-alt);
  border: 2px solid var(--sd-admin-border);
  color: var(--sd-admin-text);
  border-radius: 14px;
}

body.ph-feste-mode .ph-feste-main .pacchetto-card:hover {
  border-color: rgba(56, 189, 248, 0.45);
}

body.ph-feste-mode .ph-feste-main .pacchetto-card.selected {
  border-color: var(--sd-admin-primary);
  background: rgba(20, 184, 166, 0.1);
  box-shadow: 0 0 0 1px rgba(20, 184, 166, 0.25);
}

body.ph-feste-mode .ph-feste-main .pacchetto-card h4 {
  color: var(--sd-admin-secondary);
}

body.ph-feste-mode .ph-feste-main .pacchetto-readonly-box {
  background: rgba(7, 19, 27, 0.45);
  border: 1px solid var(--sd-admin-border);
  border-radius: 12px;
}

body.ph-feste-mode .ph-feste-main .pacchetto-readonly-titolo,
body.ph-feste-mode .ph-feste-main .pacchetto-inclusi-list {
  color: var(--sd-admin-text);
}

body.ph-feste-mode .ph-feste-main .pacchetto-inclusi-vuoto {
  color: var(--sd-admin-text-muted);
}

body.ph-feste-mode .ph-feste-main .listino-readonly input[readonly] {
  background: rgba(7, 19, 27, 0.45);
  color: var(--sd-admin-text-muted);
  border-color: var(--sd-admin-border);
}

body.ph-feste-mode .ph-feste-main .listino-cat-card {
  background: var(--sd-admin-card-alt);
  border: 1px solid var(--sd-admin-border);
  border-radius: 14px;
}

body.ph-feste-mode .ph-feste-main .listino-cat-header {
  background: linear-gradient(
    135deg,
    rgba(20, 184, 166, 0.35) 0%,
    rgba(56, 189, 248, 0.28) 100%
  );
  color: var(--sd-admin-text);
}

body.ph-feste-mode .ph-feste-main .listino-cat-header h4 {
  color: var(--sd-admin-text);
}

body.ph-feste-mode .ph-feste-main .listino-voce-row {
  border-bottom-color: var(--sd-admin-border);
}

body.ph-feste-mode .ph-feste-main .listino-voce-nome {
  color: var(--sd-admin-text);
}

body.ph-feste-mode .ph-feste-main .listino-prezzo-badge {
  background: rgba(7, 19, 27, 0.55);
  color: var(--sd-admin-secondary);
  border: 1px solid var(--sd-admin-border);
}

body.ph-feste-mode .ph-feste-main .listino-prezzo-badge small {
  color: var(--sd-admin-text-muted);
}

body.ph-feste-mode .ph-feste-main .dynamic-row {
  border-bottom-color: var(--sd-admin-border);
}

body.ph-feste-mode .ph-feste-main .fornitore-card {
  background: var(--sd-admin-card-alt);
  border: 1px solid var(--sd-admin-border);
  color: var(--sd-admin-text);
  border-radius: 12px;
}

body.ph-feste-mode .ph-feste-main .total-card {
  background: rgba(20, 184, 166, 0.08);
  border: 1px solid rgba(20, 184, 166, 0.28);
  border-left: 1px solid rgba(20, 184, 166, 0.45);
}

body.ph-feste-mode .ph-feste-main .total-card span {
  color: var(--sd-admin-primary);
}

body.ph-feste-mode .ph-feste-main .extra-contratto-card {
  background: var(--sd-admin-card-alt);
  border: 1px solid var(--sd-admin-border);
  border-left: 3px solid var(--sd-admin-primary);
}

body.ph-feste-mode .ph-feste-main .extra-contratto-card h3 {
  color: var(--sd-admin-text);
}

body.ph-feste-mode .ph-feste-main #preventivo-contratto {
  background: rgba(34, 197, 94, 0.12);
  color: var(--sd-admin-success);
  border: 1px solid rgba(34, 197, 94, 0.3);
}

body.ph-feste-mode .ph-feste-main .evento-storico-movimenti {
  border-top-color: var(--sd-admin-border);
}

body.ph-feste-mode .ph-feste-main .evento-storico-movimenti h4 {
  color: var(--sd-admin-secondary);
}

body.ph-feste-mode .ph-feste-main .evento-storico-lista li {
  background: var(--sd-admin-card-alt);
  color: var(--sd-admin-text-muted);
  border-left-color: var(--sd-admin-primary);
}

body.ph-feste-mode .ph-feste-main .stat-box {
  background: var(--sd-admin-card);
  border: 1px solid var(--sd-admin-border);
  box-shadow: var(--sd-admin-shadow);
  color: var(--sd-admin-text);
}

body.ph-feste-mode .ph-feste-main .stat-box .number {
  color: var(--sd-admin-primary);
}

/* Badge stati evento — palette SD OPERIS */
body.ph-feste-mode .ph-feste-main .badge-preventivo {
  background: rgba(245, 158, 11, 0.18);
  color: var(--sd-admin-warning);
  border: 1px solid rgba(245, 158, 11, 0.35);
}

body.ph-feste-mode .ph-feste-main .badge-confermato {
  background: rgba(56, 189, 248, 0.15);
  color: var(--sd-admin-secondary);
  border: 1px solid rgba(56, 189, 248, 0.35);
}

body.ph-feste-mode .ph-feste-main .badge-saldato {
  background: rgba(34, 197, 94, 0.15);
  color: var(--sd-admin-success);
  border: 1px solid rgba(34, 197, 94, 0.35);
}

body.ph-feste-mode .ph-feste-main .badge-chiuso {
  background: rgba(148, 163, 184, 0.15);
  color: var(--sd-admin-text-muted);
  border: 1px solid var(--sd-admin-border);
}

body.ph-feste-mode .ph-feste-main .badge-annullato {
  background: rgba(239, 68, 68, 0.15);
  color: #fca5a5;
  border: 1px solid rgba(239, 68, 68, 0.35);
}

body.ph-feste-mode .ph-feste-main .dashboard-lista-vuota,
body.ph-feste-mode .ph-feste-main .voci-personalizzate-vuoto,
body.ph-feste-mode .ph-feste-main .form-hint-stato {
  color: var(--sd-admin-text-muted);
}

body.ph-feste-mode .ph-feste-main input[type="checkbox"],
body.ph-feste-mode .ph-feste-main input[type="radio"] {
  accent-color: var(--sd-admin-primary);
}

/* Modali admin — include lab-cfg quando in Configura (non modulo Laboratorio) */
body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay {
  background: rgba(7, 19, 27, 0.72);
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
}

body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .modal-box,
body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .lab-cfg-modal-box {
  background: var(--sd-admin-card);
  border: 1px solid var(--sd-admin-border);
  border-radius: var(--sd-admin-radius);
  color: var(--sd-admin-text);
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.5);
}

body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .modal-box h2,
body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .modal-box h3,
body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .lab-cfg-modal-title {
  color: var(--sd-admin-text);
}

body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .modal-box label,
body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .lab-cfg-modal-box label {
  color: var(--sd-admin-text-muted);
}

body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .modal-box input,
body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .modal-box select,
body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .modal-box textarea,
body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .lab-cfg-modal-box input,
body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .lab-cfg-modal-box select,
body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .lab-cfg-modal-box textarea {
  background: rgba(7, 19, 27, 0.55);
  border: 1px solid var(--sd-admin-border);
  color: var(--sd-admin-text);
  border-radius: 12px;
}

body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .close-modal {
  color: var(--sd-admin-text-muted);
}

body.ph-feste-mode:not(.ph-feste-lab-active) .modal-overlay .lab-cfg-modal-footer {
  background: linear-gradient(180deg, rgba(19, 39, 51, 0) 0%, var(--sd-admin-card) 28%);
  border-top: 1px solid var(--sd-admin-border);
}

body.ph-feste-mode:not(.ph-feste-lab-active) .modal-lab-modifica-wrap {
  border-top-color: var(--sd-admin-border);
}

/* ============================================================
   Mascotte noleggio — UI ordini + config
   ============================================================ */

.lab-mascotte-noleggio-section {
  margin: 20px 0;
  padding: 18px;
  border: 1px solid var(--sd-border, #203744);
  border-radius: 16px;
  background: rgba(19, 39, 51, 0.45);
}

.lab-mascotte-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 12px;
  margin: 14px 0 18px;
}

.lab-mascotte-grid-compact {
  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
}

.lab-mascotte-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 12px 10px;
  border: 2px solid var(--sd-border, #203744);
  border-radius: 14px;
  background: rgba(7, 19, 27, 0.45);
  cursor: pointer;
  transition: border-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
  color: inherit;
  font: inherit;
  text-align: center;
}

.lab-mascotte-card:hover {
  border-color: rgba(56, 189, 248, 0.45);
  transform: translateY(-1px);
}

.lab-mascotte-card-selected {
  border-color: #14B8A6;
  box-shadow: 0 0 0 1px rgba(20, 184, 166, 0.35);
  background: rgba(20, 184, 166, 0.08);
}

.lab-mascotte-card-img {
  width: 72px;
  height: 72px;
  object-fit: cover;
  border-radius: 12px;
  background: rgba(0, 0, 0, 0.2);
}

.lab-mascotte-card-img-fallback {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2rem;
}

.lab-mascotte-card-nome {
  font-weight: 700;
  font-size: 0.88rem;
  line-height: 1.25;
}

.lab-mascotte-card-prezzo {
  font-size: 0.78rem;
  color: #38BDF8;
  font-weight: 600;
}

.lab-mascotte-date-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

.lab-mascotte-disponibilita-msg {
  margin-top: 12px;
  padding: 10px 12px;
  border-radius: 10px;
  font-size: 0.88rem;
  font-weight: 600;
}

.lab-mascotte-disponibile {
  background: rgba(34, 197, 94, 0.12);
  border: 1px solid rgba(34, 197, 94, 0.35);
  color: #22C55E;
}

.lab-mascotte-occupata {
  background: rgba(239, 68, 68, 0.12);
  border: 1px solid rgba(239, 68, 68, 0.35);
  color: #fca5a5;
}

.lab-mascotte-pending {
  background: rgba(148, 163, 184, 0.12);
  border: 1px solid rgba(148, 163, 184, 0.35);
  color: #94A3B8;
}

#lab-submit-btn[data-lab-mascotte-blocked="1"],
#lab-man-submit-btn[data-lab-mascotte-blocked="1"] {
  opacity: 0.55;
  cursor: not-allowed;
}

.lab-mascotte-empty {
  color: #94A3B8;
  font-size: 0.9rem;
  padding: 12px 0;
}

.lab-mascotte-config-wrap {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.lab-mascotte-agenda-wrap {
  padding: 18px;
  border: 1px solid var(--sd-cfg-border, #203744);
  border-radius: 14px;
  background: rgba(7, 19, 27, 0.35);
}

.lab-mascotte-agenda-wrap h4 {
  margin: 0 0 12px;
  font-size: 1rem;
}

.lab-mascotte-agenda-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-bottom: 14px;
}

.lab-mascotte-agenda-toolbar select {
  min-width: 200px;
  min-height: 44px;
  border-radius: 10px;
}

.lab-mascotte-agenda-vuota {
  color: #94A3B8;
  font-size: 0.88rem;
}

.lab-cfg-mascotte-preview-wrap {
  margin-top: 10px;
  padding: 10px;
  border-radius: 12px;
  background: rgba(7, 19, 27, 0.45);
  text-align: center;
}

.lab-cfg-mascotte-preview {
  max-width: 160px;
  max-height: 120px;
  object-fit: contain;
  border-radius: 10px;
}

.lab-man-mascotte-wrap {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  padding: 14px;
  border: 1px dashed var(--sd-border, #203744);
  border-radius: 12px;
  background: rgba(7, 19, 27, 0.25);
}

.lab-manuale-full {
  grid-column: 1 / -1;
}

@media (max-width: 700px) {
  .lab-mascotte-date-grid,
  .lab-man-mascotte-wrap {
    grid-template-columns: 1fr;
  }
}

/* ============================================================
   PATCH — Modali ordine laboratorio (contrasto SD OPERIS dark)
   Dettaglio / Modifica / Nuovo manuale / WA / Cliente lab
   ============================================================ */

#modal-lab-ordine.modal-overlay,
#modal-lab-modifica-ordine.modal-overlay,
#modal-lab-nuovo-ordine.modal-overlay,
#modal-lab-wa-pronto.modal-overlay,
#modal-lab-cliente.modal-overlay {
  background: rgba(7, 19, 27, 0.78);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

#modal-lab-ordine .modal-box,
#modal-lab-modifica-ordine .modal-box,
#modal-lab-nuovo-ordine .modal-box,
#modal-lab-wa-pronto .modal-box,
#modal-lab-cliente .modal-box,
.modal-box-lab,
.modal-box-lab-nuovo,
.modal-box-lab-cliente,
.modal-box-lab-wa {
  background: #132733;
  border: 1px solid #203744;
  border-radius: 16px;
  color: #F8FAFC;
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.55);
}

#modal-lab-ordine .modal-box h2,
#modal-lab-ordine .modal-box h3,
#modal-lab-modifica-ordine .modal-box h2,
#modal-lab-modifica-ordine .modal-box h3,
#modal-lab-nuovo-ordine .modal-box h2,
#modal-lab-nuovo-ordine .modal-box h3,
#modal-lab-wa-pronto .modal-box h2,
#modal-lab-wa-pronto .modal-box h3,
#modal-lab-cliente .modal-box h2,
#modal-lab-cliente .modal-box h3,
.modal-box-lab h2,
.modal-box-lab h3,
.modal-box-lab-nuovo h2,
.modal-box-lab-nuovo h3,
.modal-box-lab-cliente h2,
.modal-box-lab-cliente h3,
.modal-box-lab-wa h2,
.modal-box-lab-wa h3 {
  color: #F8FAFC;
  margin-top: 0;
}

#modal-lab-ordine .modal-box p,
#modal-lab-modifica-ordine .modal-box p,
#modal-lab-nuovo-ordine .modal-box p,
#modal-lab-wa-pronto .modal-box p,
#modal-lab-cliente .modal-box p,
.modal-box-lab p,
.modal-box-lab-nuovo p,
.modal-box-lab-cliente p,
.modal-box-lab-wa p {
  color: #CBD5E1;
}

#modal-lab-ordine .modal-box label,
#modal-lab-modifica-ordine .modal-box label,
#modal-lab-nuovo-ordine .modal-box label,
#modal-lab-cliente .modal-box label,
.modal-box-lab label,
.modal-box-lab-nuovo label,
.modal-box-lab-cliente label {
  color: #CBD5E1;
  font-weight: 600;
}

#modal-lab-ordine .modal-box input,
#modal-lab-ordine .modal-box select,
#modal-lab-ordine .modal-box textarea,
#modal-lab-modifica-ordine .modal-box input,
#modal-lab-modifica-ordine .modal-box select,
#modal-lab-modifica-ordine .modal-box textarea,
#modal-lab-nuovo-ordine .modal-box input,
#modal-lab-nuovo-ordine .modal-box select,
#modal-lab-nuovo-ordine .modal-box textarea,
#modal-lab-cliente .modal-box input,
#modal-lab-cliente .modal-box select,
#modal-lab-cliente .modal-box textarea,
.modal-box-lab input,
.modal-box-lab select,
.modal-box-lab textarea,
.modal-box-lab-nuovo input,
.modal-box-lab-nuovo select,
.modal-box-lab-nuovo textarea,
.modal-box-lab-cliente input,
.modal-box-lab-cliente select,
.modal-box-lab-cliente textarea {
  background: #07131b;
  color: #F8FAFC;
  border: 1px solid #203744;
  border-radius: 12px;
}

#modal-lab-ordine .modal-box input::placeholder,
#modal-lab-modifica-ordine .modal-box input::placeholder,
#modal-lab-nuovo-ordine .modal-box input::placeholder,
#modal-lab-cliente .modal-box input::placeholder,
#modal-lab-ordine .modal-box textarea::placeholder,
#modal-lab-modifica-ordine .modal-box textarea::placeholder,
#modal-lab-nuovo-ordine .modal-box textarea::placeholder,
#modal-lab-cliente .modal-box textarea::placeholder,
.modal-box-lab-nuovo input::placeholder,
.modal-box-lab-nuovo textarea::placeholder,
.modal-box-lab-cliente input::placeholder,
.modal-box-lab-cliente textarea::placeholder {
  color: #94A3B8;
  opacity: 1;
}

#modal-lab-ordine .modal-box input:focus,
#modal-lab-ordine .modal-box select:focus,
#modal-lab-ordine .modal-box textarea:focus,
#modal-lab-modifica-ordine .modal-box input:focus,
#modal-lab-modifica-ordine .modal-box select:focus,
#modal-lab-modifica-ordine .modal-box textarea:focus,
#modal-lab-nuovo-ordine .modal-box input:focus,
#modal-lab-nuovo-ordine .modal-box select:focus,
#modal-lab-nuovo-ordine .modal-box textarea:focus,
#modal-lab-cliente .modal-box input:focus,
#modal-lab-cliente .modal-box select:focus,
#modal-lab-cliente .modal-box textarea:focus,
.modal-box-lab-nuovo input:focus,
.modal-box-lab-nuovo select:focus,
.modal-box-lab-nuovo textarea:focus,
.modal-box-lab-cliente input:focus,
.modal-box-lab-cliente select:focus,
.modal-box-lab-cliente textarea:focus {
  border-color: #38BDF8;
  box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.18);
  outline: none;
}

#modal-lab-ordine .modal-box input:disabled,
#modal-lab-modifica-ordine .modal-box input:disabled,
#modal-lab-nuovo-ordine .modal-box input:disabled,
#modal-lab-cliente .modal-box input:disabled,
#modal-lab-ordine .modal-box select:disabled,
#modal-lab-modifica-ordine .modal-box select:disabled,
#modal-lab-nuovo-ordine .modal-box select:disabled,
#modal-lab-cliente .modal-box select:disabled,
.modal-box-lab-nuovo input:disabled,
.modal-box-lab-nuovo select:disabled,
.modal-box-lab-cliente input:disabled,
.modal-box-lab-cliente select:disabled {
  opacity: 0.72;
  color: #94A3B8;
  background: #0a1a24;
  cursor: not-allowed;
}

#modal-lab-ordine .modal-box select option,
#modal-lab-modifica-ordine .modal-box select option,
#modal-lab-nuovo-ordine .modal-box select option,
#modal-lab-cliente .modal-box select option,
.modal-box-lab-nuovo select option,
.modal-box-lab-cliente select option {
  background: #132733;
  color: #F8FAFC;
}

#modal-lab-ordine .modal-lab-dl dt,
#modal-lab-modifica-ordine .modal-lab-dl dt,
.modal-box-lab .modal-lab-dl dt {
  color: #94A3B8;
  font-weight: 600;
}

#modal-lab-ordine .modal-lab-dl dd,
#modal-lab-modifica-ordine .modal-lab-dl dd,
.modal-box-lab .modal-lab-dl dd {
  color: #F8FAFC;
}

#modal-lab-ordine .modal-lab-stati,
#modal-lab-ordine .modal-lab-wa,
#modal-lab-ordine .modal-lab-modifica-wrap,
.modal-box-lab .modal-lab-stati,
.modal-box-lab .modal-lab-wa,
.modal-box-lab .modal-lab-modifica-wrap {
  border-top-color: #203744;
}

#modal-lab-ordine .lab-allegato-azioni a,
#modal-lab-modifica-ordine .lab-mod-allegato-link a,
.modal-box-lab .lab-allegato-azioni a,
.modal-box-lab-nuovo .lab-mod-allegato-link a {
  color: #38BDF8;
}

#modal-lab-ordine .lab-allegato-sep,
#modal-lab-modifica-ordine .lab-mod-no-allegato,
.modal-box-lab .lab-allegato-sep,
.modal-box-lab-nuovo .lab-mod-no-allegato,
.modal-box-lab-nuovo .lab-mod-allegato-attuale {
  color: #94A3B8;
}

#modal-lab-ordine .lab-wa-mancante,
.modal-box-lab .lab-wa-mancante {
  color: #94A3B8;
}

#modal-lab-ordine .modal-lab-errore,
#modal-lab-modifica-ordine .lab-form-error,
#modal-lab-nuovo-ordine .lab-form-error,
.modal-box-lab .modal-lab-errore,
.modal-box-lab-nuovo .lab-form-error {
  color: #fca5a5;
  background: rgba(239, 68, 68, 0.12);
  border: 1px solid rgba(239, 68, 68, 0.28);
  border-radius: 10px;
  padding: 10px 12px;
}

#modal-lab-nuovo-ordine .lab-cerca-cliente-risultati,
#modal-lab-cliente .lab-cerca-cliente-risultati,
.modal-box-lab-nuovo .lab-cerca-cliente-risultati {
  background: #11222d;
  border: 1px solid #203744;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.45);
}

#modal-lab-nuovo-ordine .lab-cerca-cliente-item,
#modal-lab-cliente .lab-cerca-cliente-item,
.modal-box-lab-nuovo .lab-cerca-cliente-item {
  color: #F8FAFC;
  border-bottom-color: #203744;
}

#modal-lab-nuovo-ordine .lab-cerca-cliente-item:hover,
#modal-lab-nuovo-ordine .lab-cerca-cliente-item:focus,
#modal-lab-cliente .lab-cerca-cliente-item:hover,
#modal-lab-cliente .lab-cerca-cliente-item:focus,
.modal-box-lab-nuovo .lab-cerca-cliente-item:hover,
.modal-box-lab-nuovo .lab-cerca-cliente-item:focus {
  background: rgba(56, 189, 248, 0.12);
}

#modal-lab-nuovo-ordine .lab-cerca-cliente-vuoto,
.modal-box-lab-nuovo .lab-cerca-cliente-vuoto {
  color: #94A3B8;
}

#modal-lab-ordine .button-group .btn-primary,
#modal-lab-modifica-ordine .button-group .btn-primary,
#modal-lab-nuovo-ordine .button-group .btn-primary,
#modal-lab-cliente .button-group .btn-primary,
.modal-box-lab .btn-primary,
.modal-box-lab-nuovo .btn-primary,
.modal-box-lab-cliente .btn-primary,
.modal-box-lab-wa .btn-primary,
#modal-lab-ordine .modal-lab-stati .btn-primary {
  background: linear-gradient(90deg, #14B8A6, #38BDF8);
  border: none;
  color: #042f2e;
  font-weight: 600;
}

#modal-lab-ordine .button-group .btn-primary:hover,
#modal-lab-modifica-ordine .button-group .btn-primary:hover,
#modal-lab-nuovo-ordine .button-group .btn-primary:hover,
#modal-lab-cliente .button-group .btn-primary:hover,
.modal-box-lab .btn-primary:hover,
.modal-box-lab-nuovo .btn-primary:hover,
.modal-box-lab-cliente .btn-primary:hover,
.modal-box-lab-wa .btn-primary:hover,
#modal-lab-ordine .modal-lab-stati .btn-primary:hover {
  filter: brightness(1.05);
}

#modal-lab-ordine .button-group .btn-secondary,
#modal-lab-modifica-ordine .button-group .btn-secondary,
#modal-lab-nuovo-ordine .button-group .btn-secondary,
#modal-lab-wa-pronto .button-group .btn-secondary,
#modal-lab-cliente .button-group .btn-secondary,
.modal-box-lab .btn-secondary,
.modal-box-lab-nuovo .btn-secondary,
.modal-box-lab-cliente .btn-secondary,
.modal-box-lab-wa .btn-secondary,
#modal-lab-ordine .modal-lab-stati .btn-secondary {
  background: #11222d;
  border: 1px solid #203744;
  color: #F8FAFC;
}

#modal-lab-ordine .button-group .btn-secondary:hover,
#modal-lab-modifica-ordine .button-group .btn-secondary:hover,
#modal-lab-nuovo-ordine .button-group .btn-secondary:hover,
#modal-lab-wa-pronto .button-group .btn-secondary:hover,
#modal-lab-cliente .button-group .btn-secondary:hover,
.modal-box-lab .btn-secondary:hover,
.modal-box-lab-nuovo .btn-secondary:hover,
.modal-box-lab-cliente .btn-secondary:hover,
.modal-box-lab-wa .btn-secondary:hover {
  background: #1a3340;
  border-color: #2d4f5e;
}

#modal-lab-ordine .btn-success,
#modal-lab-wa-pronto .btn-success,
.modal-box-lab-wa .btn-success {
  background: #22C55E;
  border: none;
  color: #052e16;
  font-weight: 600;
}

#modal-lab-ordine .btn-danger,
#modal-lab-modifica-ordine .btn-danger,
#modal-lab-nuovo-ordine .btn-danger,
.modal-box-lab .btn-danger,
.modal-box-lab-nuovo .btn-danger {
  background: #EF4444;
  border: none;
  color: #fff;
}

#modal-lab-nuovo-ordine .lab-man-mascotte-wrap,
#modal-lab-modifica-ordine .lab-man-mascotte-wrap,
.modal-box-lab-nuovo .lab-man-mascotte-wrap {
  border-color: #203744;
  background: rgba(7, 19, 27, 0.45);
}

#modal-lab-nuovo-ordine .lab-required,
#modal-lab-modifica-ordine .lab-required,
#modal-lab-cliente .lab-required,
.modal-box-lab-nuovo .lab-required,
.modal-box-lab-cliente .lab-required {
  color: #fca5a5;
}

/* ============================================================
   PATCH — Area operativa Laboratorio: dark theme SD OPERIS
   Produzione · Stampe · Archivio · Clienti · filtri · card
   Scope: #laboratorio.oplab-shell (non tocca portale cliente)
   ============================================================ */

#laboratorio.oplab-shell {
  --sd-bg: #07131b;
  --sd-card: #132733;
  --sd-card-alt: #11222d;
  --sd-border: #203744;
  --sd-text: #F8FAFC;
  --sd-text-muted: #94A3B8;
  --sd-sidebar-bg: #0f1722;
  --sd-header-bg: #10232e;
  --sd-primary: #14B8A6;
  --sd-secondary: #38BDF8;
  --sd-shadow: 0 4px 24px rgba(0, 0, 0, 0.28);
  --sd-shadow-hover: 0 8px 32px rgba(0, 0, 0, 0.38);
  color: #F8FAFC;
  background: #07131b;
}

body.ph-lab-solo-mode.ph-lab-solo-app,
body.ph-lab-solo-mode #app-page,
body.ph-feste-lab-active #app-page {
  background: #07131b;
}

#laboratorio.oplab-shell.panel.active {
  background: #07131b;
}

#laboratorio .oplab-main {
  background: #07131b;
  color: #F8FAFC;
}

#laboratorio .oplab-page-title {
  color: #F8FAFC;
}

#laboratorio .oplab-page-sub,
#laboratorio .lab-archivio-desc {
  color: #94A3B8;
}

/* —— Dashboard KPI —— */
#laboratorio .oplab-shell .lab-pro-kpi-card,
#laboratorio .lab-pro-kpi-card {
  background: #132733;
  border: 1px solid #203744;
  box-shadow: var(--sd-shadow);
}

#laboratorio .lab-pro-kpi-value {
  color: #F8FAFC;
}

#laboratorio .lab-pro-kpi-label {
  color: #94A3B8;
}

#laboratorio .lab-pro-kpi-nuovi {
  background: rgba(34, 197, 94, 0.1);
  border-color: rgba(34, 197, 94, 0.35);
}

#laboratorio .lab-pro-kpi-nuovi .lab-pro-kpi-value {
  color: #4ade80;
}

#laboratorio .lab-pro-kpi-preview {
  border-top-color: rgba(34, 197, 94, 0.22);
}

#laboratorio .lab-pro-kpi-preview-head {
  color: #86efac;
}

#laboratorio .lab-pro-kpi-preview-nome {
  color: #F8FAFC;
}

#laboratorio .lab-pro-kpi-preview-ora {
  color: #4ade80;
}

#laboratorio .lab-pro-kpi-preview-vuoto {
  color: #94A3B8;
}

#laboratorio .lab-pro-kpi-preview-item + .lab-pro-kpi-preview-item {
  border-top-color: rgba(32, 55, 68, 0.8);
}

#laboratorio .lab-pro-kpi-ritardo {
  background: rgba(239, 68, 68, 0.12);
  border-color: rgba(239, 68, 68, 0.4);
}

#laboratorio .lab-pro-kpi-ritardo .lab-pro-kpi-value {
  color: #fca5a5;
}

#laboratorio .lab-pro-kpi-lavorazione {
  background: rgba(245, 158, 11, 0.12);
  border-color: rgba(245, 158, 11, 0.4);
}

#laboratorio .lab-pro-kpi-lavorazione .lab-pro-kpi-value {
  color: #fbbf24;
}

#laboratorio .lab-pro-kpi-annullati {
  background: rgba(148, 163, 184, 0.1);
  border-color: rgba(148, 163, 184, 0.35);
}

#laboratorio .lab-pro-kpi-annullati .lab-pro-kpi-value {
  color: #cbd5e1;
}

#laboratorio .lab-pro-data-field label {
  color: #94a3b8;
}

#laboratorio .lab-pro-data-field input[type="date"] {
  background: #132733;
  border-color: #203744;
  color: #f8fafc;
  color-scheme: dark;
}

#laboratorio .lab-calendario-wrap {
  background: #132733;
  border-color: #203744;
  box-shadow: var(--sd-shadow);
}

#laboratorio .lab-calendario-mese-titolo,
#laboratorio .lab-calendario-giorno-titolo {
  color: #f8fafc;
}

#laboratorio .lab-calendario-weekdays span {
  color: #64748b;
}

#laboratorio .lab-calendario-help {
  color: #94a3b8;
}

#laboratorio .lab-calendario-mascotte-filtro label {
  color: #94a3b8;
}

#laboratorio .lab-calendario-mascotte-select {
  background: #132733;
  border-color: #203744;
  color: #f8fafc;
}

#laboratorio .lab-calendario-day.is-occupied-mascotte {
  background: rgba(56, 189, 248, 0.14);
  border-color: rgba(56, 189, 248, 0.35);
}

#laboratorio .lab-calendario-day.is-occupied-mascotte:hover {
  background: rgba(56, 189, 248, 0.22);
}

#laboratorio .lab-calendario-day.is-occupied-mascotte-red {
  background: rgba(239, 68, 68, 0.28);
  border-color: rgba(248, 113, 113, 0.55);
  box-shadow: inset 0 0 0 1px rgba(254, 202, 202, 0.2);
}

#laboratorio .lab-calendario-day.is-occupied-mascotte-red:hover {
  background: rgba(239, 68, 68, 0.38);
}

#laboratorio .lab-calendario-day.is-occupied-mascotte-red.is-selected {
  background: rgba(239, 68, 68, 0.45);
  box-shadow: inset 0 0 0 2px #f87171;
}

#laboratorio .lab-calendario-ordine-riga {
  background: #1a3340;
  border-color: #203744;
}

#laboratorio .lab-calendario-ordine-riga.is-annullato {
  background: rgba(15, 23, 42, 0.55);
  border-color: #334155;
}

#laboratorio .lab-calendario-ordine-id,
#laboratorio .lab-calendario-ordine-row {
  color: #e2e8f0;
}

#laboratorio .lab-calendario-ordine-lbl {
  color: #94a3b8;
}

#laboratorio .lab-calendario-day {
  background: #1a3340;
  color: #e2e8f0;
}

#laboratorio .lab-calendario-day.is-occupied-mascotte {
  background: #203744;
}

#laboratorio .lab-calendario-day.is-occupied-mascotte:hover {
  background: #264556;
}

#laboratorio .lab-calendario-day.is-selected {
  background: rgba(56, 189, 248, 0.15);
  box-shadow: inset 0 0 0 2px rgba(56, 189, 248, 0.55);
}

#laboratorio .lab-calendario-day.is-today {
  box-shadow: inset 0 0 0 2px rgba(56, 189, 248, 0.75);
}

#laboratorio .lab-calendario-giorno-panel {
  border-top-color: #203744;
}

#laboratorio .lab-pro-card-annullato {
  background: rgba(15, 23, 42, 0.45) !important;
  border-color: #334155 !important;
}

#laboratorio .lab-badge-annullato {
  background: rgba(100, 116, 139, 0.2);
  color: #cbd5e1;
  border-color: rgba(100, 116, 139, 0.4);
}

#laboratorio .lab-pro-kpi-clickable.active {
  border-color: #38BDF8;
  box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.28);
}

/* —— Stampe —— */
#laboratorio .oplab-stampa-card {
  background: #132733;
  border: 1px solid #203744;
  box-shadow: var(--sd-shadow);
}

#laboratorio .oplab-stampa-card:hover {
  border-color: rgba(20, 184, 166, 0.45);
  box-shadow: var(--sd-shadow-hover);
  background: #1a3340;
}

#laboratorio .oplab-stampa-card-title {
  color: #F8FAFC;
}

#laboratorio .oplab-stampa-card-desc {
  color: #94A3B8;
}

#laboratorio .oplab-shell .lab-stampa-periodo-inline,
#laboratorio .lab-stampa-periodo-inline {
  background: #132733;
  border: 1px solid #203744;
}

#laboratorio .lab-stampa-label {
  color: #94A3B8;
  font-weight: 600;
}

#laboratorio .lab-stampa-date {
  background: #07131b;
  color: #F8FAFC;
  border: 1px solid #203744;
  border-radius: 10px;
}

#laboratorio .oplab-impostazioni-card {
  background: #132733;
  border: 1px solid #203744;
}

#laboratorio .oplab-impostazioni-desc {
  color: #94A3B8;
}

/* —— Produzione: filtri e ricerca —— */
#laboratorio .oplab-shell .lab-pro-filtri-wrap,
#laboratorio .lab-pro-filtri-wrap {
  background: #132733;
  border: 1px solid #203744;
  box-shadow: var(--sd-shadow);
}

#laboratorio .oplab-shell .lab-filtro-btn,
#laboratorio .lab-filtro-btn {
  background: #11222d;
  border: 1px solid #203744;
  color: #94A3B8;
}

#laboratorio .oplab-shell .lab-filtro-btn.active,
#laboratorio .lab-filtro-btn.active {
  background: linear-gradient(90deg, #14B8A6, #38BDF8);
  border-color: transparent;
  color: #042f2e;
  font-weight: 600;
}

#laboratorio .lab-filtro-btn[data-lab-filtro="In lavorazione"].active {
  background: linear-gradient(90deg, #F59E0B, #fbbf24);
  border-color: transparent;
  color: #1a1200;
}

#laboratorio .oplab-shell .lab-pro-ricerca-input,
#laboratorio .lab-pro-ricerca-input,
#laboratorio .oplab-shell .lab-ricerca input,
#laboratorio .lab-ricerca input {
  background: #07131b;
  color: #F8FAFC;
  border: 1px solid #203744;
}

#laboratorio .lab-pro-ricerca-input::placeholder,
#laboratorio .lab-ricerca input::placeholder {
  color: #94A3B8;
  opacity: 1;
}

#laboratorio .lab-pro-ricerca-input:focus,
#laboratorio .lab-ricerca input:focus {
  border-color: #38BDF8;
  box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.18);
  outline: none;
}

/* —— Sezioni produzione —— */
#laboratorio .lab-pro-sezione-titolo {
  color: #F8FAFC;
  border-bottom-color: #203744;
}

#laboratorio .lab-pro-sezione-ritardi-titolo {
  color: #fca5a5;
  border-bottom-color: rgba(239, 68, 68, 0.45);
}

#laboratorio .lab-pro-sezione-titolo-lavorazione {
  color: #fbbf24;
  border-bottom-color: rgba(245, 158, 11, 0.45);
}

/* —— Card ordini produzione/archivio —— */
#laboratorio .oplab-shell .lab-pro-card,
#laboratorio .lab-pro-card {
  background: #132733;
  border: 1px solid #203744;
  box-shadow: var(--sd-shadow);
}

#laboratorio .oplab-shell .lab-pro-card:hover,
#laboratorio .lab-pro-card:hover {
  border-color: rgba(56, 189, 248, 0.35);
  box-shadow: var(--sd-shadow-hover);
}

#laboratorio .lab-pro-card-id,
#laboratorio .lab-pro-card-cliente {
  color: #F8FAFC;
}

#laboratorio .lab-pro-card-meta,
#laboratorio .lab-pro-card-meta span {
  color: #94A3B8;
}

#laboratorio .lab-pro-card-row {
  color: #CBD5E1;
}

#laboratorio .lab-pro-card-lbl {
  color: #94A3B8;
}

#laboratorio .lab-pro-card-val {
  color: #F8FAFC;
}

#laboratorio .lab-pro-card-actions {
  border-top-color: #203744;
}

#laboratorio .lab-pro-card-ritardo {
  background: rgba(239, 68, 68, 0.1);
  border-color: rgba(239, 68, 68, 0.45);
  box-shadow: 0 0 0 1px rgba(239, 68, 68, 0.2);
}

#laboratorio .lab-pro-card-lavorazione {
  background: rgba(245, 158, 11, 0.1);
  border-color: rgba(245, 158, 11, 0.45);
  box-shadow: 0 0 0 1px rgba(245, 158, 11, 0.2);
}

#laboratorio .lab-pro-card-evidenziato {
  border-color: #38BDF8;
  box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.25);
}

#laboratorio .lab-card-stato-label {
  color: #94A3B8;
}

#laboratorio .lab-card-stato-select {
  background: #07131b;
  color: #F8FAFC;
  border: 1px solid #203744;
}

#laboratorio .lab-card-stato-select option {
  background: #132733;
  color: #F8FAFC;
}

/* —— Badge stato ordine (pill su card scura) —— */
#laboratorio .lab-badge-nuovo {
  background: rgba(56, 189, 248, 0.18);
  color: #7dd3fc;
}

#laboratorio .lab-badge-lavorazione,
#laboratorio .lab-badge-lavorazione-evidenziato {
  background: rgba(245, 158, 11, 0.2);
  color: #fbbf24;
  border-color: rgba(245, 158, 11, 0.4);
}

#laboratorio .lab-badge-pronto {
  background: rgba(34, 197, 94, 0.18);
  color: #4ade80;
}

#laboratorio .lab-badge-consegnato {
  background: rgba(148, 163, 184, 0.18);
  color: #cbd5e1;
}

/* —— Archivio filtri —— */
#laboratorio .lab-archivio-filtri label,
#laboratorio .lab-archivio-filtri .form-group label {
  color: #94A3B8;
  font-weight: 600;
}

#laboratorio .lab-archivio-filtri input,
#laboratorio #lab-archivio-dal,
#laboratorio #lab-archivio-al,
#laboratorio #lab-archivio-ricerca {
  background: #07131b;
  color: #F8FAFC;
  border: 1px solid #203744;
  border-radius: 10px;
}

#laboratorio .lab-archivio-filtri input::placeholder {
  color: #94A3B8;
}

#laboratorio .dashboard-lista-vuota,
#laboratorio #lab-archivio-vuoto {
  color: #94A3B8;
}

/* —— Clienti laboratorio —— */
#laboratorio .lab-clienti-lista-panel,
#laboratorio .lab-clienti-dettaglio-panel {
  background: #132733;
  border: 1px solid #203744;
  box-shadow: var(--sd-shadow);
}

#laboratorio .lab-clienti-card {
  background: #11222d;
  border: 1px solid #203744;
}

#laboratorio .lab-clienti-card:hover,
#laboratorio .lab-clienti-card-active {
  border-color: #38BDF8;
  box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.22);
  background: #1a3340;
}

#laboratorio .lab-clienti-card-id {
  color: #94A3B8;
}

#laboratorio .lab-clienti-card-nome {
  color: #F8FAFC;
}

#laboratorio .lab-clienti-card-tel,
#laboratorio .lab-clienti-card-meta {
  color: #CBD5E1;
}

#laboratorio .lab-clienti-card-meta span {
  color: #94A3B8;
}

#laboratorio .lab-badge-anagrafica {
  background: rgba(20, 184, 166, 0.15);
  color: #5eead4;
  border-color: rgba(20, 184, 166, 0.35);
}

#laboratorio .lab-badge-da-ordine {
  background: rgba(245, 158, 11, 0.15);
  color: #fbbf24;
  border-color: rgba(245, 158, 11, 0.35);
}

#laboratorio .lab-clienti-dettaglio-placeholder {
  color: #94A3B8;
}

#laboratorio .lab-clienti-stato-vuoto {
  background: #11222d;
  border: 1px dashed #203744;
  color: #CBD5E1;
}

#laboratorio .lab-clienti-stato-vuoto strong {
  color: #F8FAFC;
}

#laboratorio .lab-clienti-stato-vuoto p {
  color: #94A3B8;
}

#laboratorio .lab-clienti-dettaglio-nome {
  color: #F8FAFC;
}

#laboratorio .lab-clienti-dettaglio-row {
  color: #CBD5E1;
}

#laboratorio .lab-clienti-dettaglio-row span {
  color: #94A3B8;
}

#laboratorio .lab-clienti-dettaglio-nota-ordine {
  background: rgba(245, 158, 11, 0.12);
  border-color: rgba(245, 158, 11, 0.35);
  color: #fde68a;
}

#laboratorio .lab-clienti-storico-titolo {
  color: #F8FAFC;
}

#laboratorio .lab-clienti-storico {
  border-color: #203744;
}

#laboratorio .lab-clienti-ordine-riga {
  background: #11222d;
  border: 1px solid #203744;
}

#laboratorio .lab-clienti-ordine-id {
  color: #38BDF8;
}

#laboratorio .lab-clienti-ordine-meta,
#laboratorio .lab-clienti-ordine-meta span {
  color: #94A3B8;
}

/* —— Bottoni area operativa —— */
#laboratorio .oplab-main .btn-primary {
  background: linear-gradient(90deg, #14B8A6, #38BDF8);
  border: none;
  color: #042f2e;
  font-weight: 600;
}

#laboratorio .oplab-main .btn-primary:hover {
  filter: brightness(1.05);
}

#laboratorio .oplab-main .btn-secondary {
  background: #11222d;
  border: 1px solid #203744;
  color: #F8FAFC;
}

#laboratorio .oplab-main .btn-secondary:hover {
  background: #1a3340;
  border-color: #2d4f5e;
}

#laboratorio .oplab-main .btn-success {
  background: #22C55E;
  border: none;
  color: #052e16;
  font-weight: 600;
}

#laboratorio .oplab-main .btn-danger {
  background: #EF4444;
  border: none;
  color: #fff;
}

#laboratorio .btn-lab-elimina {
  background: rgba(239, 68, 68, 0.14);
  border: 1px solid rgba(239, 68, 68, 0.45);
  color: #fca5a5;
  font-weight: 600;
}

#laboratorio .btn-lab-elimina:hover {
  background: rgba(239, 68, 68, 0.28);
  border-color: rgba(239, 68, 68, 0.65);
  color: #fff;
}

#modal-lab-ordine .btn-lab-elimina,
#modal-lab-modifica-ordine .btn-lab-elimina,
.modal-box-lab .btn-lab-elimina {
  background: rgba(239, 68, 68, 0.14);
  border: 1px solid rgba(239, 68, 68, 0.45);
  color: #fca5a5;
  font-weight: 600;
}

#modal-lab-ordine .btn-lab-elimina:hover,
#modal-lab-modifica-ordine .btn-lab-elimina:hover,
.modal-box-lab .btn-lab-elimina:hover {
  background: rgba(239, 68, 68, 0.28);
  color: #fff;
}

#laboratorio .lab-stato-btn-lavorazione:not(.lab-stato-btn-lavorazione-active) {
  background: rgba(245, 158, 11, 0.12);
  border-color: rgba(245, 158, 11, 0.45);
  color: #fbbf24;
}

#laboratorio .lab-stato-btn-lavorazione-active,
#laboratorio .lab-stato-btn-lavorazione.btn-primary {
  background: #F59E0B !important;
  border-color: #d97706 !important;
  color: #1a1200 !important;
}

#laboratorio .lab-vista-btn.active {
  background: linear-gradient(90deg, #14B8A6, #38BDF8);
  color: #042f2e;
  border-color: transparent;
}

/* —— Tabelle laboratorio —— */
#laboratorio table th {
  background: #11222d;
  color: #F8FAFC;
  border-bottom: 1px solid #203744;
}

#laboratorio table td {
  color: #F8FAFC;
  border-bottom: 1px solid #203744;
}

#laboratorio table tbody tr:nth-child(even) {
  background: rgba(19, 39, 51, 0.55);
}

#laboratorio table tbody tr:hover {
  background: rgba(20, 184, 166, 0.08);
}

#laboratorio .lab-config-table th,
#laboratorio .lab-config-table td {
  border-bottom-color: #203744;
}

#laboratorio .lab-config-table input {
  background: #07131b;
  color: #F8FAFC;
  border: 1px solid #203744;
}

/* —— Messaggi / errori form interno —— */
#laboratorio .lab-form-error {
  color: #fca5a5;
  background: rgba(239, 68, 68, 0.12);
  border: 1px solid rgba(239, 68, 68, 0.28);
}

#laboratorio .lab-allegato-azioni a,
#laboratorio .lab-mod-allegato-link a {
  color: #38BDF8;
}

#laboratorio .lab-allegato-sep,
#laboratorio .lab-wa-mancante {
  color: #94A3B8;
}

#laboratorio .lab-mod-no-allegato {
  color: #94A3B8;
}

/* —— Input generici in main (form-group) —— */
#laboratorio .oplab-main .form-group label {
  color: #94A3B8;
  font-weight: 600;
}

#laboratorio .oplab-main input,
#laboratorio .oplab-main select,
#laboratorio .oplab-main textarea {
  background: #07131b;
  color: #F8FAFC;
  border: 1px solid #203744;
  border-radius: 10px;
}

#laboratorio .oplab-main input::placeholder,
#laboratorio .oplab-main textarea::placeholder {
  color: #94A3B8;
  opacity: 1;
}

#laboratorio .oplab-main input:disabled,
#laboratorio .oplab-main select:disabled {
  opacity: 0.72;
  color: #94A3B8;
  background: #0a1a24;
}

#laboratorio .oplab-main select option {
  background: #132733;
  color: #F8FAFC;
}
/* Party Services — Portale cliente v4 white label (post-login only) */

#lab-portale-ordine-wrap.lab-portale-ps-v4 {
  --ps-bg: #07090d;
  --ps-bg-2: #0b0f14;
  --ps-sidebar: #0a0e13;
  --ps-card: #111820;
  --ps-card-hover: #161f2a;
  --ps-border: #26313d;
  --ps-gold-border: #b8872f;
  --ps-gold: #c99a3a;
  --ps-gold-light: #e5c16a;
  --ps-text: #f8fafc;
  --ps-muted: #a3aab5;
  --ps-soft: #cbd5e1;
  --ps-transition: 200ms ease;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 {
  background: var(--ps-bg);
  color: var(--ps-text);
  animation: labPortaleFadeIn 0.22s ease;
}

@keyframes labPortaleFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-sidebar {
  background: var(--ps-sidebar);
  border-right-color: var(--ps-border);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-sidebar-brand {
  border-bottom-color: var(--ps-border);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-sidebar-title {
  color: var(--ps-gold-light);
  font-size: 1.05rem;
  letter-spacing: 0.02em;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-sidebar-sub {
  color: var(--ps-muted);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-user-bar {
  padding: 12px;
  border-radius: 14px;
  background: var(--ps-card);
  border: 1px solid var(--ps-border);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-user-lbl {
  color: var(--ps-muted);
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  margin-bottom: 10px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-user-card-inner {
  display: flex;
  align-items: center;
  gap: 12px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-user-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  flex-shrink: 0;
  background: linear-gradient(145deg, rgba(201, 154, 58, 0.25), rgba(184, 135, 47, 0.12));
  border: 1px solid var(--ps-gold-border);
  color: var(--ps-gold-light);
  font-size: 0.82rem;
  font-weight: 700;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-user-name {
  color: var(--ps-text);
  font-size: 0.92rem;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-user-role {
  display: block;
  color: var(--ps-muted);
  font-size: 0.76rem;
  margin-top: 2px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-nav-btn {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--ps-soft);
  transition: background var(--ps-transition), border-color var(--ps-transition), color var(--ps-transition);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-nav-icon {
  width: 18px;
  text-align: center;
  color: var(--ps-muted);
  font-size: 0.9rem;
  transition: color var(--ps-transition);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-nav-btn:hover {
  background: var(--ps-card-hover);
  border-color: var(--ps-border);
  color: var(--ps-text);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-nav-btn:hover .lab-portale-nav-icon {
  color: var(--ps-soft);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-nav-btn.active {
  background: linear-gradient(90deg, rgba(201, 154, 58, 0.28), rgba(184, 135, 47, 0.14));
  border-color: rgba(184, 135, 47, 0.45);
  color: #fff;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-nav-btn.active .lab-portale-nav-icon {
  color: #fff;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-nav-logout {
  color: #fca5a5;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-sidebar-powered {
  border-top-color: var(--ps-border);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-powered-label {
  color: #5c6672;
  font-size: 0.68rem;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-powered-sub {
  color: #4a5560;
  font-size: 0.64rem;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-main {
  background: var(--ps-bg);
  padding: 18px 24px 32px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-section {
  animation: labPortaleFadeIn 0.22s ease;
}

/* Dashboard top */
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-top {
  display: grid;
  grid-template-columns: minmax(160px, 1fr) minmax(220px, 1.4fr) minmax(180px, 0.9fr);
  gap: 20px;
  align-items: center;
  margin-bottom: 22px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-top-left .lab-portale-page-title {
  margin: 0 0 6px;
  color: var(--ps-text);
  font-size: 1.65rem;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-top-left .lab-portale-page-sub {
  margin: 0;
  color: var(--ps-muted);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-top-center {
  text-align: center;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-logo {
  display: block;
  max-width: 480px;
  width: 100%;
  height: auto;
  margin: 0 auto;
  object-fit: contain;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-brand-tagline {
  margin: 10px 0 0;
  color: var(--ps-muted);
  font-size: 0.82rem;
  letter-spacing: 0.03em;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-top-support {
  text-align: center;
  padding: 14px 12px;
  border-radius: 16px;
  background: var(--ps-card);
  border: 1px solid var(--ps-border);
  transition: border-color var(--ps-transition), background var(--ps-transition);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-top-support:hover {
  border-color: rgba(184, 135, 47, 0.35);
  background: var(--ps-card-hover);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-headset-circle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px solid var(--ps-gold-border);
  background: rgba(201, 154, 58, 0.1);
  line-height: 1;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-headset-sm {
  width: 52px;
  height: 52px;
  font-size: 1.35rem;
  margin-bottom: 8px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-headset-lg {
  width: 72px;
  height: 72px;
  font-size: 1.85rem;
  margin: 0 auto 14px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-quick-support-title {
  margin: 0 0 4px;
  color: var(--ps-text);
  font-size: 0.88rem;
  font-weight: 600;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-quick-support-link {
  display: block;
  color: var(--ps-gold-light);
  font-size: 0.8rem;
  text-decoration: none;
  margin-bottom: 6px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-quick-support-link:hover {
  text-decoration: underline;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-quick-support-phone {
  display: block;
  color: var(--ps-text);
  font-size: 1rem;
}

/* KPI */
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-kpi-grid-v3 {
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 14px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-kpi-card-v3 {
  background: var(--ps-card);
  border: 1px solid var(--ps-border);
  border-radius: 18px;
  min-height: 132px;
  transition: background var(--ps-transition), border-color var(--ps-transition), transform var(--ps-transition);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-kpi-card-v3::before {
  background: linear-gradient(90deg, var(--ps-gold), var(--ps-gold-light));
  opacity: 0.9;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-kpi-card-v3:hover {
  background: var(--ps-card-hover);
  border-color: rgba(184, 135, 47, 0.35);
  transform: translateY(-1px);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-kpi-icon {
  color: var(--ps-gold-light);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-kpi-value {
  color: var(--ps-text);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-kpi-label {
  color: var(--ps-muted);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-kpi-sub {
  color: #6b7280;
}

/* Welcome */
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-welcome {
  background: var(--ps-card);
  border: 1px solid var(--ps-border);
  border-radius: 18px;
  padding: 22px 24px;
  margin-bottom: 20px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-welcome-inner {
  display: flex;
  align-items: center;
  gap: 18px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-welcome-icon {
  font-size: 2rem;
  flex-shrink: 0;
  filter: saturate(1.1);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-welcome-copy {
  flex: 1;
  min-width: 0;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-welcome-title {
  color: var(--ps-text);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-welcome-text {
  color: var(--ps-muted);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-welcome-btn,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-btn-gold,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .btn-primary {
  background: linear-gradient(135deg, rgba(201, 154, 58, 0.95), rgba(184, 135, 47, 0.88));
  border: 1px solid var(--ps-gold-border);
  color: #fff;
  font-weight: 700;
  transition: filter var(--ps-transition), transform var(--ps-transition);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-welcome-btn:hover,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-btn-gold:hover,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .btn-primary:hover {
  filter: brightness(1.08);
  transform: translateY(-1px);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-btn-outline-gold {
  width: 100%;
  margin-top: 14px;
  padding: 11px 16px;
  border-radius: 12px;
  border: 1px solid var(--ps-gold-border);
  background: transparent;
  color: var(--ps-gold-light);
  font-weight: 600;
  cursor: pointer;
  transition: background var(--ps-transition), color var(--ps-transition);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-btn-outline-gold:hover {
  background: rgba(201, 154, 58, 0.12);
  color: #fff;
}

/* Columns */
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-card,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-kpi-card,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-ordine-card {
  background: var(--ps-card);
  border: 1px solid var(--ps-border);
  border-radius: 18px;
  transition: background var(--ps-transition), border-color var(--ps-transition);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-card:hover,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-ordine-card:hover {
  background: var(--ps-card-hover);
  border-color: rgba(184, 135, 47, 0.28);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-supporto {
  text-align: center;
  background: var(--ps-bg-2);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-card-title {
  color: var(--ps-text);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-supporto-text {
  color: var(--ps-muted);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-supporto-phone {
  background: rgba(201, 154, 58, 0.08);
  border: 1px solid rgba(184, 135, 47, 0.25);
  border-radius: 12px;
  padding: 12px 14px;
  margin-bottom: 16px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-whatsapp-btn {
  background: linear-gradient(135deg, #c99a3a, #b8872f) !important;
  border: 1px solid #b8872f !important;
  color: #fff !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-recenti-action {
  color: var(--ps-gold-light);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-recenti-row:hover,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-recenti-row:focus {
  background: rgba(201, 154, 58, 0.06);
}

/* Badge stati */
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-badge-stato.is-nuovo {
  background: rgba(37, 99, 235, 0.18);
  color: #93c5fd;
  border: 1px solid rgba(59, 130, 246, 0.35);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-badge-stato.is-lavorazione {
  background: rgba(201, 154, 58, 0.16);
  color: var(--ps-gold-light);
  border: 1px solid rgba(184, 135, 47, 0.4);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-badge-stato.is-pronto {
  background: rgba(34, 197, 94, 0.15);
  color: #86efac;
  border: 1px solid rgba(34, 197, 94, 0.35);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-badge-stato.is-consegnato {
  background: rgba(148, 163, 184, 0.12);
  color: #94a3b8;
  border: 1px solid rgba(148, 163, 184, 0.28);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-badge-stato.is-annullato {
  background: rgba(239, 68, 68, 0.14);
  color: #fca5a5;
  border: 1px solid rgba(239, 68, 68, 0.35);
}

/* Azioni ordine — modifica / annulla */
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-ordine-actions,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dettaglio-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--ps-border);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dettaglio-actions {
  padding: 16px 20px 20px;
  margin-top: 0;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-btn-modifica {
  background: linear-gradient(135deg, rgba(201, 154, 58, 0.95), rgba(184, 135, 47, 0.88));
  border: 1px solid var(--ps-gold-border);
  color: #fff;
  font-weight: 600;
  transition: filter var(--ps-transition), transform var(--ps-transition);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-btn-modifica:hover {
  filter: brightness(1.08);
  transform: translateY(-1px);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-btn-annulla-ordine {
  background: rgba(127, 29, 29, 0.35);
  border: 1px solid rgba(220, 38, 38, 0.45);
  color: #fecaca;
  font-weight: 600;
  transition: background var(--ps-transition), border-color var(--ps-transition);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-btn-annulla-ordine:hover {
  background: rgba(153, 27, 27, 0.5);
  border-color: rgba(248, 113, 113, 0.55);
  color: #fff;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-welcome {
  margin-bottom: 18px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 input[type="date"] {
  color-scheme: dark;
  cursor: pointer;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 input[type="date"]::-webkit-calendar-picker-indicator {
  filter: invert(0.85) sepia(0.35) saturate(2) hue-rotate(5deg);
  cursor: pointer;
}

/* Footer */
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-footer-v4 {
  border-top-color: var(--ps-border);
  color: var(--ps-muted);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-footer-brand-mini {
  display: flex;
  align-items: center;
  gap: 10px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-footer-mini-logo {
  width: 40px;
  height: 40px;
  object-fit: contain;
  border-radius: 8px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-footer-brand-mini strong,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-footer-center strong {
  color: var(--ps-gold-light);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-footer-tagline {
  display: block;
  margin-top: 4px;
  font-size: 0.78rem;
  color: var(--ps-muted);
}

/* Profilo */
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-profilo-hero {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 20px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--ps-border);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-profilo-avatar {
  width: 56px;
  height: 56px;
  font-size: 1rem;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-profilo-hero h2 {
  margin: 0;
  color: var(--ps-text);
  font-size: 1.25rem;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-profilo-role {
  margin: 4px 0 0;
  color: var(--ps-muted);
  font-size: 0.85rem;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-profilo-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 20px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-profilo-stat {
  padding: 14px;
  border-radius: 14px;
  background: var(--ps-bg-2);
  border: 1px solid var(--ps-border);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-profilo-stat span {
  display: block;
  color: var(--ps-muted);
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 6px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-profilo-stat strong {
  color: var(--ps-gold-light);
  font-size: 1.1rem;
}

/* Nuovo ordine + form */
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .laboratorio-public-glass-card,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .laboratorio-public-panel {
  background: var(--ps-card) !important;
  border: 1px solid var(--ps-border) !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-form-toolbar {
  background: var(--ps-bg-2);
  border-color: var(--ps-border);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-form-toolbar .btn-secondary,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .btn-secondary {
  background: var(--ps-card);
  border: 1px solid var(--ps-border);
  color: var(--ps-soft);
  transition: background var(--ps-transition), border-color var(--ps-transition);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-form-toolbar .btn-secondary:hover,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .btn-secondary:hover {
  background: var(--ps-card-hover);
  border-color: rgba(184, 135, 47, 0.35);
  color: var(--ps-text);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-ordine-form label,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-section-title {
  color: var(--ps-text);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-ordine-form input,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-ordine-form select,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-ordine-form textarea,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-filters input,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-filters select {
  background: var(--ps-bg-2);
  border: 1px solid var(--ps-border);
  color: var(--ps-text);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-ordine-form input:focus,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-ordine-form select:focus,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-ordine-form textarea:focus {
  border-color: var(--ps-gold-border);
  box-shadow: 0 0 0 2px rgba(201, 154, 58, 0.15);
  outline: none;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-articoli-grid .lab-articolo-card,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-articolo-card {
  background: var(--ps-card);
  border: 1px solid var(--ps-border);
  transition: border-color var(--ps-transition), background var(--ps-transition);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-articolo-card:hover,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-articolo-card.selected {
  border-color: var(--ps-gold-border);
  background: var(--ps-card-hover);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-mascotte-card {
  background: var(--ps-card);
  border-color: var(--ps-border);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-mascotte-card-selected {
  border-color: var(--ps-gold-border);
  box-shadow: 0 0 0 1px rgba(184, 135, 47, 0.35);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-mascotte-disponibile {
  color: #86efac;
  border-color: rgba(34, 197, 94, 0.35);
  background: rgba(34, 197, 94, 0.08);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-mascotte-occupata {
  color: #fca5a5;
  border-color: rgba(239, 68, 68, 0.35);
  background: rgba(239, 68, 68, 0.08);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-mascotte-pending {
  color: var(--ps-gold-light);
  border-color: rgba(184, 135, 47, 0.35);
  background: rgba(201, 154, 58, 0.08);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-riepilogo-prezzo {
  background: var(--ps-bg-2);
  border-color: var(--ps-border);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-nav-toggle {
  background: var(--ps-card);
  border-color: var(--ps-border);
  color: var(--ps-gold-light);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dettaglio-box {
  background: var(--ps-card);
  border-color: var(--ps-border);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dettaglio-close {
  background: var(--ps-bg-2);
  border-color: var(--ps-border);
  color: var(--ps-muted);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-page-title {
  color: var(--ps-text);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-page-sub,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-empty {
  color: var(--ps-muted);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-card-importo {
  color: var(--ps-gold-light);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-filters {
  background: var(--ps-card);
  border: 1px solid var(--ps-border);
  border-radius: 16px;
  padding: 14px;
}

/* Responsive */
@media (max-width: 1100px) {
  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-kpi-grid-v3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-top {
    grid-template-columns: 1fr 1fr;
  }

  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-top-center {
    grid-column: 1 / -1;
    order: -1;
  }
}

@media (max-width: 900px) {
  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-top {
    grid-template-columns: 1fr;
  }

  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-kpi-grid-v3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-columns {
    grid-template-columns: 1fr;
  }

  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-logo {
    max-width: 300px;
  }

  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-profilo-stats {
    grid-template-columns: 1fr;
  }

  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-footer-v4 {
    grid-template-columns: 1fr;
    text-align: center;
  }

  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-footer-brand-mini,
  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-footer-hours {
    justify-content: center;
    text-align: center;
  }
}

@media (max-width: 520px) {
  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-kpi-grid-v3 {
    grid-template-columns: 1fr;
  }

  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-welcome-inner {
    flex-direction: column;
    align-items: stretch;
  }

  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-welcome-btn {
    width: 100%;
  }
}

/* Party Services — Portale cliente v4.1 */

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-brand-header {
  text-align: center;
  margin: 0 auto 24px;
  padding: 8px 12px 4px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-brand-logo-global {
  display: block;
  max-width: 480px;
  width: 100%;
  height: auto;
  margin: 0 auto;
  object-fit: contain;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-brand-tagline {
  margin: 10px 0 0;
  color: #a3aab5;
  font-size: 0.82rem;
  letter-spacing: 0.03em;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-top-support {
  display: none !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-agent-icon-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 80px;
  height: 80px;
  margin: 0 auto 16px;
  border-radius: 50%;
  border: 1px solid #b8872f;
  background: rgba(201, 154, 58, 0.12);
  color: #e5c16a;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-agent-icon {
  width: 44px;
  height: 44px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-articolo-card {
  border-color: #26313d !important;
  background: #111820 !important;
  box-shadow: none !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-articolo-card:hover {
  border-color: rgba(184, 135, 47, 0.45) !important;
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25) !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-articolo-card.selected {
  border-color: #c99a3a !important;
  box-shadow:
    0 0 0 1px rgba(201, 154, 58, 0.45),
    0 8px 24px rgba(201, 154, 58, 0.15) !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-articolo-card-check {
  background: #c99a3a !important;
  color: #07090d !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-articolo-card-prezzo {
  color: #e5c16a !important;
}

/* Modale anteprima articolo */
#laboratorio-public-page #lab-portale-articolo-anteprima-modal {
  position: fixed;
  inset: 0;
  z-index: 220;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}

#laboratorio-public-page #lab-portale-articolo-anteprima-modal.hidden {
  display: none;
}

#laboratorio-public-page .lab-portale-anteprima-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.72);
}

#laboratorio-public-page .lab-portale-anteprima-box {
  position: relative;
  width: min(560px, 100%);
  max-height: 90vh;
  overflow: auto;
  background: #111820;
  border: 1px solid #26313d;
  border-radius: 20px;
  padding: 20px;
  box-shadow: 0 24px 48px rgba(0, 0, 0, 0.5);
  animation: labPortaleFadeIn 0.2s ease;
}

#laboratorio-public-page .lab-portale-anteprima-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}

#laboratorio-public-page .lab-portale-anteprima-title {
  margin: 0;
  color: #f8fafc;
  font-size: 1.2rem;
  line-height: 1.3;
  padding-right: 8px;
}

#laboratorio-public-page .lab-portale-anteprima-close {
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  border-radius: 10px;
  border: 1px solid #26313d;
  background: #0b0f14;
  color: #a3aab5;
  font-size: 1.4rem;
  line-height: 1;
  cursor: pointer;
  transition: background 0.18s ease, color 0.18s ease;
}

#laboratorio-public-page .lab-portale-anteprima-close:hover {
  background: #161f2a;
  color: #f8fafc;
}

#laboratorio-public-page .lab-portale-anteprima-media {
  text-align: center;
  margin-bottom: 18px;
  padding: 12px;
  border-radius: 14px;
  background: #0b0f14;
  border: 1px solid #26313d;
}

#laboratorio-public-page .lab-portale-anteprima-img {
  display: block;
  max-width: 520px;
  max-height: 420px;
  width: auto;
  height: auto;
  margin: 0 auto;
  object-fit: contain;
  border-radius: 10px;
}

#laboratorio-public-page .lab-portale-anteprima-img-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 200px;
  padding: 24px;
  color: #e5c16a;
}

#laboratorio-public-page .lab-portale-anteprima-img-placeholder span {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 88px;
  height: 88px;
  border-radius: 50%;
  border: 1px solid #b8872f;
  background: rgba(201, 154, 58, 0.1);
  font-size: 2rem;
  font-weight: 700;
  margin-bottom: 12px;
}

#laboratorio-public-page .lab-portale-anteprima-img-placeholder p {
  margin: 0;
  color: #f8fafc;
  font-size: 0.95rem;
  text-align: center;
}

#laboratorio-public-page .lab-portale-anteprima-dl {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 8px 16px;
  margin: 0;
  font-size: 0.9rem;
}

#laboratorio-public-page .lab-portale-anteprima-dl dt {
  color: #a3aab5;
  margin: 0;
}

#laboratorio-public-page .lab-portale-anteprima-dl dd {
  margin: 0;
  color: #f8fafc;
}

#laboratorio-public-page .lab-portale-anteprima-desc {
  grid-column: 1 / -1;
  margin-top: 4px;
  padding: 12px 14px;
  border-radius: 12px;
  background: #0b0f14;
  border: 1px solid #26313d;
  line-height: 1.5;
}

#laboratorio-public-page .lab-portale-anteprima-actions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  flex-wrap: wrap;
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid #26313d;
}

#laboratorio-public-page #lab-portale-articolo-anteprima-modal .btn-secondary {
  background: #0b0f14;
  border: 1px solid #26313d;
  color: #cbd5e1;
}

#laboratorio-public-page #lab-portale-articolo-anteprima-modal .btn-primary {
  background: linear-gradient(135deg, #c99a3a, #b8872f);
  border: 1px solid #b8872f;
  color: #fff;
  font-weight: 700;
}

@media (max-width: 900px) {
  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-brand-logo-global {
    max-width: 320px;
  }

  #laboratorio-public-page .lab-portale-anteprima-img {
    max-width: 100%;
    max-height: 320px;
  }
}

@media (max-width: 520px) {
  #laboratorio-public-page .lab-portale-anteprima-actions {
    flex-direction: column;
  }

  #laboratorio-public-page .lab-portale-anteprima-actions .btn {
    width: 100%;
  }
}

/* Party Services — Portale cliente v4.2 */

#laboratorio-public-page:has(#lab-portale-ordine-wrap:not(.hidden)) .lab-public-bg-glow {
  display: none !important;
}

body.laboratorio-public-mode:has(#lab-portale-ordine-wrap:not(.hidden)),
body.public-laboratorio-mode:has(#lab-portale-ordine-wrap:not(.hidden)) {
  background: #07090d !important;
}

#laboratorio-public-page:has(#lab-portale-ordine-wrap:not(.hidden)) {
  background: #07090d !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-section-header {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 0 0 14px !important;
  margin-bottom: 12px !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-page-title {
  color: #f8fafc !important;
  background: none !important;
  font-size: 1.5rem;
  font-weight: 700;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-page-sub {
  color: #a3aab5 !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-brand-logo-global {
  max-width: 520px;
  margin: 20px auto 28px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-brand-header {
  margin-bottom: 8px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-mobile-header {
  background: transparent;
  border: none;
  box-shadow: none;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .laboratorio-public-glass-card,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .laboratorio-public-panel {
  background: #111820 !important;
  border: 1px solid #26313d !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  box-shadow: none !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-kpi-card,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-card {
  background: #111820 !important;
  border-color: #26313d !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-submit-btn {
  background: linear-gradient(135deg, #c99a3a, #b8872f) !important;
  color: #fff !important;
  box-shadow: 0 8px 24px rgba(201, 154, 58, 0.22) !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-submit-btn:hover:not(:disabled) {
  box-shadow: 0 12px 32px rgba(201, 154, 58, 0.32) !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-qty-btn {
  background: #161f2a !important;
  border: 1px solid #26313d !important;
  color: #e5c16a !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-qty-btn:hover {
  background: rgba(201, 154, 58, 0.18) !important;
  border-color: #b8872f !important;
  color: #f8fafc !important;
  box-shadow: none !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-articolo-card-photo {
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #0b0f14;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-articolo-img-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  min-height: 120px;
  background: #0b0f14;
  color: #e5c16a;
  font-size: 2rem;
  font-weight: 700;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-articolo-card-icon {
  color: #e5c16a;
  background: rgba(201, 154, 58, 0.1);
}

@media (max-width: 900px) {
  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-brand-logo-global {
    max-width: 360px;
  }
}

@media (max-width: 520px) {
  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-brand-logo-global {
    max-width: 260px;
    margin: 16px auto 20px;
  }
}

/* Party Services — Portale cliente UI v4 (premium brand) */

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-brand-header {
  text-align: center;
  margin: 0 auto 4px;
  padding: 0 12px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-brand-logo-global {
  display: block;
  max-width: 420px;
  width: 100%;
  height: auto;
  margin: 0 auto 20px;
  object-fit: contain;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-brand-tagline {
  margin: 0 auto 8px;
  padding: 0 12px;
  text-align: center;
  color: #cbd5e1;
  font-size: 0.84rem;
  letter-spacing: 0.06em;
  line-height: 1.45;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-page-title {
  font-size: 1.15rem !important;
  font-weight: 600 !important;
  color: #f8fafc !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-page-sub {
  font-size: 0.86rem !important;
  color: #a3aab5 !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-section-header {
  margin-bottom: 10px !important;
  padding-bottom: 10px !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-supporto {
  text-align: center;
  padding: 24px 20px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-support-icon-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  margin: 0 auto 16px;
  border-radius: 50%;
  border: 1.5px solid #c99a3a;
  color: #e5c16a;
  background: rgba(201, 154, 58, 0.08);
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-support-headset-icon {
  width: 32px;
  height: 32px;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-dash-supporto .lab-portale-dash-card-title {
  margin-bottom: 8px;
  font-size: 1.05rem;
  font-weight: 600;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-supporto-text {
  margin: 0 0 18px;
  color: #a3aab5;
  font-size: 0.92rem;
  line-height: 1.5;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-supporto-phone {
  display: none !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-whatsapp-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  padding: 13px 18px;
  border-radius: 12px;
  background: linear-gradient(135deg, #c99a3a, #b8872f) !important;
  border: 1px solid #b8872f !important;
  color: #fff !important;
  font-weight: 600;
  font-size: 0.92rem;
  text-decoration: none;
  transition: filter 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
  box-shadow: 0 6px 20px rgba(201, 154, 58, 0.2) !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-whatsapp-btn:hover {
  filter: brightness(1.06);
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(201, 154, 58, 0.28) !important;
  color: #fff !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-wa-icon {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
  color: #fff;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-kpi-card-v3::before {
  background: #c99a3a !important;
  opacity: 1 !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-welcome-btn,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-btn-gold,
#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .btn-primary {
  background: linear-gradient(135deg, #c99a3a, #b8872f) !important;
  border: 1px solid #b8872f !important;
  color: #fff !important;
  box-shadow: 0 6px 20px rgba(201, 154, 58, 0.18) !important;
}

#laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-nav-btn.active {
  background: rgba(201, 154, 58, 0.2) !important;
  border-color: rgba(201, 154, 58, 0.45) !important;
  color: #fff !important;
}

@media (max-width: 900px) {
  #laboratorio-public-page #lab-portale-ordine-wrap.lab-portale-ps-v4 .lab-portale-brand-logo-global {
    max-width: 340px;
    margin-bottom: 20px;
  }
}

/* OPLab push notifiche FCM */
.oplab-push-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 14px;
  margin: 16px 0 8px;
  padding: 12px 14px;
  border-radius: 10px;
  background: rgba(15, 23, 42, 0.45);
  border: 1px solid rgba(148, 163, 184, 0.2);
}

.oplab-push-status {
  font-size: 14px;
  line-height: 1;
}

.oplab-push-status[data-state="active"] {
  color: #22c55e;
}

.oplab-push-status[data-state="default"] {
  color: #eab308;
}

.oplab-push-status[data-state="denied"],
.oplab-push-status[data-state="unsupported"] {
  color: #ef4444;
}

.oplab-push-status[data-state="unknown"] {
  color: #94a3b8;
}

.oplab-push-status-label {
  font-size: 13px;
  color: #cbd5e1;
  flex: 1;
  min-width: 120px;
}

.oplab-push-ios-hint {
  flex: 1 1 100%;
  margin: 0;
  font-size: 12px;
  color: #94a3b8;
  line-height: 1.45;
}

.oplab-impostazioni-push {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
}

#laboratorio .lab-pro-kpi-articolo,
#laboratorio .lab-pro-kpi-value-ordine + .lab-pro-kpi-articolo {
  font-size: 12px;
  font-weight: 500;
  color: #86efac;
  margin-top: 2px;
  line-height: 1.3;
  min-height: 1em;
}

#laboratorio .lab-pro-kpi-ultimo .lab-pro-kpi-value-ordine {
  font-size: 1.15rem;
}
