/* ============================================================
   Scientific Program – Frontend Styles
   ============================================================ */

/* ── Variables ─────────────────────────────────────────────── */
:root {
  --sp-accent:       #005f99;
  /* Dérivées automatiquement depuis --sp-accent — overrider --sp-accent suffit */
  --sp-accent-dark:  color-mix(in srgb, var(--sp-accent) 75%, #000);
  --sp-accent-light: color-mix(in srgb, var(--sp-accent) 10%, #fff);
  --sp-text:         #1a1a2e;
  --sp-muted:        #6b7280;
  --sp-border:       #dde3ea;
  --sp-radius:       10px;
  --sp-radius-sm:    8px;
  --sp-shadow:       0 2px 14px rgba(0,0,0,.08);
  --sp-shadow-lg:    0 8px 40px rgba(0,0,0,.18);
  --sp-font:         system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

/* ── Wrapper ────────────────────────────────────────────────── */
.sp-program {
  font-family: var(--sp-font);
  color: var(--sp-text);
  max-width: 1100px;
  margin: 0 auto;
}

.sp-program__title {
  font-size: 1.75rem;
  font-weight: 700;
  border-bottom: 3px solid var(--sp-accent);
  padding-bottom: .5rem;
  margin-bottom: 1.5rem;
}

/* ── Search bar ─────────────────────────────────────────────── */
.sp-search {
  display: flex;
  align-items: center;
  gap: .75rem;
  margin-bottom: 2rem;
}

.sp-search__input {
  flex: 1;
  width: 100%;
  box-sizing: border-box;
  padding: .9rem 1.25rem !important;
  font-size: 1rem !important;
  font-family: var(--sp-font) !important;
  border: 1.5px solid var(--sp-border) !important;
  border-radius: 40px !important;
  outline: none !important;
  background: #fff !important;
  box-shadow: 0 1px 4px rgba(0,0,0,.06) !important;
  transition: border-color .2s, box-shadow .25s;
  color: var(--sp-text) !important;
  line-height: normal !important;
}
.sp-search__input:hover {
  border-color: color-mix(in srgb, var(--sp-accent) 40%, var(--sp-border)) !important;
}
.sp-search__input:focus {
  border-color: var(--sp-accent) !important;
  box-shadow: 0 0 0 3.5px color-mix(in srgb, var(--sp-accent) 18%, transparent),
              0 1px 4px rgba(0,0,0,.06) !important;
}
.sp-search__input::placeholder { color: var(--sp-muted) !important; }

/* Reset navigateur pour type=search */
.sp-search__input::-webkit-search-decoration,
.sp-search__input::-webkit-search-cancel-button { -webkit-appearance: none; }

.sp-search__count {
  font-size: .82rem;
  color: var(--sp-accent);
  font-weight: 700;
  white-space: nowrap;
  background: var(--sp-accent-light);
  padding: .28rem .75rem;
  border-radius: 20px;
  border: 1px solid color-mix(in srgb, var(--sp-accent) 20%, transparent);
  flex-shrink: 0;
}

/* ── Filtres de session ─────────────────────────────────────── */
.sp-filters {
  display: flex;
  align-items: center;
  gap: .75rem;
  margin-bottom: 1.75rem;
}

.sp-filters__label {
  font-size: .85rem;
  font-weight: 600;
  color: var(--sp-muted);
  white-space: nowrap;
  flex-shrink: 0;
}

.sp-filters__select {
  font-family: var(--sp-font);
  font-size: .9rem;
  color: var(--sp-text);
  background: #fff;
  border: 1.5px solid #d1d5db;
  border-radius: 8px;
  padding: .45rem .9rem;
  cursor: pointer;
  outline: none;
  transition: border-color .15s, box-shadow .15s;
  min-width: 220px;
}
.sp-filters__select:focus {
  border-color: var(--sp-accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--sp-accent) 18%, transparent);
}

/* ── Table of contents ──────────────────────────────────────── */
.sp-toc {
  background: var(--sp-accent-light);
  border: 1px solid var(--sp-border);
  border-radius: var(--sp-radius);
  padding: 1.25rem 1.5rem;
  margin-bottom: 2.5rem;
}

.sp-toc__heading {
  font-size: 1.05rem;
  font-weight: 700;
  margin: 0 0 .75rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--sp-accent);
}

.sp-toc__list {
  margin: 0;
  padding-left: 1.25rem;
  list-style: decimal;
}

.sp-toc__session { margin-bottom: .6rem; }

.sp-toc__session-link {
  font-weight: 600;
  color: var(--sp-accent);
  text-decoration: none;
}
.sp-toc__session-link:hover { text-decoration: underline; }

.sp-toc__comms {
  list-style: disc;
  padding-left: 1.5rem;
  margin-top: .25rem;
}

.sp-toc__comms a {
  color: var(--sp-text);
  text-decoration: none;
  font-size: .9rem;
}
.sp-toc__comms a:hover { color: var(--sp-accent); text-decoration: underline; }

.sp-toc__authors {
  color: var(--sp-muted);
  font-size: .85rem;
}

/* ── Session ────────────────────────────────────────────────── */
.sp-session { margin-bottom: 3rem; }

.sp-session__title {
  font-size: 1.15rem;
  font-weight: 700;
  background: var(--sp-accent);
  color: #fff;
  border-radius: var(--sp-radius) var(--sp-radius) 0 0;
  padding: .7rem 1.1rem;
  margin: 0 0 2px;
}

/* ── Session list ───────────────────────────────────────────── */
.sp-session__list {
  display: flex;
  flex-direction: column;
  gap: 2px;
  background: var(--sp-border);
  border: 1px solid var(--sp-border);
  border-radius: 0 0 var(--sp-radius) var(--sp-radius);
  overflow: hidden;
}

.sp-session__list--cols-2 { display: grid; grid-template-columns: 1fr 1fr; }
.sp-session__list--cols-3 { display: grid; grid-template-columns: repeat(3, 1fr); }

@media (max-width: 780px) {
  .sp-session__list--cols-2,
  .sp-session__list--cols-3 { grid-template-columns: 1fr; }
}

/* ── Communication card ─────────────────────────────────────── */
.sp-comm {
  background: #fff;
  display: flex;
  gap: 0;
  transition: background .15s;
  position: relative;
}
.sp-comm:hover { background: #fafbff; }

/* Cols > 1 : carte verticale */
.sp-session__list--cols-2 .sp-comm,
.sp-session__list--cols-3 .sp-comm {
  flex-direction: column;
}

/* ── Thumbnail ──────────────────────────────────────────────── */
.sp-comm__thumb-btn {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  display: block;
  flex-shrink: 0;
  /* liste 1 col : 180px de large */
  width: 180px;
  position: relative;
  align-self: stretch;
}
.sp-session__list--cols-2 .sp-comm__thumb-btn,
.sp-session__list--cols-3 .sp-comm__thumb-btn {
  width: 100%;
  align-self: auto;
}

.sp-comm__thumb {
  width: 100%;
  height: 100%;
  min-height: 102px;
  position: relative;
  overflow: hidden;
  background: #0d1324;
}
.sp-session__list--cols-2 .sp-comm__thumb,
.sp-session__list--cols-3 .sp-comm__thumb {
  min-height: unset;
  aspect-ratio: 16/9;
}

.sp-comm__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .35s;
}
.sp-comm__thumb-btn:hover .sp-comm__thumb img { transform: scale(1.04); }

.sp-comm__thumb-placeholder {
  width: 100%;
  height: 100%;
  min-height: 102px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #0d1324;
}
.sp-comm__thumb-placeholder svg {
  width: 48px;
  height: 48px;
}
.sp-comm__thumb-placeholder--novid { background: #f0f2f5; }

/* Overlay play */
.sp-comm__thumb-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,.25);
  transition: background .2s;
}
.sp-comm__thumb-btn:hover .sp-comm__thumb-overlay { background: rgba(0,0,0,.45); }

.sp-comm__play-circle {
  width: 42px;
  height: 42px;
  background: rgba(255,255,255,.92);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--sp-accent);
  transition: transform .2s, background .2s;
  box-shadow: 0 2px 12px rgba(0,0,0,.35);
}
.sp-comm__thumb-btn:hover .sp-comm__play-circle {
  transform: scale(1.12);
  background: #fff;
}
.sp-comm__play-circle svg { width: 18px; height: 18px; margin-left: 2px; }

/* Durée */
.sp-comm__duration {
  position: absolute;
  bottom: 7px;
  right: 7px;
  background: rgba(0,0,0,.75);
  color: #fff;
  font-size: .72rem;
  font-weight: 700;
  padding: 2px 6px;
  border-radius: 4px;
  display: flex;
  align-items: center;
  gap: 3px;
  letter-spacing: .02em;
}

/* ── Corps de la carte ──────────────────────────────────────── */
.sp-comm__body {
  flex: 1;
  padding: .95rem 1.1rem;
  display: flex;
  flex-direction: column;
  gap: .3rem;
  min-width: 0;
}

.sp-comm__title {
  font-size: .96rem;
  font-weight: 700;
  margin: 0;
  line-height: 1.4;
  color: var(--sp-text);
}

.sp-comm__meta-line {
  display: flex;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: 4px 14px;
}

.sp-comm__authors,
.sp-comm__service {
  font-size: .83rem;
  color: var(--sp-muted);
  margin: 0;
  display: flex;
  align-items: flex-start;
  gap: 4px;
}

.sp-comm__service {
  padding-left: .75rem;
  border-left: 1px solid var(--sp-border);
}

.sp-comm__authors-icon { flex-shrink: 0; margin-top: 1px; }

.sp-comm__abstract-preview {
  font-size: .82rem;
  color: #4b5563;
  margin: .1rem 0 0;
  line-height: 1.55;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Keywords */
.sp-comm__keywords {
  margin: .25rem 0 0;
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.sp-comm__keyword {
  display: inline-block;
  background: var(--sp-accent-light);
  color: var(--sp-accent);
  border-radius: 20px;
  padding: 1px 9px;
  font-size: .74rem;
  font-weight: 500;
}

/* Bouton "Voir la vidéo" */
.sp-comm__actions {
  margin-top: auto;
  padding-top: .55rem;
}

.sp-comm__watch-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: .42rem .95rem;
  background: var(--sp-accent);
  color: #fff;
  border: none;
  border-radius: 6px;
  font-size: .82rem;
  font-weight: 600;
  font-family: var(--sp-font);
  cursor: pointer;
  transition: background .15s, transform .12s;
  line-height: 1;
}
.sp-comm__watch-btn:hover {
  background: var(--sp-accent-dark);
  transform: translateY(-1px);
}
.sp-comm__watch-btn:active { transform: none; }

/* ── No results ─────────────────────────────────────────────── */
.sp-no-results {
  color: var(--sp-muted);
  font-style: italic;
  padding: 1.5rem;
  text-align: center;
  border: 1px dashed var(--sp-border);
  border-radius: var(--sp-radius);
}

/* ════════════════════════════════════════════════════════════
   MODAL
   ════════════════════════════════════════════════════════════ */

/* Scroll lock */
body.sp-modal-open { overflow: hidden; }

.sp-modal {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  animation: sp-modal-in .2s ease;
}
.sp-modal[hidden] { display: none !important; }

@keyframes sp-modal-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* Backdrop */
.sp-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(10,14,26,.78);
  backdrop-filter: blur(3px);
}

/* Container */
.sp-modal__container {
  position: relative;
  z-index: 1;
  display: flex;
  width: 100%;
  max-width: 1340px;
  height: calc(100vh - 48px);
  background: #0d1324;
  border-radius: var(--sp-radius);
  overflow: hidden;
  box-shadow: var(--sp-shadow-lg);
  animation: sp-modal-scale .22s cubic-bezier(.34,1.3,.64,1);
  transition: border-radius .2s;
}

/* Plein écran */
.sp-modal--fullscreen {
  padding: 0;
}
.sp-modal--fullscreen .sp-modal__container {
  max-width: 100%;
  width: 100%;
  height: 100vh;
  border-radius: 0;
}

@keyframes sp-modal-scale {
  from { transform: scale(.94); opacity: 0; }
  to   { transform: scale(1);   opacity: 1; }
}

/* Colonne player */
.sp-modal__player-wrap {
  flex: 1;
  min-width: 0;
  background: #000;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}

.sp-modal__player-inner {
  width: 100%;
  height: 100%;
}

.sp-modal__player-inner iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

/* Sidebar */
.sp-modal__sidebar {
  width: 360px;
  min-width: 300px;
  background: #fff;
  display: flex;
  flex-direction: column;
  position: relative;
  overflow: hidden;
  transition: width .2s;
}

/* Toolbar (nav + plein écran + fermer) */
.sp-modal__sidebar-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 12px;
  border-bottom: 1px solid var(--sp-border);
  flex-shrink: 0;
  gap: 6px;
}

.sp-modal__toolbar-left,
.sp-modal__toolbar-right {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
}

.sp-modal__nav-btn:disabled {
  opacity: .35;
  cursor: default;
  pointer-events: none;
}

/* ── Icônes CSS pures (résiste à tout override de thème) ────── */

/* Bouton fermer : × */
#sp-modal .sp-modal__close::before,
#sp-modal .sp-modal__close::after {
  content: '' !important;
  position: absolute !important;
  display: block !important;
  width: 14px !important;
  height: 2px !important;
  background: #1a2540 !important;
  border-radius: 1px !important;
  top: 50% !important;
  left: 50% !important;
}
#sp-modal .sp-modal__close::before { transform: translate(-50%,-50%) rotate(45deg)  !important; }
#sp-modal .sp-modal__close::after  { transform: translate(-50%,-50%) rotate(-45deg) !important; }

/* Bouton précédent : chevron gauche */
#sp-modal-prev::before {
  content: '' !important;
  position: absolute !important;
  display: block !important;
  width: 7px !important;
  height: 7px !important;
  border-left: 2px solid #1a2540 !important;
  border-bottom: 2px solid #1a2540 !important;
  top: 50% !important;
  left: 54% !important;
  transform: translate(-50%,-50%) rotate(45deg) !important;
}

/* Bouton suivant : chevron droit */
#sp-modal-next::before {
  content: '' !important;
  position: absolute !important;
  display: block !important;
  width: 7px !important;
  height: 7px !important;
  border-right: 2px solid #1a2540 !important;
  border-top: 2px solid #1a2540 !important;
  top: 50% !important;
  left: 46% !important;
  transform: translate(-50%,-50%) rotate(45deg) !important;
}

/* Bouton plein écran — expand (4 coins vers l'extérieur) */
#sp-modal-fullscreen[data-fs="expand"]::before,
#sp-modal-fullscreen[data-fs="expand"]::after {
  content: '' !important;
  position: absolute !important;
  display: block !important;
  width: 6px !important;
  height: 6px !important;
  border-color: #1a2540 !important;
  border-style: solid !important;
}
#sp-modal-fullscreen[data-fs="expand"]::before {
  border-width: 2px 0 0 2px !important;
  top: 7px !important;
  left: 7px !important;
}
#sp-modal-fullscreen[data-fs="expand"]::after {
  border-width: 0 2px 2px 0 !important;
  bottom: 7px !important;
  right: 7px !important;
}

/* Bouton plein écran — compress (4 coins vers l'intérieur) */
#sp-modal-fullscreen[data-fs="compress"]::before,
#sp-modal-fullscreen[data-fs="compress"]::after {
  content: '' !important;
  position: absolute !important;
  display: block !important;
  width: 6px !important;
  height: 6px !important;
  border-color: #1a2540 !important;
  border-style: solid !important;
}
#sp-modal-fullscreen[data-fs="compress"]::before {
  border-width: 0 2px 2px 0 !important;
  top: 7px !important;
  left: 7px !important;
}
#sp-modal-fullscreen[data-fs="compress"]::after {
  border-width: 2px 0 0 2px !important;
  bottom: 7px !important;
  right: 7px !important;
}

.sp-modal__action-btn {
  position: relative;
  width: 34px;
  height: 34px;
  border-radius: 7px;
  border: 1px solid var(--sp-border);
  background: #fff;
  color: var(--sp-text);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .15s, border-color .15s;
  flex-shrink: 0;
}
.sp-modal__action-btn:hover { background: var(--sp-accent-light); border-color: var(--sp-accent); color: var(--sp-accent); }
.sp-modal__action-btn svg { width: 16px; height: 16px; }

.sp-modal__sidebar-scroll {
  overflow-y: auto;
  flex: 1;
  padding: 1.1rem 1.35rem 1.5rem;
}

.sp-modal__session-badge {
  display: inline-block;
  background: var(--sp-accent-light);
  color: var(--sp-accent);
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  border-radius: 20px;
  padding: 3px 10px;
  margin-bottom: .65rem;
}

.sp-modal__title {
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.4;
  color: var(--sp-text);
  margin: 0 0 .5rem;
}

.sp-modal__authors {
  font-size: .85rem;
  color: var(--sp-muted);
  margin: 0 0 .5rem;
  display: flex;
  align-items: flex-start;
  gap: 5px;
}

.sp-modal__meta-row {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: .82rem;
  color: var(--sp-muted);
  margin-bottom: .25rem;
}
.sp-modal__meta-row svg { width: 14px; height: 14px; flex-shrink: 0; }

.sp-modal__divider {
  border-top: 1px solid var(--sp-border);
  padding-top: 1rem;
  margin-top: .85rem;
}

.sp-modal__section-title {
  font-size: .78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  color: var(--sp-muted);
  margin: 0 0 .55rem;
}

.sp-modal__abstract {
  font-size: .88rem;
  line-height: 1.7;
  color: #374151;
}

.sp-modal__keywords {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

/* ── Session playlist dans le modal ────────────────────────── */
.sp-modal__session-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.sp-modal__session-item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: .55rem .65rem;
  border-radius: var(--sp-radius-sm);
  cursor: pointer;
  transition: background .15s;
  outline: none;
}
.sp-modal__session-item:hover { background: var(--sp-accent-light); }
.sp-modal__session-item:focus-visible { box-shadow: 0 0 0 2px var(--sp-accent); }

.sp-modal__session-item--active {
  background: var(--sp-accent-light);
  border-left: 3px solid var(--sp-accent);
  padding-left: calc(.65rem - 3px);
}

.sp-modal__session-item-num {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  background: var(--sp-border);
  border-radius: 50%;
  font-size: .7rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--sp-muted);
  margin-top: 1px;
}
.sp-modal__session-item--active .sp-modal__session-item-num {
  background: var(--sp-accent);
  color: #fff;
}

.sp-modal__session-item-body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.sp-modal__session-item-title {
  font-size: .83rem;
  font-weight: 600;
  color: var(--sp-text);
  line-height: 1.35;
  white-space: normal;
}
.sp-modal__session-item--active .sp-modal__session-item-title { color: var(--sp-accent); }

.sp-modal__session-item-authors {
  font-size: .75rem;
  color: var(--sp-muted);
}

.sp-modal__session-item-dur {
  font-size: .72rem;
  color: var(--sp-muted);
  font-weight: 500;
}

/* ── Responsive modal ───────────────────────────────────────── */
@media (max-width: 900px) {
  .sp-modal__sidebar { width: 300px; min-width: 260px; }
}

@media (max-width: 700px) {
  .sp-modal { padding: 0; align-items: flex-end; }

  .sp-modal__container {
    flex-direction: column;
    max-width: 100%;
    height: 95vh;
    border-radius: var(--sp-radius) var(--sp-radius) 0 0;
  }

  .sp-modal--fullscreen .sp-modal__container {
    height: 100vh;
    border-radius: 0;
  }

  .sp-modal__player-wrap {
    flex: none;
    height: 50vw;
    min-height: 200px;
  }

  .sp-modal__player-inner {
    height: 100%;
  }

  .sp-modal__sidebar {
    width: 100%;
    min-width: 0;
    flex: 1;
  }

  /* Masquer le bouton FS sur mobile (FS natif géré par Vimeo) */
  #sp-modal-fullscreen { display: none; }
}
