/* JETINVITE — « écrin » : habillage de l'invitation ouverte pour les modèles à couverture photo.
   Couleurs : variables du modèle (--fond, --texte, --doux, --accent, --surface). Fichier généré par build/gen_ecrin.py. */
body.ecrin{isolation:isolate;background:var(--fond)}
body.ecrin::before{content:"";position:fixed;inset:-60px;z-index:-2;background:var(--couv,none) center/cover no-repeat;filter:blur(46px) saturate(1.15);opacity:.32;transform:scale(1.1)}
body.ecrin::after{content:"";position:fixed;inset:0;z-index:-1;background:var(--accent);opacity:.09;-webkit-mask:var(--ecrin-motif) 0 0/var(--ecrin-taille) repeat;mask:var(--ecrin-motif) 0 0/var(--ecrin-taille) repeat}
.ecrin .inv{position:relative;isolation:isolate;max-width:640px;margin:34px auto 46px;padding-bottom:30px;overflow:clip;
  background:radial-gradient(120% 40% at 50% 0%,color-mix(in srgb,var(--accent) 10%,transparent),transparent 70%),color-mix(in srgb,var(--surface) 84%,transparent);border-radius:20px;
  box-shadow:0 40px 90px -40px rgba(0,0,0,.55),0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent)}
.ecrin .inv::after{content:"";position:absolute;inset:12px;z-index:30;pointer-events:none;border-radius:12px;
  border:1px solid color-mix(in srgb,var(--accent) 55%,transparent);box-shadow:0 0 0 4px transparent,0 0 0 5px color-mix(in srgb,var(--accent) 28%,transparent)}
.ecrin .inv::before{content:"";position:absolute;inset:5px;z-index:31;pointer-events:none;background:var(--accent);
  -webkit-mask:var(--c-hg) top left/72px no-repeat,var(--c-hd) top right/72px no-repeat,var(--c-bg) bottom left/72px no-repeat,var(--c-bd) bottom right/72px no-repeat;
          mask:var(--c-hg) top left/72px no-repeat,var(--c-hd) top right/72px no-repeat,var(--c-bg) bottom left/72px no-repeat,var(--c-bd) bottom right/72px no-repeat}
.ecrin .couv{border-radius:20px 20px 0 0}
.ecrin .nav-sections{background:color-mix(in srgb,var(--surface) 88%,transparent);border-bottom:1px solid color-mix(in srgb,var(--accent) 25%,transparent)}
.ecrin .nav-sections a{background:transparent;border-color:color-mix(in srgb,var(--accent) 45%,transparent);color:var(--texte);letter-spacing:.06em;font-size:12.5px;text-transform:uppercase}
.ecrin .nav-sections a:hover{background:var(--accent);color:var(--surface)}

/* Sections séparées par un ornement */
.ecrin .bloc{border-bottom:0;padding:34px 34px}
.ecrin .inv > .bloc ~ .bloc::before{content:"";display:block;width:min(230px,64%);height:26px;margin:-12px auto 30px;
  background:var(--accent);opacity:.85;-webkit-mask:var(--ecrin-sep) center/contain no-repeat;mask:var(--ecrin-sep) center/contain no-repeat}
.ecrin .bloc h2{font-size:clamp(26px,6.4vw,34px);line-height:1.15;color:var(--texte)}
.ecrin .bloc h2::after{content:"";display:block;width:120px;height:16px;margin:10px auto 0;background:var(--accent);
  -webkit-mask:var(--ecrin-titre) center/contain no-repeat;mask:var(--ecrin-titre) center/contain no-repeat}
.ecrin .bloc h2:not(.centre)::after{margin-left:0}
.ecrin .bloc .chapeau{font-style:italic;letter-spacing:.02em}

/* Mot d'invitation */
.ecrin .mot{font-family:var(--titre);font-size:clamp(19px,4.6vw,23px);line-height:1.6;position:relative;padding-top:34px}
.ecrin .mot::before{content:"\201C";position:absolute;top:-18px;left:50%;translate:-50% 0;font-family:Georgia,serif;font-size:76px;line-height:1;color:var(--accent);opacity:.55}

/* Cartes d'information */
.ecrin .info,.ecrin .cadeau,.ecrin .message,.ecrin .pass,.ecrin .compte div,.ecrin .avis{
  background:color-mix(in srgb,var(--surface) 82%,transparent);border:1px solid color-mix(in srgb,var(--accent) 34%,transparent);
  box-shadow:0 14px 30px -22px rgba(0,0,0,.45)}
.ecrin .info{text-align:center;padding:20px 16px}
.ecrin .info h3{color:var(--accent);text-transform:uppercase;letter-spacing:.22em;font-size:11.5px}
.ecrin .compte div{min-width:76px;padding:14px 8px;position:relative}
.ecrin .compte div::after{content:"";position:absolute;inset:4px;border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-radius:inherit;pointer-events:none}
.ecrin .compte b{color:var(--accent);font-size:32px}
.ecrin .compte span{text-transform:uppercase}

/* Programme en frise */
.ecrin .prog{max-width:460px;margin:0 auto}
.ecrin .prog li{border-bottom:0;position:relative;padding:12px 0 18px 30px}
.ecrin .prog li::before{content:"";position:absolute;left:4px;top:18px;width:11px;height:11px;transform:rotate(45deg);background:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 18%,transparent)}
.ecrin .prog li::after{content:"";position:absolute;left:9px;top:34px;bottom:-12px;width:1px;background:color-mix(in srgb,var(--accent) 45%,transparent)}
.ecrin .prog li:last-child::after{display:none}
.ecrin .prog .h{font-size:20px;min-width:70px}
.ecrin .prog .t{font-family:var(--titre);font-size:19px;font-weight:var(--titre-poids)}

/* Boutons */
.ecrin .btn{background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 88%,#fff),var(--accent) 55%,color-mix(in srgb,var(--accent) 80%,#000));
  border-color:color-mix(in srgb,var(--accent) 70%,#000);letter-spacing:.08em;text-transform:uppercase;font-size:13.5px;padding:14px 28px;
  box-shadow:0 12px 24px -14px color-mix(in srgb,var(--accent) 90%,#000)}
.ecrin .btn-ligne{background:transparent;box-shadow:none;color:var(--accent)}
.ecrin .form input,.ecrin .form select,.ecrin .form textarea,.ecrin .choix label,.ecrin .montants label{
  background:color-mix(in srgb,var(--surface) 85%,transparent);border-color:color-mix(in srgb,var(--accent) 30%,transparent)}
.ecrin .jauge i{background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 70%,#fff),var(--accent))}
.ecrin .pied-inv{letter-spacing:.08em}

/* Apparition douce des sections */
@supports (animation-timeline:view()){
  .ecrin .bloc{animation:ecrin-entre linear both;animation-timeline:view();animation-range:entry 0% entry 45%}
}
@keyframes ecrin-entre{from{opacity:0;transform:translateY(24px)}}
@media (max-width:680px){
  .ecrin .inv{margin:0;border-radius:0;box-shadow:none}
  .ecrin .couv{border-radius:0}
  .ecrin .inv::after{inset:8px;border-radius:8px}
  .ecrin .inv::before{inset:2px;-webkit-mask-size:56px;mask-size:56px}
  .ecrin .bloc{padding:30px 26px}
  .ecrin .compte{gap:7px}
  .ecrin .compte div{min-width:0;flex:1 1 0;max-width:76px;padding:12px 4px}
  .ecrin .compte b{font-size:27px}
  .ecrin .compte span{font-size:10px;letter-spacing:.08em}
}
@media (prefers-reduced-motion:reduce){.ecrin .bloc{animation:none}}
@media print{body.ecrin::before,body.ecrin::after,.ecrin .inv::before,.ecrin .inv::after{display:none}}

body.ecrin-floral{--ecrin-sep:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 26' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 13h66M148 13h66'/%3E%3Cpath d='M72 13c9 0 13-8 22-8 6 0 9 5 5 8-3 2-6-1-4-3'/%3E%3Cpath d='M148 13c-9 0-13-8-22-8-6 0-9 5-5 8 3 2 6-1 4-3'/%3E%3Cpath d='M72 13c9 0 13 8 22 8 6 0 9-5 5-8-3-2-6 1-4 3'/%3E%3Cpath d='M148 13c-9 0-13 8-22 8-6 0-9-5-5-8 3-2 6 1 4 3'/%3E%3Cpath d='M110 4l7 9-7 9-7-9z' fill='black'/%3E%3Ccircle cx='6' cy='13' r='1.6' fill='black'/%3E%3Ccircle cx='214' cy='13' r='1.6' fill='black'/%3E%3C/svg%3E");--ecrin-titre:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 16' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 8h38M78 8h38'/%3E%3Cpath d='M42 8c6 0 9-5 13-5s5 3 5 5-1 5-5 5-7-5-13-5'/%3E%3Cpath d='M78 8c-6 0-9-5-13-5'/%3E%3Cpath d='M78 8c-6 0-9 5-13 5'/%3E%3C/svg%3E");--ecrin-motif:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60' fill='none' stroke='black' stroke-width='1' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M30 24c2-4 6-4 6 0s-4 6-6 6c2 0 6 2 6 6s-4 4-6 0c-2 4-6 4-6 0s4-6 6-6c-2 0-6-2-6-6s4-4 6 0z' fill='black' stroke='none'/%3E%3C/svg%3E");--ecrin-taille:60px;--c-hg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 72' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cg %3E%3Cpath d='M4 68V26C4 13 13 4 26 4h42'/%3E%3Cpath d='M10 68V30c0-11 9-20 20-20h38'/%3E%3Cpath d='M18 40c0-12 10-22 22-22 7 0 11 5 8 10-2 3-7 2-6-2'/%3E%3Cpath d='M18 40c-5-1-8-6-5-10 3-3 7 0 5 4'/%3E%3Cpath d='M40 18c1-5 6-8 10-5 3 3 0 7-4 5'/%3E%3Ccircle cx='4' cy='68' r='2' fill='black'/%3E%3Ccircle cx='68' cy='4' r='2' fill='black'/%3E%3C/g%3E%3C/svg%3E");--c-hd:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 72' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cg transform='matrix%28-1 0 0 1 72 0%29'%3E%3Cpath d='M4 68V26C4 13 13 4 26 4h42'/%3E%3Cpath d='M10 68V30c0-11 9-20 20-20h38'/%3E%3Cpath d='M18 40c0-12 10-22 22-22 7 0 11 5 8 10-2 3-7 2-6-2'/%3E%3Cpath d='M18 40c-5-1-8-6-5-10 3-3 7 0 5 4'/%3E%3Cpath d='M40 18c1-5 6-8 10-5 3 3 0 7-4 5'/%3E%3Ccircle cx='4' cy='68' r='2' fill='black'/%3E%3Ccircle cx='68' cy='4' r='2' fill='black'/%3E%3C/g%3E%3C/svg%3E");--c-bg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 72' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cg transform='matrix%281 0 0 -1 0 72%29'%3E%3Cpath d='M4 68V26C4 13 13 4 26 4h42'/%3E%3Cpath d='M10 68V30c0-11 9-20 20-20h38'/%3E%3Cpath d='M18 40c0-12 10-22 22-22 7 0 11 5 8 10-2 3-7 2-6-2'/%3E%3Cpath d='M18 40c-5-1-8-6-5-10 3-3 7 0 5 4'/%3E%3Cpath d='M40 18c1-5 6-8 10-5 3 3 0 7-4 5'/%3E%3Ccircle cx='4' cy='68' r='2' fill='black'/%3E%3Ccircle cx='68' cy='4' r='2' fill='black'/%3E%3C/g%3E%3C/svg%3E");--c-bd:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 72' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cg transform='matrix%28-1 0 0 -1 72 72%29'%3E%3Cpath d='M4 68V26C4 13 13 4 26 4h42'/%3E%3Cpath d='M10 68V30c0-11 9-20 20-20h38'/%3E%3Cpath d='M18 40c0-12 10-22 22-22 7 0 11 5 8 10-2 3-7 2-6-2'/%3E%3Cpath d='M18 40c-5-1-8-6-5-10 3-3 7 0 5 4'/%3E%3Cpath d='M40 18c1-5 6-8 10-5 3 3 0 7-4 5'/%3E%3Ccircle cx='4' cy='68' r='2' fill='black'/%3E%3Ccircle cx='68' cy='4' r='2' fill='black'/%3E%3C/g%3E%3C/svg%3E")}
body.ecrin-deco{--ecrin-sep:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 26' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 13h70M146 13h70M24 18h50M146 18h50M24 8h50M146 8h50'/%3E%3Cpath d='M84 13l26-10 26 10-26 10z'/%3E%3Cpath d='M96 13l14-5 14 5-14 5z' fill='black'/%3E%3Cpath d='M74 6v14M146 6v14'/%3E%3C/svg%3E");--ecrin-titre:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 16' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 8h40M76 8h40M14 4h30M76 4h30M14 12h30M76 12h30'/%3E%3Cpath d='M52 8l8-6 8 6-8 6z' fill='black'/%3E%3C/svg%3E");--ecrin-motif:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='black' stroke-width='1' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M24 2l22 22-22 22L2 24z'/%3E%3Cpath d='M24 14l10 10-10 10-10-10z'/%3E%3C/svg%3E");--ecrin-taille:48px;--c-hg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 72' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cg %3E%3Cpath d='M4 68V4h64'/%3E%3Cpath d='M10 68V10h58'/%3E%3Cpath d='M16 46V16h30'/%3E%3Cpath d='M16 16l16 16'/%3E%3Cpath d='M22 34V22h12'/%3E%3Cpath d='M4 4l6 6'/%3E%3Ccircle cx='32' cy='32' r='2.4' fill='black'/%3E%3C/g%3E%3C/svg%3E");--c-hd:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 72' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cg transform='matrix%28-1 0 0 1 72 0%29'%3E%3Cpath d='M4 68V4h64'/%3E%3Cpath d='M10 68V10h58'/%3E%3Cpath d='M16 46V16h30'/%3E%3Cpath d='M16 16l16 16'/%3E%3Cpath d='M22 34V22h12'/%3E%3Cpath d='M4 4l6 6'/%3E%3Ccircle cx='32' cy='32' r='2.4' fill='black'/%3E%3C/g%3E%3C/svg%3E");--c-bg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 72' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cg transform='matrix%281 0 0 -1 0 72%29'%3E%3Cpath d='M4 68V4h64'/%3E%3Cpath d='M10 68V10h58'/%3E%3Cpath d='M16 46V16h30'/%3E%3Cpath d='M16 16l16 16'/%3E%3Cpath d='M22 34V22h12'/%3E%3Cpath d='M4 4l6 6'/%3E%3Ccircle cx='32' cy='32' r='2.4' fill='black'/%3E%3C/g%3E%3C/svg%3E");--c-bd:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 72' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cg transform='matrix%28-1 0 0 -1 72 72%29'%3E%3Cpath d='M4 68V4h64'/%3E%3Cpath d='M10 68V10h58'/%3E%3Cpath d='M16 46V16h30'/%3E%3Cpath d='M16 16l16 16'/%3E%3Cpath d='M22 34V22h12'/%3E%3Cpath d='M4 4l6 6'/%3E%3Ccircle cx='32' cy='32' r='2.4' fill='black'/%3E%3C/g%3E%3C/svg%3E")}
body.ecrin-kente{--ecrin-sep:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 26' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 3h216M2 23h216' stroke-width='2'/%3E%3Cpath d='M8 13l7-7 7 7-7 7z' fill='black'/%3E%3Cpath d='M30 13l7-7 7 7-7 7z' fill='black'/%3E%3Cpath d='M52 13l7-7 7 7-7 7z' fill='black'/%3E%3Cpath d='M74 13l7-7 7 7-7 7z' fill='black'/%3E%3Cpath d='M96 13l7-7 7 7-7 7z' fill='black'/%3E%3Cpath d='M118 13l7-7 7 7-7 7z' fill='black'/%3E%3Cpath d='M140 13l7-7 7 7-7 7z' fill='black'/%3E%3Cpath d='M162 13l7-7 7 7-7 7z' fill='black'/%3E%3Cpath d='M184 13l7-7 7 7-7 7z' fill='black'/%3E%3Cpath d='M206 13l7-7 7 7-7 7z' fill='black'/%3E%3C/svg%3E");--ecrin-titre:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 16' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 8h30M86 8h30'/%3E%3Cpath d='M40 8l5-5 5 5-5 5z' fill='black'/%3E%3Cpath d='M55 8l5-5 5 5-5 5z' fill='black'/%3E%3Cpath d='M70 8l5-5 5 5-5 5z' fill='black'/%3E%3C/svg%3E");--ecrin-motif:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40' fill='none' stroke='black' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M0 20l10-10 10 10 10-10 10 10M0 30l10-10 10 10 10-10 10 10'/%3E%3C/svg%3E");--ecrin-taille:40px;--c-hg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 72' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cg %3E%3Cpath d='M4 4h64v8H12v56H4z' fill='black' stroke='none'/%3E%3Cpath d='M18 18h24v6H24v18h-6z' fill='black' stroke='none'/%3E%3Cpath d='M30 30l8 8M38 30l-8 8'/%3E%3Cpath d='M50 18h18M18 50v18' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E");--c-hd:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 72' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cg transform='matrix%28-1 0 0 1 72 0%29'%3E%3Cpath d='M4 4h64v8H12v56H4z' fill='black' stroke='none'/%3E%3Cpath d='M18 18h24v6H24v18h-6z' fill='black' stroke='none'/%3E%3Cpath d='M30 30l8 8M38 30l-8 8'/%3E%3Cpath d='M50 18h18M18 50v18' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E");--c-bg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 72' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cg transform='matrix%281 0 0 -1 0 72%29'%3E%3Cpath d='M4 4h64v8H12v56H4z' fill='black' stroke='none'/%3E%3Cpath d='M18 18h24v6H24v18h-6z' fill='black' stroke='none'/%3E%3Cpath d='M30 30l8 8M38 30l-8 8'/%3E%3Cpath d='M50 18h18M18 50v18' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E");--c-bd:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 72' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cg transform='matrix%28-1 0 0 -1 72 72%29'%3E%3Cpath d='M4 4h64v8H12v56H4z' fill='black' stroke='none'/%3E%3Cpath d='M18 18h24v6H24v18h-6z' fill='black' stroke='none'/%3E%3Cpath d='M30 30l8 8M38 30l-8 8'/%3E%3Cpath d='M50 18h18M18 50v18' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E")}
