    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
    html, body, #root { height: 100%; width: 100%; overflow: hidden; font-family: Inter, system-ui, -apple-system, sans-serif; }
    body { background: #F1F5F9; }
    input, select, textarea, button { font-family: inherit; }
    /* Leaflet z-index fix */
    .leaflet-marker-icon { background: transparent !important; border: none !important; }
    .leaflet-pane { z-index: 400 !important; }
    .leaflet-control { z-index: 800 !important; }
    .leaflet-top, .leaflet-bottom { z-index: 800 !important; }

    /* ====================================================================
       PEAU WOM — demande de Bernard, 2026-09-14 : « use the same UI as we
       use in WOM […] placement of the 3 top-left buttons for My Access,
       Language and Apps, and coloring and font ».

       TOUT est porte sous `.amsw`, et ce n'est pas de la prudence de
       principe : ce meme fichier de style habille l'app COMPLETE (MainApp,
       ses trente-trois ecrans clairs) et l'app RESIDENTIELLE, construites
       depuis ce meme baseline. Des regles nues sur `table`, `input` ou
       `label` — c'est ainsi que WorkOrders_LIVE.css les ecrit, parce qu'il
       est seul chez lui — repeindraient les deux en noir sans que personne
       l'ait demande.

       Les valeurs sont COPIEES de WorkOrders_LIVE.css, pas approchees : le
       but est qu'on ne voie pas la couture en passant d'une app a l'autre.
       ==================================================================== */
    .amsw {
      --bg:#0f172a; --panel:#111c33; --panel2:#16233f; --line:#22314f; --ink:#e6edf7;
      --mut:#93a3bd; --accent:#3b82f6; --accent2:#22d3ee; --good:#22c55e; --warn:#f59e0b;
      --bad:#ef4444; --chip:#1e2b48;
      font-family:'Segoe UI', system-ui, Arial, sans-serif;
      background:var(--bg); color:var(--ink); height:100%;
    }
    .amsw a{color:var(--accent2)}
    .amsw .app{display:grid;grid-template-columns:230px 1fr;height:100vh}
    .amsw .side{background:#0b1428;border-right:1px solid var(--line);display:flex;flex-direction:column;overflow:auto}
    .amsw .brand{padding:16px 16px 12px;border-bottom:1px solid var(--line)}
    .amsw .brand h1{font-size:15px;margin:0;letter-spacing:.3px}
    .amsw .brand small{color:var(--mut);font-size:11px}
    /* La rangee des trois boutons partages (▦ Apps, 🔑 My access, 🌐 langue).
       `app-switcher.js` s'insere lui-meme dans `.brand` ; les deux autres
       exposent `monter(hote)` et se posent ICI, dans un noeud que React ne
       peuple jamais — voir la note de mes-droits.js sur le bouton qui
       clignotait quand un module s'inserait de force dans un noeud React. */
    .amsw .brand .outils{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:10px}
    .amsw .nav{padding:8px}
    .amsw .nav button{display:flex;gap:9px;align-items:center;width:100%;text-align:left;background:none;border:0;color:var(--mut);
      padding:9px 11px;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit}
    .amsw .nav button .ic{width:18px;text-align:center}
    .amsw .nav button:hover{background:var(--panel);color:var(--ink)}
    .amsw .nav button.active{background:var(--accent);color:#fff}
    .amsw .side .foot{margin-top:auto;padding:10px;border-top:1px solid var(--line);font-size:11px;color:var(--mut)}
    .amsw .main{overflow:auto;display:flex;flex-direction:column}
    .amsw .topbar{position:sticky;top:0;z-index:600;background:rgba(15,23,42,.92);
      border-bottom:1px solid var(--line);padding:10px 18px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
    .amsw .topbar h2{margin:0;font-size:16px;flex:0 0 auto}
    .amsw .topbar .spacer{flex:1}
    .amsw .content{padding:18px}
    .amsw .btn{background:var(--panel);border:1px solid var(--accent);color:var(--ink);padding:8px 12px;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit}
    .amsw .btn:hover{border-color:var(--accent)}
    .amsw .btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
    .amsw .btn.good{background:var(--good);border-color:var(--good);color:#04240f}
    .amsw .btn.bad{background:var(--bad);border-color:var(--bad);color:#fff}
    .amsw .btn.sm{padding:5px 9px;font-size:12px}
    .amsw .btn:disabled{opacity:.5;cursor:not-allowed}
    .amsw table{width:100%;border-collapse:collapse;font-size:13px}
    .amsw th, .amsw td{padding:8px 9px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
    .amsw th{color:var(--mut);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.4px;position:sticky;top:0;background:var(--panel)}
    .amsw tr:hover td{background:var(--panel2)}
    .amsw .tbl-wrap{max-height:62vh;overflow:auto;border:1px solid var(--line);border-radius:10px}
    .amsw .muted{color:var(--mut)}
    .amsw .right{text-align:right}
    .amsw .card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px}
    .amsw .chip{background:var(--chip);border:1px solid var(--line);border-radius:999px;padding:2px 9px;font-size:12px;display:inline-block}
    .amsw input, .amsw select, .amsw textarea{background:var(--bg);border:1px solid var(--line);color:var(--ink);border-radius:8px;padding:8px;font-size:13px;width:100%;font-family:inherit}
    .amsw label{font-size:12px;color:var(--mut);display:block;margin:8px 0 3px}
    .amsw .flt{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
    .amsw .flt input, .amsw .flt select{width:auto;min-width:130px}
    .amsw .grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
    .amsw .grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
    .amsw .bandeau{padding:10px 18px;border-bottom:1px solid var(--line);font-size:12.5px;line-height:1.5;color:var(--mut);background:var(--panel)}
    .amsw .bandeau.alarme{background:rgba(239,68,68,.12);color:#fecaca;border-bottom-color:var(--bad)}
    .amsw .pastille{font-size:11px;font-weight:700;background:#065f46;color:#d1fae5;padding:3px 9px;border-radius:6px}
    /* Placeholder des champs de recherche : lisible sans crier (le gris par defaut se perdait sur le fond sombre). */
    .amsw input[type=search]::placeholder,
    .amsw input[placeholder*="search" i]::placeholder, .amsw input[placeholder*="chercher" i]::placeholder,
    .amsw input[placeholder*="buscar" i]::placeholder, .amsw input[placeholder*="filt" i]::placeholder,
    .amsw input[placeholder*="find" i]::placeholder, .amsw input[placeholder^="🔍"]::placeholder{color:#93c5fd;opacity:1}
    /* Le lien vers une fiche — le MEME jaune que le WOM (WorkOrders_LIVE.css,
       `.lnk`) : d'une application a l'autre, jaune veut dire « cliquer ouvre la
       fiche ». */
    .amsw .lnk{color:#fde68a;cursor:pointer;border-bottom:1px dotted rgba(253,230,138,.45)}
    .amsw .lnk:hover{color:#fffbe6;border-bottom-color:#fde68a}
    .amsw .lnk code{color:inherit}