  :root{
    --bg:#0f172a; --card:#ffffff; --ink:#0f172a; --muted:#64748b;
    --brand:#2563eb; --brand2:#16a34a; --accent:#f59e0b;
    --soft:#f1f5f9; --line:#e2e8f0; --line-soft:#eef1f6; --danger:#dc2626;
    /* ombres légères et superposées (lumière douce) plutôt qu'une ombre unique sombre */
    --shadow-sm:0 1px 2px rgba(15,23,42,.05);
    --shadow:0 1px 2px rgba(15,23,42,.04), 0 12px 28px -16px rgba(15,23,42,.22);
  }
  *{box-sizing:border-box}
  body{
    margin:0; font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
    color:var(--ink); background:#eef2f8;
    min-height:100vh; padding-bottom:60px; line-height:1.5;
    -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
    -webkit-text-size-adjust:100%; text-size-adjust:100%;
  }
  header{ text-align:center; color:#fff; padding:30px 16px 26px;
    background:linear-gradient(135deg,#4f46e5 0%,#2563eb 55%,#0ea5e9 100%);
    border-radius:0 0 24px 24px; box-shadow:0 10px 30px -10px rgba(37,99,235,.45); }
  header .brand{ display:flex; align-items:center; justify-content:center; gap:12px; }
  header .logo{ width:40px; height:40px; flex:none; filter:drop-shadow(0 2px 4px rgba(0,0,0,.2)); }
  header h1{ margin:0; font-size:1.6rem; letter-spacing:-.01em; }
  header p{ margin:8px 0 0; opacity:.92; font-size:.95rem; }
  .wrap{ max-width:760px; margin:0 auto; padding:0 14px; }
  .card{
    background:var(--card); border:1px solid var(--line-soft); border-radius:16px; padding:22px;
    box-shadow:var(--shadow); margin:16px 0;
  }
  h2{ font-size:1.15rem; margin:0 0 4px; display:flex; align-items:center; gap:8px; letter-spacing:-.01em; }
  .hint{ color:var(--muted); font-size:.85rem; margin:8px 0 14px; }
  label{ display:block; font-weight:600; font-size:.9rem; margin:12px 0 4px; }
  input,textarea,select{
    width:100%; padding:11px 12px; border:1px solid var(--line);
    border-radius:10px; font-size:1rem; line-height:1.4; font-family:inherit; background:#fff;
    transition:border-color .15s ease, box-shadow .15s ease;
  }
  input:hover,textarea:hover,select:hover{ border-color:#cbd5e1; }
  input:focus,textarea:focus,select:focus{
    outline:none; border-color:var(--brand); box-shadow:0 0 0 3px rgba(37,99,235,.14);
  }
  select{
    -webkit-appearance:none; -moz-appearance:none; appearance:none;
    padding-right:34px;
    background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23475569' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat:no-repeat; background-position:right 12px center; background-size:12px;
  }
  .chip-btn{
    display:inline-block; min-width:40px; text-align:center; cursor:pointer;
    border:1px solid var(--line); background:#fff; border-radius:8px;
    padding:7px 4px; margin:3px; font-weight:600; font-size:.9rem; user-select:none;
    transition:border-color .12s ease, background .12s ease, transform .08s ease;
  }
  .chip-btn:hover{ border-color:#94a3b8; }
  .chip-btn.sel{ background:var(--brand); color:#fff; border-color:var(--brand); }
  .chip-btn.sel:hover{ border-color:var(--brand); }
  .spread{ display:flex; gap:14px; flex-wrap:wrap; }
  .page{ flex:1; min-width:150px; display:grid; grid-template-columns:repeat(4,1fr); gap:5px;
    background:#fafafa; border:1px solid var(--line); border-radius:8px; padding:8px;
    box-shadow:inset 0 0 0 1px #fff, 0 1px 3px rgba(0,0,0,.06); }
  .page .chip-btn{ margin:0; min-width:0; width:100%; padding:9px 2px; }
  .cell.empty{ visibility:hidden; }
  .chip-btn.used-d{ background:#dcfce7; border-color:#86efac; color:#166534; cursor:default; }
  .chip-btn.used-m{ background:#ffedd5; border-color:#fdba74; color:#9a3412; cursor:default; }
  .chip-btn.locked{ border-style:dashed; border-width:2px; } /* engagée dans un échange en cours (🔒) */
  .byCountry{ margin:8px 0 6px; }
  .grp{ display:grid; grid-template-columns:9em 1fr; gap:3px 8px; align-items:start; margin:5px 0; font-size:1rem; }
  .grp .glbl{ padding-top:3px; font-size:.9rem; line-height:1.3; }
  .grp .glbl .gname{ color:var(--muted); font-size:.95rem; }
  .grp + .grp{ border-top:1px solid #eef2f7; padding-top:5px; }
  .grp.group-start{ border-top:2px solid #94a3b8; margin-top:8px; padding-top:8px; }
  .grp b{ color:var(--ink); }
  .grp.nolabel{ grid-template-columns:1fr; }
  .gtag{ display:inline-block; background:#1e3a8a; color:#fff; border-radius:5px; padding:0 6px; font-size:.72rem; font-weight:700; vertical-align:middle; }
  .quick{ border:2px solid #fde68a; background:#fffbeb; border-radius:12px; padding:12px 14px; margin:10px 0 14px; }
  .quick select{ height:46px; }
  .pillbox #pillList{ display:contents; }
  .pillbox{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; min-height:46px;
    border:1px solid var(--line); border-radius:10px; background:#fff; padding:5px 8px; cursor:text; }
  .pillbox input{ border:0; outline:none; flex:1; min-width:90px; padding:6px 2px; height:auto;
    font-size:1.05rem; text-transform:uppercase; background:transparent; }
  /* Reprend le style de référence des pastilles de carte (.grp .num) : taille, padding,
     radius, chiffres tabulaires. Seul min-width diffère (code complet « FRA12 » + croix →
     5.5em, vs numéro seul). inline-flex pour la croix ; couleurs propres à la saisie
     rapide (bleu/vert/rouge ci-dessous). */
  .qpill{ display:inline-flex; align-items:center; justify-content:center; gap:2px; background:#eef2ff; border:1px solid #c7d2fe;
    color:#3730a3; border-radius:8px; padding:3px 6px; font-weight:700; font-size:.9rem; min-width:5.5em; text-align:center;
    box-sizing:border-box; font-variant-numeric:tabular-nums; }
  .qpill a{ color:#64748b; text-decoration:none; font-weight:700; padding:0 4px; line-height:1; }
  .qpill a:hover{ color:#dc2626; }
  .qpill.new{ background:#dbeafe; border-color:#60a5fa; color:#1e40af; }  /* nouvelle carte = bleu */
  .qpill.dbl{ background:#dcfce7; border-color:#86efac; color:#166534; }  /* déjà eue → double = vert */
  .qpill.eng{ background:#fee2e2; border-color:#fca5a5; color:#991b1b; }  /* engagée dans un échange = rouge pâle */
  .qpill.tri{ background:#ede9fe; border-color:#c4b5fd; color:#6d28d9; } /* déjà en double → triple = violet */
  /* Mobile : colonne unique → l'étiquette dispose de toute la largeur, donc code + nom
     sur UNE ligne (pas la scission verticale réservée à la colonne étroite du desktop),
     pastilles en dessous. */
  @media (max-width:480px){
    .grp{ grid-template-columns:1fr; gap:2px; }
    .grp .glbl br{ display:none; }
    .grp .glbl .gname{ margin-left:.4em; }
  }
  /* Pastille de carte — STYLE DE RÉFÉRENCE (.9rem / padding 3px 6px / radius 8px / 700 /
     chiffres tabulaires). .qpill et .sumpill reprennent ce style ; seul min-width varie
     selon le contenu (numéro seul ici → 2.6em ; code complet ailleurs → 5.5em). */
  .grp .num{ display:inline-block; background:#eef2ff; border:1px solid #c7d2fe; color:#3730a3;
    border-radius:8px; padding:3px 6px; margin:3px 4px 0 0; font-size:.9rem; font-weight:700;
    min-width:2.6em; text-align:center; font-variant-numeric:tabular-nums; }
  .grp .num.d{ background:#dcfce7; border-color:#86efac; color:#166534; }   /* double = vert */
  .grp .num.m{ background:#ffedd5; border-color:#fdba74; color:#9a3412; }   /* manquante = orange */
  .grp .num.rm{ cursor:pointer; }
  .grp .num.rm:hover{ filter:brightness(0.94); text-decoration:line-through; }
  .grp .num.hl{ outline:3px solid #facc15; outline-offset:1px; }
  /* Carte engagée dans une proposition en cours (verrou 🔒) : bordure pointillée discrète, je la
     possède encore mais elle est promise — distinct de .resv (grisée/indisponible). */
  .grp .num.locked{ border-style:dashed; border-width:2px; }
  /* Vérification des doubles : pointée (✓ surlignée) / non pointée (atténuée = à retirer) /
     nouvelle (bleu) / conflit avec les manquantes (contour rouge). */
  /* Pastilles d'audit : largeur fixe (numéro + icône d'état) pour un alignement régulier, comme partout. */
  .grp .num.audit{ cursor:pointer; box-sizing:border-box; min-width:4.4em; }
  .grp .num.audit.off{ opacity:.4; }
  .grp .num.audit.sel{ outline:3px solid #16a34a; outline-offset:1px; }
  .grp .num.audit.new{ background:#dbeafe; border-color:#60a5fa; color:#1e40af; }
  .grp .num.audit.conflict{ outline:3px solid #ef4444; outline-offset:1px; }
  .grp .num.audit.engaged{ border-style:dashed; border-width:2px; } /* engagée dans un échange (⚠️) : non pointée → retirée + échange annulé */
  tr.prow{ cursor:pointer; }
  tr.prow:hover td{ background:#f8fafc; }
  tr.pdet td{ background:#f8fafc; }
  textarea{ min-height:84px; resize:vertical; }
  .row{ display:flex; gap:10px; flex-wrap:wrap; }
  .row > div{ flex:1; min-width:140px; }
  button{
    cursor:pointer; border:0; border-radius:10px; padding:12px 16px;
    font-size:1rem; font-weight:600; color:#fff; background:var(--brand);
    box-shadow:var(--shadow-sm);
    transition:transform .05s ease, filter .15s ease, box-shadow .15s ease, background .15s ease;
  }
  button:hover{ filter:brightness(1.05); box-shadow:0 4px 12px -4px rgba(15,23,42,.25); }
  button:active{ transform:translateY(1px); filter:brightness(.98); }
  :focus-visible{ outline:3px solid #f59e0b; outline-offset:2px; border-radius:6px; }
  button.green{ background:var(--brand2); }
  button.orange{ background:#ea580c; }
  button.ghost{ background:var(--soft); color:var(--ink); font-weight:600; }
  button.danger{ background:var(--danger); }
  .toolbar{ display:flex; gap:10px; flex-wrap:wrap; margin-top:14px; }
  .pill{
    display:inline-block; background:var(--soft); border:1px solid var(--line);
    border-radius:999px; padding:3px 10px; font-size:.8rem; margin:2px 3px 0 0;
  }
  .match{ border:1px solid var(--line); border-radius:12px; padding:14px; margin:10px 0;
    transition:border-color .15s ease, box-shadow .15s ease; }
  .match:hover{ border-color:#cbd5e1; box-shadow:var(--shadow-sm); }
  .match h3{ margin:0 0 6px; font-size:1.05rem; }
  .mhead{ cursor:pointer; display:flex; align-items:center; flex-wrap:wrap; gap:6px; margin:0 !important; }
  /* Ligne d'infos secondaires (collection · cartes · date · vue) : sur sa propre ligne sous le nom */
  .mhead .mmeta{ flex-basis:100%; font-weight:400; font-size:.82rem; }
  .mhead:hover{ opacity:.85; }
  /* En-tête de section par groupe (école, autre école…) dans la liste des participants */
  .grphead{ font-size:.78rem; font-weight:800; text-transform:uppercase; letter-spacing:.05em;
    color:var(--muted); margin:16px 0 4px; padding-bottom:3px; border-bottom:1px solid var(--line-soft); }
  .grphead:first-child{ margin-top:4px; }
  .give{ color:var(--brand2); font-weight:700; }
  .get{ color:#c2410c; font-weight:700; }
  .badge{ background:var(--accent); color:#3b2400; border-radius:999px; padding:2px 9px; font-size:.78rem; font-weight:700; }
  /* Pastille « non lu » discrète (style iOS/macOS) */
  .newdot{ display:inline-block; width:9px; height:9px; border-radius:50%; background:var(--brand); vertical-align:middle; margin-right:3px; }
  /* « Ma proposition a-t-elle été vue ? » — info discrète à côté de la date */
  .seenstatus{ font-size:.82rem; font-weight:600; white-space:nowrap; }
  .seenstatus.seen{ color:var(--brand2); }
  .seenstatus.unseen{ color:var(--muted); }
  .muted{ color:var(--muted); }
  .demo{ background:#fff7ed; border:1px dashed var(--accent); color:#7c2d12;
    border-radius:10px; padding:10px 12px; font-size:.85rem; margin-bottom:12px; }
  /* Bandeau d'annonce ponctuel (fermable une fois) */
  .notice{ position:relative; background:#eff6ff; border:1px solid #bfdbfe; color:#1e3a8a;
    border-radius:12px; padding:12px 40px 12px 14px; margin:12px 0; font-size:.92rem; line-height:1.45; }
  .notice b{ font-weight:700; }
  .notice span{ display:block; margin-top:3px; }
  .notice-x{ position:absolute; top:6px; right:6px; background:transparent; border:none; color:#1e3a8a;
    font-size:1rem; line-height:1; cursor:pointer; padding:6px 9px; border-radius:8px; box-shadow:none; font-weight:700; }
  .notice-x:hover{ background:#dbeafe; filter:none; }
  .ok{ color:var(--brand2); font-weight:600; }
  .err{ color:var(--danger); font-weight:600; }
  table{ width:100%; border-collapse:collapse; font-size:.9rem; }
  th,td{ text-align:left; padding:8px 6px; border-bottom:1px solid var(--line); vertical-align:top; }
  th{ color:var(--muted); font-weight:600; }
  .statsHi{ background:var(--soft); border:1px solid var(--line); border-radius:10px; padding:12px 14px; margin:8px 0 14px; font-size:1.05rem; }
  .statsTbl td+td, .statsTbl th+th{ text-align:right; white-space:nowrap; }
  #statsCard details{ margin-top:10px; }
  #statsCard summary{ cursor:pointer; color:var(--brand); font-weight:600; padding:6px 0; }
  .tabbar{ display:flex; gap:8px; margin:18px 0 0; }
  .tabbar button{ flex:1; background:#fff; color:var(--muted); font-weight:600; border:1px solid var(--line); box-shadow:none; }
  .tabbar button:hover{ color:var(--ink); border-color:#cbd5e1; filter:none; }
  .tabbar button.active{ background:var(--brand); color:#fff; border-color:var(--brand); box-shadow:var(--shadow-sm); }
  footer{ text-align:center; color:var(--muted); font-size:.8rem; margin-top:24px; }
  footer a{ color:var(--brand); }
  /* Détail d'échange (vue inline) + sections de cartes */
  .envsum{ font-size:.9rem; line-height:1.6; }
  .sumpill{ display:inline-block; min-width:5.5em; text-align:center; box-sizing:border-box; border-radius:8px;
    padding:3px 6px; margin:3px 5px 0 0; font-weight:700; font-size:.9rem; font-variant-numeric:tabular-nums; }
  .sumpill.d{ background:#dcfce7; border:1px solid #86efac; color:#166534; }
  .sumpill.m{ background:#ffedd5; border:1px solid #fdba74; color:#9a3412; }
  .sumpill.new{ background:#dbeafe; border:1px solid #60a5fa; color:#1e40af; }  /* nouvelle = bleu */
  .sumpill.eng{ background:#fee2e2; border:1px solid #fca5a5; color:#991b1b; }  /* engagée dans un échange = rouge pâle */
  .sumpill.tri{ background:#ede9fe; border:1px solid #c4b5fd; color:#6d28d9; } /* déjà en double → triple = violet */
  .sumpill.caduc{ background:#fff7ed; border:1px dashed #fb923c; color:#9a3412; opacity:.8; } /* caduque : le partenaire ne la cherche/n'a plus = orange pointillé */
  .stale-banner{ margin-top:8px; padding:8px 10px; border:1px solid #fdba74; background:#fff7ed; color:#7c2d12;
    border-radius:8px; font-size:.86rem; line-height:1.35; }
  .staleflag{ cursor:help; }
  /* Aide à la préparation de l'enveloppe (échange accepté) : pastille « je donne » cochée → vert foncé. */
  .sumpill.pack{ cursor:pointer; }
  .sumpill.d.packed{ background:#166534; border-color:#166534; color:#fff; }
  .envsec{ border:1px solid var(--line); border-radius:12px; overflow:hidden; margin:10px 0; padding-bottom:8px; }
  .envsec-h{ font-weight:800; padding:8px 12px; font-size:1.02rem; }
  .envsec-h.give{ background:#dcfce7; color:#166534; }
  .envsec-h.recv{ background:#ffedd5; color:#9a3412; }
  /* Achat/Vente : bascule segmentée + ligne prix */
  .salemode{ display:flex; gap:8px; }
  .salemode button{ flex:1; background:#fff; color:var(--muted); font-weight:700; border:1px solid var(--line); box-shadow:none; }
  .salemode button:hover{ color:var(--ink); border-color:#cbd5e1; filter:none; }
  .salemode button.active{ background:var(--brand); color:#fff; border-color:var(--brand); box-shadow:var(--shadow-sm); }
  .saleprice{ margin-top:8px; display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
  .saleprice label{ font-weight:700; }
  .saleprice input{ width:6em; }
  .saleprice > div{ flex-basis:100%; }
  .envsec .grp{ padding-left:10px; padding-right:10px; }
  .envpill{ cursor:pointer; }
  .grp .num.envpill.sel{ outline:3px solid #1e3a8a; outline-offset:1px; }
  .grp .num.resv{ opacity:.55; cursor:not-allowed; background:#f1f5f9; border-color:#cbd5e1; color:#64748b; }
  .grp .num.unavail{ text-decoration:line-through; opacity:.75; }
  .grp .num .altn{ font-size:.7em; opacity:.7; margin-left:1px; font-weight:400; }
  .envlegend{ display:flex; flex-direction:column; gap:2px; margin:8px 14px 0; font-size:.78rem; line-height:1.35; }
  .envcount{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
  .envcount .cgive{ background:#dcfce7; color:#166534; border:1px solid #86efac; border-radius:999px; padding:4px 12px; font-weight:700; }
  .envcount .crecv{ background:#ffedd5; color:#9a3412; border:1px solid #fdba74; border-radius:999px; padding:4px 12px; font-weight:700; }
  .envcount .cbal{ font-weight:700; }
  .envcount .cbal.ok2{ color:#166534; }
  .envcount .cbal.warn2{ color:#b45309; }
  /* Note libre attachée à un échange */
  /* Texte d'un message : retours à la ligne + césure. */
  .tradenote-txt{ white-space:pre-wrap; word-break:break-word; }
  /* Fil de discussion : bulles LÉGÈRES (couleur + alignement, sans bordure) dans l'unique encart. */
  .thread{ display:flex; flex-direction:column; margin-bottom:6px; }
  .msg{ max-width:85%; border-radius:12px; padding:6px 10px; margin:4px 0; }
  .msg .who{ font-size:.74rem; font-weight:700; color:#475569; margin-bottom:2px; }
  .msg .who .when{ font-weight:400; color:#94a3b8; }
  .msg.recv{ background:#eef2f6; margin-right:auto; border-bottom-left-radius:3px; }
  .msg.mine{ background:#dcfce7; margin-left:auto; border-bottom-right-radius:3px; }
  .thread-ttl{ font-size:.8rem; margin:6px 0 0; }
  /* Zone de composition : pas de cadre supplémentaire (le .chatcard est le seul encart). */
  .compose-row{ display:flex; align-items:center; gap:10px; margin-top:6px; flex-wrap:wrap; }
  .compose-note{ font-size:.8rem; }
  /* Encart unique dédié à la discussion (fil + saisie), séparé du reste du détail. */
  .chatcard{ border:1px solid var(--line); border-radius:12px; padding:12px; margin-top:14px; background:#fbfdff; }
  .chatcard-h{ margin:0 0 8px; font-size:1rem; }
  /* Confirmation inline (remplace les popups natifs) : bandeau jaune + boutons Oui/Non. */
  .confirmbar{ display:inline-flex; flex-wrap:wrap; align-items:center; gap:8px; background:#fef9c3;
    border:1px solid #fde047; border-radius:10px; padding:8px 12px; }
  .confirmbar button{ padding:8px 14px; }
  #tradeNoteInput{ min-height:38px; }
  #mainApp{ margin-top:16px; }
  /* Barre d'identité (connecté) : neutre et discrète, comme la barre Collection */
  .idbar{ display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap;
    background:var(--soft); border:1px solid var(--line); border-radius:10px; padding:8px 12px; margin-bottom:10px; }
  .idbar-actions{ display:flex; gap:8px; align-items:center; }
  .iconbtn{ width:36px; height:36px; padding:0; border-radius:50%; border:1px solid var(--line);
    background:#fff; color:var(--ink); display:inline-flex; align-items:center; justify-content:center;
    font-size:1rem; box-shadow:none; }
  .iconbtn:hover{ border-color:#cbd5e1; filter:none; box-shadow:var(--shadow-sm); }
  .collbar{ display:flex; align-items:center; gap:10px; background:#fff; border:1px solid var(--line);
    border-radius:10px; padding:8px 12px; margin-bottom:10px; font-weight:600; }
  .collbar select{ flex:1; font-weight:600; }
  .teamnav{ display:flex; gap:6px; align-items:stretch; }
  .teamnav select{ flex:1; }
  .navbtn{ flex:none; padding:0 14px; font-size:1.3rem; line-height:1; }
  /* Combobox « Équipe / section » : champ filtrant + liste déroulante */
  .combo{ position:relative; flex:1; }
  .combo input{ width:100%; box-sizing:border-box; }
  .combo-menu{ position:absolute; z-index:30; left:0; right:0; margin-top:4px; max-height:260px;
    overflow:auto; background:#fff; border:1px solid var(--line); border-radius:10px;
    box-shadow:0 8px 24px rgba(0,0,0,.12); }
  .combo-opt{ padding:8px 10px; cursor:pointer; font-size:.95rem; }
  .combo-opt:hover, .combo-opt.active{ background:#eef2ff; }
  .combo-opt.cur{ font-weight:700; color:var(--brand); }
  .combo-grp{ padding:4px 10px; font-size:.75rem; font-weight:700; color:var(--muted);
    background:#f8fafc; position:sticky; top:0; }
  .progress .lbl{ font-size:.85rem; font-weight:600; margin-bottom:5px; }
  .progress .bar{ height:12px; background:var(--soft); border:1px solid var(--line); border-radius:999px; overflow:hidden; }
  .progress .bar > i{ display:block; height:100%; background:linear-gradient(90deg,#16a34a,#22c55e); transition:width .3s ease; }
  .hidden{ display:none; }
  #allList{ overflow-x:auto; }   /* le tableau scrolle plutôt que de casser la mise en page */

  /* Écrans tactiles : cibles plus grandes (recommandation Apple ~44px).
     Les pastilles de carte (.grp .num) NE sont PAS agrandies ici : elles gardent une
     taille unique partout (affichage = sélecteur d'échange), cf. convention pastille. */
  @media (pointer:coarse){
    .chip-btn{ padding:10px 9px; min-width:44px; font-size:1rem; }
    button{ padding:13px 16px; }
  }
  /* Petits écrans (iPhone) */
  @media (max-width:560px){
    header{ padding:20px 14px 8px; }
    header h1{ font-size:1.35rem; }
    header p{ font-size:.85rem; }
    .card{ padding:16px; }
    h2{ font-size:1.05rem; }
    .tabbar{ gap:6px; }
    .tabbar button{ font-size:.78rem; padding:10px 6px; line-height:1.2; }
  }
