/* ═══════════════════════════════════════════════════════════════════════════════
   joynuz.css — SOURCE UNIQUE DU DESIGN
   ═══════════════════════════════════════════════════════════════════════════════
   Pourquoi ce fichier existe (mesuré le 2026-07-12, pas supposé) :
     · 7 pages portaient chacune leur <style> complet, leur :root, leur copie du matériau.
     · 146 copies redondantes / 813 règles = 18 % du CSS était du copier-coller.
     · Le même point-virgule manquant a dû être corrigé 4 fois — c'était UN bug, copié.
     · Et surtout : `.metal` avait TROIS corps différents, `.emboss` TROIS, `.brand` QUATRE.
       Le « matériau platine » n'était pas un matériau : c'en était trois. La dérive était
       invisible parce qu'aucun endroit ne disait ce que le matériau EST.

   Conséquence : ce n'est pas une accumulation de bugs de design, c'est une architecture
   qui rend le bug de design inévitable. Un composant neuf ne peut pas HÉRITER du matériau ;
   il faut le RETAPER — d'où le bouton plat, le trou noir, les champs orphelins.

   Modèle : trois couches (standard de l'industrie — Material, Carbon, Polaris convergent).
     1. PRIMITIVES  — les valeurs brutes (#e8463a). Jamais citées par un composant.
     2. SÉMANTIQUE  — le sens (--accent, --danger, --on-light). Ce que les composants citent.
     3. COMPOSANTS  — ne connaissent que le sémantique. Un bouton ne sait pas qu'il est rouge :
                      il sait qu'il porte l'accent. C'est ce qui rend le thème possible DEMAIN
                      sans refonte (un thème = un second bloc de tokens, rien d'autre).

   Joynuz faisait DÉJÀ ça à moitié : `.team-a{--accent:var(--red)}` / `.team-b{...--blue}`.
   L'architecture était juste ; il lui manquait un DOMICILE.
   ═══════════════════════════════════════════════════════════════════════════════ */


/* ─────────────────────────────────────────────────────────────────────────────
   COUCHE 0 — RESET
   Ligne la plus fondamentale de toute base CSS, et pourtant ABSENTE de la première version
   de ce fichier : chaque page la portait dans son propre <style>, l'extraction l'a laissée
   tomber. Conséquence : `.field{width:100%;padding:11px 13px}` en content-box débordait sa
   colonne de 26px — les champs prénom/email SE CHEVAUCHAIENT (constaté par Ben, 12/07).
   L'inventaire l'avait pourtant affiché (« * — 2 variantes sur 8 pages ») : la donnée était
   à l'écran, je ne l'ai pas lue. C'est exactement pourquoi render-check.py existe désormais.
   ───────────────────────────────────────────────────────────────────────────── */
*, *::before, *::after{ box-sizing:border-box; }
img, svg{ max-width:100%; }


/* ─────────────────────────────────────────────────────────────────────────────
   COUCHE 1 + 2 — TOKENS
   27 tokens étaient déjà strictement identiques sur les 7 pages : ils sont repris tels quels.
   4 divergeaient : arbitrés ci-dessous, valeur retenue annotée.
   ───────────────────────────────────────────────────────────────────────────── */
:root{
  /* — primitives : fonds & encres — */
  --bg:#0c0d10;
  --surface-2:#1e2128;
  --ink:#f4f6f8;
  --ink-muted:#9aa4ad;
  --white:#ffffff;                 /* ARBITRÉ : #fff / #ffffff → normalisé */
  --on-white:#0c0d10;
  --on-light:#16181d;              /* encre sur surface claire (bouton .cta) */

  /* — primitives : couleurs d'équipe — */
  --red:#e8463a;      --red-text:#ff6a5e;
  --blue:#3b7bf0;     --blue-text:#5b93f7;
  --success-text:#4ade80;
  --danger-text:#e8574c;
  --danger-deep:#c23a2f;           /* ARBITRÉ : #c23a2f (organizer) / #d23a2e (manage) */

  /* — primitives : matière — */
  --line:#2a2e36;
  --shade:#000;              /* utilisé par .preview-flag (group.html) */
  --focus:#8ab4ff;
  --metal-grad:linear-gradient(135deg,#3b3f47 0%,#2a2d33 30%,#34373f 50%,#202327 72%,#2e3138 100%);
  --code-grad:linear-gradient(180deg,#fdfdfe 0%,#d6dade 55%,#c3c9d1 100%);
  --metal-light:#e9edf1;
  --metal-hi:#41454d;
  --emboss-ink:#eef1f4;
  --metal-muted:#c2c8cf;
  --chip:#c9cdd4;
  --chip-line:#80858d;

  /* — typographie — */
  --font-body:'Inter',system-ui,sans-serif;
  --font-display:'Archivo',system-ui,sans-serif;
  --font-mono:'DM Mono',ui-monospace,monospace;

  /* — géométrie & mouvement — */
  --radius:18px;
  --radius-sm:10px;
  --r-lg:18px;                     /* ARBITRÉ : 18px / 20px → 18px (aligné sur --radius) */
  --ease:cubic-bezier(.2,.8,.25,1);/* ARBITRÉ : 5 pages sur 6 → la courbe la plus vive */
  --sp-4:16px;

  /* — SÉMANTIQUE par défaut : l'accent est ROUGE tant qu'aucune équipe n'est déclarée — */
  --accent:var(--red);
  --accent-text:var(--red-text);
}

/* NOTE : `--surface` (#16181d) a été SUPPRIMÉ. Il était déclaré sur les 7 pages et utilisé
   ZÉRO fois — c'est le fond plat que design-lint interdit (§7). La règle a gagné : plus
   personne ne s'en sert. On ne garde pas un token mort qui invite à la faute. */

/* Couche sémantique scopée — le composant cite var(--accent), il ignore la couleur. */
.team-a{ --accent:var(--red);  --accent-text:var(--red-text); }
.team-b{ --accent:var(--blue); --accent-text:var(--blue-text); }


/* ─────────────────────────────────────────────────────────────────────────────
   DOCTRINE D1 — BUDGET DE LARGEUR PAR ARCHÉTYPE
   Avant : 5 pages, 5 valeurs de --maxw (620 / 640 / 640 / 1040 / 1120), aucune justifiée.
   La page paraissait « étriquée » ou « île sur l'océan » selon l'humeur du fichier.
   Trois archétypes, un budget chacun, DÉCLARÉ par une classe sur <body> ou <main>.
   Élargir n'est PAS toujours mieux : au-delà de ~75 caractères par ligne, la lecture chute.
   ───────────────────────────────────────────────────────────────────────────── */
.arch-read{ --maxw:clamp(320px, 92vw, 720px);  }  /* landing, confidentialité, mentions — un texte suivi */
.arch-task{ --maxw:clamp(320px, 92vw, 820px);  }  /* bookings, manage — un flux, une action */
.arch-app { --maxw:clamp(320px, 94vw, 1280px); }  /* group, organizer — colonnes, listes, densité */

/* GOUTTIÈRE — un token, pas une constante enfouie dans .wrap.
   Défaut mesuré le 12/07 : sur un écran de 390px, `94vw` donnait 366px, MOINS 16px de padding de
   chaque côté → la carte ne faisait que 334px, avec 28px perdus par bord. 14 % de l'écran, pour
   rien. Sur mobile, le contenu VAUT la largeur : la gouttière se réduit et --maxw prend tout. */
:root{ --gutter:16px; }
@media (max-width:640px){
  :root{ --gutter:6px; }   /* « Maxi » — choix de Ben (12/07) : la carte prend 97 % de l'écran,
                             mais garde son bord : un liseré + une ombre portée qui touchent le
                             bord de l'écran cessent d'exister, et le matériau avec eux. */
  .arch-read, .arch-task, .arch-app{ --maxw:100vw; }
}

.wrap{ max-width:var(--maxw); margin:0 auto; padding:0 var(--gutter); }


/* ─────────────────────────────────────────────────────────────────────────────
   COUCHE 3 — PRIMITIVES DE MATÉRIAU (§7)
   CANON = variante V1 (majoritaire ET la plus riche : bookings, group, index, manage).
   Diff assumé : les pages légales gagnent une bordure et une vraie gravure (elles avaient
   un métal SANS bordure et un emboss SANS drop-shadow — dégradés en silence) ; l'organizer
   change d'ombre portée (il avait `0 18px 50px -22px #000`, sans ombre interne basse).
   ───────────────────────────────────────────────────────────────────────────── */
.metal{
  position:relative; overflow:hidden;
  background:
    linear-gradient(106deg,rgba(255,255,255,.11) 0%,rgba(255,255,255,0) 16%,rgba(255,255,255,.05) 29%,rgba(255,255,255,0) 44%,rgba(255,255,255,.05) 61%,rgba(255,255,255,0) 76%,rgba(255,255,255,.07) 100%),
    repeating-linear-gradient(116deg,rgba(255,255,255,.028) 0 1px,rgba(0,0,0,.03) 1px 2.5px),
    var(--metal-grad);
  border:1px solid rgba(255,255,255,.09);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16), inset 0 -1px 0 rgba(0,0,0,.4), 0 16px 34px rgba(0,0,0,.5);
}
/* ─────────────────────────────────────────────────────────────────────────────
   DOCTRINE D8 — PROFONDEURS (arbitrées par Ben sur planche A-D, 2026-07-12 : « code en C,
   JuZ en A »). MÉTHODE, apprise à nos dépens : les effets ton-sur-ton sont perceptuellement
   BISTABLES (creusé ou bombé selon la direction de lumière que le cerveau suppose). Trois fois
   le vocabulaire a menti (« gravé »/.emboss, « membre », « enfoncé »/« relief »). Règle : un
   effet entre ici uniquement DÉSIGNÉ par Ben sur un rendu qu'il a vu — jamais nommé d'après
   une prédiction de perception. Je ne perçois pas le rendu.
   ───────────────────────────────────────────────────────────────────────────── */

/* ── .relief-1 (= A, l'effet HISTORIQUE du site) — titres, libellés, montants secondaires,
      et la MARQUE JuZ sur la carte platine (désignation Ben). Contraste ≈ 7,8:1. ── */
.relief-1, .emboss{        /* `.emboss` : alias de compatibilité, les 7 pages l'utilisent. */
  color:var(--emboss-ink);
  background:var(--code-grad);
  -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent;
  filter:drop-shadow(0 1px 0 rgba(0,0,0,.7)) drop-shadow(0 2px 2px rgba(0,0,0,.45));
}

/* ── .estampe (= C) — le CODE de réservation et les valeurs de la carte platine (désignation
      Ben). Ton-sur-ton : la face reste dans les gris du métal (à peine plus claire), seules les
      arêtes parlent — le traitement du numéro d'une carte bancaire réelle (face grise, arêtes
      brillantes), référence photo Visa Platinum de Ben.
      ⚠ CONTRASTE DE FACE ≈ 2,1:1 — sous WCAG AA (4,5:1). DÉROGATION ASSUMÉE ET BORNÉE :
      uniquement sur la carte platine, et uniquement parce que le code y est DUPLIQUÉ ailleurs
      en clair (mail de confirmation, page /b/, communication de virement). Si le code devient
      l'unique affichage lisible quelque part, l'estampé y est INTERDIT. ── */
.estampe{
  color:transparent;
  background:linear-gradient(180deg,#565b63 0%,#484d55 45%,#3a3e46 55%,#4d525a 100%);
  -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent;
  filter:
    drop-shadow(0 -1px 0 rgba(255,255,255,.28))
    drop-shadow(0 1.5px 1px rgba(0,0,0,.8))
    drop-shadow(0 3px 4px rgba(0,0,0,.45));
}

/* ── .card — la CARTE : rayon + rembourrage. Supprimée par accident le 12/07 (une expression
      régulière gourmande, lancée pour retirer deux effets écartés, a emporté la règle qui suivait).
      Résultat : tous les angles droits, sur toutes les cartes. Verrouillé désormais par
      render-check (rayon calculé) ET par le contrat de feuille (la règle DOIT exister). ── */
.card{ border-radius:var(--radius); padding:var(--sp-4); margin-bottom:12px; }

/* ── ÉCARTÉS (planche A-D) : B (foil brillant) — trop clinquant ; D (arêtes inversées) —
      bistable, lu « relief » par Ben alors que je l'annonçais « enfoncé ». Ne pas réintroduire. ── */

/* ─────────────────────────────────────────────────────────────────────────────
   DOCTRINE D5 — SHEEN : UN SEUL REFLET PAR PAGE, JAMAIS EN mix-blend-mode
   Le reflet de la landing était en `mix-blend-mode:soft-light` : sur une surface sombre, le
   delta produit est minuscule — invisible sur téléphone. Ici, alpha simple.
   Un seul par page : c'est sa RARETÉ qui le rend beau. Douze reflets = un sapin de Noël
   (et un coût GPU réel sur mobile).
   ───────────────────────────────────────────────────────────────────────────── */
.sheen{ position:relative; }
.sheen::after{
  content:""; position:absolute; top:-40%; left:0; width:34%; height:180%;
  pointer-events:none; z-index:1;
  background:linear-gradient(105deg,transparent 0%,rgba(255,255,255,.05) 42%,rgba(255,255,255,.22) 50%,rgba(255,255,255,.05) 58%,transparent 100%);
  transform:rotate(9deg) translateX(-160%);
  animation:jz-sweep 9s ease-in-out infinite;
}
@keyframes jz-sweep{
  0%{transform:rotate(9deg) translateX(-160%); opacity:0}
  14%{opacity:1}
  54%{transform:rotate(9deg) translateX(420%); opacity:1}
  66%{opacity:0}
  100%{transform:rotate(9deg) translateX(420%); opacity:0}
}
/* Le sourire du JuZ respire au même rythme que le reflet (9 s). BUG DU 12/07 : la règle qui
   DÉSACTIVE cette animation existait, mais l'animation elle-même n'avait jamais été définie. */
/* AMPLITUDE ASSUMÉE. La première version (scaleY 1.32 sur 9 s) était si discrète que Ben devait
   se concentrer pour la voir : « soit tu la rends notable, soit on conclut qu'elle est inutile ».
   Il a raison — une animation qu'on ne remarque pas ne fait qu'ajouter du coût sans bénéfice.
   Ici : le sourire s'élargit ET se creuse, en deux temps (un vrai sourire, pas un frémissement),
   avec un rebond. Cycle raccourci à 6 s pour qu'il se produise pendant qu'on regarde. */
@keyframes jz-grin{
  0%, 62%, 100%{ transform:scaleY(1) scaleX(1) }
  70%{ transform:scaleY(1.75) scaleX(1.12) }
  80%{ transform:scaleY(1.45) scaleX(1.06) }
  88%{ transform:scaleY(1.62) scaleX(1.09) }
  96%{ transform:scaleY(1) scaleX(1) }
}
.brandmark .bm-u{
  transform-origin:50% 10%;
  animation:jz-grin 6s cubic-bezier(.34,1.56,.64,1) infinite;   /* rebond : il « éclate » */
}

@media (prefers-reduced-motion:reduce){
  .sheen::after{ animation:none; opacity:0 }
  .brandmark .bm-u{ animation:none; transform:none }
}


/* ─────────────────────────────────────────────────────────────────────────────
   CONTRÔLES — boutons en relief (§7), jamais plats
   ───────────────────────────────────────────────────────────────────────────── */
.btn{
  appearance:none; -webkit-appearance:none; font:inherit; cursor:pointer;
  font-weight:600; font-size:.86rem; color:var(--ink);
  min-height:44px; padding:10px 15px; border-radius:var(--radius-sm);
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  border:1px solid rgba(255,255,255,.12);
  background:linear-gradient(180deg,#41454c,#2a2d32);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18), 0 3px 0 rgba(0,0,0,.45), 0 8px 16px rgba(0,0,0,.32);
  transition:transform .08s var(--ease), box-shadow .08s var(--ease);
}
.btn:active{ transform:translateY(1px); box-shadow:inset 0 1px 0 rgba(255,255,255,.12), 0 1px 0 rgba(0,0,0,.45); }
.btn.ghost{ background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.02)); }
.btn.sm{ min-height:44px; padding:7px 11px; font-size:.78rem; }   /* 44px : WCAG 2.1 (§8).
   Était à 36px — violation trouvée par render-check, que ni Ben ni moi n'avions vue à l'œil. */
.btn[disabled]{ opacity:.45; cursor:default; }

/* Action principale : le seul bouton CLAIR. Son encre est --on-light — c'est le token qui,
   tué par un point-virgule manquant, rendait « Je réserve » illisible (contraste 1,54:1). */
.cta{
  appearance:none; -webkit-appearance:none; font:inherit; cursor:pointer;
  font-family:var(--font-body); font-weight:800; font-size:.92rem;
  min-height:48px; padding:12px 18px; border-radius:var(--radius-sm);
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  border:1px solid rgba(255,255,255,.5); text-decoration:none; white-space:nowrap;
  background:linear-gradient(180deg,var(--ink) 0%,#dde1e6 46%,#c3c9d1 54%,#cfd5db 100%);
  color:var(--on-light);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.95), inset 0 -2px 3px rgba(0,0,0,.22), 0 5px 12px rgba(0,0,0,.5);
  transition:transform .06s var(--ease);
}
.cta:hover{ filter:brightness(1.03); }
.cta:active{ transform:translateY(1px); }
.cta[disabled]{ opacity:.45; cursor:default; }

/* DOCTRINE D2 — un champ de saisie n'est JAMAIS orphelin : il vit dans une carte platine.
   L'encastré translucide est réservé aux CHAMPS (§7 item 5) — jamais aux surfaces de contenu. */
.field{
  width:100%; font:inherit; font-size:.9rem; color:var(--ink);
  padding:11px 13px; border-radius:11px; border:0;
  background:rgba(0,0,0,.2);
  box-shadow:inset 0 1px 3px rgba(0,0,0,.45);
}
.field::placeholder{ color:#7d848c; }
.field:focus-visible,
.btn:focus-visible, .cta:focus-visible{ outline:2px solid var(--focus); outline-offset:2px; }

/* DOCTRINE D3 — toute SURFACE CLIQUABLE porte le matériau, quel que soit son tag.
   `<a>`, `<label>`, `<div>` compris : c'est l'angle mort qui a laissé passer « Mes places »
   (un <a> en trou noir : le lint exigeait `cursor:pointer` écrit, que l'auteur n'écrit jamais
   sur un lien puisque le navigateur le fournit). Une surface cliquable a du RELIEF, pas un trou. */
.surface{
  border-radius:12px; padding:11px 13px;
  /* D3 EST TENUE ICI : le grain brossé 116deg, pas seulement du relief. Sans lui, la surface
     est un dégradé plat — c'est le défaut « le platine disparaît sur la liste » (12/07) : ma
     propre primitive ne respectait pas ma propre règle. */
  background:
    repeating-linear-gradient(116deg,rgba(255,255,255,.026) 0 1px,rgba(0,0,0,.03) 1px 2.5px),
    linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.018));
  border:1px solid rgba(255,255,255,.07);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.10);
  transition:background .12s var(--ease);
}
.surface:hover{
  background:
    repeating-linear-gradient(116deg,rgba(255,255,255,.03) 0 1px,rgba(0,0,0,.03) 1px 2.5px),
    linear-gradient(180deg,rgba(255,255,255,.09),rgba(255,255,255,.035));
}
/* Une surface portée par un <a> ne doit PAS hériter du bleu souligné du navigateur.
   Défaut constaté : « Brussels Ping-Pong » en bleu souligné dans « Mes places » — ce n'était pas
   une couleur du thème, c'était le style d'usine, jamais neutralisé. */
a.surface, a.surface:link, a.surface:visited,
a.row, a.row:link, a.row:visited{ color:inherit; text-decoration:none; }

/* DOCTRINE D4 — flex : le TEXTE cède, les ACTIONS non.
   `.gr-item` (liste des groupes) était un flex où les boutons portaient `flex:none` et où le
   nom n'avait ni `flex:1` ni `min-width:0` : sur mobile, « Brussels Ping-Pong » se brisait sur
   trois lignes pendant que les boutons gardaient leur largeur. */
.row{ display:flex; align-items:center; gap:11px; }
.row > .row-text{ flex:1; min-width:0; }          /* le texte cède et tronque proprement */
.row > .row-acts{ flex:none; display:flex; gap:6px; }
@media (max-width:520px){
  .row{ flex-wrap:wrap; }
  /* Le repli en pleine largeur ne vaut QUE pour de vraies ACTIONS (des boutons). Appliqué à tout,
     il éjectait le PRIX sur sa propre ligne (« 6,50 € » décalé, constaté le 12/07) : la règle était
     juste, sa portée était trop large. */
  .row > .row-acts:has(button){ width:100%; justify-content:flex-start; }
}

/* Chiffres alignés : le prix reste sur la même ligne que son libellé, et l'€ ne « saute » plus.
   `tabular-nums` garde les colonnes de chiffres alignées sans imposer une chasse fixe au symbole. */
.num{
  font-family:var(--font-mono);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;          /* un nombre ne se sépare JAMAIS de son unité : « 6,50 » / « € » */
}


/* ─────────────────────────────────────────────────────────────────────────────
   DOCTRINE D7 — LE LIEU N'EST PAS L'ADRESSE
   `events.location` valait « Centre Sportif Mounier — Woluwé-Saint-Lambert » : un NOM DE LIEU.
   Une seule page (index.html) le passait à Google Maps en recherche floue ; les autres
   l'affichaient en texte mort. Deux défauts en un : l'adresse n'était pas cliquable là où on en
   a besoin, et le géocodage par nom peut atterrir n'importe où pour une salle peu référencée —
   défaut qui ne se voit qu'un samedi à 15h25, quand quelqu'un est au mauvais endroit.
   Modèle retenu (B) : `location` = le NOM (affiché, lisible), `address` = l'ADRESSE POSTALE
   (qui porte le lien). L'adresse est TOUJOURS un <a>, jamais un texte mort.
   ───────────────────────────────────────────────────────────────────────────── */
.place{ display:flex; flex-direction:column; gap:2px; }
.place .venue{ font-size:.9rem; color:var(--ink); font-weight:600; }
.geo{
  display:inline-flex; align-items:center; gap:6px;
  min-height:44px;                        /* cible tactile (§8) */
  font-size:.84rem; color:var(--ink-muted);
  text-decoration:none; border-radius:8px;
  transition:color .12s var(--ease);
}
.geo:hover, .geo:focus-visible{ color:var(--accent-text); }
.geo .pin{ width:15px; height:15px; flex:none; stroke:currentColor; fill:none; stroke-width:1.7; }
.geo .txt{ text-decoration:underline; text-underline-offset:3px; text-decoration-color:rgba(255,255,255,.25); }


/* ─────────────────────────────────────────────────────────────────────────────
   IDENTITÉ — le J, le sourire rouge, le Z. Tracé SVG, jamais un glyphe (§7 item 3).
   ───────────────────────────────────────────────────────────────────────────── */
.brand{ display:flex; justify-content:center; align-items:center; gap:11px; }
.brandmark{
  display:flex; align-items:flex-end; gap:1px;
  font-family:var(--font-display); font-weight:900;
  letter-spacing:-.05em; line-height:1; font-size:1.9rem;
}
.brandmark .bm-u{ width:.72em; height:auto; margin:0 1px -.06em; overflow:visible; }
.brandmark .bm-u path{ stroke:var(--red); }
.brand .tag{
  font-size:.62rem; letter-spacing:.24em; text-transform:uppercase;
  color:var(--metal-muted); font-weight:700;
}


/* ─────────────────────────────────────────────────────────────────────────────
   PIED DE PAGE — GLOBAL. Jamais dans une vue masquable : il vivait dans #view-login
   et disparaissait à la connexion. Les mentions légales sont une obligation (§9.7).
   ───────────────────────────────────────────────────────────────────────────── */
.foot{
  text-align:center; color:var(--metal-muted); font-size:.74rem;
  padding:26px 16px 36px; border-top:1px solid var(--line); margin-top:32px;
}
a.jz-legal:link, a.jz-legal:visited{ color:var(--ink-muted); text-decoration:underline; }
a.jz-legal:hover{ color:var(--ink); }

.hidden{ display:none !important; }
