/* ============================================================
   GD Agenda — Styles publics v2 — Design system moderne
   ============================================================ */

/* ── Reset & base ───────────────────────────────────────────── */
.gd-agenda *,
.gd-agenda *::before,
.gd-agenda *::after {
	box-sizing: border-box;
}

.gd-agenda {
	font-family: var(--gd-font);
	font-size:   var(--gd-font-size);
	color:       var(--gd-text);
	background:  var(--gd-bg);
	border:      1px solid var(--gd-border);
	border-radius: var(--gd-radius-lg);
	overflow:    hidden;
	box-shadow:  var(--gd-shadow);
}

/* ── En-tête navigation ─────────────────────────────────────── */
.gd-calendar-header {
	display:         flex;
	align-items:     center;
	justify-content: space-between;
	flex-wrap:       wrap;
	gap:             10px;
	padding:         14px 20px;
	background:      var(--gd-gradient-header);
	color:           var(--gd-text-light);
}

.gd-period-label {
	font-size:      1.05em;
	font-weight:    700;
	flex:           1;
	text-align:     center;
	letter-spacing: -0.01em;
	color:          var(--gd-header-period, rgba(255,255,255,0.97));
}

.gd-nav-btn {
	background:    rgba(255,255,255,0.12);
	border:        1px solid rgba(255,255,255,0.25);
	color:         #ffffff;
	border-radius: var(--gd-radius-pill);
	padding:       6px 14px;
	cursor:        pointer;
	font-size:     1em;
	font-weight:   500;
	transition:    background var(--gd-transition), transform var(--gd-transition);
	backdrop-filter: blur(4px);
}
.gd-nav-btn:hover {
	background: rgba(255,255,255,0.22);
	transform:  scale(1.04);
}
.gd-nav-btn:active {
	transform: scale(0.97);
}

/* ── Sélecteur de vue ───────────────────────────────────────── */
.gd-view-toggle {
	display:       flex;
	gap:           4px;
	background:    rgba(0,0,0,0.12);
	border-radius: var(--gd-radius-pill);
	padding:       3px;
}

.gd-view-btn {
	background:    transparent;
	border:        none;
	color:         rgba(255,255,255,0.75);
	border-radius: var(--gd-radius-pill);
	padding:       5px 12px;
	cursor:        pointer;
	font-size:     0.8em;
	font-weight:   600;
	transition:    background var(--gd-transition), color var(--gd-transition);
	white-space:   nowrap;
}
.gd-view-btn:hover {
	background: rgba(255,255,255,0.15);
	color:      #ffffff;
}
.gd-view-btn--active {
	background: rgba(255,255,255,0.92);
	color:      var(--gd-primary);
}
.gd-view-btn--active:hover {
	background: #ffffff;
	color:      var(--gd-primary-dark);
}

/* ── Vue mensuelle — jours de la semaine ────────────────────── */
.gd-calendar-weekdays {
	display:               grid;
	grid-template-columns: repeat(7, 1fr);
	background:            var(--gd-bg-alt);
	border-bottom:         1px solid var(--gd-border);
}

.gd-weekday-header {
	padding:        8px 4px;
	text-align:     center;
	font-size:      11px;
	font-weight:    700;
	color:          var(--gd-text-subtle);
	text-transform: uppercase;
	letter-spacing: 0.07em;
}

/* ── Vue mensuelle — grille ─────────────────────────────────── */
.gd-calendar-grid {
	display:               grid;
	grid-template-columns: repeat(7, 1fr);
}

.gd-calendar-day {
	min-height:    var(--gd-cell-min-height);
	padding:       8px 6px 6px;
	background:    var(--gd-day-bg);
	border-right:  1px solid var(--gd-border);
	border-bottom: 1px solid var(--gd-border);
	position:      relative;
	vertical-align: top;
	overflow:      hidden; /* empêche les titres longs d'élargir la cellule */
	transition:    background var(--gd-transition), box-shadow var(--gd-transition);
}
.gd-calendar-day:nth-child(7n) {
	border-right: none;
}
.gd-calendar-day:hover {
	background:  var(--gd-cell-hover-bg, var(--gd-primary-light));
	box-shadow:  inset 0 0 0 1px var(--gd-chip-hover-bg, rgba(79, 70, 229, 0.10));
}
.gd-calendar-day--empty {
	background: var(--gd-bg-alt);
	opacity: 0.55;
}
.gd-calendar-day--empty:hover {
	background: var(--gd-bg-alt);
	box-shadow: none;
}
.gd-calendar-day--weekend {
	background: var(--gd-weekend-bg, #FAFAFA);
}
.gd-calendar-day--weekend:hover {
	background: var(--gd-cell-hover-bg, var(--gd-primary-light));
}
.gd-calendar-day--today {
	background: var(--gd-today-bg);
}
.gd-calendar-day--today:hover {
	background: var(--gd-today-hover, #E0E7FF);
}
.gd-calendar-day--today .gd-day-number {
	background:      var(--gd-today-border);
	color:           #ffffff;
	border-radius:   50%;
	width:           26px;
	height:          26px;
	display:         inline-flex;
	align-items:     center;
	justify-content: center;
	font-weight:     700;
}

.gd-day-number {
	font-size:     12px;
	font-weight:   600;
	color:         var(--gd-text-muted);
	cursor:        pointer;
	display:       inline-block;
	margin-bottom: 4px;
	border-radius: 50%;
	width:         26px;
	height:        26px;
	display:       inline-flex;
	align-items:   center;
	justify-content: center;
	transition:    background var(--gd-transition), color var(--gd-transition);
}
.gd-day-number:hover {
	background: var(--gd-primary-light);
	color:      var(--gd-primary);
}

.gd-events-list {
	display:        flex;
	flex-direction: column;
	gap:            3px;
}

/* ── Puce événement ─────────────────────────────────────────── */
.gd-event-chip {
	display:         flex;
	align-items:     center;
	gap:             5px;
	width:           100%;   /* occupe toute la largeur de la cellule */
	min-width:       0;      /* flex item : autoriser le rétrécissement sous la taille du contenu */
	max-width:       100%;   /* ne jamais dépasser le parent */
	width:           100%;
	padding:         3px 8px;
	background:      rgba(79, 70, 229, 0.07);
	border:          none;
	border-left:     3px solid var(--gd-primary);
	border-radius:   0 var(--gd-radius-pill) var(--gd-radius-pill) 0;
	cursor:          pointer;
	font-size:       11px;
	font-weight:     500;
	text-align:      left;
	white-space:     nowrap;
	overflow:        hidden;
	text-overflow:   ellipsis;
	color:           var(--gd-primary);
	transition:      background var(--gd-transition), color var(--gd-transition), transform var(--gd-transition);
	min-height:      var(--gd-chip-height);
	line-height:     1.3;
}
.gd-event-chip:hover {
	background:  var(--gd-chip-hover-bg, rgba(79, 70, 229, 0.14));
	color:       var(--gd-chip-hover-text, var(--gd-primary-dark));
	transform:   translateX(1px);
}
.gd-event-chip--important {
	background:   var(--gd-important-chip-bg, rgba(239, 68, 68, 0.07));
	border-color: var(--gd-important);
	color:        var(--gd-important-text, #B91C1C);
}
.gd-event-chip--important:hover {
	background: var(--gd-important-hover-bg, rgba(239, 68, 68, 0.14));
	color:      var(--gd-important-hover-text, #991B1B);
}

.gd-chip-time {
	font-weight: 700;
	flex-shrink: 0;
	font-size:   10px;
	opacity:     0.75;
}
.gd-chip-title {
	overflow:      hidden;
	text-overflow: ellipsis;
	white-space:   nowrap;
	flex:          1;    /* prend tout l'espace disponible dans le flex container */
	min-width:     0;    /* critique : flex item peut se rétrécir sous sa taille naturelle */
}
.gd-chip-star {
	color:       var(--gd-important-star);
	flex-shrink: 0;
	font-size:   10px;
}

/* ── Vue hebdomadaire ───────────────────────────────────────── */
.gd-week-columns {
	display:               grid;
	grid-template-columns: repeat(7, 1fr);
	min-height:            300px;
}

.gd-week-day {
	border-right:  1px solid var(--gd-border);
	border-bottom: 1px solid var(--gd-border);
	overflow:      hidden; /* empêche les titres longs d'élargir la colonne */
	min-width:     0;      /* flex/grid item */
}
.gd-week-day:last-child { border-right: none; }

.gd-week-day-header {
	padding:       10px 6px 8px;
	text-align:    center;
	background:    var(--gd-bg-alt);
	border-bottom: 1px solid var(--gd-border);
}
.gd-weekday-name {
	display:        block;
	font-size:      10px;
	color:          var(--gd-text-subtle);
	font-weight:    700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	margin-bottom:  3px;
}
.gd-week-date-num {
	display:     inline-flex;
	align-items: center;
	justify-content: center;
	width:       28px;
	height:      28px;
	font-size:   1em;
	font-weight: 700;
	color:       var(--gd-text);
	border-radius: 50%;
	transition:  background var(--gd-transition), color var(--gd-transition);
}
.gd-week-day--today .gd-week-day-header {
	background: var(--gd-today-bg);
}
.gd-week-day--today .gd-week-date-num {
	background: var(--gd-today-border);
	color:      #ffffff;
}

.gd-week-events {
	padding:        6px;
	display:        flex;
	flex-direction: column;
	gap:            3px;
	overflow:       hidden; /* empêche les titres longs d'élargir la colonne de semaine */
	min-width:      0;
}

/* ── Vue journalière ────────────────────────────────────────── */
.gd-day-events-list {
	padding: 16px;
}

.gd-day-empty {
	text-align:  center;
	padding:     56px 20px;
	color:       var(--gd-text-subtle);
}
.gd-day-empty .dashicons {
	font-size:     2.5em;
	display:       block;
	margin-bottom: 12px;
	opacity:       0.4;
}

.gd-day-event {
	display:       flex;
	gap:           16px;
	padding:       16px;
	margin-bottom: 12px;
	background:    #ffffff;
	border:        1px solid var(--gd-border);
	border-left:   4px solid var(--gd-primary);
	border-radius: var(--gd-radius);
	cursor:        pointer;
	transition:    transform var(--gd-transition), box-shadow var(--gd-transition), border-color var(--gd-transition);
	box-shadow:    var(--gd-shadow);
}
.gd-day-event:hover {
	transform:   translateY(-2px);
	box-shadow:  var(--gd-shadow-md);
	border-color: var(--gd-border);
	border-left-color: var(--gd-primary);
}
.gd-day-event--important {
	border-left-color: var(--gd-important);
	background:        var(--gd-important-bg);
}
.gd-day-event--important:hover {
	border-left-color: var(--gd-important);
}

.gd-day-event-thumb {
	flex-shrink: 0;
}
.gd-day-event-thumb img {
	width:         90px;
	height:        68px;
	object-fit:    cover;
	border-radius: var(--gd-radius-sm);
	display:       block;
}

.gd-day-event-body { flex: 1; min-width: 0; }

.gd-day-event-time {
	font-size:     11px;
	font-weight:   600;
	color:         var(--gd-text-subtle);
	margin-bottom: 5px;
	display:       flex;
	align-items:   center;
	gap:           4px;
	letter-spacing: 0.02em;
}
.gd-day-event-time strong {
	color:       var(--gd-primary);
	font-weight: 700;
}
.gd-all-day {
	background:    rgba(79, 70, 229, 0.08);
	color:         var(--gd-primary);
	padding:       2px 8px;
	border-radius: var(--gd-radius-pill);
	font-size:     10px;
	font-weight:   700;
	text-transform: uppercase;
	letter-spacing: 0.05em;
}

.gd-day-event-title {
	margin:      0 0 6px;
	font-size:   0.95em;
}
.gd-day-event-title .gd-event-chip {
	background:  transparent;
	border:      none;
	padding:     0;
	font-size:   0.98em;
	font-weight: 700;
	color:       var(--gd-text);
	white-space: normal;
	min-height:  auto;
	border-radius: 0;
}
.gd-day-event-title .gd-event-chip:hover {
	background:      transparent;
	color:           var(--gd-primary);
	text-decoration: underline;
	transform:       none;
}

.gd-day-event-location {
	font-size:    11px;
	color:        var(--gd-text-muted);
	display:      flex;
	align-items:  center;
	gap:          4px;
	margin-bottom: 5px;
}
.gd-day-event-excerpt {
	font-size:   12px;
	color:       var(--gd-text-subtle);
	margin:      0;
	line-height: 1.5;
}

/* ── Modale ─────────────────────────────────────────────────── */
.gd-modal-overlay {
	position:        fixed;
	inset:           0;
	background:      var(--gd-overlay, rgba(15,15,30,0.6));
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
	z-index:         99999;
	display:         flex;
	align-items:     center;
	justify-content: center;
	padding:         16px;
	animation:       gd-fade-in 0.18s ease;
}
.gd-modal-overlay[hidden] {
	display: none;
}

@keyframes gd-fade-in {
	from { opacity: 0; }
	to   { opacity: 1; }
}

.gd-modal {
	background:    var(--gd-bg);
	border-radius: var(--gd-radius-lg);
	box-shadow:    var(--gd-shadow-modal);
	max-width:     580px;
	width:         100%;
	max-height:    90vh;
	overflow-y:    auto;
	overflow-x:    hidden;
	position:      relative;
	animation:     gd-modal-enter 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);
	scrollbar-width: thin;
	scrollbar-color: var(--gd-border) transparent;
}
.gd-modal::-webkit-scrollbar {
	width: 5px;
}
.gd-modal::-webkit-scrollbar-track {
	background: transparent;
}
.gd-modal::-webkit-scrollbar-thumb {
	background-color: var(--gd-border);
	border-radius: 10px;
}

@keyframes gd-modal-enter {
	from {
		transform: scale(0.94) translateY(8px);
		opacity: 0;
	}
	to {
		transform: scale(1) translateY(0);
		opacity: 1;
	}
}

.gd-modal-close {
	position:      absolute;
	top:           14px;
	right:         14px;
	background:    var(--gd-modal-close-bg, rgba(255,255,255,0.15));
	border:        1px solid var(--gd-modal-close-border, rgba(255,255,255,0.2));
	font-size:     0.85em;
	cursor:        pointer;
	color:         var(--gd-modal-close-color, rgba(255,255,255,0.9));
	line-height:   1;
	padding:       0;
	width:         30px;
	height:        30px;
	display:       flex;
	align-items:   center;
	justify-content: center;
	border-radius: 50%;
	z-index:       10;
	transition:    background var(--gd-transition), transform var(--gd-transition);
}
.gd-modal-close:hover {
	background: var(--gd-modal-close-bg-hover, rgba(255,255,255,0.28));
	transform:  scale(1.08);
}

.gd-modal-loading {
	padding:    56px 40px;
	text-align: center;
	color:      var(--gd-text-subtle);
}

/* ── Contenu modale — header héro ───────────────────────────── */
.gd-modal-inner {
	/* pas de padding top — le header occupe le dessus */
}

.gd-modal-hero {
	position:   relative;
	background: var(--gd-modal-header, var(--gd-gradient-header));
	min-height: 120px;
	display:    flex;
	flex-direction: column;
	justify-content: flex-end;
	padding:    28px 24px 20px;
	overflow:   hidden;
}

.gd-modal-hero-bg {
	position:   absolute;
	inset:      0;
	background-size:     cover;
	background-position: center;
	opacity:    0.3;
}

.gd-modal-hero-overlay {
	position:   absolute;
	inset:      0;
	background: linear-gradient(to bottom, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.55) 100%);
}

.gd-modal-hero-content {
	position:   relative;
	z-index:    2;
}

.gd-modal-title {
	margin:      0 32px 0 0;
	font-size:   1.25em;
	font-weight: 800;
	color:       var(--gd-modal-title-text, #ffffff);
	line-height: 1.3;
	letter-spacing: -0.02em;
}

.gd-important-star {
	color:        var(--gd-important-star);
	margin-right: 5px;
	font-size:    0.9em;
}

/* ── Badges pill méta ───────────────────────────────────────── */
.gd-modal-badges {
	display:   flex;
	flex-wrap: wrap;
	gap:       8px;
	margin-top: 12px;
}

.gd-badge-pill {
	display:       inline-flex;
	align-items:   center;
	gap:           5px;
	padding:       5px 12px;
	border-radius: var(--gd-radius-pill);
	font-size:     12px;
	font-weight:   600;
	white-space:   nowrap;
	line-height:   1.3;
}

/* Pills sur fond clair (défaut : page single event sans image) */
.gd-badge-pill--date {
	background: var(--gd-pill-date-bg, #EEF2FF);
	color:      var(--gd-pill-date-text, #3730A3);
	border:     1px solid color-mix(in srgb, var(--gd-pill-date-bg, #EEF2FF) 50%, var(--gd-pill-date-text, #3730A3));
}
@supports not (color: color-mix(in srgb, red 50%, white)) {
	.gd-badge-pill--date { border-color: #C7D2FE; }
}

.gd-badge-pill--time {
	background: var(--gd-pill-time-bg, #F0FDF4);
	color:      var(--gd-pill-time-text, #166534);
	border:     1px solid color-mix(in srgb, var(--gd-pill-time-bg, #F0FDF4) 50%, var(--gd-pill-time-text, #166534));
}
@supports not (color: color-mix(in srgb, red 50%, white)) {
	.gd-badge-pill--time { border-color: #BBF7D0; }
}

.gd-badge-pill--location {
	background: var(--gd-pill-loc-bg, #FFF7ED);
	color:      var(--gd-pill-loc-text, #9A3412);
	border:     1px solid color-mix(in srgb, var(--gd-pill-loc-bg, #FFF7ED) 50%, var(--gd-pill-loc-text, #9A3412));
}
@supports not (color: color-mix(in srgb, red 50%, white)) {
	.gd-badge-pill--location { border-color: #FED7AA; }
}

.gd-badge-pill--price {
	background: #F0FFF4;
	color:      #065F46;
	border:     1px solid #6EE7B7;
	font-size:  12px;
	font-weight: 600;
}

.gd-badge-pill--indicative {
	background: #FFFBEB;
	color:      #92400E;
	border:     1px solid #FDE68A;
	font-size:  11px;
	font-weight: 500;
	font-style: italic;
}

/* ── Corps de la modale ─────────────────────────────────────── */
.gd-modal-body {
	padding:    22px 24px 24px;
	background: var(--gd-modal-bg, #ffffff);
	color:      var(--gd-modal-text, var(--gd-text));
}

.gd-modal-meta {
	display:        flex;
	flex-direction: column;
	gap:            8px;
	margin-bottom:  18px;
}

.gd-meta-item {
	display:     flex;
	align-items: flex-start;
	gap:         8px;
	font-size:   var(--gd-font-size-sm);
	color:       var(--gd-text-muted);
}
.gd-meta-item .dashicons { flex-shrink: 0; }
.gd-meta-item strong { color: var(--gd-text); }

.gd-modal-content-body {
	font-size:     0.92em;
	line-height:   1.7;
	color:         var(--gd-text);
	margin-bottom: 20px;
}
.gd-modal-content-body p:first-child { margin-top: 0; }
.gd-modal-content-body p:last-child  { margin-bottom: 0; }

.gd-modal-excerpt {
	font-size:     0.92em;
	line-height:   1.7;
	color:         var(--gd-text);
	margin-bottom: 20px;
}

.gd-modal-actions {
	display:   flex;
	gap:       10px;
	flex-wrap: wrap;
	padding-top: 4px;
}

/* ── Boutons ────────────────────────────────────────────────── */
.gd-btn {
	display:         inline-flex;
	align-items:     center;
	gap:             6px;
	padding:         10px 22px;
	border-radius:   var(--gd-radius-pill);
	text-decoration: none;
	font-size:       0.88em;
	font-weight:     700;
	cursor:          pointer;
	transition:      transform var(--gd-transition), box-shadow var(--gd-transition), filter var(--gd-transition);
	letter-spacing:  0.01em;
	border:          none;
}
.gd-btn-primary {
	background:  var(--gd-gradient-btn);
	color:       #ffffff;
	box-shadow:  0 4px 14px rgba(79, 70, 229, 0.35);
}
.gd-btn-primary:hover {
	color:      #ffffff;
	filter:     brightness(1.08);
	transform:  translateY(-1px);
	box-shadow: 0 6px 20px rgba(79, 70, 229, 0.45);
}
.gd-btn-primary:active {
	transform: translateY(0);
}

/* CTA spécifique à la modale — couleurs indépendantes */
.gd-modal-actions .gd-btn-primary {
	background: var(--gd-modal-btn, var(--gd-gradient-btn));
	color:      var(--gd-modal-btn-text, #ffffff);
}
.gd-modal-actions .gd-btn-primary:hover {
	color: var(--gd-modal-btn-text, #ffffff);
}

/* Scroll lock quand modale ouverte */
body.gd-modal-open { overflow: hidden; }

/* ── Bandeau défilant ───────────────────────────────────────── */
/* Le défilement est géré intégralement par requestAnimationFrame (gd-banner.js).
   Ces keyframes ne sont plus utilisées mais conservées pour compatibilité. */
@keyframes gd-scroll-left  { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes gd-scroll-right { from { transform: translateX(-50%); } to { transform: translateX(0); } }

.gd-agenda-banner {
	overflow:    hidden;
	background:  var(--gd-banner-bg, var(--gd-gradient-header));
	color:       var(--gd-banner-text, #ffffff);
	height:      var(--gd-banner-height, 48px);
	min-height:  44px;
	display:     flex;
	align-items: center;
	position:    relative;
	/* Fondu de transparence sur les bords gauche et droit via mask */
	-webkit-mask-image: linear-gradient(
		to right,
		transparent 0%,
		black 8%,
		black 92%,
		transparent 100%
	);
	mask-image: linear-gradient(
		to right,
		transparent 0%,
		black 8%,
		black 92%,
		transparent 100%
	);
}

/* Mode centré : contenu plus court que le bandeau */
.gd-banner--centered .gd-banner-track {
	justify-content: center;
	width:           100%;
}

.gd-banner-track {
	display:     inline-flex;
	align-items: center;
	white-space: nowrap;
	will-change: transform;
	/* La durée et le nom de l'animation sont injectés par gd-banner.js */
}

.gd-banner-item {
	display:     inline-flex;
	align-items: center;
	gap:         8px;
	padding:     0 22px;   /* espacement confortable entre chaque événement */
	flex-shrink: 0;
}

.gd-banner-date {
	font-size:      11px;
	font-weight:    600;
	opacity:        0.72;
	flex-shrink:    0;
	letter-spacing: 0.02em;
}

.gd-banner-title {
	color:           inherit;
	text-decoration: none;
	font-weight:     700;
	font-size:       0.88em;
	letter-spacing:  -0.01em;
}
.gd-banner-title:hover {
	color:           var(--gd-banner-hover, inherit);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.gd-banner-sep {
	opacity:     0.4;
	flex-shrink: 0;
	font-size:   0.75em;
	color:       #ffffff;
	padding:     0 4px;
}

/* Séparateur visuel entre la fin d'un cycle et le début du suivant */
.gd-banner-loop-gap {
	display:     inline-block;
	width:       72px;    /* gap bien visible entre deux passages */
	flex-shrink: 0;
	position:    relative;
}
/* Petits points décoratifs au centre du gap */
.gd-banner-loop-gap::before {
	content:  '· · ·';
	position: absolute;
	left:     50%;
	top:      50%;
	transform: translate(-50%, -50%);
	opacity:  0.25;
	font-size: 10px;
	letter-spacing: 4px;
	color:    #ffffff;
}

.gd-banner-star {
	color:      var(--gd-banner-text, #ffffff);
	opacity:    0.85;
	font-size:  0.8em;
	flex-shrink: 0;
}

.gd-banner-time {
	display:     inline-block;
	background:  rgba(255,255,255,0.18);
	border-radius: 4px;
	padding:     1px 5px;
	font-size:   0.85em;
	margin-left: 3px;
	font-weight: 600;
	letter-spacing: 0.03em;
}

/* ── Page événement individuelle (gd-single) ────────────────── */
.gd-single-hero {
	position:      relative;
	background:    var(--gd-primary-soft, #F5F3FF);
	border:        1px solid var(--gd-border, #DDD6FE);
	border-left:   4px solid var(--gd-single-hero, var(--gd-primary));
	border-radius: var(--gd-radius);
	overflow:      hidden;
	display:       flex;
	flex-direction: column;
	justify-content: flex-end;
	padding:       16px 20px;
	margin-bottom: 24px;
}

/* Variante avec image : hero immersif */
.gd-single-hero--has-image {
	min-height: 220px;
	border:     none;
	background: var(--gd-single-hero, var(--gd-gradient-header));
	color:      var(--gd-single-text, #ffffff);
	padding:    36px 32px 28px;
}

.gd-single-hero__bg {
	position:            absolute;
	inset:               0;
	background-size:     cover;
	background-position: center;
	opacity:             0.3;
}

.gd-single-hero__overlay {
	position:   absolute;
	inset:      0;
	background: linear-gradient(to bottom, rgba(0,0,0,0.18) 0%, rgba(0,0,0,0.62) 100%);
}

.gd-single-hero__content {
	position: relative;
	z-index:  2;
}

.gd-single-hero__important {
	display:        inline-block;
	font-size:      11px;
	font-weight:    700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color:          var(--gd-primary);
	margin-bottom:  10px;
}
.gd-single-hero--has-image .gd-single-hero__important {
	color: #FCD34D;
}

.gd-single-hero__badges {
	display:   flex;
	flex-wrap: wrap;
	gap:       8px;
}

/* Pills sur fond sombre : modale hero + hero avec image */
.gd-modal-hero .gd-badge-pill,
.gd-single-hero--has-image .gd-badge-pill {
	background: rgba(255,255,255,0.16);
	color:      rgba(255,255,255,0.92);
	border:     1px solid rgba(255,255,255,0.25);
}

.gd-single-source-cta {
	margin:        28px 0 12px;
	padding-top:   20px;
	border-top:    2px solid #F3F4F6;
	display:       flex;
	align-items:   center;
	gap:           12px;
	flex-wrap:     wrap;
}

.gd-single-source-cta::before {
	content:     "→";
	font-size:   11px;
	font-weight: 700;
	color:       #9CA3AF;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	content:     "Retrouver cet événement sur la source :";
	font-size:   12px;
	font-weight: 600;
	color:       #6B7280;
	white-space: nowrap;
}

.gd-single-source-cta .gd-btn-primary {
	background:  var(--gd-single-btn, var(--gd-gradient-btn, linear-gradient(135deg, #4F46E5 0%, #7C3AED 100%)));
	color:       var(--gd-single-btn-text, #ffffff);
	display:     inline-flex;
	align-items: center;
	gap:         6px;
	font-size:   0.85em;
	font-weight: 600;
	padding:     8px 18px;
	border-radius: 50px;
	text-decoration: none;
	box-shadow:  0 2px 8px rgba(79,70,229,0.3);
	transition:  all 0.2s ease;
}
.gd-single-source-cta .gd-btn-primary:hover {
	filter:     brightness(1.1);
	box-shadow: 0 4px 14px rgba(79,70,229,0.4);
	transform:  translateY(-1px);
	color:      #ffffff;
}

/* ── Vue Liste ──────────────────────────────────────────────── */
.gd-calendar-list {
	background:    var(--gd-bg, #ffffff);
	border-radius: var(--gd-radius);
	border:        1px solid var(--gd-border, #E5E7EB);
	overflow:      hidden;
	font-family:   var(--gd-font);
}

.gd-list-body {
	padding: 0 0 12px;
}

.gd-list-empty {
	display:         flex;
	flex-direction:  column;
	align-items:     center;
	justify-content: center;
	padding:         48px 24px;
	color:           var(--gd-text-muted, #9CA3AF);
	gap:             10px;
	font-size:       0.9em;
}
.gd-list-empty .dashicons { font-size: 32px; width: 32px; height: 32px; }

/* Groupe journée */
.gd-list-day {
	border-bottom: 1px solid var(--gd-border, #E5E7EB);
}
.gd-list-day:last-child { border-bottom: none; }

.gd-list-day-header {
	display:     flex;
	align-items: center;
	gap:         10px;
	padding:     14px 20px 8px;
	background:  var(--gd-bg-alt, #F9FAFB);
	position:    sticky;
	top:         0;
	z-index:     2;
}

.gd-list-day-dot {
	width:         10px;
	height:        10px;
	border-radius: 50%;
	background:    var(--gd-primary, #4F46E5);
	flex-shrink:   0;
}
.gd-list-day--today .gd-list-day-dot {
	background:  var(--gd-primary);
	box-shadow:  0 0 0 3px var(--gd-primary-light, #EEF2FF);
}
.gd-list-day--past .gd-list-day-dot {
	background:  var(--gd-border, #D1D5DB);
}

.gd-list-day-title {
	margin:      0;
	font-size:   0.82em;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color:       var(--gd-text-subtle, #6B7280);
	display:     flex;
	align-items: center;
	gap:         8px;
}
.gd-list-day--today .gd-list-day-title {
	color: var(--gd-primary, #4F46E5);
}

.gd-list-today-badge {
	background:    var(--gd-primary-light, #EEF2FF);
	color:         var(--gd-primary, #4F46E5);
	font-size:     10px;
	padding:       2px 7px;
	border-radius: 50px;
	font-weight:   700;
	text-transform: uppercase;
}

.gd-list-day-events {
	padding: 6px 20px 14px 40px;
	display: flex;
	flex-direction: column;
	gap:     10px;
}

/* Événement dans la liste */
.gd-list-event {
	display:       flex;
	gap:           14px;
	background:    var(--gd-bg, #ffffff);
	border:        1px solid var(--gd-border, #E5E7EB);
	border-radius: var(--gd-radius);
	overflow:      hidden;
	cursor:        pointer;
	transition:    box-shadow 0.18s, transform 0.18s;
}
.gd-list-event:hover {
	box-shadow: 0 4px 16px rgba(0,0,0,0.08);
	transform:  translateY(-1px);
}
.gd-list-event--important {
	border-left: 3px solid var(--gd-important, #EF4444);
}

.gd-list-event-thumb {
	flex-shrink: 0;
	width:       72px;
}
.gd-list-event-thumb img {
	width:      72px;
	height:     100%;
	object-fit: cover;
	display:    block;
}

.gd-list-event-body {
	flex:    1;
	padding: 12px 14px 12px 0;
	display: flex;
	flex-direction: column;
	gap:     5px;
}
.gd-list-event-thumb + .gd-list-event-body {
	padding-left: 0;
}
.gd-list-event:not(:has(.gd-list-event-thumb)) .gd-list-event-body {
	padding-left: 14px;
}

.gd-list-event-meta {
	display:     flex;
	align-items: center;
	flex-wrap:   wrap;
	gap:         10px;
}

.gd-list-event-time,
.gd-list-event-location {
	display:     inline-flex;
	align-items: center;
	gap:         4px;
	font-size:   0.78em;
	color:       var(--gd-text-muted, #9CA3AF);
	font-weight: 500;
}
.gd-list-event-time .dashicons,
.gd-list-event-location .dashicons {
	font-size: 14px;
	width:     14px;
	height:    14px;
}

.gd-list-event-title {
	margin: 0;
}

.gd-list-event-chip {
	background:    none !important;
	border:        none !important;
	padding:       0 !important;
	color:         var(--gd-text, #111827) !important;
	font-size:     0.95em;
	font-weight:   700;
	text-align:    left;
	cursor:        pointer;
	line-height:   1.35;
	display:       flex;
	align-items:   center;
	gap:           5px;
	min-width:     0;    /* flex item */
	max-width:     100%;
	overflow:      hidden;
}
.gd-list-event-chip:hover {
	color: var(--gd-primary, #4F46E5) !important;
}
.gd-list-event-chip-title {
	overflow:      hidden;
	text-overflow: ellipsis;
	white-space:   nowrap;
	flex:          1;
	min-width:     0;
}

.gd-list-event-star {
	color:     var(--gd-important, #EF4444);
	font-size: 0.9em;
}

.gd-list-event-excerpt {
	margin:    0;
	font-size: 0.82em;
	color:     var(--gd-text-muted, #9CA3AF);
	line-height: 1.5;
	display:   -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow:  hidden;
}

.gd-list-limit-hint {
	text-align: center;
	font-size:  0.8em;
	color:      var(--gd-text-muted, #9CA3AF);
	padding:    12px;
	margin:     0;
}

/* ── Infinite scroll : loader + sentinel + fin de liste ─────── */
.gd-list-loader {
	display:         flex;
	justify-content: center;
	align-items:     center;
	gap:             6px;
	padding:         20px 0;
}

.gd-list-loader-dot {
	width:         8px;
	height:        8px;
	border-radius: 50%;
	background:    var(--gd-primary, #4F46E5);
	animation:     gd-dot-bounce 1.2s infinite ease-in-out;
}
.gd-list-loader-dot:nth-child(1) { animation-delay: 0s; }
.gd-list-loader-dot:nth-child(2) { animation-delay: 0.2s; }
.gd-list-loader-dot:nth-child(3) { animation-delay: 0.4s; }

@keyframes gd-dot-bounce {
	0%, 60%, 100% { transform: translateY(0);   opacity: 0.4; }
	30%           { transform: translateY(-6px); opacity: 1;   }
}

.gd-list-sentinel {
	height:     1px;
	visibility: hidden;
}

.gd-list-end {
	text-align:  center;
	font-size:   0.8em;
	color:       var(--gd-text-muted, #9CA3AF);
	padding:     16px 12px;
	margin:      0;
	border-top:  1px solid var(--gd-border, #E5E7EB);
}

/* ── Responsive ─────────────────────────────────────────────── */
@media (max-width: 768px) {
	.gd-calendar-header {
		flex-direction: column;
		align-items:    stretch;
		text-align:     center;
		gap:            8px;
	}
	.gd-period-label { order: -1; }
	.gd-view-toggle  { justify-content: center; }

	.gd-event-chip .gd-chip-title {
		max-width: 55px;
	}
	.gd-weekday-header {
		font-size:  0.62em;
		padding:    5px 2px;
		overflow:   hidden;
	}
	.gd-calendar-day {
		min-height: 72px;
		padding:    4px 3px;
	}
	.gd-modal {
		max-width: 100%;
		margin: 0 8px;
	}
}

@media (max-width: 540px) {
	/* Vue mois : bascule en liste */
	.gd-calendar-weekdays { display: none; }

	.gd-calendar-grid {
		display: block;
	}

	.gd-calendar-day {
		display:       flex;
		min-height:    auto;
		padding:       10px 12px;
		border-bottom: 1px solid var(--gd-border);
		border-right:  none;
		gap:           12px;
	}
	.gd-calendar-day--empty         { display: none; }
	.gd-calendar-day--empty-events  { display: none; }

	.gd-day-number {
		min-width: 28px;
		font-size: 0.95em;
	}

	.gd-events-list { flex: 1; }

	/* Vue semaine */
	.gd-week-columns {
		grid-template-columns: repeat(4, 1fr);
	}

	/* Vue jour */
	.gd-day-event {
		flex-direction: column;
	}
	.gd-day-event-thumb img {
		width:  100%;
		height: 150px;
	}

	/* Modale */
	.gd-modal-hero {
		min-height: 100px;
		padding:    40px 18px 16px;
	}
	.gd-modal-body {
		padding: 18px 18px 20px;
	}
	.gd-modal-title {
		font-size: 1.1em;
	}
}

/* ── Utilitaires ────────────────────────────────────────────── */
.gd-today-label {
	background:    rgba(255,255,255,0.18);
	border-radius: var(--gd-radius-pill);
	padding:       3px 10px;
}

.gd-date-indicative {
	font-style:  italic;
	opacity:     0.75;
	font-size:   0.9em;
	margin-right: 3px;
}

/* ── Événements supplémentaires (+N autres) ─────────────────── */
.gd-more-events {
	display:     block;
	font-size:   11px;
	color:       var(--gd-text-muted);
	padding:     2px 6px;
	cursor:      pointer;
	font-weight: 500;
}
.gd-more-events:hover { text-decoration: underline; }

/* ── B2 : Filtre catégorie ──────────────────────────────────── */
.gd-cat-filter {
	background:    rgba(255,255,255,0.18);
	border:        1px solid rgba(255,255,255,0.3);
	color:         #ffffff;
	border-radius: var(--gd-radius-pill);
	padding:       5px 30px 5px 12px;
	font-size:     0.8em;
	font-weight:   600;
	cursor:        pointer;
	appearance:    none;
	-webkit-appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='white' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 10px center;
	backdrop-filter: blur(4px);
	transition:    background var(--gd-transition);
}
.gd-cat-filter:hover  { background-color: rgba(255,255,255,0.28); }
.gd-cat-filter option { background: var(--gd-primary); color: #fff; }

/* ── Contrôle de visibilité des éléments de puce ────────────── */
/* Via data-show-time et data-show-location sur .gd-agenda */
.gd-agenda[data-show-time="0"] .gd-chip-time,
.gd-agenda[data-show-location="0"] .gd-chip-location {
	display: none;
}

/* Lieu dans la puce */
.gd-chip-location {
	font-size:    0.85em;
	opacity:      0.8;
	margin-left:  4px;
}

/* ── C2 / C3 / C4 : Vue hebdomadaire — grille horaire ──────────── */

/* Gouttière gauche (aligne l'axe horaire avec les en-têtes de jours) */
.gd-week-time-gutter {
	width:        48px;
	flex-shrink:  0;
	background:   var(--gd-bg-alt);
	border-right: 1px solid var(--gd-border);
}

/* ── Ligne d'en-têtes des jours ─────────────────────────────────── */
.gd-week-header-row {
	display:       flex;
	border-bottom: 1px solid var(--gd-border);
	background:    var(--gd-bg-alt);
	position:      sticky;
	top:           0;
	z-index:       10;
}

.gd-week-col-head {
	flex:           1;
	min-width:      0;
	padding:        8px 4px 6px;
	text-align:     center;
	border-right:   1px solid var(--gd-border);
	display:        flex;
	flex-direction: column;
	align-items:    center;
	gap:            3px;
}
.gd-week-col-head:last-child { border-right: none; }

.gd-week-col-head .gd-weekday-name {
	display:        block;
	font-size:      10px;
	font-weight:    700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color:          var(--gd-text-subtle);
	margin-bottom:  0;
}
.gd-week-col-head .gd-week-date-num {
	display:         inline-flex;
	align-items:     center;
	justify-content: center;
	width:           28px;
	height:          28px;
	font-size:       0.95em;
	font-weight:     700;
	color:           var(--gd-text);
	border-radius:   50%;
	transition:      background var(--gd-transition), color var(--gd-transition);
}
.gd-week-col-head--today {
	background: var(--gd-today-bg);
}
.gd-week-col-head--today .gd-week-date-num {
	background: var(--gd-today-border);
	color:      #ffffff;
}
/* C2 : week-end */
.gd-week-col-head--weekend {
	background: var(--gd-weekend-bg, #FAFAFA);
}
.gd-week-col-head--weekend .gd-weekday-name {
	color: var(--gd-text-muted);
}

/* ── C4 : Zone événements journée entière ───────────────────────── */
.gd-week-allday-row {
	display:       flex;
	border-bottom: 2px solid var(--gd-border);
	background:    var(--gd-bg-alt);
	min-height:    36px;
}

.gd-week-time-gutter--allday {
	display:         flex;
	align-items:     center;
	justify-content: center;
	padding:         4px 2px;
}
.gd-week-time-gutter--allday span {
	font-size:       9px;
	font-weight:     700;
	text-transform:  uppercase;
	letter-spacing:  0.06em;
	color:           var(--gd-text-subtle);
	writing-mode:    vertical-rl;
	text-orientation: mixed;
	transform:       rotate(180deg);
}

.gd-week-allday-cell {
	flex:           1;
	min-width:      0;
	padding:        3px;
	border-right:   1px solid var(--gd-border);
	display:        flex;
	flex-direction: column;
	gap:            2px;
}
.gd-week-allday-cell:last-child { border-right: none; }
.gd-week-allday-cell--today   { background: var(--gd-today-bg); }
.gd-week-allday-cell--weekend { background: var(--gd-weekend-bg, #FAFAFA); }

/* ── C3 : Grille horaire principale ─────────────────────────────── */
.gd-week-timeline {
	display:         flex;
	overflow-y:      auto;
	overflow-x:      hidden;
	max-height:      520px;
	position:        relative;
	scrollbar-width: thin;
	scrollbar-color: var(--gd-border) transparent;
}
.gd-week-timeline::-webkit-scrollbar { width: 5px; }
.gd-week-timeline::-webkit-scrollbar-thumb {
	background-color: var(--gd-border);
	border-radius:    10px;
}

/* Axe horaire à gauche */
.gd-week-time-axis {
	width:        48px;
	flex-shrink:  0;
	background:   var(--gd-bg-alt);
	border-right: 1px solid var(--gd-border);
	position:     sticky;
	left:         0;
	z-index:      5;
}

.gd-week-time-slot {
	display:          flex;
	align-items:      flex-start;
	justify-content:  flex-end;
	padding-right:    8px;
	padding-top:      2px;
	border-bottom:    1px solid var(--gd-border);
	box-sizing:       border-box;
}

.gd-week-time-label {
	font-size:      10px;
	font-weight:    600;
	color:          var(--gd-text-subtle);
	letter-spacing: 0.02em;
	white-space:    nowrap;
	line-height:    1;
}

/* Colonnes jours */
.gd-week-col {
	flex:         1;
	min-width:    0;
	border-right: 1px solid var(--gd-border);
	position:     relative;
	overflow:     visible;
}
.gd-week-col:last-child { border-right: none; }

.gd-week-col--today   { background: var(--gd-today-bg); }
/* C2 : colonnes week-end */
.gd-week-col--weekend { background: var(--gd-weekend-bg, #FAFAFA); }

/* Lignes horaires de fond */
.gd-week-hour-line {
	position:      absolute;
	left:          0;
	right:         0;
	height:        1px;
	background:    var(--gd-border);
	opacity:       0.55;
	pointer-events: none;
}

/* Événements positionnés dans la grille */
.gd-week-event {
	position:       absolute;
	left:           3px;
	right:          3px;
	background:     rgba(79, 70, 229, 0.08);
	border:         none;
	border-left:    3px solid var(--gd-primary);
	border-radius:  0 var(--gd-radius-sm, 4px) var(--gd-radius-sm, 4px) 0;
	padding:        3px 5px;
	cursor:         pointer;
	text-align:     left;
	overflow:       hidden;
	font-size:      11px;
	color:          var(--gd-primary);
	display:        flex;
	flex-direction: column;
	gap:            1px;
	line-height:    1.25;
	box-sizing:     border-box;
	z-index:        2;
	transition:     background var(--gd-transition), transform var(--gd-transition), box-shadow var(--gd-transition);
}
.gd-week-event:hover {
	background: rgba(79, 70, 229, 0.16);
	transform:  translateX(1px);
	box-shadow: 0 2px 8px rgba(79, 70, 229, 0.18);
	z-index:    3;
}
.gd-week-event--important {
	background:   rgba(239, 68, 68, 0.08);
	border-color: var(--gd-important);
	color:        var(--gd-important-text, #B91C1C);
}
.gd-week-event--important:hover {
	background: rgba(239, 68, 68, 0.16);
	box-shadow: 0 2px 8px rgba(239, 68, 68, 0.18);
}

.gd-week-event-time {
	font-size:     9px;
	font-weight:   700;
	opacity:       0.72;
	white-space:   nowrap;
	overflow:      hidden;
	text-overflow: ellipsis;
	flex-shrink:   0;
}
.gd-week-event-title {
	font-size:     11px;
	font-weight:   600;
	overflow:      hidden;
	text-overflow: ellipsis;
	white-space:   nowrap;
	flex:          1;
	min-width:     0;
}

/* ── Responsive : vue semaine ───────────────────────────────────── */
@media (max-width: 768px) {
	.gd-week-time-gutter,
	.gd-week-time-axis {
		width: 36px;
	}
	.gd-week-time-label { font-size: 9px; }
	.gd-week-event-time { display: none; }
	.gd-week-timeline   { max-height: 420px; }
}

@media (max-width: 540px) {
	/* Vue semaine : masquer l'axe horaire, empiler verticalement */
	.gd-week-header-row,
	.gd-week-allday-row {
		overflow-x: auto;
	}
	.gd-week-timeline {
		overflow-x: auto;
		max-height: 360px;
	}
	.gd-week-col-head {
		min-width: 52px;
	}
	.gd-week-col {
		min-width: 52px;
	}
	.gd-week-allday-cell {
		min-width: 52px;
	}
}
