/* =========================================================================
   polish.css — Finitions « magazine haut de gamme » : motion, détails, textures
   Chargé en dernier : raffine sans réécrire la structure.
   ========================================================================= */

/* Sélection & barre de défilement assorties à la palette */
::selection { background: var(--accent); color: #fff; }
* { scrollbar-color: var(--line-strong) transparent; }

/* --- Apparition au défilement (micro-interaction) --- */
[data-reveal] {
  opacity: 0; transform: translateY(24px);
  transition: opacity .75s cubic-bezier(.2,.7,.2,1), transform .75s cubic-bezier(.2,.7,.2,1);
  will-change: opacity, transform;
}
[data-reveal].is-in { opacity: 1; transform: none; }

/* --- Zoom doux des images dans leur cadre --- */
.chapter__media, .act__media, .alt-card__media { overflow: hidden; }
.chapter__media .photo, .act__media .photo, .alt-card__media .photo {
  transition: transform 1s cubic-bezier(.2,.7,.2,1);
}
.chapter:hover .chapter__media .photo,
.act:hover .act__media .photo,
.alt-card:hover .alt-card__media .photo { transform: scale(1.06); }

/* --- Liens élégants (soulignement animé) --- */
.act__link { position: relative; }
.act__link::after {
  content: ""; position: absolute; left: 0; bottom: -2px; height: 1px; width: 100%;
  background: currentColor; transform: scaleX(0); transform-origin: left;
  transition: transform .3s ease;
}
.act__link:hover { text-decoration: none; }
.act__link:hover::after { transform: scaleX(1); }

/* --- Focus accessible et soigné --- */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible {
  outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px;
}

/* --- Respect des préférences de mouvement réduit --- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
  [data-reveal] { opacity: 1 !important; transform: none !important; }
  .hero__bg { animation: none !important; }
}
