/* Feuilles de temps (module D) : carte de pointage, semaine de l'employé, révision par la direction.
   Mobile d'abord ; jetons de couleur seulement (mode sombre automatique). */

.ts-page{display:flex;flex-direction:column;gap:14px}
.ts-page>.page-head{margin-bottom:0}
.ts-page .kpis{margin-bottom:0}
.ts-retry{margin-top:12px}
/* Contenu d'une semaine : grisé tant que la semaine demandée n'est pas chargée. */
.ts-weekbody{display:flex;flex-direction:column;gap:inherit;min-width:0;transition:opacity .15s}
.ts-weekbody.is-stale{opacity:.55;pointer-events:none}
.ts-lead{margin:0;color:var(--muted);font-size:13.5px}
.ts-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}

/* ---------- Carte de pointage ---------- */
.ts-punch{display:flex;flex-direction:column;gap:12px}
.ts-punch.is-on{border-color:var(--accent);box-shadow:inset 4px 0 0 var(--accent)}
.ts-punch-state{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px}
.ts-punch-state b{font-family:var(--f-display);font-variation-settings:"wdth" 82;font-weight:800;font-size:clamp(18px,4.6vw,22px);line-height:1.15}
.ts-timer{font-size:clamp(17px,4.4vw,20px);font-weight:600;color:var(--accent)}
.ts-dot{width:11px;height:11px;border-radius:50%;background:var(--accent);flex:none;box-shadow:0 0 0 0 var(--accent);animation:ts-pulse 2.4s ease-out infinite}
.ts-dot.off{background:var(--line-strong);animation:none}
@keyframes ts-pulse{0%{box-shadow:0 0 0 0 var(--accent-soft)}70%{box-shadow:0 0 0 9px transparent}100%{box-shadow:0 0 0 0 transparent}}
.ts-planned{margin:0;font-size:13px;color:var(--muted)}
.ts-punch .ts-planned{font-size:14px;color:var(--ink)}

/* ---------- Pauses et calcul en direct ---------- */
.ts-fieldset{border:1px solid var(--line);border-radius:10px;padding:8px 12px 12px;margin:0;min-width:0;display:flex;flex-direction:column;gap:8px}
.ts-fieldset legend{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:0 4px}
.ts-breaks{display:flex;flex-direction:column;gap:2px}
.ts-breaks .check{align-items:flex-start;padding-block:4px}
.ts-breaks .check span{padding-top:1px}
.ts-extra{max-width:220px}
.ts-sum{font-family:var(--f-num);font-variant-numeric:tabular-nums;font-size:13px;background:var(--sunk);border-radius:8px;padding:9px 11px}
.ts-sum b{font-weight:600;color:var(--ink)}
.ts-fill{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;background:var(--accent-soft);border-radius:10px;padding:8px 10px}

/* ---------- Semaine de l'employé ---------- */
.ts-week{display:flex;flex-direction:column;gap:12px}
.ts-weekbar{margin-bottom:0}
.ts-notice{margin:0}
.ts-days{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:10px;align-items:start}
.ts-day{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;min-width:0}
.ts-day.is-today{border-color:var(--accent);box-shadow:inset 0 3px 0 var(--accent)}
.ts-day.is-future{background:transparent;border-style:dashed}
.ts-day-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.ts-day-head h3{margin:0;font-family:var(--f-display);font-variation-settings:"wdth" 85;font-weight:700;font-size:15px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ts-day-total{font-weight:600;font-size:13.5px;white-space:nowrap}
.ts-none{margin:0}
.ts-add{align-self:flex-start}
.ts-entries{display:flex;flex-direction:column;gap:8px}

/* ---------- Entrée ---------- */
.ts-entry{border:1px solid var(--line);border-radius:10px;padding:9px 11px;display:flex;flex-direction:column;gap:6px;background:var(--surface);min-width:0}
.ts-entry.is-running{border-color:var(--accent);background:var(--accent-soft)}
.ts-entry.is-rejected{border-color:var(--bad)}
.ts-entry-main{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
.ts-entry-date{font-weight:600;font-size:13px;min-width:76px}
.ts-range{font-weight:600;font-size:14px;white-space:nowrap}
.ts-paid{margin-left:auto;font-size:13px;white-space:nowrap}
.ts-entry-meta{font-size:12.5px;color:var(--muted);overflow-wrap:anywhere}
.ts-entry .alert{padding:7px 10px;font-size:13px}
.ts-flags{margin:0;padding:6px 10px 6px 26px;border-radius:8px;background:var(--warn-soft);font-size:12.5px;display:flex;flex-direction:column;gap:2px}
.ts-entry-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ts-entry-actions .confirm{padding:6px 8px;flex-basis:100%}

/* ---------- Soumission ---------- */
.ts-submit{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
.ts-submit p{margin:4px 0 0}
.ts-recap td{white-space:nowrap}
.ts-confirm{flex-wrap:wrap}

/* ---------- Administration ---------- */
.ts-seg{display:inline-flex;gap:0;border:1px solid var(--line-strong);border-radius:8px;overflow:hidden}
.ts-seg .btn{border:0;border-radius:0;min-height:32px}
.ts-seg .btn+.btn{border-left:1px solid var(--line-strong)}
.ts-seg .btn[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
.ts-bulk{display:flex;flex-wrap:wrap;gap:8px}
.ts-desktop{display:none}
.ts-tablecard{padding:0;overflow:hidden}
.ts-table{min-width:880px}
.ts-table thead th{background:var(--sunk)}
.ts-table th.ts-dcol,.ts-table td.ts-dcell{text-align:center;padding-inline:4px}
.ts-table tbody th{font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--ink);border-bottom:1px solid var(--line);white-space:normal}
.ts-prow.is-open th,.ts-prow.is-open td{background:var(--sunk);border-bottom-color:transparent}
.ts-who{min-width:180px}
.ts-who .badge{margin-left:38px;margin-top:2px}
.ts-namebtn{display:flex;align-items:center;gap:8px;border:0;background:none;padding:2px 0;cursor:pointer;font-weight:600;text-align:left;color:var(--ink)}
.ts-namebtn:hover .ts-name{text-decoration:underline}
.ts-ot{font-size:11px;color:var(--warn);font-weight:600}
.ts-detailrow>td{background:var(--sunk);padding:4px 14px 16px}
.ts-chev{width:30px;height:30px;font-size:14px}
.ts-cell{display:inline-flex;flex-direction:column;align-items:center;line-height:1.15;font-family:var(--f-num);font-variant-numeric:tabular-nums;min-width:34px;padding:3px 4px;border-radius:6px}
.ts-cell-v{font-size:13px;font-weight:600}
.ts-cell-p{font-size:10.5px;color:var(--muted)}
.ts-cell.is-running{background:var(--accent-soft);color:var(--accent)}
.ts-cell.is-bad{background:var(--bad-soft);color:var(--bad)}
.ts-diff-zero{color:var(--ok)}
.ts-diff-pos{color:var(--warn);font-weight:600}
.ts-diff-neg{color:var(--info);font-weight:600}
.ts-badges{display:flex;flex-wrap:wrap;gap:4px}
.ts-detail{display:flex;flex-direction:column;gap:10px}
.ts-detail .ts-entry{background:var(--surface)}
.ts-detail .ts-entry.is-running{background:var(--accent-soft)}
.ts-unworked{margin:0}

/* Cartes par personne (mobile et tablette) */
.ts-pcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,360px),1fr));gap:10px;align-items:start}
.ts-pcard{display:flex;flex-direction:column;gap:10px;border-left:4px solid var(--c,var(--accent))}
.ts-pcard-head{display:flex;align-items:center;gap:10px;min-width:0}
.ts-pcard-name{min-width:0}
.ts-pcard-name b{font-size:15px}
.ts-minidays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;background:var(--sunk);border-radius:8px;padding:4px}
.ts-miniday{display:flex;flex-direction:column;align-items:center;gap:1px;min-width:0}
.ts-miniday-l{font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.ts-miniday .ts-cell{min-width:0;width:100%;padding-inline:0}
.ts-pcard-foot{display:flex;flex-wrap:wrap;gap:6px;align-items:center}

@media (min-width:960px){
  .ts-desktop{display:block}
  .ts-mobile{display:none}
}
@media (max-width:420px){
  .ts-entry-date{min-width:0}
  .ts-paid{margin-left:0;width:100%}
}
@media print{
  .ts-punch,.ts-add,.ts-entry-actions,.ts-detail-actions,.ts-bulk,.ts-seg{display:none!important}
  .ts-weekbody.is-stale{opacity:1}
}
