/* Crapou - base : reset, typographie, utilitaires. */
*{box-sizing:border-box}
body{margin:0;font-family:Figtree,system-ui,sans-serif;color:var(--ink);background:var(--bg);line-height:1.55;font-size:15px;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
h1,h2,h3,h4,.dsp{font-family:var(--d);font-weight:700;letter-spacing:-.035em;line-height:1.08;margin:0}
h1{font-size:1.8rem}h2{font-size:1.3rem}h3{font-size:1.05rem}h4{font-size:.95rem;font-family:Figtree;font-weight:600;letter-spacing:0}
p{margin:0}a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}
small,.muted{color:var(--ink-3);font-size:.86rem}

:focus-visible{outline:3px solid rgba(13,15,26,.32);outline-offset:2px;border-radius:var(--r-xs)}
svg.i{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.row{display:flex;align-items:center;gap:10px;min-width:0}
/* Sur un téléphone, une rangée qui refuse de se replier pousse la page
   hors de l'écran : le contenu devient inaccessible à droite, sans le
   moindre indice visible. On replie par défaut sous 640 px. */
@media(max-width:640px){.row{flex-wrap:wrap}}.between{justify-content:space-between}
.stack{display:flex;flex-direction:column;gap:12px}
.mt-1{margin-top:8px}.mt-2{margin-top:16px}.mt-3{margin-top:24px}

/* L'attribut hidden doit gagner sur tout affichage déclaré ailleurs :
   sans cela, un bloc masqué en HTML reste visible dès qu'une classe lui
   impose un display, ce qui laissait des cartouches vides à l'écran. */
[hidden]{display:none!important}

/* ---------------------------------------------------------------------
   Calendrier partagé, vu sans compte.
   Chargé par le gabarit public, qui ne prend ni app.css ni components.css :
   les styles posés ailleurs n'arrivaient jamais jusqu'ici, et la page
   s'affichait comme une liste de mots collés.
   --------------------------------------------------------------------- */
.partage{max-width:900px;margin:0 auto;text-align:left;padding:28px 18px 60px;
  box-sizing:border-box;width:100%}
/* La grille doit pouvoir rétrécir : sans largeur minimale nulle, les
   colonnes gardaient leur taille et la page débordait sur téléphone. */

/* L'adresse du flux d'agenda est longue et d'un seul tenant : sans
   autorisation de coupure, elle poussait la page entière au-delà de
   l'écran sur téléphone. */
.partage code{display:inline-block;max-width:100%;overflow-wrap:anywhere;word-break:break-all;
  font-size:.78rem;background:var(--surface-2);padding:2px 6px;border-radius:6px}
.partage h1{margin:0 0 4px}

