/* SEYS RAMONAGE — Gestion. Charte : charbon / brique / braise, Fraunces + Work Sans (polices embarquées, licence OFL). */
@font-face { font-family: 'Fraunces'; src: url('polices/fraunces.woff2') format('woff2'); font-weight: 100 900; font-display: swap; }
@font-face { font-family: 'Work Sans'; src: url('polices/work-sans.woff2') format('woff2'); font-weight: 100 900; font-display: swap; }

/* Couleurs claires (aspect d'origine). Elles valent aussi pour les documents A4, toujours sur fond blanc. */
:root, .a4 {
  --charbon: #25252a; --charbon-2: #33333a; --charbon-3: #4a4a52; --bande: #25252a; --bouton-sombre: #25252a; --bouton-sombre-survol: #33333a;
  --brique: #a2432c; --brique-fonce: #7d311f; --braise: #e2702a; --braise-clair: #fbe6d4; --brique-voile: #fdf3ee; --braise-voile: #fbf3ea;
  --creme: #f6f1e9; --papier: #fffdf9; --blanc: #fff; --trait: #e3dacd; --trait-fort: #cfc3b2; --voile: #ece6dc; --zone: #d9d2c6;
  --texte: #25252a; --texte-2: #4a4a52; --gris: #6a655e; --lien: #a2432c; --lien-fort: #7d311f; --sur-vif: #fff;
  --vert: #27704a; --vert-clair: #e2f1e8; --vert-bord: #a9d5bb; --vert-texte: #164a30;
  --rouge: #b0271f; --rouge-clair: #fbe5e2; --rouge-bord: #e9b2ad; --rouge-texte: #7a1711;
  --ambre: #8a590b; --ambre-clair: #fbefd3; --ambre-bord: #e7cf91; --ambre-texte: #65400a;
  --bleu: #2d5d86; --bleu-clair: #e2edf6; --bleu-bord: #b4cfe6; --bleu-texte: #1c4263;
  --ombre: 0 1px 2px rgba(37,37,42,.06), 0 6px 18px rgba(37,37,42,.06);
  color-scheme: light;
  --rayon: 12px;
  --titre: 'Fraunces', Georgia, 'Times New Roman', serif; --corps: 'Work Sans', system-ui, -apple-system, 'Segoe UI', Arial, sans-serif;
}
/* Apparence sombre : choisie (« sombre ») ou suivie depuis l'appareil (« auto »). Jamais à l'impression. */
@media screen {
  :root[data-theme="sombre"] {
  --charbon: #121215; --charbon-2: #34343b; --charbon-3: #50505a; --bande: #34343b; --bouton-sombre: #50505a; --bouton-sombre-survol: #5e5e69;
  --brique: #a2432c; --brique-fonce: #8a3823; --braise: #e2702a; --braise-clair: #3d2a1c; --brique-voile: #3a2620; --braise-voile: #33281f;
  --creme: #1b1b1f; --papier: #25252a; --blanc: #2e2e34; --trait: #3a3a42; --trait-fort: #55555f; --voile: #3a3a42; --zone: #0f0f12;
  --texte: #ece7df; --texte-2: #cbc5bc; --gris: #b3ada4; --lien: #f0977b; --lien-fort: #ffb9a3; --sur-vif: #16161a;
  --vert: #6fcf9a; --vert-clair: #1c3a2b; --vert-bord: #2f6447; --vert-texte: #bfe8d0;
  --rouge: #f08a82; --rouge-clair: #44201d; --rouge-bord: #7a3833; --rouge-texte: #f6c9c5;
  --ambre: #e6b45c; --ambre-clair: #3d3016; --ambre-bord: #6b5524; --ambre-texte: #f1dba8;
  --bleu: #8dbde6; --bleu-clair: #1c3145; --bleu-bord: #35597a; --bleu-texte: #c7dff3;
  --ombre: 0 1px 2px rgba(0,0,0,.4), 0 6px 18px rgba(0,0,0,.35);
  color-scheme: dark;
  }
}
@media screen and (prefers-color-scheme: dark) {
  :root[data-theme="auto"] {
  --charbon: #121215; --charbon-2: #34343b; --charbon-3: #50505a; --bande: #34343b; --bouton-sombre: #50505a; --bouton-sombre-survol: #5e5e69;
  --brique: #a2432c; --brique-fonce: #8a3823; --braise: #e2702a; --braise-clair: #3d2a1c; --brique-voile: #3a2620; --braise-voile: #33281f;
  --creme: #1b1b1f; --papier: #25252a; --blanc: #2e2e34; --trait: #3a3a42; --trait-fort: #55555f; --voile: #3a3a42; --zone: #0f0f12;
  --texte: #ece7df; --texte-2: #cbc5bc; --gris: #b3ada4; --lien: #f0977b; --lien-fort: #ffb9a3; --sur-vif: #16161a;
  --vert: #6fcf9a; --vert-clair: #1c3a2b; --vert-bord: #2f6447; --vert-texte: #bfe8d0;
  --rouge: #f08a82; --rouge-clair: #44201d; --rouge-bord: #7a3833; --rouge-texte: #f6c9c5;
  --ambre: #e6b45c; --ambre-clair: #3d3016; --ambre-bord: #6b5524; --ambre-texte: #f1dba8;
  --bleu: #8dbde6; --bleu-clair: #1c3145; --bleu-bord: #35597a; --bleu-texte: #c7dff3;
  --ombre: 0 1px 2px rgba(0,0,0,.4), 0 6px 18px rgba(0,0,0,.35);
  color-scheme: dark;
  }
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font-family: var(--corps); font-size: 16px; line-height: 1.5; color: var(--texte); background: var(--creme); }
h1, h2, h3 { font-family: var(--titre); font-weight: 600; line-height: 1.2; margin: 0 0 .5em; letter-spacing: -.01em; }
h1 { font-size: clamp(1.5rem, 2.6vw, 2rem); } h2 { font-size: 1.25rem; } h3 { font-size: 1.05rem; }
p { margin: 0 0 .8em; } a { color: var(--lien); } a:hover { color: var(--lien-fort); }
small, .petit { font-size: .85rem; color: var(--gris); }
code { background: var(--voile); padding: .1em .35em; border-radius: 5px; font-size: .9em; }
[hidden] { display: none !important; }
:focus-visible { outline: 3px solid var(--braise); outline-offset: 2px; }
abbr[title] { text-decoration: none; color: var(--lien); }

/* ── Boutons ── */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .45em; min-height: 46px; padding: .55em 1.05em; border: 1.5px solid var(--trait-fort); border-radius: 10px; background: var(--papier); color: var(--texte); font: 600 .95rem/1.2 var(--corps); text-decoration: none; cursor: pointer; transition: background .15s, border-color .15s, transform .05s; -webkit-tap-highlight-color: transparent; }
.btn:hover { border-color: var(--texte-2); color: var(--texte); background: var(--blanc); }
.btn:active { transform: translateY(1px); }
.btn-principal { background: var(--brique); border-color: var(--brique); color: #fff; }
.btn-principal:hover { background: var(--brique-fonce); border-color: var(--brique-fonce); color: #fff; }
.btn-braise { background: var(--braise); border-color: var(--braise); color: #2a1404; }
.btn-braise:hover { background: #d3621f; border-color: #d3621f; color: #2a1404; }
.btn-sombre { background: var(--bouton-sombre); border-color: var(--bouton-sombre); color: #fff; }
.btn-sombre:hover { background: var(--bouton-sombre-survol); border-color: var(--bouton-sombre-survol); color: #fff; }
.btn-danger { color: var(--rouge); border-color: var(--rouge-bord); }
.btn-danger:hover { background: var(--rouge-clair); border-color: var(--rouge); color: var(--rouge); }
.btn-petit { min-height: 38px; padding: .35em .75em; font-size: .86rem; }
.btn-large { width: 100%; }
.btn[disabled], .btn.occupe { opacity: .55; pointer-events: none; }
.actions { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; }
.actions-fin { justify-content: flex-end; }
form.en-ligne { display: inline; }

/* ── Cartes, grilles ── */
.carte { background: var(--papier); border: 1px solid var(--trait); border-radius: var(--rayon); box-shadow: var(--ombre); padding: 1.15rem 1.25rem; margin-bottom: 1.1rem; }
.carte > h2:first-child, .carte > h3:first-child { margin-top: 0; }
.carte-accent { border-top: 4px solid var(--brique); }
.grille { display: grid; gap: 1rem; }
.g2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.g3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); }
.g4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 170px), 1fr)); }
.entete-page { display: flex; flex-wrap: wrap; gap: .75rem 1rem; align-items: center; justify-content: space-between; margin-bottom: 1.1rem; }
.entete-page h1 { margin: 0; }
.fil { font-size: .88rem; color: var(--gris); margin-bottom: .35rem; }
.vide { color: var(--gris); font-style: italic; padding: .4rem 0; }
.separateur { border: 0; border-top: 1px solid var(--trait); margin: 1rem 0; }

/* ── Formulaires ── */
.champ { display: flex; flex-direction: column; gap: .3rem; margin-bottom: .85rem; font-size: .92rem; }
.champ > span { font-weight: 600; }
input, select, textarea { font: inherit; color: inherit; }
.champ input, .champ select, .champ textarea, .saisie { width: 100%; min-height: 46px; padding: .55em .7em; border: 1.5px solid var(--trait-fort); border-radius: 9px; background: var(--blanc); }
.champ textarea { min-height: 5.2em; resize: vertical; }
.champ input:focus, .champ select:focus, .champ textarea:focus, .saisie:focus { border-color: var(--brique); outline: 3px solid var(--braise-clair); outline-offset: 0; }
.champ small { color: var(--gris); }
.champ.erreur input, .champ.erreur select, .champ.erreur textarea { border-color: var(--rouge); }
.champ .msg-erreur { color: var(--rouge); font-weight: 600; font-size: .85rem; }
.cases { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr)); gap: .45rem; margin-bottom: .9rem; }
.case { display: flex; align-items: center; gap: .65rem; min-height: 46px; padding: .4rem .7rem; border: 1.5px solid var(--trait); border-radius: 9px; background: var(--blanc); cursor: pointer; font-size: .93rem; }
.case input { width: 22px; height: 22px; accent-color: var(--brique); flex: none; }
.case:has(input:checked) { border-color: var(--brique); background: var(--brique-voile); }
fieldset { border: 1px solid var(--trait); border-radius: var(--rayon); padding: .9rem 1rem .3rem; margin: 0 0 1rem; }
legend { font-family: var(--titre); font-weight: 600; padding: 0 .4rem; }
.recherche { display: flex; gap: .5rem; flex-wrap: wrap; }
.recherche input { flex: 1 1 220px; }

/* ── Alertes, pastilles ── */
.alerte { padding: .8rem 1rem; border-radius: 10px; margin-bottom: 1rem; border: 1px solid; font-size: .95rem; }
.alerte-ok { background: var(--vert-clair); border-color: var(--vert-bord); color: var(--vert-texte); }
.alerte-erreur { background: var(--rouge-clair); border-color: var(--rouge-bord); color: var(--rouge-texte); }
.alerte-info { background: var(--bleu-clair); border-color: var(--bleu-bord); color: var(--bleu-texte); }
.alerte-attention { background: var(--ambre-clair); border-color: var(--ambre-bord); color: var(--ambre-texte); }
.pastille { display: inline-block; padding: .12em .6em; border-radius: 99px; font-size: .78rem; font-weight: 600; white-space: nowrap; background: var(--voile); color: var(--texte-2); }
.etat-prevu, .etat-emise, .etat-en_attente { background: var(--ambre-clair); color: var(--ambre); }
.etat-effectue, .etat-valide, .etat-payee, .etat-confirmee { background: var(--vert-clair); color: var(--vert); }
.etat-annule, .etat-refusee { background: var(--rouge-clair); color: var(--rouge); }
.etat-brouillon { background: var(--bleu-clair); color: var(--bleu); }
.bandeau-essai { background: var(--ambre-clair); color: var(--ambre-texte); border-bottom: 1px solid var(--ambre-bord); font-size: .82rem; padding: .35rem 1rem; text-align: center; }

/* ── Tableaux ── */
.table-defilante { overflow-x: auto; margin: 0 -.25rem; }
table.table { width: 100%; border-collapse: collapse; font-size: .93rem; }
.table th { text-align: left; font-size: .78rem; text-transform: uppercase; letter-spacing: .04em; color: var(--gris); padding: .5rem .6rem; border-bottom: 2px solid var(--trait); white-space: nowrap; }
.table td { padding: .6rem; border-bottom: 1px solid var(--trait); vertical-align: top; }
.table tr:last-child td { border-bottom: 0; }
.table .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.table a.fort { font-weight: 600; text-decoration: none; }
@media (max-width: 720px) {
  table.table.empilable thead { display: none; }
  table.table.empilable tr { display: block; padding: .55rem 0; border-bottom: 1px solid var(--trait); }
  table.table.empilable td { display: flex; justify-content: space-between; gap: 1rem; border: 0; padding: .2rem .25rem; text-align: right; }
  table.table.empilable td::before { content: attr(data-l); font-weight: 600; color: var(--gris); text-align: left; flex: none; }
  table.table.empilable td:empty { display: none; }
}

/* ── Structure administrateur ── */
.appli { display: grid; grid-template-columns: 252px minmax(0, 1fr); min-height: 100vh; }
.menu { background: var(--charbon); color: #e9e3da; display: flex; flex-direction: column; position: sticky; top: 0; height: 100vh; overflow-y: auto; }
.menu-marque { padding: 1.1rem 1.1rem .4rem; }
.menu-marque strong { display: block; font-family: var(--titre); font-size: 1.3rem; color: #fff; letter-spacing: .01em; }
.menu-marque span { font-size: .78rem; color: #b9b1a6; letter-spacing: .08em; text-transform: uppercase; }
.toits { display: block; width: 100%; height: 34px; color: var(--brique); }
.menu nav { padding: .4rem .6rem 1rem; flex: 1; }
.menu nav a { display: flex; align-items: center; justify-content: space-between; gap: .5rem; min-height: 44px; padding: .45rem .75rem; border-radius: 9px; color: #e2dbd0; text-decoration: none; font-size: .95rem; font-weight: 500; }
.menu nav a:hover { background: var(--charbon-2); color: #fff; }
.menu nav a.actif { background: var(--brique); color: #fff; font-weight: 600; }
.menu nav .badge { background: var(--braise); color: #2a1404; border-radius: 99px; font-size: .75rem; font-weight: 700; padding: .05em .55em; }
/* marge basse : le menu commence sous le bandeau « mode essai », son bas dépasse donc d'autant tant qu'on n'a pas fait défiler */
.menu-pied { padding: .8rem 1.1rem 2.9rem; font-size: .8rem; color: #a59d92; border-top: 1px solid var(--charbon-2); }
.menu-pied a { color: #e9c9b5; }
.contenu { padding: 1.4rem clamp(1rem, 3vw, 2.2rem) 3rem; min-width: 0; }
.barre-mobile { display: none; }
#bascule-menu { display: none; }
@media (max-width: 960px) {
  .appli { display: block; }
  .barre-mobile { display: flex; align-items: center; justify-content: space-between; gap: .75rem; position: sticky; top: 0; z-index: 30; background: var(--charbon); color: #fff; padding: .5rem .9rem; }
  .barre-mobile strong { font-family: var(--titre); font-size: 1.1rem; }
  .barre-mobile label { display: inline-flex; align-items: center; gap: .4rem; min-height: 44px; padding: 0 .9rem; border: 1.5px solid #5b5b63; border-radius: 9px; font-weight: 600; cursor: pointer; }
  .menu { position: fixed; inset: 0 auto 0 0; width: min(290px, 86vw); z-index: 50; transform: translateX(-105%); transition: transform .2s ease; height: 100dvh; }
  #bascule-menu:checked ~ .menu { transform: none; box-shadow: 0 0 0 100vmax rgba(0,0,0,.45); }
  .contenu { padding: 1rem .85rem 4rem; }
}

/* ── Structure intervenant (téléphone) ── */
.terrain { max-width: 760px; margin: 0 auto; padding: 0 0 5.5rem; }
.terrain-tete { background: var(--charbon); color: #fff; padding: .7rem 1rem 0; position: sticky; top: 0; z-index: 20; }
.terrain-tete .ligne { display: flex; justify-content: space-between; align-items: center; gap: .6rem; }
.terrain-tete strong { font-family: var(--titre); font-size: 1.15rem; }
.terrain-tete a { color: #f0d6c6; font-size: .85rem; }
.terrain-tete .tete-info { color: #f0d6c6; font-size: .85rem; }
.terrain-corps { padding: 1rem .85rem; }
.onglets { position: fixed; left: 0; right: 0; bottom: 0; z-index: 25; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; background: var(--papier); border-top: 1px solid var(--trait-fort); padding-bottom: env(safe-area-inset-bottom); }
.onglets a { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .1rem; min-height: 60px; text-decoration: none; color: var(--gris); font-size: .8rem; font-weight: 600; }
.onglets a svg { width: 24px; height: 24px; }
.onglets a.actif { color: var(--lien); box-shadow: inset 0 3px 0 var(--lien); }
.nav-jour { display: grid; grid-template-columns: 52px 1fr 52px; gap: .5rem; align-items: center; margin-bottom: 1rem; }
.nav-jour .jour { text-align: center; font-family: var(--titre); font-weight: 600; font-size: 1.15rem; }
.nav-jour .btn { padding: 0; font-size: 1.3rem; }
.etape { background: var(--papier); border: 1px solid var(--trait); border-left: 5px solid var(--braise); border-radius: var(--rayon); padding: .9rem 1rem; margin-bottom: .8rem; box-shadow: var(--ombre); }
.etape.fait { border-left-color: var(--vert); }
.etape-tete { display: flex; justify-content: space-between; gap: .6rem; align-items: flex-start; }
.etape-nom { font-weight: 700; font-size: 1.05rem; }
.etape-rang { flex: none; width: 30px; height: 30px; border-radius: 50%; background: var(--bande); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: .9rem; margin-right: .5rem; }
.etape .boutons { display: grid; grid-template-columns: repeat(auto-fit, minmax(118px, 1fr)); gap: .5rem; margin-top: .75rem; }
.titre-periode { font-family: var(--titre); font-size: 1.1rem; font-weight: 600; margin: 1.1rem 0 .6rem; display: flex; align-items: center; gap: .6rem; }
.titre-periode::after { content: ''; flex: 1; height: 1px; background: var(--trait-fort); }

/* ── Planning hebdomadaire ── */
.planning { display: grid; grid-auto-flow: column; grid-template-rows: auto auto auto; grid-auto-columns: minmax(0, 1fr); gap: .5rem; }
.pl-jour { font-family: var(--titre); font-weight: 600; text-align: center; padding: .45rem .3rem; background: var(--bande); color: #fff; border-radius: 9px; font-size: .95rem; }
.pl-jour.aujourdhui { background: var(--brique); }
.pl-case { background: var(--papier); border: 1px solid var(--trait); border-radius: 10px; padding: .45rem; min-height: 132px; display: flex; flex-direction: column; gap: .4rem; }
.pl-case.survol { outline: 3px dashed var(--braise); outline-offset: -3px; }
.pl-case.complet { background: var(--braise-voile); }
.pl-tete { display: flex; justify-content: space-between; align-items: center; font-size: .76rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--gris); }
.pl-jauge { font-variant-numeric: tabular-nums; padding: .05em .5em; border-radius: 99px; background: var(--voile); }
.complet .pl-jauge { background: var(--brique); color: #fff; }
.rdv { display: block; background: var(--blanc); border: 1px solid var(--trait-fort); border-left: 4px solid var(--braise); border-radius: 8px; padding: .4rem .5rem; font-size: .84rem; line-height: 1.3; text-decoration: none; color: var(--texte); cursor: grab; }
.rdv:hover { border-color: var(--texte-2); color: var(--texte); }
.rdv strong { display: block; font-size: .9rem; }
.rdv .ligne { color: var(--gris); display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rdv.etat-rdv-effectue { border-left-color: var(--vert); }
.rdv.etat-rdv-annule { border-left-color: var(--rouge); opacity: .6; text-decoration: line-through; cursor: pointer; }
.rdv .pastille { margin-top: .2rem; font-size: .7rem; }
.pl-ajout { margin-top: auto; text-align: center; font-size: .82rem; font-weight: 600; text-decoration: none; padding: .35rem; border: 1.5px dashed var(--trait-fort); border-radius: 8px; color: var(--gris); min-height: 38px; display: flex; align-items: center; justify-content: center; }
.pl-ajout:hover { border-color: var(--lien); color: var(--lien); }
.pl-indispo { font-size: .74rem; color: var(--rouge); }
@media (max-width: 1080px) {
  .planning { grid-auto-flow: row; grid-template-rows: none; grid-template-columns: 1fr; }
  .pl-jour { text-align: left; padding-left: .8rem; margin-top: .5rem; }
  .pl-case { min-height: 0; }
}

/* ── Tableau de bord ── */
.chiffre { display: block; font-family: var(--titre); font-size: 2.2rem; font-weight: 600; line-height: 1; color: var(--lien); }
.tuile { text-decoration: none; color: inherit; display: block; }
.tuile:hover { color: inherit; border-color: var(--brique); }
.liste-simple { list-style: none; margin: 0; padding: 0; }
.liste-simple li { padding: .55rem 0; border-bottom: 1px solid var(--trait); display: flex; justify-content: space-between; gap: .75rem; align-items: baseline; flex-wrap: wrap; }
.liste-simple li:last-child { border-bottom: 0; }

/* ── Fiche client / historique ── */
.fiche-infos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr)); gap: .3rem 1.2rem; margin: 0; }
.fiche-infos div { padding: .35rem 0; border-bottom: 1px dashed var(--trait); }
.fiche-infos dt { font-size: .75rem; text-transform: uppercase; letter-spacing: .04em; color: var(--gris); }
.fiche-infos dd { margin: 0; font-weight: 500; overflow-wrap: anywhere; }
.boutons-fiche { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: .6rem; margin: 1rem 0; }
.histo { list-style: none; margin: 0; padding: 0; border-left: 2px solid var(--trait-fort); margin-left: .4rem; }
.histo li { position: relative; padding: 0 0 1rem 1.1rem; }
.histo li::before { content: ''; position: absolute; left: -7px; top: .35rem; width: 12px; height: 12px; border-radius: 50%; background: var(--braise); border: 2px solid var(--papier); }
.histo .quand { font-size: .8rem; color: var(--gris); }
.histo .detail { white-space: pre-line; font-size: .92rem; color: var(--texte-2); }

/* ── Sélection de profil, pages simples ── */
.page-simple { min-height: 100vh; display: flex; flex-direction: column; align-items: center; padding: clamp(1rem, 4vw, 3rem) 1rem; background: var(--creme); }
.carte-centrale { width: min(100%, 640px); }
.accueil-tete { width: min(100%, 640px); background: var(--charbon); color: #fff; border-radius: var(--rayon) var(--rayon) 0 0; padding: 1.4rem 1.4rem 0; }
.accueil-tete h1 { color: #fff; margin: 0; } .accueil-tete p { color: #cfc7bb; margin: .2rem 0 .6rem; }
.accueil-tete + .carte { border-radius: 0 0 var(--rayon) var(--rayon); border-top: 0; }
.profils { display: grid; gap: .6rem; }
.profil { display: flex; align-items: center; gap: .9rem; width: 100%; min-height: 64px; padding: .7rem 1rem; border: 1.5px solid var(--trait-fort); border-radius: 12px; background: var(--blanc); color: inherit; font: inherit; text-align: left; cursor: pointer; }
.profil:hover { border-color: var(--brique); background: var(--brique-voile); }
.profil .rond { flex: none; width: 44px; height: 44px; border-radius: 50%; background: var(--bande); color: #fff; display: flex; align-items: center; justify-content: center; font-family: var(--titre); font-weight: 600; font-size: 1.1rem; }
.profil.admin .rond { background: var(--brique); }
.profil b { display: block; } .profil span span { font-size: .85rem; color: var(--gris); }
.liste-controle { list-style: none; padding: 0; margin: 0 0 1rem; }
.liste-controle li { display: flex; gap: .7rem; padding: .55rem 0; border-bottom: 1px solid var(--trait); align-items: flex-start; }
.liste-controle .puce { flex: none; width: 26px; height: 26px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; color: var(--sur-vif); font-size: .85rem; }
.puce.ok { background: var(--vert); } .puce.ko { background: var(--rouge); } .puce.attention { background: var(--ambre); } .puce.attente { background: #b6ada0; }
.code-maintenance { font: 700 1.5rem/1.2 ui-monospace, 'Courier New', monospace; letter-spacing: .12em; background: var(--bande); color: #fff; padding: .7rem 1rem; border-radius: 10px; display: inline-block; user-select: all; }

/* ── Lignes de facture ── */
.lignes-facture { display: grid; gap: .5rem; }
.ligne-facture { display: grid; grid-template-columns: minmax(0, 1fr) 92px 120px 92px; gap: .5rem; align-items: end; }
.ligne-facture .champ { margin: 0; }
@media (max-width: 720px) { .ligne-facture { grid-template-columns: 1fr 1fr 1fr; padding: .6rem; border: 1px solid var(--trait); border-radius: 10px; background: var(--blanc); } .ligne-facture .champ:first-child { grid-column: 1 / -1; } }
.totaux { margin-left: auto; width: min(100%, 320px); }
.totaux div { display: flex; justify-content: space-between; padding: .3rem 0; font-variant-numeric: tabular-nums; }
.totaux .ttc { font-weight: 700; font-size: 1.15rem; border-top: 2px solid var(--texte); margin-top: .3rem; padding-top: .5rem; }

/* ── Choix d'un client (auto-complétion) ── */
.choix-client { position: relative; }
.choix-client .propositions { position: absolute; z-index: 15; left: 0; right: 0; top: 100%; background: var(--blanc); border: 1.5px solid var(--trait-fort); border-radius: 10px; box-shadow: var(--ombre); max-height: 280px; overflow: auto; }
.choix-client .propositions button { display: block; width: 100%; text-align: left; padding: .6rem .8rem; min-height: 46px; background: none; color: inherit; border: 0; border-bottom: 1px solid var(--trait); font: inherit; cursor: pointer; }
.choix-client .propositions button:hover, .choix-client .propositions button:focus { background: var(--braise-clair); }
.client-choisi { display: flex; justify-content: space-between; align-items: center; gap: .6rem; padding: .6rem .8rem; border: 1.5px solid var(--vert); background: var(--vert-clair); border-radius: 10px; margin-bottom: .85rem; }

/* ── Éditeur de modèles ── */
.editeur { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 1rem; align-items: start; }
@media (max-width: 1100px) { .editeur { grid-template-columns: 1fr; } }
.editeur-zone { background: var(--zone); border-radius: var(--rayon); padding: 14px; overflow: hidden; }
.editeur-panneau { position: sticky; top: .75rem; max-height: calc(100vh - 1.5rem); overflow: auto; }
.liste-widgets { list-style: none; margin: 0 0 1rem; padding: 0; display: grid; gap: .3rem; }
.liste-widgets button { width: 100%; display: flex; justify-content: space-between; align-items: center; gap: .5rem; min-height: 42px; padding: .35rem .7rem; border: 1.5px solid var(--trait); background: var(--blanc); color: inherit; border-radius: 9px; font: inherit; font-size: .9rem; cursor: pointer; text-align: left; }
.liste-widgets button.choisi { border-color: var(--brique); background: var(--brique-voile); font-weight: 600; }
.liste-widgets button.masque { color: var(--gris); font-style: italic; }
.liste-widgets .depasse { color: var(--rouge); font-weight: 700; font-size: .78rem; }
.mm { display: grid; grid-template-columns: repeat(4, 1fr); gap: .4rem; }
.mm .champ { margin-bottom: .6rem; } .mm input { padding: .4em .45em; min-height: 42px; }

/* ── Impression des pages de l'application (hors documents) ── */
/* Planning : places disponibles par journée, modifiables sur place */
.pl-jour.avec-places { display: flex; flex-direction: column; align-items: center; gap: .15rem; align-self: start; }
.pl-dispo { display: block; font-family: var(--corps); font-size: .8rem; font-weight: 600; color: #f6dccd; }
.pl-dispo[data-libres="0"] { color: #ffc9b8; }
.pl-jour.aujourdhui .pl-dispo { color: #fff; }
.pl-places { font-family: var(--corps); font-size: .8rem; font-weight: 500; width: 100%; }
.pl-places summary { cursor: pointer; color: #f0d6c6; text-decoration: underline; list-style: none; min-height: 30px; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .1rem .35rem; }
.pl-places summary::-webkit-details-marker { display: none; }
.pl-jour.aujourdhui .pl-places summary { color: #fff; }          /* sur la colonne du jour (fond brique), le lien pâle manquait un peu de contraste */
.pl-places summary .pastille { text-decoration: none; background: var(--braise); color: #2a1404; font-size: .68rem; }
.pl-places form { background: var(--papier); color: var(--texte); border-radius: 8px; padding: .55rem; display: grid; gap: .4rem; text-align: left; margin-top: .2rem; }
.pl-places label { display: flex; justify-content: space-between; align-items: center; gap: .4rem; font-weight: 600; }
.pl-places input[type=number] { width: 4.4rem; min-height: 38px; padding: .2rem .4rem; border: 1.5px solid var(--trait-fort); border-radius: 8px; font: inherit; font-weight: 700; text-align: center; background: var(--blanc); color: var(--texte); }
.pl-places small { color: var(--gris); line-height: 1.3; }
.pl-libres { font-size: .78rem; font-weight: 700; color: var(--vert); }
.pl-libres.aucune { color: var(--lien); }
.places-semaine { background: var(--papier); border: 1px solid var(--trait); border-radius: var(--rayon); padding: .8rem 1rem; margin-bottom: 1.2rem; box-shadow: var(--ombre); }
.places-semaine h2 { margin: 0 0 .6rem; font-size: 1.1rem; }
.places-semaine h2 .petit { font-family: var(--corps); font-weight: 400; }
.ps-jours { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .5rem; align-items: start; }
.ps-jour { border: 1px solid var(--trait); border-radius: 10px; padding: .5rem .55rem; background: var(--blanc); }
.ps-jour.aujourdhui { border-color: var(--brique); }
.ps-jour strong { display: block; font-family: var(--titre); font-size: .95rem; }
.ps-detail { display: block; font-size: .76rem; color: var(--gris); margin: .15rem 0; }
.ps-jour .pl-dispo { color: var(--vert); font-size: .86rem; }
.ps-jour .pl-dispo[data-libres="0"] { color: var(--lien); }
.ps-jour .pl-places summary { color: var(--lien); justify-content: flex-start; }
.ps-jour .pl-places form { border: 1px solid var(--trait); }
@media (max-width: 900px) { .ps-jours { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 480px) { .ps-jours { grid-template-columns: 1fr; } }

/* Planning par équipe : une grille de la semaine par équipe */
.planning-equipe { background: var(--papier); border: 1px solid var(--trait); border-top: 4px solid var(--brique); border-radius: var(--rayon); padding: .9rem 1rem 1rem; margin-bottom: 1.2rem; box-shadow: var(--ombre); }
.planning-equipe.sans-equipe { border-top-color: var(--trait-fort); }
.pe-tete { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .3rem 1rem; margin-bottom: .7rem; }
.pe-tete h2 { margin: 0; font-size: 1.35rem; }
.pe-nom { font-family: var(--corps); font-weight: 500; font-size: 1.05rem; color: var(--texte-2); }
.planning-equipe .pl-case { min-height: 104px; background: var(--blanc); }
.planning-equipe .pl-case.complet { background: var(--braise-voile); }
.pl-case.indisponible { background: repeating-linear-gradient(135deg, var(--rouge-clair), var(--rouge-clair) 8px, var(--blanc) 8px, var(--blanc) 16px); }
.numero-equipe { flex: none; align-self: center; font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--lien-fort); background: var(--braise-clair); border-radius: 99px; padding: .25em .7em; white-space: nowrap; }
@page planning-equipe { size: A4 landscape; margin: 9mm; }
@media print {
  .contenu:has(.planning-equipe) > :not(.planning-equipe) { display: none !important; }
  .planning-equipe { page: planning-equipe; break-after: page; break-inside: avoid; border: 0; box-shadow: none; padding: 0; margin: 0; }
  .planning-equipe:last-of-type { break-after: auto; }
  .planning-equipe .planning { grid-auto-flow: column; grid-template-rows: auto auto auto; grid-template-columns: none; grid-auto-columns: minmax(0, 1fr); gap: 2mm; }
  .planning-equipe .pl-jour { text-align: center; margin-top: 0; padding: 1.5mm 1mm; font-size: 10pt; print-color-adjust: exact; -webkit-print-color-adjust: exact; }
  .planning-equipe .pl-case { min-height: 62mm; border: .3mm solid #555; break-inside: avoid; }
  .planning-equipe .rdv { font-size: 8.5pt; padding: 1mm 1.5mm; border-left-width: 1mm; }
  .planning-equipe .rdv .ligne { white-space: normal; }
  .pe-tete h2 { font-size: 18pt; }
}

/* Nombre de clients par équipe, matin et après-midi */
.nb-clients { width: 4.4rem; min-height: 40px; padding: .25rem .4rem; text-align: center; font-weight: 700; }
.table-clients td, .table-clients th { vertical-align: middle; }
.table-clients tbody + tbody tr:first-child > * { border-top: 2px solid var(--trait-fort); }
.table-clients td.equipe { vertical-align: top; padding-top: .8rem; min-width: 7.5rem; }
.table-clients th.periode { font-size: .8rem; text-transform: none; letter-spacing: 0; color: var(--texte-2); font-weight: 600; white-space: nowrap; border-bottom: 1px solid var(--trait); }
.table-clients tr.total-jour td, .table-clients tr.total-jour th { background: var(--voile); font-size: .88rem; white-space: nowrap; }
.clients-jour { font-size: .95rem; margin-bottom: .25rem; white-space: nowrap; }
.clients-jour.plein strong { color: var(--lien); }
.clients-jour.depasse, .clients-jour.depasse strong, .clients-jour.depasse a { color: var(--rouge); }
.pl-clients[data-prevus="0"] { opacity: .85; font-weight: 500; }
.pl-detail-clients { display: block; font-family: var(--corps); font-size: .72rem; font-weight: 500; color: #e2dbd0; }
.pl-case.equipe-pleine .pl-jauge { background: var(--brique); color: #fff; }

/* Planning par équipe : case « Rendez-vous en ligne » */
.pl-enligne { width: 100%; margin: .15rem 0 0; font-family: var(--corps); font-size: .78rem; font-weight: 600; }
.pl-enligne label { display: flex; align-items: center; justify-content: center; gap: .4rem; min-height: 34px; padding: .2rem .45rem; border: 1.5px solid #5b5b63; border-radius: 8px; color: #e9e3da; cursor: pointer; line-height: 1.15; text-align: left; }
.pl-enligne input { width: 20px; height: 20px; flex: none; accent-color: var(--braise); }
.pl-enligne.coche label { background: var(--braise); border-color: var(--braise); color: #2a1404; }
.pl-enligne.envoi label { opacity: .6; }
.pe-enligne { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; flex-basis: 100%; font-size: .85rem; color: var(--texte-2); margin-top: .2rem; }

/* Photo d'accueil de la page de rendez-vous : un cadre 19 / 10 (1900 × 1000), la photo est centrée et rognée à cette forme */
.photo-rdv { display: block; width: 100%; height: auto; aspect-ratio: 19 / 10; object-fit: cover; object-position: center; border-radius: 10px; margin: 0 0 1.1rem; background: var(--voile); }
.photo-rdv.apercu { max-width: 640px; margin-bottom: .5rem; border: 1px solid var(--trait); }
.page-rdv .carte-centrale.avec-photo { padding-top: 0; overflow: hidden; }
.page-rdv .carte-centrale.avec-photo > .photo-rdv { width: calc(100% + 2.5rem); max-width: none; margin: 0 -1.25rem 1.1rem; border-radius: 0; }

/* Page publique de rendez-vous : étapes et créneaux proposés */
.etapes-rdv { list-style: none; margin: 0 0 1.2rem; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .4rem; font-size: .85rem; font-weight: 600; color: var(--gris); }
.etapes-rdv li { display: flex; align-items: center; gap: .45rem; padding: .45rem .55rem; border-radius: 10px; border: 1.5px solid var(--trait); background: var(--blanc); line-height: 1.2; }
.etapes-rdv .num { flex: none; width: 26px; height: 26px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--voile); color: var(--texte-2); font-weight: 700; font-size: .85rem; }
.etapes-rdv li.en-cours { border-color: var(--brique); color: var(--texte); }
.etapes-rdv li.en-cours .num { background: var(--brique); color: #fff; }
.etapes-rdv li.faite { color: var(--texte-2); }
.etapes-rdv li.faite .num { background: var(--vert-clair); color: var(--vert); }
@media (max-width: 520px) { .etapes-rdv { font-size: .76rem; } .etapes-rdv li { flex-direction: column; text-align: center; gap: .2rem; padding: .4rem .2rem; } }
.page-rdv .g2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); }
.recap-rdv { background: var(--voile); border-radius: 10px; padding: .6rem .8rem; font-size: .92rem; }
.recap-rdv a { display: inline-block; margin-left: .3rem; white-space: nowrap; }
.creneaux-rdv { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap: .5rem; margin-bottom: .6rem; }
.creneau-rdv { display: flex; align-items: center; gap: .65rem; min-height: 54px; padding: .5rem .8rem; border: 1.5px solid var(--trait-fort); border-radius: 10px; background: var(--blanc); cursor: pointer; }
.creneau-rdv input { width: 22px; height: 22px; accent-color: var(--brique); flex: none; }
.creneau-rdv .quand { flex: 1; line-height: 1.25; }
.creneau-rdv .quand strong { display: block; }
.creneau-rdv.autre .quand strong, .creneau-rdv.moment .quand strong { display: inline; }
.creneau-rdv.conseille { border-color: var(--vert-bord); }
.creneau-rdv:has(input:checked) { border-color: var(--brique); background: var(--brique-voile); box-shadow: 0 0 0 2px var(--braise-clair); }
.recontact { margin: .7rem 0 0; padding: .7rem .8rem .2rem; border-radius: 10px; background: var(--voile); }
.recontact p { margin: 0 0 .5rem; }
.recontact.erreur { outline: 2px solid var(--rouge); }
.creneau-demande { font-size: 1.1rem; padding: .7rem .9rem; border: 1.5px solid var(--trait-fort); border-radius: 10px; background: var(--blanc); }

/* Choix de l'apparence : Clair, Sombre, Automatique */
.apparence { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; margin: 0; font-size: .85rem; }
.apparence .lib { margin-right: .2rem; font-weight: 600; }
.apparence button { min-height: 36px; padding: .25em .8em; border: 1.5px solid var(--trait-fort); border-radius: 99px; background: var(--blanc); color: var(--texte); font: 600 .82rem/1.2 var(--corps); cursor: pointer; }
.apparence button:hover { border-color: var(--texte-2); }
.apparence button[aria-pressed="true"] { background: var(--brique); border-color: var(--brique); color: #fff; }
.apparence.grande button { min-height: 46px; padding: .5em 1.2em; font-size: .95rem; }
.menu-pied .apparence { margin-top: .7rem; flex-wrap: nowrap; gap: .3rem; }
.menu-pied .apparence .lib { display: none; }
.menu-pied .apparence button { background: transparent; border-color: #5b5b63; color: #e9e3da; padding: .25em .6em; font-size: .76rem; white-space: nowrap; }
.menu-pied .apparence button:hover { border-color: #a59d92; }
.menu-pied .apparence button[aria-pressed="true"] { background: var(--brique); border-color: var(--brique); color: #fff; }
.terrain-corps > .apparence, .carte-centrale > .apparence { justify-content: center; margin-top: 1.4rem; }
.terrain-corps > .apparence button { min-height: 44px; padding: .4em 1em; }

/* Certificat : phrases d'exemple à ajouter d'un geste */
.exemples { display: flex; flex-wrap: wrap; gap: .4rem; }
.exemples .btn { text-align: left; white-space: normal; height: auto; min-height: 38px; line-height: 1.25; padding-top: .4em; padding-bottom: .4em; font-weight: 500; }
.exemples .btn.ajoute { background: var(--vert-clair); border-color: var(--vert); color: var(--vert); }

/* Application mobile des intervenants */
.titre-app { font-size: 1.45rem; margin: 0 0 .3rem; }
.resume-tournee { background: var(--papier); border: 1px solid var(--trait); border-radius: var(--rayon); padding: .8rem 1rem .5rem; margin-bottom: 1rem; box-shadow: var(--ombre); }
.resume-tournee .chiffres { font-size: .95rem; color: var(--texte-2); }
.resume-tournee .chiffres strong { font-family: var(--titre); font-size: 1.5rem; color: var(--texte); margin-right: .25rem; }
.resume-tournee p { margin: .5rem 0 0; }
.jauge { height: 10px; border-radius: 99px; background: var(--trait); overflow: hidden; margin-top: .45rem; }
.jauge span { display: block; height: 100%; background: var(--vert); border-radius: 99px; min-width: 0; transition: width .3s ease; }
.etape.prochaine { border-left-color: var(--brique); border-color: var(--brique); box-shadow: 0 0 0 2px var(--braise-clair), var(--ombre); }
.etiquette-prochain { display: inline-block; background: var(--brique); color: #fff; font-size: .72rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: .2em .7em; border-radius: 99px; margin-bottom: .5rem; }
.etape-adresse { margin-top: .4rem; }
.etape-tel a { font-size: 1.15rem; font-weight: 700; font-variant-numeric: tabular-nums; text-decoration: none; color: var(--lien-fort); letter-spacing: .02em; }
.etape .boutons form.pleine { grid-column: 1 / -1; }
.etape .boutons { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.bandeau-hors-ligne { display: none; }
body[data-hors-ligne] .bandeau-hors-ligne { display: block; position: sticky; top: 3.4rem; z-index: 15; }
body[data-hors-ligne] .flashs, body[data-hors-ligne] .installer-app { display: none; }
body[data-hors-ligne] form:not(.pc-corps) button, body[data-hors-ligne] form:not(.pc-corps) input, body[data-hors-ligne] form:not(.pc-corps) select, body[data-hors-ligne] form:not(.pc-corps) textarea { opacity: .45; pointer-events: none; }   /* le parcours du certificat (1.21.0) reste utilisable */
.installer-app strong { display: block; }
.installer-app .actions { margin-top: .5rem; }
.jour-semaine { display: block; background: var(--papier); border: 1px solid var(--trait); border-left: 5px solid var(--trait-fort); border-radius: var(--rayon); padding: .75rem 1rem; margin-bottom: .7rem; text-decoration: none; color: var(--texte); box-shadow: var(--ombre); }
.jour-semaine.aujourdhui { border-left-color: var(--brique); }
.jour-semaine .jour-tete { display: flex; justify-content: space-between; align-items: center; gap: .6rem; }
.jour-semaine .jour-tete strong { font-family: var(--titre); font-size: 1.05rem; }
.jour-semaine .ligne { display: block; font-size: .9rem; margin-top: .3rem; color: var(--texte-2); }
.jour-semaine .ligne.indispo { color: var(--ambre); font-weight: 600; }
.fiche-appli .qr { width: min(260px, 100%); aspect-ratio: 1; margin: .4rem 0 1rem; background: #fff; color: #25252a; border: 1px solid var(--trait); border-radius: 12px; display: flex; align-items: center; justify-content: center; padding: .4rem; text-align: center; }
.fiche-appli .qr.pret { padding: 0; }
.fiche-appli .qr svg { width: 100%; height: 100%; display: block; border-radius: 12px; }
.etapes-appli { padding-left: 1.1rem; }
.etapes-appli li { margin-bottom: .45rem; }

/* Planning intelligent et GPS : communes, distances, créneaux conseillés */
.sous-menu { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0 0 1rem; }
.bilan-tournee { margin: 0 0 .7rem; font-size: .92rem; color: var(--texte-2); }
.pastille-hors { background: var(--ambre-clair); color: var(--ambre); }
.pastille-detour { background: var(--vert-clair); color: var(--vert); }
td.distance { white-space: nowrap; }
.distance-etape { color: var(--texte-2); font-weight: 600; }
.grille-rdv { align-items: start; }
.creneaux-conseilles li { align-items: center; padding-left: .5rem; padding-right: .5rem; border-radius: 8px; }
.creneaux-conseilles li.choisi { background: var(--vert-clair); }
@media print { .menu, .barre-mobile, .bandeau-essai, .onglets, .terrain-tete, .non-imprime { display: none !important; } .appli { display: block; } body { background: #fff; } .carte { box-shadow: none; } }

/* ───── E-mails aux clients ───── */
.liste-explications { margin: 0 0 .7rem; padding-left: 1.2rem; }
.liste-explications li { margin: .3rem 0; }
.mot-email { display: inline-block; margin: .15rem .5rem .15rem 0; }
.modele-email { border: 1.5px solid var(--trait); border-radius: 10px; padding: .15rem .9rem; margin: .6rem 0; background: var(--blanc); }
.modele-email[open] { padding-bottom: .9rem; }
.modele-email > summary { cursor: pointer; min-height: 46px; display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .6rem; }
.modele-email h3, .titre-emails { font-size: .95rem; margin: .9rem 0 .4rem; }
.apercu-email { border: 1.5px solid var(--trait); border-radius: 9px; background: var(--voile); overflow: hidden; }
.apercu-email .apercu-sujet { padding: .55rem .8rem; border-bottom: 1.5px solid var(--trait); font-weight: 600; }
.apercu-email .apercu-sujet span { font-weight: 400; color: var(--texte-2); }
.apercu-email pre { margin: 0; padding: .7rem .8rem; white-space: pre-wrap; overflow-wrap: anywhere; font: inherit; font-size: .93rem; line-height: 1.5; }
.ligne-journal-email { border-bottom: 1px solid var(--trait); padding: .25rem 0; }
.ligne-journal-email:last-child { border-bottom: 0; }
.ligne-journal-email > summary { cursor: pointer; min-height: 42px; display: flex; flex-wrap: wrap; align-items: center; gap: .2rem .7rem; }
.ligne-journal-email > summary .quand { color: var(--texte-2); font-size: .9rem; min-width: 9.5rem; }
.ligne-journal-email .pastille { white-space: normal; }
.ligne-journal-email .apercu-email { margin: .5rem 0 .7rem; }
.verrou-emails { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin: -.3rem 0 1rem; }
.email-etat-ok { color: var(--vert); font-weight: 600; }
.email-etat-ko { color: var(--rouge); font-weight: 600; }
.liste-emails li { display: block; }

/* ───── Page de rendez-vous : « déjà client » ───── */
.case-deja-client { margin-bottom: .9rem; }

/* ───── Prestations et tarifs ───── */
.lignes-prestations { display: grid; gap: .5rem; margin-top: .8rem; }
.ligne-prestation { display: grid; grid-template-columns: minmax(0, 1fr) 120px 84px 120px; gap: .5rem; align-items: end; }
.ligne-prestation .champ { margin: 0; }
.ligne-prestation + .ligne-prestation .champ > span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
@media (max-width: 720px) {
  .ligne-prestation { grid-template-columns: 1fr 1fr 1fr; padding: .6rem; border: 1px solid var(--trait); border-radius: 10px; background: var(--blanc); }
  .ligne-prestation .champ:first-child { grid-column: 1 / -1; }
  .ligne-prestation + .ligne-prestation .champ > span { position: static; width: auto; height: auto; overflow: visible; clip-path: none; white-space: normal; }
}

/* ───── Page de rendez-vous : tarif indicatif selon l'appareil ───── */
.tarif-appareil { margin: .1rem 0 .9rem; padding: .55rem .8rem; border-radius: 9px; background: var(--vert-clair); color: var(--vert-texte); border: 1px solid var(--vert-bord); }
.tarif-appareil .petit { color: var(--vert-texte); }
.grille-appareils select { width: 100%; min-height: 42px; }

/* ───── Base clients : import ───── */
.chiffres-import { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: .6rem; margin: .4rem 0 .8rem; }
.chiffres-import div { border: 1.5px solid var(--trait); border-radius: 10px; padding: .55rem .7rem; background: var(--blanc); }
.chiffres-import b { display: block; font-size: 1.5rem; font-family: var(--titre); }
.table-import .pastille { margin-bottom: .15rem; }

/* ───── Certificats : formulaire en widgets et signature à l'écran ───── */
.choix-modele { display: flex; flex-wrap: wrap; gap: .6rem; align-items: flex-end; }
.choix-modele .champ { flex: 1 1 260px; margin-bottom: 0; }
.choix-modele .btn { margin-bottom: .2rem; }
.form-certificat .zone-certificat { min-height: 8.5em; }
.doc-apercu-texte { white-space: normal; padding: .6rem .8rem; border-left: 3px solid var(--trait-fort); background: var(--blanc); border-radius: 0 8px 8px 0; margin-bottom: .6rem; font-size: .93rem; }
.details-validite summary { cursor: pointer; color: var(--lien); font-weight: 600; min-height: 40px; display: flex; align-items: center; }
.signature { margin-top: .3rem; }
.sig-support { position: relative; width: 100%; max-width: 640px; background: #fff; border-radius: 10px; }
.sig-zone { display: block; width: 100%; aspect-ratio: 3 / 1; height: auto; background: #fff; border: 2px dashed #8a8379; border-radius: 10px; touch-action: none; cursor: crosshair; }
.sig-invite { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; text-align: center; padding: 0 1rem; color: #6a655e; background: transparent; font-size: .95rem; pointer-events: none; }
.sig-remplie .sig-invite { display: none; }
.signature .actions { margin-top: .5rem; align-items: center; }
.sig-etat { margin: 0 0 .4rem; }

/* ───── Modèles de certificats : éditeur de widgets ───── */
.editeur2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1.2rem; align-items: start; }
.editeur2-apercu { position: sticky; top: .8rem; }
@media (max-width: 1100px) { .editeur2 { grid-template-columns: 1fr; } .editeur2-apercu { position: static; } }
.liste-blocs { display: grid; gap: .6rem; margin: 0 0 1rem; padding: 0; list-style: none; }
.carte-bloc { border: 1.5px solid var(--trait); border-radius: 10px; background: var(--blanc); padding: .6rem .75rem; }
.carte-bloc.masque { background: var(--voile); }
.carte-bloc.masque .bloc-nom::after { content: ' — masqué'; font-weight: 500; color: var(--gris); }
.carte-bloc .bloc-tete { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; justify-content: space-between; }
.carte-bloc .bloc-nom { font-weight: 700; }
.carte-bloc .bloc-boutons { display: flex; gap: .35rem; flex-wrap: wrap; }
.carte-bloc .bloc-boutons .btn { min-width: 44px; }
.carte-bloc .bloc-reglages { display: flex; flex-wrap: wrap; gap: .4rem 1rem; margin: .5rem 0 .3rem; align-items: center; }
.carte-bloc .bloc-reglages .case { min-height: 40px; padding: .2rem .6rem; }
.carte-bloc .bloc-reglages select { min-height: 40px; }
.carte-bloc .champ { margin-bottom: .5rem; }
.carte-bloc details > summary { cursor: pointer; color: var(--lien); font-weight: 600; min-height: 40px; display: flex; align-items: center; }
.modifs-attente { position: sticky; bottom: 0; background: var(--creme); padding: .7rem 0; z-index: 5; display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; }
/* Bouton invisible placé en tête d'un formulaire : la touche Entrée enregistre au lieu d'actionner le premier bouton visible. */
.bouton-defaut { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }
.cases > .case { min-width: 0; overflow-wrap: anywhere; }
.editeur2 > * { min-width: 0; }
.carte-bloc .champ textarea, .carte-bloc .champ input { max-width: 100%; }

/* ───── Application des intervenants : journée gardée sur le téléphone et parcours du certificat (1.21.0) ───── */
.etat-hors-ligne { display: flex; flex-wrap: wrap; gap: .4rem .6rem; align-items: center; margin: 0 0 .8rem; font-size: .9rem; }
.hl-pastille { display: inline-block; padding: .15rem .6rem; border-radius: 999px; font-weight: 600; border: 1px solid; }
.hl-ok { background: var(--vert-clair); color: var(--vert-texte); border-color: var(--vert-bord); }
.hl-attente { background: var(--ambre-clair); color: var(--ambre-texte); border-color: var(--ambre-bord); }
.hl-hors { background: var(--rouge-clair); color: var(--rouge-texte); border-color: var(--rouge-bord); }
.hl-probleme { background: var(--rouge-clair); color: var(--rouge-texte); border-color: var(--rouge-bord); }
.etat-certificat { margin-top: .2rem; }
.parcours .pc-tete { margin-bottom: .8rem; }
.parcours .pc-tete h1 { margin: 0 0 .3rem; }
.pc-retour { display: inline-flex; align-items: center; min-height: 44px; font-weight: 600; }
.pc-client { font-family: var(--titre); font-size: 1.2rem; font-weight: 600; }
.pc-statut { font-size: .9rem; color: var(--texte-2); margin: .1rem 0 .5rem; }
.pc-progression { display: flex; flex-wrap: wrap; gap: .3rem .7rem; align-items: baseline; margin-bottom: .35rem; }
.pc-progression span { color: var(--texte-2); font-size: .9rem; }
.pc-progression strong { font-family: var(--titre); font-size: 1.15rem; }
.pc-etat.a-preparer { background: var(--voile); color: var(--texte); }
.pc-etat.en-cours { background: var(--ambre-clair); color: var(--ambre-texte); }
.pc-etat.termine { background: var(--vert-clair); color: var(--vert-texte); }
.pc-nav { position: sticky; bottom: 64px; display: flex; justify-content: space-between; gap: .6rem; padding: .7rem 0; background: var(--creme); z-index: 5; }
.pc-nav .btn { flex: 1 1 0; justify-content: center; }
.pc-sauve { text-align: center; margin: .2rem 0 1rem; }
.pc-puces { display: flex; flex-wrap: wrap; gap: .35rem; margin: -.3rem 0 .9rem; }
.pc-puces .btn { min-height: 40px; }
.pc-case-bloc { display: grid; gap: .3rem; }
.pc-detail { width: 100%; min-height: 3em; }
.pc-ajouts { display: grid; gap: .4rem; margin-bottom: .9rem; }
.pc-ajout { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; justify-content: space-between; padding: .4rem .6rem; border: 1.5px solid var(--vert-bord); border-radius: 9px; background: var(--vert-clair); color: var(--vert-texte); }
.pc-ajout .pc-detail { flex: 1 1 100%; }
.pc-ajouter { display: flex; gap: .4rem; }
.pc-ajouter input { flex: 1 1 auto; min-width: 0; min-height: 46px; }
.pc-element { border: 1.5px solid var(--trait); border-radius: 10px; padding: .6rem; margin-bottom: .6rem; background: var(--blanc); }
.pc-element-nom { font-weight: 700; margin-bottom: .4rem; }
.pc-choix { display: flex; flex-wrap: wrap; gap: .35rem; margin-bottom: .45rem; }
.pc-choix .btn { min-height: 44px; }
.pc-choix .btn.choisi { background: var(--charbon); border-color: var(--charbon); color: #fff; }
.pc-element input { width: 100%; min-height: 44px; }
.pc-photos { margin-top: .8rem; }
.pc-photo { margin: 0 0 .7rem; display: grid; gap: .35rem; }
.pc-photo img { max-width: 100%; max-height: 220px; object-fit: contain; border-radius: 8px; background: var(--voile); }
.pc-bouton-photo { cursor: pointer; }
.pc-aucune { font-weight: 600; }
.pc-grise { opacity: .55; }
.pc-recap-tete { display: flex; justify-content: space-between; align-items: center; gap: .5rem; }
.pc-recap-tete h3 { margin: 0; }
.pc-liste { margin: .3rem 0 .4rem; padding-left: 1.1rem; }
.pc-vignettes { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .4rem; }
.pc-vignettes img { width: 96px; height: 72px; object-fit: cover; border-radius: 6px; }
.pc-actions .btn { width: 100%; justify-content: center; margin-bottom: .6rem; }
@media (min-width: 900px) { .pc-nav { bottom: 0; } }

/* 1.22.0 : choix du SMS dans « Ma journée » */
.sms-choix { display: block; min-width: 0; }
.sms-choix > summary { width: 100%; }
.sms-choix[open] { grid-column: 1 / -1; }
.sms-choix > summary { list-style: none; cursor: pointer; transition: none; }
.sms-choix > summary::-webkit-details-marker { display: none; }
.sms-choix[open] > summary { background: var(--bouton-sombre); color: #fff; border-color: var(--bouton-sombre); }
.sms-liste { margin-top: .5rem; display: grid; gap: .45rem; padding: .6rem; border: 1px solid var(--trait-fort); border-radius: 10px; background: var(--blanc); }
.sms-liste .btn { display: flex; flex-direction: column; align-items: flex-start; text-align: left; white-space: normal; gap: .15rem; min-height: 52px; }
.sms-liste .btn .petit { font-weight: 400; overflow-wrap: anywhere; }
.sms-liste > p { margin: 0; }
.sms-modele { margin: .8rem 0; }
.sms-modele .actions { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.sms-modele .actions form { margin: 0; }

/* 1.23.0 : widgets libres dans l'application et dans l'éditeur */
.pc-nc .case.nc-coche, .pc-ajout.nc-coche, .pc-liste.nc-coche, .cases-nc .case:has(input:checked) { color: var(--rouge); font-weight: 600; }
.pc-nc .case.nc-coche input, .cases-nc .case:has(input:checked) input { accent-color: var(--rouge); }
.pc-photo-actions { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .4rem; }
.pc-photo-actions .btn { min-height: 44px; min-width: 44px; }
.pc-photo-ajout { display: grid; gap: .5rem; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin: .6rem 0; }
.pc-photo img { width: 100%; height: auto; max-height: 260px; object-fit: contain; background: var(--voile); border-radius: 8px; display: block; }
.pc-vignettes figure { margin: 0; display: inline-block; vertical-align: top; max-width: 46%; margin: 0 .4rem .4rem 0; }
.pc-vignettes figure img { max-width: 100%; height: auto; max-height: 120px; object-fit: contain; }
.pc-vignettes figcaption { font-size: .8rem; color: var(--texte-2); }
.pc-tarifs { display: grid; gap: .5rem; }
.pc-tarif { border: 1px solid var(--trait); border-radius: 10px; padding: .55rem .7rem; display: grid; gap: .4rem; grid-template-columns: 1fr auto; align-items: center; }
.pc-tarif.choisi { border-color: var(--trait-fort); background: var(--papier); }
.pc-tarif .case { grid-column: 1 / -1; min-height: 44px; }
.pc-quantite { display: flex; align-items: center; gap: .5rem; }
.pc-quantite input { width: 5.5em; min-height: 44px; }
.pc-montant { text-align: right; }
.pc-total { font-size: 1.1rem; margin: .8rem 0; }
.pc-modeles { border: 0; padding: 0; margin: 0 0 .8rem; display: grid; gap: .45rem; }
.pc-modeles legend { font-weight: 600; margin-bottom: .4rem; }
.pc-modele { border: 1px solid var(--trait); border-radius: 10px; padding: .55rem .7rem; min-height: 52px; align-items: center; }
.pc-modele > span { display: flex; flex-direction: column; }
.pc-texte-fixe { background: var(--voile); border-radius: 8px; padding: .6rem .75rem; margin: .5rem 0; color: var(--texte); }
.pc-apercu { position: fixed; inset: 0; z-index: 50; background: var(--creme); display: flex; flex-direction: column; }
.pc-apercu-barre { display: flex; justify-content: space-between; align-items: center; gap: .6rem; padding: .6rem .85rem; border-bottom: 1px solid var(--trait); }
.pc-apercu iframe { flex: 1; border: 0; width: 100%; background: #e9e5de; }
.ajout-widget .ajout-ligne, .details-champs .ajout-ligne { display: flex; flex-wrap: wrap; gap: .6rem; align-items: flex-end; }
.ajout-widget .ajout-ligne .champ, .details-champs .ajout-ligne .champ { flex: 1 1 220px; margin: 0; }
.champ-perso { border: 1px dashed var(--trait-fort); border-radius: 10px; padding: .6rem .7rem; margin: .6rem 0; }
.champ-perso-tete { display: flex; justify-content: space-between; align-items: center; gap: .5rem; flex-wrap: wrap; margin-bottom: .4rem; }
.photos-form { display: grid; gap: .8rem; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.photo-form { margin: 0; border: 1px solid var(--trait); border-radius: 10px; padding: .5rem; }
.photo-form img { width: 100%; height: auto; max-height: 200px; object-fit: contain; display: block; background: var(--voile); border-radius: 6px; }
.tarifs-form input[type="number"], .tarifs-form input[inputmode] { min-height: 40px; }
.historique-correction { border-top: 1px solid var(--trait); padding: .5rem 0; }
.historique-correction > summary { cursor: pointer; min-height: 40px; display: flex; align-items: center; color: var(--lien); font-weight: 600; }

/* 1.24.0 : date et technicien imposés dans la fenêtre 2 */
.pc-fixe { display: flex; flex-direction: column; gap: .15rem; padding: .65rem .8rem; margin: .6rem 0; border: 1px solid var(--trait); border-radius: 10px; background: var(--voile); }
.pc-fixe-lib { font-weight: 600; font-size: .9rem; color: var(--texte); }
.pc-fixe strong { font-size: 1.05rem; color: var(--texte); }
.pc-fixe .petit { color: var(--texte-2); }

/* 2.0.0 : bouton « Se déconnecter » */
.form-deconnexion { display: inline; margin: 0; }
.lien-deconnexion { background: none; border: 0; padding: .35rem 0; min-height: 32px; font: inherit; text-decoration: underline; cursor: pointer; color: var(--lien); }
.menu-pied .lien-deconnexion { color: #e9c9b5; }
.terrain-tete .lien-deconnexion { color: #f0d6c6; font-size: .85rem; }
.menu-pied .form-deconnexion { display: block; }
.form-connexion .case { margin: .4rem 0 .8rem; }

/* 2.4.0 : adresse d'intervention en une seule case, avec la liste des adresses proposées */
.adresse-intervention { position: relative; }
.adresse-propositions { list-style: none; margin: -.4rem 0 .6rem; padding: .25rem; border: 1.5px solid var(--trait-fort); border-radius: 10px; background: var(--blanc); box-shadow: var(--ombre); }
.adresse-propositions li { padding: .75rem .7rem; min-height: 44px; border-radius: 8px; cursor: pointer; line-height: 1.3; }
.adresse-propositions li + li { border-top: 1px solid var(--trait); }
.adresse-propositions li:hover, .adresse-propositions li.actif { background: var(--brique-voile); }
.adresse-message { margin: -.3rem 0 .6rem; }
.adresse-message.attention { color: var(--ambre-texte); background: var(--ambre-clair); border: 1px solid var(--ambre-bord); border-radius: 8px; padding: .5rem .7rem; }
.adresse-message.ok { color: var(--vert-texte); font-weight: 600; }

/* 2.7.0 : fenêtre 1 du certificat (terrain) — petit bouton « Modifier les coordonnées », assez haut pour le doigt */
.pc-coordonnees .btn-petit { min-height: 44px; }

/* 2.8.0 : page de rendez-vous — poêle à granulés, confirmation de la marque HOBEN */
.hoben-question { display: none; margin: .2rem 0 1rem; }
form:has(select[data-type-appareil] option[value="Poêle à granulés HOBEN"]:checked) .hoben-question { display: block; }
.hoben-question .case { min-height: 44px; }
.fenetre-hoben { max-width: min(30rem, calc(100vw - 2rem)); border: 0; border-radius: 14px; padding: 1.3rem 1.2rem; background: var(--papier); color: var(--texte); box-shadow: 0 18px 50px rgba(0, 0, 0, .35); }
.fenetre-hoben::backdrop { background: rgba(20, 20, 24, .6); }
.fenetre-hoben h2 { margin: 0 0 .7rem; font-size: 1.2rem; line-height: 1.3; }
.fenetre-hoben p { margin: 0 0 1.1rem; }
.actions-hoben { display: flex; flex-direction: column; gap: .6rem; }
.actions-hoben .btn { width: 100%; min-height: 48px; white-space: normal; }
.hoben-question { border: 1px solid var(--trait); border-radius: var(--rayon); padding: .8rem .9rem .3rem; }
.hoben-question > p { margin: 0 0 .5rem; }

/* 2.9.0 : PDF des certificats — état et boutons */
.pdf-bloc { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem .6rem; }
.pdf-bloc .pdf-boutons { display: flex; flex-wrap: wrap; gap: .45rem; width: 100%; }
.pdf-bloc.compact .pdf-boutons { width: auto; }
.pdf-bloc .pdf-relance { margin: 0; }
.pdf-etat { display: inline-block; font-size: .8rem; font-weight: 700; padding: .12rem .55rem; border-radius: 999px; border: 1px solid; white-space: nowrap; }
.pdf-ok { background: var(--vert-clair); border-color: var(--vert-bord); color: var(--vert-texte); }
.pdf-attente { background: var(--ambre-clair); border-color: var(--ambre-bord); color: var(--ambre-texte); }
.pdf-echec { background: var(--rouge-clair); border-color: var(--rouge-bord); color: var(--rouge-texte); }
.pdf-aucun { background: transparent; border-color: var(--trait-fort); color: var(--texte-2, var(--texte)); }
.histo .pdf-bloc { margin-top: .35rem; }
.page-impression-pdf .pdf-cadre { display: block; width: 100%; max-width: 210mm; height: calc(100vh - 170px); min-height: 420px; margin: 0 auto; border: 0; background: #fff; box-shadow: 0 2px 14px rgba(0,0,0,.22); }
.pc-pdf, .pdf-carte .pdf-bloc { margin: .7rem 0; }
.pc-pdf .pdf-boutons, .carte > .pdf-boutons { display: flex; flex-wrap: wrap; gap: .45rem; align-items: center; margin: .5rem 0; }
.pc-pdf .pdf-boutons .btn { flex: 1 1 auto; min-height: 44px; }
.pdf-intervention { margin-top: .8rem; display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }

/* 2.10.0 : configuration des e-mails — constats DNS */
.dns-constats ul { padding-left: 0; list-style: none; }
.dns-constats li { padding: .35rem .5rem .35rem 1.7rem; position: relative; border-radius: 8px; margin-bottom: .35rem; font-size: .92rem; }
.dns-constats li::before { position: absolute; left: .5rem; top: .35rem; font-weight: 700; }
.dns-constats li.ok { background: var(--vert-clair); color: var(--vert-texte); } .dns-constats li.ok::before { content: '✓'; }
.dns-constats li.attention { background: var(--ambre-clair); color: var(--ambre-texte); } .dns-constats li.attention::before { content: '!'; }
.dns-constats li.erreur { background: var(--rouge-clair); color: var(--rouge-texte); } .dns-constats li.erreur::before { content: '✕'; }
.dns-releve code { font-size: .82rem; word-break: break-all; }

/* 2.11.0 : deuxième appareil sur la page de rendez-vous */
.appareil2 { display: none; border: 1px solid var(--trait); border-radius: var(--rayon); padding: .8rem .9rem .2rem; margin: .2rem 0 1rem; }
form:has([data-appareil2]:checked) .appareil2 { display: block; }
.hoben-question2 { display: none; margin: .2rem 0 1rem; border: 1px solid var(--trait); border-radius: var(--rayon); padding: .8rem .9rem .3rem; }
form:has([data-appareil2]:checked):has(select[data-type-appareil2] option[value="Poêle à granulés HOBEN"]:checked) .hoben-question2 { display: block; }
.hoben-question2 .case, .case-appareil2 { min-height: 44px; }

/* 2.11.0 : installations des fiches clients */
.installation-saisie { border: 1px solid var(--trait); border-radius: var(--rayon); padding: .8rem .9rem .3rem; margin: 0 0 .9rem; background: var(--papier); }
.installation-saisie.retiree { opacity: .75; }
.installation-saisie h3 { margin: 0 0 .5rem; font-size: 1.02rem; }
.installation-nouvelle { margin: .2rem 0 .8rem; }
.installation-nouvelle > summary { list-style: none; display: inline-flex; cursor: pointer; margin-bottom: .7rem; }
.installation-nouvelle > summary::-webkit-details-marker { display: none; }
.entete-carte { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem; }
.entete-carte h2 { margin: 0; }
.installations-cartes { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: .9rem; margin-top: .8rem; }
.installation-carte { border: 1px solid var(--trait); border-radius: var(--rayon); padding: .8rem .9rem; }
.installation-carte h3 { margin: 0 0 .4rem; font-size: 1.05rem; }
.installation-carte .actions { margin-top: .6rem; display: flex; flex-wrap: wrap; gap: .45rem; }
.installations-rdv { border: 1px solid var(--trait); border-radius: var(--rayon); padding: .7rem .9rem .2rem; margin: 0 0 1rem; }
.installations-rdv .case { min-height: 44px; }
.certificats-installations { margin-top: .8rem; display: grid; gap: .6rem; }
.certificat-installation { display: flex; flex-wrap: wrap; gap: .45rem .6rem; align-items: center; padding: .55rem .7rem; border: 1px solid var(--trait); border-radius: var(--rayon); }
.etape-installation { font-weight: 600; margin-top: .2rem; }

/* 2.13.0 : fiche incomplète et petite boîte d'e-mail au client */
.fiche-incomplete { display: flex; flex-wrap: wrap; gap: .6rem 1rem; align-items: center; justify-content: space-between; margin-bottom: 1rem; }
.fiche-incomplete .actions { margin: 0; }
.fenetre-email { width: min(40rem, calc(100vw - 2rem)); max-height: calc(100vh - 2rem); overflow: auto; border: 0; border-radius: 14px; padding: 1.3rem 1.2rem; background: var(--papier); color: var(--texte); box-shadow: 0 18px 50px rgba(0, 0, 0, .35); }
.fenetre-email::backdrop { background: rgba(20, 20, 24, .6); }
.fenetre-email h2 { margin: 0 0 .5rem; font-size: 1.2rem; }
.fenetre-email textarea { min-height: 14rem; }
.fenetre-email[open]:not(:modal) { position: fixed; inset: 1rem; margin: auto; z-index: 50; }

/* 2.14.0 : sélection de plusieurs clients et suppression */
.barre-selection { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: center; padding: .55rem .7rem; margin-bottom: .8rem; border: 1px solid var(--bord, #ddd); border-radius: 10px; background: var(--voile, #f6f3ee); }
.barre-selection .case { margin: 0; }
.barre-selection [data-supprimer-selection] { margin-left: auto; }
.barre-selection [data-supprimer-selection][disabled] { opacity: .45; }
.table .col-case { width: 2.6rem; text-align: center; }
.table .col-case input { width: 1.25rem; height: 1.25rem; accent-color: var(--braise, #a6402a); }
tr.selectionnee td { background: var(--rouge-clair, #fbeae6); }
.btn-lien-danger { color: var(--rouge); border-color: transparent; background: transparent; }
@media (max-width: 760px) { .table.empilable td.col-case { width: auto; } }

/* 2.15.0 : ordre d'affichage des widgets (éditeur des modèles) */
.champ-ordre { display: inline-flex; align-items: center; gap: .4rem; font-size: .85rem; font-weight: 600; }
.champ-ordre input { width: 5.5rem; min-height: 38px; padding: .3rem .5rem; font: inherit; font-weight: 700; text-align: center; border: 1px solid var(--ligne, #ccc); border-radius: 8px; background: var(--papier, #fff); color: inherit; }
.champ-ordre input:invalid { border-color: #b3261e; }
.carte-bloc.vient-de-bouger { outline: 3px solid var(--braise, #c0562b); outline-offset: 2px; transition: outline-color .6s; }

/* 2.16.0 : Ma journée — date consultée, jour précédent / aujourd'hui / jour suivant ; interventions à finaliser */
.nav-jour-2 { display: grid; gap: .6rem; margin-bottom: 1rem; }
.date-consultee { display: grid; justify-items: center; text-align: center; padding: .6rem .8rem; border-radius: 12px; background: var(--papier, #fff); border: 1px solid var(--trait, #ddd); }
.date-consultee strong { font-family: var(--titre); font-size: 1.25rem; line-height: 1.25; }
.date-consultee .petit { text-transform: uppercase; letter-spacing: .06em; font-weight: 700; }
.nav-jour-boutons { display: grid; grid-template-columns: 1fr auto 1fr; gap: .5rem; }
.nav-jour-boutons .btn { min-height: 48px; padding-inline: .6rem; white-space: nowrap; }
.choix-date { margin: 0; }
@media (max-width: 380px) { .nav-jour-boutons { grid-template-columns: 1fr 1fr; } .nav-jour-boutons [data-aujourdhui] { grid-column: 1 / -1; grid-row: 2; } }
.a-reprendre { border-left: 5px solid var(--braise, #c0562b); }
.a-reprendre li { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: center; justify-content: space-between; }
.pc-a-reprendre { border-left-color: var(--braise, #c0562b); }
.pc-date-reelle { margin: .2rem 0 .3rem; font-size: .95rem; }
.pc-reprise { margin: .5rem 0 0; }

/* 2.16.0 : remise du certificat validé (télécharger, envoyer par mail, QR code) */
.remise-boutons { display: grid; gap: .6rem; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); margin: .6rem 0; }
.remise-boutons .btn { min-height: 52px; justify-content: center; text-align: center; }
.remise-boutons .btn small { display: block; font-weight: 400; }
.remise-attente .btn { opacity: .5; pointer-events: none; }
.remise-email { margin: .6rem 0; padding: .8rem; border: 1px solid var(--trait, #ddd); border-radius: 12px; background: var(--fond, #faf7f2); }
.remise-ok { color: #1f6b3a; font-weight: 700; }
.remise-erreur { color: #b3261e; font-weight: 700; }
.pdf-liens { margin-top: .4rem; }
.fenetre-qr { text-align: center; }
.qr-certificat { width: min(320px, 78vw); margin: .6rem auto; background: #fff; padding: .4rem; border-radius: 10px; }
.qr-certificat svg { width: 100%; height: auto; display: block; }
.pc-qr { position: fixed; inset: 0; z-index: 60; display: grid; place-items: center; padding: 1rem; background: rgba(20, 20, 24, .7); }
.pc-qr-boite { width: min(26rem, 100%); max-height: calc(100vh - 2rem); overflow: auto; background: var(--papier, #fff); color: var(--texte, #222); border-radius: 16px; padding: 1.2rem; text-align: center; }
.pc-qr-boite h2 { margin: 0 0 .4rem; font-size: 1.2rem; }

/* 2.16.0 : un élément amené à l'écran (lien, bouton) ne se cache pas sous la barre du bas de l'application */
html:has(.onglets) { scroll-padding-bottom: 96px; scroll-padding-top: 16px; }

/* 2.17.0 : application des techniciens — trois journées (hier, aujourd'hui, demain) et onglets « À faire » / « Terminés » */
.jours-appli { display: grid; grid-template-columns: repeat(3, 1fr); gap: .4rem; margin-bottom: .6rem; }
.jour-appli { display: grid; justify-items: center; gap: .1rem; min-height: 56px; padding: .45rem .3rem; border: 1px solid var(--trait-fort, #ccc); border-radius: 12px; background: var(--papier, #fff); color: var(--texte, #222); text-decoration: none; text-align: center; }
.jour-appli strong { font-size: 1rem; }
.jour-appli span { font-size: .85rem; font-variant-numeric: tabular-nums; }
.jour-appli.actif { background: var(--lien, #a2432c); border-color: var(--lien, #a2432c); color: #fff; }
.date-consultee-2 { margin: 0 0 .6rem; text-align: center; }
.onglets-tournee { display: grid; grid-template-columns: 1fr 1fr; gap: 0; margin-bottom: 1rem; border-bottom: 2px solid var(--trait-fort, #ccc); }
.onglet-tournee { display: flex; align-items: center; justify-content: center; min-height: 48px; font-weight: 700; text-decoration: none; color: var(--gris, #666); border: 0; background: none; font: inherit; font-weight: 700; cursor: pointer; }
.onglet-tournee.actif { color: var(--lien, #a2432c); box-shadow: inset 0 -3px 0 var(--lien, #a2432c); }
.pc-jour-absent { text-align: center; }

/* ── 2.18.0 : paiements et photo du chèque ── */
.paiement-a_regler, .paiement-partiel { background: var(--ambre-clair); color: var(--ambre); }
.paiement-a_pointer { background: var(--bleu-clair); color: var(--bleu); }
.paiement-pointe { background: var(--vert-clair); color: var(--vert); }
.totaux-paiements { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: .6rem; margin: 0 0 1rem; }
.totaux-paiements div { border: 1.5px solid var(--trait); border-radius: 12px; padding: .65rem .8rem; background: var(--blanc); }
.totaux-paiements span, .totaux-paiements small { display: block; color: var(--gris); font-size: .85rem; }
.totaux-paiements b { display: block; font-size: 1.45rem; font-family: var(--titre); font-variant-numeric: tabular-nums; }
.filtres-paiements { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 0 .8rem; align-items: end; }
.filtres-paiements .champ-large { grid-column: 1 / -1; }
.filtres-paiements .actions { margin-bottom: .85rem; }
.paiements-liste { display: grid; gap: .8rem; }
.paiement-dossier { border: 1.5px solid var(--trait); border-radius: 12px; padding: .75rem .85rem; background: var(--blanc); min-width: 0; }
.paiement-dossier[data-statut="a_pointer"] { border-left: 5px solid var(--bleu); }
.paiement-dossier[data-statut="a_regler"], .paiement-dossier[data-statut="partiel"] { border-left: 5px solid var(--ambre); }
.paiement-dossier[data-statut="pointe"] { border-left: 5px solid var(--vert); }
.paiement-tete { display: flex; justify-content: space-between; gap: .6rem; align-items: flex-start; flex-wrap: wrap; }
.paiement-montants { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: .4rem .8rem; margin: .6rem 0; }
.paiement-montants dt { font-size: .8rem; color: var(--gris); }
.paiement-montants dd { margin: 0; font-weight: 700; font-variant-numeric: tabular-nums; }
.paiement-outils details { margin-top: .5rem; }
.paiement-form { margin-top: .6rem; }
.table-reglements form { margin: .1rem 0; }
.photo-cheque summary { cursor: pointer; color: var(--lien, #a2432c); font-weight: 600; }
.photo-cheque img { display: block; max-width: min(100%, 420px); height: auto; margin: .4rem 0; border: 1px solid var(--trait); border-radius: 8px; }
.mention-cheque, .pc-mention-pointe { font-weight: 600; color: var(--vert); }
.pc-reglement { margin-top: 1rem; padding-top: .8rem; border-top: 1.5px dashed var(--trait-fort); }
.pc-reglement-bloc { border: 1.5px solid var(--trait); border-radius: 12px; padding: .7rem; margin: .6rem 0; background: var(--blanc); }
.pc-montant-recu { display: flex; flex-wrap: wrap; gap: .5rem; align-items: flex-end; }
.pc-montant-recu .champ { flex: 1 1 180px; margin-bottom: .4rem; }
.pc-montant-recu .btn { margin-bottom: .45rem; }
.pc-cheque { margin-top: .5rem; }
.pc-cheque h4, .pc-reglement-bloc h4 { margin: .2rem 0 .4rem; }
.pc-cheque-image { margin: .3rem 0 .5rem; }
.pc-cheque-image img { display: block; width: 100%; max-width: 520px; height: auto; border: 1px solid var(--trait); border-radius: 10px; }
.pc-cheque-image figcaption { font-size: .85rem; color: var(--gris); margin-top: .3rem; }
.pc-cheque-envoyee { color: var(--vert); font-weight: 600; }

/* ── 2.19.0 : menu déroulant à plusieurs réponses ── */
.liste-multiple { position: relative; }
.liste-multiple > summary { list-style: none; display: flex; align-items: center; justify-content: space-between; gap: .6rem; min-height: 46px; padding: .55em .7em; border: 1.5px solid var(--trait-fort); border-radius: 9px; background: var(--blanc); cursor: pointer; font-weight: 400; }
.liste-multiple > summary::-webkit-details-marker { display: none; }
.liste-multiple > summary::after { content: '▾'; flex: none; color: var(--gris); }
.liste-multiple[open] > summary::after { content: '▴'; }
.liste-multiple > summary > span { min-width: 0; overflow-wrap: anywhere; }
.liste-multiple-options, .liste-multiple > .pc-cases { display: grid; gap: .35rem; margin-top: .35rem; padding: .5rem; border: 1.5px solid var(--trait); border-radius: 9px; background: var(--blanc); max-height: 320px; overflow-y: auto; }
.doc-liste-multiple { margin: .1rem 0; }

/* ── 2.21.0 : bouton activable (interrupteur) ── */
.case.interrupteur input[role="switch"] { appearance: none; -webkit-appearance: none; width: 44px; height: 26px; border-radius: 99px; background: var(--trait-fort); position: relative; cursor: pointer; transition: background .15s; margin: 0; }
.case.interrupteur input[role="switch"]::after { content: ''; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.3); transition: left .15s; }
.case.interrupteur input[role="switch"]:checked { background: var(--brique); }
.case.interrupteur input[role="switch"]:checked::after { left: 21px; }
.case.interrupteur input[role="switch"]:focus-visible { outline: 3px solid var(--lien, #a2432c); outline-offset: 2px; }

/* ── 2.22.0 : planning journée / semaine ── */
.bascule-planning { display: inline-flex; gap: 0; margin: 0 0 1rem; border: 1.5px solid var(--trait-fort); border-radius: 11px; overflow: hidden; }
.bascule-planning .btn { border: 0; border-radius: 0; min-width: 9.5rem; justify-content: center; }
.bascule-planning .btn + .btn { border-left: 1.5px solid var(--trait-fort); }
.bascule-planning .btn.actif { font-weight: 700; box-shadow: inset 0 -3px 0 rgba(0,0,0,.18); }
.choix-date { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .6rem; margin: 0 0 1rem; }
.choix-date label { font-weight: 600; font-size: .9rem; }
.choix-date input[type="date"] { min-height: 40px; padding: .35em .6em; border: 1.5px solid var(--trait-fort); border-radius: 9px; background: var(--blanc); }
.nav-planning-jour { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin: 0 0 1rem; }
.nav-planning-jour .choix-date { margin: 0 0 0 auto; }
.date-planning-jour { font-family: var(--titre); font-size: 1.25rem; font-weight: 600; }
.planning-jour { display: grid; grid-template-columns: repeat(var(--nb-colonnes, 2), minmax(0, 1fr)); gap: 1rem; align-items: start; }
.pj-colonne { background: var(--blanc); border: 1.5px solid var(--trait); border-radius: 12px; padding: .7rem .8rem; min-width: 0; }
.pj-equipe { font-size: 1.1rem; margin: 0 0 .5rem; padding-bottom: .4rem; border-bottom: 2px solid var(--trait-fort); display: flex; flex-wrap: wrap; gap: .3rem .5rem; align-items: baseline; }
.pj-numero { color: var(--brique); }
.pj-nb { font-family: var(--texte, inherit); font-size: .8rem; font-weight: 400; color: var(--gris); margin-left: auto; }
.pj-periode + .pj-periode { margin-top: .6rem; padding-top: .6rem; border-top: 1.5px dashed var(--trait-fort); }
.pj-periode h3 { font-size: .85rem; text-transform: uppercase; letter-spacing: .05em; color: var(--gris); margin: 0 0 .4rem; }
.pj-rdvs { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; }
.pj-rdv a { display: grid; gap: .1rem; padding: .5rem .6rem; border: 1.5px solid var(--trait); border-left: 4px solid var(--brique); border-radius: 9px; text-decoration: none; color: inherit; background: var(--fond, transparent); }
.pj-rdv a:hover, .pj-rdv a:focus-visible { border-color: var(--brique); }
.pj-rdv.fait a { border-left-color: var(--vert); }
.pj-creneau { font-size: .8rem; font-weight: 600; color: var(--brique); }
.pj-commune, .pj-prestation { font-size: .88rem; color: var(--texte-2, inherit); overflow-wrap: anywhere; }
.pl-jour a.pl-date { color: inherit; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.pl-jour.jour-choisi { outline: 3px solid var(--braise); outline-offset: 1px; }
@media (max-width: 700px) { .planning-jour { grid-template-columns: 1fr; } .nav-planning-jour .choix-date { margin-left: 0; } .bascule-planning { display: flex; } .bascule-planning .btn { flex: 1; min-width: 0; } }
@media print { .planning-jour { grid-template-columns: repeat(var(--nb-colonnes, 2), 1fr); } .pj-rdv a { break-inside: avoid; } }

/* ── 2.23.0 : planning journée — capacité, réservation en ligne, transfert ── */
.pj-capacite { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .2rem .6rem; font-size: .85rem; margin: 0 0 .4rem; padding: .35rem .5rem; border-radius: 8px; background: var(--voile); }
.pj-restantes { font-weight: 600; }
.pj-alerte { color: var(--rouge); font-weight: 700; }
.pj-periode.depassement .pj-capacite { background: var(--rouge-clair); }
.pj-reglages { margin: 0 0 .5rem; font-size: .88rem; }
.pj-reglages summary { cursor: pointer; color: var(--lien, #a2432c); font-weight: 600; }
.pj-form { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .4rem .5rem; margin: .4rem 0; }
.pj-form label { display: grid; gap: .15rem; font-weight: 600; font-size: .82rem; }
.pj-form input[type="number"] { width: 6.5rem; min-height: 38px; padding: .3em .5em; border: 1.5px solid var(--trait-fort); border-radius: 8px; background: var(--blanc); }
.pj-en-ligne, .pj-en-ligne-equipe { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .35rem .6rem; margin: .4rem 0; font-size: .85rem; }
.pj-en-ligne-equipe { padding: .35rem .5rem; border: 1.5px dashed var(--trait-fort); border-radius: 8px; margin-bottom: .6rem; }
.pj-transfert { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .5rem; margin: .3rem 0 0; padding: 0 .2rem; }
.pj-transfert .btn { min-height: 36px; }
.pj-vers { display: flex; gap: .3rem; align-items: center; font-size: .82rem; }
.pj-vers select { min-height: 36px; border-radius: 8px; border: 1.5px solid var(--trait-fort); background: var(--blanc); }
.pj-forcer { display: inline-flex; align-items: center; gap: .3rem; font-size: .78rem; color: var(--gris); }
.en-ligne-jour h2 { font-size: 1.05rem; margin-bottom: .3rem; }
.pj-rdv a .pastille { justify-self: start; }

/* ── 2.24.0 : sauvegardes par type ── */
.sauvegardes-types { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: .8rem; margin: .6rem 0; }
.sauvegarde-type { border: 1.5px solid var(--trait); border-radius: 12px; padding: .75rem .85rem; background: var(--blanc); display: grid; gap: .5rem; align-content: start; min-width: 0; }
.sauvegarde-type h3 { margin: 0; font-size: 1.05rem; }
.sauvegarde-type .btn { width: 100%; white-space: normal; text-align: center; }
.restaurer-type { border-top: 1.5px dashed var(--trait-fort); padding-top: .5rem; }
.restaurer-type .champ { margin-bottom: .4rem; }
.restaurer-type input[type="file"] { max-width: 100%; }

/* ── 2.25.0 : sauvegarde des modèles de certificats ── */
.sauvegardes-modeles .champ { margin-bottom: .4rem; }
.sauvegardes-modeles select, .sauvegardes-modeles input[type="file"] { max-width: 100%; }
.restauration-modeles { border: 1.5px solid var(--trait-fort); border-radius: 12px; padding: .8rem .9rem; margin: .6rem 0 1rem; background: var(--blanc); }
.restauration-modeles h3 { margin-top: 0; }
.restauration-modeles td .case { display: flex; align-items: center; gap: .4rem; min-height: 36px; }
.etat-modele-existe { background: #fdf0d5; color: #7a4a00; }
.etat-modele-absent { background: #e3f3e6; color: #1d5b2c; }
.cache-ecran { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
:root[data-theme="sombre"] .etat-modele-existe { background: #4a3510; color: #ffd98a; }
:root[data-theme="sombre"] .etat-modele-absent { background: #173d22; color: #a8e2b6; }
@media screen and (prefers-color-scheme: dark) {
  :root[data-theme="auto"] .etat-modele-existe { background: #4a3510; color: #ffd98a; }
  :root[data-theme="auto"] .etat-modele-absent { background: #173d22; color: #a8e2b6; }
}
.liste-modeles-sauvegarde { list-style: none; padding: 0; margin: .6rem 0; display: grid; gap: .5rem; }
.modele-sauvegarde { border: 1.5px solid var(--trait); border-radius: 10px; padding: .6rem .7rem; display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1.2fr); gap: .5rem .8rem; align-items: center; }
.modele-choix { display: flex; gap: .55rem; align-items: flex-start; cursor: pointer; min-width: 0; overflow-wrap: anywhere; }
.modele-choix input { width: 22px; height: 22px; flex: none; margin-top: .1rem; }
.modele-mode { display: flex; flex-wrap: wrap; gap: .35rem .9rem; }
.modele-mode label { display: inline-flex; align-items: center; gap: .35rem; min-height: 36px; cursor: pointer; }
.modele-mode input { width: 20px; height: 20px; }
@media (max-width: 760px) { .modele-sauvegarde { grid-template-columns: 1fr; } .modele-mode { padding-left: 1.9rem; } .modele-etat { padding-left: 1.9rem; } }
.modele-choix input, .modele-mode input { accent-color: var(--brique); }

/* ── 2.27.0 : suivi des clients par code couleur (interne) ── */
.suivi-pastille { display: inline-flex; align-items: center; gap: .35rem; font-size: .85rem; font-weight: 600; vertical-align: middle; }
.suivi-rond { display: inline-block; width: .8rem; height: .8rem; border-radius: 50%; flex: none; box-shadow: 0 0 0 1.5px rgba(0, 0, 0, .25); vertical-align: middle; }
.suivi-vert .suivi-rond { background: #1f9d48; }
.suivi-orange .suivi-rond { background: #ee8a12; }
.suivi-rouge .suivi-rond { background: #d1342a; }
h1 .suivi-rond { width: 1rem; height: 1rem; }
.suivi-carte { border-left: 6px solid var(--trait-fort); }
.suivi-carte-vert { border-left-color: #1f9d48; } .suivi-carte-orange { border-left-color: #ee8a12; } .suivi-carte-rouge { border-left-color: #d1342a; }
.suivi-choix { border: 0; padding: 0; margin: 0 0 .8rem; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: .5rem; }
.suivi-choix legend { font-weight: 600; margin-bottom: .4rem; }
.suivi-option { display: flex; gap: .55rem; align-items: flex-start; border: 1.5px solid var(--trait); border-radius: 10px; padding: .6rem .7rem; cursor: pointer; background: var(--blanc); min-height: 44px; }
.suivi-option input { width: 20px; height: 20px; margin-top: .15rem; flex: none; accent-color: var(--brique); }
.suivi-option:has(input:checked) { border-width: 2px; }
.suivi-option.suivi-vert:has(input:checked) { border-color: #1f9d48; } .suivi-option.suivi-orange:has(input:checked) { border-color: #ee8a12; } .suivi-option.suivi-rouge:has(input:checked) { border-color: #d1342a; }
.suivi-historique { margin-top: .8rem; }
.suivi-historique summary { cursor: pointer; font-weight: 600; min-height: 36px; display: flex; align-items: center; }
.filtre-suivi { display: inline-flex; align-items: center; gap: .4rem; flex: 1 1 260px; min-width: 0; max-width: 100%; }
.filtre-suivi select { min-height: 44px; border-radius: 10px; border: 1.5px solid var(--trait-fort); background: var(--blanc); width: 100%; min-width: 0; text-overflow: ellipsis; }
.rdv .suivi-pastille, .pj-client .suivi-pastille { margin-left: .2rem; }
@media print { .suivi-pastille, .suivi-carte, .filtre-suivi { display: none !important; } }

/* ── 2.28.0 : modèles d'e-mails personnalisés, e-mail depuis la fiche client ── */
.fenetre-email-large { width: min(48rem, calc(100vw - 2rem)); }
.fenetre-email .apercu-email { margin: .6rem 0 .9rem; }
.fenetre-email .apercu-email pre { max-height: 14rem; overflow: auto; }
.champs-email { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; margin: .2rem 0 .8rem; }
.champs-email .btn { min-height: 34px; }
#emails-client .ligne-journal-email summary { display: flex; flex-wrap: wrap; gap: .3rem .6rem; align-items: center; }
#emails-client .ligne-journal-email summary strong { overflow-wrap: anywhere; }

/* ── 2.29.0 : remise sur une prestation (certificat : administration et application des techniciens) ── */
.pc-remise { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.pc-remise label { display: flex; align-items: center; gap: .5rem; }
.pc-remise input { width: 6em; min-height: 44px; }
.pc-remise select { min-height: 44px; border-radius: 8px; border: 1.5px solid var(--trait-fort); background: var(--blanc); }
.pc-net { margin-left: auto; font-weight: 600; }
.pc-brut, .pc-remise-total { font-size: .92rem; }
.tarifs-form .remise-saisie { white-space: nowrap; }
.tarifs-form .remise-saisie input { width: 5.5em; }
.tarifs-form .remise-saisie select { margin-left: .25rem; min-height: 36px; }
