/* Pass 1b : anomalies traitées (voir RAPPORT-PASS-1B-FINAL.md) */
/* ===== AVATAR BUTTON (topbar) ===== */
.avbtn{display:flex;align-items:center;gap:9px;padding:5px 12px 5px 5px;border:1px solid var(--b);border-radius:24px;background:var(--card);cursor:pointer;font-size:13px;font-weight:600;color:var(--tx);transition:all .12s}
.avbtn:hover{border-color:var(--t);box-shadow:var(--shadow-sm)}
.av-circle{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:13px;flex-shrink:0;position:relative}
.av-circle.f{background:linear-gradient(135deg,#0D9488,#0F6E56)}
.av-circle.l{background:linear-gradient(135deg,#9333EA,#6B21A8)}
.av-status{position:absolute;bottom:-1px;right:-1px;width:10px;height:10px;border-radius:50%;border:2px solid var(--card)}
.av-status.online{background:var(--gDot)}
.av-status.away{background:var(--oDot)}
.av-status.offline{background:#BFC3C7}
.av-mood{font-size:14px;line-height:1}
/* Avatar menu (dropdown) */
/* F68 (14 mai 2026) : menu user déplacé depuis topbar droite vers sidebar gauche.
   position:fixed pour déborder sous le ubadge sans être coupé par overflow-y:auto de .side.
   width 224px (sidebar = 248px, donc 12px margin de chaque côté). top:92px aligné sous le ubadge (.shead pt 22 + logo ~30 + ubadge mt 10 + ubadge ~28). */
.av-menu{position:fixed;top:92px;left:12px;background:var(--card);border:1px solid var(--b);border-radius:12px;box-shadow:var(--shadow-md);width:224px;z-index:200;padding:14px;display:none}
.av-menu.open{display:block}
.av-menu-head{display:flex;align-items:center;gap:11px;padding:6px 4px 12px;border-bottom:1px solid var(--b2);margin-bottom:10px}
.av-menu-name{font-weight:700;font-size:14px}
.av-menu-mail{font-size:12px;color:var(--mu)}
.av-mood-row{margin:10px 0}
.av-mood-lab{font-size:11px;color:var(--mu);font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-bottom:7px}
.av-mood-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:5px}
.av-mood-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:18px;border-radius:7px;cursor:pointer;border:1px solid var(--b2);transition:all .12s}
.av-mood-cell:hover{border-color:var(--t);background:var(--tl)}
.av-mood-cell.on{background:var(--tl);border-color:var(--t)}
.av-mood-input{width:100%;padding:7px 10px;border:1px solid var(--b);border-radius:7px;font-size:13px;margin-top:6px}
.av-menu-act{display:flex;flex-direction:column;gap:2px;margin-top:8px;padding-top:10px;border-top:1px solid var(--b2)}
.av-menu-it{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:7px;cursor:pointer;font-size:13px;font-weight:500;color:var(--tx);background:none;border:none;text-align:left;width:100%}
.av-menu-it:hover{background:var(--hover)}
.av-menu-it.dn{color:var(--red)}
/* presence list */
.pres-list{margin-top:10px;padding-top:10px;border-top:1px solid var(--b2)}
.pres-list-lab{font-size:11px;color:var(--mu);font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-bottom:7px}
.pres-it{display:flex;align-items:center;gap:9px;padding:6px 4px;font-size:13px}
.pres-it .av-circle{width:26px;height:26px;font-size:11px}
.pres-name{flex:1;font-weight:500}
.pres-meta{font-size:11px;color:var(--mu)}
/* ===== ALERTS ===== */
.alert{border-radius:10px;padding:14px 18px;margin-bottom:14px;display:flex;gap:12px;align-items:flex-start;cursor:pointer;transition:transform .12s,box-shadow .12s}
.alert:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}
.alert i{font-size:22px;flex-shrink:0;margin-top:1px}
.alert .at{font-size:14px;font-weight:700;margin-bottom:3px}
.alert .ab2{font-size:13px;line-height:1.5}
.alert.red{background:var(--red-bg);border:1px solid var(--red-bd);border-left:4px solid var(--red)}.alert.red .at{color:var(--red)}.alert.red .ab2{color:var(--red-tx)}.alert.red i{color:var(--red)}
.alert.amber{background:var(--am-bg);border:1px solid var(--am-bd);border-left:4px solid var(--am)}.alert.amber .at{color:var(--am)}.alert.amber .ab2{color:var(--am-tx)}.alert.amber i{color:var(--am)}
.alert.blue{background:var(--bl-bg);border:1px solid var(--bl-bd);border-left:4px solid var(--bl)}.alert.blue .at{color:var(--bl)}.alert.blue .ab2{color:var(--bl-tx)}.alert.blue i{color:var(--bl)}
/* ===== METRIC CARD ===== */
.met{background:var(--card);border:1px solid var(--b);border-radius:12px;padding:22px 22px;transition:all .14s;cursor:pointer;position:relative;overflow:hidden}
.met:hover{border-color:var(--t);transform:translateY(-2px);box-shadow:var(--shadow-md)}
.met .ml{font-size:13px;color:var(--mu);font-weight:600;margin-bottom:10px;display:flex;align-items:center;gap:8px}
.met .ml i{font-size:18px}
.met .mn{font-size:30px;font-weight:800;letter-spacing:-.01em}
.met .msub{font-size:12px;color:var(--mu);margin-top:6px}
/* ===== CARDS ===== */
.card{background:var(--card);border:1px solid var(--b);border-radius:12px;padding:22px;margin-bottom:18px}
.card-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--b2);gap:10px}
.card-hd h3{font-size:15px;font-weight:700;letter-spacing:-.005em;display:flex;align-items:center;gap:8px}
.card-hd h3 i{color:var(--mu);font-size:18px}
.ct{font-size:11px;font-weight:700;color:var(--mu);text-transform:uppercase;letter-spacing:.07em;margin-bottom:12px}
/* ===== BUTTONS (Shopify Polaris compact) ===== */
.btn{padding:6px 13px;border-radius:7px;font-size:13px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:all .12s;display:inline-flex;align-items:center;gap:6px;line-height:1;letter-spacing:0;height:30px}
.bnt{background:var(--t);color:#fff;border-color:var(--t)}.bnt:hover{background:#0B7A6E;border-color:#0B7A6E}
.bno{background:var(--card);color:var(--tx);border-color:var(--b);box-shadow:0 1px 0 rgba(0,0,0,.05)}.bno:hover{background:var(--bg-soft);border-color:#C7CDD0}
.bp{background:var(--t);color:#fff;border-color:var(--t)}.bp:hover{background:#0B7A6E;border-color:#0B7A6E}
.btl{background:var(--t);color:#fff;border-color:var(--t);box-shadow:0 1px 2px rgba(13,148,136,.25)}.btl:hover{background:#0B7A6E;border-color:#0B7A6E}
.bdg{background:var(--red-bg);color:var(--red);border-color:var(--red-bd)}.bdg:hover{background:var(--red);color:#fff;border-color:var(--red)}
.bsm{padding:4px 10px;font-size:12px;height:26px}
.btn i{font-size:14px}
/* ===== BADGES ===== */
.bx{font-size:11px;padding:3px 9px;border-radius:6px;font-weight:700;display:inline-flex;align-items:center;gap:4px;letter-spacing:.01em}
.bp0{background:#FEE2E2;color:#991B1B}.bp1{background:#FEF3C7;color:#92400E}.bp2{background:#DCFCE7;color:#166534}.bp3{background:#EBEEF1;color:#5C5F62}
.bcat{background:var(--hover);color:var(--mu);font-size:11px;padding:3px 9px;border-radius:6px;font-weight:600}
.bdl{font-size:12px;color:var(--mu);font-weight:500}
.bdl.hot{color:var(--red);font-weight:700}
/* ===== COLOR DOTS (rouge/orange/vert) ===== */
.dot-picker{display:inline-flex;align-items:center;gap:5px}
.cdot{width:14px;height:14px;border-radius:50%;border:1.5px solid var(--b);cursor:pointer;transition:transform .1s;background:transparent}
.cdot:hover{transform:scale(1.2)}
.cdot.r{background:var(--rDot);border-color:var(--rDot)}
.cdot.o{background:var(--oDot);border-color:var(--oDot)}
.cdot.g{background:var(--gDot);border-color:var(--gDot)}
.cdot.x{background:transparent}
.cdot.sel{box-shadow:0 0 0 2px var(--card),0 0 0 4px currentColor}
.cdot.big{width:18px;height:18px}
/* ===== TASKS ===== */
.tki{background:var(--card);border:1px solid var(--b);border-radius:10px;padding:16px 18px;margin-bottom:10px;transition:border-color .12s;position:relative}
.tki:hover{border-color:#C7CDD0}
.tki.with-dot-r{border:1.5px solid var(--rDot);background:#FEF6F6}
.tki.with-dot-o{border:1.5px solid var(--oDot);background:#FFFBEB}
/* Deadline badge */
.tki-dl{position:absolute;top:14px;right:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;width:62px;height:62px;border-radius:10px;background:var(--card);border:1.5px solid var(--b);cursor:pointer;transition:all .15s;overflow:hidden;flex-shrink:0;box-shadow:var(--shadow-sm);font-family:inherit;padding:0;text-decoration:none;color:inherit}
.tki-dl:hover{transform:translateY(-1px);border-color:var(--t);box-shadow:var(--shadow-md)}
.tki-dl .dl-mo{background:var(--t);color:#fff;font-size:9.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;width:100%;text-align:center;padding:3px 0 2px;line-height:1}
.tki-dl .dl-da{font-size:24px;font-weight:800;color:var(--tx);line-height:1.05;margin-top:5px}
.tki-dl .dl-yr{font-size:9px;color:var(--mu);font-weight:600;margin-top:1px;letter-spacing:.04em}
.tki-dl.dl-past .dl-mo{background:var(--red)}
.tki-dl.dl-past .dl-da{color:var(--red)}
.tki-dl.dl-soon .dl-mo{background:var(--am)}
.tki-dl.dl-soon .dl-da{color:var(--am)}
.tki-dl.dl-text{padding:6px 10px;width:auto;min-width:62px;justify-content:center;background:var(--bg)}
.tki-dl.dl-text .dl-tx{font-size:11px;font-weight:700;color:var(--mu);text-align:center;line-height:1.3}
.tki.has-dl > .tki-main{padding-right:74px}
.tki.has-dl > .tki-main .tmeta .bdl{display:none}
/* ===== CAL PANEL ===== */
.cal-backdrop{position:fixed;top:0;left:248px;right:0;bottom:0;background:var(--modal-overlay);z-index:80;opacity:0;pointer-events:none;transition:opacity .22s}
.cal-backdrop.open{opacity:1;pointer-events:auto}
/* TODO-CLEANUP: breakpoint @980px diffère du breakpoint mobile principal @900px (layout.css). Harmoniser à 900px ou justifier le 980px */
@media (max-width:980px){.cal-backdrop{left:0}}
.calpanel{position:fixed;top:0;left:248px;height:100vh;width:min(640px,94vw);background:var(--card);box-shadow:10px 0 40px rgba(15,23,42,.18);z-index:81;transform:translateX(-110%);transition:transform .26s cubic-bezier(.2,.7,.2,1);display:flex;flex-direction:column}
.calpanel.open{transform:translateX(0)}
@media (max-width:980px){.calpanel{left:0}}
.cal-hd{padding:18px 22px;border-bottom:1px solid var(--b);display:flex;align-items:center;gap:12px}
.cal-hd h2{font-size:17px;font-weight:800;margin:0;flex:1;display:flex;align-items:center;gap:10px}
.cal-hd h2 i{color:var(--t)}
.cal-nav{display:flex;align-items:center;gap:6px;padding:14px 22px;border-bottom:1px solid var(--b2)}
.cal-nav .mt{flex:1;text-align:center;font-size:15px;font-weight:700;text-transform:capitalize}
.cal-nav button{background:transparent;border:1px solid var(--b);border-radius:7px;width:34px;height:34px;cursor:pointer;color:var(--tx);display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .12s}
.cal-nav button:hover{background:var(--bg);border-color:#C7CDD0}
.cal-nav .today-btn{width:auto;padding:0 13px;font-size:12.5px;font-weight:700}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);flex:1;overflow-y:auto;padding:14px 16px 24px}
.cal-dow{font-size:10.5px;font-weight:800;color:var(--mu);text-transform:uppercase;letter-spacing:.06em;text-align:center;padding:8px 0;border-bottom:1px solid var(--b2)}
.cal-day{min-height:84px;border-right:1px solid var(--b2);border-bottom:1px solid var(--b2);padding:6px;display:flex;flex-direction:column;gap:3px;position:relative;background:var(--card)}
.cal-day.muted{background:#FAFBFB}
.cal-day.today{background:var(--tl)}
.cal-day.muted .cal-dnum{color:#C7CDD0}
.cal-dnum{font-size:12px;font-weight:700;color:var(--tx);text-align:right;line-height:1;padding:2px 3px}
.cal-day.today .cal-dnum{color:var(--t)}
.cal-evt{font-size:10.5px;background:var(--t);color:#fff;border-radius:4px;padding:3px 5px;line-height:1.25;font-weight:600;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:none;width:100%;text-align:left;font-family:inherit}
.cal-evt:hover{filter:brightness(.92)}
.cal-evt.done{background:#A4ADB8;text-decoration:line-through}
.cal-evt.dot-r{background:var(--rDot)}
.cal-evt.dot-o{background:var(--oDot)}
.cal-evt.dot-g{background:var(--gDot)}
.cal-foot{padding:10px 22px;border-top:1px solid var(--b);font-size:11.5px;color:var(--mu);display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.cal-foot .lgd{display:flex;align-items:center;gap:5px}
.cal-foot .lgd .sw{width:11px;height:11px;border-radius:3px;background:var(--t)}
.cal-foot .lgd .sw.r{background:var(--rDot)}
.cal-foot .lgd .sw.o{background:var(--oDot)}
.cal-foot .lgd .sw.g{background:var(--gDot)}
/* TODO-CLEANUP: 3e breakpoint @520px utilisé uniquement ici (les autres = 900px et 980px). Définir une variable de breakpoint cohérente ou justifier l'écart */
@media(max-width:520px){.cal-day{min-height:64px;padding:4px}.cal-dnum{font-size:11px}.cal-evt{font-size:9.5px;padding:2px 4px}}
/* TODO-CLEANUP: .tki.with-dot-g est isolée du bloc .tki.with-dot-r/o (séparée par tout le bloc cal-panel). Regrouper les 3 modificateurs ensemble près de .tki */
.tki.with-dot-g{border:1.5px solid var(--gDot);background:#F0FDF6}
.tki-main{display:flex;align-items:flex-start;gap:12px}
.tchk{width:20px;height:20px;border-radius:5px;border:2px solid var(--b);flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s;margin-top:1px}
.tchk:hover{border-color:var(--t)}
.tchk.on{background:var(--t);border-color:var(--t)}
.tname{font-size:14.5px;line-height:1.5;color:var(--tx);display:block;font-weight:500}
.tname.done{text-decoration:line-through;color:var(--mu)}
.tnote{font-size:13px;color:var(--mu);line-height:1.55;margin:8px 0;padding:8px 12px;background:var(--card-2);border-left:3px solid var(--b);border-radius:0 6px 6px 0}
.tmeta{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:10px}
.t-acts{display:flex;gap:5px;margin-left:auto}
.iconbtn{padding:4px 7px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--mu);cursor:pointer;font-size:12px;display:inline-flex;align-items:center;gap:4px;line-height:1;transition:all .12s;height:26px}
.iconbtn:hover{background:var(--hover);color:var(--tx)}
.iconbtn.dn{color:var(--red)}
.iconbtn.dn:hover{background:var(--red-bg);color:var(--red)}
.iconbtn i{font-size:14px}
.iconbtn.bd{border-color:var(--b);background:var(--card)}
.iconbtn.bd:hover{border-color:#C7CDD0;background:var(--bg-soft)}
/* F103 / F104.4 : poignée resize colonnes — z-index eleve pour rester cliquable
   meme si une colonne a ete retrecie au point que ses cellules debordent sur le voisin */
.col-resize-handle{position:absolute;top:0;right:-4px;width:8px;height:100%;cursor:col-resize;user-select:none;z-index:10}
.col-resize-handle:hover{background:var(--t);opacity:.6}
.empty{text-align:center;padding:48px 20px;color:var(--mu);background:var(--card);border:1px dashed var(--b);border-radius:12px}
.empty i{font-size:36px;color:var(--mu2);margin-bottom:10px;display:block}
.empty .et{font-size:15px;font-weight:600;color:var(--tx);margin-bottom:4px}
.empty .es{font-size:13px;margin-bottom:14px}
.fps{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:18px}
.fp{padding:6px 14px;border-radius:20px;font-size:13px;cursor:pointer;border:1px solid var(--b);color:var(--tx);background:var(--card);font-weight:500;transition:all .12s}
.fp:hover{border-color:var(--t)}
.fp.on{background:var(--t);color:#fff;border-color:var(--t)}
/* form fields */
.f-grid{display:grid;gap:10px}
.f-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fld{display:flex;flex-direction:column;gap:5px}
.flb{font-size:12px;font-weight:600;color:var(--mu)}
.fld input,.fld select,.fld textarea,.fi{width:100%;padding:10px 12px;border:1px solid var(--b);border-radius:8px;font-size:14px;background:var(--card);color:var(--tx);transition:border-color .12s}
.fld input:focus,.fld select:focus,.fld textarea:focus,.fi:focus{outline:none;border-color:var(--t);box-shadow:0 0 0 3px rgba(13,148,136,.12)}
.fld textarea{resize:vertical;min-height:80px;font-family:inherit}
.f-actions{display:flex;gap:8px;margin-top:6px}
/* ===== CREAS ===== */
/* F331 (30 mai 2026) : PAS d overflow:hidden ici — il casse le position:sticky de la 1ère colonne (un ancêtre overflow!=visible entre la cellule sticky et le conteneur scrollable devient le contexte de scroll et annule le collage). Coins arrondis via les cellules d angle ci-dessous. */
.crtbl{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px;background:var(--card);border:1px solid var(--b);border-radius:12px}
.crtbl thead tr:first-child th:first-child{border-top-left-radius:12px}
.crtbl thead tr:first-child th:last-child{border-top-right-radius:12px}
.crtbl tbody tr:last-child td:first-child{border-bottom-left-radius:12px}
.crtbl tbody tr:last-child td:last-child{border-bottom-right-radius:12px}
.crtbl th{font-size:11px;font-weight:700;color:var(--mu);text-transform:uppercase;letter-spacing:.05em;padding:10px 10px;border-bottom:1px solid var(--b);border-right:1px solid var(--b2);text-align:left;background:var(--bg-soft)}
.crtbl th:last-child{border-right:none}
.crtbl td{padding:10px;border-bottom:1px solid var(--b2);border-right:1px solid var(--b2);vertical-align:middle}
.crtbl td:last-child{border-right:none}
.crtbl tr:last-child td{border-bottom:none}
.crtbl tr:hover td{background:var(--hover)}
/* F103.2 (14 mai 2026) : sticky 1ère colonne Aperçu pour rester visible au scroll horizontal */
.crtbl th:first-child,.crtbl td:first-child{position:sticky;left:0;background:var(--bg-soft);z-index:2;border-right:1px solid var(--b)}
.crtbl tbody td:first-child{background:var(--card)}
.crtbl tbody tr:hover td:first-child{background:var(--hover)}
.crtbl input,.crtbl select{width:100%;padding:5px 8px;border:1px solid var(--b);border-radius:6px;font-size:13px;background:var(--card)}
.cav{width:44px;height:44px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;flex-shrink:0;letter-spacing:.02em;position:relative;cursor:pointer;overflow:hidden;border:1.5px solid transparent;transition:all .12s}
.cav:hover{border-color:var(--t);box-shadow:var(--shadow-sm)}
.cav.has-img{background:var(--card)!important}
.cav img{width:100%;height:100%;object-fit:cover;display:block}
.cav .cav-add{position:absolute;inset:0;background:rgba(13,148,136,.85);color:#fff;display:none;align-items:center;justify-content:center;font-size:18px}
.cav:hover .cav-add{display:flex}
.cav.has-img .cav-add{background:rgba(15,23,42,.55)}
.cav-rm{position:absolute;top:-5px;right:-5px;width:18px;height:18px;border-radius:50%;background:var(--red);color:#fff;font-size:11px;font-weight:700;display:none;align-items:center;justify-content:center;border:2px solid var(--card);cursor:pointer;z-index:2;line-height:1}
.cav:hover .cav-rm.show{display:flex}
.rchip{display:inline-flex;padding:3px 11px;border-radius:20px;font-size:12px;font-weight:700}
.rh{background:#DCFCE7;color:#166534}.rg{background:var(--tl);color:#0F6E56}.rw{background:#FEF3C7;color:#92400E}.rn{background:#FEE2E2;color:#991B1B}.rx{background:#EBEEF1;color:var(--mu)}
/* Crea row tint when dot is set */
.crea-row.tr-dot-r > td{background:#FEF6F6;border-top:1px solid #FECACA;border-bottom:1px solid #FECACA}
.crea-row.tr-dot-r > td:first-child{border-left:3px solid var(--rDot)}
.crea-row.tr-dot-o > td{background:#FFFBEB;border-top:1px solid #FDE68A;border-bottom:1px solid #FDE68A}
.crea-row.tr-dot-o > td:first-child{border-left:3px solid var(--oDot)}
.crea-row.tr-dot-g > td{background:#F0FDF6;border-top:1px solid #BBF7D0;border-bottom:1px solid #BBF7D0}
.crea-row.tr-dot-g > td:first-child{border-left:3px solid var(--gDot)}
.crea-row.tr-dot-r .rchip{background:#FEE2E2!important;color:#991B1B!important}
.crea-row.tr-dot-o .rchip{background:#FEF3C7!important;color:#92400E!important}
.crea-row.tr-dot-g .rchip{background:#DCFCE7!important;color:#166534!important}
.crea-row.tr-dot-r .cav{background:#FEE2E2!important;color:#991B1B!important}
.crea-row.tr-dot-o .cav{background:#FEF3C7!important;color:#92400E!important}
.crea-row.tr-dot-g .cav{background:#DCFCE7!important;color:#166534!important}
.dash-crea-row.tr-dot-r{background:#FEF6F6!important;border-left:3px solid var(--rDot);padding-left:9px!important}
.dash-crea-row.tr-dot-o{background:#FFFBEB!important;border-left:3px solid var(--oDot);padding-left:9px!important}
.dash-crea-row.tr-dot-g{background:#F0FDF6!important;border-left:3px solid var(--gDot);padding-left:9px!important}
.dash-crea-row.tr-dot-r .rchip,.dash-crea-row.tr-dot-r .cav{background:#FEE2E2!important;color:#991B1B!important}
.dash-crea-row.tr-dot-o .rchip,.dash-crea-row.tr-dot-o .cav{background:#FEF3C7!important;color:#92400E!important}
.dash-crea-row.tr-dot-g .rchip,.dash-crea-row.tr-dot-g .cav{background:#DCFCE7!important;color:#166534!important}
/* ===== BLOG ===== */
.bblock{background:var(--card);border:1px solid var(--b);border-radius:10px;padding:16px 18px;margin-bottom:10px}
.bblock.with-dot-r{border:1.5px solid var(--rDot);background:#FEF6F6}
.bblock.with-dot-o{border:1.5px solid var(--oDot);background:#FFFBEB}
.bblock.with-dot-g{border:1.5px solid var(--gDot);background:#F0FDF6}
.brow{display:flex;align-items:flex-start;gap:14px}
.bdate{font-size:13px;color:var(--mu);width:70px;flex-shrink:0;font-weight:600;padding-top:1px}.bdate.s{color:var(--red)}
.btitle{font-size:14.5px;flex:1;font-weight:500;line-height:1.5}.btitle.done{text-decoration:line-through;color:var(--mu)}
.bclust{font-size:11px;padding:3px 9px;border-radius:6px;background:var(--tl);color:#0F6E56;font-weight:600}
/* ===== SAV ===== */
.sub-tabs{display:flex;border-bottom:1px solid var(--b);margin-bottom:24px;gap:4px}
.stab{padding:10px 18px;font-size:14px;cursor:pointer;border:none;background:none;color:var(--mu);border-bottom:2px solid transparent;margin-bottom:-1px;font-weight:500;transition:all .12s}
.stab:hover{color:var(--tx)}
.stab.on{color:var(--t);border-bottom-color:var(--t);font-weight:700}
.sav-c{background:var(--card);border:1px solid var(--b);border-radius:10px;padding:16px 18px;margin-bottom:11px}
/* F65 (13 mai 2026) : flash bleu 3s autour d une card fraichement creee (addSav).
   Animation keyframes au lieu de transition inline (plus fiable). */
@keyframes sav-flash{0%{outline:3px solid rgba(59,130,246,0);outline-offset:2px}10%{outline:3px solid rgba(59,130,246,1);outline-offset:2px}80%{outline:3px solid rgba(59,130,246,1);outline-offset:2px}100%{outline:3px solid rgba(59,130,246,0);outline-offset:2px}}
.sav-flash{animation:sav-flash 3s ease-in-out}
.sav-hd{display:flex;align-items:center;gap:10px;margin-bottom:6px;flex-wrap:wrap}
.sav-id{font-size:11px;font-weight:700;color:var(--mu);background:var(--hover);padding:2px 8px;border-radius:5px}
.sav-nm{font-size:15px;font-weight:700;flex:1}
/* F64.1 (13 mai 2026) : min-width fixes pour aligner les colonnes type/statut/assignation
   entre cards SAV. Sans ce min-width, Remboursement (13 char) decale le statut comparé a Question (8 char). */
.tt{font-size:11px;padding:3px 9px;border-radius:6px;font-weight:700;min-width:130px;display:inline-block;text-align:center;box-sizing:border-box}
.tr{background:#FEE2E2;color:#991B1B}.tm{background:#FEF3C7;color:#92400E}.tl{background:#EFF6FF;color:#1D4ED8}.tq{background:var(--tl);color:#0F6E56}
.tt.to{background:#F3F4F6;color:#374151}
.stchip{font-size:12px;padding:5px 11px;border-radius:6px;font-weight:700;cursor:pointer;border:1px solid transparent;transition:all .12s;display:inline-flex;align-items:center;gap:5px;min-width:200px;justify-content:flex-start;box-sizing:border-box}
.stchip:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.sn{background:#FEE2E2;color:#991B1B;border-color:#FECACA}
.sc{background:#FEF3C7;color:#92400E;border-color:#FDE68A}
.sp{background:#FFEDD5;color:#9A3412;border-color:#FED7AA} /* F25 — Partiellement traité (orange Tailwind 100/800/200) */
.sr{background:#DCFCE7;color:#166534;border-color:#BBF7D0}
/* SAV — Carré calendrier date d'ouverture (style iOS) — bande haut = couleur du statut */
.sav-cal{width:55px;height:60px;border-radius:8px;background:var(--card);box-shadow:var(--shadow-sm),0 0 0 1px rgba(15,23,42,.04);display:flex;flex-direction:column;overflow:hidden;flex-shrink:0;font-family:'Inter',sans-serif;user-select:none}
.sav-cal-mo{height:20px;display:flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;line-height:1}
.sav-cal-body{flex:1;background:var(--card);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1px 0 2px;gap:1px}
.sav-cal-day{font-size:22px;font-weight:800;color:var(--tx);line-height:1;letter-spacing:-.02em}
.sav-cal-yr{font-size:10px;font-weight:600;color:var(--mu);line-height:1;letter-spacing:.02em}
.status-pop{position:absolute;background:var(--card);border:1px solid var(--b);border-radius:8px;box-shadow:var(--shadow-md);padding:5px;display:flex;flex-direction:column;gap:3px;z-index:100;min-width:140px}
.status-pop button{padding:7px 10px;border:none;background:none;text-align:left;border-radius:5px;cursor:pointer;font-size:13px;font-weight:600;display:flex;align-items:center;gap:7px}
.status-pop button:hover{background:var(--hover)}
/* F24-A — Pill assignation SAV (Fabrice/Luana/Non assigné) */
.assignchip{font-size:11px;padding:4px 10px;border-radius:6px;font-weight:600;cursor:pointer;border:1px solid var(--b);background:var(--card);color:var(--tx);transition:all .12s;display:inline-flex;align-items:center;gap:5px;min-width:140px;justify-content:flex-start;box-sizing:border-box}
.assignchip:hover{background:var(--bg);transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.assignchip.unassigned{color:var(--mu);font-style:italic}
/* ===== TPL ===== */
.tpl-c{background:var(--card);border:1px solid var(--b);border-radius:10px;padding:16px 18px;margin-bottom:11px;display:flex;gap:14px;align-items:flex-start}
.tpl-body{flex:1}
.tpl-title{font-size:14.5px;font-weight:700;margin-bottom:6px}
.tpl-text{font-size:13.5px;color:var(--mu);line-height:1.6;white-space:pre-wrap}
.tpl-acts{display:flex;flex-direction:column;gap:5px;flex-shrink:0}
/* ===== FB ===== */
.fb-cat{background:var(--card);border:1px solid var(--b);border-radius:10px;padding:14px 18px;margin-bottom:11px}
.fb-ct{font-size:14.5px;font-weight:700;display:flex;align-items:center;gap:8px;cursor:pointer;user-select:none}
.fb-rpl{display:none;margin-top:14px;padding-top:14px;border-top:1px solid var(--b2)}.fb-rpl.open{display:block}
.fb-r{background:var(--bg-soft);border-radius:8px;padding:12px 14px;margin-bottom:8px;display:flex;gap:12px;align-items:flex-start}
.fb-rt{font-size:13.5px;flex:1;line-height:1.6}
/* ===== SIGNATURES ===== */
/* F77 (14 mai 2026) : signature card reduite de 50% (padding, toggle, font sizes) — etait trop grande. */
.sig-c{background:var(--card);border:1px solid var(--b);border-radius:8px;padding:7px 10px;margin-bottom:6px;display:flex;gap:8px;align-items:center}
.sig-toggle{width:30px;height:16px;border-radius:8px;background:#D1D5DB;cursor:pointer;position:relative;transition:all .2s;flex-shrink:0}
.sig-toggle.on{background:var(--t)}
.sig-toggle::after{content:"";position:absolute;width:12px;height:12px;border-radius:50%;background:var(--card);top:2px;left:2px;transition:all .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.sig-toggle.on::after{left:16px}
.sig-body{flex:1;min-width:0}
.sig-name{font-size:12px;font-weight:700;margin-bottom:1px}
.sig-text{font-size:11px;color:var(--mu);line-height:1.4;white-space:pre-wrap}
/* ===== OKR ===== */
.okrb{background:var(--card);border:1px solid var(--b);border-radius:12px;padding:18px 22px;margin-bottom:14px}
.okrt{font-size:15px;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:10px}
.okrn{width:24px;height:24px;border-radius:50%;background:var(--tl);color:var(--t);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;flex-shrink:0}
.krr{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:14px;cursor:pointer}
.kchk{width:17px;height:17px;border-radius:4px;border:2px solid var(--b);flex-shrink:0;display:flex;align-items:center;justify-content:center}
.kchk.on{background:var(--t);border-color:var(--t)}
/* ===== CHAT ===== */
.chat-fab{position:fixed;bottom:24px;right:24px;width:60px;height:60px;border-radius:50%;background:var(--t);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(13,148,136,.45),0 2px 6px rgba(0,0,0,.12);z-index:60;transition:transform .15s,box-shadow .15s}
.chat-fab:hover{transform:scale(1.06);box-shadow:0 10px 24px rgba(13,148,136,.55),0 3px 8px rgba(0,0,0,.15)}
.chat-fab:active{transform:scale(.98)}
.chat-fab i{font-size:28px;line-height:1}
.chat-fab:hover{transform:scale(1.05)}
.chat-fab i{font-size:24px}
.chat-fab .badge{position:absolute;top:0;right:0;background:var(--red);color:#fff;font-size:11px;font-weight:700;border-radius:10px;padding:2px 7px;min-width:20px}
.chat-win{position:fixed;bottom:24px;right:24px;width:360px;height:520px;background:var(--card);border:1px solid var(--b);border-radius:14px;box-shadow:0 12px 40px rgba(0,0,0,.15);z-index:60;display:none;flex-direction:column;overflow:hidden}
.chat-win.open{display:flex}
.chat-hd{padding:14px 16px;border-bottom:1px solid var(--b);display:flex;align-items:center;justify-content:space-between;background:var(--card)}
.chat-hd-l{display:flex;align-items:center;gap:10px}
.chat-hd-t{font-weight:700;font-size:14px}
.chat-hd-s{font-size:11px;color:var(--mu);margin-top:1px}
.chat-msgs{flex:1;padding:14px;overflow-y:auto;background:var(--bg-soft);display:flex;flex-direction:column;gap:8px}
.cm{max-width:80%;padding:9px 13px;border-radius:14px;font-size:13.5px;line-height:1.5;word-wrap:break-word}
.cm.me{align-self:flex-end;background:var(--t);color:#fff;border-bottom-right-radius:4px}
.cm.them{align-self:flex-start;background:var(--card);border:1px solid var(--b);border-bottom-left-radius:4px}
.cm-time{font-size:10px;opacity:.65;margin-top:3px}
.cm.share{background:#FFFBEB;border:1px solid #FDE68A;color:#7C2D12;font-size:12.5px;align-self:stretch;max-width:100%;cursor:pointer}
.cm.share:hover{background:#FEF3C7}
.cm.share .label{font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.06em;margin-bottom:3px;color:#B45309}
.chat-foot{padding:10px;border-top:1px solid var(--b);display:flex;gap:6px;background:var(--card)}
.chat-foot input{flex:1;padding:9px 12px;border:1px solid var(--b);border-radius:20px;font-size:14px}
.chat-foot input:focus{outline:none;border-color:var(--t)}
.chat-foot button{padding:0 14px;background:var(--t);color:#fff;border:none;border-radius:20px;cursor:pointer;font-weight:700}
.chat-foot button:hover{background:#0B7A6E}
.chat-empty{flex:1;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--mu);font-size:13px;padding:30px 20px}
/* ===== SHARE ===== */
.share-modal{position:fixed;inset:0;background:var(--modal-overlay);z-index:1000;display:flex;align-items:center;justify-content:center}
.share-box{background:var(--card);border-radius:14px;padding:24px;width:380px;box-shadow:0 8px 40px rgba(0,0,0,.2)}
.share-title{font-weight:700;font-size:17px;margin-bottom:6px}
.share-sub{font-size:13px;color:var(--mu);margin-bottom:18px}
.share-preview{background:var(--bg-soft);border:1px solid var(--b);border-radius:8px;padding:12px;margin-bottom:18px;font-size:13px;line-height:1.5}
.share-user{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--b);border-radius:8px;cursor:pointer;margin-bottom:8px;transition:all .12s}
.share-user:hover{border-color:var(--t);background:var(--tl)}
.share-msg{font-size:12px;color:var(--mu);margin-top:3px}
/* ===== LOGIN ===== */
.lwrap{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(160deg,#F6F6F7 0%,#E8F4F2 100%)}
.lbox{background:var(--card);border:1px solid var(--b);border-radius:18px;padding:42px 40px;width:400px;box-shadow:0 10px 40px rgba(0,0,0,.08)}
.login-logo{display:block;height:280px;width:auto;margin:0 auto 14px;object-fit:contain}
/* F326.1 (27 mai 2026) : swap logo light/dark auto selon data-theme.
 * Le markup doit inclure les 2 img cote a cote avec classes logo-light + logo-dark.
 * mix-blend-mode:lighten fond le fond noir opaque du PNG dark dans la box sombre
 * (le noir disparait, seuls les pixels plus clairs que le fond restent visibles). */
.login-logo.logo-dark{display:none}
[data-theme="dark"] .login-logo.logo-light{display:none}
[data-theme="dark"] .login-logo.logo-dark{display:block;mix-blend-mode:lighten}
.lsub{font-size:14px;color:var(--mu);text-align:center;margin-bottom:28px}
.lform label{display:block;font-size:13px;font-weight:600;color:var(--tx);margin-bottom:6px;margin-top:16px}
.lform input[type=email],.lform input[type=password]{width:100%;padding:12px 14px;border:1px solid var(--b);border-radius:10px;font-size:14px;background:var(--card)}
.lform input[type=email]:focus,.lform input[type=password]:focus{outline:none;border-color:var(--t);box-shadow:0 0 0 3px rgba(13,148,136,.12)}
.l-remember{display:flex;align-items:center;gap:9px;margin-top:18px;font-size:13.5px;color:var(--tx);cursor:pointer;user-select:none}
.l-remember input{width:17px;height:17px;accent-color:var(--t);cursor:pointer}
.lerr{background:var(--red-bg);border:1px solid var(--red-bd);border-radius:8px;padding:11px 14px;font-size:13px;color:var(--red);margin-top:12px;display:none}
.lsubmit{width:100%;padding:11px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;background:var(--t);color:#fff;border:none;margin-top:22px;transition:all .15s}
.lsubmit:hover{background:#0B7A6E}
/* ===== UTILS ===== */
.spacer{height:14px}
.note{font-size:12px;color:var(--mu);margin-top:14px}
/* mood pill in topbar */
.mood-pill{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:3px 9px;border-radius:14px;background:var(--tl);color:#0F6E56;font-weight:600;margin-left:8px}

/* ===== ANIMATIONS (BLOC 4 — ligne 876 monolithe v9.5) ===== */
@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}

/* ============================================================ */
/* TODO-CLEANUP-CRITIQUE: BLOC 5 (v9.3) — REDÉFINITIONS + PALETTE HORS-SYSTÈME */
/* Ce bloc introduit 2 problèmes systémiques : */
/* (1) REDÉFINITIONS de classes déjà définies plus haut dans ce fichier : */
/*     - .tki (conflit total avec la version "tasks" originale) */
/*     - .tki:hover */
/*     - .tnote (font-size identique mais color/padding différents, pas de background ni border-left) */
/*     - .cal-day (min-height 90 vs 84, border différente) */
/*     - .cal-day.muted (opacity:.4 ajouté, background différent) */
/*     - .cal-day.today (border-color, background différents) */
/* (2) PALETTE TAILWIND HARDCODÉE au lieu des variables CSS du système Polaris : */
/*     #0F172A, #E5E7EB, #F1F5F9, #F8FAFC, #64748B, #94A3B8, #CBD5E1, */
/*     #10B981, #F59E0B, #F97316, #DC2626, #6366F1 — toutes en dur. */
/*     Cohabitation Polaris (#202223, #E1E3E5, #6D7175...) + Tailwind = dette technique. */
/* À harmoniser en passe de cleanup : choisir une palette, mapper sur les variables. */
/* ============================================================ */
/* === TASK BADGES (v9.3) === */

.tki { display:flex; gap:12px; padding:12px; background:var(--card); border:1px solid var(--b); border-radius:12px; margin-bottom:10px; transition:box-shadow .15s; position:relative; }

.tki:hover { box-shadow:0 4px 12px rgba(15,23,42,.06); }

.tki-badges { display:flex; gap:6px; flex-shrink:0; }

.tki-date, .tki-cat { width:56px; height:56px; border-radius:10px; display:flex; flex-direction:column; align-items:center; justify-content:center; font-weight:700; line-height:1.1; cursor:pointer; transition:transform .12s; user-select:none; }

.tki-date:hover, .tki-cat:hover { transform:scale(1.04); }

.tki-date { background:#0F172A; color:#fff; }

.tki-date.past { background:#DC2626; }

.tki-date.today { background:#F59E0B; }

.tki-date.soon { background:#F97316; }

.tki-date.done { background:#10B981; }

.tki-date.empty { background:var(--card-2); border:1px dashed #CBD5E1; }

.tki-date.free { background:#0D9488; }

.tki-mo { font-size:10px; opacity:.85; letter-spacing:.5px; text-transform:uppercase; }

.tki-da { font-size:22px; font-weight:800; margin-top:-2px; }

.tki-date-tx { font-size:10px; text-align:center; padding:2px; }

.tki-cat { background:#0D9488; color:#fff; }

.tki-catlbl { font-size:9px; margin-top:2px; max-width:50px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; opacity:.95; font-weight:600; }

.tki-body { flex:1; min-width:0; display:flex; flex-direction:column; gap:6px; }

.tki-head { display:flex; align-items:center; gap:10px; }

.tki-head .tname { flex:1; font-weight:600; font-size:15px; color:var(--tx); }

.tki-head .tname.done { text-decoration:line-through; color:#94A3B8; }

.tki-head .t-acts { display:flex; gap:2px; opacity:0; transition:opacity .15s; }

.tki:hover .t-acts { opacity:1; }

.tnote { font-size:13px; color:var(--mu); padding-left:30px; }

/* === CAL PANEL + button === */

.cal-day { position:relative; min-height:90px; padding:6px; border:1px solid var(--b3); border-radius:8px; background:var(--card); display:flex; flex-direction:column; gap:3px; }

.cal-day.muted { background:var(--card-2); opacity:.4; }

.cal-day.today { background:rgba(13,148,136,.08); border-color:#0D9488; }

.cal-day.quick-add-on { background:rgba(13,148,136,.15); border-color:#0D9488; min-height:120px; }

.cal-add-btn { position:absolute; top:4px; right:4px; width:22px; height:22px; border-radius:50%; background:rgba(13,148,136,.08); color:#0D9488; border:none; cursor:pointer; display:flex; align-items:center; justify-content:center; opacity:0; transition:all .15s; font-size:14px; }

.cal-day:hover .cal-add-btn { opacity:1; }

.cal-add-btn:hover { background:#0D9488; color:#fff; transform:scale(1.1); }

.cal-quick-add { background:var(--card); border:1px solid #0D9488; border-radius:6px; padding:6px; margin-top:4px; box-shadow:0 4px 12px rgba(13,148,136,.15); }

.cal-quick-add input { width:100%; border:1px solid var(--b); border-radius:4px; padding:4px 6px; font-size:11px; margin-bottom:3px; font-family:inherit; box-sizing:border-box; }

.cal-quick-add input:focus { outline:none; border-color:#0D9488; }

/* ============================================================ */
/* TODO-CLEANUP: BLOC 6 (ligne 916 monolithe) — REDÉFINITIONS .cal-evt */
/* - .cal-evt redéfinie : la version originale (bloc 3) avait font-size, color, border-radius, padding, etc. */
/*   Ici réduite à background:#0D9488 seul → la cascade conserve les autres propriétés de la 1ère définition. */
/* - .cal-evt.done redéfinie avec !important + opacity:.6 — écrase la version "background:#A4ADB8;text-decoration:line-through" du bloc 3. */
/* - Nouvelles variantes .cal-evt-task/-sav/-art ajoutent un code couleur par type d'événement (à valider que le JS applique bien ces classes). */
/* - Palette toujours hardcodée (#10B981, #F59E0B, #6366F1). */
/* ============================================================ */
/* === SAV/BLOG : date carré === */

.sav-card { position:relative; display:flex; gap:12px; align-items:flex-start; padding:12px; background:var(--card); border:1px solid var(--b); border-radius:12px; margin-bottom:10px; transition:box-shadow .15s; }

.sav-card:hover { box-shadow:0 4px 12px rgba(15,23,42,.06); }

.sav-card-date { display:flex; flex-shrink:0; }

.sav-card-body { flex:1; min-width:0; }

.blog-card { display:flex; gap:12px; padding:12px; background:var(--card); border:1px solid var(--b); border-radius:12px; margin-bottom:10px; transition:box-shadow .15s; }

.blog-card:hover { box-shadow:0 4px 12px rgba(15,23,42,.06); }

.blog-card-date { flex-shrink:0; }

.blog-card-body { flex:1; min-width:0; display:flex; flex-direction:column; gap:6px; }

/* Cal events code couleur par type */

.cal-evt { background:#0D9488; }

.cal-evt-task { background:#0D9488; }

.cal-evt-sav { background:#F59E0B; }

.cal-evt-art { background:#6366F1; }

.cal-evt.done { background:#10B981 !important; opacity:.6; }

/* ============================================================ */
/* SAV — Recherche unifiée (omnibox) (F44 — 13 mai 2026)         */
/* Un seul input (icône loupe à gauche, bouton clear à droite),  */
/* placé au-dessus de la liste de tickets, sous la section-h.    */
/* ============================================================ */

.sav-omnibox { position:relative; display:flex; align-items:center; width:100%; max-width:500px; margin:12px 0 14px 0; }

.sav-omnibox-icon { position:absolute; left:12px; top:50%; transform:translateY(-50%); color:#6B7280; pointer-events:none; }

.sav-omnibox-input { width:100%; padding:9px 36px 9px 36px; font-size:14px; font-family:inherit; color:var(--tx); background:var(--card); border:1px solid var(--b); border-radius:8px; box-sizing:border-box; transition:border-color .15s, box-shadow .15s; }

.sav-omnibox-input:focus { outline:none; border-color:#0D9488; box-shadow:0 0 0 3px rgba(13,148,136,.12); }

.sav-omnibox-input::placeholder { color:#9CA3AF; }

.sav-omnibox-clear { position:absolute; right:6px; top:50%; transform:translateY(-50%); width:24px; height:24px; padding:0; border:none; background:transparent; color:#6B7280; cursor:pointer; font-size:20px; line-height:1; border-radius:50%; display:flex; align-items:center; justify-content:center; transition:background-color .12s, color .12s; }

.sav-omnibox-clear:hover { background:#F3F4F6; color:var(--tx); }


/* ============================================================ */
/* SAV — Tabs Actifs/Résolus (F51 — 13 mai 2026)                */
/* Sous-onglets internes à la vue Tickets, placés AU-DESSUS de  */
/* l'omnibox F44. Style "pill" pour se distinguer visuellement  */
/* des .stab principaux (Tickets/Modèles) qui sont en underline */
/* — évite la confusion entre les deux niveaux de navigation.   */
/* ============================================================ */

.sav-tab-bar {
  display:flex;
  gap:8px;
  margin:14px 0 10px 0;
  flex-wrap:wrap;
}

.sav-tab {
  padding:6px 14px;
  font-size:13px;
  font-weight:500;
  color:var(--mu);
  background:var(--card);
  border:1px solid var(--b);
  border-radius:999px;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-family:inherit;
  line-height:1.3;
  transition:background-color .12s, border-color .12s, color .12s;
}

.sav-tab:hover {
  color:var(--tx);
  border-color:var(--b2);
}

.sav-tab.on {
  background:var(--tl);
  border-color:var(--t);
  color:var(--t);
  font-weight:700;
}

.sav-tab-count {
  font-size:12px;
  font-weight:600;
  opacity:.85;
}


/* ============================================================ */
/* F154 (16 mai 2026) : grille de cartes carrees, classe partagee */
/* Utilisee par SAV tickets, SAV templates, Blog, Retour,         */
/* Commentaires (reponses types), Signatures.                     */
/* Modele : grille auto-fill minmax 280px, gap 14px.              */
/* Les cards a l interieur doivent etre flex column avec footer.  */
/* ============================================================ */
.gcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;align-items:stretch}
.gcards-sm{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;align-items:stretch}
/* Card-square : structure interne d une carte carree (column flex avec footer). */
.csq{background:var(--card);border:1px solid var(--b);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:8px;box-shadow:var(--shadow-sm);transition:box-shadow .15s,border-color .15s;min-height:0}
.csq:hover{box-shadow:var(--shadow-md);border-color:#C7CDD0}
.csq-hd{display:flex;gap:10px;align-items:flex-start;min-width:0}
.csq-hd-main{flex:1;min-width:0}
.csq-title{font-weight:700;font-size:14.5px;line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-overflow:ellipsis}
.csq-meta{font-size:12px;color:var(--mu);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.csq-body{flex:1;font-size:13px;color:var(--mu);line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;text-overflow:ellipsis;white-space:pre-wrap;word-break:break-word}
.csq-foot{display:flex;justify-content:space-between;align-items:center;gap:6px;padding-top:8px;border-top:1px solid var(--b3);margin-top:auto}
.csq-foot .t-acts{display:flex;gap:2px;margin-left:auto}
/* F164 (16 mai 2026) : dans une csq, les chips de statut et d assignation ne forcent pas leur min-width
   habituel (utile pour grille de cartes carrees ou la place est limitee). */
.csq .stchip{min-width:0;padding:3px 9px;font-size:11.5px}
.csq .stchip i{font-size:11px}
.csq .assignchip{min-width:0;padding:3px 8px;font-size:11px}

/* F138.1 (16 mai 2026) : pulse rouge pour la pastille "Nouveau" sur les commandes du jour. */
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(220,38,38,.55)}70%{box-shadow:0 0 0 8px rgba(220,38,38,0)}100%{box-shadow:0 0 0 0 rgba(220,38,38,0)}}

/* F144 (16 mai 2026) : pulse teal pour pastille "Nouveau" commande du jour (couleur Podialine au lieu de rouge). */
@keyframes pulse-teal{0%{box-shadow:0 0 0 0 rgba(13,148,136,.55)}70%{box-shadow:0 0 0 8px rgba(13,148,136,0)}100%{box-shadow:0 0 0 0 rgba(13,148,136,0)}}

/* F355 (29 juin 2026) : toggle switch generique (gestion acces utilisateurs). */
.switch{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}
.switch input{opacity:0;width:0;height:0}
.switch .slider{position:absolute;cursor:pointer;inset:0;background:#ccc;border-radius:24px;transition:.2s}
.switch .slider:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.2s}
.switch input:checked + .slider{background:var(--teal,#0d9488)}
.switch input:checked + .slider:before{transform:translateX(20px)}
