/* 40-tiroirs.css — Tiroirs et fenêtres : détail d'un dossier, journal et notes, pied d'actions, menus, modales, saisie des pièces.
   Feuille 4/7 : l'ordre de chargement (lib/assets.php) est celui des numéros, il porte la cascade. */
  /* ---- Détail d'un dossier : une fenêtre centrée ----
     Le nom « drw » (drawer, tiroir) est resté de l'époque où cette fiche sortait
     du bord droit sur une colonne de 438 px. Elle s'ouvre désormais au milieu de
     l'écran, bien plus large, et se referme par la croix en haut à droite ou en
     touchant le fond. Fermée, elle n'est ni visible ni cliquable (opacity /
     pointer-events) : elle reste au centre plutôt que d'être garée hors écran. */
  .drw{position:fixed;top:50%;left:50%;width:min(760px,94vw);height:auto;max-height:88vh;background:var(--card);
       border-radius:22px;overflow:hidden;box-shadow:none;z-index:100;opacity:0;pointer-events:none;
       transform:translate(-50%,-50%) scale(.96);
       transition:opacity .2s,transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s;
       display:flex;flex-direction:column;}
  .drw.show{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1);box-shadow:var(--shadow-lg);}
  .drw-h{padding:22px 24px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-start;}
  .drw-h h3{font-size:21px;font-weight:800;letter-spacing:-.02em;}
  .drw-h .hid{font-size:12.5px;color:var(--grey-2);margin-top:3px;font-weight:600;}
  .xb{width:32px;height:32px;border-radius:50%;border:none;background:var(--fill);cursor:pointer;font-size:15px;color:var(--grey-1);display:flex;align-items:center;justify-content:center;}
  .xb:hover{background:var(--line-2);}
  /* Sans min-height:0, le corps refuse de rétrécir sous sa hauteur naturelle :
     il déborderait de la fenêtre au lieu de défiler à l'intérieur. */
  .drw-b{padding:22px 24px;overflow-y:auto;flex:1;min-height:0;}
  .row{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--line);font-size:13.5px;}
  .row .k{color:var(--grey-1);font-weight:500;}
  .row .v{font-weight:600;text-align:right;}
  .mini-h{font-size:11.5px;font-weight:700;color:var(--grey-2);text-transform:uppercase;letter-spacing:.04em;margin:22px 0 8px;}
  .quote-kind.firm{color:var(--accent);}
  /* Reconditionnement : points de contrôle OK / KO */
  .ckp{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px solid var(--line);font-size:13.5px;}
  .ckp-l{color:var(--ink);font-weight:600;}
  .ckp-b{display:flex;gap:6px;flex-shrink:0;}
  .ckp-b button{font:inherit;font-size:12px;font-weight:700;padding:4px 10px;border-radius:980px;border:1px solid var(--line);
                background:var(--card);color:var(--grey-1);cursor:pointer;}
  .ckp-b button.on.ok{background:var(--green);border-color:var(--green);color:#fff;}
  .ckp-b button.on.ko{background:#d93b3b;border-color:#d93b3b;color:#fff;}
  .ckp-b button:disabled{cursor:default;opacity:.6;}
  /* Interventions : aperçu SMS + total estimé */
  .itv-sms-preview{margin-top:10px;padding:11px 13px;border-radius:12px;background:var(--accent-soft);font-size:13px;line-height:1.45;color:var(--ink);white-space:pre-wrap;}
  .itv-sms-preview b{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--grey-1);margin-bottom:4px;}
  .itv-sms-preview:empty{display:none;}
  .itv-total{display:flex;justify-content:space-between;align-items:baseline;padding:12px 0 2px;border-top:1px solid var(--line);font-weight:700;}
  .itv-total b{font-size:20px;color:var(--accent);}
  /* Dépannage comptoir */
  .desk-new .fsec{padding-bottom:18px;}
  .desk-go{width:100%;padding:14px;font-size:15px;margin-top:16px;}
  .desk-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-top:14px;}
  .desk-card.run{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;}
  .desk-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;}
  .desk-who{font-weight:800;font-size:16px;}
  .desk-what{font-size:13.5px;color:var(--ink);margin-top:2px;}
  .desk-meta{font-size:11.5px;color:var(--grey-2);font-weight:600;margin-top:4px;}
  .desk-state{font-size:12px;font-weight:700;white-space:nowrap;color:var(--grey-1);}
  .desk-card.run .desk-state{color:var(--accent);}
  .desk-nums{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:16px 0;flex-wrap:wrap;}
  .desk-clock{font-size:44px;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1;}
  .desk-amount{font-size:30px;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums;}
  .desk-btns{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;}
  .desk-row{padding-left:18px;padding-right:18px;}
  .desk-row small{color:var(--grey-2);font-weight:600;}
  /* Mobile : champs empilés, boutons du chrono sur deux lignes (le bouton rond de
     la messagerie, fixé en bas à droite, ne vient plus recouvrir « Annuler »). */
  @media(max-width:640px){
    .desk-new .g3{grid-template-columns:1fr;gap:0;}
    .desk-btns{grid-template-columns:1fr 1fr;}
    .desk-btns .btn-danger{grid-column:1 / -1;}
    #view-desk{padding-bottom:70px;}
  }
  .rc-addpart{display:flex;gap:8px;margin-top:8px;}
  .rc-addpart input{flex:1;min-width:0;border:1px solid var(--line-2);border-radius:9px;padding:9px 11px;font:inherit;font-size:13px;background:var(--card);color:inherit;}
  .step{display:flex;align-items:center;gap:11px;margin:5px 0;}
  .step .sd{width:10px;height:10px;border-radius:50%;flex-shrink:0;}
  .step .stx{font-size:13px;}
  .step.done .stx{font-weight:600;}
  .step.todo .stx{color:var(--grey-2);}
  /* Notes atelier : fil d'événements + zone de saisie. */
  .ev{padding:9px 11px;border-radius:9px;background:var(--fill);margin-bottom:6px;border:1px solid var(--line);}
  .ev-step{background:transparent;border-color:transparent;padding:5px 0;margin-bottom:2px;}
  .ev-alert{background:#fff4ec;border-color:#ffd6bf;}
  .ev-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;}
  .ev-tx{font-size:13px;line-height:1.45;white-space:pre-wrap;}
  .ev-step .ev-tx{font-size:12.5px;color:var(--grey-1);font-weight:600;}
  .ev-meta{font-size:11px;color:var(--grey-2);font-weight:600;margin-top:4px;}
  /* ---- Correction d'une note ----
     « Modifier » reste effacé jusqu'au survol de la note (sur tactile il est
     toujours là, faute de survol) : le journal se lit d'abord, il se corrige
     ensuite. La mention « modifié » est en revanche visible par tous, toujours. */
  .ev-editbtn{border:none;background:transparent;color:var(--grey-2);font:inherit;font-size:11px;
              font-weight:700;cursor:pointer;padding:2px 4px;border-radius:6px;flex-shrink:0;opacity:0;
              transition:opacity .15s,color .15s,background .15s;}
  @media(hover:hover){ .ev:hover .ev-editbtn{opacity:1;} .ev-editbtn:hover{background:var(--card);color:var(--ink);} }
  @media(hover:none){ .ev-editbtn{opacity:.75;} }
  .ev-editbtn:focus-visible{opacity:1;outline:2px solid var(--accent);outline-offset:1px;}
  .ev-edited{margin-left:6px;padding:1px 6px;border-radius:980px;background:var(--line);color:var(--grey-1);
             font-size:10px;font-weight:700;font-style:italic;}
  .ev-edit{margin-top:8px;}
  .ev-edit-ta{width:100%;font:inherit;font-size:13px;line-height:1.45;color:var(--ink);background:var(--card);
              border:1px solid var(--line-2);border-radius:9px;padding:9px 10px;resize:vertical;min-height:64px;}
  .ev-edit-ta:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:transparent;}
  .ev-edit-bar{display:flex;justify-content:flex-end;gap:8px;margin-top:7px;}
  .ev-edit-bar .btn{padding:6px 14px;font-size:12.5px;}
  .ev-flag{font-size:11px;font-weight:800;color:#b23b00;white-space:nowrap;}
  .ev-ack{font-size:11px;font-weight:700;color:var(--green);white-space:nowrap;}
  .ev-ackbtn{font-size:11px;font-weight:700;color:#fff;background:var(--green);border:0;border-radius:980px;padding:4px 10px;cursor:pointer;white-space:nowrap;}
  .ev-ackbtn:hover{filter:brightness(.95);}
  .note-compose{margin-top:9px;}
  .note-compose textarea{width:100%;border:1px solid var(--line-2);border-radius:9px;padding:9px 11px;font:inherit;font-size:13px;resize:vertical;background:var(--card);color:inherit;box-sizing:border-box;}
  .note-compose-b{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:7px;flex-wrap:wrap;}
  .step .sx{margin-left:auto;font-size:11px;color:var(--grey-2);font-weight:600;}
  /* Le pied de page revient à la ligne dès qu'il manque de place. Sans cela, le
     dernier bouton (« Étape suivante », le plus utile) sortait du tiroir : le pied
     mesure toujours 438 px quelle que soit la taille de l'écran, une bascule au
     nombre de pixels de l'ÉCRAN ne pouvait donc pas décider à sa place. */
  .drw-f{padding:16px 24px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:9px;}
  .drw-f .btn{flex:1;justify-content:center;}
  /* « Étape précédente » et « Étape suivante » : même dessin, couleur différente
     (grise pour reculer, verte pour avancer). L'action contextuelle, à gauche,
     se réduit à son icône. */
  .drw-f .btn.drw-ico{flex:0 0 auto;min-width:46px;padding-left:14px;padding-right:14px;font-size:17px;}
  .drw-f .btn.drw-prev:disabled{opacity:.45;cursor:default;}
  /* « Annuler la commande » ne s'étire pas comme les boutons d'étape : c'est une
     sortie de route, elle reste discrète à côté du chemin normal. */
  .drw-f .btn.drw-cancel{flex:0 0 auto;font-size:13px;padding-left:15px;padding-right:15px;}
  /* Coupure explicite : les actions secondaires (appeler, annuler) sur une ligne,
     le chemin des étapes sur la suivante. Le rendu ne dépend alors plus de la
     longueur des libellés — « Étape suivante » est à sa place partout. */
  /* Menu « ⋯ » : les actions rares et risquées (annuler) sortent du chemin du doigt. */
  .drw-more{position:relative;display:flex;}
  .drw-menu{display:none;position:absolute;left:0;bottom:calc(100% + 6px);z-index:5;min-width:210px;padding:6px;background:var(--card);border:1px solid var(--line-2);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.14);}
  .drw-menu.open{display:block;}
  .drw-menu button{display:block;width:100%;text-align:left;font:inherit;font-size:14px;font-weight:600;padding:10px 12px;border:0;border-radius:8px;background:none;color:var(--ink);cursor:pointer;}
  .drw-menu button:hover{background:var(--fill);}
  .drw-menu .drw-menu-danger{color:#c0341d;}
  .drw-f-break{flex:0 0 100%;height:0;margin:-4px 0;}
  .drw-ro{padding:12px 24px;background:#f0ecff;font-size:12px;color:#5b35d6;font-weight:600;text-align:center;}
  /* Téléphone : plein écran plutôt qu'une carte flottante — chaque pixel compte. */
  @media(max-width:600px){
    .drw{width:100vw;height:100%;max-height:none;border-radius:0;}
  }
  .modal-ov{position:fixed;inset:0;background:rgba(0,0,0,.34);opacity:0;pointer-events:none;transition:opacity .25s;z-index:110;backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:24px;}
  .modal-ov.show{opacity:1;pointer-events:auto;}
  .modal{background:var(--card);border-radius:22px;width:540px;max-width:100%;box-shadow:var(--shadow-lg);overflow:hidden;transform:scale(.94);transition:transform .28s cubic-bezier(.16,1,.3,1);max-height:90vh;display:flex;flex-direction:column;}
  .modal-ov.show .modal{transform:scale(1);}
  .modal-h{padding:24px 26px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-start;}
  .modal-h h3{font-size:20px;font-weight:800;letter-spacing:-.02em;}
  .modal-h p{font-size:13px;color:var(--grey-1);margin-top:3px;font-weight:500;}
  .modal-b{padding:22px 26px;overflow-y:auto;}
  .modal-f{padding:18px 26px;background:var(--fill);display:flex;justify-content:space-between;align-items:center;gap:12px;}
  .opt-label{font-size:12.5px;font-weight:700;color:var(--grey-1);margin-bottom:9px;}
  /* Case à cocher de formulaire (première du projet : « Urgent » sur À commander). */
  .chk{display:flex;align-items:center;gap:9px;font-size:13.5px;font-weight:600;color:var(--ink);cursor:pointer;user-select:none;}
  .chk input{width:17px;height:17px;accent-color:var(--accent);cursor:pointer;flex-shrink:0;}
  /* Ligne de saisie d'une pièce à commander (modale « Attente pièce »). */
  .part-row{display:grid;grid-template-columns:1fr 84px auto;gap:9px;align-items:center;margin-bottom:9px;}
  .part-row input[type=text],.part-row .pr-label,.part-row .pr-qty{font:inherit;font-size:14px;color:var(--ink);padding:10px 12px;border:1px solid var(--line-2);border-radius:11px;background:var(--card);outline:none;width:100%;transition:border-color .14s,box-shadow .14s;}
  .part-row .pr-label:focus,.part-row .pr-qty:focus{border-color:var(--accent);box-shadow:0 0 0 3.5px var(--accent-soft);}
  @media(max-width:480px){ .part-row{grid-template-columns:1fr 70px auto;gap:6px;} }
  .month-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:20px;}
  .month-opt{border:1.6px solid var(--line-2);border-radius:11px;padding:11px 8px;text-align:center;cursor:pointer;font-size:13px;font-weight:600;transition:all .13s;}
  .month-opt:hover{border-color:var(--grey-2);}
  .month-opt.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-dk);}
  .fmt-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:20px;}
  .fmt-opt{border:1.6px solid var(--line-2);border-radius:13px;padding:15px;cursor:pointer;display:flex;align-items:center;gap:12px;transition:all .13s;}
  .fmt-opt:hover{border-color:var(--grey-2);}
  .fmt-opt.on{border-color:var(--accent);background:var(--accent-soft);}
  .fmt-ic{width:38px;height:38px;border-radius:10px;flex-shrink:0;color:#fff;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:800;}
  .fmt-tx .ft{font-size:13.5px;font-weight:700;}
  .fmt-tx .fd{font-size:11.5px;color:var(--grey-1);font-weight:500;margin-top:1px;}
  .preview{background:var(--fill);border-radius:12px;padding:14px 16px;}
  .preview-h{font-size:11.5px;font-weight:700;color:var(--grey-2);text-transform:uppercase;letter-spacing:.04em;margin-bottom:10px;}
  .preview-row{display:flex;justify-content:space-between;font-size:12.5px;padding:5px 0;font-weight:500;}
  .preview-row.tot{border-top:1px solid var(--line-2);margin-top:6px;padding-top:9px;font-weight:700;}
  .preview-row .pv{color:var(--grey-1);}
  .toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%) translateY(90px);background:var(--ink);color:#fff;padding:13px 22px;border-radius:980px;font-size:13.5px;font-weight:600;z-index:120;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:8px;transition:transform .34s cubic-bezier(.32,.72,.3,1);}
  .toast.show{transform:translateX(-50%) translateY(0);}
  .toast .tk{color:#5edb84;}
