/* ——————————————————————————————————————
   Palette et variables globales
   —————————————————————————————————————— */
:root {
  --mint-cream: #e5efe8ff; /* background & text on dark */
  --honeydew: #d4e8d9ff;  /* card background */
  --fern-green: #A6C9AE; /* highlights / hover */
  --hunter-green: #386142ff; /* navbar background */
  --dark-green: #1d3022ff; /* text on light backgrounds, borders */
  --claret: #830b3dff;     /* unused links */
  --dark-purple: #290623ff; /* used links */

  /* Timeline & bouton vars */
  --track-x: 40px;
  --line-width: 5px;
  --dot-size: 28px;
  --gap-height: 40px;
  --line-color-start: var(--hunter-green);
  --line-color-end: var(--fern-green);
  --timeline-bg: var(--mint-cream);
  --timeline-text: var(--dark-green);
  --badge-bg: var(--honeydew);
  --badge-hover: var(--fern-green);
  --badge-text: var(--dark-green);
  --btn-bg: var(--honeydew);
  --btn-active: var(--hunter-green);
  --btn-text: var(--dark-green);
  --btn-active-text: var(--mint-cream);
}

/* ——————————————————————————————————————
   Base
   —————————————————————————————————————— */
body {
  font-family: "Helvetica Neue", Arial, sans-serif;
  background-color: var(--mint-cream);
  color: var(--dark-green);
  margin: 0;
  padding: 0;
}

/* ——————————————————————————————————————
   Header
   —————————————————————————————————————— */
header {
  background-color: var(--honeydew);
  border-bottom: 2px solid var(--hunter-green);
  padding: 20px;
  text-align: center;
}

header h1 {
  font-size: 2.5rem;
  color: var(--dark-green);
  margin-bottom: 0.5rem;
}

header p.lead {
  font-size: 1.2rem;
  color: var(--hunter-green);
}

/* ——————————————————————————————————————
   Navbar
   —————————————————————————————————————— */
nav {
    background-color: var(--fern-green);
    border-top: 1px solid var(--hunter-green);
    border-bottom: 1px solid var(--hunter-green);
    text-align: center;
    padding: 10px 0;
}

nav a {
  color: var(--mint-cream);
  margin: 0 1rem;
  text-decoration: none;
  font-weight: 500;
  padding: 0.4rem 0.8rem;
  border-radius: 6px;
  transition: background-color 0.2s ease, color 0.2s ease;
}

/* Hover pour tous les liens sauf les drapeaux */
nav a:not(.flag-link):hover,
nav a:not(.flag-link):focus {
    background-color: var(--honeydew);
}

/* ——————————————————————————————————————
   Links
   —————————————————————————————————————— */
a {
  color: var(--claret); /* unused links */
  text-decoration: none;
  transition: color 0.2s ease, background-color 0.2s ease;
}

a.used {
  color: var(--dark-purple); /* already used links */
}

a:hover,
a:focus {
  color: var(--hunter-green); /* hover color for non-navbar links */
}

/* ——————————————————————————————————————
   Flags
   —————————————————————————————————————— */
.flag-link img.flag {
  width: 50px;
  height: auto;
  cursor: pointer;
  transition: transform 0.2s ease;
}

.flag-link img.flag:hover {
  transform: scale(1.1);
}

/* ——————————————————————————————————————
   Images
   —————————————————————————————————————— */
img:not(.flag) {
    max-width: 150px;
    border: 5px solid var(--dark-green);
    box-shadow: 0 2px 6px rgba(0,0,0,0.1);
    border-radius: 50%;
}

/* ——————————————————————————————————————
   Cards
   —————————————————————————————————————— */
.card {
  background-color: var(--honeydew);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.08);
  border-radius: 12px;
  border: 1px solid var(--dark-green);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.card-body {
  padding: 1.5rem;
}

/* ——————————————————————————————————————
   Layout grid
   —————————————————————————————————————— */
.wrapper {
  display: grid;
  grid-template-columns: 3fr 1fr;
  grid-template-areas:
    "first-main     right-col"
    "second-main    right-col"
    "footer         footer";
  gap: 20px;
  padding: 20px;
}

.box1 { grid-area: first-main; }
.box2 { grid-area: second-main; }
.box3 { grid-area: right-col; }
.box4 { grid-area: footer; }

/* ——————————————————————————————————————
   Footer
   —————————————————————————————————————— */
footer, .box4 {
    background-color: var(--honeydew);
    color: var(--dark-green);
    border-top: 1px solid var(--hunter-green);
    padding: 15px;
    text-align: center;
}

/* ——————————————————————————————————————
   Bouton jour/nuit
   —————————————————————————————————————— */
.tog-mode {
    cursor: pointer;
    font-weight: 600;
    padding: 0.4rem 0.8rem;
    border-radius: 8px;
    border: 2px solid var(--hunter-green);
    background-color: var(--dark-purple);
    color: var(--dark-green);
    transition: background-color 0.3s ease, color 0.3s ease, transform 0.2s ease;
}

/* ——————————————————————————————————————
   Responsive
   —————————————————————————————————————— */
@media (max-width: 768px) {
  .wrapper {
    grid-template-columns: 1fr;
    grid-template-areas:
      "first-main"
      "second-main"
      "right-col"
      "footer";
  }

  img:not(.flag) {
    max-width: 120px;
  }
}

/* ——————————————————————————————————————
   Mode sombre manuel (toggle)
   —————————————————————————————————————— */
body.dark-mode {
    background-color: var(--dark-green) !important;
    color: var(--mint-cream) !important;
}

body.dark-mode header,
body.dark-mode nav,
body.dark-mode footer,
body.dark-mode .card {
    color: var(--mint-cream) !important;
    background-color: var(--hunter-green) !important;
    border-color: var(--hunter-green) !important;
}

body.dark-mode nav a {
    color: var(--mint-cream) !important;
}

body.dark-mode nav a:not(.flag-link):hover {
    background-color: var(--dark-green) !important;
}

body.dark-mode a {
    color: var(--claret) !important;
}

body.dark-mode a.used {
    color: var(--dark-purple) !important;
}

body.dark-mode a:hover,
body.dark-mode a:focus {
    color: var(--fern-green) !important;
}

body.dark-mode .flag-link img.flag:hover {
    transform: scale(1.1) !important;
}
body.dark-mode img:not(.flag) {
    border: 5px solid var(--honeydew);
}

body.dark-mode .tog-mode {
    background-color: var(--fern-green);
    color: var(--mint-cream);
    border-color: var(--hunter-green);
}


/* ——————————————————————————————————————
   TIMELINE
   —————————————————————————————————————— */
.timeline {
  position: relative;
  padding-left: calc(var(--track-x) + 1.5rem);
  color: var(--timeline-text);
  background-color: var(--timeline-bg);
}

.timeline-track {
  position: absolute;
  left: var(--track-x);
  top: 0;
  bottom: 0;
  width: 0;
  pointer-events: none;
  z-index: 0;
}

.timeline-track::before {
  content: "";
  position: absolute;
  left: calc(-1 * (var(--line-width)/2));
  top: 0;
  bottom: 0;
  width: var(--line-width);
  background: linear-gradient(to bottom, var(--line-color-start), var(--line-color-end));
  border-radius: 2px;
  z-index: 0;
}

.timeline-item {
  position: relative;
  margin-bottom: 2rem;
  padding-left: .5rem;
  transition: transform 0.2s ease;
  z-index: 2;
}

.timeline-item:hover { transform: translateX(4px); }
.timeline-item.hidden { display: none !important; }

.timeline-item h5 { margin-bottom: .25rem; color: var(--timeline-text); }
.timeline-item .meta { color: var(--hunter-green); font-size:.95rem; margin-bottom:.25rem; }
.timeline-item .journal { color: var(--hunter-green); font-style:italic; font-size:.9rem; }

/* ——————————————————————————————————————
   Pastilles des liens
   —————————————————————————————————————— */
.badge-link {
  background: var(--badge-bg);
  border: 1px solid var(--dark-green);
  border-radius: .75rem;
  padding: .3rem .6rem;
  font-size: .8rem;
  text-decoration: none;
  color: var(--badge-text);
  transition: background .2s, color .2s;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.badge-link:hover {
  background: var(--badge-hover);
  color: var(--mint-cream);
}
.badge-link i { font-size: 0.9rem; }

/* Track décoratif */
.track-gap {
  position: absolute;
  left: 0;
  transform: translate(-50%, -50%);
  width: calc(var(--line-width) + 12px);
  height: var(--gap-height);
  background: var(--timeline-bg);
  border-radius: 6px;
  z-index: 1;
  pointer-events: none;
}

/* Pastilles sur le liseret */
.track-dot {
  position: absolute;
  left: 0;
  transform: translate(-50%, -50%) scale(0);
  width: var(--dot-size);
  height: var(--dot-size);
  border-radius: 50%;
  border: 2px solid var(--timeline-bg);
  box-shadow: 0 0 0 3px var(--timeline-bg), 0 1px 3px rgba(0,0,0,0.06);
  animation: popIn .5s ease forwards;
  z-index: 3;
  pointer-events: auto;
  display: flex;
  justify-content: center;
  align-items: center;
}

.track-dot i {
    color: var(--dark-green);
}

@keyframes popIn {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(0.3); }
  70% { opacity: 1; transform: translate(-50%, -50%) scale(1.12); }
  100% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

/* Couleurs des pastilles */
.dot-en-cours { background: linear-gradient(145deg,#ffe066,#ffc107); }
.dot-publie   { background: linear-gradient(145deg,#8fd19e,#28a745); }
.dot-manuscrit{ background: linear-gradient(145deg,#7bb1ff,#0d6efd); }
.dot-default  { background: linear-gradient(145deg,#adb5bd,#6c757d); }

/* ——————————————————————————————————————
   Boutons de filtre
   —————————————————————————————————————— */

.filter-bar {
    text-align: center; /* centre sans transformer en flex */
}

.filter-bar .btn-group {
    display: inline-flex;   /* juste le groupe */
    justify-content: center;
}



.filter-bar .btn {
  border-radius: 9999px;
  border: 1px solid var(--dark-green);
  background-color: var(--btn-bg);
  color: var(--btn-text);
  font-weight: 500;
  transition: all .25s ease;
  display: flex;
  align-items: center;
  gap: .4rem;
}
.filter-bar .btn.active {
  background: var(--btn-active);
  color: var(--btn-active-text);
  box-shadow: 0 0 10px rgba(13,110,253,.28);
}

/* ——————————————————————————————————————
   Responsive timeline
   —————————————————————————————————————— */
@media(max-width:600px){
  :root { --track-x: 28px; --dot-size: 12px; --gap-height: 24px; }
  .timeline { padding-left: calc(var(--track-x) + 1rem); }
}

/* ——————————————————————————————————————
   DARK MODE (Timeline) — via .dark-mode
   —————————————————————————————————————— */
body.dark-mode {
  --timeline-bg: var(--dark-green);
  --timeline-text: var(--mint-cream);
  --line-color-start: var(--fern-green);
  --line-color-end: var(--mint-cream);
  --badge-bg: var(--hunter-green);
  --badge-hover: var(--fern-green);
  --badge-text: var(--mint-cream);
  --btn-bg: var(--hunter-green);
  --btn-active: var(--fern-green);
  --btn-text: var(--mint-cream);
  --btn-active-text: var(--dark-green);
}

body.dark-mode .timeline-item .meta,
body.dark-mode .timeline-item .journal {
  color: var(--fern-green);
}

body.dark-mode .track-dot {
  border-color: var(--dark-green);
  box-shadow: 0 0 0 3px var(--dark-green);
}

body.dark-mode .filter-bar .btn.active {
  box-shadow: 0 0 10px rgba(255,255,255,.25);
}

/* header */
/* Container à droite dans la navbar */
.navbar .col-3.text-end {
    display: flex;
    align-items: center;      /* centre verticalement */
    justify-content: flex-end;
    gap: 12px;                /* espace uniforme entre drapeaux et bouton */
}

/* Bouton toggle avec la même hauteur que les flags */
#toggle-dark-mode {
    height: 35px;             /* même hauteur que .flag */
    line-height: 28px;        /* centre le texte verticalement */
    padding: 0 10px;          /* espace horizontal seulement */
    white-space: nowrap;      /* empêche tout retour à la ligne */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 6px;
    font-size: 0.9rem;
}
