/*
Theme Name: Calendrier de l'avent - Aolmes
Theme URI: https://example.com/
Author: Aolmes
Description: Thème sur mesure pour le calendrier de l'avent numérique Aolmes 2026.
Version: 1.0.34
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: aolmes-calendrier
*/

:root {
  --aolmes-cream: #fdf0e5;
  --aolmes-bordeaux: #690e38;
  --aolmes-bordeaux-dark: #601837;
  --aolmes-olive: #98963b;
  --aolmes-olive-separator: #9c951b;
}

* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; }
body {
  background: var(--aolmes-cream);
  color: var(--aolmes-bordeaux-dark);
  overflow-x: hidden;
}
img { display: block; max-width: 100%; }
a { color: inherit; }

.aolmes-site {
  position: relative;
  min-height: 100vh;
  min-height: 100svh;
  background: var(--aolmes-cream);
  isolation: isolate;
}



/* ===== Ouverture feuillages =====
 * Les quatre illustrations encadrent l'écran pendant le chargement puis
 * s'écartent vers l'extérieur. Les coordonnées de placement restent en vw
 * afin de conserver la composition proportionnelle à la largeur du viewport.
 */
body.aolmes-leaf-loader-pending {
  overflow: hidden;
  overscroll-behavior: none;
}

.aolmes-leaf-loader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  width: 100vw;
  height: 100vh;
  height: 100svh;
  overflow: hidden;
  pointer-events: auto;
  opacity: 1;
  visibility: visible;
}

.aolmes-leaf-loader.is-finished {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.aolmes-loader-leaf {
  position: absolute;
  display: block;
  height: auto;
  max-width: none;
  user-select: none;
  pointer-events: none;
  will-change: transform;
  backface-visibility: hidden;
  transform: translate3d(0, 0, 0) rotate(var(--aolmes-leaf-rotation, 0deg));
  transition: transform 2.35s cubic-bezier(.62, 0, .22, 1);
}

/* Haut gauche : sucre d'orge + ruban, recalé sur l'image de référence. */
.aolmes-loader-leaf-1 {
  width: 75.3254vw;
  top: -28.1619vw;
  left: -12.8914vw;
  --aolmes-leaf-rotation: 0deg;
  transition-delay: .32s;
}

/* Haut droite : boule de Noël, recalée sur l'image de référence. */
.aolmes-loader-leaf-2 {
  width: 84.5073vw;
  top: -38.7604vw;
  right: -14.9824vw;
  --aolmes-leaf-rotation: 0deg;
  transition-delay: .16s;
}

/* Bas gauche : grande étoile, recalée sur l'image de référence. */
.aolmes-loader-leaf-3 {
  width: 76.3551vw;
  top: 2.8605vw;
  left: -8.8487vw;
  --aolmes-leaf-rotation: 0deg;
  transition-delay: 0s;
}

/* Bas droite : pain d'épice, recalé sur l'image de référence. */
.aolmes-loader-leaf-4 {
  width: 75.1701vw;
  top: -5.3007vw;
  right: -16.0028vw;
  --aolmes-leaf-rotation: 0deg;
  transition-delay: .48s;
}

.aolmes-leaf-loader.is-opening .aolmes-loader-leaf-1 {
  transform: translate3d(-78vw, -54vw, 0) rotate(-8deg);
}
.aolmes-leaf-loader.is-opening .aolmes-loader-leaf-2 {
  transform: translate3d(78vw, -54vw, 0) rotate(8deg);
}
.aolmes-leaf-loader.is-opening .aolmes-loader-leaf-3 {
  transform: translate3d(-78vw, 55vw, 0) rotate(-7deg);
}
.aolmes-leaf-loader.is-opening .aolmes-loader-leaf-4 {
  transform: translate3d(78vw, 55vw, 0) rotate(7deg);
}

/* ===== Page calendrier ===== */
.aolmes-home {
  min-height: 100vh;
  min-height: 100svh;
  padding-bottom: 13.8889svh;
}

.aolmes-home-intro {
  position: relative;
  height: 16.3vw;
  max-width: 93.3333vw;
  margin: 0 auto;
}

.aolmes-corner {
  position: absolute;
  top: 0.9375vw;
  width: 5.8333vw;
  height: auto;
  z-index: 2;
  pointer-events: none;
}
.aolmes-corner-left { left: -1.7708vw; }
.aolmes-corner-right { right: -1.7708vw; transform: scaleX(-1); }

.aolmes-ball {
  position: absolute;
  top: -3.125vw;
  width: 7.6042vw;
  height: auto;
  pointer-events: none;
  z-index: 1;
}
.aolmes-ball-left { left: 15.1563vw; }
.aolmes-ball-right {
  right: 14.8958vw;
  top: -6.6146vw;
}

.aolmes-title {
  position: absolute;
  top: 4.5833vw;
  left: 50%;
  width: 47.9167vw;
  transform: translateX(-50%);
}
.aolmes-welcome {
  position: absolute;
  top: 8.8542vw;
  left: 50%;
  width: 34.375vw;
  transform: translateX(-50%);
}
.aolmes-notice-wrap {
  position: absolute;
  top: 12.2917vw;
  left: 50%;
  width: 25.5208vw;
  transform: translateX(-50%);
  z-index: 4;
}
.aolmes-notice-link { display: block; transition: transform .18s ease; }
.aolmes-notice-link:hover { transform: translateY(-2px); }
.aolmes-notice-link:focus-visible { outline: 3px solid var(--aolmes-olive); outline-offset: 4px; border-radius: 12px; }

/* SVGs intégrés directement dans le HTML. */
.aolmes-button-svg {
  display: block;
  width: 100%;
  height: auto;
}

/* Bouton Notice : comportement existant conservé. */
.aolmes-svg-invert {
  --aolmes-svg-accent: var(--aolmes-bordeaux);
  --aolmes-svg-background: var(--aolmes-cream);
}
.aolmes-svg-invert-bordeaux { --aolmes-svg-accent: var(--aolmes-bordeaux); }
.aolmes-svg-invert .aolmes-button-svg .cls-1 {
  fill: var(--aolmes-svg-accent) !important;
  transition: fill .24s ease-in-out;
}
.aolmes-svg-invert .aolmes-button-svg .cls-2 {
  fill: var(--aolmes-svg-background) !important;
  transition: fill .24s ease-in-out;
}
.aolmes-svg-invert:hover .aolmes-button-svg .cls-1,
.aolmes-svg-invert:focus-visible .aolmes-button-svg .cls-1 {
  fill: var(--aolmes-svg-background) !important;
}
.aolmes-svg-invert:hover .aolmes-button-svg .cls-2,
.aolmes-svg-invert:focus-visible .aolmes-button-svg .cls-2 {
  fill: var(--aolmes-svg-accent) !important;
}

/*
 * Boutons de la page du jour.
 * aolmes_inline_svg() renomme les classes internes des deux nouveaux SVG afin
 * qu'aucun .cls-1/.cls-2 d'un autre export Illustrator ne puisse les modifier.
 */
.aolmes-download-diy .aolmes-diy-accent {
  fill: var(--aolmes-olive) !important;
  transition: fill .24s ease-in-out;
}
.aolmes-download-trace .aolmes-trace-accent {
  fill: var(--aolmes-bordeaux) !important;
  transition: fill .24s ease-in-out;
}
.aolmes-download-diy .aolmes-diy-surface {
  fill: var(--aolmes-cream) !important;
  transition: fill .24s ease-in-out;
}
.aolmes-download-trace .aolmes-trace-surface {
  fill: var(--aolmes-cream) !important;
  stroke: var(--aolmes-bordeaux) !important;
  stroke-miterlimit: 10;
  stroke-width: 2.83px;
  transition: fill .24s ease-in-out, stroke .24s ease-in-out;
}

.aolmes-download-link.aolmes-download-diy:hover .aolmes-diy-accent,
.aolmes-download-link.aolmes-download-diy:focus-visible .aolmes-diy-accent {
  fill: var(--aolmes-cream) !important;
}
.aolmes-download-link.aolmes-download-trace:hover .aolmes-trace-accent,
.aolmes-download-link.aolmes-download-trace:focus-visible .aolmes-trace-accent {
  fill: var(--aolmes-cream) !important;
}
.aolmes-download-link.aolmes-download-diy:hover .aolmes-diy-surface,
.aolmes-download-link.aolmes-download-diy:focus-visible .aolmes-diy-surface {
  fill: var(--aolmes-olive) !important;
}
.aolmes-download-link.aolmes-download-trace:hover .aolmes-trace-surface,
.aolmes-download-link.aolmes-download-trace:focus-visible .aolmes-trace-surface {
  fill: var(--aolmes-bordeaux) !important;
  stroke: var(--aolmes-bordeaux) !important;
}

.aolmes-gingerbread {
  position: absolute;
  left: 7.3958vw;
  top: 12.2917vw;
  width: 9.8958vw;
  pointer-events: none;
}
.aolmes-horse {
  position: absolute;
  right: 15.3125vw;
  top: 9.5833vw;
  width: 11.25vw;
  transform: rotate(356deg);
  transform-origin: 50% 100%;
  pointer-events: none;
}


/* Animations décoratives de l'accueil. */
@keyframes aolmes-horse-swing {
  0%, 100% { transform: rotate(-4deg); }
  50% { transform: rotate(4deg); }
}
@keyframes aolmes-ball-bob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(0.7292vw); }
}
@keyframes aolmes-cane-sway {
  0%, 100% { transform: rotate(-3deg); }
  50% { transform: rotate(3deg); }
}
.aolmes-horse {
  animation: aolmes-horse-swing 3.2s ease-in-out infinite;
}
.aolmes-ball-left {
  animation: aolmes-ball-bob 2.7s ease-in-out infinite;
}

.aolmes-separator {
  position: relative;
  z-index: 3;
  width: 83.0729vw;
  margin: 3vw auto 0vw;
  pointer-events: none;
}

.aolmes-calendar-grid {
  width: 83.4375vw;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  column-gap: 0.7292vw;
  row-gap: 2.037svh;
  position: relative;
  z-index: 2;
}

.aolmes-day-card,
.aolmes-day-card-button {
  width: 100%;
  padding: 0;
  border: 0;
  background: transparent;
  appearance: none;
  text-decoration: none;
  cursor: pointer;
  display: block;
  position: relative;
  line-height: 0;
}
.aolmes-day-card-button[aria-disabled="true"] { cursor: pointer; }

/* Reflet glossy inspiré de l'effet shine du site Aolmes. */
@keyframes aolmes-shine {
  100% {
    opacity: 1;
    right: 110%;
  }
}
.aolmes-day-card,
.aolmes-day-card-button {
  overflow: hidden;
}
.aolmes-day-card::after,
.aolmes-day-card-button::after {
  content: "";
  z-index: 4;
  position: absolute;
  top: -30%;
  right: -100%;
  width: 50%;
  height: 200%;
  opacity: 0;
  pointer-events: none;
  transform: rotate(30deg);
  background: linear-gradient(
    to right,
    rgba(255,255,255,0.13) 0%,
    rgba(255,255,255,0.13) 77%,
    rgba(255,255,255,0.5) 92%,
    rgba(255,255,255,0) 100%
  );
}
.aolmes-day-card:hover::after,
.aolmes-day-card-button:hover::after {
  animation: aolmes-shine .8s ease-in-out;
}

.aolmes-day-art {
  position: relative;
  z-index: 1;
  width: 100%;
  height: auto;
  transition: transform .18s ease, filter .18s ease;
}
.aolmes-day-card:hover .aolmes-day-art,
.aolmes-day-card-button:hover .aolmes-day-art { transform: translateY(-3px); }

/* Étoiles : sur chaque case déverrouillée tant qu’elle n’a pas encore été ouverte dans ce navigateur. */
.aolmes-day-stars {
  position: absolute;
  inset: 0;
  z-index: 3;
  width: 100% !important;
  height: 100% !important;
  object-fit: fill;
  pointer-events: none;
  user-select: none;
  transform: none !important;
  transition: none !important;
  scale: 1.075;
  top: 0.4688vw;
  left: -0.1042vw;
}

/* Une case réellement ouverte ne doit plus afficher les étoiles. */
.aolmes-day-card.is-opened .aolmes-day-stars {
  display: none;
}

/* Ouverture visuelle d'une case avant d'entrer sur sa page. */
@keyframes aolmes-case-opening-out {
  0% { opacity: 1; transform: translateY(0) scale(1) rotate(0deg); filter: brightness(1); }
  100% { opacity: 0; transform: translateY(-3px) scale(.94) rotate(-1.2deg); filter: brightness(1.12); }
}
@keyframes aolmes-case-opening-in {
  0% { opacity: 0; transform: translateY(3px) scale(.93) rotate(1.2deg); filter: brightness(1.18); }
  65% { opacity: 1; transform: translateY(-2px) scale(1.025) rotate(-.25deg); filter: brightness(1.05); }
  100% { opacity: 1; transform: translateY(0) scale(1) rotate(0deg); filter: brightness(1); }
}
@keyframes aolmes-stars-opening-burst {
  0% { opacity: 1; scale: 1.075; }
  45% { opacity: 1; scale: 1.11; }
  100% { opacity: 0; scale: 1.18; }
}
.aolmes-day-card.is-opening {
  pointer-events: none;
}
.aolmes-day-card.is-opening-out .aolmes-day-art {
  animation: aolmes-case-opening-out .28s ease-in forwards;
}
.aolmes-day-card.is-opening-out .aolmes-day-stars {
  animation: aolmes-stars-opening-burst .28s ease-in forwards;
}
.aolmes-day-card.is-opening-in .aolmes-day-art {
  animation: aolmes-case-opening-in .42s cubic-bezier(.2,.8,.2,1) forwards;
}

.aolmes-day-card:focus-visible,
.aolmes-day-card-button:focus-visible { outline: 3px solid var(--aolmes-bordeaux); outline-offset: 3px; border-radius: 8px; }

@keyframes aolmes-locked-shake {
  0%, 100% { transform: translateX(0) rotate(0); }
  15% { transform: translateX(-7px) rotate(-1.4deg); }
  30% { transform: translateX(6px) rotate(1.2deg); }
  45% { transform: translateX(-5px) rotate(-1deg); }
  60% { transform: translateX(4px) rotate(.8deg); }
  75% { transform: translateX(-2px) rotate(-.4deg); }
}
.aolmes-day-card-button.is-shaking {
  animation: aolmes-locked-shake .48s ease-in-out;
}

.aolmes-lock-toast {
  position: fixed;
  left: 50%;
  bottom: 7.0313vw;
  transform: translate(-50%, 1.0417vw);
  z-index: 80;
  max-width: 29.1667vw;
  padding: 1.2037svh 1.0417vw 1.2963svh;
  border: 2px solid var(--aolmes-bordeaux);
  background: var(--aolmes-cream);
  color: var(--aolmes-bordeaux);
  font: 700 0.8333vw/1.25 Georgia, 'Times New Roman', serif;
  text-align: center;
  opacity: 0;
  visibility: hidden;
  transition: opacity .2s ease, transform .2s ease, visibility .2s;
  box-shadow: 0 8px 28px rgba(96, 24, 55, .15);
}
.aolmes-lock-toast.is-visible { opacity: 1; visibility: visible; transform: translate(-50%, 0); }

/* ===== Footer graphique fixe ===== */
.aolmes-graphic-footer {
  position: fixed;
  inset: auto 0 0 0;
  z-index: 40;
  height: 14.6296svh;
  pointer-events: none;
}
.aolmes-footer-wave {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: auto;
}
.aolmes-footer-gift {
  position: absolute;
  left: 50%;
  bottom: 0.3125vw;
  width: 10.9375vw;
  transform: translateX(-50%);
}
.aolmes-footer-cane {
  position: absolute;
  right: 3.2292vw;
  bottom: 0.8333vw;
  width: 5.7292vw;
  transform-origin: 50% 50%;
  animation: aolmes-cane-sway 3.6s ease-in-out infinite;
}

/* ===== Page d'un jour ===== */
html.aolmes-html-day,
html.aolmes-html-day body,
body.aolmes-body-day {
  width: 100%;
  height: 100%;
  min-height: 100%;
  overflow: hidden !important;
  overscroll-behavior: none;
}
body.aolmes-body-day .aolmes-footer-cane { display: none !important; }
body.aolmes-body-day .aolmes-site {
  height: 100vh;
  height: 100svh;
  min-height: 0;
  overflow: hidden;
}
.aolmes-day-page {
  position: relative;
  min-height: 100vh;
  min-height: 100svh;
  height: 100vh;
  height: 100svh;
  overflow: hidden;
  background: var(--aolmes-cream);
}
.aolmes-detail-frame {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  height: 100svh;
  object-fit: fill;
  z-index: 1;
  pointer-events: none;
}
.aolmes-detail-content {
  position: relative;
  z-index: 4;
  width: 57.2917vw;
  margin: 0 auto;
  padding-top: 29.4svh;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.aolmes-detail-ornament { width: 13.0208vw; }
.aolmes-detail-title { width: 38.2813vw; max-width: 76vw; margin-top: 0.9375vw; }
.aolmes-detail-subtitle { width: 28.125vw; max-width: 60vw; margin-top: 0.7407svh; }
.aolmes-downloads {
  width: 51.5625vw;
  max-width: 92vw;
  margin-top: 0.9375vw;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.7292vw;
}
.aolmes-download-link,
.aolmes-download-disabled {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 9.0741svh;
  text-decoration: none;
  background: transparent;
  border: 0;
  padding: 0;
}
.aolmes-download-link img,
.aolmes-download-link .aolmes-button-svg,
.aolmes-download-disabled .aolmes-button-svg { width: 100%; height: auto; }
.aolmes-download-link:hover { transform: translateY(-2px); }
.aolmes-download-link:focus-visible { outline: 3px solid var(--aolmes-olive); outline-offset: 4px; border-radius: 10px; }

.aolmes-download-disabled { opacity: 1; cursor: not-allowed; }
.aolmes-pdf-missing {
  margin: 1.0185svh 0 0;
  color: var(--aolmes-bordeaux-dark);
  font: 600 0.6771vw/1.3 Arial, sans-serif;
  text-align: center;
}

@media (prefers-reduced-motion: reduce) {

  .aolmes-loader-leaf {
    transition-duration: .01s !important;
    transition-delay: 0s !important;
  }

  .aolmes-horse,
  .aolmes-ball-left,
  .aolmes-footer-cane,
  .aolmes-day-card-button.is-shaking,
  .aolmes-day-card.is-opening-out .aolmes-day-art,
  .aolmes-day-card.is-opening-out .aolmes-day-stars,
  .aolmes-day-card.is-opening-in .aolmes-day-art {
    animation: none !important;
  }
  .aolmes-day-card:hover::after,
  .aolmes-day-card-button:hover::after {
    animation: none !important;
  }
}

/* ===== Responsive =====
 * Desktop et laptop : même composition que la référence 1920×1080.
 * Largeurs et espacements horizontaux en vw ; hauteurs et rythmes verticaux en svh.
 * Les propriétés de positionnement (top/right/bottom/left) utilisent du vw pour
 * conserver les mêmes coordonnées proportionnelles à la maquette 1920 px de large.
 * Le passage à une grille mobile reste réservé aux petits écrans.
 */
@media (max-width: 780px) {

  /* Loader feuillages : composition plus ample sur écran portrait. */
  .aolmes-loader-leaf-1 { width: 132vw; top: -73vw; left: -69vw; }
  .aolmes-loader-leaf-2 { width: 134vw; top: -74vw; right: -69vw; }
  .aolmes-loader-leaf-3 { width: 126vw; bottom: -49vw; left: -58vw; }
  .aolmes-loader-leaf-4 { width: 128vw; right: -59vw; bottom: -44vw; }
  .aolmes-leaf-loader.is-opening .aolmes-loader-leaf-1 { transform: translate3d(-105vw, -58vw, 0) rotate(-8deg); }
  .aolmes-leaf-loader.is-opening .aolmes-loader-leaf-2 { transform: translate3d(105vw, -58vw, 0) rotate(8deg); }
  .aolmes-leaf-loader.is-opening .aolmes-loader-leaf-3 { transform: translate3d(-105vw, 72vw, 0) rotate(-7deg); }
  .aolmes-leaf-loader.is-opening .aolmes-loader-leaf-4 { transform: translate3d(105vw, 72vw, 0) rotate(7deg); }

  .aolmes-lock-toast {
    max-width: 92vw;
    padding: 1.625svh 5.1282vw 1.75svh;
    font-size: 4.1026vw;
  }
  .aolmes-pdf-missing { font-size: 3.3333vw; }
  .aolmes-home { padding-bottom: 13.125svh; }
 .aolmes-home-intro { height: 40svh; }
  .aolmes-corner { width: 9.2308vw; top: 1.5385vw; }
  .aolmes-corner-left { left: -4.359vw; }
  .aolmes-corner-right { right: -4.359vw; }
  .aolmes-ball { width: 8.2051vw; }
  .aolmes-ball-left { left: 18%; }
  .aolmes-ball-right { right: 18%; }
  .aolmes-title { top: 11.7949vw; width: 88vw; }
  .aolmes-welcome { top: 19.8718vw; width: 78vw; }
  .aolmes-notice-wrap { top: 27.9487vw; width: 70vw; }
  .aolmes-gingerbread { width: 12.8205vw; left: 3vw; top: 27.5641vw; }
  .aolmes-horse { width: 12.1795vw; right: 3vw; top: 26.2821vw; }
  .aolmes-separator, .aolmes-calendar-grid { width: calc(100vw - 3.5897vw); }
  .aolmes-calendar-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 1.5385vw; row-gap: 1.5svh; }
  .aolmes-graphic-footer { height: 12.5svh; }
  .aolmes-footer-gift { width: 10.5128vw; }
  .aolmes-footer-cane { width: 7.4359vw; right: 2.0513vw; }

  .aolmes-detail-content { width: 86vw; padding-top: 24svh; }
  .aolmes-detail-ornament { width: 23.0769vw; }
  .aolmes-detail-title { width: 88vw; max-width: 88vw; }
  .aolmes-detail-subtitle { width: 72vw; max-width: 72vw; }
  .aolmes-downloads { grid-template-columns: 1fr; width: 78vw; margin-top: 1.75svh; column-gap: 1.2821vw; row-gap: 1.25svh; }
  .aolmes-download-link, .aolmes-download-disabled { height: 9.5svh; }
}
