/* ============================================================
   TEAM E PERMESSI
   Le carte in cima sono filtri, non un riassunto; la tabella e' una
   griglia di righe alte abbastanza da contenere nome ed email; il
   pannello di modifica entra da destra e lascia la pagina dietro.
   ============================================================ */
.tm-col{display:flex;flex-direction:column;gap:16px;min-width:0;}
.tm-card{min-width:0;padding:0;overflow:visible;}

/* ---- le quattro carte-filtro ---- */
.tm-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;}
.tm-kpis.due{grid-template-columns:repeat(2,minmax(0,1fr));}
.tm-kpi{all:unset;box-sizing:border-box;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:16px 18px;cursor:pointer;display:flex;flex-direction:column;gap:12px;min-width:0;
  transition:box-shadow .15s,border-color .15s;}
.tm-kpi:hover{box-shadow:var(--shadow-lift);}
.tm-kpi.on{border-color:var(--primary);}
.tm-kpi-top{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.tm-kpi-top span{font-size:12.5px;font-weight:500;color:var(--neutral-ink);}
.tm-kpi-ic{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.tm-kpi-ic svg{width:15px;height:15px;}
.tm-kpi-v{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;}
.tm-kpi-v b{font-size:22px;font-weight:700;letter-spacing:-.4px;line-height:1;font-variant-numeric:tabular-nums;}
.tm-kpi-v small{font-size:12px;color:var(--muted);}
.tm-kpi.warn .tm-kpi-v b{color:var(--amber-dark);}
.tm-kpi.warn .tm-kpi-v small{color:var(--amber-dark);font-weight:600;}

/* ---- testata del pannello ---- */
.tm-ph{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px 16px;flex-wrap:wrap;}
.tm-ph h2{margin:0;font-size:16px;font-weight:700;}
.tm-ph p{margin:4px 0 0;color:var(--muted);font-size:12.5px;max-width:68ch;line-height:1.5;}
.tm-ph .end{display:flex;gap:8px;flex-wrap:wrap;}

/* Le tre viste sono link con il loro indirizzo, non bottoni: una scheda
   aperta si puo' mandare a qualcuno. */
/* `overflow-y:hidden` non e' pignoleria: la sottolineatura della scheda attiva
   sporge di un pixel sotto il bordo (`margin-bottom:-1px`), e quando un asse
   non e' `visible` l'altro diventa `auto` da solo. Risultato: una barra di
   scorrimento verticale per un pixel, che su una striscia alta 40px si vede
   solo come due freccette in un angolo. */
.tm-tabs{display:flex;gap:0;padding:0 20px;border-bottom:1px solid var(--border);overflow-x:auto;overflow-y:hidden;}
.tm-tabs a{border:none;background:none;padding:10px 4px 11px;margin-right:18px;font-size:13px;font-weight:600;
  color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;gap:7px;border-bottom:2px solid transparent;
  margin-bottom:-1px;white-space:nowrap;text-decoration:none;}
.tm-tabs a svg{width:15px;height:15px;}
.tm-tabs a:hover{color:var(--text);}
.tm-tabs a.active{color:var(--primary-dark);border-bottom-color:var(--primary);}
.tm-tabs .n{font-size:10.5px;font-weight:700;background:var(--track);color:var(--neutral-ink);border-radius:6px;padding:1px 6px;}
.tm-tabs a.active .n{background:var(--primary-soft);color:var(--primary-dark);}

/* ---- barra dei filtri ---- */
.tm-toolbar{display:flex;align-items:center;gap:10px;padding:14px 20px;flex-wrap:wrap;}
.tm-seg{display:inline-flex;gap:2px;background:var(--track);border-radius:10px;padding:3px;overflow-x:auto;max-width:100%;}
.tm-seg button{border:none;background:transparent;padding:5px 10px;border-radius:8px;font-size:12px;font-weight:600;
  color:var(--neutral-ink);cursor:pointer;white-space:nowrap;display:inline-flex;gap:6px;align-items:center;font-family:inherit;}
.tm-seg button.active{background:var(--card);color:var(--text);box-shadow:0 1px 2px rgba(46,33,25,.08);}
.tm-seg .n{font-size:10.5px;color:var(--muted);font-weight:700;font-variant-numeric:tabular-nums;}
.tm-seg button.active .n{color:var(--primary-dark);}
.tm-fchip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;background:var(--primary-soft);
  color:var(--primary-dark);border-radius:8px;padding:4px 4px 4px 10px;}
.tm-fchip button{border:none;background:transparent;width:20px;height:20px;border-radius:5px;display:flex;
  align-items:center;justify-content:center;cursor:pointer;color:inherit;}
.tm-fchip button:hover{background:rgba(46,33,25,.08);}
.tm-fchip svg{width:12px;height:12px;}
.tm-search{position:relative;margin-left:auto;}
.tm-search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:var(--muted);}
.tm-search input{border:1px solid var(--border);background:var(--card);border-radius:10px;padding:7px 10px 7px 30px;
  width:220px;font-size:13px;font-family:inherit;color:inherit;}
.tm-search input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft);}
.tm-toolbar .aselect{flex:0 0 auto;}

/* ---- la tabella ---- */
.tm-scroll{overflow-x:auto;}
/* Otto colonne in un pannello largo mille pixel: le misure sono quelle
   minime per non tagliare le parole, e sotto la soglia la tabella scorre di
   lato invece di stringersi fino a diventare illeggibile. */
.tm-grid{min-width:700px;}
.tm-grid.access{min-width:1020px;}
.tm-tr{display:grid;grid-template-columns:minmax(200px,1.7fr) 96px minmax(130px,1fr) 140px 44px;
  align-items:center;column-gap:20px;padding:0 20px;}
.tm-grid.access .tm-tr{grid-template-columns:minmax(160px,1.4fr) 92px 144px minmax(120px,1fr) 124px 132px 100px 44px;
  column-gap:18px;}
/* Senza questo una cella di griglia non scende sotto la larghezza del suo
   contenuto, e i puntini di sospensione non entrano mai in funzione: la
   tabella si allargava di qualche pixel e finiva tagliata. */
.tm-tr>div{min-width:0;}
.tm-thead{height:36px;background:var(--field);border-top:1px solid var(--border);border-bottom:1px solid var(--border);}
.tm-th{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--muted);white-space:nowrap;}
.tm-tbody .tm-tr{min-height:62px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s;}
.tm-tbody .tm-tr:last-child{border-bottom:none;}
.tm-tbody .tm-tr:hover{background:var(--hover);}
.tm-tbody .tm-tr.dim .tm-who,.tm-tbody .tm-tr.dim .tm-role{opacity:.7;}
.tm-tbody .tm-tr:focus-visible{outline:2px solid var(--primary);outline-offset:-2px;}

.tm-who{display:flex;align-items:center;gap:10px;min-width:0;}
.tm-who>div{min-width:0;}
.tm-who .nm{font-weight:600;display:flex;align-items:center;gap:6px;white-space:nowrap;}
.tm-who .em{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* Il bordo pieno dice "e' dello studio", il contorno "viene da fuori": si
   distinguono prima di leggere la colonna Tipo. */
.tm-av{width:32px;height:32px;border-radius:50%;background:var(--primary);color:var(--on-accent);font-size:11px;font-weight:800;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.tm-av.ext{background:var(--card);color:var(--primary-dark);box-shadow:inset 0 0 0 2px var(--primary);}
.tm-av svg{width:15px;height:15px;}
.tm-arch{font-size:10px;font-weight:700;background:var(--track);color:var(--neutral-ink);border-radius:5px;padding:1px 6px;}
.tm-you{font-size:10px;font-weight:700;background:var(--primary-soft);color:var(--primary-dark);border-radius:5px;padding:1px 6px;}

.tm-role{display:inline-flex;align-items:center;gap:7px;font-weight:600;white-space:nowrap;font-size:13px;}
.tm-role svg{width:14px;height:14px;color:var(--muted);}
.tm-role.none{color:var(--muted);font-weight:500;}

.tm-projs{display:flex;align-items:center;gap:8px;min-width:0;font-size:13px;}
.tm-projs svg{width:14px;height:14px;color:var(--muted);flex-shrink:0;}
.tm-projs span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--neutral-ink);}
.tm-projs.all span{font-weight:600;color:var(--text);}
.tm-stack{display:inline-flex;flex-shrink:0;}
/* Le iniziali sul colore del cliente vanno in bianco: su un fucsia o un viola
   pieni, l'inchiostro scuro dell'app non si legge. */
.tm-stack .client-mark,.tm-ov .client-mark,.pgroup-h .client-mark{color:var(--on-accent);font-weight:800;text-shadow:0 1px 1px rgba(0,0,0,.25);}
.tm-stack .client-mark{width:20px;height:20px;border-radius:6px;font-size:8.5px;box-shadow:0 0 0 2px var(--card);}
.tm-stack .client-mark+.client-mark{margin-left:-5px;}

.tm-rate b{font-weight:700;font-variant-numeric:tabular-nums;}
.tm-rate small{display:block;font-size:11px;color:var(--muted);}
/* Il costo che manca non e' una cella vuota: e' un lavoro da fare, quindi ha
   la forma di un pulsante. */
.tm-setrate{border:1px dashed var(--amber);background:var(--amber-soft);color:var(--amber-dark);border-radius:7px;padding:4px 8px;
  font-size:11.5px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;font-family:inherit;}
.tm-setrate svg{width:12px;height:12px;}
.tm-setrate:hover{border-style:solid;}
.tm-ovn{display:inline-block;margin-top:2px;font-size:10.5px;font-weight:600;color:var(--primary-dark);}

.tm-last{font-size:12px;color:var(--neutral-ink);white-space:nowrap;}
.tm-last.never{color:var(--muted);}
.tm-acts{display:flex;justify-content:flex-end;}

.tm-empty{padding:40px 20px;text-align:center;color:var(--muted);font-size:13px;}
.tm-empty.tall{display:flex;flex-direction:column;align-items:center;gap:8px;padding:56px 24px;}
.tm-empty.tall svg{width:22px;height:22px;color:var(--dim);}
.tm-empty.tall b{color:var(--text);font-size:14px;}
.tm-empty.tall span{max-width:46ch;line-height:1.55;}

/* ---- paginazione ---- */
.tm-pager{display:flex;align-items:center;gap:12px;padding:10px 20px;border-top:1px solid var(--border);
  background:var(--field);border-radius:0 0 var(--radius) var(--radius);flex-wrap:wrap;font-size:12px;color:var(--muted);}
.tm-pager>span{font-variant-numeric:tabular-nums;}
.tm-pager .size{display:inline-flex;align-items:center;gap:6px;}
.tm-pager .size .aselect{min-height:26px;padding:3px 8px;font-size:12px;}
.tm-pager .pages{margin-left:auto;display:flex;gap:2px;align-items:center;}
.tm-pager .pages button{min-width:28px;height:28px;border:none;background:transparent;border-radius:7px;font-size:12px;
  font-weight:600;color:var(--neutral-ink);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
  padding:0 6px;font-family:inherit;}
.tm-pager .pages button:hover:not(:disabled){background:var(--card);box-shadow:0 0 0 1px var(--border);}
.tm-pager .pages button.on{background:var(--primary-soft);color:var(--primary-dark);}
.tm-pager .pages button:disabled{opacity:.35;cursor:default;}
.tm-pager .pages svg{width:14px;height:14px;}
.tm-pager .gap{padding:0 4px;}

/* ---- matrice dei ruoli ---- */
.tm-matrix{width:100%;border-collapse:collapse;font-size:12.5px;table-layout:fixed;min-width:860px;}
.tm-matrix col.first{width:300px;}
.tm-matrix th,.tm-matrix td{padding:9px 14px;border-top:1px solid var(--border);text-align:center;}
.tm-matrix th:first-child,.tm-matrix td:first-child{text-align:left;padding-left:20px;}
/* Il `th` dell'app scrive in maiuscolo, che qui e' sbagliato: queste
   intestazioni sono nomi di ruolo, non etichette di colonna. */
.tm-matrix thead th{padding:14px 10px;border-top:none;background:var(--card);vertical-align:top;font-weight:700;
  text-transform:none;letter-spacing:0;font-size:12.5px;color:var(--text);}
.tm-matrix .first-h{font-size:10.5px;text-transform:uppercase;letter-spacing:.3px;color:var(--muted);vertical-align:bottom;}
.tm-matrix .rh-cell{display:flex;flex-direction:column;align-items:center;gap:5px;}
.tm-matrix .rh-ic{width:30px;height:30px;border-radius:9px;background:var(--track);color:var(--neutral-ink);
  display:flex;align-items:center;justify-content:center;}
.tm-matrix .rh-ic svg{width:15px;height:15px;}
.tm-matrix .rh-cell b{font-size:12.5px;font-weight:700;}
.tm-matrix .rcount{border:none;background:none;padding:2px 6px;border-radius:6px;font-size:11.5px;font-weight:600;
  color:var(--primary-dark);cursor:pointer;display:inline-flex;align-items:center;gap:4px;font-family:inherit;}
.tm-matrix .rcount svg{width:12px;height:12px;}
.tm-matrix .rcount:hover{background:var(--primary-soft);}
.tm-matrix .rcount.none{color:var(--muted);font-weight:500;cursor:default;}
.tm-matrix .rcount.none:hover{background:none;}
.tm-matrix tr.grp th{background:var(--field);text-align:left;padding:7px 20px;font-size:10.5px;font-weight:700;
  text-transform:uppercase;letter-spacing:.3px;color:var(--muted);}
.tm-matrix tbody tr:not(.grp):hover td{background:var(--hover);}
.tm-matrix td:first-child{font-weight:500;}
.tm-matrix td svg{width:16px;height:16px;}
.tm-matrix .yes{color:var(--primary);}
.tm-matrix .no{color:var(--dim);}
.tm-matrix .part{display:inline-block;background:var(--track);border-radius:6px;padding:2px 7px;font-size:11px;
  color:var(--neutral-ink);font-weight:600;}
.tm-note{display:flex;gap:8px;align-items:center;margin:0;padding:12px 20px;border-top:1px solid var(--border);
  font-size:12px;color:var(--muted);}
.tm-note svg{width:14px;height:14px;flex-shrink:0;}

/* ---- registro ---- */
.tm-logday{padding:8px 20px;font-size:11.5px;font-weight:700;color:var(--muted);background:var(--field);
  border-top:1px solid var(--border);border-bottom:1px solid var(--border);}
.tm-log{list-style:none;margin:0;padding:0;}
.tm-log li{display:flex;gap:12px;align-items:flex-start;padding:9px 20px;}
.tm-log li:hover{background:var(--hover);}
.tm-log .li{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  flex-shrink:0;background:var(--track);color:var(--neutral-ink);}
.tm-log .li svg{width:14px;height:14px;}
.tm-log .li.k-access{background:var(--primary-soft);color:var(--primary-dark);}
.tm-log .li.k-cost{background:var(--amber-soft);color:var(--amber-dark);}
.tm-log .li.k-danger{background:var(--red-soft);color:var(--red-dark);}
.tm-log .tx{flex:1;min-width:0;line-height:1.45;font-size:12.5px;}
.tm-log .tx b{font-weight:600;}
.tm-log .ch{display:block;font-size:11px;color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;}
.tm-log time{font-size:11.5px;color:var(--muted);white-space:nowrap;}

/* ============================================================
   IL PANNELLO DI MODIFICA
   ============================================================ */
.modal.drawer.team{max-width:520px;padding:0;display:flex;flex-direction:column;}
.tm-dh{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0;}
.tm-dh h3{margin:0;font-size:15px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tm-dh p{margin:1px 0 0;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tm-dh .icon-btn{margin-left:auto;flex-shrink:0;}
.tm-db{flex:1;overflow-y:auto;padding:4px 20px 20px;}
.tm-df{display:flex;align-items:center;gap:8px;padding:12px 20px;border-top:1px solid var(--border);
  background:var(--field);flex-shrink:0;}
.tm-df .sum{font-size:12px;color:var(--muted);margin-right:auto;}
.tm-df .sum.err{color:var(--red-dark);font-weight:600;}

.tm-sec{padding:18px 0;border-bottom:1px solid var(--border);}
.tm-sec:last-child{border-bottom:none;}
.tm-sech{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px;}
/* Stessa misura dei titoletti con icona del resto dell'app: il quadratino e'
   il riquadro dell'icona piu' 5px di respiro per lato. */
.tm-sech h4{margin:0;font-size:14px;font-weight:700;display:flex;align-items:center;gap:10px;}
.tm-sech h4>svg{width:15px;height:15px;padding:5px;box-sizing:content-box;border-radius:8px;
  background:var(--primary-soft);color:var(--primary-dark);flex-shrink:0;stroke-width:2;}
.tm-sech h4 .info-tip{margin-left:-4px;}
.tm-sech h4 .info-tip svg{width:13px;height:13px;padding:0;background:none;border-radius:0;}
.tm-sech span{font-size:11.5px;color:var(--muted);}
.tm-help{font-size:12px;color:var(--muted);margin:6px 0 0;line-height:1.45;}
.tm-db .req{color:var(--red-dark);}
.tm-db .lbl{display:block;font-size:12px;font-weight:600;color:var(--neutral-ink);margin:0 0 5px;}
.tm-db .lbl .info-tip{margin-left:5px;vertical-align:-2px;}
.tm-row2{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start;}
.tm-fg{margin-bottom:12px;}
.tm-fg:last-child{margin-bottom:0;}
/* Il simbolo sta dentro il campo, a destra del numero: cosi' si legge
   "40 €/h" come si direbbe, e il numero resta allineato con gli altri. */
.tm-money{position:relative;max-width:200px;}
.tm-money span{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:12px;pointer-events:none;}
.tm-db .tm-money input{padding-right:40px;text-align:right;font-weight:600;font-variant-numeric:tabular-nums;}

.tm-segfull{display:grid;grid-template-columns:1fr 1fr;gap:4px;background:var(--track);border-radius:10px;padding:3px;}
.tm-segfull button{border:none;background:transparent;padding:7px;border-radius:8px;font-weight:600;font-size:12.5px;
  color:var(--neutral-ink);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;font-family:inherit;}
.tm-segfull button svg{width:14px;height:14px;}
.tm-segfull button.active{background:var(--card);color:var(--text);box-shadow:0 1px 2px rgba(46,33,25,.08);}

.tm-roles{display:flex;flex-direction:column;gap:6px;}
.tm-rc{all:unset;box-sizing:border-box;display:flex;gap:11px;align-items:flex-start;padding:10px 12px;
  border:1px solid var(--border);border-radius:11px;cursor:pointer;}
.tm-rc:hover{background:var(--hover);}
.tm-rc.on{border-color:var(--primary);background:var(--primary-soft);}
.tm-rc .ri{width:30px;height:30px;border-radius:8px;background:var(--track);color:var(--neutral-ink);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.tm-rc.on .ri{background:var(--primary);color:var(--on-accent);}
.tm-rc .ri svg{width:15px;height:15px;}
.tm-rc b{display:block;font-weight:600;font-size:13px;}
.tm-rc small{display:block;color:var(--muted);font-size:11.5px;margin-top:1px;line-height:1.4;}
.tm-rc .radio{margin-left:auto;width:16px;height:16px;border-radius:50%;border:1.5px solid var(--dim);flex-shrink:0;margin-top:7px;}
.tm-rc.on .radio{border:5px solid var(--primary);}

.tm-caps{list-style:none;margin:10px 0 0;padding:10px 12px;border-radius:10px;background:var(--field);
  border:1px solid var(--border);display:grid;grid-template-columns:1fr 1fr;gap:5px 12px;font-size:12px;}
.tm-caps li{display:flex;gap:6px;align-items:flex-start;color:var(--neutral-ink);}
.tm-caps li svg{width:13px;height:13px;flex-shrink:0;margin-top:1px;}
.tm-caps li.off{color:var(--muted);}
.tm-caps li.off svg{color:var(--dim);}
.tm-caps li.on svg{color:var(--primary);}
.tm-caps .caps-h{grid-column:1/-1;font-weight:600;color:var(--text);margin-bottom:2px;}

.tm-info{display:flex;gap:8px;padding:10px 12px;border-radius:10px;background:var(--field);border:1px solid var(--border);
  font-size:12px;color:var(--neutral-ink);line-height:1.45;margin-top:10px;}
.tm-info svg{width:15px;height:15px;flex-shrink:0;color:var(--primary-dark);margin-top:1px;}
.tm-info.warn{background:var(--amber-soft);border-color:transparent;color:var(--amber-dark);}
.tm-info.warn svg{color:var(--amber-dark);}

.tm-picker{border:1px solid var(--border);border-radius:11px;overflow:hidden;}
.tm-picker .ps{position:relative;border-bottom:1px solid var(--border);}
.tm-picker .ps svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:var(--muted);}
.tm-picker .ps input{border:none;width:100%;padding:9px 10px 9px 30px;background:var(--field);font-size:13px;
  font-family:inherit;color:inherit;}
.tm-picker .ps input:focus{outline:none;}
.tm-plist{max-height:260px;overflow:auto;padding-bottom:6px;}
.pgroup-h{display:flex;align-items:center;gap:8px;padding:8px 12px 4px;font-size:12px;font-weight:600;color:var(--neutral-ink);}
.pgroup-h button{margin-left:auto;border:none;background:none;color:var(--primary-dark);font-size:11.5px;font-weight:600;
  cursor:pointer;padding:2px 4px;border-radius:5px;font-family:inherit;}
.pgroup-h button:hover{background:var(--primary-soft);}
.pitem{display:flex;align-items:center;gap:10px;padding:7px 12px 7px 40px;cursor:pointer;font-size:13px;}
.pitem:hover{background:var(--hover);}
.pitem .nm{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pitem .dt{font-size:11px;color:var(--muted);white-space:nowrap;}
.tm-chk{appearance:none;width:16px;height:16px;border-radius:5px;border:1.5px solid var(--dim);background:var(--card);
  cursor:pointer;display:grid;place-items:center;margin:0;flex-shrink:0;}
.tm-chk:checked{background:var(--primary);border-color:var(--primary);}
.tm-chk:checked::after{content:"";width:4px;height:8px;border:solid var(--card);border-width:0 2px 2px 0;transform:rotate(45deg) translate(-1px,-1px);}

.tm-switchrow{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.tm-switchrow b{font-weight:600;font-size:13px;}
.tm-switchrow small{display:block;color:var(--muted);font-size:11.5px;margin-top:1px;}
.tm-switch{appearance:none;width:36px;height:20px;border-radius:12px;background:var(--dim);position:relative;
  cursor:pointer;flex-shrink:0;transition:background .15s;margin:0;}
.tm-switch::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--card);
  transition:transform .15s;box-shadow:0 1px 2px rgba(46,33,25,.25);}
.tm-switch:checked{background:var(--primary);}
.tm-switch:checked::after{transform:translateX(16px);}

.tm-presets{display:flex;gap:6px;flex-wrap:wrap;align-content:flex-start;}
.tm-chip{border:1px solid var(--border);background:var(--card);border-radius:8px;padding:4px 9px;font-size:12px;
  font-weight:600;cursor:pointer;color:var(--neutral-ink);font-family:inherit;}
.tm-chip:hover{border-color:var(--primary);color:var(--primary-dark);}

/* ---- eccezioni di tariffa ---- */
.tm-ovlist{display:flex;flex-direction:column;gap:6px;margin-top:10px;}
.tm-ov{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--border);border-radius:9px;font-size:12.5px;}
.tm-ov .client-mark{box-shadow:none;}
.tm-ov .sc{font-size:11px;color:var(--muted);}
.tm-ov b{margin-left:auto;font-weight:700;font-variant-numeric:tabular-nums;}
.tm-ovadd{border:none;background:none;color:var(--primary-dark);font-weight:600;font-size:12px;cursor:pointer;
  padding:4px 0;margin-top:8px;display:inline-flex;align-items:center;gap:5px;font-family:inherit;}
.tm-ovadd svg{width:13px;height:13px;}
.tm-ovform{display:grid;grid-template-columns:minmax(0,1fr) 110px auto;gap:8px;margin-top:8px;align-items:center;}
.tm-ovform .tm-money{max-width:none;}

/* Ricalcola le ore passate: una scelta con una conseguenza, quindi la
   conseguenza sta scritta sotto la scelta. */
.tm-check{display:flex;gap:9px;align-items:flex-start;margin-top:12px;font-size:12.5px;cursor:pointer;line-height:1.4;}
.tm-check input{margin-top:1px;}
.tm-check small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px;line-height:1.45;}

.tm-rates{margin-top:10px;border:1px solid var(--border);border-radius:10px;background:var(--field);}
.tm-rates summary{list-style:none;cursor:pointer;padding:8px 12px;font-size:12px;font-weight:600;
  color:var(--neutral-ink);display:flex;align-items:center;gap:8px;}
.tm-rates summary::-webkit-details-marker{display:none;}
.tm-rates summary::before{content:"";width:0;height:0;border-left:5px solid var(--muted);
  border-top:4px solid transparent;border-bottom:4px solid transparent;transition:transform .15s;}
.tm-rates[open] summary::before{transform:rotate(90deg);}
.tm-rates summary span{margin-left:auto;color:var(--muted);font-weight:500;}
.tm-rates ul{list-style:none;margin:0;padding:0 12px 10px;}
.tm-rates li{display:flex;align-items:baseline;gap:8px;font-size:12px;padding:3px 0;}
.tm-rates li b{font-variant-numeric:tabular-nums;min-width:62px;}
.tm-rates li span{color:var(--muted);}

.tm-hist{list-style:none;margin:0;padding:0;}
.tm-hist li{display:flex;gap:10px;padding:7px 0;font-size:12.5px;line-height:1.45;border-top:1px solid var(--border);}
.tm-hist li:first-child{border-top:none;}
.tm-hist li b{font-weight:600;}
.tm-hist time{margin-left:auto;font-size:11px;color:var(--muted);white-space:nowrap;}

.tm-danger{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.tm-danger b{font-weight:600;font-size:13px;}
.tm-danger small{display:block;color:var(--muted);font-size:11.5px;line-height:1.45;margin-top:2px;}

@media (max-width:1180px){ .tm-kpis{grid-template-columns:repeat(2,minmax(0,1fr));} }
@media (max-width:980px){
  .tm-search{margin-left:0;width:100%;}
  .tm-search input{width:100%;}
}
@media (max-width:640px){
  .tm-kpis,.tm-kpis.due{grid-template-columns:1fr;}
  .tm-row2,.tm-segfull,.tm-caps{grid-template-columns:1fr;}
  .tm-ovform{grid-template-columns:1fr;}
}
.tm-help-tight{margin:-4px 0 10px;}
.tm-help-flat{margin:0;}
.tm-optional{font-weight:500;}

/* ---- le richieste d'accesso ----
   Una riga per richiesta, con il motivo scritto sotto: quello e' il dato
   su cui si decide, e nasconderlo dietro a un clic vorrebbe dire
   decidere senza. Le gia' decise restano sotto, spente. */
.tm-reqs{display:flex;flex-direction:column;gap:2px;}
.tm-req-h{font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  color:var(--muted);padding:16px 2px 6px;}
.tm-req{display:flex;align-items:flex-start;gap:12px;padding:13px 14px;border:1px solid var(--border);
  border-radius:12px;background:var(--card);}
.tm-req.done{opacity:.68;background:var(--field);}
.tm-req-ic{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;
  width:34px;height:34px;border-radius:10px;}
.tm-req-ic svg{width:17px;height:17px;}
.tm-req-main{flex:1;min-width:0;}
.tm-req-main b{display:block;font-size:13.5px;}
.tm-req-main small{display:block;color:var(--muted);font-size:12px;margin-top:2px;}
.tm-req-msg{margin:8px 0 0;padding:9px 11px;background:var(--field);border-radius:9px;
  font-size:12.5px;line-height:1.5;color:var(--neutral-ink);white-space:pre-wrap;}
.tm-req-role{display:flex;align-items:center;gap:9px;margin-top:10px;}
.tm-req-role .lbl{font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);}
.tm-req-act{display:flex;align-items:center;gap:7px;flex-shrink:0;}
.tm-req-when{font-size:12px;color:var(--muted);flex-shrink:0;}
@media (max-width:760px){
  .tm-req{flex-wrap:wrap;}
  .tm-req-act{width:100%;justify-content:flex-end;}
}
