/* Base */
:root{
  --bg:#eef3fb;
  --card:#ffffff;
  --text:#0f172a;
  --muted:#64748b;
  --blue:#0b3b63;
  --blue2:#0f4b7f;
  --ring: rgba(255,255,255,.22);
  --shadow: 0 18px 45px rgba(2,8,23,.10);
}
*{box-sizing:border-box}
body{
  margin:0;
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;
  background: radial-gradient(1000px 600px at 20% 0%, rgba(14,116,144,.10), transparent 55%),
              radial-gradient(1200px 700px at 80% 10%, rgba(59,130,246,.10), transparent 60%),
              var(--bg);
  color:var(--text);
}
a{color:inherit}

/* Header */
.topbar{
  position:sticky; top:0; z-index:20;
  display:flex; align-items:center; justify-content:space-between;
  gap:18px;
  padding:14px 18px;
  background: linear-gradient(135deg, var(--blue), var(--blue2));
  box-shadow: 0 18px 45px rgba(2,8,23,.25);
}
.brand{display:flex; align-items:center; gap:12px; min-width: 260px;}
.brand-logo{width:44px; height:44px; border-radius:12px; object-fit:cover; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.18);}
.brand-title{color:#fff; font-weight:900; font-size:16px; line-height:1.1}
.brand-sub{color:rgba(255,255,255,.75); font-weight:600; font-size:13px}

.tabs{display:flex; gap:18px; justify-content:center; flex:1}
.tab{
  appearance:none; border:none; cursor:pointer;
  background: rgba(255,255,255,.10);
  border: 1px solid rgba(255,255,255,.20);
  color:#fff;
  padding:14px 26px;
  min-width: 230px;
  border-radius:999px;
  display:flex; align-items:center; justify-content:center; gap:10px;
  font-weight:900; font-size:16px;
  box-shadow: 0 10px 22px rgba(0,0,0,.12), inset 0 1px 0 rgba(255,255,255,.12);
  transition: transform .15s ease, background .15s ease;
}
.tab:hover{transform: translateY(-1px); background: rgba(255,255,255,.14);}
.tab.is-active{background: rgba(255,255,255,.18); outline: 2px solid rgba(255,59,59,.35);}
.tab-ico{opacity:.95}

@media (max-width: 820px){
  .topbar{flex-wrap:wrap}
  .tabs{width:100%; justify-content:flex-start}
  .tab{min-width: 160px; padding:12px 18px}
}

/* Layout */
.container{max-width:1200px; margin:18px auto; padding:0 14px}
.view{display:none}
.view.is-active{display:block}

.card{
  background:var(--card);
  border:1px solid rgba(15,23,42,.10);
  border-radius:18px;
  box-shadow: var(--shadow);
}
.filters{padding:14px 16px; margin-bottom:14px}
.filters-row{display:grid; grid-template-columns: 1fr 280px auto; gap:14px; align-items:end}
.field label{display:block; font-weight:800; color:#334155; font-size:13px; margin-bottom:6px}
.field input, .field select{
  width:100%;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid rgba(15,23,42,.14);
  outline:none;
}
.actions{display:flex; gap:10px; justify-content:flex-end}
.btn{
  padding:10px 12px; border-radius:12px;
  border:1px solid rgba(15,23,42,.14);
  background:#fff; cursor:pointer; font-weight:800;
}
.btn-ghost{background: transparent}
@media (max-width: 900px){
  .filters-row{grid-template-columns: 1fr; }
  .actions{justify-content:flex-start}
}

.marquee-wrap{
  display:flex; align-items:center; gap:12px;
  padding:10px 12px;
  border-radius:16px;
  background: rgba(245,158,11,.12);
  border: 1px solid rgba(245,158,11,.24);
  margin: 12px 0 16px;
  overflow:hidden;
}
.marquee-label{font-weight:950; white-space:nowrap}
.marquee{flex:1; overflow:hidden}
.marquee-track{
  display:inline-flex; gap:22px; align-items:center;
  white-space:nowrap;
  animation: marquee 22s linear infinite;
}
.marquee-item{opacity:.95; font-weight:850}
@keyframes marquee{
  0%{transform: translateX(0)}
  100%{transform: translateX(-50%)}
}

/* Calendar + side */
.layout{display:grid; grid-template-columns: 1fr 360px; gap:14px; align-items:start}
.calendar-card{padding:12px}
.side{display:flex; flex-direction:column; gap:14px}
.side .card{padding:14px 16px}
.details{color:#334155; font-weight:650}
.upcoming{display:flex; flex-direction:column; gap:10px}
.up-item{border:1px solid rgba(15,23,42,.10); border-radius:14px; padding:10px 12px}
.up-title{font-weight:950}
.up-meta{color:var(--muted); font-weight:700; margin-top:2px; font-size:13px}
@media (max-width: 980px){
  .layout{grid-template-columns:1fr}
}

/* FullCalendar French tweaks */
.fc .fc-toolbar-title{font-weight:950}
.fc .fc-button{border-radius:12px !important; font-weight:900 !important}
.fc .fc-list-event-time, .fc .fc-list-event-dot{display:none !important}
.fc .fc-list-event-title{width:100%}
.fc .fc-daygrid-event{border-radius:12px; padding:2px 6px}
.fc .fc-daygrid-day-number{font-weight:900}

/* Custom event content */
.cal-ev{display:flex; align-items:center; justify-content:space-between; gap:8px; width:100%}
.cal-ev-title{overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.cal-ev-sub{font-size:12px; opacity:.9; font-weight:800}
.cal-ev-mandat, .mandat-ico{
  flex:0 0 auto;
  width:28px; height:28px;
  display:inline-flex; align-items:center; justify-content:center;
  border-radius:10px;
  background: rgba(255,255,255,.82);
  border:1px solid rgba(15,23,42,.16);
  text-decoration:none;
}
.cal-ev-mandat:hover, .mandat-ico:hover{transform: translateY(-1px) scale(1.05)}

/* Dates clés timeline */
.dates-head{display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 16px 0}
.dates-head h2{margin:0; font-weight:950}
.today-pill{font-weight:900; color:#334155; background: rgba(2,132,199,.10); border:1px solid rgba(2,132,199,.20); padding:8px 10px; border-radius:999px}

.timeline{padding:14px 16px 18px}
.month-title{font-weight:950; font-size:18px; margin:18px 0 10px}
.vt{position:relative; padding-left:18px}
.vt::before{content:""; position:absolute; left:6px; top:0; bottom:0; width:3px; border-radius:999px; background: rgba(37,99,235,.22)}
.vt-item{position:relative; margin:10px 0}
.vt-dot{position:absolute; left:-2px; top:18px; width:14px; height:14px; border-radius:999px; background:#fff; border:3px solid rgba(37,99,235,.70)}
.vt-card{
  position:relative;
  background:#fff;
  border:1px solid rgba(15,23,42,.10);
  border-radius:18px;
  padding:14px 14px 14px 14px;
  box-shadow: 0 14px 35px rgba(2,8,23,.08);
}
.vt-title{font-weight:950; font-size:16px}
.vt-meta{margin-top:4px; color:var(--muted); font-weight:750}
.vt-badges{margin-top:8px; display:flex; gap:8px; flex-wrap:wrap}
.badge{font-weight:900; font-size:12px; padding:6px 10px; border-radius:999px; border:1px solid rgba(15,23,42,.14); background:rgba(255,255,255,.8)}

/* CODIR: strict no animation */
.vt-card.codir{background: rgba(148,163,184,.10); border:2px solid rgba(148,163,184,.35)}
.vt-card.codir::before, .vt-card.codir::after{content:none !important; display:none !important; animation:none !important}
.vt-card.codir .cd-mail{position:absolute; top:12px; right:12px; width:38px; height:38px; border-radius:999px; background:#fff; border:1px solid rgba(15,23,42,.14); box-shadow:0 10px 26px rgba(0,0,0,.18); display:flex; align-items:center; justify-content:center; text-decoration:none; z-index:4}
.vt-card.codir .cd-mail::before{content:"✉"; font-size:18px}

/* Institutionnel: light sheen */
.vt-card.inst{border:2px solid rgba(37,99,235,.25); background: linear-gradient(135deg, rgba(37,99,235,.14), rgba(255,255,255,.92)); overflow:hidden}
.vt-card.inst::before{
  content:"";
  position:absolute; inset:0;
  background: linear-gradient(110deg, rgba(37,99,235,0) 0%, rgba(37,99,235,.20) 35%, rgba(255,255,255,0) 60%);
  transform: translateX(-60%);
  animation: inst-sheen 4.2s ease-in-out infinite;
  pointer-events:none;
}
@keyframes inst-sheen{
  0%,35%{ transform: translateX(-60%); opacity:0; }
  45%{ opacity:.55; }
  65%,100%{ transform: translateX(80%); opacity:0; }
}

/* Deadline: stronger pulse */
.vt-card.deadline{border:3px solid rgba(239,68,68,.55); background: linear-gradient(135deg, rgba(239,68,68,.14), rgba(255,255,255,.92)); overflow:hidden}
.vt-card.deadline::before{
  content:""; position:absolute; inset:-2px; border-radius:18px; padding:2px;
  background: conic-gradient(from 0deg, rgba(239,68,68,0), rgba(239,68,68,.92), rgba(250,204,21,.75), rgba(239,68,68,0));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  animation: deadline-pulse 2.0s ease-in-out infinite;
  filter: drop-shadow(0 0 16px rgba(239,68,68,.35));
  pointer-events:none;
}
@keyframes deadline-pulse{
  0%,100%{ opacity:.60; transform: scale(1); }
  50%{ opacity:1; transform: scale(1.015); }
}

/* France: tricolor + sparkle ring */
.vt-card.france{
  background: linear-gradient(90deg,
    rgba(29,78,216,.10) 0%,
    rgba(29,78,216,.10) 33%,
    rgba(255,255,255,.92) 33%,
    rgba(255,255,255,.92) 66%,
    rgba(220,38,38,.10) 66%,
    rgba(220,38,38,.10) 100%);
  overflow:hidden;
}
.vt-card.france::before{
  content:""; position:absolute; inset:-3px; border-radius:18px; padding:3px;
  background: conic-gradient(from 0deg,
    rgba(29,78,216,0),
    rgba(29,78,216,.85),
    rgba(255,255,255,0),
    rgba(220,38,38,.85),
    rgba(29,78,216,0));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  animation: fr-spin 2.6s linear infinite;
  filter: drop-shadow(0 0 18px rgba(255,255,255,.55));
  opacity:.95; pointer-events:none;
}
.vt-card.france::after{
  content:""; position:absolute; inset:-10px; border-radius:24px;
  background:
    radial-gradient(circle, rgba(255,255,255,.95) 0 2.8px, rgba(255,255,255,0) 7px) 10% 20%/160px 160px,
    radial-gradient(circle, rgba(255,255,255,.90) 0 2.4px, rgba(255,255,255,0) 7px) 75% 30%/190px 190px,
    radial-gradient(circle, rgba(255,255,255,.92) 0 2.6px, rgba(255,255,255,0) 7px) 35% 80%/180px 180px,
    radial-gradient(circle, rgba(255,255,255,.88) 0 2.2px, rgba(255,255,255,0) 7px) 86% 75%/210px 210px;
  filter: drop-shadow(0 0 14px rgba(255,255,255,.55));
  animation: fr-sparkle 1.2s ease-in-out infinite;
  opacity:.85; pointer-events:none;
}
@keyframes fr-spin{to{transform: rotate(360deg)}}
@keyframes fr-sparkle{0%,100%{transform: translateY(0); opacity:.55} 50%{transform: translateY(-2px); opacity:1}}

@media (prefers-reduced-motion: reduce){
  .vt-card.inst::before, .vt-card.deadline::before, .vt-card.france::before, .vt-card.france::after{animation:none !important}
}

/* ===== Header : grand logo à gauche ===== */
.brand-logo{
  height: 46px;
  width: auto;
  max-width: 260px;
  object-fit: contain;
  margin-right: 14px;
  filter: drop-shadow(0 10px 22px rgba(0,0,0,.18));
}
@media (max-width: 720px){
  .brand-logo{ height: 38px; max-width: 220px; }
}

/* ===== Vue Liste : faire ressortir le "tableau" ===== */
.fc .fc-list{
  background: rgba(255,255,255,.92);
  border: 1px solid rgba(15,23,42,.10);
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 20px 60px rgba(2,6,23,.10);
}
.fc .fc-list-day-cushion{
  background: rgba(15,23,42,.05);
}
.fc .fc-list-event:hover td{
  background: rgba(15,23,42,.04);
}

/* ===== France : flèche tricolore qui traverse la carte ===== */
.vt-card.france{
  position: relative;
  overflow: hidden;
}
/* on conserve le fond tricolore (déjà présent) mais on remplace l'étincellement */
.vt-card.france::after{
  content:"";
  position:absolute;
  left:-40%;
  top:0;
  height:100%;
  width: 55%;
  background: linear-gradient(90deg,
    rgba(29,78,216,0) 0%,
    rgba(29,78,216,.55) 25%,
    rgba(255,255,255,.65) 50%,
    rgba(220,38,38,.55) 75%,
    rgba(220,38,38,0) 100%);
  clip-path: polygon(0 0, 85% 0, 100% 50%, 85% 100%, 0 100%, 10% 50%);
  filter: drop-shadow(0 0 14px rgba(255,255,255,.45));
  opacity: .85;
  animation: fr-arrow 4.2s ease-in-out infinite;
  pointer-events:none;
}
@keyframes fr-arrow{
  0%{ transform: translateX(-10%); opacity:0; }
  15%{ opacity:.9; }
  50%{ transform: translateX(210%); opacity:.9; }
  65%{ opacity:.2; }
  100%{ transform: translateX(230%); opacity:0; }
}
@media (prefers-reduced-motion: reduce){
  .vt-card.france::after{ animation:none !important; opacity:.25; left:10%; }
}

/* Mandat sur Championnats de France */
.vt-card.france .fr-mandat{
  position:absolute;
  top:14px;
  right:14px;
  width:36px;
  height:36px;
  border-radius:999px;
  background: rgba(255,255,255,.88);
  border: 1px solid rgba(15,23,42,.14);
  box-shadow: 0 10px 24px rgba(2,6,23,.18);
  display:flex;
  align-items:center;
  justify-content:center;
  text-decoration:none;
  z-index:5;
}
.vt-card.france .fr-mandat:hover{ transform: translateY(-1px) scale(1.06); }

/* ===== Header : logo plus large + sans texte ===== */
.brand-logo{
  height: 64px !important;
  max-width: 340px !important;
  margin-right: 18px !important;
}
@media (max-width: 720px){
  .brand-logo{ height: 52px !important; max-width: 280px !important; }
}

/* ===== France : retirer l'ancien "bâton/anneau" tournant ===== */
.vt-card.france::before{
  content: none !important;
  display:none !important;
  animation:none !important;
}

/* ===== Institutionnel (dates clés) : effet flamboyant scintillant ===== */
.vt-card.inst{
  position:relative;
  overflow:hidden;
  border: 2px solid rgba(124,58,237,.35) !important;
  background: linear-gradient(135deg, rgba(124,58,237,.14), rgba(255,255,255,.94)) !important;
  box-shadow: 0 16px 48px rgba(2,6,23,.10), 0 0 0 6px rgba(124,58,237,.10);
}
.vt-card.inst::after{
  content:"";
  position:absolute;
  inset:-10px;
  background:
    radial-gradient(circle, rgba(255,255,255,.95) 0 2.8px, rgba(255,255,255,0) 8px) 12% 20%/160px 160px,
    radial-gradient(circle, rgba(255,255,255,.92) 0 2.4px, rgba(255,255,255,0) 8px) 70% 18%/190px 190px,
    radial-gradient(circle, rgba(255,255,255,.94) 0 2.6px, rgba(255,255,255,0) 8px) 35% 82%/180px 180px,
    radial-gradient(circle, rgba(255,255,255,.88) 0 2.2px, rgba(255,255,255,0) 8px) 86% 76%/210px 210px;
  filter: drop-shadow(0 0 16px rgba(124,58,237,.18));
  opacity:.75;
  animation: inst-sparkle 1.8s ease-in-out infinite;
  pointer-events:none;
  z-index:0;
}
.vt-card.inst > *{ position:relative; z-index:1; }

@keyframes inst-sparkle{
  0%,100%{ transform: translateY(0) scale(1); opacity:.55; }
  50%{ transform: translateY(-2px) scale(1.02); opacity:.95; }
}
@media (prefers-reduced-motion: reduce){
  .vt-card.inst::after{ animation:none !important; opacity:.35; }
}

/* ===== Autour de moi ===== */
.nearby{ margin: 18px 0 20px; padding: 16px 16px 12px; border:1px solid rgba(15,23,42,.10); border-radius: 18px; background: rgba(255,255,255,.92); box-shadow: 0 16px 46px rgba(2,6,23,.08); }
.nearby-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.nearby-head h2{ margin:0; font-size: 18px; }
.nearby-controls{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.nearby .range{ display:flex; align-items:center; gap:10px; padding: 10px 12px; border:1px solid rgba(15,23,42,.10); border-radius: 999px; background: rgba(255,255,255,.9); }
.nearby .range input{ width: 180px; }
.nearby-grid{ display:grid; grid-template-columns: 1.2fr .8fr; gap: 14px; margin-top: 12px; }
.nearby-map{ height: 320px; border-radius: 16px; overflow:hidden; border: 1px solid rgba(15,23,42,.10); }
.nearby-list{ display:flex; flex-direction:column; gap:10px; }
.nearby-items{ display:flex; flex-direction:column; gap:10px; max-height: 320px; overflow:auto; padding-right: 4px; }
.nearby-card{ border:1px solid rgba(15,23,42,.10); border-radius: 16px; padding: 10px 12px; background: rgba(255,255,255,.95); box-shadow: 0 10px 28px rgba(2,6,23,.06); display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.nearby-title{ font-weight: 900; }
.nearby-meta{ opacity:.82; font-weight:650; margin-top: 2px; }
.nearby-km{ font-weight: 950; white-space:nowrap; }
.nearby-actions{ display:flex; align-items:center; gap:8px; }
.nearby-actions a{ text-decoration:none; }
.nearby-mandat{ width:32px; height:32px; display:inline-flex; align-items:center; justify-content:center; border-radius: 12px; border:1px solid rgba(15,23,42,.14); background: rgba(255,255,255,.85); }
.nearby-route{ width:32px; height:32px; display:inline-flex; align-items:center; justify-content:center; border-radius: 12px; border:1px solid rgba(15,23,42,.14); background: rgba(255,255,255,.85); }
@media (max-width: 860px){
  .nearby-grid{ grid-template-columns: 1fr; }
  .nearby-map{ height: 280px; }
  .nearby-items{ max-height: 260px; }
}

/* ===== Modal popup concours ===== */
.modal{ position:fixed; inset:0; display:none; z-index:9999; }
.modal[aria-hidden="false"]{ display:block; }
.modal-backdrop{ position:absolute; inset:0; background: rgba(2,6,23,.62); backdrop-filter: blur(6px); }
.modal-dialog{
  position:relative;
  max-width: 720px;
  margin: 6vh auto;
  background: rgba(255,255,255,.96);
  border: 1px solid rgba(15,23,42,.12);
  border-radius: 22px;
  box-shadow: 0 30px 100px rgba(0,0,0,.35);
  overflow:hidden;
}
.modal-close{
  position:absolute;
  top:12px; right:12px;
  width:40px; height:40px;
  border-radius: 14px;
  border: 1px solid rgba(15,23,42,.12);
  background: rgba(255,255,255,.92);
  cursor:pointer;
}
.modal-body{ padding: 18px 18px 16px; }
.modal-title{ margin: 6px 0 8px; font-size: 20px; }
.modal-meta{ opacity:.85; font-weight:650; }
.modal-desc{ margin-top: 10px; white-space: pre-wrap; }
.modal-actions{ margin-top: 14px; display:flex; gap:10px; flex-wrap:wrap; }
.modal-actions a{
  display:inline-flex; align-items:center; justify-content:center;
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px solid rgba(15,23,42,.12);
  background: rgba(255,255,255,.92);
  text-decoration:none;
  font-weight: 850;
}
.modal-badges{ display:flex; gap:8px; flex-wrap:wrap; }
.modal-badges .b{
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid rgba(15,23,42,.14);
  background: rgba(255,255,255,.85);
  font-weight: 850;
  font-size: 12px;
}
@media (max-width: 760px){
  .modal-dialog{ margin: 10px; max-width: calc(100% - 20px); }
}

/* ===== Couleurs concours (calendrier) ===== */
.fc .ev-tae, .fc .ev-paraext{ background:#f6ff00 !important; color:#111111 !important; border-color: rgba(0,0,0,.18) !important; }
.fc .ev-3d{ background:#c08a5a !important; color:#111111 !important; border-color: rgba(255,255,255,.25) !important; }
.fc .ev-nature{ background:#556b2f !important; color:#111111 !important; border-color: rgba(255,255,255,.25) !important; }
.fc .ev-campagne{ background:#000000 !important; color:#f2c200 !important; border-color: rgba(242,194,0,.30) !important; }
.fc .ev-loisir{ background:#7dd3fc !important; color:#111111 !important; border-color: rgba(7,48,71,.18) !important; }
.fc .ev-beursault{ background:#000000 !important; color:#ffffff !important; border-color: rgba(255,255,255,.25) !important; }
.fc .ev-18m{ background:#f59e0b !important; color:#111111 !important; border-color: rgba(17,24,39,.18) !important; }
.fc .fc-daygrid-event, .fc .fc-timegrid-event, .fc .fc-list-event{ border-radius: 10px; }

/* Assure que la couleur définie sur l'event s'applique aussi au contenu interne */
.fc .fc-event-main,
.fc .fc-event-title,
.fc .fc-event-time,
.fc a.fc-event,
.fc .fc-list-event-title a{
  color: inherit !important;
}

.fc .fc-list-event.ev-tae td, .fc .fc-list-event.ev-paraext td{ background: rgba(246,255,0,.30) !important; }
.fc .fc-list-event.ev-3d td{ background: rgba(192,138,90,.25) !important; }
.fc .fc-list-event.ev-nature td{ background: rgba(85,107,47,.22) !important; }
.fc .fc-list-event.ev-campagne td{ background: rgba(0,0,0,.08) !important; }
.fc .fc-list-event.ev-loisir td{ background: rgba(125,211,252,.22) !important; }
.fc .fc-list-event.ev-beursault td{ background: rgba(0,0,0,.08) !important; }
.fc .fc-list-event.ev-18m td{ background: rgba(245,158,11,.22) !important; }


/* ===== Palette adoucie (liste + calendrier) ===== */
.badge.badge-tae{ background:#f6e7a6; color:#111 !important; border:1px solid rgba(17,17,17,.18); }
.badge.badge-18m{ background:#f3d1ab; color:#111 !important; border:1px solid rgba(17,17,17,.18); }
.badge.badge-paraext{ background:#cfe0ff; color:#0b2e7a !important; border:1px solid rgba(11,46,122,.20); }
.badge.badge-para18m{ background:#c9d4ea; color:#0b1b3a !important; border:1px solid rgba(11,27,58,.20); }
.badge.badge-3d{ background:#e3cdb7; color:#3a2414 !important; border:1px solid rgba(58,36,20,.18); }
.badge.badge-nature{ background:#d7ddc9; color:#2c3b22 !important; border:1px solid rgba(44,59,34,.18); }
.badge.badge-campagne{ background:#2a2a2a; color:#f2c200 !important; border:1px solid rgba(242,194,0,.30); }
.badge.badge-beursault{ background:#f2f2f2; color:#111 !important; border:1px solid rgba(17,17,17,.25); }
.badge.badge-jeune{ background:#e2d5ff; color:#3a1c6b !important; border:1px solid rgba(58,28,107,.20); }
.badge.badge-loisir{ background:#f2c6ea; color:#6b004e !important; border:1px solid rgba(107,0,78,.20); }

/* Calendrier : mêmes teintes adoucies */
.fc .ev-tae{ background:#f6e7a6 !important; color:#111111 !important; border-color: rgba(17,17,17,.18) !important; }
.fc .ev-18m{ background:#f3d1ab !important; color:#111111 !important; border-color: rgba(17,17,17,.18) !important; }
.fc .ev-paraext{ background:#cfe0ff !important; color:#111111 !important; border-color: rgba(11,46,122,.20) !important; }
.fc .ev-para18m{ background:#c9d4ea !important; color:#111111 !important; border-color: rgba(11,27,58,.20) !important; }
.fc .ev-3d{ background:#e3cdb7 !important; color:#111111 !important; border-color: rgba(58,36,20,.18) !important; }
.fc .ev-nature{ background:#d7ddc9 !important; color:#111111 !important; border-color: rgba(44,59,34,.18) !important; }
.fc .ev-campagne{ background:#000000 !important; color:#f2c200 !important; border-color: rgba(242,194,0,.30) !important; }
.fc .ev-beursault{ background:#000000 !important; color:#ffffff !important; border-color: rgba(255,255,255,.25) !important; }
.fc .ev-jeune{ background:#e2d5ff !important; color:#111111 !important; border-color: rgba(58,28,107,.20) !important; }
.fc .ev-loisir{ background:#f2c6ea !important; color:#111111 !important; border-color: rgba(107,0,78,.20) !important; }

/* ===== Dates clés : Tournoi des Sirènes ===== */
.vt-card.sirenes{
  background: #000;
  border: 2px solid rgba(56,189,248,.45);
  color: #38bdf8;
}
.vt-card.sirenes .vt-title{color:#38bdf8}
.vt-card.sirenes .vt-meta{color: rgba(56,189,248,.85)}
.vt-card.sirenes .badge{
  background: rgba(56,189,248,.14);
  border:1px solid rgba(56,189,248,.28);
  color:#38bdf8;
}


/* Force la couleur du texte dans les sous-éléments (FullCalendar encapsule le titre) */
.fc .fc-daygrid-event .fc-event-title,
.fc .fc-daygrid-event .fc-event-time,
.fc .fc-daygrid-event .fc-event-main{
  color: inherit !important;
}


/* === Fix couleurs texte (vue Mois) pour Campagne / Beursault === */
.fc .ev-campagne .fc-event-main,
.fc .ev-campagne .fc-event-title,
.fc .ev-campagne .fc-event-time{
  color:#f2c200 !important;
}
.fc .ev-beursault .fc-event-main,
.fc .ev-beursault .fc-event-title,
.fc .ev-beursault .fc-event-time{
  color:#ffffff !important;
}

/* Pour toutes les autres disciplines : texte noir (garde les fonds colorés) */
.fc .ev-18m .fc-event-main,
.fc .ev-18m .fc-event-title,
.fc .ev-18m .fc-event-time,
.fc .ev-tae .fc-event-main,
.fc .ev-tae .fc-event-title,
.fc .ev-tae .fc-event-time,
.fc .ev-3d .fc-event-main,
.fc .ev-3d .fc-event-title,
.fc .ev-3d .fc-event-time,
.fc .ev-nature .fc-event-main,
.fc .ev-nature .fc-event-title,
.fc .ev-nature .fc-event-time,
.fc .ev-parcours .fc-event-main,
.fc .ev-parcours .fc-event-title,
.fc .ev-parcours .fc-event-time,
.fc .ev-loisir .fc-event-main,
.fc .ev-loisir .fc-event-title,
.fc .ev-loisir .fc-event-time,
.fc .ev-taei .fc-event-main,
.fc .ev-taei .fc-event-title,
.fc .ev-taei .fc-event-time,
.fc .ev-trj .fc-event-main,
.fc .ev-trj .fc-event-title,
.fc .ev-trj .fc-event-time{
  color:#111111 !important;
}


/* =========================================================
   AJOUTS STABLES — CODIR + DATES CLES + CURSEUR
   ========================================================= */

/* Masquer badges dans Dates clés */
#view-dates .vt-badges,
#view-dates .vt-badges .badge{
  display:none !important;
}

/* Cartes CODIR en jaune poussin */
.vt-card.codir{
  background: linear-gradient(180deg, #fff9c4 0%, #fff59d 100%);
  border: 2px solid #f4d03f;
  box-shadow: 0 10px 24px rgba(244, 208, 63, .35);
}

.vt-card.codir .vt-title{
  color: #7a5d00;
  font-weight: 700;
}

.vt-card.codir .vt-sub{
  color: #8a6d00;
}

.vt-card.codir .cd-mail{
  background: #ffe066;
  border: 1px solid #f4d03f;
}

/* Curseur : main uniquement sur éléments cliquables */
#calendar .fc-event,
#calendar .fc-event a{
  cursor: pointer;
}

.up-item{
  cursor: pointer;
}


/* =========================================================
   ALIGNEMENTS UI — Prochains concours / Boutons
   ========================================================= */

/* Les liens "boutons" ne doivent pas être soulignés */
a.btn, .up-actions a.btn{
  text-decoration: none;
}

/* Boutons : alignement propre (icône + texte) */
.btn{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  line-height: 1;
}

/* Prochains concours : aligner les actions */
.up-item{
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.up-actions{
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 6px;
}

/* Même hauteur visuelle quand il n’y a qu’un bouton */
.up-actions .btn{
  height: 34px;
  padding: 6px 10px;
}

/* Évite que le texte des boutons "saute" */
.up-actions .btn-ghost{
  background: rgba(255,255,255,.65);
}

/* =========================================================
   DATES CLÉS — Cartes sans bordure + effet 3D léger
   ========================================================= */

/* enlève les bordures uniquement dans la vue Dates clés */
#view-dates .vt-card{
  border: none !important;
  box-shadow: 0 10px 22px rgba(15,23,42,.10);
  margin: 10px 0;
  transition: transform .18s ease, box-shadow .18s ease;
}

/* espacement vertical entre items */
#view-dates .vt-item{
  margin-bottom: 14px;
}

/* léger effet 3D au survol */
#view-dates .vt-card:hover{
  transform: translateY(-3px);
  box-shadow: 0 16px 30px rgba(15,23,42,.16);
}
/* =========================================================
   DATES CLÉS — axe unique : ligne + dots parfaitement alignés
   ========================================================= */

#view-dates{
  --axis-x: 2px;      /* position de la ligne (ajuste si besoin) */
}

/* Ligne verticale : toujours sur --axis-x */
#view-dates .vt::before,
#view-dates .timeline::before{
  left: var(--axis-x) !important;
}

/* Dot : exactement sur la ligne */
#view-dates .vt-item{ position: relative; }

#view-dates .vt-dot{
  position: absolute !important;
  left: var(--axis-x) !important;
  top: 20px !important;
  transform: translateX(-50%) !important;
  z-index: 5;
}

