/* ── Variables ─────────────────────────────────────────────────────────────── */
:root {
  --brand:       #2563eb;
  --brand-light: #eff6ff;
  --radius:      .45rem;
  --gap:         .75rem;
}

html, body { height: 100%; }
body { font-family: "DM Sans", system-ui, -apple-system, sans-serif; }

.muted   { color: #64748b; font-size: .875rem; }
.nowrap  { white-space: nowrap; }

code, .mono {
  font-family: "DM Mono", ui-monospace, Menlo, monospace;
  font-size: .82em;
  background: #f1f5f9;
  padding: .05rem .3rem;
  border-radius: .25rem;
}

/* ── Nav ───────────────────────────────────────────────────────────────────── */
.c-nav {
  background: #fff;
  border-bottom: 1px solid #e2e8f0;
  padding: .7rem 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}
.c-nav__brand {
  font-weight: 700;
  font-size: 1.1rem;
  color: #0f172a;
  text-decoration: none;
  display: flex;
  align-items: center;
  gap: .45rem;
}
.c-nav__logo { font-size: 1.3rem; }
.c-nav__name { letter-spacing: -.01em; }
.c-nav__badge {
  font-size: .7rem;
  font-weight: 700;
  padding: .2rem .6rem;
  border-radius: 999px;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.c-nav__badge--youth  { background: #dcfce7; color: #15803d; }
.c-nav__badge--vol    { background: #ede9fe; color: #6d28d9; }
.c-nav__links { display: flex; gap: .5rem; align-items: center; }
.c-nav__link  { font-size: .85rem; font-weight: 500; color: #475569; text-decoration: none; padding: .3rem .65rem; border-radius: .35rem; transition: background .12s; }
.c-nav__link:hover   { background: #f1f5f9; color: #0f172a; }
.c-nav__link--admin  { background: #f8fafc; border: 1px solid #e2e8f0; }

/* ── Section label ─────────────────────────────────────────────────────────── */
.section-label {
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: #94a3b8;
  margin-bottom: .4rem;
  display: block;
}

/* ── Status badges ─────────────────────────────────────────────────────────── */
.status-badge {
  display: inline-flex;
  align-items: center;
  padding: .18rem .55rem;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.status-badge--draft     { background: #f1f5f9; color: #64748b; }
.status-badge--published { background: #dcfce7; color: #15803d; }
.status-badge--archived  { background: #fef3c7; color: #92400e; }
.status-badge.is-medium  { font-size: .8rem; padding: .25rem .7rem; }

/* ── Tag pill ──────────────────────────────────────────────────────────────── */
.tag-pill {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  padding: .2rem .55rem;
  border-radius: 999px;
  font-size: .73rem;
  font-weight: 600;
}

/* ── Series sidebar ────────────────────────────────────────────────────────── */
.series-sidebar-list { list-style: none; padding: 0; margin: 0; }
.series-item {
  display: block;
  padding: .6rem .75rem;
  border-radius: var(--radius);
  border: 1px solid transparent;
  margin-bottom: .25rem;
  text-decoration: none;
  color: inherit;
  transition: background .12s;
}
.series-item:hover     { background: #f8fafc; text-decoration: none; color: inherit; }
.series-item__title    { font-weight: 600; font-size: .88rem; color: #0f172a; }
.series-item__meta     { display: flex; gap: .35rem; align-items: center; flex-wrap: wrap; margin-top: .2rem; }

/* ── Stat cards ────────────────────────────────────────────────────────────── */
.stat-card { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: var(--radius); padding: 1rem; text-align: center; }
.stat-card__num   { font-size: 2rem; font-weight: 700; color: #0f172a; line-height: 1; }
.stat-card__label { font-size: .78rem; color: #64748b; margin-top: .2rem; }

/* ── URL rows ──────────────────────────────────────────────────────────────── */
.url-row {
  display: flex;
  align-items: center;
  gap: .6rem;
  flex-wrap: wrap;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: var(--radius);
  padding: .6rem .85rem;
}
.url-row__label { font-size: .78rem; font-weight: 700; white-space: nowrap; }
.url-row__label--youth { color: #15803d; }
.url-row__label--vol   { color: #6d28d9; }
.url-row__code { flex: 1; font-size: .75rem; color: #334155; word-break: break-all; background: none; padding: 0; }

/* ── Calendar ──────────────────────────────────────────────────────────────── */
.cal-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: .45rem;
}
.cal-grid--header .cal-day-name {
  text-align: center;
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: #94a3b8;
  padding: .3rem 0;
}
.cal-cell {
  border: 1px solid #e2e8f0;
  border-radius: var(--radius);
  min-height: 96px;
  padding: .35rem;
  background: #fff;
  position: relative;
  transition: box-shadow .12s;
}
.cal-cell:hover { box-shadow: 0 2px 10px rgba(0,0,0,.07); }
.cal-cell.is-outside { background: #fafafa; }
.cal-cell.is-outside .cal-cell__num { color: #cbd5e1; }
.cal-cell.is-today { border-color: var(--brand); background: var(--brand-light); }
.cal-cell.is-today .cal-cell__num { color: var(--brand); font-weight: 700; }
.cal-cell__num    { font-size: .8rem; font-weight: 600; color: #475569; }
.cal-cell__events { margin-top: .25rem; display: flex; flex-direction: column; gap: .18rem; }
.evt-chip {
  display: block;
  font-size: .68rem;
  padding: .12rem .35rem;
  border-radius: .25rem;
  border: 1px solid transparent;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-weight: 500;
  cursor: default;
}

/* ── Name bar ──────────────────────────────────────────────────────────────── */
.name-bar {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: var(--radius);
  padding: .75rem 1rem;
}

/* ── Series header (vote pages) ─────────────────────────────────────────────── */
.series-header {
  border-left: 4px solid #e2e8f0;
  padding-left: 1rem;
}

/* ── Event cards (vote pages) ──────────────────────────────────────────────── */
.event-card {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: var(--radius);
  padding: .85rem 1rem;
}
.event-card__head        { display: flex; gap: .75rem; align-items: flex-start; }
.event-card__datebadge   { background: #f1f5f9; border-radius: .4rem; padding: .5rem .6rem; text-align: center; min-width: 58px; flex-shrink: 0; display:flex; flex-direction:column; align-items:center; gap:.15rem; }
.event-card__day         { font-size: 1.3rem; font-weight: 700; line-height: 1; color: #1e293b; letter-spacing:-.02em; font-family:"DM Mono",monospace; }
.event-card__weekday     { font-size: .62rem; color: #64748b; font-weight: 500; text-transform:capitalize; }
.event-card__time        { font-size: .8rem; font-weight: 600; color: #1e293b; font-family:"DM Mono",monospace; margin-top:.2rem; background:#fff; border-radius:.25rem; padding:.1rem .35rem; border:1px solid #e2e8f0; }
.event-card__dur-inline  { font-size: .75rem; font-style: italic; color: #94a3b8; margin:.1rem 0 .25rem; }
.event-card__info        { flex: 1; }
.event-card__label       { font-weight: 700; font-size: .95rem; color: #0f172a; }
.event-card__meta        { font-size: .75rem; color: #64748b; display: flex; gap: .5rem; flex-wrap: wrap; margin-top: .2rem; }
.event-card__desc        { font-size: .82rem; color: #475569; margin-top: .35rem; }

/* ── Vote row ──────────────────────────────────────────────────────────────── */
.vote-row { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.vote-btn-group {
  display: inline-flex;
  border: 1px solid #e2e8f0;
  border-radius: .4rem;
  overflow: hidden;
}
.vote-btn {
  background: #fff;
  border: none;
  padding: .35rem .75rem;
  font-size: .82rem;
  cursor: pointer;
  color: #64748b;
  border-right: 1px solid #e2e8f0;
  transition: background .1s;
  font-family: "DM Sans", sans-serif;
  font-weight: 500;
}
.vote-btn:last-child { border-right: none; }
.vote-btn:hover { background: #f8fafc; }
.vote-btn.sel-yes   { background: #dcfce7; color: #15803d; font-weight: 700; }
.vote-btn.sel-maybe { background: #fef9c3; color: #b45309; font-weight: 700; }
.vote-btn.sel-no    { background: #fee2e2; color: #dc2626; font-weight: 700; }

/* ── Counts ────────────────────────────────────────────────────────────────── */
.counts     { display: flex; gap: .4rem; align-items: center; font-size: .78rem; flex-wrap: wrap; }
.cnt-yes    { color: #16a34a; font-weight: 600; }
.cnt-maybe  { color: #b45309; font-weight: 600; }
.cnt-no     { color: #dc2626; font-weight: 600; }
.counts-mini { display: flex; gap: .25rem; justify-content: center; margin-top: .15rem; font-size: .68rem; }

/* ── Benevole panel ────────────────────────────────────────────────────────── */
.benevole-panel {
  background: #f5f3ff;
  border: 1px solid #ddd6fe;
  border-radius: .4rem;
  padding: .5rem .75rem;
}
.benevole-panel__label   { font-size: .75rem; font-weight: 700; color: #6d28d9; }
.benevole-panel__bar     { display: flex; align-items: center; gap: .5rem; margin-top: .3rem; }
.benevole-panel__bar progress { flex: 1; height: 6px; border-radius: 3px; }
.benevole-panel__comment { font-size: .75rem; color: #4c1d95; margin-top: .3rem; }

/* ── Toast ─────────────────────────────────────────────────────────────────── */
.c-toast {
  position: fixed;
  bottom: 1.5rem;
  right: 1.5rem;
  background: #0f172a;
  color: #fff;
  padding: .6rem 1.1rem;
  border-radius: .45rem;
  font-size: .85rem;
  font-weight: 500;
  z-index: 9999;
  box-shadow: 0 4px 20px rgba(0,0,0,.18);
  animation: fadeInUp .2s ease;
}
.c-toast--error { background: #dc2626; }
@keyframes fadeInUp { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:translateY(0); } }

/* ── Bulma overrides ────────────────────────────────────────────────────────── */
.input, .textarea, .select select {
  border-color: #e2e8f0;
  border-radius: .375rem;
  font-family: "DM Sans", sans-serif;
}
.input:focus, .textarea:focus, .select select:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(37,99,235,.12);
}
.button { border-radius: .4rem; font-family: "DM Sans", sans-serif; }
.table-wrap { overflow-x: auto; }
.notification { border-radius: .5rem; }
.box { border-radius: .6rem; }

progress::-webkit-progress-bar   { background: #e2e8f0; border-radius: 3px; }
progress::-webkit-progress-value { background: #7c3aed; border-radius: 3px; }
progress::-moz-progress-bar      { background: #7c3aed; border-radius: 3px; }

/* ── Series cards (admin dashboard) ─────────────────────────────────────── */
.series-cards { display: flex; flex-direction: column; gap: 1rem; }
.series-card {
  background: #fff;
  border-radius: .75rem;
  border: 1px solid #e2e8f0;
  border-left: 4px solid #cbd5e1;
  padding: 1.25rem 1.5rem;
  transition: box-shadow .15s;
}
.series-card:hover { box-shadow: 0 4px 16px #0001; }
.series-card__head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1rem;
  margin-bottom: .6rem;
}
.series-card__title { font-size: 1.05rem; font-weight: 700; color: #1e293b; margin: .2rem 0 0; }
.series-card__desc  { font-size: .82rem; color: #64748b; margin: .25rem 0 0; }
.series-card__meta  { display: flex; gap: 1rem; font-size: .78rem; color: #64748b; margin-bottom: .75rem; flex-wrap: wrap; }
.series-card__actions { display: flex; gap: .5rem; flex-wrap: wrap; }

/* ── Youth summary in vol page ───────────────────────────────────────────── */
.youth-summary {
  font-size: .8rem;
  padding: .4rem .6rem;
  background: #f0fdf4;
  border-radius: .4rem;
  border: 1px solid #bbf7d0;
  display: flex;
  flex-wrap: wrap;
  gap: .3rem;
  align-items: baseline;
}
.youth-summary__label { font-weight: 600; color: #166534; white-space: nowrap; }
.youth-summary__yes   { color: #166534; }
.youth-summary__maybe { color: #92400e; }

.benevole-panel__names { font-size: .75rem; }

/* ═══════════════════════════════════════════════════════════════════════════
   VUES DE VOTE PARTAGÉES (jeunes + bénévoles)
═══════════════════════════════════════════════════════════════════════════ */

/* ── Sélecteur de vue ─────────────────────────────────────────────────── */
.view-switcher { display:flex; gap:.3rem; background:#f1f5f9; border-radius:.55rem; padding:.25rem; }
.view-btn { flex:1; border:none; background:transparent; border-radius:.35rem; padding:.4rem .35rem; font-size:.82rem; font-weight:600; cursor:pointer; color:#64748b; transition:all .15s; display:flex; align-items:center; justify-content:center; gap:.3rem; white-space:nowrap; }
.view-btn.active { background:#fff; color:#1e293b; box-shadow:0 1px 4px #0001; }

/* ── Vue swipe ────────────────────────────────────────────────────────── */
#view-swipe { position:relative; min-height:70vh; display:flex; flex-direction:column; align-items:center; user-select:none; }
.swipe-progress { font-size:.78rem; color:#94a3b8; margin-bottom:.75rem; display:flex; align-items:center; gap:.5rem; }
.swipe-progress__bar { height:4px; background:#e2e8f0; border-radius:2px; width:140px; overflow:hidden; }
.swipe-progress__fill { height:100%; background:#6366f1; border-radius:2px; transition:width .3s; }
.swipe-arena { position:relative; width:100%; max-width:420px; height:440px; }
.swipe-card { position:absolute; inset:0; background:#fff; border-radius:1.25rem; box-shadow:0 8px 32px rgba(0,0,0,.12); padding:1.75rem 1.75rem 1.25rem; display:flex; flex-direction:column; cursor:grab; will-change:transform; touch-action:none; }
.swipe-card.is-dragging { cursor:grabbing; box-shadow:0 16px 48px rgba(0,0,0,.2); }
.swipe-card__date { font-size:.7rem; font-weight:700; color:#94a3b8; text-transform:uppercase; letter-spacing:.08em; margin-bottom:.5rem; }
.swipe-card__label { font-size:1.35rem; font-weight:700; color:#1e293b; line-height:1.25; margin-bottom:.35rem; }
.swipe-card__desc { font-size:.85rem; color:#475569; overflow-y:auto; flex:1; }
.swipe-card__extra { display:flex; flex-direction:column; gap:.2rem; background:#f5f3ff; border-radius:.4rem; padding:.5rem .65rem; margin-top:.5rem; }
.swipe-card__vote-hint { display:flex; justify-content:space-between; font-size:.68rem; font-weight:600; margin-top:.75rem; opacity:.3; }
.swipe-hint-yes, .swipe-hint-no { position:absolute; top:1.25rem; font-size:1.4rem; font-weight:900; border-radius:.5rem; padding:.3rem .8rem; opacity:0; pointer-events:none; transition:opacity .08s; }
.swipe-hint-yes { right:1.25rem; color:#16a34a; border:3px solid #16a34a; }
.swipe-hint-no  { left:1.25rem;  color:#dc2626; border:3px solid #dc2626; }
.swipe-tint { position:absolute; inset:0; border-radius:1.25rem; pointer-events:none; }
.swipe-voted { position:absolute; top:1rem; right:1rem; font-size:.72rem; font-weight:700; border-radius:.35rem; padding:.2rem .55rem; }
.swipe-voted.yes   { background:#dcfce7; color:#166534; }
.swipe-voted.maybe { background:#fef9c3; color:#92400e; }
.swipe-voted.no    { background:#fee2e2; color:#991b1b; }
.swipe-actions { display:flex; gap:.6rem; margin-top:1.1rem; width:100%; max-width:420px; }
.swipe-act-btn { flex:1; border:2px solid; border-radius:.75rem; padding:.6rem .35rem; font-size:.82rem; font-weight:700; cursor:pointer; background:#fff; transition:all .15s; }
.swipe-act-btn.no    { border-color:#fca5a5; color:#dc2626; }
.swipe-act-btn.no.active, .swipe-act-btn.no:hover    { background:#fee2e2; }
.swipe-act-btn.maybe { border-color:#fde68a; color:#d97706; }
.swipe-act-btn.maybe.active, .swipe-act-btn.maybe:hover { background:#fef9c3; }
.swipe-act-btn.yes   { border-color:#86efac; color:#16a34a; }
.swipe-act-btn.yes.active, .swipe-act-btn.yes:hover   { background:#dcfce7; }
.swipe-nav { display:flex; gap:.5rem; margin-top:.65rem; width:100%; max-width:420px; justify-content:space-between; align-items:center; }
.swipe-nav-btn { background:#f1f5f9; border:none; border-radius:.5rem; padding:.45rem 1rem; font-size:.82rem; font-weight:600; cursor:pointer; color:#64748b; transition:all .15s; }
.swipe-nav-btn:hover:not(:disabled) { background:#e2e8f0; color:#1e293b; }
.swipe-nav-btn:disabled { opacity:.35; cursor:not-allowed; }
.swipe-counter { font-size:.82rem; color:#94a3b8; }

/* ── Vue calendrier vote ──────────────────────────────────────────────── */
.vcal-wrap { }
.vcal-nav { display:flex; align-items:center; gap:.6rem; margin-bottom:.9rem; }
.vcal-nav button { background:#f1f5f9; border:none; border-radius:.4rem; padding:.35rem .7rem; cursor:pointer; font-size:1rem; color:#475569; transition:background .12s; }
.vcal-nav button:hover { background:#e2e8f0; }
.vcal-nav h3 { flex:1; text-align:center; font-size:.95rem; font-weight:700; color:#1e293b; text-transform:capitalize; margin:0; }
.vcal-grid-head { display:grid; grid-template-columns:repeat(7,1fr); text-align:center; margin-bottom:.2rem; }
.vcal-grid-head span { font-size:.6rem; font-weight:700; color:#94a3b8; text-transform:uppercase; padding:.2rem 0; }
.vcal-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; }
.vcal-cell { min-height:72px; background:#fff; border-radius:.4rem; border:1px solid #f1f5f9; padding:.28rem .22rem; }
.vcal-cell.outside { background:#f8fafc; opacity:.55; }
.vcal-cell.today { border-color:#6366f1; border-width:2px; }
.vcal-cell__num { font-size:.68rem; font-weight:600; color:#94a3b8; text-align:right; padding-right:.1rem; margin-bottom:.18rem; }
.vcal-cell.today .vcal-cell__num { color:#6366f1; font-weight:800; }
.vcal-event { border-radius:.28rem; padding:.14rem .28rem; margin-bottom:2px; font-size:.58rem; font-weight:600; line-height:1.3; cursor:pointer; transition:filter .12s; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.vcal-event:hover { filter:brightness(.92); }
.vcal-event.voted-yes   { outline:2px solid #16a34a; }
.vcal-event.voted-maybe { outline:2px solid #d97706; }
.vcal-event.voted-no    { opacity:.45; }

/* Popup vote calendrier */
.vcal-popup-overlay { position:fixed; inset:0; background:rgba(0,0,0,.45); z-index:1000; display:flex; align-items:center; justify-content:center; padding:1rem; }
.vcal-popup { position:relative; background:#fff; border-radius:1rem; padding:1.5rem 1.5rem 1.25rem; max-width:340px; width:100%; box-shadow:0 16px 48px rgba(0,0,0,.22); }
.vcal-popup__header { display:flex; flex-direction:column; gap:.2rem; margin-bottom:.9rem; }
.vcal-popup__date { font-size:.72rem; font-weight:700; color:#94a3b8; text-transform:uppercase; letter-spacing:.06em; }
.vcal-popup__title { font-size:1.05rem; font-weight:700; color:#1e293b; line-height:1.25; }
.vcal-popup__meta { font-size:.8rem; color:#64748b; }
.vcal-popup__extra { background:#f5f3ff; border-radius:.4rem; padding:.45rem .6rem; margin-bottom:.75rem; font-size:.75rem; display:flex; flex-direction:column; gap:.2rem; }
.vcal-popup__btns { display:flex; gap:.45rem; }
.vcal-popup__btn { flex:1; padding:.6rem .35rem; border-radius:.5rem; border:2px solid; font-weight:700; font-size:.82rem; cursor:pointer; background:#fff; transition:all .15s; }
.vcal-popup__btn.yes   { border-color:#86efac; color:#16a34a; }
.vcal-popup__btn.yes.active,.vcal-popup__btn.yes:hover   { background:#dcfce7; }
.vcal-popup__btn.maybe { border-color:#fde68a; color:#d97706; }
.vcal-popup__btn.maybe.active,.vcal-popup__btn.maybe:hover { background:#fef9c3; }
.vcal-popup__btn.no    { border-color:#fca5a5; color:#dc2626; }
.vcal-popup__btn.no.active,.vcal-popup__btn.no:hover    { background:#fee2e2; }
.vcal-popup__close { position:absolute; top:.85rem; right:.85rem; background:none; border:none; font-size:1.1rem; cursor:pointer; color:#94a3b8; line-height:1; padding:.2rem; }

/* ═══════════════════════════════════════════════════════════════════════════
   MOBILE — correctifs débordements (< 640px)
═══════════════════════════════════════════════════════════════════════════ */

/* Règle de base : rien ne dépasse */
*, *::before, *::after { box-sizing: border-box; }
html, body { overflow-x: hidden; }
.container { padding-left: .75rem !important; padding-right: .75rem !important; }

@media (max-width: 640px) {

  /* ── Navigation ──────────────────────────────────────────────────────── */
  .c-nav { padding: .5rem .75rem; flex-wrap: wrap; gap: .4rem; }
  .c-nav__links { flex-wrap: wrap; gap: .3rem; }
  .c-nav__badge { font-size: .68rem; padding: .15rem .45rem; }

  /* ── Series header + sélecteur vue ───────────────────────────────────── */
  .series-header { padding: .75rem; }
  .series-header .is-flex { flex-direction: column; align-items: stretch !important; }
  .view-switcher { min-width: unset !important; width: 100%; margin-top: .5rem; }

  /* ── URL rows (admin édition) ─────────────────────────────────────────── */
  .url-row { flex-wrap: wrap; gap: .4rem; }
  .url-row__code {
    width: 100%; min-width: 0;
    font-size: .68rem;
    word-break: break-all;
    white-space: normal;
  }

  /* ── Carte évènement (pages vote) ────────────────────────────────────── */
  .event-card__head { gap: .5rem; }
  .event-card__datebadge { min-width: 52px; padding: .4rem .5rem; }
  .event-card__day { font-size: 1.1rem; }
  .event-card__info { min-width: 0; }
  .event-card__label { font-size: .9rem; word-break: break-word; }
  .event-card__desc  { font-size: .78rem; }

  /* ── Boutons de vote ─────────────────────────────────────────────────── */
  .vote-btn-group { flex-wrap: wrap; gap: .35rem; }
  .vote-btn { padding: .45rem .5rem; font-size: .8rem; flex: 1; min-width: 0; }
  .vote-row { flex-direction: column; align-items: stretch; gap: .5rem; }
  .counts   { font-size: .72rem; }

  /* ── Résumé jeunes / bénévoles ───────────────────────────────────────── */
  .youth-summary { font-size: .75rem; flex-direction: column; }
  .benevole-panel__bar { flex-wrap: wrap; }

  /* ── Formulaire édition série ────────────────────────────────────────── */
  .edit-layout { grid-template-columns: 1fr !important; }
  .ev-card__body, .ev-card__vol { padding: .65rem; }
  .ev-card__row--3 { grid-template-columns: 1fr 1fr !important; }
  .ev-card__row--3 > :last-child { grid-column: 1 / -1; }

  /* ── Admin — cartes séries ───────────────────────────────────────────── */
  .series-card { padding: .85rem 1rem; }
  .series-card__head { flex-direction: column; gap: .4rem; }
  .series-card__actions { flex-wrap: wrap; }
  .series-card__actions .button { flex: 1; min-width: 0; font-size: .75rem; justify-content: center; }

  /* ── Calendrier public ───────────────────────────────────────────────── */
  .cal-grid { gap: 1px; }
  .cal-cell { min-height: 52px; }
  .evt-chip { font-size: .55rem; padding: .08rem .2rem; }

  /* ── Vue swipe ───────────────────────────────────────────────────────── */
  .swipe-arena { height: 380px; }
  .swipe-card { padding: 1.25rem 1.25rem 1rem; }
  .swipe-card__label { font-size: 1.15rem; }
  .swipe-act-btn { padding: .55rem .2rem; font-size: .75rem; }

  /* ── Vue calendrier vote ─────────────────────────────────────────────── */
  .vcal-cell { min-height: 56px; }
  .vcal-event { font-size: .54rem; }
  .vcal-popup { padding: 1.1rem; }
  .vcal-popup__btns { flex-wrap: wrap; }
  .vcal-popup__btn { flex: 1; min-width: 0; padding: .55rem .2rem; font-size: .78rem; }

  /* ── Admin détail (tableau votes) ────────────────────────────────────── */
  .table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }

  /* ── Boîtes générales ────────────────────────────────────────────────── */
  .box { padding: .85rem !important; }
  .title.is-4 { font-size: 1.15rem; }
  .title.is-5 { font-size: 1rem; }
}

@media (max-width: 380px) {
  .vote-btn { font-size: .72rem; padding: .4rem .3rem; }
  .swipe-act-btn { font-size: .68rem; }
  .event-card__datebadge { min-width: 46px; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   VUE CALENDRIER VOTE — blocs inline avec boutons
═══════════════════════════════════════════════════════════════════════════ */
.vcal-cell { min-height: 80px; }

.vcal-ev-block {
  background: #fff;
  border-radius: .3rem;
  border-left: 3px solid #94a3b8;
  margin-bottom: 3px;
  overflow: hidden;
}
.vcal-ev-info {
  display: flex; flex-direction: column;
  padding: .2rem .3rem .1rem;
  gap: .05rem;
}
.vcal-ev-label { font-size: .58rem; font-weight: 700; color: #1e293b; line-height: 1.2; }
.vcal-ev-time  { font-size: .52rem; color: #64748b; font-family: "DM Mono", monospace; }
.vcal-ev-btns  {
  display: flex; gap: 1px;
  border-top: 1px solid #f1f5f9;
}
.vcal-ev-btn {
  flex: 1; border: none; background: #f8fafc;
  font-size: .6rem; font-weight: 700; padding: .2rem .1rem;
  cursor: pointer; transition: background .12s;
  color: #94a3b8;
}
.vcal-ev-btn:hover              { background: #f1f5f9; }
.vcal-ev-btn--yes.active        { background: #dcfce7; color: #166534; }
.vcal-ev-btn--maybe.active      { background: #fef9c3; color: #92400e; }
.vcal-ev-btn--no.active         { background: #fee2e2; color: #991b1b; }
.vcal-ev-btn--yes:hover         { color: #166534; }
.vcal-ev-btn--maybe:hover       { color: #92400e; }
.vcal-ev-btn--no:hover          { color: #991b1b; }
