/*
  Écran « Ma semaine » (E-03) et grille hebdomadaire, piste A « Carnet de chantier ».
  Bandeau des jours sur l'encre, tickets chantier à languette de type, gros compteurs ronds, pied encre.
*/
.semaine-entete { display: flex; align-items: center; justify-content: space-between; gap: var(--espace-3); margin-bottom: var(--espace-2); }
.semaine-entete h1 { margin: 0; text-align: center; font-size: 1.5rem; }
.semaine-entete small { display: block; font-family: var(--police-base); font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--couleur-texte-doux); font-size: var(--taille-petite); }
.semaine-nav { display: inline-flex; align-items: center; justify-content: center; min-width: var(--cible-min); min-height: var(--cible-min); border: 2px solid var(--couleur-bleu-action); border-radius: var(--rayon-controle); font-size: 1.3rem; text-decoration: none; color: var(--couleur-bleu-action); }

/* Bandeau des jours : encre, jour actif en blanc souligné du rouge du logo */
.jours { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; background: var(--fond-sombre); padding: var(--espace-2); border-radius: var(--rayon-carte); margin: var(--espace-3) 0; }
.jour-onglet { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: var(--cible-mobile); padding: 6px 0; border-radius: var(--rayon-controle); color: var(--texte-sur-sombre); text-decoration: none; border-bottom: 4px solid transparent; }
.jour-onglet__nom { font-size: .7rem; text-transform: uppercase; letter-spacing: .08em; opacity: .85; }
.jour-onglet__date { font-family: var(--police-titre); font-weight: 700; font-size: 1.5rem; line-height: 1.1; }
.jour-onglet__total { font-size: .72rem; opacity: .9; }
.jour-onglet--actif { background: var(--couleur-blanc); color: var(--carnet-encre); border-bottom-color: var(--couleur-rouge-logo); }
.jour-onglet--actif .jour-onglet__nom, .jour-onglet--actif .jour-onglet__total { opacity: 1; font-weight: 600; }
.jour-onglet--debut-partie { border-left: 2px dashed var(--carnet-jaune); border-radius: 0 var(--rayon-controle) var(--rayon-controle) 0; }
.jour-titre { display: flex; justify-content: space-between; align-items: baseline; gap: var(--espace-3); }
.jour-titre h2 { margin: 0; font-size: 1.5rem; }
.jour-titre__total { font-family: var(--police-titre); font-weight: 700; font-size: 1.5rem; color: var(--couleur-bleu-action); }
.jour__vide { color: var(--couleur-texte-doux); margin: var(--espace-3) 0; }

/* Ticket chantier */
.ticket { display: flex; align-items: stretch; margin: var(--espace-3) 0; background: var(--couleur-blanc); border-radius: 12px; box-shadow: 0 2px 0 var(--carnet-ombre); overflow: hidden; }
.ticket__languette { flex: 0 0 26px; display: flex; align-items: center; justify-content: center; background: var(--couleur-bleu-action); color: var(--texte-sur-sombre); font-family: var(--police-titre); font-weight: 700; font-size: .8rem; letter-spacing: .1em; writing-mode: vertical-rl; transform: rotate(180deg); }
.ticket--AER .ticket__languette { background: var(--couleur-bleu-logo); }
.ticket--AUTRE .ticket__languette, .ticket--special .ticket__languette { background: var(--carnet-ocre); }
.ticket__corps { flex: 1; min-width: 0; padding: var(--espace-3) var(--espace-4); }
.ticket__titre { display: flex; justify-content: space-between; align-items: baseline; gap: var(--espace-2); flex-wrap: wrap; }
.ticket__numero { font-family: var(--police-titre); font-weight: 700; font-size: 1.35rem; letter-spacing: .02em; }
.ticket__nom { font-size: var(--taille-petite); color: var(--couleur-texte-doux); }
.ticket__commentaire { display: block; font-size: var(--taille-petite); color: var(--couleur-texte-doux); font-style: italic; }
.compteurs { display: grid; grid-template-columns: 1fr; gap: var(--espace-2); margin-top: var(--espace-3); }
.compteur { display: grid; grid-template-columns: 2.6em auto minmax(4.5em, 1fr) auto; align-items: center; gap: var(--espace-2); background: var(--carnet-papier); border-radius: 10px; padding: 6px 8px; }
.compteur__libelle { font-size: .7rem; text-transform: uppercase; letter-spacing: .1em; color: var(--couleur-texte-doux); font-weight: 600; }
.compteur__champ { text-align: center; padding: 0 var(--espace-1); font-family: var(--police-titre); font-weight: 700; font-size: 1.5rem; border: 0; background: transparent; min-height: var(--cible-min); }
.compteur__champ:focus-visible { outline: var(--epaisseur-focus) solid var(--couleur-bleu-action); border-radius: 6px; }
.compteur__lecture { grid-column: span 3; font-family: var(--police-titre); font-weight: 700; font-size: 1.4rem; }
.bouton-rond { width: var(--cible-min); height: var(--cible-min); border-radius: 50%; border: 2px solid var(--couleur-bleu-action); background: var(--couleur-blanc); color: var(--couleur-bleu-action); font-size: 1.5rem; font-weight: 700; cursor: pointer; line-height: 1; }
.compteur__plus .bouton-rond { background: var(--couleur-bleu-action); color: var(--texte-sur-sombre); }
.compteur--nuit .bouton-rond { border-color: var(--carnet-encre); color: var(--carnet-encre); }
.compteur--nuit .compteur__plus .bouton-rond { background: var(--fond-sombre); color: var(--texte-sur-sombre); }
.ticket__options { display: flex; justify-content: space-between; align-items: center; gap: var(--espace-3); margin-top: var(--espace-2); flex-wrap: wrap; }
.bouton--petit { min-height: var(--cible-min); padding: 0 var(--espace-3); font-size: var(--taille-petite); }
@media (min-width: 821px) { .compteurs { grid-template-columns: 1fr 1fr; } }

/* Ajout de chantier */
.ajout-chantier { margin: var(--espace-4) 0; }
.bouton-ajout { display: flex; align-items: center; justify-content: center; gap: var(--espace-2); width: 100%; min-height: var(--cible-mobile); border: 2px dashed var(--couleur-bleu-action); border-radius: 12px; background: transparent; color: var(--couleur-bleu-action); font-family: var(--police-titre); font-weight: 700; font-size: 1.2rem; text-transform: uppercase; letter-spacing: .04em; cursor: pointer; }
.ajout-chantier[open] .bouton-ajout { border-style: solid; background: var(--couleur-blanc); }
.ajout-chantier summary { list-style: none; }
.ajout-chantier summary::-webkit-details-marker { display: none; }
.ajout-chantier__corps { margin-top: var(--espace-3); padding: var(--espace-4); background: var(--couleur-bleu-glacier); border-radius: var(--rayon-carte); }
.resultats { list-style: none; margin: var(--espace-2) 0 0; padding: 0; display: grid; gap: var(--espace-2); }
.resultats__titre { margin: var(--espace-2) 0 0; font-size: var(--taille-petite); color: var(--couleur-texte-doux); }
.resultat { display: block; width: 100%; min-height: var(--cible-min); padding: var(--espace-2) var(--espace-3); text-align: left; font: inherit; color: var(--couleur-texte); background: var(--couleur-blanc); border: var(--epaisseur-filet) solid var(--couleur-bordure); border-left: 6px solid var(--couleur-bleu-action); border-radius: var(--rayon-controle); cursor: pointer; }
.resultat strong { font-family: var(--police-titre); font-size: 1.15rem; letter-spacing: .02em; }
.resultat__nom, .resultat__ancien { display: block; font-size: var(--taille-petite); color: var(--couleur-texte-doux); }
.ajout-chantier__autres { display: flex; flex-wrap: wrap; gap: var(--espace-3); margin-top: var(--espace-3); }
.ajout-chantier__autres form, .a-identifier { flex: 1 1 200px; }
.a-identifier summary { list-style: none; display: inline-flex; align-items: center; justify-content: center; width: 100%; cursor: pointer; }
.a-identifier form { margin-top: var(--espace-3); }
.a-identifier .bouton { width: 100%; }

/* La journée : quatre cartes */
.journee { margin-top: var(--espace-4); padding: var(--espace-3) var(--espace-4) var(--espace-4); background: var(--couleur-blanc); border-radius: 12px; box-shadow: 0 2px 0 var(--carnet-ombre); }
.journee__grille { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--espace-2); margin-top: var(--espace-2); }
.journee__carte { display: flex; flex-direction: column; justify-content: center; gap: 4px; min-height: 64px; padding: var(--espace-2) var(--espace-3); border: 2px solid var(--couleur-bordure); border-radius: 10px; background: var(--couleur-blanc); cursor: pointer; }
.journee__carte:has(:checked), .journee__carte:has(option:checked:not([value=""])), .journee__carte:has(option:checked:not([value="0"])):not(.journee__carte--absence) { border-color: var(--couleur-bleu-action); background: var(--couleur-bleu-clair); }
.journee__carte--absence:has(option:checked:not([value=""])) { border-color: var(--carnet-ocre); background: var(--carnet-ocre-clair); }
.journee__carte .journee__libelle { font-size: .7rem; text-transform: uppercase; letter-spacing: .1em; color: var(--couleur-texte-doux); font-weight: 600; }
.journee__carte select { border: 0; background: transparent; font: inherit; font-family: var(--police-titre); font-weight: 700; font-size: 1.2rem; padding: 0; min-height: 32px; width: 100%; }
.journee__carte input[type="checkbox"] { width: 24px; height: 24px; accent-color: var(--couleur-bleu-action); }
.journee__carte .journee__valeur { display: flex; align-items: center; gap: var(--espace-2); font-family: var(--police-titre); font-weight: 700; font-size: 1.2rem; }
@media (min-width: 821px) { .journee__grille { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* Pied de semaine : encre, bouton Rendre rouge */
.pied-semaine { margin-top: var(--espace-4); padding: var(--espace-4); background: var(--fond-sombre); color: var(--texte-sur-sombre); border-radius: var(--rayon-carte); }
.pied-semaine__partie { margin: 0 0 var(--espace-2); font-size: .75rem; text-transform: uppercase; letter-spacing: .08em; opacity: .8; }
.pied-semaine dl { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--espace-3); margin: 0 0 var(--espace-3); }
.pied-semaine dt { font-size: var(--taille-petite); opacity: .8; }
.pied-semaine dd { margin: 0; font-family: var(--police-titre); font-weight: 700; font-size: 1.6rem; line-height: 1.1; }
.pied-semaine__statut { margin: 0 0 var(--espace-2); font-size: var(--taille-petite); opacity: .9; }
.pied-semaine .bouton-encre { width: 100%; margin-top: var(--espace-2); }
@media (min-width: 821px) { .pied-semaine dl { grid-template-columns: repeat(6, minmax(0, 1fr)); } .pied-semaine .bouton-encre { width: auto; margin-right: var(--espace-3); } }

/* Grille hebdomadaire (PC : saisie directe, D-N) */
.grille-semaine { margin-top: var(--espace-4); }
.grille-semaine summary { cursor: pointer; font-family: var(--police-titre); font-weight: 700; text-transform: uppercase; letter-spacing: .03em; font-size: 1.1rem; color: var(--couleur-bleu-action); min-height: var(--cible-min); display: flex; align-items: center; }
.grille-semaine__defilement { overflow-x: auto; background: var(--couleur-blanc); border-radius: var(--rayon-carte); box-shadow: 0 2px 0 var(--carnet-ombre); }
.grille { border-collapse: collapse; width: 100%; min-width: 900px; font-size: var(--taille-petite); }
.grille th, .grille td { border-bottom: var(--epaisseur-filet) solid var(--carnet-ombre); padding: 4px 3px; white-space: nowrap; text-align: center; }
.grille thead th { background: var(--fond-sombre); color: var(--texte-sur-sombre); font-family: var(--police-titre); font-size: 1rem; letter-spacing: .04em; text-transform: uppercase; padding: var(--espace-2) 4px; }
.grille thead th.nuit, .grille td.nuit { background: var(--carnet-papier); }
.grille thead th.nuit { background: var(--fond-sombre); opacity: .75; }
.grille th.debut-partie, .grille td.debut-partie { border-left: 3px solid var(--carnet-jaune); }
.grille thead th.debut-partie { color: var(--carnet-jaune); }
.grille tbody th { text-align: left; background: var(--carnet-papier-fonce); color: var(--carnet-encre); font-weight: 600; padding: var(--espace-2) var(--espace-3); }
.grille td.chantier { text-align: left; padding: var(--espace-2) var(--espace-3); border-left: 8px solid var(--couleur-bleu-action); min-width: 90px; white-space: normal; }
.grille tr.type-AER td.chantier { border-left-color: var(--couleur-bleu-logo); }
.grille tr.type-AUTRE td.chantier, .grille tr.special td.chantier { border-left-color: var(--carnet-ocre); }
.grille td.chantier .numero { font-family: var(--police-titre); font-weight: 700; font-size: 1.15rem; }
.grille td.chantier .nom { display: block; color: var(--couleur-texte-doux); font-size: .8rem; }
.grille__saisie { width: 3.6em; min-height: 40px; text-align: center; font: inherit; font-weight: 600; border: var(--epaisseur-filet) solid var(--couleur-bordure); border-radius: 6px; background: var(--couleur-blanc); }
.grille__saisie:focus-visible { outline: var(--epaisseur-focus) solid var(--couleur-bleu-action); }
.grille__saisie.rempli { border-color: var(--couleur-bleu-action); background: var(--couleur-bleu-clair); }
.grille__select { min-height: 36px; font: inherit; font-size: .85rem; border: var(--epaisseur-filet) solid var(--couleur-bordure); border-radius: 6px; background: var(--couleur-blanc); max-width: 7em; }
.grille input[type="checkbox"] { width: 22px; height: 22px; accent-color: var(--couleur-bleu-action); }
.grille__total td, .grille__total th { background: var(--carnet-papier); font-weight: 700; border-bottom: 2px solid var(--carnet-encre); }
.grille__h { font-family: var(--police-titre); font-weight: 700; font-size: 1.1rem; }
.grille__lecture { color: var(--carnet-encre); font-weight: 600; }
.grille__vide { color: var(--couleur-bordure); }

/* D-AG : chantiers repliables, GD par ligne, commentaire, journée validée */
.tickets-actions { text-align: right; font-size: var(--taille-petite); margin-top: var(--espace-2); }
.lien-bouton { background: none; border: 0; padding: var(--espace-1); color: var(--couleur-bleu-action); font: inherit; text-decoration: underline; cursor: pointer; min-height: var(--cible-min); }
details.ticket__corps > summary { list-style: none; cursor: pointer; min-height: var(--cible-min); align-items: center; }
details.ticket__corps > summary::-webkit-details-marker { display: none; }
details.ticket__corps > summary::after { content: "▾"; margin-left: auto; font-size: 1.1rem; color: var(--couleur-texte-doux); transition: transform .15s; }
details.ticket__corps[open] > summary::after { transform: rotate(180deg); }
.ticket__resume { font-family: var(--police-titre); font-weight: 600; color: var(--couleur-bleu-action); }
details.ticket__corps:not([open]) { padding-top: var(--espace-2); padding-bottom: var(--espace-2); }
.ticket__gd { display: flex; align-items: center; gap: var(--espace-2); font-size: var(--taille-petite); font-weight: 600; }
.champ--petit { width: auto; min-height: var(--cible-min); padding: 0 var(--espace-2); font-size: var(--taille-petite); }
.ticket__commentaire-form { margin-top: var(--espace-3); }
.ticket__commentaire-form textarea { width: 100%; box-sizing: border-box; font-size: var(--taille-petite); }
.valider-journee { margin-top: var(--espace-4); }
.valider-journee .bouton-encre { width: 100%; min-height: var(--cible-mobile); box-sizing: border-box; }
.jour-onglet__valide { color: var(--couleur-succes); font-weight: 700; }
.jour-onglet:not(.jour-onglet--actif) .jour-onglet__valide { color: var(--carnet-jaune, #F2C94C); }
.grille__commentaire { cursor: help; font-size: .75rem; }
/* Numéro de chantier seul, le nom s'ouvre au toucher (écran « Rendre » et grille) */
.chantier-repli { display: inline; }
.chantier-repli > summary { list-style: none; cursor: pointer; font-weight: 700; text-decoration: underline dotted; white-space: nowrap; }
.chantier-repli > summary::-webkit-details-marker { display: none; }
.chantier-repli[open] > summary { margin-bottom: 2px; }
.chantier-repli__nom { display: block; font-size: .78rem; color: var(--couleur-texte-doux); white-space: normal; max-width: 14em; }

/* D-AH : état de la journée sous le titre, zone conseillée, semaine incomplète, ligne « Journée » de la grille */
.jour-etat { margin: var(--espace-1) 0 var(--espace-2); font-weight: 600; font-size: var(--taille-petite); }
.jour-etat--validee { color: var(--couleur-succes); }
.jour-etat--a-valider { color: var(--carnet-ocre-texte); }
.journee__conseil { font-size: .75rem; color: var(--couleur-texte-doux); }
.pied-semaine__incomplete { color: var(--couleur-texte); margin: var(--espace-2) 0; text-align: left; }
.pied-semaine__incomplete .ecarts { margin: var(--espace-1) 0 0; }
.grille__valide { color: var(--couleur-succes); font-weight: 700; }
.grille__a-valider { color: var(--carnet-ocre-texte); font-size: .75rem; }
.grille__bouton-jour { font-size: .75rem; padding: 2px 6px; min-height: 0; }
.grille form.en-ligne { display: inline; }

/* ---------- D-AJ (retours du 2026-11-03) : place gagnée sur téléphone, fériés grisés, partage de journée ---------- */
@media (max-width: 820px) {
  .journee { padding: var(--espace-2) var(--espace-3) var(--espace-3); margin-top: var(--espace-3); }
  .journee__grille { gap: 6px; margin-top: 4px; }
  .journee__carte { min-height: 0; padding: 4px var(--espace-2); gap: 0; border-width: 1px; border-radius: 8px; }
  .journee__carte .journee__libelle { font-size: .62rem; }
  .journee__carte select, .journee__carte .journee__valeur { font-size: 1rem; min-height: 28px; }
  .journee__carte input[type="checkbox"] { width: 20px; height: 20px; }
  .grille td.chantier { padding: 4px 6px; border-left-width: 4px; min-width: 0; }
  .grille td.chantier .numero, .chantier-repli > summary { font-size: .9rem; }
  .chantier-repli__nom { max-width: 9em; }
}
.grille th.ferie, .grille td.ferie { background-image: repeating-linear-gradient(135deg, transparent 0 6px, rgba(120, 130, 140, .14) 6px 12px); }
.grille thead th.ferie { opacity: .8; }
.grille__ferie { display: block; font-size: .65rem; letter-spacing: .08em; opacity: .85; }
.jour-onglet--ferie:not(.jour-onglet--actif) { opacity: .6; background-image: repeating-linear-gradient(135deg, transparent 0 6px, rgba(255, 255, 255, .08) 6px 12px); }
.partage-recu { margin: var(--espace-2) 0; padding: var(--espace-3); border-radius: 10px; border-left: 6px solid var(--couleur-bleu-action); background: var(--couleur-bleu-glacier); }
.partage-recu p { margin: 0 0 var(--espace-2); }
.partage-recu__chantier { font-weight: 600; white-space: nowrap; }
.partage-recu__boutons { display: flex; flex-wrap: wrap; gap: var(--espace-2); }
.partager { margin: var(--espace-2) 0; }
.partager > summary { list-style: none; display: inline-flex; cursor: pointer; }
.partager > summary::-webkit-details-marker { display: none; }
.partager__corps { margin-top: var(--espace-2); padding: var(--espace-3); background: var(--couleur-blanc); border-radius: 10px; display: grid; gap: var(--espace-2); }
.partager__liste { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; max-height: 16rem; overflow-y: auto; }
.partager__liste li .case { padding: 4px 0; }
/* D-AJ (suite) : partage sur une ligne */
.partager > summary.partager__bouton { display: inline-flex; align-items: center; gap: .3em; white-space: nowrap; line-height: 1.2; }

/* D-AJ : ligne « Épargne » en fin de grille (validateur) : discrète, une case et un petit OK. */
.grille__epargne td { background: var(--couleur-neutre-clair); }
.grille__epargne .numero { color: var(--couleur-texte-doux); font-weight: 600; }
.grille__epargne-form { display: inline-flex; gap: 4px; align-items: center; }
.grille__ok { min-height: 40px; padding: 0 10px; font-size: var(--taille-petite); }

/* D-AJ : carte d'un chantier dépliée beaucoup plus basse : nom + « Retirer » en haut, Jour et Nuit côte à côte,
   grand déplacement par sa lettre, commentaire sur une ligne (il s'agrandit quand on écrit). */
.ticket__entete { display: flex; align-items: center; justify-content: space-between; gap: var(--espace-2); }
.ticket__entete form { margin: 0; flex: 0 0 auto; }
.ticket__retirer { min-height: 32px; padding: 0 10px; font-size: .8rem; }
.ticket__gd-choix { width: auto; min-width: 3.6em; text-align: center; font-weight: 700; }
.ticket__commentaire-form { display: flex; align-items: center; gap: var(--espace-2); margin-top: 6px; }
.ticket__commentaire-form .champ-libelle { margin: 0; font-size: var(--taille-petite); font-weight: 600; flex: 0 0 auto; }
.ticket__commentaire-form textarea { flex: 1 1 auto; min-height: 38px; height: 38px; padding: 6px 10px; resize: none; transition: height .15s; }
.ticket__commentaire-form textarea:focus, .ticket__commentaire-form textarea:not(:placeholder-shown) { height: 4.2em; }
.ticket__options { margin-top: 6px; }
@media (max-width: 820px) {
  .ticket__corps { padding: 6px 10px 8px; }
  .compteurs { grid-template-columns: 1fr 1fr; gap: 6px; margin-top: 6px; }
  .compteur { grid-template-columns: auto minmax(0, 1fr) auto; grid-template-areas: "lib lib lib" "moins val plus"; gap: 0 4px; padding: 4px 6px; }
  .compteur__libelle { grid-area: lib; font-size: .6rem; }
  .compteur__moins { grid-area: moins; }
  .compteur__valeur { grid-area: val; min-width: 0; }
  .compteur__plus { grid-area: plus; }
  .compteur .bouton-rond { width: 36px; height: 36px; font-size: 1.1rem; }
  .compteur__champ { width: 100%; min-width: 0; min-height: 36px; font-size: 1.25rem; padding: 0; }
  .compteur__lecture { grid-area: val; grid-column: 1 / -1; font-size: 1.2rem; }
}
.journee__conseil { white-space: nowrap; }

/* D-AJ : « La journée » en liste : une ligne par élément (zone, repas, astreinte, absence), libellé à gauche,
   choix ou case à cocher à droite ; plus de pavés en carré. */
.journee__grille, .journee__grille { display: grid; grid-template-columns: minmax(0, 1fr); gap: 6px; max-width: 40rem; }
@media (min-width: 821px) { .journee__grille { grid-template-columns: minmax(0, 1fr); } }
.journee__carte { display: grid; grid-template-columns: 6.5em minmax(0, 1fr); grid-template-areas: "lib val" ". conseil"; align-items: center; column-gap: var(--espace-2); row-gap: 0; min-height: 0; padding: 4px var(--espace-3); border-width: 1px; border-radius: 8px; }
.journee__carte .journee__libelle { grid-area: lib; font-size: .72rem; }
.journee__carte select, .journee__carte .journee__valeur { grid-area: val; font-size: 1.05rem; min-height: 36px; }
.journee__carte .journee__conseil { grid-area: conseil; margin-top: -4px; }
.journee__carte input[type="checkbox"] { width: 22px; height: 22px; }
.journee__carte .journee__conseil { justify-self: start; text-align: left; }

/* D-AM : « La journée » regroupe deux formulaires (indicateurs, grand déplacement) dans une seule carte. */
.journee__form { margin: 0; }
.journee__form + .journee__form .journee__grille { margin-top: 6px; }
.journee__carte--gd:has(option:checked:not([value=""])) { border-color: var(--couleur-bleu-action); background: var(--couleur-bleu-clair); }
.journee__carte--gd .journee__libelle { line-height: 1.2; }
