
:root{--cream:#fff8f2;--paper:#fff;--rose:#cf747d;--rose2:#b9606a;--dark:#2b2423;--muted:#7b6765;--line:#efd8d8;--shadow:0 22px 60px rgba(120,74,74,.14)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:linear-gradient(180deg,#fffaf7,#fff7f1);color:var(--dark);font-family:Inter,Arial,sans-serif;overflow-x:hidden}a{text-decoration:none;color:inherit}.topbar{height:66px;position:sticky;top:0;z-index:50;background:rgba(255,255,255,.82);backdrop-filter:blur(18px);box-shadow:0 8px 24px rgba(80,50,50,.06);display:flex;align-items:center;justify-content:space-between;padding:0 max(30px,8vw)}.logo img{width:74px;height:auto;display:block}.topbar nav{display:flex;gap:48px;text-transform:uppercase;font-size:12px;font-weight:900;letter-spacing:.08em}.topbar nav a{color:#594d4c}.topbar nav a:hover{color:var(--rose)}.hero-section{min-height:470px;display:grid;grid-template-columns:1fr 1.08fr;align-items:stretch;background:linear-gradient(90deg,#fff7f1 0%,#fff2e9 45%,#fff 100%);position:relative;overflow:hidden}.hero-copy{padding:58px 0 50px 10vw;z-index:2}.hero-copy h1{font-family:'Great Vibes',cursive;font-weight:400;color:#ce717a;font-size:clamp(68px,9vw,128px);line-height:.78;margin:24px 0 24px;text-shadow:0 2px 0 rgba(255,255,255,.8)}.hero-copy h1 span{font-size:.95em}.date{font-family:'Cormorant Garamond',serif;font-size:46px;margin:0;color:#3c3838}.divider,.mini-divider{text-align:center;width:280px;color:var(--rose);position:relative;margin:25px 0}.divider:before,.divider:after,.mini-divider:before,.mini-divider:after{content:"";position:absolute;top:50%;height:1px;background:#e5b4b8;width:118px}.divider:before,.mini-divider:before{left:0}.divider:after,.mini-divider:after{right:0}.tagline{font-family:'Cormorant Garamond',serif;font-size:28px;margin:0 0 0 65px}.tagline span,footer span{color:var(--rose)}.hero-photo{background:url('../img/hero.jpg') center/cover no-repeat;min-height:470px;filter:saturate(.96) brightness(1.04);mask-image:linear-gradient(90deg,transparent 0%,#000 23%)}.countdown-card{width:min(990px,84%);margin:-42px auto 62px;position:relative;z-index:5;background:rgba(255,255,255,.9);border:1px solid rgba(221,176,176,.55);border-radius:23px;box-shadow:var(--shadow);display:grid;grid-template-columns:110px repeat(4,1fr) 110px;align-items:center;text-align:center;overflow:hidden}.countdown-card div{padding:24px 12px;border-left:1px solid #f0dddd}.countdown-card strong{display:block;font-size:39px;color:#cc747d;font-weight:900}.countdown-card small{text-transform:uppercase;font-size:12px;font-weight:900;letter-spacing:.08em;color:#6f6261}.leaf{font-size:42px;color:#efd5d5;opacity:.8}.venue-section{width:min(1060px,88%);margin:0 auto 42px;display:grid;grid-template-columns:300px 1fr;gap:46px;align-items:center}.venue-text{padding-top:20px}.eyebrow,.section-heading span{text-transform:uppercase;color:#d0747d;font-weight:900;letter-spacing:.12em;font-size:14px}.venue-text h2{font-family:'Cormorant Garamond',serif;font-size:42px;line-height:1.05;margin:24px 0;color:#2f2928}.line{font-family:'Cormorant Garamond',serif;font-size:20px;margin:16px 0;color:#453d3c}.mini-divider{width:260px;margin:34px 0}.mini-divider:before,.mini-divider:after{width:105px}.quote{font-family:'Cormorant Garamond',serif;font-size:22px;font-style:italic;line-height:1.35;color:#4d4443}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:14px 28px;border-radius:12px;background:linear-gradient(135deg,#d0747d,#be626c);color:#fff!important;text-transform:uppercase;font-weight:900;font-size:12px;letter-spacing:.08em;border:0;box-shadow:0 14px 28px rgba(194,92,102,.25);cursor:pointer;transition:.25s}.btn:hover{transform:translateY(-2px);box-shadow:0 18px 38px rgba(194,92,102,.33)}.photo-grid{display:grid;grid-template-columns:1.2fr .8fr .55fr;grid-template-rows:1fr 1fr;gap:10px}.photo-grid img{width:100%;height:100%;object-fit:cover;border-radius:5px;box-shadow:0 10px 24px rgba(60,38,38,.08)}.photo-grid .big{grid-row:1/3;grid-column:1/2}.church img:nth-child(2){grid-column:2/4}.program-section{margin:44px 0 70px;padding:38px 0 28px;border-top:1px solid #f1dddd;border-bottom:1px solid #f1dddd;background:rgba(255,255,255,.45)}.section-heading{text-align:center;margin-bottom:38px}.section-heading div{color:var(--rose);font-size:18px}.timeline-row{width:min(1020px,88%);margin:auto;display:grid;grid-template-columns:repeat(5,1fr);gap:18px;position:relative}.timeline-row:before{content:"";position:absolute;left:9%;right:9%;top:68px;height:2px;background:#ddb1b5}.step{text-align:center;position:relative;z-index:2}.step i{display:grid;place-items:center;height:58px;color:var(--rose);font-size:42px;font-style:normal;background:#fff8f2;margin:auto auto 18px;width:80px}.step:after{content:"";width:9px;height:9px;background:#cd747d;border-radius:50%;position:absolute;top:64px;left:50%;transform:translateX(-50%)}.step b{display:block;font-family:'Cormorant Garamond',serif;font-size:22px;margin-bottom:8px}.step strong{text-transform:uppercase;font-size:13px;display:block}.step p{font-family:'Cormorant Garamond',serif;font-size:17px;margin:5px 0 0;line-height:1.25}.reception{grid-template-columns:300px 1fr;margin-bottom:62px}.villa{grid-template-columns:1.4fr .95fr;grid-template-rows:1fr 1fr}.villa .big{grid-row:1/3;grid-column:1/2}.rsvp-cta{width:min(990px,84%);margin:0 auto 34px}.rsvp-box{border-radius:25px;background:rgba(255,255,255,.86);box-shadow:var(--shadow);border:1px solid #efdada;display:grid;grid-template-columns:170px 1fr 120px;gap:20px;align-items:center;text-align:center;padding:32px 42px}.rsvp-logo{width:100px;margin:auto}.rsvp-box p{font-family:'Cormorant Garamond',serif;font-size:26px;line-height:1.18;margin:0}.rsvp-box h2{font-family:'Cormorant Garamond',serif;color:#ce717a;font-size:34px;margin:12px 0 18px}.hearts{font-size:40px;color:#e5a3aa;line-height:.8}.rsvp-form-section{width:min(820px,90%);margin:30px auto 70px;display:none}.rsvp-form-section.show{display:block}.rsvp-form{background:#fff;border:1px solid #efdada;box-shadow:var(--shadow);border-radius:25px;padding:35px}.rsvp-form h2{font-family:'Cormorant Garamond',serif;font-size:42px;text-align:center;color:#2f2928;margin:0 0 10px}.rsvp-form>p{text-align:center;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid label{font-size:13px;font-weight:800;color:#685756;display:flex;flex-direction:column;gap:8px}.presence-only{display:contents}.presence-only.hidden{display:none}input,select,textarea{border:1px solid #ecd5d5;border-radius:14px;padding:13px 14px;font:inherit;background:#fffaf7;color:#2d2424}textarea{min-height:92px;resize:vertical}.wide{grid-column:1/-1}.check{flex-direction:row!important;align-items:center;font-weight:600!important}.check input{width:auto}.rsvp-form .btn{margin:22px auto 0;display:flex}footer{text-align:center;font-family:'Cormorant Garamond',serif;font-style:italic;padding:36px 20px;color:#4d4443;font-size:20px;position:relative}.intro{position:fixed;inset:0;z-index:100;background:rgba(255,248,242,.96);display:grid;place-items:center;padding:20px;transition:.45s}.intro.hide{opacity:0;visibility:hidden}.intro-card{width:min(650px,94vw);background:#fff;border:1px solid #efdada;border-radius:28px;box-shadow:var(--shadow);text-align:center;padding:20px 20px 28px}.intro-card img{width:100%;border-radius:20px;display:block}.intro-card h2{font-family:'Cormorant Garamond',serif;font-size:38px;color:#2f2928;margin:18px 0 6px}.intro-card p{color:var(--muted);margin:0 0 15px}.reveal{opacity:0;transform:translateY(18px);transition:.7s ease}.reveal.visible{opacity:1;transform:none}.thanks-page{min-height:100vh;display:grid;place-items:center;padding:20px}.thanks-card{width:min(760px,94%);text-align:center;background:#fff;border-radius:28px;border:1px solid #efdada;box-shadow:var(--shadow);padding:42px 28px}.thanks-logo{width:110px}.thanks-card h1{font-family:'Cormorant Garamond',serif;font-size:clamp(42px,7vw,72px);line-height:.95;color:#ce717a;margin:18px 0}.thanks-card p{font-size:19px;line-height:1.6;color:#5d4e4d;max-width:620px;margin:0 auto 22px}@media(max-width:860px){.topbar{padding:0 18px}.topbar nav{gap:13px;font-size:10px;overflow-x:auto}.hero-section{grid-template-columns:1fr}.hero-photo{min-height:290px;mask-image:linear-gradient(180deg,#000,transparent 100%);order:-1}.hero-copy{padding:35px 28px;text-align:center}.hero-copy h1{font-size:76px}.date{font-size:34px}.divider{margin:18px auto}.tagline{margin-left:0}.countdown-card{grid-template-columns:repeat(4,1fr);width:92%;margin-top:-24px}.countdown-card .leaf{display:none}.countdown-card div{padding:16px 6px}.countdown-card strong{font-size:28px}.venue-section,.reception{grid-template-columns:1fr;width:90%;gap:24px}.venue-text{text-align:center}.mini-divider{margin:25px auto}.photo-grid,.villa{grid-template-columns:1fr 1fr}.photo-grid .big,.villa .big{grid-column:1/3;grid-row:auto}.program-section{overflow:hidden}.timeline-row{grid-template-columns:1fr;gap:24px}.timeline-row:before{display:none}.step:after{display:none}.rsvp-box{grid-template-columns:1fr;padding:30px 20px}.hearts{display:none}.form-grid{grid-template-columns:1fr}}

/* ============================================================
   VARIANTE NATALIZIA SOFT - 24 DICEMBRE
   Palette più calda, dettagli oro/verde e animazioni leggere.
   ============================================================ */
:root{
  --cream:#fff7ee;
  --paper:#fffdf8;
  --rose:#b20f2c;
  --rose2:#8d0b20;
  --dark:#251b18;
  --muted:#74635a;
  --line:#ead7c3;
  --gold:#c99a45;
  --green:#1d5b45;
  --green2:#0f3c2f;
  --shadow:0 24px 70px rgba(79,34,24,.16);
}
body{
  background:
    radial-gradient(circle at 12% 8%, rgba(201,154,69,.18), transparent 28%),
    radial-gradient(circle at 84% 14%, rgba(29,91,69,.13), transparent 30%),
    linear-gradient(180deg,#fff8f0 0%,#fff2e8 42%,#fffaf5 100%);
}
body:before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:1;
  opacity:.45;
  background-image:
    radial-gradient(circle, rgba(255,255,255,.95) 0 1.4px, transparent 1.9px),
    radial-gradient(circle, rgba(255,255,255,.8) 0 1px, transparent 1.7px);
  background-size:88px 88px,132px 132px;
  animation:softSnowBg 18s linear infinite;
}
@keyframes softSnowBg{to{background-position:0 220px,0 320px}}
.topbar{
  background:rgba(255,252,246,.86);
  border-bottom:1px solid rgba(201,154,69,.22);
}
.logo img{filter:drop-shadow(0 8px 16px rgba(141,11,32,.12))}
.topbar nav a{position:relative;color:#463a35}.topbar nav a:after{content:"";position:absolute;left:0;right:0;bottom:-8px;height:2px;background:linear-gradient(90deg,var(--green),var(--gold),var(--rose));border-radius:999px;transform:scaleX(0);transition:.25s}.topbar nav a:hover:after{transform:scaleX(1)}
.hero-section{
  background:
    radial-gradient(circle at 12% 25%, rgba(201,154,69,.22), transparent 26%),
    linear-gradient(90deg,#fff4e8 0%,#fff8ef 42%,#fff 100%);
}
.hero-section:before,.hero-section:after{
  content:"✦";
  position:absolute;
  color:rgba(201,154,69,.55);
  font-size:42px;
  animation:twinkle 2.8s ease-in-out infinite;
  z-index:2;
}
.hero-section:before{left:7vw;top:34px}.hero-section:after{right:8vw;bottom:42px;animation-delay:1.2s}
@keyframes twinkle{0%,100%{opacity:.35;transform:scale(.9) rotate(0deg)}50%{opacity:1;transform:scale(1.12) rotate(12deg)}}
.hero-copy h1{
  color:#a80e28;
  text-shadow:0 2px 0 rgba(255,255,255,.92),0 12px 28px rgba(168,14,40,.13);
  animation:titleFloat 5.5s ease-in-out infinite;
}
@keyframes titleFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.date{color:#173d32}.divider,.mini-divider,.section-heading div{color:var(--gold)}.divider:before,.divider:after,.mini-divider:before,.mini-divider:after{background:linear-gradient(90deg,transparent,var(--gold),transparent)}
.tagline span,footer span,.section-heading span,.eyebrow{color:var(--rose)}
.countdown-card,.rsvp-box,.rsvp-form,.thanks-card{
  background:rgba(255,253,248,.92);
  border-color:rgba(201,154,69,.34);
  box-shadow:0 28px 80px rgba(91,43,30,.15);
}
.countdown-card strong,.rsvp-box h2,.thanks-card h1{color:#a80e28}.leaf{color:rgba(29,91,69,.26)}
.venue-text h2{color:#173d32}.quote{color:#4b3a31}.line strong{color:#173d32}
.btn{
  background:linear-gradient(135deg,#8e0d22 0%,#b20f2c 48%,#c99a45 100%);
  box-shadow:0 16px 34px rgba(142,13,34,.24);
  position:relative;
  overflow:hidden;
}
.btn:before{content:"";position:absolute;top:-120%;left:-40%;width:36%;height:320%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);transform:rotate(24deg);transition:.55s}.btn:hover:before{left:120%}.btn:hover{box-shadow:0 20px 44px rgba(142,13,34,.3)}
.photo-grid img{border:1px solid rgba(255,255,255,.8);box-shadow:0 14px 30px rgba(43,28,22,.12);transition:transform .45s ease,box-shadow .45s ease,filter .45s ease}.photo-grid img:hover{transform:translateY(-4px) scale(1.015);box-shadow:0 20px 42px rgba(43,28,22,.17);filter:saturate(1.05) brightness(1.03)}
.program-section{background:linear-gradient(180deg,rgba(255,255,255,.52),rgba(255,246,234,.72));border-color:rgba(201,154,69,.24)}.timeline-row:before{background:linear-gradient(90deg,transparent,var(--gold),var(--green),var(--gold),transparent)}.step i{color:var(--green);background:#fff7ee;text-shadow:0 8px 20px rgba(29,91,69,.15);animation:iconPulse 3.6s ease-in-out infinite}.step:nth-child(2) i{animation-delay:.25s}.step:nth-child(3) i{animation-delay:.5s}.step:nth-child(4) i{animation-delay:.75s}.step:nth-child(5) i{animation-delay:1s}@keyframes iconPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}.step:after{background:var(--gold);box-shadow:0 0 0 6px rgba(201,154,69,.16)}
.rsvp-box{position:relative;overflow:hidden}.rsvp-box:before{content:"";position:absolute;inset:-2px;background:linear-gradient(120deg,transparent,rgba(201,154,69,.18),transparent);animation:cardGlow 6s linear infinite;pointer-events:none}@keyframes cardGlow{0%{transform:translateX(-70%)}100%{transform:translateX(70%)}}.rsvp-logo,.thanks-logo{animation:logoBreath 4.2s ease-in-out infinite}@keyframes logoBreath{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}
input,select,textarea{background:#fffaf3;border-color:#e5cfb9}.rsvp-form-section.show{animation:formIn .5s ease both}@keyframes formIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.reveal{transform:translateY(24px) scale(.985);transition:opacity .75s ease,transform .75s ease}.reveal.visible{transform:none}
.snowflake{position:fixed;top:-12px;z-index:60;pointer-events:none;color:rgba(255,255,255,.92);text-shadow:0 0 10px rgba(201,154,69,.22);animation:snowFall linear forwards}.snowflake.small{font-size:10px}.snowflake.medium{font-size:14px}.snowflake.large{font-size:18px}@keyframes snowFall{0%{transform:translate3d(var(--x-start),-20px,0) rotate(0deg);opacity:0}8%{opacity:.95}100%{transform:translate3d(var(--x-end),105vh,0) rotate(360deg);opacity:.15}}
@media(max-width:860px){body:before{opacity:.33;background-size:70px 70px,110px 110px}.hero-section:before,.hero-section:after{font-size:28px}.topbar nav a:after{bottom:-5px}}

/* ============================================================
   OTTIMIZZAZIONE MOBILE - 07/05/2026
   Migliora leggibilità, spaziature, menu e RSVP su smartphone.
   ============================================================ */
@media (max-width: 700px){
  html{scroll-padding-top:74px}
  body{font-size:16px;background:#fff7ee}
  body:before{opacity:.24;animation-duration:26s}

  .topbar{
    height:auto;
    min-height:64px;
    padding:9px 12px 8px;
    align-items:center;
    gap:8px;
    position:sticky;
  }
  .logo{flex:0 0 auto;display:flex;align-items:center}
  .logo img{width:50px}
  .topbar nav{
    flex:1;
    display:flex;
    gap:8px;
    overflow-x:auto;
    white-space:nowrap;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding:5px 2px 7px;
    scroll-snap-type:x proximity;
  }
  .topbar nav::-webkit-scrollbar{display:none}
  .topbar nav a{
    flex:0 0 auto;
    scroll-snap-align:start;
    font-size:10px;
    line-height:1;
    letter-spacing:.055em;
    padding:9px 10px;
    border-radius:999px;
    background:rgba(255,255,255,.62);
    border:1px solid rgba(201,154,69,.24);
    box-shadow:0 6px 16px rgba(70,38,28,.06);
    color:#3f342f;
  }
  .topbar nav a:after{display:none}
  .topbar nav a[href="#rsvp"]{
    color:#fff!important;
    background:linear-gradient(135deg,#8e0d22,#b20f2c,#c99a45);
    border-color:rgba(255,255,255,.4);
  }

  .hero-section{
    display:flex;
    flex-direction:column;
    min-height:0;
    background:linear-gradient(180deg,#fffaf3 0%,#fff1e4 100%);
  }
  .hero-photo{
    order:0;
    min-height:0;
    height:54vh;
    max-height:430px;
    background-position:center top;
    border-bottom-left-radius:28px;
    border-bottom-right-radius:28px;
    box-shadow:0 18px 40px rgba(65,33,24,.13);
    mask-image:linear-gradient(180deg,#000 0%,#000 76%,transparent 100%);
  }
  .hero-copy{
    padding:24px 18px 30px;
    text-align:center;
    margin-top:-28px;
    position:relative;
  }
  .hero-copy:before{
    content:"";
    position:absolute;
    inset:0 14px auto;
    height:100%;
    background:rgba(255,253,248,.76);
    border:1px solid rgba(201,154,69,.22);
    border-radius:26px;
    box-shadow:0 18px 44px rgba(95,47,30,.1);
    z-index:-1;
  }
  .hero-copy h1{
    font-size:clamp(58px,18vw,82px);
    line-height:.82;
    margin:18px 0 14px;
    animation:none;
  }
  .date{font-size:30px;line-height:1.05;margin-top:4px}
  .divider{width:210px;margin:15px auto 12px}
  .divider:before,.divider:after{width:82px}
  .tagline{font-size:24px;line-height:1.15;margin:0}

  .countdown-card{
    width:calc(100% - 24px);
    margin:18px auto 42px;
    grid-template-columns:repeat(2,1fr);
    border-radius:22px;
    overflow:hidden;
  }
  .countdown-card div{
    padding:15px 8px;
    border-left:0;
    border-top:1px solid rgba(234,215,195,.65);
  }
  .countdown-card div:nth-of-type(1),.countdown-card div:nth-of-type(2){border-top:0}
  .countdown-card div:nth-of-type(even){border-left:1px solid rgba(234,215,195,.65)}
  .countdown-card strong{font-size:30px;line-height:1}
  .countdown-card small{font-size:10px;letter-spacing:.09em}

  .venue-section,.venue-section.reception{
    width:calc(100% - 28px);
    grid-template-columns:1fr;
    gap:18px;
    margin:0 auto 44px;
  }
  .venue-text{
    padding-top:0;
    text-align:center;
  }
  .eyebrow,.section-heading span{font-size:12px;letter-spacing:.14em}
  .venue-text h2{
    font-size:clamp(34px,10vw,44px);
    line-height:1;
    margin:15px 0 18px;
  }
  .line{font-size:18px;line-height:1.32;margin:10px 0;word-break:normal}
  .quote{font-size:20px;line-height:1.32;margin:12px auto 18px;max-width:330px}
  .mini-divider{width:210px;margin:20px auto 16px}.mini-divider:before,.mini-divider:after{width:82px}
  .btn{
    width:100%;
    max-width:310px;
    min-height:48px;
    padding:14px 18px;
    border-radius:15px;
    font-size:12px;
    touch-action:manipulation;
  }

  .photo-grid,.photo-grid.church,.photo-grid.villa{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px;
  }
  .photo-grid img{
    border-radius:14px;
    height:140px;
    min-height:140px;
    box-shadow:0 12px 26px rgba(43,28,22,.12);
  }
  .photo-grid .big,.villa .big{
    grid-column:1/-1;
    height:235px;
    min-height:235px;
  }

  .program-section{
    margin:16px 0 48px;
    padding:34px 0;
    border-radius:28px;
  }
  .section-heading{margin-bottom:26px}
  .timeline-row{
    width:calc(100% - 28px);
    display:grid;
    grid-template-columns:1fr;
    gap:14px;
  }
  .step{
    display:grid;
    grid-template-columns:60px 76px 1fr;
    grid-template-areas:"icon time text";
    align-items:center;
    text-align:left;
    gap:10px;
    background:rgba(255,253,248,.86);
    border:1px solid rgba(201,154,69,.24);
    border-radius:18px;
    padding:12px 12px;
    box-shadow:0 10px 24px rgba(80,43,32,.08);
  }
  .step i{grid-area:icon;width:52px;height:52px;margin:0;font-size:30px;border-radius:16px;background:#fff3e6;animation:none}
  .step b{grid-area:time;font-size:24px;margin:0;color:#8e0d22;line-height:1}
  .step strong{grid-area:text;font-size:12px;line-height:1.1;margin-bottom:3px;color:#173d32}
  .step p{grid-area:text;font-size:16px;margin:19px 0 0;line-height:1.18;color:#5d4e4d}

  .rsvp-cta{width:calc(100% - 28px);margin:0 auto 28px}
  .rsvp-box{
    grid-template-columns:1fr;
    gap:12px;
    padding:24px 18px;
    border-radius:24px;
  }
  .rsvp-logo{width:78px}
  .rsvp-box p{font-size:22px;line-height:1.15}
  .rsvp-box h2{font-size:30px;line-height:1;margin:12px 0 16px}

  .rsvp-form-section{width:calc(100% - 22px);margin:22px auto 52px}
  .rsvp-form{padding:24px 15px;border-radius:24px}
  .rsvp-form h2{font-size:36px;line-height:1;margin-bottom:8px}
  .rsvp-form>p{font-size:15px;line-height:1.35;margin:0 auto 18px;max-width:320px}
  .form-grid{gap:12px}
  .form-grid label{font-size:13px;gap:7px}
  input,select,textarea{width:100%;font-size:16px;padding:13px 13px;border-radius:13px}
  textarea{min-height:88px}
  .check{align-items:flex-start!important;line-height:1.35}.check input{margin-top:2px;width:18px;height:18px;flex:0 0 auto}
  .rsvp-form .btn{margin-top:18px}
  footer{font-size:19px;line-height:1.35;padding:28px 18px 36px}
  .snowflake{z-index:4;opacity:.65!important}
}

@media (max-width: 390px){
  .topbar{padding-left:8px;padding-right:8px}.logo img{width:45px}.topbar nav a{font-size:9px;padding:8px 8px}
  .hero-photo{height:50vh}.hero-copy h1{font-size:56px}.date{font-size:27px}.tagline{font-size:22px}
  .photo-grid img{height:124px;min-height:124px}.photo-grid .big,.villa .big{height:208px;min-height:208px}
  .step{grid-template-columns:52px 66px 1fr;padding:10px}.step i{width:46px;height:46px;font-size:27px}.step b{font-size:22px}.step p{font-size:15px}
}

@media (prefers-reduced-motion: reduce){
  *,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}
}

/* ============================================================
   MENU + IMMAGINI MOBILE - 07/05/2026
   Menu a tendina più leggibile e foto chiesa/ristorante senza tagli eccessivi.
   ============================================================ */
.menu-toggle{display:none}
@media (max-width:700px){
  .topbar{
    min-height:66px;
    padding:8px 14px;
    justify-content:space-between;
    border-bottom:1px solid rgba(201,154,69,.22);
    overflow:visible;
  }
  .logo img{width:54px}
  .menu-toggle{
    display:inline-flex;
    width:46px;
    height:42px;
    border:1px solid rgba(201,154,69,.32);
    border-radius:14px;
    background:rgba(255,253,248,.92);
    box-shadow:0 8px 20px rgba(70,38,28,.08);
    align-items:center;
    justify-content:center;
    flex-direction:column;
    gap:5px;
    padding:0;
    cursor:pointer;
  }
  .menu-toggle span{
    width:20px;
    height:2px;
    border-radius:999px;
    background:#8e0d22;
    transition:transform .25s ease,opacity .25s ease;
  }
  .topbar.menu-open .menu-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .topbar.menu-open .menu-toggle span:nth-child(2){opacity:0}
  .topbar.menu-open .menu-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

  .topbar nav{
    position:absolute;
    left:12px;
    right:12px;
    top:calc(100% + 8px);
    display:grid;
    grid-template-columns:1fr;
    gap:8px;
    max-height:0;
    overflow:hidden;
    padding:0;
    opacity:0;
    pointer-events:none;
    transform:translateY(-8px);
    transition:max-height .28s ease,opacity .2s ease,transform .25s ease,padding .25s ease;
    background:rgba(255,250,243,.97);
    border:1px solid rgba(201,154,69,.28);
    border-radius:22px;
    box-shadow:0 22px 52px rgba(55,24,18,.18);
    backdrop-filter:blur(18px);
  }
  .topbar.menu-open nav{
    max-height:360px;
    opacity:1;
    pointer-events:auto;
    transform:none;
    padding:12px;
  }
  .topbar nav a{
    width:100%;
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:44px;
    font-size:12px;
    letter-spacing:.075em;
    padding:13px 14px;
    border-radius:14px;
    background:#fff;
    border:1px solid rgba(201,154,69,.18);
    color:#3f342f;
    box-shadow:none;
  }
  .topbar nav a[href="#rsvp"]{
    min-height:48px;
    font-size:13px;
    background:linear-gradient(135deg,#8e0d22,#b20f2c,#c99a45);
    color:#fff!important;
  }

  .photo-grid,.photo-grid.church,.photo-grid.villa{
    grid-template-columns:1fr;
    gap:12px;
  }
  .photo-grid img,
  .photo-grid .big,
  .villa .big{
    grid-column:auto;
    grid-row:auto;
    width:100%;
    height:auto;
    min-height:0;
    aspect-ratio:auto;
    object-fit:contain;
    border-radius:18px;
    background:#fffaf3;
    padding:4px;
  }
  .photo-grid img:not(.big){
    max-height:none;
  }
  .church img:nth-child(2){grid-column:auto}
  .photo-grid.church img,
  .photo-grid.villa img{
    box-shadow:0 14px 30px rgba(43,28,22,.13);
  }
}

@media (max-width:390px){
  .topbar{padding-left:12px;padding-right:12px}
  .logo img{width:50px}
  .topbar nav a{font-size:11px;padding:12px 12px}
  .photo-grid img,
  .photo-grid .big,
  .villa .big{height:auto;min-height:0}
}

/* ============================================================
   FIX DEFINITIVO MOBILE - 07/05/2026
   Menu sempre visibile + programma senza sovrapposizioni + wow mobile.
   Solo smartphone: non altera la versione desktop.
   ============================================================ */
@media (max-width:700px){
  html{scroll-padding-top:126px}
  .topbar{
    display:flex!important;
    flex-wrap:wrap!important;
    align-items:center!important;
    justify-content:center!important;
    gap:8px!important;
    min-height:104px!important;
    padding:8px 10px 10px!important;
    background:linear-gradient(180deg,rgba(255,250,243,.97),rgba(255,245,232,.92))!important;
    border-bottom:1px solid rgba(201,154,69,.28)!important;
    box-shadow:0 14px 38px rgba(69,32,22,.12)!important;
    overflow:visible!important;
  }
  .logo{
    width:100%!important;
    display:flex!important;
    justify-content:center!important;
    align-items:center!important;
    margin:0!important;
  }
  .logo img{
    width:48px!important;
    filter:drop-shadow(0 8px 16px rgba(142,13,34,.18));
  }
  .menu-toggle{display:none!important}
  .topbar nav,
  .topbar.menu-open nav{
    position:static!important;
    left:auto!important;right:auto!important;top:auto!important;
    width:100%!important;
    max-height:none!important;
    opacity:1!important;
    pointer-events:auto!important;
    transform:none!important;
    display:flex!important;
    flex-direction:row!important;
    grid-template-columns:none!important;
    gap:7px!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    white-space:nowrap!important;
    -webkit-overflow-scrolling:touch!important;
    scrollbar-width:none!important;
    padding:2px 2px 4px!important;
    background:transparent!important;
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
    backdrop-filter:none!important;
  }
  .topbar nav::-webkit-scrollbar{display:none!important}
  .topbar nav a{
    flex:0 0 auto!important;
    width:auto!important;
    min-width:max-content!important;
    min-height:38px!important;
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    padding:10px 12px!important;
    border-radius:999px!important;
    font-size:10px!important;
    line-height:1!important;
    letter-spacing:.055em!important;
    color:#3a302d!important;
    background:rgba(255,255,255,.86)!important;
    border:1px solid rgba(201,154,69,.26)!important;
    box-shadow:0 8px 18px rgba(72,34,25,.08)!important;
  }
  .topbar nav a[href="#rsvp"]{
    color:#fff!important;
    background:linear-gradient(135deg,#7f0b1e,#b20f2c 55%,#c99a45)!important;
    border-color:rgba(255,255,255,.48)!important;
    box-shadow:0 10px 22px rgba(142,13,34,.2)!important;
  }

  .program-section{
    position:relative!important;
    overflow:hidden!important;
    margin:20px 0 48px!important;
    padding:40px 0 36px!important;
    background:
      radial-gradient(circle at 15% 8%,rgba(255,255,255,.95),transparent 26%),
      radial-gradient(circle at 90% 12%,rgba(201,154,69,.18),transparent 28%),
      linear-gradient(180deg,#fffaf3,#fff1e3)!important;
    border-top:1px solid rgba(201,154,69,.25)!important;
    border-bottom:1px solid rgba(201,154,69,.25)!important;
  }
  .program-section:before{
    content:"✦";
    position:absolute;
    left:18px;top:18px;
    color:rgba(201,154,69,.42);
    font-size:28px;
    animation:mobileSpark 3.2s ease-in-out infinite;
  }
  .program-section:after{
    content:"❄";
    position:absolute;
    right:20px;bottom:18px;
    color:rgba(142,13,34,.2);
    font-size:34px;
    animation:mobileSpark 4s ease-in-out infinite reverse;
  }
  @keyframes mobileSpark{0%,100%{transform:scale(1) rotate(0deg);opacity:.55}50%{transform:scale(1.22) rotate(12deg);opacity:1}}
  .section-heading{margin-bottom:24px!important;position:relative;z-index:1}
  .section-heading span{font-size:12px!important;color:#8e0d22!important}
  .section-heading div{color:#c99a45!important}
  .timeline-row{
    width:calc(100% - 26px)!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:13px!important;
    position:relative!important;
    z-index:1!important;
  }
  .timeline-row:before{
    content:""!important;
    display:block!important;
    position:absolute!important;
    left:25px!important;
    right:auto!important;
    top:22px!important;
    bottom:22px!important;
    width:2px!important;
    height:auto!important;
    background:linear-gradient(180deg,transparent,#c99a45,#8e0d22,#c99a45,transparent)!important;
    opacity:.42!important;
  }
  .step{
    display:grid!important;
    grid-template-columns:54px 1fr!important;
    grid-template-areas:
      "icon time"
      "icon title"
      "icon desc"!important;
    column-gap:13px!important;
    row-gap:2px!important;
    align-items:center!important;
    text-align:left!important;
    min-height:92px!important;
    padding:14px 14px 14px 12px!important;
    background:rgba(255,255,255,.88)!important;
    border:1px solid rgba(201,154,69,.28)!important;
    border-radius:22px!important;
    box-shadow:0 16px 32px rgba(70,35,24,.10)!important;
    backdrop-filter:blur(10px)!important;
    overflow:hidden!important;
  }
  .step:before{
    content:"";
    position:absolute;
    inset:0 auto 0 0;
    width:5px;
    background:linear-gradient(180deg,#8e0d22,#c99a45);
    opacity:.9;
  }
  .step:after{
    display:none!important;
  }
  .step i{
    grid-area:icon!important;
    width:52px!important;
    height:52px!important;
    margin:0!important;
    border-radius:18px!important;
    display:grid!important;
    place-items:center!important;
    color:#8e0d22!important;
    background:linear-gradient(145deg,#fff8ec,#ffe6d2)!important;
    box-shadow:0 10px 20px rgba(201,154,69,.18)!important;
    font-size:28px!important;
    line-height:1!important;
    animation:mobileIconFloat 3.5s ease-in-out infinite!important;
  }
  .step:nth-child(2) i{animation-delay:.2s!important}.step:nth-child(3) i{animation-delay:.4s!important}.step:nth-child(4) i{animation-delay:.6s!important}.step:nth-child(5) i{animation-delay:.8s!important}
  @keyframes mobileIconFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
  .step b{
    grid-area:time!important;
    display:block!important;
    font-size:26px!important;
    line-height:1!important;
    margin:0!important;
    color:#8e0d22!important;
    font-family:'Cormorant Garamond',serif!important;
    font-weight:700!important;
  }
  .step strong{
    grid-area:title!important;
    display:block!important;
    margin:2px 0 0!important;
    font-size:13px!important;
    line-height:1.15!important;
    color:#173d32!important;
    letter-spacing:.06em!important;
  }
  .step p{
    grid-area:desc!important;
    display:block!important;
    margin:4px 0 0!important;
    font-size:16px!important;
    line-height:1.22!important;
    color:#5d4e4d!important;
    font-family:'Cormorant Garamond',serif!important;
  }
}
@media (max-width:390px){
  html{scroll-padding-top:120px}
  .topbar{min-height:100px!important;padding-left:8px!important;padding-right:8px!important}
  .topbar nav a{font-size:9.5px!important;padding:10px 10px!important}
  .timeline-row{width:calc(100% - 20px)!important}
  .step{grid-template-columns:48px 1fr!important;padding:13px 12px 13px 10px!important;min-height:88px!important}
  .step i{width:46px!important;height:46px!important;font-size:25px!important;border-radius:16px!important}
  .step b{font-size:24px!important}.step strong{font-size:12px!important}.step p{font-size:15px!important}
}


/* ============================================================
   BUSTA ANIMATA DI APERTURA - 28/07/2026
   Intro premium, palette natalizia e accessibile su mobile.
   ============================================================ */
body.intro-locked{overflow:hidden}
.envelope-intro{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;overflow:hidden;background:radial-gradient(circle at 50% 28%,rgba(201,154,69,.19),transparent 28%),linear-gradient(145deg,#f8efe2 0%,#efe0ca 48%,#e8d5bb 100%);transition:opacity .85s ease,visibility .85s ease;isolation:isolate}
.envelope-intro:before{content:"";position:absolute;inset:0;opacity:.38;background-image:repeating-linear-gradient(112deg,rgba(73,44,29,.035) 0 1px,transparent 1px 5px),repeating-linear-gradient(22deg,rgba(255,255,255,.2) 0 1px,transparent 1px 7px);mix-blend-mode:multiply;pointer-events:none}
.envelope-intro:after{content:"";position:absolute;inset:-30%;background:conic-gradient(from 30deg,transparent,rgba(255,255,255,.22),transparent 22%);animation:introLight 8s linear infinite;pointer-events:none}
@keyframes introLight{to{transform:rotate(360deg)}}
.envelope-intro.is-complete{opacity:0;visibility:hidden;pointer-events:none}
.envelope-stage{position:relative;z-index:2;width:min(92vw,620px);display:grid;justify-items:center;perspective:1300px}
.envelope-kicker{margin:0 0 24px;color:#765b45;text-transform:uppercase;letter-spacing:.28em;font-size:11px;font-weight:800;opacity:0;animation:kickerIn .8s .25s ease forwards}
@keyframes kickerIn{to{opacity:1;transform:none}from{opacity:0;transform:translateY(8px)}}
.envelope{position:relative;width:min(88vw,560px);aspect-ratio:1.45/1;filter:drop-shadow(0 34px 34px rgba(63,34,21,.22));transform-style:preserve-3d;animation:envelopeArrive 1.1s cubic-bezier(.2,.8,.2,1) both}
@keyframes envelopeArrive{from{opacity:0;transform:translateY(45px) scale(.92) rotateX(7deg)}to{opacity:1;transform:none}}
.envelope-back{position:absolute;inset:0;border-radius:7px;background:linear-gradient(145deg,#244d3e,#173f32 55%,#103428);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12),inset 0 0 55px rgba(0,0,0,.13)}
.envelope-back:after,.envelope-pocket:after,.envelope-flap:after{content:"";position:absolute;inset:0;opacity:.22;background-image:repeating-linear-gradient(112deg,rgba(255,255,255,.12) 0 1px,transparent 1px 5px),repeating-linear-gradient(20deg,rgba(0,0,0,.07) 0 1px,transparent 1px 8px);pointer-events:none}
.envelope-pocket{position:absolute;inset:0;z-index:4;border-radius:7px;overflow:hidden;background:linear-gradient(145deg,transparent 49.7%,#1a4637 50%) left/50.2% 100% no-repeat,linear-gradient(215deg,transparent 49.7%,#1d4b3b 50%) right/50.2% 100% no-repeat,linear-gradient(0deg,#123a2d,#1a4939);clip-path:polygon(0 35%,50% 74%,100% 35%,100% 100%,0 100%)}
.envelope-flap{position:absolute;left:0;right:0;top:0;height:61%;z-index:6;transform-origin:50% 0;transform-style:preserve-3d;clip-path:polygon(0 0,100% 0,50% 100%);background:linear-gradient(160deg,#2b5c49 0%,#1c4939 52%,#143c2f 100%);box-shadow:0 4px 7px rgba(0,0,0,.18);transition:transform 1.05s cubic-bezier(.55,.02,.25,1),z-index 0s .52s}
.envelope.opening .envelope-flap{transform:rotateX(180deg);z-index:1}
.invitation-card{position:absolute;left:6%;right:6%;bottom:5%;height:88%;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px;background:linear-gradient(135deg,#fffdf7,#f8ecd8);border:1px solid rgba(166,117,54,.38);box-shadow:0 8px 22px rgba(61,34,22,.18);color:#402a21;transition:transform 1.25s .45s cubic-bezier(.2,.75,.2,1),filter .8s;overflow:hidden}
.invitation-card:before{content:"";position:absolute;inset:13px;border:1px solid rgba(178,15,44,.28)}
.invitation-card:after{content:"";position:absolute;inset:20px;background:radial-gradient(circle at 0 0,transparent 21px,rgba(201,154,69,.18) 22px 23px,transparent 24px) 0 0/54px 54px;opacity:.35}
.invitation-card>*{position:relative;z-index:1}
.invitation-card small{font-family:Inter,sans-serif;text-transform:uppercase;letter-spacing:.28em;font-weight:800;font-size:10px;color:#1d5b45;margin-bottom:12px}
.invitation-card strong{font-family:'Great Vibes',cursive;font-size:clamp(37px,8vw,64px);font-weight:400;line-height:.87;color:#a10d27;text-shadow:0 1px #fff}
.invitation-card strong em{display:block;font-family:'Cormorant Garamond',serif;font-size:.6em;color:#c99a45;margin:5px 0;font-style:italic}
.invitation-card>span:last-child{margin-top:17px;font-family:'Cormorant Garamond',serif;font-size:18px;letter-spacing:.18em;color:#4f3d31}
.card-ornament{color:#c99a45;font-size:19px;margin-bottom:10px}
.envelope.opening .invitation-card{transform:translateY(-56%)}
.wax-seal{position:absolute;z-index:8;left:50%;top:48%;width:92px;height:92px;transform:translate(-50%,-50%);border:0;border-radius:50%;cursor:pointer;color:#f9e9c6;background:radial-gradient(circle at 35% 27%,#d3414f 0 5%,#b20f2c 25%,#80091c 72%,#660716 100%);box-shadow:0 8px 16px rgba(37,12,14,.42),inset 0 0 0 4px rgba(255,222,181,.18),inset 0 0 0 8px rgba(76,3,15,.26);transition:transform .3s ease,opacity .45s .1s;animation:sealPulse 2.1s 1.25s ease-in-out infinite}
.wax-seal:before{content:"";position:absolute;inset:9px;border:1px solid rgba(255,222,181,.44);border-radius:50%}
.wax-seal span{font-family:'Cormorant Garamond',serif;font-size:29px;font-weight:700;font-style:italic;text-shadow:0 2px 2px rgba(58,2,12,.6)}
.wax-seal span span{font-size:.55em;margin:0 -2px;color:#e3bc75}
.wax-seal:hover{transform:translate(-50%,-50%) scale(1.07)}
.wax-seal:focus-visible,.envelope-hint:focus-visible{outline:3px solid #c99a45;outline-offset:5px}
.envelope.opening .wax-seal{animation:none;transform:translate(-50%,-50%) scale(.72);opacity:0;pointer-events:none}
@keyframes sealPulse{0%,100%{box-shadow:0 8px 16px rgba(37,12,14,.42),0 0 0 0 rgba(178,15,44,.28),inset 0 0 0 4px rgba(255,222,181,.18),inset 0 0 0 8px rgba(76,3,15,.26)}50%{box-shadow:0 8px 16px rgba(37,12,14,.42),0 0 0 16px rgba(178,15,44,0),inset 0 0 0 4px rgba(255,222,181,.18),inset 0 0 0 8px rgba(76,3,15,.26)}}
.envelope-hint{margin-top:35px;border:0;background:transparent;color:#684b38;text-transform:uppercase;letter-spacing:.2em;font-size:10px;font-weight:800;cursor:pointer;animation:hint 1.8s ease-in-out infinite;transition:opacity .3s}
.envelope-intro.is-opening .envelope-hint{opacity:0;pointer-events:none}
@keyframes hint{50%{transform:translateY(5px);opacity:.62}}
.intro-sparkles{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 18% 28%,rgba(201,154,69,.75) 0 1px,transparent 2px),radial-gradient(circle at 77% 20%,rgba(201,154,69,.55) 0 1px,transparent 2px),radial-gradient(circle at 86% 70%,rgba(255,255,255,.85) 0 1px,transparent 2px),radial-gradient(circle at 12% 76%,rgba(178,15,44,.3) 0 1px,transparent 2px);background-size:180px 180px,230px 230px,160px 160px,260px 260px;animation:sparkleDrift 8s linear infinite}
@keyframes sparkleDrift{to{transform:translateY(18px)}}
@media(max-width:600px){.envelope-stage{width:96vw}.envelope-kicker{margin-bottom:20px}.envelope{width:92vw}.wax-seal{width:78px;height:78px}.wax-seal span{font-size:25px}.invitation-card{padding:20px}.invitation-card strong{font-size:clamp(35px,12vw,51px)}.envelope.opening .invitation-card{transform:translateY(-62%)}.envelope-hint{margin-top:28px}}
@media(prefers-reduced-motion:reduce){.envelope-intro:after,.intro-sparkles,.wax-seal,.envelope-hint{animation:none}.envelope,.envelope-kicker{animation-duration:.01ms}.envelope-flap,.invitation-card{transition-duration:.3s}.envelope.opening .invitation-card{transform:translateY(-48%)}}

/* ============================================================
   BUSTA LUXURY + SIGILLO IN CERA REALISTICO - revisione wow
   ============================================================ */
.envelope-stage{perspective:1700px}
.envelope{filter:drop-shadow(0 42px 38px rgba(43,25,16,.28));transform:rotateX(2deg);}
.envelope:before{content:"";position:absolute;inset:-3%;z-index:-1;border-radius:14px;background:radial-gradient(ellipse at center,rgba(255,255,255,.32),transparent 62%);filter:blur(18px);opacity:.7}
.envelope-back{border-radius:10px;background:linear-gradient(138deg,#315d4b 0%,#1e493a 35%,#15392e 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.15),inset 0 0 80px rgba(0,0,0,.17),0 2px 0 rgba(255,255,255,.12)}
.envelope-back:before{content:"";position:absolute;inset:8px;border:1px solid rgba(211,180,116,.22);border-radius:6px;pointer-events:none}
.envelope-liner{position:absolute;z-index:2;left:1.5%;right:1.5%;top:1.5%;height:58%;clip-path:polygon(0 0,100% 0,50% 100%);background:linear-gradient(150deg,#ead5a3,#c8a35b 45%,#98712f 100%);opacity:.96;filter:saturate(.88);box-shadow:inset 0 0 35px rgba(73,38,15,.22)}
.envelope-liner:after{content:"";position:absolute;inset:0;background:repeating-radial-gradient(circle at 25% 30%,rgba(255,255,255,.18) 0 1px,transparent 1px 10px);opacity:.35}
.envelope-pocket{z-index:5;border-radius:10px;background:linear-gradient(145deg,transparent 49.5%,#214d3d 50%) left/50.3% 100% no-repeat,linear-gradient(215deg,transparent 49.5%,#244f40 50%) right/50.3% 100% no-repeat,linear-gradient(0deg,#12372c,#1c4939);clip-path:polygon(0 31%,50% 73%,100% 31%,100% 100%,0 100%);box-shadow:inset 0 -20px 45px rgba(0,0,0,.13)}
.envelope-pocket:before{content:"";position:absolute;left:0;right:0;top:31%;height:1px;background:linear-gradient(90deg,transparent,rgba(218,187,124,.45),transparent);transform:translateY(-1px)}
.envelope-flap{height:65%;z-index:7;clip-path:polygon(0 0,100% 0,50% 100%);background:linear-gradient(157deg,#35624f 0%,#244e3f 43%,#153a2f 100%);box-shadow:0 6px 12px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.15);transition:transform 1.25s .32s cubic-bezier(.45,.02,.18,1),z-index 0s .95s}
.envelope-flap:before{content:"";position:absolute;inset:9px 11px 13px;clip-path:polygon(0 0,100% 0,50% 100%);border-top:1px solid rgba(222,191,126,.28)}
.flap-edge{position:absolute;z-index:7;left:4%;right:4%;top:0;height:65%;clip-path:polygon(0 0,100% 0,50% 100%);pointer-events:none;box-shadow:inset 0 1px 0 rgba(255,255,255,.13)}
.envelope.opening .flap-edge{opacity:0;transition:opacity .2s .65s}
.invitation-card{z-index:4;left:7%;right:7%;bottom:4%;height:90%;border:1px solid rgba(166,117,54,.55);box-shadow:0 16px 32px rgba(45,25,17,.28);transition:transform 1.45s 1.15s cubic-bezier(.16,.78,.2,1),filter .9s,opacity .45s}
.envelope.opening .invitation-card{transform:translateY(-60%) rotateX(-1deg)}
.wax-seal{top:52%;width:104px;height:101px;border-radius:48% 52% 47% 53% / 50% 45% 55% 50%;background:radial-gradient(circle at 31% 25%,#e05b67 0 3%,#c62b43 11%,#a20e2b 42%,#760719 77%,#570410 100%);box-shadow:0 13px 18px rgba(45,5,12,.5),0 3px 2px rgba(255,208,193,.18) inset,-5px -8px 14px rgba(68,0,12,.4) inset,5px 7px 13px rgba(255,118,120,.18) inset;animation:sealFloat 2.5s 1.2s ease-in-out infinite;overflow:visible;isolation:isolate}
.wax-seal:before{inset:12px 13px 14px 12px;border:2px solid rgba(255,211,170,.24);border-radius:51% 49% 45% 55% / 47% 51% 49% 53%;box-shadow:0 1px 2px rgba(255,226,194,.18) inset,0 -2px 3px rgba(48,0,8,.45) inset}
.wax-seal:after{content:"";position:absolute;z-index:-1;inset:-5px;border-radius:54% 46% 58% 42% / 48% 57% 43% 52%;background:radial-gradient(circle at 35% 28%,#cc2c43,#8c0a21 58%,#650516 100%);clip-path:polygon(8% 22%,18% 8%,34% 11%,46% 2%,61% 10%,77% 5%,91% 19%,96% 36%,91% 51%,98% 66%,86% 84%,69% 88%,54% 100%,39% 91%,22% 96%,10% 82%,5% 66%,9% 48%,2% 34%)}
.wax-drop{position:absolute;z-index:-2;display:block;background:linear-gradient(160deg,#a6112d,#690617);box-shadow:0 7px 9px rgba(42,2,10,.35),inset 2px 2px 4px rgba(255,97,103,.18)}
.wax-drop-one{width:22px;height:31px;left:3px;bottom:-10px;border-radius:60% 40% 58% 42%;transform:rotate(24deg)}
.wax-drop-two{width:17px;height:25px;right:5px;top:4px;border-radius:43% 57% 40% 60%;transform:rotate(38deg)}
.wax-glint{position:absolute;width:25px;height:10px;left:22px;top:17px;border-radius:50%;background:linear-gradient(90deg,rgba(255,255,255,.5),rgba(255,255,255,0));filter:blur(1px);transform:rotate(-24deg)}
.seal-monogram{position:relative;display:inline-flex!important;align-items:center;justify-content:center;height:100%;font-size:31px!important;color:#efcf9a!important;letter-spacing:-2px;text-shadow:0 2px 2px rgba(47,0,7,.8),0 -1px rgba(255,229,187,.35)!important;transform:rotate(-4deg)}
.seal-monogram:after{content:"";position:absolute;width:61px;height:61px;border:1px solid rgba(242,206,148,.34);border-radius:50%;box-shadow:0 1px 1px rgba(255,255,255,.12) inset}
.wax-seal.is-pressed{animation:none;transform:translate(-50%,-50%) scale(.94) rotate(-2deg);transition:transform .18s ease}
.wax-seal.is-cracked:before{border-color:rgba(255,220,176,.12);box-shadow:none}
.wax-seal.is-cracked .seal-monogram{transform:rotate(-7deg) translateY(1px)}
.envelope.opening .wax-seal{animation:none;transform:translate(-50%,-50%) translateY(15px) rotate(-14deg) scale(.72);opacity:0;transition:transform .65s cubic-bezier(.3,.8,.2,1),opacity .4s .2s;pointer-events:none}
@keyframes sealFloat{0%,100%{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.035);box-shadow:0 15px 22px rgba(45,5,12,.52),0 0 0 10px rgba(158,13,39,0),0 3px 2px rgba(255,208,193,.18) inset,-5px -8px 14px rgba(68,0,12,.4) inset,5px 7px 13px rgba(255,118,120,.18) inset}}
.envelope-intro.is-opening .envelope{animation:envelopeCinematic 2.55s ease both}
@keyframes envelopeCinematic{0%{transform:rotateX(2deg) scale(1)}15%{transform:rotateX(2deg) scale(1.025)}38%{transform:rotateX(1deg) scale(1.01)}100%{transform:translateY(22px) scale(1.055)}}
.envelope-intro.is-opening:after{animation-duration:2.4s;opacity:.65}
@media(max-width:600px){.wax-seal{width:88px;height:86px}.seal-monogram{font-size:27px!important}.seal-monogram:after{width:52px;height:52px}.envelope-flap{height:64%}.envelope.opening .invitation-card{transform:translateY(-64%)}}
@media(prefers-reduced-motion:reduce){.wax-seal,.envelope-intro.is-opening .envelope{animation:none}.envelope-flap{transition-delay:.1s}.invitation-card{transition-delay:.4s}}

/* ============================================================
   CORREZIONE CHIUSURA BUSTA + DATA MOBILE - 28/07/2026
   La partecipazione resta completamente nascosta finché la patta
   e il sigillo non iniziano realmente ad aprirsi.
   ============================================================ */
.envelope:not(.opening) .invitation-card{
  opacity:0;
  visibility:hidden;
  transform:translateY(7%);
}
.envelope.opening .invitation-card{
  opacity:1;
  visibility:visible;
  transition:
    transform 1.45s 1.15s cubic-bezier(.16,.78,.2,1),
    filter .9s,
    opacity .32s .78s,
    visibility 0s .78s;
}
/* Evita che il rivestimento dorato sembri un foglio già fuori dalla busta. */
.envelope:not(.opening) .envelope-liner{
  opacity:0;
}
.envelope.opening .envelope-liner{
  opacity:.96;
  transition:opacity .3s .46s ease;
}
/* La patta chiusa arriva esattamente alla linea di piega del corpo. */
.envelope-flap{
  height:73%;
  clip-path:polygon(0 0,100% 0,50% 100%);
}
.envelope-flap:before{
  inset:9px 11px 15px;
}

@media(max-width:600px){
  .envelope-flap{height:73%}
  .invitation-card>span:last-child{
    margin-top:10px;
    transform:translateY(-12px);
    font-size:16px;
  }
}

/* ============================================================
   APERTURA NATURALE — movimento continuo, morbido e realistico
   ============================================================ */
.envelope-intro{
  transition:opacity .78s cubic-bezier(.4,0,.2,1),visibility .78s;
}
.envelope-intro:after{
  opacity:.3;
  animation-duration:14s;
}
.envelope{
  will-change:transform;
  backface-visibility:hidden;
}
.envelope-flap{
  backface-visibility:hidden;
  will-change:transform;
  transition:
    transform 1.18s .08s cubic-bezier(.38,.03,.18,1),
    filter .7s ease,
    z-index 0s .7s;
}
.envelope.opening .envelope-flap{
  transform:rotateX(180deg);
  filter:brightness(.9);
}
.wax-seal.is-pressed{
  transform:translate(-50%,-50%) scale(.965) rotate(-1deg);
  transition:transform .14s cubic-bezier(.2,.8,.3,1);
}
.envelope.opening .wax-seal{
  transform:translate(-50%,-50%) translate(8px,12px) rotate(-10deg) scale(.82);
  opacity:0;
  transition:
    transform .58s cubic-bezier(.25,.7,.25,1),
    opacity .38s .14s ease;
}
.envelope:not(.opening) .invitation-card{
  transform:translate3d(0,8%,0) scale(.992);
}
.envelope.opening .invitation-card{
  transform:translate3d(0,-61%,0) rotateX(-.7deg) scale(1);
  transition:
    transform 1.48s .82s cubic-bezier(.18,.76,.2,1),
    filter .8s ease,
    opacity .38s .58s ease,
    visibility 0s .58s;
  will-change:transform,opacity;
}
.envelope-intro.is-opening .envelope{
  animation:envelopeNatural 2.75s cubic-bezier(.22,.65,.2,1) both;
}
@keyframes envelopeNatural{
  0%{transform:rotateX(2deg) translateY(0) scale(1)}
  18%{transform:rotateX(2.5deg) translateY(2px) scale(1.008)}
  48%{transform:rotateX(1deg) translateY(6px) scale(1.012)}
  78%{transform:rotateX(0) translateY(15px) scale(1.018)}
  100%{transform:rotateX(0) translateY(22px) scale(1.02)}
}
.envelope-intro.is-revealing{
  background-color:rgba(248,239,226,0);
}
.envelope-intro.is-revealing .envelope-stage{
  opacity:0;
  transform:translateY(-10px) scale(1.012);
  filter:blur(2px);
  transition:
    opacity .68s cubic-bezier(.4,0,.2,1),
    transform .75s cubic-bezier(.22,.65,.2,1),
    filter .68s ease;
}
.envelope-intro.is-revealing:before,
.envelope-intro.is-revealing:after,
.envelope-intro.is-revealing .intro-sparkles{
  opacity:0;
  transition:opacity .6s ease;
}
body.intro-locked>header,
body.intro-locked>main,
body.intro-locked>footer{
  transform:translateY(8px);
  filter:blur(3px);
}
body.intro-revealing>header,
body.intro-revealing>main,
body.intro-revealing>footer{
  transform:none;
  filter:none;
  transition:transform .9s cubic-bezier(.22,.65,.2,1),filter .8s ease;
}
@media(max-width:600px){
  .envelope.opening .invitation-card{
    transform:translate3d(0,-64%,0) rotateX(-.5deg);
  }
}
@media(prefers-reduced-motion:reduce){
  .envelope-intro.is-opening .envelope{animation:none}
  .envelope-intro.is-revealing .envelope-stage{filter:none;transform:none}
  body.intro-locked>header,
  body.intro-locked>main,
  body.intro-locked>footer{filter:none;transform:none}
}

/* ============================================================
   MATERIALI REALISTICI — carta naturale e ceralacca impressa
   ============================================================ */
.envelope-intro{
  background:
    radial-gradient(ellipse at 50% 35%,rgba(255,255,255,.7),transparent 52%),
    linear-gradient(145deg,#f4ecdf 0%,#eadbc5 100%);
}
.envelope-intro:before{
  opacity:.28;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180' viewBox='0 0 180 180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='3' seed='8'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.26'/%3E%3C/svg%3E");
  background-size:190px 190px;
  mix-blend-mode:multiply;
}
.envelope{
  filter:drop-shadow(0 28px 24px rgba(62,43,29,.24)) drop-shadow(0 5px 5px rgba(45,28,18,.12));
}
.envelope:before{
  inset:-1.5%;
  background:radial-gradient(ellipse at center,rgba(255,255,255,.32),transparent 67%);
  filter:blur(14px);
}
.envelope-back{
  background:
    linear-gradient(145deg,rgba(255,255,255,.09),transparent 38%),
    linear-gradient(138deg,#315947 0%,#254b3c 48%,#1c3f32 100%);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.18),
    inset 0 0 45px rgba(7,28,20,.2),
    0 1px 1px rgba(255,255,255,.16);
}
.envelope-back:after,.envelope-pocket:after,.envelope-flap:after{
  opacity:.12;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' seed='11'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23f)' opacity='.55'/%3E%3C/svg%3E");
  background-size:170px 170px;
  mix-blend-mode:soft-light;
}
.envelope-pocket{
  background:
    linear-gradient(145deg,transparent 49.5%,#254f3f 50%) left/50.3% 100% no-repeat,
    linear-gradient(215deg,transparent 49.5%,#294f41 50%) right/50.3% 100% no-repeat,
    linear-gradient(0deg,#183c30,#244a3b);
  box-shadow:inset 0 -25px 38px rgba(5,25,18,.15),inset 0 1px rgba(255,255,255,.06);
}
.envelope-pocket:before{
  height:2px;
  background:linear-gradient(90deg,transparent,rgba(8,29,22,.33) 48%,rgba(255,255,255,.1) 52%,transparent);
}
.envelope-flap{
  background:
    linear-gradient(160deg,rgba(255,255,255,.1),transparent 38%),
    linear-gradient(157deg,#345c49 0%,#294f40 48%,#1c4033 100%);
  box-shadow:0 5px 9px rgba(7,28,20,.27),inset 0 1px rgba(255,255,255,.16);
}
.envelope-flap:before{
  border-top-color:rgba(222,205,165,.17);
}
.envelope-liner{
  background:
    radial-gradient(circle at 25% 30%,rgba(255,255,255,.16) 0 1px,transparent 1.5px) 0 0/18px 18px,
    linear-gradient(150deg,#d6bd85,#b79350 52%,#86632e);
  filter:saturate(.68);
}
.wax-seal{
  top:52%;
  width:88px;
  height:86px;
  border-radius:47% 53% 49% 51% / 54% 47% 53% 46%;
  background:
    radial-gradient(ellipse at 33% 25%,rgba(255,204,190,.34) 0 3%,transparent 11%),
    radial-gradient(circle at 48% 46%,#9f2035 0 35%,#8d172d 54%,#741326 77%,#5e0d1e 100%);
  box-shadow:
    0 8px 12px rgba(35,12,14,.42),
    0 2px 2px rgba(255,219,203,.2) inset,
    -5px -7px 11px rgba(54,4,13,.32) inset,
    5px 7px 10px rgba(226,93,102,.15) inset;
}
.wax-seal:after{
  inset:-4px;
  background:
    radial-gradient(circle at 34% 27%,rgba(212,73,86,.5),transparent 18%),
    radial-gradient(circle at 50% 50%,#951d32,#701123 72%,#590b1a);
  clip-path:polygon(8% 20%,17% 8%,31% 11%,43% 3%,57% 9%,71% 5%,87% 16%,94% 30%,91% 44%,98% 59%,90% 74%,79% 82%,69% 96%,53% 92%,41% 100%,28% 91%,14% 93%,8% 78%,2% 65%,7% 50%,2% 36%);
  box-shadow:none;
}
.wax-seal:before{
  inset:10px 11px 12px 10px;
  border:1px solid rgba(49,2,12,.48);
  border-radius:49% 51% 46% 54%;
  box-shadow:
    0 1px 1px rgba(255,189,174,.22),
    0 2px 4px rgba(45,0,9,.3) inset,
    0 -1px rgba(255,166,151,.12) inset;
}
.wax-drop-one{width:15px;height:20px;left:8px;bottom:-5px;opacity:.9}
.wax-drop-two{width:11px;height:16px;right:6px;top:8px;opacity:.75}
.wax-glint{width:17px;height:5px;left:21px;top:14px;opacity:.42;filter:blur(1.5px)}
.seal-monogram{
  font-family:'Cormorant Garamond',serif!important;
  font-size:25px!important;
  font-weight:700!important;
  color:#8a1a2f!important;
  letter-spacing:-1px;
  text-shadow:
    0 1px 0 rgba(242,132,128,.5),
    0 -1px 1px rgba(42,0,8,.88),
    1px 1px 1px rgba(42,0,8,.46)!important;
  transform:rotate(-3deg);
}
.seal-monogram span{
  color:#8a1a2f!important;
  text-shadow:inherit;
}
.seal-monogram:after{
  width:53px;
  height:53px;
  border:1px solid rgba(62,3,14,.42);
  box-shadow:0 1px rgba(239,128,124,.18),0 2px 3px rgba(45,0,8,.32) inset;
}
.invitation-card{
  background:
    linear-gradient(105deg,rgba(255,255,255,.32),transparent 38%,rgba(157,116,70,.035)),
    #fbf5e9;
  border-color:rgba(130,91,47,.34);
  box-shadow:
    0 18px 26px rgba(44,29,20,.24),
    0 2px 3px rgba(54,35,22,.14),
    inset 0 0 24px rgba(154,112,63,.045);
}
.invitation-card:before{
  border-color:rgba(143,24,46,.2);
  box-shadow:0 0 0 1px rgba(255,255,255,.5);
}
.invitation-card:after{
  inset:0;
  opacity:.12;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='4' seed='17'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)' opacity='.42'/%3E%3C/svg%3E");
  background-size:165px 165px;
  mix-blend-mode:multiply;
}
@media(max-width:600px){
  .wax-seal{width:82px;height:80px}
  .seal-monogram{font-size:23px!important}
  .seal-monogram:after{width:48px;height:48px}
}

/* ============================================================
   INTRO PUZZLE RESPONSIVE
   ============================================================ */
.envelope-intro{display:none!important}
.puzzle-intro{
  --puzzle-bg:#fffaf4;
  --puzzle-bg2:#f6eadf;
  --puzzle-ink:#4a3a35;
  --puzzle-rose:#bd7b84;
  --puzzle-sage:#758f83;
  --puzzle-gold:#c7a86c;
  position:fixed;
  inset:0;
  z-index:9999;
  overflow:hidden;
  display:grid;
  place-items:center;
  color:var(--puzzle-ink);
  background:radial-gradient(circle at 50% 47%,rgba(199,168,108,.13),transparent 29%),linear-gradient(145deg,var(--puzzle-bg),var(--puzzle-bg2));
  transition:opacity .7s ease,visibility .7s ease;
}
.puzzle-intro:before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:.2;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' seed='9'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.16'/%3E%3C/svg%3E");
  mix-blend-mode:multiply;
}
.puzzle-stage{width:100%;min-height:520px;display:grid;align-content:center;justify-items:center;padding:28px 12px;position:relative;z-index:2;text-align:center}
.puzzle-title{margin:0 0 8px;color:var(--puzzle-rose);font:400 clamp(50px,5.5vw,66px) 'Allura','Great Vibes',cursive;line-height:1.08}
.puzzle-date{margin:0 0 34px;color:#a98243;letter-spacing:.18em;text-transform:uppercase;font:700 14px 'Cormorant Garamond',serif}
.puzzle-scene{width:100%;max-width:760px;position:relative}
.puzzle-mobile-scene{display:none}
.puzzle-art{display:block;width:100%;height:auto;overflow:visible}
.puzzle-thread{fill:none;stroke:var(--puzzle-gold);stroke-width:1.5;stroke-linecap:round;opacity:.78}
.puzzle-piece{transform-box:fill-box;transform-origin:center;filter:drop-shadow(0 10px 13px rgba(79,53,43,.09))}
.puzzle-left{transform:translateX(-178px)}
.puzzle-right{transform:translateX(138px)}
.puzzle-piece-shape{stroke:var(--puzzle-gold);stroke-width:1.6;stroke-linejoin:round}
.puzzle-left .puzzle-piece-shape,.puzzle-mobile-top .puzzle-piece-shape{fill:#f0dedc}
.puzzle-right .puzzle-piece-shape,.puzzle-mobile-bottom .puzzle-piece-shape{fill:#e1e7e2}
.puzzle-initial{font:400 57px 'Allura','Great Vibes',cursive;text-anchor:middle}
.puzzle-left .puzzle-initial,.puzzle-mobile-top .puzzle-initial{fill:var(--puzzle-rose)}
.puzzle-right .puzzle-initial,.puzzle-mobile-bottom .puzzle-initial{fill:var(--puzzle-sage)}
.puzzle-heart{position:absolute;left:50%;top:46.8%;transform:translate(-50%,-50%);width:62px;height:62px;border:0;background:transparent;cursor:pointer;padding:0;display:grid;place-items:center;color:var(--puzzle-rose);animation:puzzle-heart-pulse 1.75s ease-in-out infinite}
.puzzle-heart svg{width:49px;height:49px;overflow:visible}
.puzzle-heart path{fill:var(--puzzle-bg);stroke:currentColor;stroke-width:2.1}
.puzzle-heart:after{content:"";position:absolute;inset:4px;border:1px solid var(--puzzle-gold);border-radius:50%;opacity:0}
.puzzle-heart:focus-visible,.puzzle-hint:focus-visible{outline:2px solid var(--puzzle-rose);outline-offset:4px}
.puzzle-hint{margin:22px 0 0;padding:8px 16px;border:0;background:transparent;color:rgba(74,58,53,.76);font:italic 500 18px 'Cormorant Garamond',serif;cursor:pointer;text-align:center}
.puzzle-particle{position:absolute;left:50%;top:50%;z-index:4;pointer-events:none;opacity:0;color:var(--particle-color);font-size:var(--particle-size)}
.puzzle-intro.is-joined .puzzle-left{animation:puzzle-left-in 1.2s cubic-bezier(.18,.82,.24,1) forwards}
.puzzle-intro.is-joined .puzzle-right{animation:puzzle-right-in 1.2s cubic-bezier(.18,.82,.24,1) forwards}
.puzzle-intro.is-joined .puzzle-mobile-top{animation:puzzle-top-in 1.2s cubic-bezier(.18,.82,.24,1) forwards}
.puzzle-intro.is-joined .puzzle-mobile-bottom{animation:puzzle-bottom-in 1.2s cubic-bezier(.18,.82,.24,1) forwards}
.puzzle-intro.is-joined .puzzle-thread{animation:puzzle-thread-in 1.1s ease forwards}
.puzzle-intro.is-joined .puzzle-heart{animation:puzzle-heart-finish 1.15s ease forwards;pointer-events:none}
.puzzle-intro.is-joined .puzzle-heart:after{animation:puzzle-ring .65s ease .76s forwards}
.puzzle-intro.is-joined .puzzle-hint{animation:puzzle-hide .35s ease forwards;pointer-events:none}
.puzzle-intro.is-joined .puzzle-particle{animation:puzzle-burst 1.55s cubic-bezier(.15,.76,.32,1) var(--particle-delay) forwards}
.puzzle-intro.is-revealing{opacity:0;visibility:hidden}
@keyframes puzzle-left-in{0%{transform:translateX(-178px)}78%{transform:translateX(4px)}100%{transform:none}}
@keyframes puzzle-right-in{0%{transform:translateX(138px)}78%{transform:translateX(-4px)}100%{transform:none}}
@keyframes puzzle-top-in{0%{transform:translateY(-55px)}78%{transform:translateY(3px)}100%{transform:none}}
@keyframes puzzle-bottom-in{0%{transform:translateY(55px)}78%{transform:translateY(-3px)}100%{transform:none}}
@keyframes puzzle-thread-in{0%{opacity:.78}70%{opacity:.3}100%{opacity:0}}
@keyframes puzzle-heart-finish{0%,55%{transform:translate(-50%,-50%) scale(1);opacity:1}72%{transform:translate(-50%,-50%) scale(1.14);color:var(--puzzle-gold)}100%{transform:translate(-50%,-50%) scale(.72);opacity:0}}
@keyframes puzzle-heart-pulse{0%,100%{transform:translate(-50%,-50%) scale(1);filter:drop-shadow(0 0 0 transparent)}50%{transform:translate(-50%,-50%) scale(1.13);filter:drop-shadow(0 0 9px rgba(189,123,132,.36))}}
@keyframes puzzle-ring{0%{opacity:.85;transform:scale(.35)}100%{opacity:0;transform:scale(2.1)}}
@keyframes puzzle-hide{to{opacity:0}}
@keyframes puzzle-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.2)}14%{opacity:.95}100%{opacity:0;transform:translate(calc(-50% + var(--particle-x)),calc(-50% + var(--particle-y))) rotate(var(--particle-spin))}}
@media(max-width:540px){
  .puzzle-stage{min-height:100svh;padding:20px 10px}
  .puzzle-desktop-scene{display:none}
  .puzzle-mobile-scene{display:block;width:min(90vw,310px);margin-top:64px}
  .puzzle-mobile-scene .puzzle-heart{top:40.5%}
  .puzzle-mobile-scene .puzzle-thread{stroke-width:2.2;opacity:1}
  .puzzle-mobile-top,.puzzle-mobile-bottom{transform-box:fill-box;transform-origin:center}
  .puzzle-mobile-top{transform:translateY(-55px)}
  .puzzle-mobile-bottom{transform:translateY(55px)}
  .puzzle-title{font-size:48px}
  .puzzle-date{margin-top:5px;margin-bottom:0;color:#9e793c;font-size:14px;font-weight:700;letter-spacing:.15em}
  .puzzle-heart{width:58px;height:58px}
  .puzzle-heart svg{width:44px;height:44px}
  .puzzle-hint{margin-top:-38px;font-size:18px;color:rgba(74,58,53,.8)}
}
@media(prefers-reduced-motion:reduce){
  .puzzle-intro *{animation-duration:.01ms!important;animation-delay:0ms!important}
  .puzzle-intro{transition-duration:.15s}
}

/* Timeline a quattro tappe: centratura e icone coordinate alla partecipazione. */
.timeline-row{grid-template-columns:repeat(4,1fr)}
.timeline-row:before{left:12.5%;right:12.5%}
.step i svg{width:44px;height:44px;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:700px){
  .timeline-row{grid-template-columns:1fr!important}
  .timeline-row:before{top:29px!important;bottom:82px!important}
  .step i svg{width:34px;height:34px}
}
@media(max-width:390px){
  .timeline-row:before{top:26px!important;bottom:80px!important}
  .step i svg{width:31px;height:31px}
}

/* ============================================================
   MENU COMPATTO + TIMELINE MOBILE - 14/08/2026
   ============================================================ */
@media(max-width:700px){
  html{scroll-padding-top:78px}
  .topbar + main{padding-top:18px}
  .topbar{
    height:66px!important;
    min-height:66px!important;
    flex-wrap:nowrap!important;
    justify-content:space-between!important;
    gap:12px!important;
    padding:7px 14px!important;
    background:rgba(255,250,243,.95)!important;
    box-shadow:0 8px 24px rgba(69,32,22,.1)!important;
  }
  .logo{
    width:auto!important;
    flex:0 0 auto!important;
    justify-content:flex-start!important;
  }
  .logo img{width:48px!important}
  .menu-toggle{
    display:inline-flex!important;
    flex:0 0 auto!important;
    width:44px!important;
    height:42px!important;
    position:relative!important;
    z-index:3!important;
  }
  .topbar nav,
  .topbar.menu-open nav{
    position:absolute!important;
    top:calc(100% + 8px)!important;
    left:auto!important;
    right:12px!important;
    width:min(292px,calc(100vw - 24px))!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    flex-direction:initial!important;
    gap:7px!important;
    overflow:hidden!important;
    white-space:normal!important;
    background:rgba(255,250,243,.98)!important;
    border:1px solid rgba(201,154,69,.3)!important;
    border-radius:20px!important;
    box-shadow:0 20px 48px rgba(55,24,18,.2)!important;
    backdrop-filter:blur(18px)!important;
    transition:opacity .22s ease,transform .24s ease,visibility .22s ease!important;
  }
  .topbar nav{
    max-height:none!important;
    padding:10px!important;
    opacity:0!important;
    visibility:hidden!important;
    pointer-events:none!important;
    transform:translateY(-8px) scale(.98)!important;
  }
  .topbar.menu-open nav{
    opacity:1!important;
    visibility:visible!important;
    pointer-events:auto!important;
    transform:none!important;
  }
  .topbar nav a{
    width:100%!important;
    min-width:0!important;
    min-height:42px!important;
    justify-content:flex-start!important;
    padding:11px 14px!important;
    border-radius:12px!important;
    font-size:11px!important;
    letter-spacing:.07em!important;
    box-shadow:none!important;
  }
  .topbar nav a[href="#rsvp"]{justify-content:center!important;margin-top:2px!important}

  .program-section{
    margin:24px 0 48px!important;
    padding:38px 0 42px!important;
    border-radius:0!important;
  }
  .program-section .section-heading{margin-bottom:30px!important}
  .program-section .section-heading span{font-size:13px!important;letter-spacing:.17em!important}
  .timeline-row{
    width:min(92%,430px)!important;
    gap:0!important;
    padding:0!important;
  }
  .timeline-row:before{
    left:29px!important;
    top:30px!important;
    bottom:30px!important;
    width:2px!important;
    opacity:.7!important;
    background:linear-gradient(180deg,#c99a45,#8e0d22 48%,#c99a45)!important;
  }
  .step{
    grid-template-columns:60px 1fr!important;
    grid-template-areas:"icon time" "icon title" "icon desc"!important;
    min-height:112px!important;
    padding:13px 12px 16px 0!important;
    column-gap:16px!important;
    row-gap:2px!important;
    border:0!important;
    border-bottom:1px solid rgba(201,154,69,.2)!important;
    border-radius:0!important;
    background:transparent!important;
    box-shadow:none!important;
    backdrop-filter:none!important;
    overflow:visible!important;
  }
  .step:last-child{border-bottom:0!important}
  .step:before{display:none!important}
  .step i{
    width:58px!important;
    height:58px!important;
    border:1px solid rgba(201,154,69,.42)!important;
    border-radius:50%!important;
    background:#fffaf3!important;
    box-shadow:0 8px 20px rgba(83,43,29,.1)!important;
    font-size:28px!important;
    position:relative!important;
    z-index:2!important;
    animation:none!important;
  }
  .step b{font-size:27px!important;color:#8e0d22!important}
  .step strong{font-size:13px!important;letter-spacing:.075em!important;color:#173d32!important}
  .step p{font-size:17px!important;line-height:1.25!important;margin-top:5px!important;color:#5d4e4d!important}
}

@media(max-width:390px){
  html{scroll-padding-top:76px}
  .topbar + main{padding-top:14px}
  .topbar{height:64px!important;min-height:64px!important;padding:7px 12px!important}
  .logo img{width:45px!important}
  .timeline-row{width:calc(100% - 28px)!important}
  .step{grid-template-columns:54px 1fr!important;column-gap:13px!important;min-height:106px!important}
  .timeline-row:before{left:26px!important}
  .step i{width:52px!important;height:52px!important;font-size:25px!important}
  .step b{font-size:25px!important}.step p{font-size:16px!important}
}

@media(max-width:700px){
  .timeline-row:before{top:29px!important;bottom:83px!important}
}
@media(max-width:390px){
  .timeline-row:before{top:26px!important;bottom:80px!important}
}

/* Menu e countdown premium: solo desktop. */
@media(min-width:701px){
  .topbar{
    height:78px;
    padding:0 clamp(28px,6vw,92px);
    background:rgba(255,251,246,.82);
    border-bottom:1px solid rgba(199,168,108,.3);
    box-shadow:0 12px 34px rgba(73,42,31,.09);
    backdrop-filter:blur(20px) saturate(1.15);
  }
  .topbar:before{
    content:"";
    position:absolute;
    inset:auto 8% 0;
    height:1px;
    background:linear-gradient(90deg,transparent,rgba(178,15,44,.38),rgba(199,168,108,.65),rgba(23,61,50,.34),transparent);
  }
  .logo img{width:68px;transition:transform .35s ease,filter .35s ease}
  .logo:hover img{transform:scale(1.08) rotate(-2deg);filter:drop-shadow(0 10px 18px rgba(178,15,44,.2))}
  .topbar nav{
    gap:4px;
    padding:6px;
    border:1px solid rgba(199,168,108,.26);
    border-radius:999px;
    background:rgba(255,255,255,.62);
    box-shadow:inset 0 1px rgba(255,255,255,.8),0 10px 26px rgba(70,38,28,.07);
  }
  .topbar nav a{
    position:relative;
    padding:11px 16px;
    border-radius:999px;
    font-size:11px;
    letter-spacing:.09em;
    transition:color .25s ease,background .25s ease,transform .25s ease,box-shadow .25s ease;
  }
  .topbar nav a:after{display:none}
  .topbar nav a:hover{
    color:#8e0d22;
    background:#fffaf3;
    transform:translateY(-1px);
    box-shadow:0 7px 18px rgba(83,43,29,.1);
  }
  .topbar nav a[href="#rsvp"]{
    color:#fff;
    background:linear-gradient(135deg,#7f0b1e,#b20f2c 58%,#c99a45);
    box-shadow:0 8px 20px rgba(142,13,34,.22);
  }
  .topbar nav a[href="#rsvp"]:hover{color:#fff;transform:translateY(-2px);box-shadow:0 12px 26px rgba(142,13,34,.3)}
  .countdown-heart{
    width:74px;
    height:54px;
    display:block;
    margin:auto;
    object-fit:contain;
    opacity:.92;
    filter:drop-shadow(0 8px 14px rgba(178,15,44,.13));
    animation:countdownHeartBreath 3.8s ease-in-out infinite;
  }
  .countdown-heart.right{animation-delay:.55s}
  @keyframes countdownHeartBreath{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}
}
@media(max-width:700px){
  .countdown-heart{display:none}
}

/* RSVP progressivo per gruppi fino a 15 persone. */
.rsvp-form{width:min(940px,100%)}
.rsvp-form-section{width:min(940px,92%)}
.guest-counts{display:grid;grid-template-columns:1fr 1fr minmax(160px,.8fr);gap:14px;align-items:end}
.guest-total{min-height:72px;display:grid;place-content:center;text-align:center;border:1px solid rgba(201,154,69,.32);border-radius:16px;background:#fffaf3}
.guest-total small{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#765b54}
.guest-total strong{font:700 25px 'Cormorant Garamond',serif;color:#8e0d22}
.rsvp-limit{margin:2px 0 4px;padding:12px 14px;border-radius:14px;background:#fff8ec;color:#66524b;font:500 16px 'Cormorant Garamond',serif;text-align:center}
.rsvp-limit.is-error{background:#fff0f0;color:#9b1027;border:1px solid #efc4ca}
.guest-list{display:grid;gap:16px;margin-top:4px}
.guest-card{min-width:0;margin:0;padding:18px;border:1px solid rgba(201,154,69,.3);border-radius:20px;background:rgba(255,253,248,.92);box-shadow:0 12px 28px rgba(73,42,31,.07)}
.guest-card legend{padding:0 10px;color:#8e0d22;font:700 22px 'Cormorant Garamond',serif}
.guest-fields{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.guest-fields label{font-size:13px;font-weight:800;color:#685756;display:flex;flex-direction:column;gap:8px}
.guest-fields .wide{grid-column:1/-1}
.guest-fields textarea{min-height:72px}
.guest-seat{justify-content:center;align-items:flex-start;flex-direction:row!important;padding:14px;border:1px solid #ecd5d5;border-radius:14px;background:#fffaf7;font-weight:700!important}
.guest-seat input{width:19px;height:19px;margin:0;flex:0 0 auto}
.rsvp-form input,.rsvp-form select,.rsvp-form textarea{border:1px solid rgba(201,154,69,.3);background:linear-gradient(180deg,#fffdf9,#fff8f1);box-shadow:inset 0 1px rgba(255,255,255,.9);transition:border-color .22s ease,box-shadow .22s ease,background .22s ease}
.rsvp-form input:focus,.rsvp-form select:focus,.rsvp-form textarea:focus{outline:0;border-color:#b97680;background:#fff;box-shadow:0 0 0 4px rgba(185,118,128,.12),0 8px 20px rgba(75,43,33,.06)}
.rsvp-form input[readonly]{color:#765b54;background:#f7eee5;cursor:default}
.auto-filled:after{content:"Compilato automaticamente";font:italic 500 12px 'Cormorant Garamond',serif;color:#9b7b69;margin-top:-3px}
.guest-counts>label{padding:15px;border:1px solid rgba(201,154,69,.24);border-radius:18px;background:rgba(255,253,248,.82)}
.guest-counts input{text-align:center;font:700 24px 'Cormorant Garamond',serif;color:#8e0d22}
.number-stepper{display:grid;grid-template-columns:48px minmax(54px,1fr) 48px;align-items:stretch;min-height:52px;border:1px solid rgba(201,154,69,.38);border-radius:15px;overflow:hidden;background:#fffdf9;box-shadow:inset 0 1px rgba(255,255,255,.9)}
.number-stepper input{width:100%!important;min-width:0;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;appearance:textfield;-moz-appearance:textfield}
.number-stepper input::-webkit-inner-spin-button,.number-stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.stepper-btn{display:grid;place-items:center;border:0;background:linear-gradient(180deg,#fff9f0,#f5e8da);color:#8e0d22;font:500 30px/1 Arial,sans-serif;cursor:pointer;touch-action:manipulation;transition:background .18s ease,transform .12s ease,color .18s ease}
.stepper-btn:first-child{border-right:1px solid rgba(201,154,69,.28)}.stepper-btn:last-child{border-left:1px solid rgba(201,154,69,.28)}
.stepper-btn:hover:not(:disabled){background:#f1ddd6}.stepper-btn:active:not(:disabled){transform:scale(.92)}.stepper-btn:disabled{color:#cbbdb5;background:#f8f3ed;cursor:not-allowed}
.stepper-btn:focus-visible{position:relative;z-index:1;outline:3px solid rgba(185,118,128,.28);outline-offset:-3px}
.guest-seat,.privacy-check{position:relative;cursor:pointer}
.guest-seat input,.privacy-check input{appearance:none;-webkit-appearance:none;width:22px!important;height:22px!important;border:1.5px solid #c99a45!important;border-radius:7px!important;background:#fffaf3!important;display:grid;place-content:center;cursor:pointer}
.guest-seat input:before,.privacy-check input:before{content:"";width:11px;height:6px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg) scale(0);transition:transform .18s ease}
.guest-seat input:checked,.privacy-check input:checked{background:linear-gradient(135deg,#8e0d22,#c99a45)!important;border-color:#8e0d22!important}
.guest-seat input:checked:before,.privacy-check input:checked:before{transform:rotate(-45deg) scale(1)}
.privacy-check{padding:14px 16px;border:1px solid rgba(201,154,69,.25);border-radius:16px;background:#fffaf3;align-items:flex-start!important;gap:11px!important}
.privacy-check span{font-weight:600;line-height:1.4}

/* RSVP a tre percorsi. */
.rsvp-form [hidden]{display:none!important}
.attendance-choice{margin:2px 0 8px;padding:15px;border:1px solid rgba(201,154,69,.28);border-radius:22px;background:rgba(255,253,248,.82);display:grid;gap:10px}
.attendance-choice legend{padding:0 10px;color:#8e0d22;font:700 22px 'Cormorant Garamond',serif}
.attendance-choice>label{display:grid!important;grid-template-columns:24px 38px 1fr;align-items:center;gap:11px;padding:13px 14px;border:1px solid rgba(201,154,69,.22);border-radius:16px;background:#fff;cursor:pointer;transition:.22s ease}
.attendance-choice>label:hover{transform:translateY(-1px);border-color:rgba(185,118,128,.55);box-shadow:0 9px 22px rgba(73,42,31,.07)}
.attendance-choice input{appearance:none;-webkit-appearance:none;width:21px!important;height:21px!important;margin:0;border:1.5px solid #c99a45!important;border-radius:50%!important;display:grid;place-content:center;background:#fffaf3!important}
.attendance-choice input:before{content:"";width:11px;height:11px;border-radius:50%;background:linear-gradient(135deg,#8e0d22,#c99a45);transform:scale(0);transition:transform .16s ease}
.attendance-choice input:checked:before{transform:scale(1)}
.attendance-choice label:has(input:checked){border-color:rgba(142,13,34,.5);background:linear-gradient(135deg,#fffaf3,#fff3e8);box-shadow:0 10px 25px rgba(142,13,34,.08)}
.choice-icon{font-size:27px;line-height:1;text-align:center}
.attendance-choice strong{display:block;color:#3f302d;font-size:14px}.attendance-choice small{display:block;margin-top:3px;color:#806a63;font:italic 500 15px 'Cormorant Garamond',serif}
.rsvp-path{display:grid;gap:14px;padding:18px;border:1px solid rgba(201,154,69,.27);border-radius:22px;background:linear-gradient(145deg,rgba(255,253,248,.9),rgba(255,247,238,.82))}
.rsvp-path .guest-counts{width:100%;margin:0}
.afterparty-grid{display:grid;grid-template-columns:minmax(190px,.65fr) 1.35fr;gap:14px;align-items:stretch}
.afterparty-grid label{display:flex;flex-direction:column;gap:8px;font-size:13px;font-weight:800;color:#685756}
.afterparty-grid input{text-align:center;font:700 24px 'Cormorant Garamond',serif;color:#8e0d22}
.afterparty-grid textarea{height:100%;min-height:96px}
.guest-seat{min-height:50px;align-self:end;align-items:center!important;justify-content:flex-start!important}
.guest-total{height:100%;min-height:74px}
@media(max-width:700px){
  .attendance-choice{padding:12px}.attendance-choice>label{grid-template-columns:22px 34px 1fr;padding:12px 10px;gap:9px}.choice-icon{font-size:24px}
  .rsvp-path{padding:14px 11px}.afterparty-grid{grid-template-columns:1fr}.guest-total{min-height:62px}
}

/* Ordine sezioni, calendario e rifiniture responsive. */
.venue-section + .program-section{display:none}
.calendar-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;margin:24px 0 0 35px;padding:12px 20px;border:1px solid rgba(201,154,69,.5);border-radius:999px;background:rgba(255,253,248,.78);color:#8e0d22;font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;box-shadow:0 10px 24px rgba(73,42,31,.08);transition:.25s ease}
.calendar-btn:hover{transform:translateY(-2px);background:#fff;box-shadow:0 14px 30px rgba(73,42,31,.13)}
.venue-text .line{line-height:1.45}
@media(min-width:701px){
  .countdown-card + .program-section{margin-top:0}
  .program-section + .venue-section{margin-top:58px}
}
@media(max-width:700px){
  .hero-photo{height:58vh;max-height:470px;background-position:center 18%;mask-image:linear-gradient(180deg,#000 0%,#000 86%,transparent 100%)}
  .hero-copy{margin-top:-18px;padding-top:28px;padding-bottom:34px}
  .calendar-btn{margin:20px auto 0;min-height:46px;width:min(100%,280px)}
  .countdown-card{margin-top:30px;margin-bottom:28px}
  .countdown-card + .program-section{margin-top:0!important}
  .program-section + .venue-section{margin-top:42px}
  .venue-text .line{font-size:19px;line-height:1.5;margin:12px 0}
}
.mobile-scroll-title{display:none}
.thanks-card{position:relative;overflow:hidden}
.thanks-card:before,.thanks-card:after{content:"✦";position:absolute;color:rgba(201,154,69,.34);font-size:34px}.thanks-card:before{left:28px;top:30px}.thanks-card:after{right:30px;bottom:32px}
.thanks-kicker{display:block;margin:2px 0 12px;color:#aa7c39;font-size:11px;font-weight:800;letter-spacing:.22em;text-transform:uppercase}
.thanks-card .pdf-download{display:inline-flex;margin:18px auto 8px;gap:9px;align-items:center;justify-content:center}.thanks-card .pdf-download span{font-size:19px;line-height:1}
.pdf-note{display:block;margin:0 auto 18px;color:#7b6962;font:italic 500 15px 'Cormorant Garamond',serif}
.thanks-back{display:inline-block;color:#8e0d22;font-size:12px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;text-decoration:underline;text-underline-offset:4px}
@media(min-width:701px){
  .mobile-scroll-title{display:block;position:static;flex:0 0 auto;margin:0 clamp(18px,3vw,54px);opacity:0;transform:translateY(5px);color:#a3122d;font:400 clamp(29px,2.5vw,38px) 'Great Vibes','Allura',cursive;white-space:nowrap;pointer-events:none;text-shadow:0 1px rgba(255,255,255,.9);transition:opacity .3s ease,transform .3s ease}
  .topbar.is-scrolled .mobile-scroll-title{opacity:1;transform:none}
}
@media(min-width:701px) and (max-width:900px){.mobile-scroll-title{display:none}}
@media(max-width:700px){
  .mobile-scroll-title{display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-44%);opacity:0;color:#a3122d;font:400 31px 'Great Vibes','Allura',cursive;white-space:nowrap;pointer-events:none;transition:opacity .28s ease,transform .28s ease;text-shadow:0 1px rgba(255,255,255,.8)}
  .topbar.is-scrolled .mobile-scroll-title{opacity:1;transform:translate(-50%,-50%)}
  .topbar.is-scrolled .logo img{width:42px!important}
}
@media(max-width:700px){
  .rsvp-form-section{width:calc(100% - 22px)}
  .guest-counts{grid-template-columns:1fr 1fr}
  .guest-total{grid-column:1/-1;min-height:62px}
  .guest-fields{grid-template-columns:1fr}
  .guest-fields .wide{grid-column:auto}
  .guest-card{padding:15px 13px;border-radius:18px}
  .guest-card legend{font-size:21px}
  .number-stepper{grid-template-columns:52px minmax(48px,1fr) 52px;min-height:56px}.stepper-btn{font-size:32px}
}
/* RSVP mobile: ogni controllo resta dentro la viewport anche durante la compilazione. */
@media(max-width:700px){
  html,body,main{width:100%;max-width:100%;overflow-x:hidden}
  .rsvp-form-section{width:calc(100% - 20px)!important;max-width:calc(100vw - 20px)!important;margin-left:auto!important;margin-right:auto!important;overflow:visible}
  .rsvp-form,.rsvp-form .form-grid,.rsvp-path,.guest-counts,.guest-list,.guest-card,.guest-fields,.afterparty-grid,.attendance-choice{width:100%;max-width:100%;min-width:0}
  .rsvp-form{padding-left:12px!important;padding-right:12px!important;overflow:hidden}
  .rsvp-form fieldset,.rsvp-form label,.rsvp-form .wide,.rsvp-form .number-stepper{max-width:100%;min-width:0}
  .rsvp-form input:not([type="checkbox"]):not([type="radio"]),.rsvp-form select,.rsvp-form textarea{display:block;width:100%!important;max-width:100%!important;min-width:0!important}
  .attendance-choice>label{width:100%;max-width:100%;min-width:0;grid-template-columns:22px 32px minmax(0,1fr)!important}
  .attendance-choice>label>span:last-child{min-width:0;max-width:100%;overflow-wrap:anywhere}
  .guest-fields>*{min-width:0;max-width:100%}
  .guest-seat span,.privacy-check span{min-width:0;overflow-wrap:anywhere}
}
/* Barra realmente fissa e contatori RSVP leggibili su smartphone. */
@media(max-width:700px){
  .topbar{position:fixed!important;top:0!important;left:0!important;right:0!important;width:100%!important;z-index:1000!important}
  .topbar + main{padding-top:84px!important}
  .guest-counts{grid-template-columns:minmax(0,1fr)!important;gap:12px!important}
  .guest-counts>label,.guest-total{grid-column:1!important;width:100%!important;min-width:0!important}
  .guest-counts>label{padding:14px!important}
  .number-stepper{grid-template-columns:64px minmax(70px,1fr) 64px!important;min-height:60px!important;width:100%!important}
  .number-stepper input,.guest-total strong{font-family:Inter,Arial,sans-serif!important;font-size:24px!important;font-weight:800!important;font-variant-numeric:tabular-nums}
  .stepper-btn{font-size:0!important;color:#8e0d22!important;visibility:visible!important;opacity:1!important}
  .stepper-btn:before{font:500 34px/1 Arial,sans-serif!important;color:currentColor!important}
  .stepper-btn:first-child:before{content:"−"}.stepper-btn:last-child:before{content:"+"}
  .stepper-btn:disabled{color:#cbbdb5!important;opacity:1!important}
}
@media(max-width:390px){.topbar + main{padding-top:80px!important}}
.quote-emoji{display:inline-block;font-family:Apple Color Emoji,Segoe UI Emoji,Noto Color Emoji,sans-serif;font-style:normal!important}
.red-heart{color:#c51632!important;font-style:normal!important}
.website-field{position:absolute!important;left:-10000px!important;top:auto!important;width:1px!important;height:1px!important;overflow:hidden!important;opacity:0!important;pointer-events:none!important}
.privacy-link{color:#8e0d22;text-decoration:underline;text-underline-offset:3px;font-weight:800}
.attendance-reaction{position:fixed;left:50%;top:50%;z-index:12000;display:grid;place-items:center;width:124px;height:124px;border:1px solid rgba(201,154,69,.45);border-radius:50%;background:radial-gradient(circle at 36% 28%,rgba(255,255,255,.98),rgba(255,246,234,.94));box-shadow:0 24px 70px rgba(72,34,25,.25),inset 0 0 0 7px rgba(255,255,255,.52);font-family:Apple Color Emoji,Segoe UI Emoji,Noto Color Emoji,sans-serif;font-size:72px;line-height:1;pointer-events:none;opacity:0;visibility:hidden;transform:translate(-50%,-44%) scale(.55) rotate(-7deg)}
.attendance-reaction.is-visible{animation:attendanceReaction 1.35s cubic-bezier(.2,.85,.25,1) both;visibility:visible}
@keyframes attendanceReaction{0%{opacity:0;transform:translate(-50%,-38%) scale(.45) rotate(-9deg)}18%{opacity:1;transform:translate(-50%,-52%) scale(1.12) rotate(4deg)}38%,68%{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}100%{opacity:0;transform:translate(-50%,-58%) scale(.82) rotate(3deg);visibility:hidden}}
@media(max-width:700px){.attendance-reaction{width:108px;height:108px;font-size:64px}}
@media(prefers-reduced-motion:reduce){.attendance-reaction.is-visible{animation:attendanceReactionReduced .9s ease both}@keyframes attendanceReactionReduced{0%,100%{opacity:0}20%,75%{opacity:1}}}


/* Dress code natalizio: evidente, elegante e giocoso. */
.dress-code-section{width:min(990px,84%);margin:4px auto 42px;scroll-margin-top:90px}
.dress-code-card{position:relative;overflow:hidden;display:grid;grid-template-columns:118px 1fr 84px;align-items:center;gap:26px;padding:34px 38px;border-radius:28px;background:linear-gradient(135deg,rgba(255,255,255,.98),rgba(255,244,240,.97));border:1px solid rgba(153,15,38,.22);box-shadow:0 22px 58px rgba(108,24,38,.12)}
.dress-code-card:before{content:"";position:absolute;inset:0 auto 0 0;width:6px;background:linear-gradient(180deg,#8f0d22,#c92f43,#8f0d22)}
.dress-code-card:after{content:"";position:absolute;width:220px;height:220px;border-radius:50%;right:-88px;top:-108px;background:radial-gradient(circle,rgba(180,20,42,.11),transparent 68%);pointer-events:none}
.dress-code-badge{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:18px 14px;border-radius:26px;background:linear-gradient(145deg,rgba(162,15,41,.14),rgba(201,47,67,.08));border:1px solid rgba(162,15,41,.16)}
.dress-code-chip{width:48px;height:48px;display:grid;place-items:center;border-radius:50%;background:linear-gradient(145deg,#a20f29,#7e091d);color:#fff;font-size:24px;box-shadow:0 12px 24px rgba(137,11,34,.18);border:3px solid rgba(255,255,255,.88);animation:dressChipFloat 2.9s ease-in-out infinite}
.dress-code-chip:nth-child(2){animation-delay:.35s}
.dress-code-chip:nth-child(3){animation-delay:.7s}
.dress-code-copy{text-align:left}
.dress-code-heading-row{display:inline-flex;align-items:center;gap:10px;margin-bottom:8px}
.dress-code-kicker{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:9px 18px;border-radius:999px;text-transform:uppercase;letter-spacing:.2em;font-size:12px;font-weight:900;color:#fff;background:linear-gradient(135deg,#a30f29,#ce3044);box-shadow:0 10px 24px rgba(155,16,40,.22);animation:dressCodePulse 2.5s ease-in-out infinite}
.dress-code-kicker:after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;background:linear-gradient(120deg,rgba(255,255,255,.0),rgba(255,255,255,.78),rgba(255,255,255,.0));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:dressCodeShimmer 3.2s linear infinite}
.dress-code-copy h2{font-family:'Cormorant Garamond',serif;font-size:clamp(31px,4vw,43px);line-height:1.02;margin:0 0 12px;color:#7f0b1e}
.dress-code-copy p{margin:0;color:#443838;font-family:'Cormorant Garamond',serif;font-size:21px;line-height:1.42}
.dress-code-copy strong{color:#8f0d22;font-weight:800}
.dress-code-note{margin-top:10px!important;font-size:18px!important;color:#675352!important;font-style:normal!important}
.dress-code-rule{display:inline;white-space:nowrap}
.dress-code-sparkles{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;position:relative;z-index:1}
.red-swatch{display:block;width:16px;height:16px;border-radius:50%;background:linear-gradient(145deg,#d9384e,#9b1028);box-shadow:0 8px 18px rgba(155,16,40,.20);animation:dressSwatchGlow 2.2s ease-in-out infinite}
.red-swatch:nth-child(2){width:22px;height:22px;animation-delay:.3s}
.red-swatch:nth-child(3){animation-delay:.6s}
@keyframes dressChipFloat{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-6px) scale(1.04)}}
@keyframes dressCodePulse{0%,100%{transform:scale(1);box-shadow:0 10px 24px rgba(155,16,40,.22)}50%{transform:scale(1.05);box-shadow:0 14px 30px rgba(155,16,40,.30)}}
@keyframes dressCodeShimmer{0%{transform:translateX(-130%)}60%,100%{transform:translateX(130%)}}50%{transform:translateY(-5px)}}
@keyframes dressSwatchGlow{0%,100%{transform:scale(1);opacity:.82}50%{transform:scale(1.18);opacity:1}}
@media(max-width:860px){
  .dress-code-section{width:calc(100% - 28px);margin:0 auto 30px}
  .dress-code-card{grid-template-columns:1fr;padding:28px 22px 26px;gap:16px;text-align:center}
  .dress-code-badge{flex-direction:row;gap:12px;padding:14px 16px;justify-content:center}
  .dress-code-chip{width:44px;height:44px;font-size:22px}
  .dress-code-copy{text-align:center}
  .dress-code-heading-row{justify-content:center}
  .dress-code-copy h2{font-size:34px}
  .dress-code-copy p{font-size:19px}
  .dress-code-note{font-size:17px!important}
  .dress-code-sparkles{flex-direction:row;justify-content:center}
}


/* RSVP deadline emphasis */
.rsvp-box .rsvp-instruction{font-family:Inter,Arial,sans-serif;font-size:14px;line-height:1.55;color:#6d5a58;margin:0 auto 16px;max-width:520px}
.rsvp-box .rsvp-instruction strong{color:#971b34;font-weight:900}
.rsvp-form>p strong{color:#971b34;font-weight:900}
@media(max-width:860px){.rsvp-box .rsvp-instruction{font-size:13px;line-height:1.5;max-width:330px;margin-bottom:16px}}
