/* ===== Dev → Dispatch V2 (expérimental) ===== */
.v2-tabs { display: flex; gap: 6px; flex-wrap: wrap; margin: 8px 0 14px; }
.v2-tab { border: 1px solid rgba(127,127,127,.35); background: transparent; color: inherit; border-radius: 999px; padding: 5px 12px; cursor: pointer; font-size: 13px; }
.v2-tab.active { background: var(--accent-bg, rgba(37,99,235,.1)); border-color: var(--accent, #2563eb); color: var(--accent, #2563eb); }
.v2-banner { border-left: 4px solid #f59e0b; padding: 8px 12px; margin: 0 0 12px; border-radius: 6px; background: rgba(245,158,11,.1); font-size: 13px; }
.v2-head { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; margin: 0 0 10px; font-size: 13px; }
.v2-pill { padding: 3px 10px; border-radius: 999px; font-weight: 600; font-size: 12px; }
.v2-pill--green { background: rgba(34,197,94,.18); color: #15803d; }
.v2-pill--yellow { background: rgba(234,179,8,.25); color: #a16207; }
.v2-pill--red { background: rgba(239,68,68,.18); color: #b91c1c; }
.v2-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; }
.v2-card { border: 1px solid rgba(127,127,127,.3); border-radius: 10px; padding: 8px 10px; }
.v2-card--coupée { border-style: dashed; }
.v2-card--aide, .v2-card--avisée, .v2-card--soutien { opacity: .75; }
.v2-card-head { display: flex; align-items: center; gap: 6px; }
.v2-name { font-weight: 700; flex: 1; font-size: 14px; }
.v2-badge { font-size: 11px; padding: 1px 7px; border-radius: 999px; background: rgba(127,127,127,.18); white-space: nowrap; }
.v2-badge--coupée { background: rgba(34,197,94,.22); color: #15803d; }
.v2-badge--aide { background: rgba(96,165,250,.3); }
.v2-badge--avisée { background: rgba(234,179,8,.3); color: #a16207; }
.v2-sub { font-size: 11px; color: var(--muted, #64748b); margin: 2px 0 6px; }
.v2-bar { height: 6px; border-radius: 3px; background: rgba(127,127,127,.2); overflow: hidden; margin: 4px 0; }
.v2-bar i { display: block; height: 100%; background: #22c55e; }
.v2-bar--full i { background: #f59e0b; }
.v2-bar--over i { background: #ef4444; }
.v2-kids { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.v2-kid { font-size: 11px; padding: 2px 7px; border-radius: 999px; border: 1px solid var(--c, #999); background: color-mix(in srgb, var(--c, #999) 24%, transparent); cursor: default; }
.v2-kid--borrowed { border-style: dashed; }
.v2-kid--difficult::after { content: ' !'; font-weight: 700; color: #b91c1c; }
.v2-kid--moved { box-shadow: 0 0 0 2px rgba(59,130,246,.55); }
.v2-dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; vertical-align: middle; margin-right: 3px; }
.v2-section { margin-top: 14px; }
.v2-section h4, .v2-pane h4 { margin: 0 0 6px; font-size: 14px; }
.v2-list { margin: 0; padding-left: 18px; font-size: 13px; }
.v2-list li { margin: 2px 0; }
.v2-trace { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; white-space: pre-wrap; background: rgba(127,127,127,.08); padding: 8px; border-radius: 6px; max-height: 280px; overflow: auto; margin-top: 6px; }
.v2-two { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 980px) { .v2-two { grid-template-columns: 1fr; } }
.v2-table { border-collapse: collapse; font-size: 13px; width: 100%; }
.v2-table th, .v2-table td { padding: 4px 6px; border-bottom: 1px solid rgba(127,127,127,.2); text-align: left; vertical-align: middle; }
.v2-table th { font-size: 12px; color: var(--muted, #64748b); font-weight: 600; }
.v2-table input[type=text] { width: 100%; min-width: 140px; }
.v2-chip { display: inline-flex; align-items: center; gap: 2px; font-size: 12px; padding: 1px 8px; border-radius: 999px; background: rgba(148,163,184,.18); margin: 1px; }
.v2-chip button, .v2-x { border: 0; background: none; cursor: pointer; color: #64748b; padding: 0 3px; font-size: 14px; line-height: 1; }
.v2-chip button:hover, .v2-x:hover { color: #dc2626; }
.v2-x:disabled { opacity: .3; cursor: default; }
.v2-row { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; margin: 6px 0; font-size: 13px; }
.v2-row label { display: inline-flex; align-items: center; gap: 5px; }
.v2-check { display: flex; align-items: flex-start; gap: 6px; margin: 5px 0; font-size: 13px; cursor: pointer; }
.v2-check input { margin-top: 3px; }
.v2-rule { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; font-size: 13px; padding: 6px 0; border-bottom: 1px dashed rgba(127,127,127,.25); }
.v2-rule .v2-sentence { flex-basis: 100%; font-size: 12px; color: var(--muted, #64748b); }
.v2-conds { flex-basis: 100%; display: flex; flex-direction: column; gap: 4px; padding-left: 18px; }
.v2-cond { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.v2-cond > .v2-mini { min-width: 14px; text-align: right; }
.v2-cond-add { align-self: flex-start; padding: 2px 8px; font-size: 12px; }
.v2-strip { display: flex; height: 26px; border-radius: 6px; overflow: hidden; margin: 8px 0 4px; border: 1px solid rgba(127,127,127,.25); }
.v2-strip i { flex: 1; cursor: pointer; position: relative; background: rgba(127,127,127,.15); }
.v2-strip i.green { background: rgba(34,197,94,.45); }
.v2-strip i.yellow { background: rgba(234,179,8,.6); }
.v2-strip i.red { background: rgba(239,68,68,.6); }
.v2-strip i.sel { outline: 2px solid #2563eb; outline-offset: -2px; z-index: 1; }
.v2-strip i.ev::after { content: ''; position: absolute; left: 50%; bottom: 3px; width: 6px; height: 6px; margin-left: -3px; border-radius: 50%; background: #111; }
body[data-theme="light"] .v2-strip i.ev::after { background: #111; }
.v2-ev-leave { color: #15803d; } .v2-ev-warn { color: #a16207; } .v2-ev-cancel { color: #b91c1c; } .v2-ev-left, .v2-ev-expired { color: #64748b; }
#v2-rp-events li { cursor: pointer; } #v2-rp-events li.sel { text-decoration: underline; }
#v2-rp-slider { width: 100%; }
.v2-flash { position: fixed; bottom: 18px; right: 18px; background: #111; color: #fff; padding: 8px 14px; border-radius: 8px; font-size: 13px; opacity: 0; transition: opacity .2s; pointer-events: none; z-index: 60; }
.v2-flash.show { opacity: .94; }
.v2-order { padding: 0; margin: 0; list-style: none; }
.v2-order li { display: flex; gap: 6px; align-items: center; padding: 3px 0; font-size: 13px; flex-wrap: wrap; }
.v2-mini { font-size: 11px; color: var(--muted, #64748b); }
.v2-help p, .v2-help li { font-size: 13px; }
.v2-help li { margin: 4px 0; }
.v2-help h4 { margin: 14px 0 4px; }
.v2-link { border: 0; background: none; color: var(--accent, #2563eb); cursor: pointer; font-size: 12px; padding: 0 4px; }
.v2-sc-group { margin: 6px 0 10px; }
.v2-sc-kids { display: flex; flex-wrap: wrap; gap: 2px 12px; margin-left: 4px; }
.v2-sc-kid { font-size: 12px; display: inline-flex; align-items: center; gap: 4px; }
.v2-sc-edu { border-bottom: 1px dashed rgba(127,127,127,.2); margin: 0; padding: 4px 0; }
#v2-settings h3 { margin: 20px 0 4px; }
#v2-settings h3:first-child { margin-top: 6px; }

/* ===== Rejeu : visualiseur « comme sur le téléphone » =====
   Même géométrie que /staff (Groupes → Proposé) : deux colonnes de locaux
   (Pouponnière / Bleu / Rouge à gauche, Jaune / Orange à droite), carrés
   d'enfants 4 par rangée (5 à la pouponnière et au rouge) pour lire les
   ratios d'un coup d'œil, un bloc par éducatrice quand un local en a
   plusieurs. Largeur bornée à celle d'un téléphone. */
.v2-board { max-width: 420px; }
.v2-board-status { font-size: 12.5px; font-weight: 600; padding: 7px 11px; border-radius: 12px; margin: 0 0 8px; }
.v2-board-status--green { background: rgba(34,197,94,.16); color: #15803d; }
.v2-board-status--yellow { background: rgba(234,179,8,.22); color: #a16207; }
.v2-board-status--red { background: rgba(239,68,68,.16); color: #b91c1c; }
.v2-board-grid { display: grid; grid-template-columns: 1fr 1fr; grid-auto-rows: minmax(40px, auto); gap: 8px; align-items: stretch; }
.v2-board-col { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.v2-room {
  --rc: #9aa3ad;
  display: flex; flex-direction: column; flex: 2 0 auto; min-height: 96px;
  padding: 8px 9px 10px; border-radius: 18px;
  background: linear-gradient(180deg, color-mix(in srgb, var(--rc) 30%, transparent), color-mix(in srgb, var(--rc) 16%, transparent));
  border: 1.5px solid color-mix(in srgb, var(--rc) 55%, transparent);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.5), 0 8px 18px -10px color-mix(in srgb, var(--rc) 80%, transparent);
}
.v2-room--pouponniere { --rc: #3dbb7f; }
.v2-room--jaune { --rc: #eab308; }
.v2-room--bleu { --rc: #4f8fea; }
.v2-room--orange { --rc: #f28a3c; }
.v2-room--rouge { --rc: #ea5a4a; }
.v2-room--none { --rc: #9aa3ad; min-height: 0; }
.v2-room-head { display: flex; justify-content: space-between; align-items: center; font-size: 13px; font-weight: 900; margin-bottom: 5px; color: color-mix(in srgb, var(--rc) 55%, #2b1f2a); }
.v2-room-count { font-size: 11px; font-weight: 800; padding: 2px 8px; border-radius: 999px; background: rgba(255,255,255,.65); color: color-mix(in srgb, var(--rc) 55%, #2b1f2a); }
.v2-room-edus { min-height: 15px; margin: -2px 0 6px; font-size: 11px; font-weight: 700; color: color-mix(in srgb, var(--rc) 40%, #6b5d66); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.v2-room-kids { display: grid; grid-template-columns: repeat(var(--kidcols, 4), minmax(0, 38px)); gap: 6px; align-content: start; flex: 1; }
.v2-room-kids--grouped { display: flex; flex-direction: column; gap: 6px; }
.v2-subgrp { padding: 5px 6px 6px; border-radius: 12px; background: rgba(255,255,255,.5); border: 1px solid color-mix(in srgb, var(--rc) 30%, rgba(255,255,255,.7)); }
.v2-subgrp--cut { border-style: dashed; border-color: color-mix(in srgb, #15803d 60%, transparent); }
.v2-subgrp-label { display: flex; justify-content: space-between; align-items: center; gap: 4px; font-size: 10.5px; font-weight: 800; letter-spacing: .3px; margin: 0 1px 4px; color: color-mix(in srgb, var(--rc) 50%, #4a3d47); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.v2-subgrp-label span { font-weight: 900; opacity: .75; }
.v2-subgrp-label em { font-style: normal; font-size: 10px; padding: 0 5px; border-radius: 999px; background: rgba(34,197,94,.22); color: #15803d; }
.v2-subgrp-kids { display: grid; grid-template-columns: repeat(var(--kidcols, 4), minmax(0, 38px)); gap: 6px; min-height: 30px; }
.v2-sq {
  width: auto; height: auto; aspect-ratio: 1 / 1; max-width: 38px; border-radius: 8px; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center; color: #fff; font-size: 13px; font-weight: 800;
  text-shadow: 0 1px 2px rgba(0,0,0,.25); cursor: default; user-select: none;
  background-image: linear-gradient(180deg, rgba(255,255,255,.28), rgba(255,255,255,0) 55%, rgba(0,0,0,.08));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.45), inset 0 -1.5px 3px rgba(0,0,0,.12), 0 3px 6px -3px rgba(0,0,0,.25);
}
.v2-sq--photo { position: relative; background: transparent !important; background-image: none; border: 2.5px solid; padding: 0; overflow: hidden; box-shadow: none; }
.v2-sq--photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border-radius: 5.5px; display: block; }
.v2-sq--borrowed { outline: 2px dashed rgba(0,0,0,.35); outline-offset: -3px; }
.v2-board-off { font-size: 12px; color: var(--muted, #64748b); margin: 8px 0 0; }
.v2-board-unplaced { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; padding: 6px 8px; border: 1.5px dashed rgba(127,127,127,.5); border-radius: 12px; font-size: 12.5px; }
.v2-board-unplaced i { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 5px; vertical-align: middle; }
body[data-theme="dark"] .v2-room-head, body[data-theme="dark"] .v2-room-count { color: color-mix(in srgb, var(--rc) 55%, #fff); }
body[data-theme="dark"] .v2-room-count { background: rgba(0,0,0,.3); }
body[data-theme="dark"] .v2-room-edus { color: color-mix(in srgb, var(--rc) 40%, #c9bfcc); }
body[data-theme="dark"] .v2-subgrp { background: rgba(0,0,0,.22); border-color: color-mix(in srgb, var(--rc) 30%, transparent); }
body[data-theme="dark"] .v2-subgrp-label { color: color-mix(in srgb, var(--rc) 50%, #fff); }
/* Rejeu : employées à sortir du ratio (cases), aide clavier */
.v2-rp-exclude { display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: center; margin: 4px 0 10px; font-size: 13px; }
.v2-rp-exclude label { display: inline-flex; align-items: center; gap: 5px; cursor: pointer; }
.v2-rp-exclude label.on { text-decoration: line-through; opacity: .7; }
.v2-kbd { display: inline-block; font: 11px ui-monospace, SFMono-Regular, Menlo, monospace; padding: 0 5px; border: 1px solid rgba(127,127,127,.5); border-bottom-width: 2px; border-radius: 4px; }
.v2-rp-cols { display: grid; grid-template-columns: minmax(300px, 420px) 1fr; gap: 16px; }
@media (max-width: 980px) { .v2-rp-cols { grid-template-columns: 1fr; } }
.v2-card--exclue { opacity: .55; }
.v2-badge--exclue { background: rgba(148,163,184,.35); }

/* Légende de la ligne du temps du rejeu */
.v2-legend { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 11.5px; color: var(--muted, #64748b); margin: 0 0 6px; }
.v2-legend span { display: inline-flex; align-items: center; gap: 5px; }
.v2-legend i { display: inline-block; width: 14px; height: 10px; border-radius: 2px; background: rgba(127,127,127,.15); }
.v2-legend i.green { background: rgba(34,197,94,.45); } .v2-legend i.yellow { background: rgba(234,179,8,.6); } .v2-legend i.red { background: rgba(239,68,68,.6); }
.v2-legend i.dot { width: 6px; height: 6px; border-radius: 50%; background: #111; } body[data-theme="dark"] .v2-legend i.dot { background: #eee; }
.v2-legend i.sel { outline: 2px solid #2563eb; outline-offset: -2px; background: transparent; }
/* Pointages du personnel dans les événements : discrets */
.v2-ev-in, .v2-ev-out, .v2-ev-break { color: var(--muted, #64748b); font-size: 12px; }
/* Ratio dépassé : les enfants sans place au ratio, hors des blocs */
.v2-board-over { margin-top: 8px; padding: 6px 8px; border-radius: 12px; border: 1.5px solid rgba(239,68,68,.6); background: rgba(239,68,68,.1); }
.v2-board-over b { display: block; font-size: 12px; color: #b91c1c; margin-bottom: 4px; }
.v2-board-over .v2-sq { max-width: 32px; width: 32px; font-size: 11px; display: inline-flex; margin: 0 4px 4px 0; }
/* Enfants (réglages) */
.v2-kids-table td, .v2-kids-table th { padding: 2px 6px; }
.v2-kids-table select { font-size: 12px; }
#v2-rp-punches li { cursor: pointer; } #v2-rp-punches li.sel { text-decoration: underline; }
#v2-rp-punches { max-height: 220px; overflow: auto; }
.v2-board-warn { margin-top: 8px; padding: 6px 8px; border-radius: 12px; border: 1.5px solid rgba(234,179,8,.7); background: rgba(234,179,8,.14); font-size: 12px; color: #a16207; }
.v2-gate { border-radius: 10px; padding: 6px 10px; margin: 6px 0; border: 1.5px solid; }
.v2-gate--off { border-color: rgba(127,127,127,.4); background: rgba(127,127,127,.08); }
.v2-gate--on { border-color: rgba(239,68,68,.6); background: rgba(239,68,68,.1); }
