/* =====================================================================
   Opera Populi : journal des cycles
   ===================================================================== */

/* ---------- Journal des cycles ---------- */
.journal { background: var(--bg-sunken); }
.cycle { display: grid; gap: var(--sp-6); }
.cycle__head {
  display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: var(--sp-4) var(--sp-5);
  padding-bottom: var(--sp-5); border-bottom: 1px solid var(--line);
}
.cycle__day {
  display: grid; place-items: center; align-content: center; width: 4.75rem; height: 4.75rem;
  border-radius: var(--r-md); background: var(--text); color: var(--text-inverse); rotate: -4deg; line-height: 1;
}
.cycle__day span { font-size: var(--fs-2xs); font-weight: var(--fw-bold); letter-spacing: var(--tracking-caps); text-transform: uppercase; opacity: .78; }
.cycle__day strong { font: var(--fw-semibold) var(--fs-2xl) / 1.05 var(--font-display); }
.cycle__intro { display: grid; gap: .3rem; }
.cycle__figures {
  grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 1px;
  background: var(--line); border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden;
}
.cycle__figures li { flex: 1 1 6rem; display: grid; gap: .1rem; padding: .65rem .9rem; background: var(--surface); }
.cycle__figures strong { font: var(--fw-semibold) var(--fs-xl) / 1.1 var(--font-display); }
.cycle__figures span { font-size: var(--fs-xs); color: var(--text-muted); }
@media (min-width: 62rem) {
  .cycle__head { grid-template-columns: auto minmax(0, 1fr) auto; }
  .cycle__figures { grid-column: auto; flex-wrap: nowrap; }
  .cycle__figures li { flex: 1 0 auto; }
}
.cycle__subtitle {
  margin-bottom: var(--sp-3); color: var(--text-muted);
  font: var(--fw-bold) var(--fs-xs) / 1.3 var(--font-body); letter-spacing: var(--tracking-caps); text-transform: uppercase;
}
.top-item {
  display: grid; grid-template-columns: 2.6rem minmax(0, 1fr); align-items: start; gap: .2rem 1rem;
  padding-block: .95rem; border-top: 1px solid var(--line);
}
.top-item:first-child { padding-top: .25rem; border-top: 0; }
.top-item__rank {
  display: grid; place-items: center; width: 2.6rem; height: 2.6rem; grid-row: span 2;
  border-radius: var(--r-sm); background: var(--tone-bg); color: var(--tone-fg);
  box-shadow: inset 0 -3px 0 var(--tone); font: var(--fw-semibold) var(--fs-lg) / 1 var(--font-display);
  rotate: -3deg;
}
.top-item:nth-child(even) .top-item__rank { rotate: 3deg; }
.top-item__main { display: grid; gap: .25rem; min-width: 0; }
.top-item__title { font-weight: var(--fw-semibold); line-height: 1.35; }
.top-item__summary { font-size: var(--fs-sm); color: var(--text-muted); }
.top-item__meta { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .75rem; margin-top: .15rem; font-size: var(--fs-xs); color: var(--text-muted); }
.top-item__outcome { grid-column: 2; justify-self: start; margin-top: .35rem; }
@media (min-width: 36rem) {
  .top-item { grid-template-columns: 2.6rem minmax(0, 1fr) auto; }
  .top-item__rank { grid-row: auto; }
  .top-item__outcome { grid-column: 3; grid-row: 1; margin-top: .1rem; }
}
.cycle__side { display: grid; gap: var(--sp-6); align-content: start; }
.trajectory .cycle__subtitle { margin-bottom: var(--sp-5); }
.trajectory__quote {
  position: relative; padding: 1.35rem 1.35rem 1.35rem 1.5rem;
  border-radius: var(--r-lg); background: var(--accent-soft);
  font-family: var(--font-display); font-size: var(--fs-xl); font-style: italic; line-height: 1.45;
  font-variation-settings: var(--soft);
}
.trajectory__quote::before {
  content: ""; position: absolute; top: -.55rem; left: 1.35rem; width: 1.15rem; height: 1.15rem;
  border-radius: var(--r-2xs); background: var(--accent); rotate: 12deg;
  box-shadow: 1.35rem .3rem 0 -.2rem var(--tess-1), 2.4rem -.1rem 0 -.35rem var(--tess-4);
}
/* Colonne d'étiquettes à la largeur de la plus longue ("CORRECTIF (EN COURS)"), partagée par toutes les lignes */
.changelog { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: .6rem .75rem; font-size: var(--fs-sm); }
.changelog li { grid-column: 1 / -1; display: grid; grid-template-columns: subgrid; align-items: baseline; }
.changelog .tag { justify-self: start; white-space: nowrap; }
.cumulative { padding-top: var(--sp-5); border-top: 1px dashed var(--line-strong); }
.cumulative p { color: var(--text-muted); }

.history { margin-top: var(--sp-7); }
.history__title { margin-bottom: var(--sp-4); font-size: var(--fs-xl); }
.history-list { overflow: hidden; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); }
.history-list > li + li { border-top: 1px solid var(--line); }
/* Chaque cycle de l'historique est un bouton : il s'affiche dans la carte principale */
.history-item {
  display: grid; width: 100%; text-align: left; grid-template-columns: 3.5rem minmax(0, 1fr) auto;
  grid-template-areas: "day main main" "day bar score";
  align-items: center; gap: .5rem 1rem; padding: .9rem 1.1rem;
  transition: background-color var(--dur);
}
.history-item:hover { background: var(--surface-2); }
.history-item:focus-visible { outline-offset: -3px; }
.history-item[aria-current="true"] { background: var(--accent-soft); box-shadow: inset 4px 0 0 var(--accent); }
.history-item__day {
  grid-area: day; display: grid; justify-items: center; line-height: 1.1;
  color: var(--text-muted); font-size: var(--fs-2xs); font-weight: var(--fw-bold); letter-spacing: .08em; text-transform: uppercase;
}
.history-item__day strong { font: var(--fw-semibold) var(--fs-xl) / 1.1 var(--font-display); color: var(--text); letter-spacing: 0; }
.history-item__main { grid-area: main; display: grid; min-width: 0; }
.history-item__main time { font-size: var(--fs-xs); font-weight: var(--fw-semibold); color: var(--text-muted); }
.history-item__summary {
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden;
  font-size: var(--fs-sm);
}
.outcome-bar { grid-area: bar; display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); gap: 3px; max-width: 12rem; }
/* Résultats : la forme double la couleur (plein, demi, losange creux, alvéole vide) */
.outcome-bar i, .legend i { display: block; aspect-ratio: 1; border-radius: var(--r-2xs); background: var(--tone); }
.outcome-bar [data-outcome="partial"], .legend [data-outcome="partial"] i {
  background: linear-gradient(135deg, var(--tone) 50%, transparent 50%); box-shadow: inset 0 0 0 1.5px var(--tone-fg);
}
.outcome-bar [data-outcome="failed"], .legend [data-outcome="failed"] i {
  background: transparent; box-shadow: inset 0 0 0 2px var(--tone-fg); scale: .74; rotate: 45deg;
}
.outcome-bar i:not([data-outcome]), .legend li:not([data-outcome]) i { background: transparent; box-shadow: inset 0 0 0 1.5px var(--line-strong); }
.history-item__score { grid-area: score; display: block; font-size: var(--fs-sm); font-weight: var(--fw-bold); text-align: right; }
@media (min-width: 44rem) {
  .history-item { grid-template-columns: 3.5rem minmax(0, 1fr) 11rem 3rem; grid-template-areas: "day main bar score"; }
}
.history__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--sp-4); margin-top: var(--sp-4); }
.legend { display: flex; flex-wrap: wrap; gap: .4rem 1rem; font-size: var(--fs-xs); color: var(--text-muted); }
.legend li { display: inline-flex; align-items: center; gap: .4rem; }
.legend i { width: .75rem; }

/* Carte principale : cycle archivé affiché, retour au dernier cycle */
.cycle__back { grid-column: 1 / -1; justify-self: start; }
.changelog li:not(:has(.tag))::before { content: ""; justify-self: end; width: .45rem; height: .45rem; border-radius: var(--r-2xs); background: var(--accent); rotate: -10deg; align-self: center; }
.top-list__empty { color: var(--text-muted); font-size: var(--fs-sm); }
.cycle__back .icon { rotate: 180deg; }
