/* Wunlet : design system « finition Givre », v0.1 du 12/10/2026 (D-043, D-062, logo T7-B D-071).
   Source : canevas « Wunlet, design system et prototype » (Fondations, Composants, Cartes).
   Le prisme et l'holo sont réservés aux cartes et aux moments rares. */

/* Sora (SIL Open Font License 1.1, polices/OFL-Sora.txt), hébergée chez nous : aucun appel à un service tiers. */
@font-face {
  font-family: "Sora";
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url("polices/sora-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Sora";
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url("polices/sora-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* --- Fondations ------------------------------------------------------------------------------- */
:root {
  --givre: #E9EEF3;
  --encre: #1B2433;
  --encre-survol: #26324A;
  --doux: #566377;
  --glacier: #4F9DBB;
  --lien: #2A5D8F;
  --lien-survol: #173B5E;
  --nuit: #141B27;
  --carte-sombre: #1F2A3B;
  --succes: #25664A;
  --danger: #B4342E;
  --or: #B88A2E;
  --trait: rgba(27, 36, 51, 0.12);
  --verre: rgba(255, 255, 255, 0.6);
  --liseret: rgba(255, 255, 255, 0.95);
  --ombre-verre: 0 1px 0 rgba(255, 255, 255, 0.9), 0 30px 60px -30px rgba(30, 50, 80, 0.35);
  --holo: linear-gradient(135deg, #D1FAFB 0%, #C6CCFB 14%, #F1DDEB 25%, #FCF8EE 33%, #B2D9FD 50%, #E3F2FC 60%, #BEC8FC 70%, #F5E2E3 83%, #FDF9E6 90%, #DDFBEF 100%);
  --courbe: cubic-bezier(.2, .8, .2, 1);
  --police: "Sora", system-ui, -apple-system, "Segoe UI", sans-serif;
  color-scheme: light;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  min-height: 100vh;
  font-family: var(--police);
  color: var(--encre);
  background-color: var(--givre);
  background-image:
    radial-gradient(circle at 12% 2%, rgba(140, 200, 232, 0.55), rgba(140, 200, 232, 0) 30%),
    radial-gradient(circle at 96% 18%, rgba(242, 192, 162, 0.45), rgba(242, 192, 162, 0) 26%),
    radial-gradient(circle at 4% 62%, rgba(242, 192, 162, 0.3), rgba(242, 192, 162, 0) 26%);
  background-repeat: no-repeat;
}
a { color: var(--lien); }
a:hover { color: var(--lien-survol); }
img { max-width: 100%; }
:focus-visible { outline: 2px solid var(--glacier); outline-offset: 3px; }

.w-contenu { max-width: 1200px; margin: 0 auto; padding-left: 24px; padding-right: 24px; }
.w-etiquette { font-size: 12px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--doux); }
.w-chiffre { font-variant-numeric: tabular-nums; }
.w-aide { font-size: 13px; color: var(--doux); line-height: 1.5; }
.w-erreur { font-size: 13px; color: var(--danger); line-height: 1.45; }
.w-erreur:empty { display: none; }
.w-holo { background: var(--holo); }
.visuellement-cache { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

.w-affiche { margin: 0; font-size: clamp(42px, 6vw, 76px); font-weight: 300; letter-spacing: -.03em; line-height: 1.02; text-wrap: balance; }
.w-titre1 { margin: 0; font-size: clamp(34px, 4.4vw, 52px); font-weight: 300; letter-spacing: -.02em; line-height: 1.06; }
.w-titre-section { margin: 0; font-size: clamp(32px, 4vw, 48px); font-weight: 300; letter-spacing: -.02em; line-height: 1.08; }
.w-chapeau { margin: 0; font-size: 17px; line-height: 1.55; color: var(--doux); max-width: 560px; }

/* Ouverture des inscriptions (ouverture.js, D-070) : chaque texte existe en deux versions. */
.si-ferme { display: none !important; }
.inscriptions-fermees .si-ferme { display: revert !important; }
.inscriptions-fermees .si-ferme.w-btn, .inscriptions-fermees .si-ferme.w-pastille { display: inline-flex !important; }
.inscriptions-fermees div.si-ferme.w-panneau { display: flex !important; }
.inscriptions-fermees .si-ouvert { display: none !important; }

/* --- Panneaux ------------------------------------------------------------------------------- */
.w-panneau {
  background: var(--verre);
  border: 1px solid var(--liseret);
  box-shadow: var(--ombre-verre);
  border-radius: 24px;
}

/* --- Boutons -------------------------------------------------------------------------------- */
.w-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 52px;
  padding: 0 28px;
  border-radius: 999px;
  font: 600 16px/1 var(--police);
  text-decoration: none;
  border: 0;
  cursor: pointer;
  transition: transform .12s, box-shadow .24s, background .24s;
}
.w-btn svg { width: 18px; height: 18px; flex: none; }
.w-btn-encre { background: var(--encre); color: #FFFFFF; box-shadow: 0 10px 24px -10px rgba(27, 36, 51, .55); }
.w-btn-encre:hover { background: var(--encre-survol); color: #FFFFFF; transform: translateY(-1px); }
.w-btn-verre { background: rgba(255, 255, 255, .72); color: var(--encre); border: 1px solid #FFFFFF; box-shadow: 0 1px 0 rgba(255, 255, 255, .9), 0 10px 24px -14px rgba(30, 50, 80, .4); }
.w-btn-verre:hover { background: #FFFFFF; color: var(--encre); }
.w-btn-danger { background: var(--danger); color: #FFFFFF; }
.w-btn-danger:hover { background: #9A2B26; color: #FFFFFF; }
.w-btn-lien { background: none; color: var(--lien); padding: 0 2px; min-height: 44px; text-decoration: underline; text-underline-offset: .2em; font-weight: 600; font-size: 14px; }
.w-btn-lien:hover { color: var(--lien-survol); }
.w-btn:disabled, .w-btn[aria-disabled="true"] { background: #CDD5DE; color: #4C5869; box-shadow: none; cursor: not-allowed; transform: none; }
.w-btn.w-btn-lien:disabled { background: none; }
.w-roue { width: 18px; height: 18px; border-radius: 50%; border: 2px solid rgba(255, 255, 255, .35); border-top-color: #FFFFFF; animation: w-tourne .9s linear infinite; }
@keyframes w-tourne { to { transform: rotate(360deg); } }

/* --- Champs --------------------------------------------------------------------------------- */
.w-label { font-size: 15px; font-weight: 600; }
.w-input {
  height: 54px;
  padding: 0 18px;
  border-radius: 14px;
  border: 1px solid rgba(27, 36, 51, .18);
  background: rgba(255, 255, 255, .85);
  font: 400 16px var(--police);
  color: var(--encre);
  outline: none;
  width: 100%;
}
textarea.w-input { height: 110px; padding: 14px 18px; resize: vertical; line-height: 1.5; }
.w-input::placeholder { color: #6B7789; }
.w-input:focus { border-color: var(--glacier); box-shadow: 0 0 0 4px rgba(79, 157, 187, .24); background: #FFFFFF; }
.w-input.erreur, .w-input[aria-invalid="true"] { border-color: var(--danger); box-shadow: 0 0 0 4px rgba(180, 52, 46, .12); }
.w-case { display: flex; gap: 12px; align-items: flex-start; font-size: 15px; line-height: 1.5; cursor: pointer; }
.w-case input { width: 22px; height: 22px; margin: 1px 0 0; accent-color: var(--encre); flex: none; }
.w-option {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border-radius: 12px;
  font-size: 15px;
  cursor: pointer;
  border: 0;
  background: none;
  width: 100%;
  text-align: left;
  font-family: var(--police);
  color: var(--encre);
}
.w-option:hover, .w-option.actif, .w-option[aria-selected="true"] { background: rgba(79, 157, 187, .14); }
.w-option svg { width: 18px; height: 18px; flex: none; }
.w-liste { background: #FFFFFF; border-radius: 16px; box-shadow: 0 18px 40px -18px rgba(27, 36, 51, .4); padding: 6px; display: flex; flex-direction: column; margin: 0; list-style: none; }
.w-liste[hidden] { display: none; }

/* --- Statuts et alertes --------------------------------------------------------------------- */
.w-pastille { display: inline-flex; align-items: center; gap: 8px; height: 32px; padding: 0 14px; border-radius: 999px; font-size: 14px; font-weight: 600; white-space: nowrap; align-self: flex-start; }
.w-pastille svg { width: 16px; height: 16px; }
.w-pastille.succes { background: rgba(37, 102, 74, .12); color: var(--succes); }
.w-pastille.neutre { background: rgba(27, 36, 51, .08); color: #3E4C60; }
.w-alerte { display: flex; gap: 14px; padding: 16px 18px; border-radius: 16px; font-size: 14px; line-height: 1.5; }
.w-alerte svg { width: 20px; height: 20px; flex: none; margin-top: 1px; }
.w-alerte.info { background: rgba(79, 157, 187, .14); color: #1F4B5E; }
.w-alerte.succes { background: rgba(37, 102, 74, .12); color: #1E5640; }
.w-alerte.danger { background: rgba(180, 52, 46, .10); color: #842520; }
.w-alerte[hidden] { display: none; }

/* --- En-tête et pied de page ---------------------------------------------------------------- */
.w-entete { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 24px; padding-top: 18px; padding-bottom: 18px; }
.w-entete .w-logo { display: block; }
.w-entete .w-logo img { height: 56px; display: block; }
.w-navigation { display: flex; flex-wrap: wrap; gap: 4px 28px; align-items: center; }
.w-nav { color: var(--encre); text-decoration: none; font-weight: 600; font-size: 15px; min-height: 44px; display: inline-flex; align-items: center; }
.w-nav:hover { color: var(--lien); }
.w-pied { border-top: 1px solid var(--trait); }
.w-pied > div { padding-top: 32px; padding-bottom: 48px; display: flex; flex-wrap: wrap; gap: 20px 40px; align-items: center; justify-content: space-between; font-size: 14px; color: var(--doux); }
.w-pied nav { display: flex; flex-wrap: wrap; gap: 8px 24px; }
@media (max-width: 640px) {
  .w-entete .w-logo img { height: 44px; }
  .w-navigation { gap: 0 18px; }
  .w-navigation .w-nav { font-size: 14px; }
}

/* --- Carte (composant Cartes du design system) ------------------------------------------------
   Proportions 340 × 475, coins à 7,6 %. Les tailles internes suivent la largeur de la carte (cqw). */
.c-carte {
  position: relative;
  aspect-ratio: 340 / 475;
  container-type: inline-size;
  border-radius: 7.6% / 5.5%;
  overflow: hidden;
  font-family: var(--police);
  background:
    radial-gradient(circle at 30% 28%, rgba(140, 200, 232, .95), rgba(140, 200, 232, 0) 46%),
    radial-gradient(circle at 74% 62%, rgba(242, 192, 162, .9), rgba(242, 192, 162, 0) 50%),
    radial-gradient(circle at 50% 100%, rgba(200, 255, 233, .6), rgba(200, 255, 233, 0) 45%),
    #EEF3F8;
  box-shadow: 0 1px 0 #C9D4E0, 0 2px 0 #EEF3F8, 0 3px 0 #C9D4E0, 0 24px 30px -8px rgba(30, 50, 80, .34);
}
.c-plaque { position: absolute; inset: 4%; border-radius: 5% / 3.6%; background: rgba(255, 255, 255, .4); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .85); }
.c-trame { position: absolute; inset: 0; background: linear-gradient(rgba(30, 50, 80, .07) 1px, transparent 1px) 0 0 / 4cqw 4cqw, linear-gradient(90deg, rgba(30, 50, 80, .07) 1px, transparent 1px) 0 0 / 4cqw 4cqw; }
.c-fenetre {
  position: absolute;
  left: 11%;
  right: 11%;
  top: 13%;
  height: 52%;
  border-radius: 50% 50% 3cqw 3cqw / 40% 40% 3cqw 3cqw;
  overflow: hidden;
  box-shadow: 0 2cqw 4cqw -1cqw rgba(30, 50, 80, .45), inset 0 0 0 1px rgba(255, 255, 255, .6);
  background: var(--encre);
}
.c-fenetre img { width: 100%; height: 100%; object-fit: cover; display: block; }
.c-fenetre.vide { background: linear-gradient(160deg, #C9DCEA, #E9EEF3); display: grid; place-items: center; }
.c-fenetre.vide svg { width: 30cqw; height: 30cqw; }
.c-pastille { position: absolute; left: 7%; top: 5.5%; width: 11cqw; height: 11cqw; border-radius: 50%; background: rgba(255, 255, 255, .86); display: grid; place-items: center; box-shadow: 0 .6cqw 1.8cqw rgba(0, 0, 0, .16); }
.c-pastille svg { width: 6cqw; height: 6cqw; }
.c-ex { position: absolute; right: 7%; top: 6.5%; font-size: 3.9cqw; font-weight: 700; padding: .9cqw 3cqw; border-radius: 6cqw; background: rgba(255, 255, 255, .86); color: var(--encre); }
.c-textes { position: absolute; left: 8%; right: 8%; bottom: 6%; display: flex; flex-direction: column; gap: 1.6cqw; color: var(--encre); }
.c-ligne { display: flex; justify-content: space-between; gap: 3cqw; font-size: 3.2cqw; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: #3E4C60; }
.c-nom { font-size: 7.8cqw; font-weight: 600; letter-spacing: -.02em; line-height: 1.02; overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.c-bas { display: flex; justify-content: space-between; align-items: center; gap: 3cqw; font-size: 3.6cqw; color: #3E4C60; }
.c-prisme {
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1.5px;
  background: conic-gradient(from 200deg, rgba(255, 255, 255, .95), #9AD0FF, #F3E3FF, #FFE9B8, #C8FFE9, rgba(255, 255, 255, .95));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
}
.c-balayage {
  position: absolute;
  inset: 0;
  background: linear-gradient(115deg, rgba(255, 255, 255, 0) 38%, rgba(255, 255, 255, .6) 50%, rgba(255, 255, 255, 0) 62%);
  background-size: 250% 100%;
  animation: c-balaye 4.5s ease-in-out infinite;
  mix-blend-mode: soft-light;
  pointer-events: none;
}
@keyframes c-balaye { 0%, 40% { background-position: 160% 0; } 100% { background-position: -60% 0; } }
.c-carte.edition {
  background:
    radial-gradient(circle at 26% 22%, rgba(255, 226, 170, .95), rgba(255, 226, 170, 0) 46%),
    radial-gradient(circle at 78% 68%, rgba(206, 190, 255, .9), rgba(206, 190, 255, 0) 52%),
    #F6F1EA;
}
.c-carte.edition .c-prisme { padding: 3.5px; background: conic-gradient(from 120deg, #FFE9B8, #F3E3FF, #9AD0FF, #FFD6E2, #FFE9B8); }
.c-carte.edition .c-fenetre { border-radius: 3cqw; }
.c-dos {
  position: relative;
  aspect-ratio: 340 / 475;
  container-type: inline-size;
  border-radius: 7.6% / 5.5%;
  overflow: hidden;
  background: radial-gradient(circle at 50% 42%, #2D3A52, var(--carte-sombre) 55%, #151D2B);
  box-shadow: 0 1px 0 #3A4A63, 0 24px 30px -8px rgba(30, 50, 80, .4);
}
.c-dos::before { content: ""; position: absolute; inset: 6%; border-radius: 5% / 3.6%; box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .9); }

/* Inclinaison au pointeur (inclinaison.js) : retour en 800 ms sur la courbe du design system. */
.c-inclinable { transition: transform .8s var(--courbe); transform: perspective(1100px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)); }
.c-inclinable.actif { transition: transform .12s ease-out; }

@keyframes w-flotte { 0%, 100% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-10px) rotate(-1deg); } }
.w-flotte { animation: w-flotte 7s ease-in-out infinite; }
@keyframes w-apparait { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.w-apparait { animation: w-apparait .5s var(--courbe) both; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .c-balayage, .w-flotte, .w-apparait, .w-roue { animation: none; }
  .c-inclinable { transition: none; }
}
