/* Base commune aux modeles a structure propre (billet, enveloppe, editorial). */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body.lay{margin:0;min-height:100vh;-webkit-font-smoothing:antialiased;line-height:1.5;overflow-x:hidden}
.lay img{max-width:100%;display:block}
.lay h1,.lay h2,.lay h3,.lay p,.lay ol,.lay ul,.lay dl,.lay dd,.lay figure{margin:0;padding:0}
.lay ol,.lay ul{list-style:none}
[hidden]{display:none!important}
.ic{width:1.15em;height:1.15em;flex:none;vertical-align:-.2em}
.k{font-size:12px;letter-spacing:.2em;text-transform:uppercase}
.k.c{text-align:center}
.muted{opacity:.7;font-size:14px}
.foot{text-align:center;padding:36px 20px 56px;font-size:13px}
.foot a{color:inherit}
.lay a:focus-visible,.lay button:focus-visible,.lay input:focus-visible,.lay textarea:focus-visible{outline:2px solid currentColor;outline-offset:3px}

/* apparition au defilement */
.js .reveal{opacity:0;transform:translateY(22px);transition:opacity .8s ease,transform .8s ease}
.js .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.js .reveal{opacity:1;transform:none;transition:none}}

/* porte d'ouverture */
.gate{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;transition:opacity .8s ease .1s}
.gate.is-gone{opacity:0;pointer-events:none}

/* musique */
.mus{position:fixed;z-index:60;right:14px;bottom:calc(14px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:8px;border:0;cursor:pointer;font:inherit;border-radius:999px;padding:11px}
.mus .ic{width:20px;height:20px}
.mus .mus-t,.mus .mus-eq{display:none}
.mus-eq{gap:2px;align-items:flex-end;height:14px}
.mus-eq i{display:block;width:3px;height:30%;background:currentColor;border-radius:2px}
.mus[aria-pressed=true] .mus-eq i{animation:eq 1s ease-in-out infinite}
.mus[aria-pressed=true] .mus-eq i:nth-child(2){animation-delay:.2s}
.mus[aria-pressed=true] .mus-eq i:nth-child(3){animation-delay:.4s}
.mus[aria-pressed=true] .mus-eq i:nth-child(4){animation-delay:.1s}
@keyframes eq{0%,100%{height:25%}50%{height:100%}}

/* compte a rebours : structure commune */
.cd{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;text-align:center}
.cd b{display:block;font-weight:inherit;font-variant-numeric:tabular-nums}
.cd span{display:block}

/* swatches de tenue */
.sw{display:flex;flex-wrap:wrap;gap:12px 16px}
.sw li{display:flex;align-items:center;gap:8px;font-size:14px}
.sw i{width:26px;height:26px;border-radius:50%;box-shadow:0 0 0 2px rgba(255,255,255,.55),0 0 0 3px rgba(0,0,0,.18);flex:none}

/* galerie */
.gal{display:grid;gap:12px}
.gal img{width:100%;height:100%;object-fit:cover}
.gal-1{grid-template-columns:1fr}
.gal-2,.gal-3,.gal-4{grid-template-columns:1fr 1fr}
.gal-3 figure:first-child{grid-column:1/-1}

/* formulaire de reponse */
.rf{display:grid;gap:18px}
.rf-choice{display:grid;gap:10px}
.rf-choice input,.drink input{position:absolute;opacity:0;pointer-events:none}
.rf-choice label,.drink{position:relative;cursor:pointer}
.rf-choice span{display:block;text-align:center;padding:14px 16px;border:1.5px solid currentColor;border-radius:12px;transition:background .2s,color .2s}
.rf-field{display:grid;gap:8px;border:0;padding:0;margin:0;min-width:0}
.rf-field legend,.rf-field>span{font-size:14px;padding:0}
.rf-field small{opacity:.7}
.rf-field textarea{width:100%;font:inherit;color:inherit;background:transparent;border:1.5px solid currentColor;border-radius:12px;padding:12px;resize:vertical}
.drink-opts{display:flex;flex-wrap:wrap;gap:8px}
.drink span{display:block;padding:9px 14px;border:1.5px solid currentColor;border-radius:999px;font-size:14px;transition:background .2s,color .2s}
.drink input:disabled+span{opacity:.35;cursor:not-allowed}
.rf-btn{font:inherit;cursor:pointer;border:0;padding:15px 22px;border-radius:12px;font-weight:600}
.rf-btn:disabled{opacity:.6}
.form-msg{min-height:1.4em;font-size:14px;text-align:center}
.form-msg.err{color:#ff9d92}

/* pass QR */
.pi{display:flex;gap:20px;align-items:center;justify-content:space-between}
.pi-name{font-size:22px;font-weight:600;line-height:1.2}
.pi-line{opacity:.8;margin-top:4px}
.pi-ok{margin-top:8px;font-weight:600}
.pi-qr{width:150px;flex:none;background:#fff;padding:10px;border-radius:10px;line-height:0}
.pi-qr svg,.pi-qr img,.pi-qr canvas{width:100%;height:auto;display:block}
.pi-hint{margin-top:14px;text-align:center}
.pi-cal{text-align:center;margin-top:10px}
.lnk{color:inherit;text-underline-offset:4px}
@media (max-width:420px){.pi{flex-direction:column-reverse;align-items:center;text-align:center}.pi .pi-info{text-align:center;width:100%}.pi-qr{width:180px;margin:0 auto}}
.pi-hint{margin-top:18px}
.pi-cal{margin-top:20px}

/* calendrier du mois */
.cal{max-width:340px;margin:0 auto}
.cal-m{text-align:center;margin-bottom:14px}
.cal-g{display:grid;grid-template-columns:repeat(7,1fr);gap:6px 0;text-align:center;font-size:15px}
.cal-g b{font-weight:500;opacity:.55;font-size:12px;padding-bottom:4px}
.cal-g span{display:flex;align-items:center;justify-content:center;aspect-ratio:1}
.cal-g .on em{font-style:normal;display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:50%;font-weight:700}
.pi-hint+.pi-cal,.pi-cal{margin-top:32px!important}
.pi-cal .lnk{display:inline-block;padding:4px 0}
