:root{--bg:#f4f6f8;--card:#fff;--text:#1e293b;--muted:#64748b;--primary:#0071bc;--danger:#b42318;--ok:#067647;--border:#d8dee6}
*{box-sizing:border-box}body{margin:0;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--text)}
header{background:var(--primary);color:#fff;padding:10px 24px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:14px;min-height:58px}.brand-logo{display:block;width:139px;height:auto}.brand-title{font-size:24px;font-weight:700;line-height:1}nav a{color:#fff;text-decoration:none;margin-right:14px;font-weight:700}nav a:last-child{margin-right:0}
main{max-width:1250px;margin:24px auto;padding:0 18px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:18px;box-shadow:0 2px 6px rgba(15,23,42,.05)}.card h2,.card h3{margin-top:0}.metric{font-size:30px;font-weight:700}.muted{color:var(--muted)}
table{width:100%;border-collapse:collapse;background:#fff;border-radius:10px;overflow:hidden}th,td{padding:11px 10px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}th{background:#eef3f7;font-size:14px}.actions{display:flex;gap:8px;flex-wrap:wrap}.btn{display:inline-block;border:0;border-radius:7px;padding:9px 12px;background:var(--primary);color:#fff;text-decoration:none;cursor:pointer;font-weight:700}.btn.secondary{background:#475569}.btn.danger{background:var(--danger)}.btn.ok{background:var(--ok)}.btn.light{background:#e2e8f0;color:#1e293b}
form.card{max-width:900px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.full{grid-column:1/-1}label{font-weight:700;font-size:14px;display:block;margin-bottom:5px}input,select,textarea{width:100%;padding:10px;border:1px solid #b8c2cc;border-radius:7px;background:#fff}textarea{min-height:90px}.notice{padding:12px 14px;border-radius:8px;background:#e8f2fb;margin-bottom:16px}.badge{display:inline-block;padding:4px 8px;border-radius:999px;background:#e2e8f0;font-size:12px;font-weight:700}.badge.ok{background:#d1fadf;color:#05603a}.badge.warn{background:#fef0c7;color:#93370d}.badge.danger{background:#fee4e2;color:#b42318}.right{text-align:right}
@media(max-width:700px){.form-grid{grid-template-columns:1fr}th:nth-child(n+4),td:nth-child(n+4){font-size:12px}header{align-items:flex-start;padding:10px 16px}.brand-logo{width:125px}.brand-title{font-size:21px}nav{display:flex;gap:10px;flex-wrap:wrap}nav a{margin-right:0}}
@media print{header,.no-print,.actions{display:none!important}body{background:#fff}main{max-width:none;margin:0}.card{box-shadow:none;border:0}}

.login-page{background:#eef5f9;min-height:100vh}.login-wrap{max-width:460px;margin:0 auto;padding:70px 18px}.login-card{padding:28px}.login-brand{display:flex;align-items:center;gap:16px;margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid #dbe6ed}.login-brand img{width:150px;height:auto}.login-brand h1{margin:0;color:#087fc3;font-size:25px}.login-card label{display:block;margin-top:14px;margin-bottom:6px;font-weight:700}.login-card input{width:100%;box-sizing:border-box}.login-btn{width:100%;margin-top:22px}.danger-box{background:#fff0f0;border-color:#dc3545;color:#842029}
.login-help { margin-top: 16px; text-align: center; }
.login-help a { color: #0785c1; font-weight: 600; }

/* Ricerca e ordinamento clienti */
.client-search-card { margin-bottom: 16px; }
.client-search-form {
    display: flex;
    align-items: flex-end;
    gap: 10px;
    flex-wrap: wrap;
}
.client-search-field { flex: 1 1 320px; }
.client-search-field label { display: block; margin-bottom: 6px; }
.client-search-field input { width: 100%; }
.client-list-heading {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}
.sort-link {
    color: inherit;
    text-decoration: none;
    white-space: nowrap;
}
.sort-link:hover { text-decoration: underline; }
.table-wrap { overflow-x: auto; }

/* Parametri PBX */
.pbx-parameters-card{max-width:980px;margin:0 auto}.pbx-parameters-card details{border:1px solid var(--border);border-radius:10px;margin-top:14px;background:#fafcfd;overflow:hidden}.pbx-parameters-card summary{cursor:pointer;font-weight:700;padding:14px 16px;background:#eef5f9;color:var(--primary);user-select:none}.pbx-parameters-card summary:hover{background:#e5f0f7}.details-body{padding:16px}.password-row{display:flex;gap:8px;align-items:center}.password-row input{flex:1}.password-row .btn{white-space:nowrap;padding:10px 12px}.pbx-parameters-card input[readonly]{background:#eef2f6;color:#475569}
@media(max-width:700px){.password-row{align-items:stretch}.password-row .btn{padding-left:9px;padding-right:9px}}

.voip-numbers-section {
    margin: 18px;
    padding: 18px;
    border: 1px solid #d9e8f4;
    border-radius: 12px;
    background: #f8fcff;
}
.voip-numbers-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 14px;
}
.voip-numbers-heading h3 { margin: 0 0 4px; }
.voip-number-row {
    display: grid;
    grid-template-columns: minmax(220px, 1fr) minmax(100px, 160px) auto;
    align-items: end;
    gap: 12px;
    margin-bottom: 12px;
    padding-bottom: 12px;
    border-bottom: 1px solid #e2edf5;
}
.voip-number-row:last-child { border-bottom: 0; }
.voip-number-row .btn { margin-bottom: 1px; }
@media (max-width: 700px) {
    .voip-numbers-heading { align-items: stretch; flex-direction: column; }
    .voip-number-row { grid-template-columns: 1fr; }
}

/* Credenziali VoIP associate a ciascun numero */
.voip-number-row {
    grid-template-columns: repeat(2, minmax(180px, 1fr));
    padding: 16px;
    border: 1px solid #dbeaf4;
    border-radius: 10px;
    background: #fff;
}
.voip-number-row .remove-voip-number {
    justify-self: start;
}
@media (min-width: 1050px) {
    .voip-number-row {
        grid-template-columns: minmax(170px, 1fr) 100px minmax(160px, 1fr) minmax(240px, 1.2fr) minmax(170px, 1fr) auto;
    }
    .voip-number-row .remove-voip-number { justify-self: stretch; }
}


/* Elenco clienti compatto: una sola riga sui monitor desktop */
.clients-list-card{padding:16px}
.clients-table{min-width:1160px}
.clients-table th,.clients-table td{padding:9px 8px;vertical-align:middle}
.clients-table th{font-size:13px}
.clients-table td{white-space:nowrap}
/* v89 - colonna selezione (1), Cliente (2), Tipo (3), PBX/DNS/Backup/CISO (4-7), Azioni (ultima). */
.clients-table th:nth-child(2),.clients-table td:nth-child(2){min-width:170px}
.clients-table th:nth-child(3),.clients-table td:nth-child(3){min-width:95px}
.clients-table th:nth-child(4),.clients-table td:nth-child(4),
.clients-table th:nth-child(5),.clients-table td:nth-child(5),
.clients-table th:nth-child(6),.clients-table td:nth-child(6),
.clients-table th:nth-child(7),.clients-table td:nth-child(7){width:80px;text-align:center}
.clients-table th:last-child,.clients-table td:last-child{width:1%;white-space:nowrap}
.client-row-actions{display:table-cell;white-space:nowrap}
.client-row-actions .btn{padding:7px 9px;border-radius:6px;font-size:13px;line-height:1.15;margin-right:4px;white-space:nowrap}
.client-row-actions .btn:last-child{margin-right:0}
@media (min-width:1400px){
  main{max-width:1600px}
}
@media (max-width:900px){
  .clients-table td{white-space:normal}
  .client-row-actions{white-space:normal}
}

/* Scheda cliente unificata */
.client-full-card{max-width:1180px!important;margin:0 auto;padding:22px}.client-page-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.client-page-heading h2,.client-page-heading h3{margin:0}.client-section{margin-top:20px;padding:18px;border:1px solid var(--border);border-radius:11px;background:#fbfdff}.client-section>h3{color:var(--primary);margin-bottom:15px}.unified-voip-list{margin-top:16px}.sticky-save{position:sticky;bottom:12px;margin-top:20px;padding:12px;background:rgba(255,255,255,.96);border:1px solid var(--border);border-radius:10px;box-shadow:0 4px 18px rgba(15,23,42,.13);display:flex;gap:10px;z-index:5}.client-name-link{color:inherit;text-decoration:none}.client-name-link:hover{color:var(--primary);text-decoration:underline}.service-summary-section table .btn{padding:6px 9px;font-size:13px}

/* Stampa parametri selezionabili */
.print-select-card{max-width:1000px;margin:0 auto 18px}.print-field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.print-field-grid label{padding:10px;border:1px solid var(--border);border-radius:8px;background:#f8fafc}.print-field-grid input{width:auto;margin-right:7px}.sensitive-print{border-color:#f4b8b3!important;background:#fff6f5!important}.printable-client-sheet{max-width:980px;margin:0 auto}.print-sheet-header{display:flex;align-items:center;gap:20px;padding-bottom:18px;border-bottom:2px solid var(--primary)}.print-sheet-header img{width:145px}.print-sheet-header h1{margin:0 0 4px;font-size:27px}.printable-client-sheet section{break-inside:avoid;margin-top:22px}.printable-client-sheet section h2{font-size:19px;color:var(--primary);padding-bottom:6px;border-bottom:1px solid var(--border)}.printable-client-sheet dl{display:grid;grid-template-columns:220px 1fr;margin:0}.printable-client-sheet dt,.printable-client-sheet dd{padding:7px 9px;border-bottom:1px solid #e7ebef;margin:0}.printable-client-sheet dt{font-weight:700;background:#f7fafc}.printable-client-sheet dd{overflow-wrap:anywhere}
@media(max-width:700px){.print-field-grid{grid-template-columns:1fr}.printable-client-sheet dl{grid-template-columns:1fr}.printable-client-sheet dd{padding-top:2px}.client-full-card{padding:14px}.sticky-save{position:static}}
@media print{.printable-client-sheet{max-width:none;padding:0!important}.print-sheet-header img{width:125px}.printable-client-sheet section{margin-top:15px}.printable-client-sheet table{font-size:12px}.printable-client-sheet th,.printable-client-sheet td{padding:7px}.print-select-card{display:none!important}}

/* Stampa generale gestione */
.management-print-fields{grid-template-columns:repeat(3,minmax(0,1fr))}
.management-print-sheet{max-width:none;margin:0 auto}
.management-print-sheet .print-sheet-header{margin-bottom:18px}
.management-print-table{font-size:12px;min-width:100%}
.management-print-table th,.management-print-table td{padding:7px 8px;vertical-align:middle;white-space:nowrap}
.management-print-table td:nth-child(1){font-weight:700}
@media(max-width:900px){.management-print-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.management-print-fields{grid-template-columns:1fr}}
@media print{
  @page{size:landscape;margin:8mm}
  .management-print-sheet{padding:0!important;border:0!important;box-shadow:none!important}
  .management-print-sheet .print-sheet-header{margin-bottom:10px}
  .management-print-table{font-size:9px;width:100%}
  .management-print-table th,.management-print-table td{padding:4px 5px;white-space:normal;overflow-wrap:anywhere}
  .management-print-sheet .table-wrap{overflow:visible}
}


.image-drop-zone{border:2px dashed #9bb7ce;border-radius:12px;padding:24px;text-align:center;background:#f8fbfe;cursor:pointer;transition:.18s ease;outline:none}.image-drop-zone:hover,.image-drop-zone:focus{border-color:#0071bc;background:#eef7fd}.image-drop-zone.dragover{border-color:#0071bc;background:#dff2ff;transform:scale(1.005)}.image-drop-title{font-size:1.05rem;font-weight:700;margin-bottom:6px;color:#164b70}


/* Campi valuta in formato italiano */
.currency-input{display:flex;align-items:stretch;width:100%}.currency-input>span{display:flex;align-items:center;justify-content:center;min-width:42px;padding:0 11px;border:1px solid var(--border);border-right:0;border-radius:8px 0 0 8px;background:#eef5f9;color:#0f5688;font-weight:800}.currency-input input{border-radius:0 8px 8px 0!important;flex:1;min-width:0;text-align:right;font-variant-numeric:tabular-nums}.currency-input input:focus{position:relative;z-index:1}.currency-input:focus-within>span{border-color:var(--primary);background:#e3f3fd}


/* Lista clienti Olinko compatta come la lista PBX */
.olinko-clients-table{min-width:1080px}
.olinko-clients-table th,.olinko-clients-table td{padding:9px 8px;vertical-align:middle;white-space:nowrap}
.olinko-clients-table th{font-size:13px}
.olinko-clients-table th:nth-child(1),.olinko-clients-table td:nth-child(1){min-width:170px}
.olinko-clients-table th:nth-child(2),.olinko-clients-table td:nth-child(2){min-width:125px}
.olinko-clients-table th:nth-child(3),.olinko-clients-table td:nth-child(3){min-width:85px}
.olinko-clients-table th:nth-child(4),.olinko-clients-table td:nth-child(4){width:95px;text-align:center}
.olinko-clients-table th:nth-child(5),.olinko-clients-table td:nth-child(5){min-width:115px;text-align:right}
.olinko-clients-table th:nth-child(6),.olinko-clients-table td:nth-child(6){min-width:135px;text-align:right}
.olinko-clients-table th:nth-child(7),.olinko-clients-table td:nth-child(7){min-width:85px;text-align:center}
.olinko-clients-table th:last-child,.olinko-clients-table td:last-child{width:1%;white-space:nowrap}
@media (max-width:900px){.olinko-clients-table td{white-space:normal}}
/* v34: lista Olinko realmente uniforme alla lista Clienti PBX */
.olinko-clients-table{min-width:1180px}
.olinko-clients-table th,.olinko-clients-table td{padding:9px 8px;vertical-align:middle;white-space:nowrap}
.olinko-clients-table th{font-size:13px}
.olinko-clients-table th:nth-child(1),.olinko-clients-table td:nth-child(1){min-width:155px}
.olinko-clients-table th:nth-child(2),.olinko-clients-table td:nth-child(2){min-width:125px}
.olinko-clients-table th:nth-child(3),.olinko-clients-table td:nth-child(3){min-width:85px}
.olinko-clients-table th:nth-child(4),.olinko-clients-table td:nth-child(4){min-width:95px;text-align:center}
.olinko-clients-table th:nth-child(5),.olinko-clients-table td:nth-child(5){min-width:115px;text-align:right}
.olinko-clients-table th:nth-child(6),.olinko-clients-table td:nth-child(6){min-width:135px;text-align:right}
.olinko-clients-table th:nth-child(7),.olinko-clients-table td:nth-child(7){min-width:85px;text-align:center}
.olinko-clients-table th:last-child,.olinko-clients-table td:last-child{width:1%;white-space:nowrap}
.status-cell{text-align:center}
.subscription-flag{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#e7f7ed;color:#16803a;font-weight:800}

/* v36 - Evidenziazione uniforme degli elementi interattivi */
a,button,.btn,summary,.sort-link,.client-name-link,.image-drop-zone,input[type="checkbox"],input[type="radio"],select{
  transition:color .16s ease,background-color .16s ease,border-color .16s ease,box-shadow .16s ease,transform .16s ease,opacity .16s ease;
}

/* Menu principale */
nav a{
  padding:7px 9px;
  border-radius:6px;
}
nav a:hover,nav a:focus-visible{
  color:#003b63;
  background:#ffffff;
  text-decoration:none;
}

/* Collegamenti testuali */
main a:not(.btn):not(.sort-link):not(.client-name-link),
.login-help a{
  color:var(--primary);
  text-decoration:none;
}
main a:not(.btn):not(.sort-link):not(.client-name-link):hover,
main a:not(.btn):not(.sort-link):not(.client-name-link):focus-visible,
.login-help a:hover,
.login-help a:focus-visible{
  color:#004b7d;
  text-decoration:underline;
}

/* Nomi clienti e intestazioni ordinabili */
.client-name-link,.sort-link{
  border-radius:4px;
  padding:2px 4px;
  margin:-2px -4px;
}
.client-name-link:hover,.client-name-link:focus-visible,
.sort-link:hover,.sort-link:focus-visible{
  color:#004b7d;
  background:#dff1fc;
  text-decoration:none;
}

/* Pulsanti */
.btn:hover,.btn:focus-visible,button:hover,button:focus-visible{
  background:#005c99;
  color:#fff;
  box-shadow:0 3px 9px rgba(0,71,188,.24);
  transform:translateY(-1px);
}
.btn.secondary:hover,.btn.secondary:focus-visible{
  background:#334155;
}
.btn.danger:hover,.btn.danger:focus-visible{
  background:#8f1b13;
}
.btn.ok:hover,.btn.ok:focus-visible{
  background:#045c37;
}
.btn.light:hover,.btn.light:focus-visible{
  background:#cbd5e1;
  color:#0f172a;
}
.btn:active,button:active{
  transform:translateY(0);
  box-shadow:none;
}

/* Righe e celle cliccabili/operative */
tbody tr{
  transition:background-color .16s ease;
}
tbody tr:hover{
  background:#f0f8fd;
}
tbody tr:hover td{
  background:transparent;
}

/* Sezioni apribili */
.pbx-parameters-card summary:hover,
.pbx-parameters-card summary:focus-visible,
details summary:hover,
details summary:focus-visible{
  color:#004b7d;
  background:#dceffb;
}

/* Campi modulo */
input:hover,select:hover,textarea:hover{
  border-color:#6caed6;
}
input:focus,select:focus,textarea:focus{
  outline:none;
  border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(0,113,188,.14);
}

/* Etichette selezionabili nelle stampe */
.print-field-grid label{
  cursor:pointer;
  transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease;
}
.print-field-grid label:hover{
  background:#e8f5fd;
  border-color:#65add7;
  color:#004b7d;
  transform:translateY(-1px);
}

/* Badge e flag informativi collegati a righe attive */
.client-name-link:hover .badge,
.client-name-link:focus-visible .badge{
  filter:brightness(.96);
}

/* Accessibilita tastiera */
a:focus-visible,.btn:focus-visible,button:focus-visible,summary:focus-visible,.image-drop-zone:focus-visible{
  outline:3px solid rgba(255,193,7,.75);
  outline-offset:2px;
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;scroll-behavior:auto!important}
  .btn:hover,.btn:focus-visible,button:hover,button:focus-visible,.print-field-grid label:hover{transform:none}
}

/* v37 - Stampa parametri cliente molto compatta */
.printable-client-sheet.compact-client-print,
.printable-client-sheet{
  padding:14px;
}
.printable-client-sheet .print-sheet-header{
  gap:12px;
  padding-bottom:8px;
}
.printable-client-sheet .print-sheet-header img{width:105px}
.printable-client-sheet .print-sheet-header h1{font-size:21px;margin:0 0 1px}
.printable-client-sheet .print-sheet-header div div{font-size:12px;color:var(--muted)}
.printable-client-sheet section{
  margin-top:10px;
  break-inside:avoid;
}
.printable-client-sheet section h2{
  font-size:14px;
  margin:0 0 4px;
  padding:3px 6px;
  border:0;
  border-left:4px solid var(--primary);
  background:#eef7fd;
}
.printable-client-sheet section h3{
  display:inline-block;
  font-size:12px;
  margin:5px 0 2px;
  padding:2px 6px;
  border-radius:4px;
  background:#f1f5f9;
}
.printable-client-sheet dl{
  grid-template-columns:145px minmax(0,1fr) 145px minmax(0,1fr);
  border-top:1px solid #e7ebef;
  border-left:1px solid #e7ebef;
  font-size:12px;
}
.printable-client-sheet dt,.printable-client-sheet dd{
  min-height:25px;
  padding:4px 6px;
  border-right:1px solid #e7ebef;
  border-bottom:1px solid #e7ebef;
  line-height:1.25;
}
.printable-client-sheet dt{background:#f7fafc}
.printable-client-sheet section>p{
  margin:3px 0 0;
  padding:6px 8px;
  border:1px solid #e7ebef;
  font-size:12px;
  line-height:1.3;
}
.printable-client-sheet table{font-size:11px}
.printable-client-sheet th,.printable-client-sheet td{padding:4px 6px;line-height:1.2}

@media print{
  @page{size:A4 portrait;margin:6mm}
  .printable-client-sheet{
    padding:0!important;
    font-size:11px;
  }
  .printable-client-sheet .print-sheet-header{padding-bottom:5px}
  .printable-client-sheet .print-sheet-header img{width:82px}
  .printable-client-sheet .print-sheet-header h1{font-size:17px}
  .printable-client-sheet section{margin-top:6px}
  .printable-client-sheet section h2{font-size:12px;padding:2px 5px;margin-bottom:2px}
  .printable-client-sheet section h3{font-size:10px;margin:3px 0 1px;padding:1px 5px}
  .printable-client-sheet dl{
    grid-template-columns:118px minmax(0,1fr) 118px minmax(0,1fr);
    font-size:9.5px;
  }
  .printable-client-sheet dt,.printable-client-sheet dd{
    min-height:19px;
    padding:2px 4px;
    line-height:1.15;
  }
  .printable-client-sheet section>p{font-size:9.5px;padding:3px 5px;line-height:1.2}
  .printable-client-sheet table{font-size:9px}
  .printable-client-sheet th,.printable-client-sheet td{padding:2px 4px}
}

@media(max-width:700px){
  .printable-client-sheet dl{grid-template-columns:115px minmax(0,1fr)}
}

/* v38 - Tabelle compatte e righe alternate a video */
table tbody tr:nth-child(even) > td{
  background:#f3f5f7;
}
table tbody tr:nth-child(odd) > td{
  background:#ffffff;
}
table tbody tr:hover > td{
  background:#e7f4fc;
}
table th{
  background:#e7edf2;
}

/* Mantiene compatte tutte le tabelle operative */
table:not(.management-print-table):not(.clients-table):not(.olinko-clients-table) th,
table:not(.management-print-table):not(.clients-table):not(.olinko-clients-table) td{
  padding:8px 8px;
  line-height:1.25;
}

/* Righe alternate anche nei blocchi a definizione delle schede stampabili */
.printable-client-sheet dl dt:nth-of-type(4n+3),
.printable-client-sheet dl dt:nth-of-type(4n+4),
.printable-client-sheet dl dd:nth-of-type(4n+3),
.printable-client-sheet dl dd:nth-of-type(4n+4){
  background:#f3f5f7;
}

/* v38 - Compattazione uniforme di tutte le stampe */
@media print{
  *{
    -webkit-print-color-adjust:exact!important;
    print-color-adjust:exact!important;
  }
  @page{margin:6mm}
  body{
    font-size:9.5px!important;
    line-height:1.15!important;
  }
  main{
    padding:0!important;
    margin:0!important;
  }
  h1{font-size:17px!important;margin:0 0 5px!important}
  h2{font-size:13px!important;margin:5px 0 3px!important}
  h3{font-size:11px!important;margin:4px 0 2px!important}
  p{margin:2px 0!important}
  .card{
    padding:0!important;
    margin:0!important;
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
  }
  .print-sheet-header{
    gap:9px!important;
    padding-bottom:5px!important;
    margin-bottom:6px!important;
  }
  .print-sheet-header img{width:82px!important}
  .print-sheet-header h1{font-size:17px!important}
  .printable-client-sheet section,
  .management-print-sheet section{
    margin-top:6px!important;
  }
  table,
  .management-print-table,
  .printable-client-sheet table{
    width:100%!important;
    font-size:8.5px!important;
    border-collapse:collapse!important;
  }
  table th,
  table td,
  .management-print-table th,
  .management-print-table td,
  .printable-client-sheet th,
  .printable-client-sheet td{
    padding:2px 4px!important;
    line-height:1.1!important;
    border:1px solid #cfd5da!important;
    vertical-align:middle!important;
  }
  table thead th{
    background:#dfe5ea!important;
    color:#111!important;
    font-weight:700!important;
  }
  table tbody tr:nth-child(even) > td{
    background:#eeeeee!important;
  }
  table tbody tr:nth-child(odd) > td{
    background:#ffffff!important;
  }
  table tr{
    break-inside:avoid;
    page-break-inside:avoid;
  }
  .badge{padding:1px 4px!important;font-size:8px!important}
  .printable-client-sheet dl{
    font-size:8.5px!important;
  }
  .printable-client-sheet dt,
  .printable-client-sheet dd{
    min-height:17px!important;
    padding:2px 4px!important;
    line-height:1.1!important;
  }
  .printable-client-sheet dl dt:nth-of-type(4n+3),
  .printable-client-sheet dl dt:nth-of-type(4n+4),
  .printable-client-sheet dl dd:nth-of-type(4n+3),
  .printable-client-sheet dl dd:nth-of-type(4n+4){
    background:#eeeeee!important;
  }
  .table-wrap{overflow:visible!important}
}

/* Riepiloghi economici in fondo alle liste clienti */
.list-totals{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  align-items:stretch;
  margin-top:10px;
  padding-top:10px;
  border-top:2px solid #cbd5e1;
}
.list-total-group{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:7px 12px;
  min-height:42px;
  padding:8px 12px;
  border:1px solid #d7e0e8;
  border-radius:8px;
  background:#f8fafc;
  font-size:13px;
}
.list-total-group>strong{color:#0f4f78;margin-right:3px}
.list-total-group span{white-space:nowrap}
.list-total-emphasis{padding-left:10px;border-left:1px solid #cbd5e1}
.list-total-main{font-size:17px;font-weight:800;color:#0f4f78}
.list-total-margin{margin-left:auto;background:#eaf6fc;border-color:#9acde7}
.olinko-list-totals .list-total-group{flex:1 1 220px}
@media (max-width:900px){
  .list-total-group,.olinko-list-totals .list-total-group{flex:1 1 100%}
  .list-total-margin{margin-left:0}
}

.app-version{font-size:11px;font-weight:700;background:rgba(255,255,255,.2);padding:2px 6px;border-radius:10px;margin-left:6px}.unified-notice{border-left:5px solid #0071bc;margin-bottom:16px}
/* v50 - Scheda cliente a servizi espandibili */
/* v79 - Servizi come schede: una sola sezione visibile alla volta, selezionata dalle schede qui sotto. */
.service-picker{display:flex;flex-wrap:wrap;gap:10px}
.service-tab{display:flex;align-items:center;gap:8px;padding:6px 16px 6px 10px;border:1px solid #cbd5e1;border-radius:9px;background:#f8fafc;white-space:nowrap;transition:background .15s,border-color .15s}
.service-tab:hover{background:#e8f5fc;border-color:#7cc2e8}
.service-tab.active{background:var(--primary);border-color:var(--primary)}
.service-tab.active .service-tab-name{color:#fff}
.service-tab-check{display:flex;align-items:center;cursor:pointer;margin:0}
.service-tab-check input{width:17px;height:17px;margin:0;accent-color:#0071bc}
.service-tab-name{background:none;border:0;padding:0;font:inherit;font-weight:700;cursor:pointer;color:inherit}
.service-tab-name:hover{text-decoration:underline}
.service-picker-row{display:flex;gap:16px;align-items:stretch;flex-wrap:wrap}
.service-picker-row .service-picker{flex:0 1 auto}
.service-summary-calc{flex:1 1 280px;margin:0}
.service-summary-row{margin-bottom:6px}
.service-summary-row:last-child{margin-bottom:0}
.service-summary-total{margin-top:8px;padding-top:8px;border-top:1px solid #b9d8ea;font-size:15px}
@media(max-width:800px){.service-picker-row{flex-direction:column}}
.service-panel{border-left:4px solid var(--primary);margin-top:16px}
.client-check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:7px 12px;max-height:330px;overflow:auto;border:1px solid #d8e0e7;padding:10px;border-radius:8px;background:#fafcfd}.client-check-grid label,.print-field-grid label{cursor:pointer}.client-check-grid label:hover,.print-field-grid label:hover{color:var(--primary)}
@media(max-width:800px){.service-picker{display:grid;grid-template-columns:1fr}.voip-number-row{grid-template-columns:1fr!important}}

.custom-service-panel{border-left:4px solid rgba(0,113,188,.28)}
/* v56 - selezione/cancellazione multipla clienti */
.clients-table .select-col{width:34px;text-align:center;padding-left:6px!important;padding-right:6px!important}
.clients-table .select-col input[type="checkbox"]{width:17px;height:17px;cursor:pointer;accent-color:#0071bc}
.bulk-client-actions{align-items:center;gap:10px;flex-wrap:nowrap}
.bulk-select-label{display:inline-flex;align-items:center;gap:6px;margin:0;white-space:nowrap;cursor:pointer;font-weight:600}

/* v69 - aperture dirette dal catalogo servizi */
.service-row-link{cursor:pointer}
.service-row-link:focus-visible{outline:3px solid #0071bc;outline-offset:-3px}
.service-open-hint{font-size:.82em;margin-top:2px}
.bulk-select-label input{width:17px;height:17px;accent-color:#0071bc}
#bulk-delete-btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}

/* v60 - riepilogo contabile PBX */
.billing-calculation-box{padding:12px 14px;border:1px solid #b9d8ea;border-radius:8px;background:#f2f8fc;line-height:1.55}.accounting-inline-result{margin-top:6px}.calculated-amount input{font-weight:800;background:#f8fbfd}.pbx-accounting-grid{align-items:start}

/* v61 - campi contabili PBX compatti */
.pbx-accounting-grid > div{justify-self:start;width:auto;min-width:0}
.pbx-accounting-grid input[type="date"]{width:165px;max-width:165px}
.pbx-accounting-grid .currency-input{width:175px;max-width:175px}
.pbx-accounting-grid .currency-input input{width:125px;max-width:125px;flex:0 0 125px;text-align:left!important}
.pbx-accounting-grid .calculated-amount{width:190px;max-width:190px}
.pbx-accounting-grid .calculated-amount input{width:140px;max-width:140px;flex:0 0 140px;text-align:left!important}
.pbx-accounting-grid .accounting-inline-result{white-space:nowrap}
@media(max-width:700px){
 .pbx-accounting-grid input[type="date"],.pbx-accounting-grid .currency-input,.pbx-accounting-grid .calculated-amount{width:100%;max-width:none}
 .pbx-accounting-grid .currency-input input,.pbx-accounting-grid .calculated-amount input{width:auto;max-width:none;flex:1 1 auto}
}


/* v62 - campi PBX tecnici compatti */
.pbx-technical-grid{
  grid-template-columns:repeat(2,minmax(0,300px));
  justify-content:start;
  column-gap:18px;
  row-gap:12px;
}
.pbx-technical-grid > div{width:300px;max-width:300px;justify-self:start}
.pbx-technical-grid input,
.pbx-technical-grid select{width:300px;max-width:300px}
.pbx-technical-grid .password-row{width:300px;max-width:300px}
.pbx-technical-grid .password-row input{width:auto;max-width:none;min-width:0;flex:1 1 auto}
.pbx-technical-grid .form-grid-full{grid-column:1/-1;width:618px;max-width:618px}
.pbx-technical-grid .form-grid-full textarea{width:618px;max-width:618px;min-height:68px}

/* Parametri VoIP più compatti su desktop */
@media(min-width:1050px){
  .pbx-subsection[data-pbx-section="technical"] .voip-number-row{
    grid-template-columns:190px 72px 180px 180px 230px auto;
    justify-content:start;
    width:max-content;
    max-width:100%;
    padding:12px;
    gap:10px;
  }
  .pbx-subsection[data-pbx-section="technical"] .voip-number-row input{max-width:100%}
  .pbx-subsection[data-pbx-section="technical"] .voip-number-row .password-row{width:230px;max-width:230px}
  .pbx-subsection[data-pbx-section="technical"] .voip-number-row .password-row input{min-width:0;width:auto;flex:1 1 auto}
}
@media(max-width:700px){
  .pbx-technical-grid{grid-template-columns:1fr}
  .pbx-technical-grid > div,
  .pbx-technical-grid input,
  .pbx-technical-grid select,
  .pbx-technical-grid .password-row,
  .pbx-technical-grid .form-grid-full,
  .pbx-technical-grid .form-grid-full textarea{width:100%;max-width:none}
  .pbx-technical-grid .form-grid-full{grid-column:auto}
}

.client-subtotal td{background:#eef5f8!important;border-top:1px solid #c8d7df;font-size:.92em}.right{text-align:right}
