/* Pages du personnel (réception, compte, praticienne, organisation) —
   chargée après `app.css`, dont elle reprend les jetons (couleurs, polices,
   rayons), les cartes et les boutons. Pensée pour un poste de réception
   (1024 px et plus), utilisable au téléphone (la praticienne y lit sa
   journée). `scripts/build.mjs` y ajoute les classes de placement de
   la grille (`src/staff/grid-css.js`) pour produire `dist/staff.css`. */

:root{
  --ag-row:1.05rem;
  --ag-time-w:4.2rem;
  --ag-head-h:3.1rem;
  --work:#fbfdfd;
  --off:#efece4;
  --p0:#245c82;--p1:#d5583c;--p2:#2f7d5b;--p3:#7b55a8;--p4:#b7821a;--p5:#2a8a8c;--p6:#b2486f;--p7:#5b6b7a;
}

.wrap--wide{max-width:1440px}
body.staff main{padding-top:1rem;padding-bottom:1.5rem}
.staff .hint{color:var(--muted);font-size:.88rem;margin:.2rem 0 .6rem}
.field-hint{color:var(--muted);font-size:.82rem;margin:0}
.err{color:var(--coral-deep);font-size:.85rem}
.ok-text{color:var(--good);font-size:.85rem}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- contrôles ---------- */
.staff select,.field select,.staff input[type=search],.inline-form input,.toolbar input[type=date],.svc-row input,.as-row input,.dur-input input,.ovr-row input{
  font:inherit;color:var(--ink);background:var(--paper-2);border:1.5px solid var(--line);border-radius:10px;
  padding:.45rem .65rem;min-height:40px;max-width:100%;
}
.field select{width:100%;min-height:44px}
.staff select:focus,.staff input:focus{border-color:var(--azure);outline:none;box-shadow:0 0 0 3px var(--azure-tint)}
.btn--sm{padding:.45rem .95rem;min-height:38px;font-size:.88rem}
.staff .btn:hover{transform:none}
.btn--ghost:hover{border-color:var(--ink)}
.icon-btn{
  background:transparent;border:1.5px solid var(--line);border-radius:999px;width:2.1rem;height:2.1rem;flex:none;
  cursor:pointer;color:var(--ink);font-size:1rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;
}
.icon-btn:hover{border-color:var(--ink)}
.icon-btn:disabled{opacity:.35;cursor:default}
.link-btn{background:none;border:0;padding:.2rem 0;color:var(--azure);font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.check{display:inline-flex;gap:.5rem;align-items:center;font-size:.92rem;cursor:pointer}
.check input{width:1.1rem;height:1.1rem;accent-color:var(--azure);margin:0}
.row3{display:grid;gap:.85rem}
@media (min-width:720px){.row3{grid-template-columns:1fr 1fr 1fr}}
.inline-form{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.inline-form input{flex:1 1 14rem}

/* ---------- en-tête ---------- */
.staff .top .wrap{flex-wrap:wrap;padding-top:.35rem;padding-bottom:.35rem}
.top-tools{display:flex;flex:1;flex-wrap:wrap;gap:.5rem;align-items:center;justify-content:flex-end}
.switcher select{min-width:12rem;font-weight:600}
.org-badge{font-size:.8rem;color:var(--muted);font-weight:600}
.top-search{display:flex;gap:.4rem;align-items:center}
.top-search input{width:17rem}
.menu{position:relative}
.menu summary{list-style:none}
.menu summary::-webkit-details-marker{display:none}
.menu-pop{
  position:absolute;right:0;top:calc(100% + .35rem);z-index:20;display:grid;gap:.1rem;min-width:15rem;
  background:var(--card);border:1px solid var(--line-soft);border-radius:12px;box-shadow:var(--shadow);padding:.35rem;
}
.menu-item{background:none;border:0;text-align:left;padding:.6rem .75rem;border-radius:8px;cursor:pointer;font-weight:500}
.menu-item:hover,.menu-item:focus-visible{background:var(--paper)}

/* ---------- écrans de compte ---------- */
.auth-wrap{max-width:520px;margin:1.2rem auto}
.auth-card h1{font-size:1.5rem;margin-bottom:.4rem}
.auth-card .lead{color:var(--ink-soft);margin:0 0 1rem}
.otp-input{font-size:1.4rem !important;letter-spacing:.3em;font-variant-numeric:tabular-nums;text-align:center}
.tabs{display:flex;flex-wrap:wrap;gap:.2rem;border-bottom:1px solid var(--line);margin:0 0 1rem}
.tab{background:none;border:0;border-bottom:3px solid transparent;padding:.55rem .85rem;font-weight:600;color:var(--muted);cursor:pointer;margin-bottom:-1px}
.tab[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--azure)}
.tab:hover{color:var(--ink)}
.plain-list{margin:.4rem 0 0;padding-left:1.2rem}
.who{color:var(--ink-soft);font-size:.92rem}

/* ---------- barre d'outils ---------- */
.toolbar{display:grid;gap:.55rem;margin-bottom:.7rem}
.toolbar-row{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:center}
.toolbar-title{font-size:1.25rem;text-transform:none;flex:1;min-width:12rem}
.toolbar-title::first-letter{text-transform:uppercase}
.toolbar-actions{display:flex;flex-wrap:wrap;gap:.4rem;margin-left:auto}
.seg{display:inline-flex;border:1.5px solid var(--line);border-radius:999px;overflow:hidden;background:var(--paper-2)}
.seg-btn{background:none;border:0;padding:.45rem 1rem;font-weight:600;cursor:pointer;color:var(--ink)}
.seg-btn[aria-pressed="true"]{background:var(--azure);color:#fff}
.nav{display:flex;align-items:center;gap:.4rem}
.inline{display:inline-flex;align-items:center;gap:.4rem}
.moving-banner{
  display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;justify-content:space-between;
  background:var(--coral-tint);color:var(--coral-deep);border-radius:12px;padding:.55rem .8rem;margin-bottom:.6rem;font-weight:600;
}
.moving-banner[hidden]{display:none}
.ag-status{color:var(--muted);font-size:.82rem;margin:.5rem 0 0}

/* ---------- agenda ---------- */
.ag-scroll{
  overflow:auto;max-height:calc(100vh - 15rem);min-height:22rem;background:var(--card);
  border:1px solid var(--line-soft);border-radius:var(--radius);box-shadow:var(--shadow);
}
.ag-grid{display:flex;min-width:100%}
/* Colonnes égales ; sous leur largeur minimale, la grille défile à
   l'horizontale (le texte des cartes est coupé, il n'élargit rien). */
.ag-column{flex:1 1 0;min-width:11rem;border-left:1px solid var(--line)}
.agenda[data-view="week"] .ag-column{min-width:8.5rem}
.ag-column.today .ag-colhead{color:var(--azure-deep);background:var(--azure-tint)}
.ag-timecol{flex:none;width:var(--ag-time-w);position:sticky;left:0;z-index:4;background:var(--card)}
.ag-colhead{
  position:sticky;top:0;z-index:3;height:var(--ag-head-h);background:var(--card);border-bottom:1px solid var(--line);
  padding:.35rem .55rem;display:flex;flex-direction:column;justify-content:center;overflow:hidden;
}
.ag-colhead strong{font-family:var(--display);font-weight:600;font-size:.98rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-colhead small{color:var(--muted);font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-colhead .dot{width:.6rem;height:.6rem;border-radius:999px;position:absolute;top:.5rem;right:.5rem}
.ag-corner{z-index:5}
.ag-colbody{display:grid;position:relative}
.ag-times .ag-hour{
  font-size:.75rem;color:var(--muted);text-align:right;padding:0 .5rem 0 0;transform:translateY(-.55em);
  font-variant-numeric:tabular-nums;white-space:nowrap;
}
.ag-times .ag-hour.gr-1{transform:none}
.span-all{grid-column:1 / -1}
.ag-cell{border-top:1px dotted var(--line-soft);cursor:pointer;min-width:0}
.ag-cell.hour{border-top:1px solid var(--line)}
.ag-cell.work{background:var(--work)}
.ag-cell.off{background:var(--off)}
.ag-cell:hover{background:var(--azure-tint)}
.ag-cell:focus-visible{outline:2px solid var(--coral);outline-offset:-2px;border-radius:0;z-index:2}
.ag-cell.now{box-shadow:inset 0 2px 0 var(--coral)}
.ag-cell.drop{background:var(--azure-tint);outline:2px dashed var(--azure);outline-offset:-2px}
.ag-moving .ag-cell.work:hover,.ag-moving .ag-cell.off:hover{background:var(--coral-tint)}
.ag-block{
  z-index:1;margin:1px 2px;border-radius:6px;cursor:pointer;overflow:hidden;font-size:.75rem;color:var(--ink-soft);padding:.15rem .35rem;
  background:repeating-linear-gradient(45deg,rgba(111,122,130,.22) 0 6px,rgba(255,255,255,.5) 6px 12px);border:1px solid var(--line);
}
.ag-block--clinic{background:repeating-linear-gradient(45deg,rgba(213,88,60,.18) 0 6px,rgba(255,255,255,.55) 6px 12px);color:var(--coral-deep)}
.ag-card{
  z-index:2;margin:1px 2px;border-radius:7px;padding:.12rem .4rem;overflow:hidden;cursor:pointer;min-width:0;
  display:flex;flex-direction:column;font-size:.78rem;line-height:1.2;border-left:4px solid var(--azure);
  background:var(--azure-tint);color:var(--azure-deep);box-shadow:0 1px 2px rgba(21,41,58,.12);
}
.ag-card:hover{filter:brightness(.97);box-shadow:0 2px 6px rgba(21,41,58,.2)}
.ag-card>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:none}
.ag-card-time{font-weight:600;font-variant-numeric:tabular-nums;font-size:.72rem;margin-right:.3rem}
.ag-card-name{font-weight:600;color:var(--ink)}
.ag-card-svc{opacity:.85}
.ag-card--short{justify-content:center}
.ag-card--short .ag-card-svc{display:none}
.ag-card.st-arrived{border-left-color:var(--good);background:var(--good-tint);color:var(--good)}
/* Absente : grisée, nom barré. En retard (réservé, heure passée) : liseré ambre. */
.ag-card.st-no_show{border-left-color:var(--muted);background:var(--paper);color:var(--muted)}
.ag-card.st-no_show .ag-card-name{color:var(--muted);text-decoration:line-through}
.ag-card--late{border-left-color:var(--p4)}
/* Hors de l'affectation (horaire tenu par une application) : liseré ambre pointillé, hachures. */
.ag-card--outside{border-left-style:dashed;border-left-color:var(--p4);background-image:repeating-linear-gradient(135deg,transparent 0 6px,rgba(180,110,0,.10) 6px 12px)}
/* Boutons rapides de la réception (Arrivée, Absente), en haut à droite de la carte. */
.ag-card{position:relative}
.ag-quick{position:absolute;top:2px;right:2px;display:flex;gap:3px}
.ag-card--short .ag-quick{top:50%;transform:translateY(-50%)}
.ag-quick-btn{
  font:inherit;font-size:.7rem;font-weight:600;line-height:1.25;border-radius:6px;padding:.02rem .4rem;cursor:pointer;
  border:1px solid var(--good);background:var(--card);color:var(--good);
}
.ag-quick-btn:hover{background:var(--good);color:#fff}
.ag-quick-btn--no_show{border-color:var(--line);color:var(--muted)}
.ag-quick-btn--no_show:hover{background:var(--muted);border-color:var(--muted);color:#fff}
.ag-card--short .ag-quick-btn{padding:0 .3rem;line-height:1.1}
.ag-card.st-cancelled{border-left-color:var(--muted);background:var(--paper);color:var(--muted);text-decoration:line-through;opacity:.8}
.ag-card[draggable="true"]{cursor:grab}
.ag-dragging .ag-card,.ag-dragging .ag-block{pointer-events:none}
.ag-dragging .ag-card{opacity:.75}
/* Couleur de praticienne (semaine, toutes praticiennes ; pastille du jour). */
.ag-card.pc-0{box-shadow:inset 3px 0 0 var(--p0)}.ag-card.pc-1{box-shadow:inset 3px 0 0 var(--p1)}
.ag-card.pc-2{box-shadow:inset 3px 0 0 var(--p2)}.ag-card.pc-3{box-shadow:inset 3px 0 0 var(--p3)}
.ag-card.pc-4{box-shadow:inset 3px 0 0 var(--p4)}.ag-card.pc-5{box-shadow:inset 3px 0 0 var(--p5)}
.ag-card.pc-6{box-shadow:inset 3px 0 0 var(--p6)}.ag-card.pc-7{box-shadow:inset 3px 0 0 var(--p7)}
/* Page praticienne : liseré entier à la couleur de la clinique (le statut se lit au fond). */
.ag-card--clinic[class*=" pc-"]{box-shadow:0 1px 2px rgba(21,41,58,.12)}
.ag-card--clinic.pc-0{border-left-color:var(--p0)}.ag-card--clinic.pc-1{border-left-color:var(--p1)}
.ag-card--clinic.pc-2{border-left-color:var(--p2)}.ag-card--clinic.pc-3{border-left-color:var(--p3)}
.ag-card--clinic.pc-4{border-left-color:var(--p4)}.ag-card--clinic.pc-5{border-left-color:var(--p5)}
.ag-card--clinic.pc-6{border-left-color:var(--p6)}.ag-card--clinic.pc-7{border-left-color:var(--p7)}
.dot.pc-0{background:var(--p0)}.dot.pc-1{background:var(--p1)}.dot.pc-2{background:var(--p2)}.dot.pc-3{background:var(--p3)}
.dot.pc-4{background:var(--p4)}.dot.pc-5{background:var(--p5)}.dot.pc-6{background:var(--p6)}.dot.pc-7{background:var(--p7)}
.ag-column .ag-colhead{position:sticky}
.ag-column{position:relative}

/* ---------- tiroir ---------- */
dialog.drawer{
  position:fixed;inset:0 0 0 auto;margin:0;padding:0;border:0;border-left:1px solid var(--line);
  width:min(560px,100vw);max-width:100vw;height:100%;max-height:100vh;background:var(--paper-2);color:var(--ink);
  box-shadow:-20px 0 40px -24px rgba(21,41,58,.35);
}
dialog.drawer--wide{width:min(980px,100vw)}
dialog.drawer::backdrop{background:rgba(21,41,58,.32)}
.drawer-inner{display:flex;flex-direction:column;height:100%}
.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem 1.2rem;border-bottom:1px solid var(--line-soft);background:var(--card)}
.drawer-head h2{font-size:1.2rem}
.drawer-body{flex:1;overflow:auto;padding:1rem 1.2rem 2rem}
.drawer-foot:empty{display:none}
.drawer-body .form{gap:.75rem}
.drawer-body fieldset{border:0;padding:0;margin:.4rem 0 .9rem;display:grid;gap:.5rem}
.drawer-body legend{font-weight:600;margin-bottom:.35rem;padding:0}
.form-sub{font-size:1rem;margin:.6rem 0 .1rem;padding-top:.6rem;border-top:1px solid var(--line-soft)}
.subcard{background:var(--card);border:1px solid var(--line-soft);border-radius:12px;padding:.75rem .85rem;margin:.5rem 0;display:grid;gap:.5rem}
.subcard h3{font-size:.98rem}
.subcard--danger{border-color:var(--coral-tint)}
.confirm-dlg{border:0;border-radius:var(--radius);box-shadow:var(--shadow);padding:1.2rem 1.3rem;max-width:min(30rem,92vw);background:var(--card);color:var(--ink)}
.confirm-dlg::backdrop{background:rgba(21,41,58,.35)}
.confirm-dlg p{margin:0 0 1rem}
.results{display:grid;gap:.35rem}
.result{
  display:block;width:100%;text-align:left;background:var(--paper-2);border:1.5px solid var(--line);border-radius:10px;
  padding:.55rem .75rem;cursor:pointer;color:var(--ink);font-size:.9rem;
}
.result:hover{border-color:var(--azure)}
.history{list-style:none;margin:.3rem 0 0;padding:0;display:grid;gap:.35rem}
.facts{display:grid;grid-template-columns:minmax(7rem,auto) 1fr;gap:.3rem .9rem;margin:.4rem 0 .6rem;font-size:.92rem}
.facts dt{color:var(--muted)}
.facts dd{margin:0;white-space:pre-line;overflow-wrap:anywhere}
.details-who{font-size:1.1rem;margin:0 0 .3rem;display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}
.badge{display:inline-block;border-radius:999px;padding:.12rem .6rem;font-size:.75rem;font-weight:600;background:var(--azure-tint);color:var(--azure-deep)}
.badge.st-arrived{background:var(--good-tint);color:var(--good)}
.badge.st-no_show{background:var(--paper);color:var(--muted);text-decoration:line-through}

/* ---------- salle d'attente (réception, aujourd'hui) ---------- */
.wr{background:var(--card);border:1px solid var(--line-soft);border-radius:12px;padding:.55rem .85rem;margin:0 0 .7rem}
.wr[hidden]{display:none}
.wr summary{cursor:pointer;list-style-position:outside}
.wr h2{display:inline;font-size:1rem}
.wr-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(19rem,1fr));gap:.5rem 1.4rem;margin-top:.5rem}
.wr h3{font-size:.82rem;color:var(--muted);font-weight:600;margin:0 0 .3rem;text-transform:uppercase;letter-spacing:.03em}
.wr ul{list-style:none;margin:0;padding:0;display:grid;gap:.3rem}
.wr li{display:flex;align-items:center;gap:.3rem .55rem;flex-wrap:wrap;font-size:.88rem}
.wr-time{font-variant-numeric:tabular-nums;font-weight:600;min-width:3.4rem}
.wr-who{flex:1 1 9rem;min-width:0}
.wr-state{font-size:.8rem;color:var(--muted)}
.wr-state--arrived{color:var(--good);font-weight:600}
.wr-state--late,.wr-state--unconfirmed{color:#8a5f0a;font-weight:600}
.wr-actions{display:flex;gap:.3rem}
.wr-more{font-size:.8rem;color:var(--muted);margin:.25rem 0 0}
.wr--over{border-color:var(--p4);background:#fdf6e6}
.wr--over h2{display:block;margin:0}
.wr--over ul{margin-top:.5rem}
.badge--late{background:#fdf0d5;color:#8a5f0a}
.badge.st-cancelled{background:var(--paper);color:var(--muted)}
.send-list{list-style:none;padding:0;margin:.6rem 0 0;display:grid;gap:.5rem}
.send-list li{background:var(--card);border:1px solid var(--line-soft);border-radius:12px;padding:.6rem .8rem}
.send-row{display:flex;justify-content:space-between;align-items:center;gap:1rem}
.send-list p{margin:.35rem 0 0}

/* messages */
.toasts{position:fixed;right:1rem;bottom:1rem;z-index:100;display:grid;gap:.5rem;max-width:min(28rem,calc(100vw - 2rem))}
.toast{background:var(--ink);color:#fff;border-radius:12px;padding:.7rem .9rem;font-size:.9rem;box-shadow:var(--shadow)}
.toast--warn{background:var(--coral-deep)}
/* « Demandes » de la page publique et pièces jointes */
.req-card{margin-bottom:.6rem}
.req-card.req-done{opacity:.8}
.att-links{display:flex;flex-direction:column;gap:.2rem}
.att-links a{overflow-wrap:anywhere}

/* ---------- réglages ---------- */
.svc-list{display:grid;gap:.6rem}
.svc-row{
  display:grid;grid-template-columns:auto 1fr 1fr 7rem auto;gap:.6rem;align-items:end;background:var(--card);
  border:1px solid var(--line-soft);border-radius:12px;padding:.65rem .75rem;
}
.svc-row.inactive{opacity:.65}
.svc-row .field{gap:.2rem}
.svc-row .field label{font-size:.8rem}
.svc-row .check{padding-bottom:.6rem}
.svc-row>.svc-desc-fr{grid-column:2}
.svc-row>.svc-desc-en{grid-column:3}
.svc-row>.svc-prof{grid-column:4 / -1}
.svc-row>.svc-kind{grid-column:2 / 4}
.svc-move{display:flex;flex-direction:column;gap:.25rem;padding-bottom:.2rem}
.svc-ovr{grid-column:2 / -1;font-size:.88rem}
.svc-ovr summary{cursor:pointer;color:var(--azure);font-weight:600}
/* fiche : sexe, puis le reste de la fiche d'ARA replié */
.sex-pick{display:flex;gap:.5rem}
.sex-pick select{flex:0 0 auto;width:auto;min-width:6rem}
.sex-pick input{flex:1;min-width:0}
.pf-more{border-top:1px solid var(--line);padding-top:.6rem}
.pf-more summary{cursor:pointer;color:var(--azure);font-weight:600}
.pf-more-body{display:flex;flex-direction:column;gap:.75rem;margin-top:.6rem}
.ovr-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.25rem 0}
.ovr-row input{width:9rem}
@media (max-width:760px){.svc-row{grid-template-columns:auto 1fr}.svc-row>.field,.svc-row>.check,.svc-ovr{grid-column:2}}
/* Affectations : une ligne par jour (case, début, dîner, fin). */
.as-head{display:flex;flex-wrap:wrap;gap:.6rem 1.5rem;align-items:end}
.as-head>.field{flex:1 1 14rem;margin:0}
.as-week{min-width:12rem;text-align:center}
.as-grid{display:grid;gap:0;margin:.4rem 0 .8rem}
.as-row{display:grid;grid-template-columns:minmax(10rem,1fr) 8.6rem 18.6rem 8.6rem minmax(8rem,auto);gap:.4rem .8rem;align-items:center;padding:.4rem 0;border-bottom:1px solid var(--line-soft)}
.as-row--head{font-size:.8rem;color:var(--muted);font-weight:600;padding:.1rem 0;border-bottom:1px solid var(--line)}
.as-row:not(.on):not(.as-row--head) .as-cell{opacity:.45}
.as-row input[type=time]{width:8.6rem}
.as-row--head>span:nth-child(3){text-align:center}
.as-lunch{display:inline-flex;gap:.3rem;align-items:center}
.as-others{grid-column:1 / -1;margin:0;font-size:.82rem;color:var(--muted)}
@media (max-width:1100px){.as-row{grid-template-columns:1fr 1fr}.as-row>.check,.as-lunch{grid-column:1 / -1}.as-row--head{display:none}}
/* Réservation : les affectées en boutons ; les autres en rouge pâle (peut-être pas là). */
.pick{display:grid;gap:.5rem}
.pick-row{display:flex;flex-wrap:wrap;gap:.45rem}
.pick-btn{display:grid;text-align:left;gap:.05rem;background:var(--paper-2);border:1.5px solid var(--line);border-radius:10px;padding:.45rem .75rem;cursor:pointer;color:var(--ink);font:inherit}
.pick-btn:hover{border-color:var(--azure)}
.pick-btn[aria-pressed="true"]{background:var(--azure);border-color:var(--azure);color:#fff}
.pick-sub{font-size:.8rem;opacity:.8}
.staff select.maybe-off{background:var(--coral-tint);border-color:#e9b9a8;color:var(--coral-deep)}
.staff select.maybe-off.picked{border-color:var(--coral);font-weight:600}
.staff select.maybe-off option{background:#fff;color:var(--coral-deep)}
.staff select.maybe-off option[value=""]{color:var(--ink)}
/* Durées de la praticienne. */
.dur-list{list-style:none;margin:0;padding:0}
.dur-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;padding:.55rem 0;border-bottom:1px solid var(--line-soft)}
.dur-name{display:grid;gap:.1rem}
.dur-clinics{display:flex;flex-wrap:wrap;gap:.2rem .8rem;font-size:.85rem}
.dur-input{display:inline-flex;gap:.4rem;align-items:center}
.dur-input input{width:6rem}
.person{background:var(--card);border:1px solid var(--line-soft);border-radius:12px;padding:.7rem .85rem;margin:.5rem 0;display:grid;gap:.5rem}
.person-head{display:flex;flex-wrap:wrap;gap:.3rem .8rem;align-items:baseline}
.person-flags{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem}
.invite-code{background:var(--good-tint);border-radius:10px;padding:.6rem .8rem}
.invite-code p{margin:0 0 .3rem}
.code-big{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1.35rem;font-weight:700;letter-spacing:.12em;color:var(--ink)}

@media (max-width:1440px){
  .top-search input{width:12rem}
  .switcher select{min-width:0;max-width:16rem}
  .org-badge{max-width:10rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

/* ---------- petits écrans ---------- */
@media (max-width:760px){
  .top-search input{width:100%}
  .top-search{flex:1 1 100%}
  .toolbar-actions{margin-left:0}
  .ag-scroll{max-height:none}
}

/* ---------- agenda en lecture (semaine de la praticienne) ---------- */
.ag-readonly .ag-cell{cursor:default}
.ag-readonly .ag-cell.work:hover{background:var(--work)}
.ag-readonly .ag-cell.off:hover{background:var(--off)}

/* ---------- pastilles et légende ---------- */
.dot{display:inline-block;width:.65rem;height:.65rem;border-radius:999px;flex:none;background:var(--muted);vertical-align:middle}
.legend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.3rem 1rem;font-size:.88rem}
.legend li{display:inline-flex;align-items:center;gap:.4rem}
a.org-badge{text-decoration:none}
/* Lien en forme de bouton (« Ouvrir la réception », export) : pas de soulignement. */
a.btn{text-decoration:none}
a.org-badge:hover{text-decoration:underline;color:var(--ink)}
.auth-aside{padding:0 .4rem}
.auth-aside .hint{margin:0 0 .3rem}

/* ---------- praticienne : mois ---------- */
.month{background:var(--card);border:1px solid var(--line-soft);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.month-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.month-head{background:var(--paper-2);border-bottom:1px solid var(--line)}
.month-dow{padding:.4rem .5rem;font-size:.74rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;overflow:hidden;white-space:nowrap}
.month-cell{border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);min-width:0}
.month-cell:nth-child(7n){border-right:0}
.month-row:last-child .month-cell{border-bottom:0}
.mc{
  display:flex;flex-direction:column;align-items:stretch;gap:.2rem;width:100%;height:100%;min-height:6.4rem;
  padding:.35rem .45rem .45rem;background:none;border:0;text-align:left;cursor:pointer;color:var(--ink);font-size:.8rem;line-height:1.25;
}
.mc:hover{background:var(--azure-tint)}
.mc:focus-visible{outline:2px solid var(--coral);outline-offset:-2px;border-radius:0}
.mc--out{background:var(--paper);color:var(--muted)}
.mc-num{
  font-weight:600;font-size:.9rem;font-variant-numeric:tabular-nums;align-self:flex-start;min-width:1.7rem;height:1.7rem;
  display:inline-flex;align-items:center;justify-content:center;border-radius:999px;
}
.mc--today .mc-num{background:var(--azure);color:#fff}
.mc-row{display:flex;align-items:center;gap:.35rem;min-width:0;white-space:nowrap;overflow:hidden}
.mc-count{font-weight:600;flex:none}
.mc-times{color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.mc-block{
  align-self:flex-start;font-size:.7rem;color:var(--ink-soft);border-radius:4px;padding:0 .35rem;
  background:var(--paper-2);border:1px dashed var(--line);
}
@media (max-width:900px){.mc-times{display:none}}
@media (max-width:560px){
  .month-dow{padding:.35rem .2rem;text-align:center;font-size:.66rem;letter-spacing:0}
  .mc{min-height:4.4rem;padding:.2rem .2rem .3rem;font-size:.7rem;gap:.12rem}
  .mc-num{min-width:1.45rem;height:1.45rem;font-size:.8rem;align-self:center}
  .mc-row{gap:.15rem;justify-content:center}
  .mc-row .dot{width:.5rem;height:.5rem}
  .mc-block{font-size:0;height:.3rem;width:100%;padding:0}
}

/* ---------- réception : mois ---------- */
.mc-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
.mc-more{font-size:.74rem;color:var(--muted)}
.mc-free{
  align-self:flex-start;font-size:.74rem;font-weight:600;border-radius:4px;padding:0 .35rem;
  background:var(--good-tint);color:var(--good);
}
.mc-free--full{background:var(--paper-2);color:var(--muted)}
.mc-free--none{background:none;color:var(--muted);font-weight:400;padding:0}
@media (max-width:560px){.mc-name,.mc-more{display:none}}

/* ---------- réception : disponibilités ---------- */
.next-line{margin:-.2rem 0 .2rem;font-size:.9rem}
.av-next-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem 1rem}
.av-next-text{display:grid;gap:.1rem}
.av-next-when{font-size:1.02rem}
.av-next-actions{display:flex;gap:.45rem;flex-wrap:wrap}
.av-page{display:flex;align-items:center;gap:.6rem;margin:.9rem 0 .3rem}
.av-page h3{font-size:.98rem;flex:1;text-align:center}
.av-page .cal-nav:disabled{opacity:.35;cursor:default}
.av-days{list-style:none;margin:0;padding:0}
.av-day{padding:.55rem 0;border-bottom:1px solid var(--line-soft);display:grid;gap:.35rem}
.av-day-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .8rem}
.av-day-date{padding:0}
.av-day-date::first-letter{text-transform:uppercase}
.av-controls{align-items:start}
.av-day-shift{color:var(--ink-soft);font-size:.88rem;font-variant-numeric:tabular-nums}
.av-day-total{margin-left:auto;font-size:.82rem;font-weight:600;color:var(--good)}
.av-note{margin:0;font-size:.88rem}
.av-chips{display:flex;flex-wrap:wrap;gap:.4rem}
.av-chip{
  display:inline-flex;align-items:baseline;gap:.45rem;font:inherit;font-size:.88rem;cursor:pointer;
  background:var(--good-tint);color:var(--good);border:1.5px solid transparent;border-radius:999px;padding:.3rem .75rem;
  font-variant-numeric:tabular-nums;
}
.av-chip:hover,.av-chip:focus-visible{border-color:var(--good);outline:none}
.av-chip-len{font-size:.78rem;opacity:.8}
.av-empty{display:grid;gap:.4rem;justify-items:start;padding:.4rem 0}

/* ---------- praticienne : jour ---------- */
.day-head{margin:.1rem 0 .7rem}
.day-head h2{font-size:1.2rem;margin-bottom:.15rem}
.day-head p{margin:0 0 .2rem}
.day-blocks{list-style:none;padding:0;margin:0 0 .7rem;display:grid;gap:.35rem}
.day-block{
  width:100%;text-align:left;border:1px solid var(--line);border-radius:10px;padding:.45rem .75rem;cursor:pointer;color:var(--ink-soft);font-size:.88rem;
  background:repeating-linear-gradient(45deg,rgba(111,122,130,.12) 0 6px,rgba(255,255,255,.65) 6px 12px);
}
.day-block--clinic{color:var(--coral-deep);background:repeating-linear-gradient(45deg,rgba(213,88,60,.12) 0 6px,rgba(255,255,255,.65) 6px 12px)}
.appt-list{list-style:none;padding:0;margin:0;display:grid;gap:.65rem}
@media (min-width:1100px){.appt-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
.appt{
  background:var(--card);border:1px solid var(--line-soft);border-left:5px solid var(--azure);border-radius:12px;
  padding:.7rem .9rem .8rem;box-shadow:var(--shadow);height:100%;
}
.appt.st-arrived{border-left-color:var(--good)}
.appt.st-no_show{border-left-color:var(--muted)}
.appt.st-cancelled{border-left-color:var(--muted);opacity:.75}
.appt-head{display:flex;justify-content:space-between;gap:.6rem;align-items:center}
.appt-time{font-weight:600;font-variant-numeric:tabular-nums}
.appt-name{font-size:1.12rem;margin:.3rem 0 0}
.appt-svc{color:var(--ink-soft);margin:.1rem 0 .2rem;font-size:.92rem}
.appt .facts{margin:.3rem 0 .4rem}
.empty-day{background:var(--card);border:1px dashed var(--line);border-radius:12px;padding:1rem;color:var(--muted)}

/* ---------- praticienne : compte ---------- */
.choice-list{display:grid;gap:.5rem}
.choice-row{
  display:flex;gap:.7rem;align-items:flex-start;border:1.5px solid var(--line);border-radius:12px;padding:.7rem .85rem;
  background:var(--paper-2);cursor:pointer;
}
.choice-row.on{border-color:var(--azure);background:var(--azure-tint)}
.choice-row input{margin:.25rem 0 0;width:1.1rem;height:1.1rem;accent-color:var(--azure);flex:none}
.choice-row>span{display:grid;gap:.15rem}
.clinic-list,.token-list{list-style:none;padding:0;margin:.4rem 0}
.person.inactive{opacity:.65}
.flag-list{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.3rem .45rem}
.flag-list li{font-size:.8rem;background:var(--paper);border-radius:999px;padding:.1rem .6rem;color:var(--ink-soft)}
.person-head .badge{margin-left:.2rem}

/* ---------- organisation ---------- */
.org-tabs{margin-bottom:.9rem}
.org-summary-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.6rem 1rem;align-items:center;margin-bottom:.4rem}
.org-summary-head h1{font-size:1.5rem}
.org-facts{display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;align-items:center}
.badge.sub-active,.badge.sub-trialing{background:var(--good-tint);color:var(--good)}
.badge.sub-past_due,.badge.sub-cancelled,.badge.sub-none{background:var(--coral-tint);color:var(--coral-deep)}
.branch-cards{list-style:none;padding:0;margin:0;display:grid;gap:.8rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,23rem),1fr))}
.branch-card{
  background:var(--card);border:1px solid var(--line-soft);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:1rem;height:100%;display:flex;flex-direction:column;
}
.branch-card h2{font-size:1.15rem}
.branch-slug{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85rem;margin:.15rem 0 .2rem}
.branch-card .actions{margin-top:auto;padding-top:.3rem}
.lead-text{color:var(--ink-soft);margin:0 0 .8rem;max-width:62rem}
.step.narrow{max-width:560px}
.export-form{max-width:560px}
.audit-filter input{font:inherit;color:var(--ink);background:var(--paper-2);border:1.5px solid var(--line);border-radius:10px;padding:.4rem .6rem;min-height:40px}
.table-scroll{overflow-x:auto;margin:.4rem 0;border:1px solid var(--line-soft);border-radius:12px}
.data-table{width:100%;border-collapse:collapse;font-size:.86rem;background:var(--card)}
.data-table th,.data-table td{padding:.45rem .6rem;border-bottom:1px solid var(--line-soft);text-align:left;vertical-align:top}
.data-table th{font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--paper-2);white-space:nowrap}
.data-table tr:last-child td{border-bottom:0}
.data-table .badge{margin-left:.4rem;white-space:nowrap}
.data-table .detail{max-width:18rem;overflow-wrap:anywhere}
.nowrap{white-space:nowrap}
.audit-table tr.is-patient .action-label{font-weight:600;color:var(--azure-deep)}
.ua{display:inline-block;max-width:16rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
code.short{font-size:.8rem;color:var(--ink-soft)}
.pager{justify-content:space-between}
.pw-box{display:grid;gap:.45rem}
.pw-row{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin:0}
.pw-once{user-select:all;word-break:break-all}
.pw-warn{font-weight:600;color:var(--coral-deep);margin:0}

/* ---------- impression de la journée ---------- */
.print-root{display:none}
@media print{
  @page{margin:14mm}
  body.staff{background:#fff;display:block;min-height:0}
  body.staff>*:not(#print){display:none !important}
  .print-root{display:block}
  .print-page{break-after:page;font-size:10.5pt;color:#000}
  .print-page:last-child{break-after:auto}
  .print-head h1{font-size:16pt;margin:0 0 2pt}
  .print-head p{margin:0 0 2pt}
  .print-date{font-weight:600}
  .print-date::first-letter{text-transform:uppercase}
  .print-table{width:100%;border-collapse:collapse;margin-top:8pt}
  .print-table th,.print-table td{border-bottom:.5pt solid #999;padding:4pt 5pt;text-align:left;vertical-align:top}
  .print-table th{font-size:9pt;text-transform:uppercase;letter-spacing:.04em}
  .print-table tr{break-inside:avoid}
  .print-foot{margin-top:10pt;font-size:8pt;color:#555}
}

/* ---------- placement de la grille (généré par src/staff/grid-css.js) ---------- */
.rows-1{grid-template-rows:repeat(1,var(--ag-row))}
.rows-2{grid-template-rows:repeat(2,var(--ag-row))}
.rows-3{grid-template-rows:repeat(3,var(--ag-row))}
.rows-4{grid-template-rows:repeat(4,var(--ag-row))}
.rows-5{grid-template-rows:repeat(5,var(--ag-row))}
.rows-6{grid-template-rows:repeat(6,var(--ag-row))}
.rows-7{grid-template-rows:repeat(7,var(--ag-row))}
.rows-8{grid-template-rows:repeat(8,var(--ag-row))}
.rows-9{grid-template-rows:repeat(9,var(--ag-row))}
.rows-10{grid-template-rows:repeat(10,var(--ag-row))}
.rows-11{grid-template-rows:repeat(11,var(--ag-row))}
.rows-12{grid-template-rows:repeat(12,var(--ag-row))}
.rows-13{grid-template-rows:repeat(13,var(--ag-row))}
.rows-14{grid-template-rows:repeat(14,var(--ag-row))}
.rows-15{grid-template-rows:repeat(15,var(--ag-row))}
.rows-16{grid-template-rows:repeat(16,var(--ag-row))}
.rows-17{grid-template-rows:repeat(17,var(--ag-row))}
.rows-18{grid-template-rows:repeat(18,var(--ag-row))}
.rows-19{grid-template-rows:repeat(19,var(--ag-row))}
.rows-20{grid-template-rows:repeat(20,var(--ag-row))}
.rows-21{grid-template-rows:repeat(21,var(--ag-row))}
.rows-22{grid-template-rows:repeat(22,var(--ag-row))}
.rows-23{grid-template-rows:repeat(23,var(--ag-row))}
.rows-24{grid-template-rows:repeat(24,var(--ag-row))}
.rows-25{grid-template-rows:repeat(25,var(--ag-row))}
.rows-26{grid-template-rows:repeat(26,var(--ag-row))}
.rows-27{grid-template-rows:repeat(27,var(--ag-row))}
.rows-28{grid-template-rows:repeat(28,var(--ag-row))}
.rows-29{grid-template-rows:repeat(29,var(--ag-row))}
.rows-30{grid-template-rows:repeat(30,var(--ag-row))}
.rows-31{grid-template-rows:repeat(31,var(--ag-row))}
.rows-32{grid-template-rows:repeat(32,var(--ag-row))}
.rows-33{grid-template-rows:repeat(33,var(--ag-row))}
.rows-34{grid-template-rows:repeat(34,var(--ag-row))}
.rows-35{grid-template-rows:repeat(35,var(--ag-row))}
.rows-36{grid-template-rows:repeat(36,var(--ag-row))}
.rows-37{grid-template-rows:repeat(37,var(--ag-row))}
.rows-38{grid-template-rows:repeat(38,var(--ag-row))}
.rows-39{grid-template-rows:repeat(39,var(--ag-row))}
.rows-40{grid-template-rows:repeat(40,var(--ag-row))}
.rows-41{grid-template-rows:repeat(41,var(--ag-row))}
.rows-42{grid-template-rows:repeat(42,var(--ag-row))}
.rows-43{grid-template-rows:repeat(43,var(--ag-row))}
.rows-44{grid-template-rows:repeat(44,var(--ag-row))}
.rows-45{grid-template-rows:repeat(45,var(--ag-row))}
.rows-46{grid-template-rows:repeat(46,var(--ag-row))}
.rows-47{grid-template-rows:repeat(47,var(--ag-row))}
.rows-48{grid-template-rows:repeat(48,var(--ag-row))}
.rows-49{grid-template-rows:repeat(49,var(--ag-row))}
.rows-50{grid-template-rows:repeat(50,var(--ag-row))}
.rows-51{grid-template-rows:repeat(51,var(--ag-row))}
.rows-52{grid-template-rows:repeat(52,var(--ag-row))}
.rows-53{grid-template-rows:repeat(53,var(--ag-row))}
.rows-54{grid-template-rows:repeat(54,var(--ag-row))}
.rows-55{grid-template-rows:repeat(55,var(--ag-row))}
.rows-56{grid-template-rows:repeat(56,var(--ag-row))}
.rows-57{grid-template-rows:repeat(57,var(--ag-row))}
.rows-58{grid-template-rows:repeat(58,var(--ag-row))}
.rows-59{grid-template-rows:repeat(59,var(--ag-row))}
.rows-60{grid-template-rows:repeat(60,var(--ag-row))}
.rows-61{grid-template-rows:repeat(61,var(--ag-row))}
.rows-62{grid-template-rows:repeat(62,var(--ag-row))}
.rows-63{grid-template-rows:repeat(63,var(--ag-row))}
.rows-64{grid-template-rows:repeat(64,var(--ag-row))}
.rows-65{grid-template-rows:repeat(65,var(--ag-row))}
.rows-66{grid-template-rows:repeat(66,var(--ag-row))}
.rows-67{grid-template-rows:repeat(67,var(--ag-row))}
.rows-68{grid-template-rows:repeat(68,var(--ag-row))}
.rows-69{grid-template-rows:repeat(69,var(--ag-row))}
.rows-70{grid-template-rows:repeat(70,var(--ag-row))}
.rows-71{grid-template-rows:repeat(71,var(--ag-row))}
.rows-72{grid-template-rows:repeat(72,var(--ag-row))}
.rows-73{grid-template-rows:repeat(73,var(--ag-row))}
.rows-74{grid-template-rows:repeat(74,var(--ag-row))}
.rows-75{grid-template-rows:repeat(75,var(--ag-row))}
.rows-76{grid-template-rows:repeat(76,var(--ag-row))}
.rows-77{grid-template-rows:repeat(77,var(--ag-row))}
.rows-78{grid-template-rows:repeat(78,var(--ag-row))}
.rows-79{grid-template-rows:repeat(79,var(--ag-row))}
.rows-80{grid-template-rows:repeat(80,var(--ag-row))}
.rows-81{grid-template-rows:repeat(81,var(--ag-row))}
.rows-82{grid-template-rows:repeat(82,var(--ag-row))}
.rows-83{grid-template-rows:repeat(83,var(--ag-row))}
.rows-84{grid-template-rows:repeat(84,var(--ag-row))}
.rows-85{grid-template-rows:repeat(85,var(--ag-row))}
.rows-86{grid-template-rows:repeat(86,var(--ag-row))}
.rows-87{grid-template-rows:repeat(87,var(--ag-row))}
.rows-88{grid-template-rows:repeat(88,var(--ag-row))}
.rows-89{grid-template-rows:repeat(89,var(--ag-row))}
.rows-90{grid-template-rows:repeat(90,var(--ag-row))}
.rows-91{grid-template-rows:repeat(91,var(--ag-row))}
.rows-92{grid-template-rows:repeat(92,var(--ag-row))}
.rows-93{grid-template-rows:repeat(93,var(--ag-row))}
.rows-94{grid-template-rows:repeat(94,var(--ag-row))}
.rows-95{grid-template-rows:repeat(95,var(--ag-row))}
.rows-96{grid-template-rows:repeat(96,var(--ag-row))}
.gr-1{grid-row-start:1}.ge-1{grid-row-end:1}
.gr-2{grid-row-start:2}.ge-2{grid-row-end:2}
.gr-3{grid-row-start:3}.ge-3{grid-row-end:3}
.gr-4{grid-row-start:4}.ge-4{grid-row-end:4}
.gr-5{grid-row-start:5}.ge-5{grid-row-end:5}
.gr-6{grid-row-start:6}.ge-6{grid-row-end:6}
.gr-7{grid-row-start:7}.ge-7{grid-row-end:7}
.gr-8{grid-row-start:8}.ge-8{grid-row-end:8}
.gr-9{grid-row-start:9}.ge-9{grid-row-end:9}
.gr-10{grid-row-start:10}.ge-10{grid-row-end:10}
.gr-11{grid-row-start:11}.ge-11{grid-row-end:11}
.gr-12{grid-row-start:12}.ge-12{grid-row-end:12}
.gr-13{grid-row-start:13}.ge-13{grid-row-end:13}
.gr-14{grid-row-start:14}.ge-14{grid-row-end:14}
.gr-15{grid-row-start:15}.ge-15{grid-row-end:15}
.gr-16{grid-row-start:16}.ge-16{grid-row-end:16}
.gr-17{grid-row-start:17}.ge-17{grid-row-end:17}
.gr-18{grid-row-start:18}.ge-18{grid-row-end:18}
.gr-19{grid-row-start:19}.ge-19{grid-row-end:19}
.gr-20{grid-row-start:20}.ge-20{grid-row-end:20}
.gr-21{grid-row-start:21}.ge-21{grid-row-end:21}
.gr-22{grid-row-start:22}.ge-22{grid-row-end:22}
.gr-23{grid-row-start:23}.ge-23{grid-row-end:23}
.gr-24{grid-row-start:24}.ge-24{grid-row-end:24}
.gr-25{grid-row-start:25}.ge-25{grid-row-end:25}
.gr-26{grid-row-start:26}.ge-26{grid-row-end:26}
.gr-27{grid-row-start:27}.ge-27{grid-row-end:27}
.gr-28{grid-row-start:28}.ge-28{grid-row-end:28}
.gr-29{grid-row-start:29}.ge-29{grid-row-end:29}
.gr-30{grid-row-start:30}.ge-30{grid-row-end:30}
.gr-31{grid-row-start:31}.ge-31{grid-row-end:31}
.gr-32{grid-row-start:32}.ge-32{grid-row-end:32}
.gr-33{grid-row-start:33}.ge-33{grid-row-end:33}
.gr-34{grid-row-start:34}.ge-34{grid-row-end:34}
.gr-35{grid-row-start:35}.ge-35{grid-row-end:35}
.gr-36{grid-row-start:36}.ge-36{grid-row-end:36}
.gr-37{grid-row-start:37}.ge-37{grid-row-end:37}
.gr-38{grid-row-start:38}.ge-38{grid-row-end:38}
.gr-39{grid-row-start:39}.ge-39{grid-row-end:39}
.gr-40{grid-row-start:40}.ge-40{grid-row-end:40}
.gr-41{grid-row-start:41}.ge-41{grid-row-end:41}
.gr-42{grid-row-start:42}.ge-42{grid-row-end:42}
.gr-43{grid-row-start:43}.ge-43{grid-row-end:43}
.gr-44{grid-row-start:44}.ge-44{grid-row-end:44}
.gr-45{grid-row-start:45}.ge-45{grid-row-end:45}
.gr-46{grid-row-start:46}.ge-46{grid-row-end:46}
.gr-47{grid-row-start:47}.ge-47{grid-row-end:47}
.gr-48{grid-row-start:48}.ge-48{grid-row-end:48}
.gr-49{grid-row-start:49}.ge-49{grid-row-end:49}
.gr-50{grid-row-start:50}.ge-50{grid-row-end:50}
.gr-51{grid-row-start:51}.ge-51{grid-row-end:51}
.gr-52{grid-row-start:52}.ge-52{grid-row-end:52}
.gr-53{grid-row-start:53}.ge-53{grid-row-end:53}
.gr-54{grid-row-start:54}.ge-54{grid-row-end:54}
.gr-55{grid-row-start:55}.ge-55{grid-row-end:55}
.gr-56{grid-row-start:56}.ge-56{grid-row-end:56}
.gr-57{grid-row-start:57}.ge-57{grid-row-end:57}
.gr-58{grid-row-start:58}.ge-58{grid-row-end:58}
.gr-59{grid-row-start:59}.ge-59{grid-row-end:59}
.gr-60{grid-row-start:60}.ge-60{grid-row-end:60}
.gr-61{grid-row-start:61}.ge-61{grid-row-end:61}
.gr-62{grid-row-start:62}.ge-62{grid-row-end:62}
.gr-63{grid-row-start:63}.ge-63{grid-row-end:63}
.gr-64{grid-row-start:64}.ge-64{grid-row-end:64}
.gr-65{grid-row-start:65}.ge-65{grid-row-end:65}
.gr-66{grid-row-start:66}.ge-66{grid-row-end:66}
.gr-67{grid-row-start:67}.ge-67{grid-row-end:67}
.gr-68{grid-row-start:68}.ge-68{grid-row-end:68}
.gr-69{grid-row-start:69}.ge-69{grid-row-end:69}
.gr-70{grid-row-start:70}.ge-70{grid-row-end:70}
.gr-71{grid-row-start:71}.ge-71{grid-row-end:71}
.gr-72{grid-row-start:72}.ge-72{grid-row-end:72}
.gr-73{grid-row-start:73}.ge-73{grid-row-end:73}
.gr-74{grid-row-start:74}.ge-74{grid-row-end:74}
.gr-75{grid-row-start:75}.ge-75{grid-row-end:75}
.gr-76{grid-row-start:76}.ge-76{grid-row-end:76}
.gr-77{grid-row-start:77}.ge-77{grid-row-end:77}
.gr-78{grid-row-start:78}.ge-78{grid-row-end:78}
.gr-79{grid-row-start:79}.ge-79{grid-row-end:79}
.gr-80{grid-row-start:80}.ge-80{grid-row-end:80}
.gr-81{grid-row-start:81}.ge-81{grid-row-end:81}
.gr-82{grid-row-start:82}.ge-82{grid-row-end:82}
.gr-83{grid-row-start:83}.ge-83{grid-row-end:83}
.gr-84{grid-row-start:84}.ge-84{grid-row-end:84}
.gr-85{grid-row-start:85}.ge-85{grid-row-end:85}
.gr-86{grid-row-start:86}.ge-86{grid-row-end:86}
.gr-87{grid-row-start:87}.ge-87{grid-row-end:87}
.gr-88{grid-row-start:88}.ge-88{grid-row-end:88}
.gr-89{grid-row-start:89}.ge-89{grid-row-end:89}
.gr-90{grid-row-start:90}.ge-90{grid-row-end:90}
.gr-91{grid-row-start:91}.ge-91{grid-row-end:91}
.gr-92{grid-row-start:92}.ge-92{grid-row-end:92}
.gr-93{grid-row-start:93}.ge-93{grid-row-end:93}
.gr-94{grid-row-start:94}.ge-94{grid-row-end:94}
.gr-95{grid-row-start:95}.ge-95{grid-row-end:95}
.gr-96{grid-row-start:96}.ge-96{grid-row-end:96}
.gr-97{grid-row-start:97}.ge-97{grid-row-end:97}
.lanes-1{grid-template-columns:repeat(1,minmax(0,1fr))}
.lanes-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.lanes-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.lanes-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.lanes-5{grid-template-columns:repeat(5,minmax(0,1fr))}
.lanes-6{grid-template-columns:repeat(6,minmax(0,1fr))}
.lanes-7{grid-template-columns:repeat(7,minmax(0,1fr))}
.lanes-8{grid-template-columns:repeat(8,minmax(0,1fr))}
.gc-1{grid-column-start:1}
.gc-2{grid-column-start:2}
.gc-3{grid-column-start:3}
.gc-4{grid-column-start:4}
.gc-5{grid-column-start:5}
.gc-6{grid-column-start:6}
.gc-7{grid-column-start:7}
.gc-8{grid-column-start:8}
