:root{--fond:#0f172a;--carte:#1e293b;--texte:#e5e7eb;--muet:#94a3b8;--accent:#e4121f;--vert:#16a34a;--rouge:#dc2626;--jaune:#f59e0b;--bord:#334155}
*{box-sizing:border-box}body{margin:0;background:var(--fond);color:var(--texte);font:16px/1.45 -apple-system,system-ui,Segoe UI,Roboto,sans-serif;padding-bottom:calc(64px + env(safe-area-inset-bottom))}
a{color:inherit}h1{font-size:1.4rem;margin:.6rem 0}h2{font-size:1.05rem;margin:0 0 .5rem;color:var(--muet)}h3{margin:.3rem 0}
.barre{position:sticky;top:0;z-index:5;display:flex;gap:.6rem;align-items:center;padding:calc(.5rem + env(safe-area-inset-top)) .8rem .5rem;background:#111827;border-bottom:1px solid var(--bord)}
.logo{font-weight:700;text-decoration:none;flex:1}.etat{font-size:.75rem;padding:.15rem .5rem;border-radius:999px;background:var(--bord)}.etat.rouge{background:var(--rouge)}.etat.vert{background:var(--vert)}
.contenu{padding:.8rem;max-width:860px;margin:0 auto}.carte{background:var(--carte);border:1px solid var(--bord);border-radius:12px;padding:.9rem;margin:.7rem 0}.carte.etroite{max-width:380px;margin:2rem auto}
label{display:block;margin:.6rem 0;font-size:.9rem;color:var(--muet)}input,textarea{width:100%;margin-top:.25rem;padding:.6rem;border-radius:8px;border:1px solid var(--bord);background:#0b1220;color:var(--texte);font-size:1rem}
.btn{border:0;border-radius:8px;padding:.55rem .9rem;background:var(--bord);color:#fff;font-size:.95rem;cursor:pointer}.btn.primaire{background:var(--accent)}.btn.vert{background:var(--vert)}.btn.rouge{background:var(--rouge)}.btn.large{width:100%;margin-top:.8rem}.btn.mini{padding:.25rem .5rem;font-size:.8rem}
.inline{display:inline}.alerte{background:#7f1d1d;padding:.6rem;border-radius:8px}.aide{color:var(--muet);font-size:.9rem}
.tuiles{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem}.tuile{background:var(--carte);border:1px solid var(--bord);border-radius:12px;padding:.7rem;text-align:center;text-decoration:none}.tuile b{display:block;font-size:1.6rem}.tuile span{font-size:.75rem;color:var(--muet)}.tuile.rougeatre{border-color:var(--rouge)}
.tableau{width:100%;border-collapse:collapse;font-size:.85rem}.tableau th,.tableau td{text-align:left;padding:.35rem .3rem;border-bottom:1px solid var(--bord);vertical-align:top}
.pastille{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.75rem;background:var(--bord)}.pastille.proposee{background:var(--jaune);color:#000}.pastille.validee{background:#2563eb}.pastille.executee{background:var(--vert)}.pastille.erreur,.pastille.refusee{background:var(--rouge)}.pastille.expiree,.pastille.annulee{background:#475569}
.resume{white-space:pre-wrap;background:#0b1220;padding:.6rem;border-radius:8px;font:inherit;font-size:.92rem}.boutons{display:flex;gap:.5rem;flex-wrap:wrap;align-items:flex-start}.boutons form{display:flex;gap:.4rem;align-items:center}.boutons input{width:auto;margin:0;padding:.45rem}
.onglets{position:fixed;bottom:0;left:0;right:0;display:flex;background:#111827;border-top:1px solid var(--bord);padding-bottom:env(safe-area-inset-bottom)}.onglets a{flex:1;text-align:center;padding:.7rem .2rem;font-size:.8rem;text-decoration:none;color:var(--muet)}.onglets a.actif{color:#fff;font-weight:600}
.badge:not(:empty){background:var(--accent);color:#fff;border-radius:999px;padding:0 .4rem;font-size:.7rem;margin-left:.2rem}.qr{display:block;margin:.5rem auto;width:200px;background:#fff;padding:6px;border-radius:8px}
.rouge{color:#f87171}.vert{color:#4ade80}code{font-size:.85em}.liste{padding-left:1.1rem;margin:0}small{color:var(--muet)}
