    @font-face {
      font-family: 'slight';
      src: url('https://royal-invite.com/wp-content/uploads/2026/01/slight-regular.ttf') format('truetype');
      font-display: swap;
    }

    :root {
      --verde-oliva:  #5C6B3A;
      --verde-oscuro: #3D4A28;
      --verde-medio:  #6B7B4A;
      --verde-savila: #87956E;
      --verde-savila-hover: #748562;
      --verde-savila-texto: #F8F5F0;
      --tierra:       #7A6B4F;
      --cafe-oscuro:  #4A4035;
      --taupe:        #A89880;
      --rosa-palo:    #C4909A;
      --rosa-suave:   #E8C4B8;
      --crema:        #F0EBE3;
      --crema-oscura: #E2D9CE;
      --beige-claro:  #F5F0E8;
      --beige-medio:  #EDE6DC;
      --beige-calido: #E2DACE;
      --olivo-sobre:  #575038;
      --olivo-sobre-os: #3E392A;
      --olivo-sobre-luz: #6E664C;
      --dorado:       #605A35;
      --texto:        #3D3830;
      --invite-section-y: clamp(1.75rem, 5vw, 2.5rem);
    }

    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
    html { overflow-x: clip; }
    html.lock-scroll, body.lock-scroll {
      overflow: hidden !important; height: 100vh !important;
      position: fixed !important; width: 100% !important;
    }
    body {
      font-family: 'Antic Didone', serif;
      background-color: var(--beige-claro);
      color: var(--texto); overflow-x: clip;
    }
    img { max-width: 100%; height: auto; display: block; }

    /* ══ FONDO ACUARELA (beige neutro, sin rosa) ══ */
    body::before {
      content: '';
      position: fixed; inset: 0; z-index: -2;
      background-color: var(--beige-claro);
      background-image:
        linear-gradient(180deg, rgba(247,242,235,0.78) 0%, rgba(241,235,226,0.85) 100%),
        radial-gradient(ellipse 88% 58% at 6% 12%,   rgba(228,218,204,0.35) 0%, transparent 66%),
        radial-gradient(ellipse 72% 48% at 94% 16%,  rgba(218,208,192,0.22) 0%, transparent 62%),
        radial-gradient(ellipse 78% 52% at 16% 44%,  rgba(205,195,178,0.28) 0%, transparent 68%),
        radial-gradient(ellipse 62% 50% at 86% 46%,  rgba(198,188,172,0.18) 0%, transparent 64%),
        radial-gradient(ellipse 82% 54% at 10% 74%,  rgba(185,172,152,0.24) 0%, transparent 70%),
        radial-gradient(ellipse 68% 52% at 84% 80%,  rgba(248,243,236,0.7) 0%, transparent 68%),
        url('https://pub-a65601eb9ffe4b62a9bcbf111a23ee8c.r2.dev/invitations/custom-orders/daniela-sofia-xv/fondo-ro.webp');
      background-blend-mode: normal, normal, normal, normal, normal, normal, normal, soft-light;
      background-size: 100% 100%, 100% 100%, 100% 100%, 100% 100%, 100% 100%, 100% 100%, 100% 100%, cover;
      background-position: center center;
      background-repeat: no-repeat;
      background-attachment: scroll;
      pointer-events: none;
    }
    @media (min-width: 769px) {
      body::before { background-attachment: fixed; }
    }
    body::after {
      content: '';
      position: fixed; inset: 0; z-index: -1; pointer-events: none;
      opacity: 0.42;
      background-image:
        repeating-linear-gradient(0deg, rgba(74,64,53,0.022) 0 1px, transparent 1px 3px),
        repeating-linear-gradient(90deg, rgba(74,64,53,0.015) 0 1px, transparent 1px 4px);
      mix-blend-mode: multiply;
    }

    .wash-rosa { position: relative; }
    .wash-rosa::before {
      content: ''; position: absolute; inset: -24px 0; z-index: -1; pointer-events: none;
      background: radial-gradient(ellipse 92% 72% at 50% 42%, rgba(228,220,206,0.32) 0%, transparent 70%);
    }
    .wash-cafe { position: relative; }
    .wash-cafe::before {
      content: ''; position: absolute; inset: -24px 0; z-index: -1; pointer-events: none;
      background: radial-gradient(ellipse 88% 68% at 28% 48%, rgba(210,198,178,0.32) 0%, transparent 68%);
    }
    .wash-oliva { position: relative; }
    .wash-oliva::before {
      content: ''; position: absolute; inset: -24px 0; z-index: -1; pointer-events: none;
      background: radial-gradient(ellipse 82% 62% at 72% 46%, rgba(168,152,128,0.22) 0%, transparent 66%);
    }
    /* Halo crema en textos sobre fondo acuarela — evita tinte verde */
    .section-frase .frase-txt,
    .section-countdown .countdown-titulo,
    .section-countdown .countdown-subtxt,
    .section-countdown .cd-label,
    .section-titulo-slight,
    .section-versiculo .versiculo-txt,
    .section-versiculo .versiculo-ref,
    .gift-wrap-left .title,
    .gift-wrap-left .intro,
    .cierre-txt,
    .cierre-firma,
    #invitacion,
    #invitacion h2,
    #invitacion p {
      text-shadow: 0 0 10px rgba(252,248,243,0.98), 0 0 18px rgba(252,248,243,0.88);
    }
    .bloque-dress-regalos {
      position: relative;
      padding-bottom: 0;
    }

    /* Luciérnagas solo en la pantalla de apertura */
    .sparkle-container { position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; overflow: hidden; z-index: 75; }
    .sparkle-container.is-hidden { display: none; }
    .sparkle {
      position: absolute; border-radius: 50%;
      background: radial-gradient(circle, rgba(255,255,255,1) 0%, rgba(240,230,200,0.8) 40%, transparent 100%);
      opacity: 0;
      box-shadow: 0 0 6px rgba(255,248,230,0.9), 0 0 12px rgba(200,220,180,0.5);
      animation: twinkle 3s ease-in-out infinite;
    }
    @keyframes twinkle {
      0%   { opacity: 0; transform: scale(0.5); }
      35%  { opacity: 1; transform: scale(1.3); }
      65%  { opacity: 0.8; transform: scale(1.1); }
      100% { opacity: 0; transform: scale(0.5); }
    }

    /* ══════════════════════ OVERLAY (entrada — nombres en beige, sobre olivo) ══════════════════════ */
    .overlay-container {
      position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; height: 100dvh;
      background: linear-gradient(180deg, #F2EBE2 0%, #EBE3D8 38%, #E4DDD0 100%);
      z-index: 70; display: flex; justify-content: center; align-items: center; overflow: hidden;
    }
    .overlay-container::before {
      content: ''; position: absolute; inset: 0;
      background: repeating-linear-gradient(0deg, rgba(0,0,0,0.012) 0 1px, transparent 1px 4px);
      pointer-events: none;
    }
    .overlay-container::after {
      content: ''; position: absolute; inset: 0; pointer-events: none;
      background:
        radial-gradient(ellipse 90% 42% at 50% 18%, rgba(255,252,247,0.55) 0%, transparent 72%);
    }
    .overlay-content { position: relative; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; }

    #lazo {
      position: absolute;
      top: 68%;
      left: 76%;
      --lazo-apertura-rot: 20deg; /* ← inclínalo aquí: ej. -5deg izq, 5deg der */
      transform: translate(-50%, -50%) scale(0.5) rotate(var(--lazo-apertura-rot));
      transform-origin: 50% 10%;
      width: 100vw;
      height: auto;
      max-height: 500px;
      max-width: none;
      object-fit: contain;
      z-index: 80;
      opacity: 1;
      pointer-events: none;
      animation: lazo-pendulo-m 9.1s ease-in-out infinite;
    }
    @keyframes lazo-pendulo-m {
      0%, 100% { transform: translate(-50%, -50%) scale(0.9) rotate(calc(var(--lazo-apertura-rot) - 7deg)); }
      50%      { transform: translate(-50%, -50%) scale(0.9) rotate(calc(var(--lazo-apertura-rot) + 7deg)); }
    }
    @media (min-width: 640px) {
      #lazo {
        top: 66%;
        transform: translate(-63%, -50%) scale(1.0) rotate(var(--lazo-apertura-rot));
        animation-name: lazo-pendulo-d;
      }
      @keyframes lazo-pendulo-d {
        0%, 100% { transform: translate(-63%, -50%) scale(1.0) rotate(calc(var(--lazo-apertura-rot) - 6deg)); }
        50%      { transform: translate(-63%, -50%) scale(1.0) rotate(calc(var(--lazo-apertura-rot) + 6deg)); }
      }
    }

    #flores {
      position: absolute; top: 40%; left: 50%;
      width: 200px; height: 200px; z-index: 85; opacity: 1; pointer-events: none;
      transform-origin: center bottom;
      mix-blend-mode: normal;
      animation: balanceoHoja 4s ease-in-out infinite;
    }
    @keyframes balanceoHoja {
      0%   { transform: translate(-50%, -50%) rotate(-5deg); }
      25%  { transform: translate(-50%, -50%) rotate(-10deg); }
      75%  { transform: translate(-50%, -50%) rotate(0deg); }
      100% { transform: translate(-50%, -50%) rotate(-5deg); }
    }

    /* Nombres en la apertura — solo texto, sin caja */
    .overlay-nombres {
      position: absolute;
      top: clamp(52px, 14vh, 108px);
      left: 50%;
      transform: translateX(-50%);
      z-index: 86;
      margin: 0;
      padding: 0;
      max-width: 92vw;
      font-family: 'slight', cursive;
      font-size: 6vw;
      font-weight: 400;
      line-height: 1.38;
      color: var(--verde-oliva);
      text-align: center;
      white-space: nowrap;
      pointer-events: none;
      text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);
      overflow: visible;
    }
    @media (min-width: 480px) {
      .overlay-nombres { font-size: 28px; }
    }

    .notif-container {
      position: absolute; top: 58%; left: 50%;
      transform: translate(-50%, -50%);
      display: flex; flex-direction: column; align-items: center; z-index: 90;
    }
    @media (min-width: 640px) {
      .notif-container { top: 56%; }
    }
    #selloButton {
      width: 100px; height: 100px;
      animation: pulso 1.5s ease-in-out infinite;
      border: none !important; outline: none !important; background: transparent; cursor: pointer;
      -webkit-tap-highlight-color: transparent;
      filter: drop-shadow(0 6px 20px rgba(45, 38, 28, 0.55));
    }
    @keyframes pulso { 0%,100% { transform: scale(1); } 50% { transform: scale(1.1); } }
    .notif-label {
      position: absolute; top: 118px; left: 50%; transform: translateX(-50%);
      color: #fff; font-family: 'Antic Didone', serif; font-style: italic;
      font-size: 14px; white-space: nowrap; letter-spacing: 0.08em;
      text-shadow: 0 1px 6px rgba(0, 0, 0, 0.35);
    }
    .notif-container .loading-bar-bg {
      position: absolute; top: 152px; left: 50%; transform: translateX(-50%);
      width: 88px; height: 4px;
      background: rgba(255, 255, 255, 0.35);
      border-radius: 4px; overflow: hidden; z-index: 96;
    }
    .notif-container .loading-bar-fill {
      width: 0%; height: 100%;
      background: #fff;
      border-radius: 2px; transition: width 0.1s linear;
    }

    #sobreDiv {
      position: absolute; top: 0; left: 0; width: 100%; height: 100%;
      display: flex; justify-content: center; align-items: center; overflow: hidden; pointer-events: none;
      --papel: var(--olivo-sobre);
      --papel-os: var(--olivo-sobre-os);
      --papel-luz: var(--olivo-sobre-luz);
    }
    .sobre {
      position: absolute; top: 0; height: 100vh !important; height: 105dvh !important;
      max-width: none; margin: 0; padding: 0; border: none; box-sizing: border-box;
      pointer-events: none; overflow: hidden;
      transition: transform 1s ease-in-out, opacity 1s ease-in-out;
      background-color: var(--papel);
      background-image:
        radial-gradient(ellipse 110% 65% at 50% -8%, var(--papel-luz), transparent 54%),
        linear-gradient(125deg, rgba(255,255,255,0.22) 0%, rgba(255,255,255,0) 46%),
        linear-gradient(315deg, rgba(45, 38, 28, 0.1) 0%, rgba(45, 38, 28, 0) 44%),
        repeating-linear-gradient(84deg, rgba(255,255,255,0.04) 0 1px, rgba(0,0,0,0) 1px 5px),
        linear-gradient(188deg, #686042 0%, var(--papel) 42%, var(--papel-os) 100%);
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.35), inset 0 -4px 18px rgba(45,38,28,0.18);
    }
    .sobre::before {
      content: ''; position: absolute; inset: 0; pointer-events: none; opacity: 0.22;
      background-image: repeating-linear-gradient(0deg, rgba(45,38,28,0.07) 0 1px, rgba(0,0,0,0) 1px 3px);
      mix-blend-mode: multiply;
    }
    #sobre1::after, #sobre2::after, #sobre3::after, #sobre4::after {
      content: ''; position: absolute; pointer-events: none; z-index: 1; opacity: 0.4;
      background: linear-gradient(105deg, rgba(255,255,255,0.32) 0%, rgba(255,255,255,0) 42%, rgba(45,38,28,0.08) 100%);
    }
    #sobre1 {
      left: 0; right: auto; z-index: 40; transform-origin: left center;
      -webkit-clip-path: polygon(0% 0%, 2% 0%, 86% 43%, 91.5% 47.5%, 94% 50%, 91.5% 52.5%, 86% 57%, 2% 100%, 0% 100%);
      clip-path: polygon(0% 0%, 2% 0%, 86% 43%, 91.5% 47.5%, 94% 50%, 91.5% 52.5%, 86% 57%, 2% 100%, 0% 100%);
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.35), inset 0 -4px 18px rgba(45,38,28,0.18), inset -10px 0 22px rgba(255,255,255,0.12);
    }
    #sobre1::after {
      inset: 11% 14% 11% 0;
      -webkit-clip-path: polygon(0% 0%, 2.5% 0%, 82% 44%, 88% 48%, 91% 50%, 88% 52%, 82% 56%, 2.5% 100%, 0% 100%);
      clip-path: polygon(0% 0%, 2.5% 0%, 82% 44%, 88% 48%, 91% 50%, 88% 52%, 82% 56%, 2.5% 100%, 0% 100%);
    }
    #sobre2 {
      right: 0; left: auto; z-index: 40; transform-origin: right center;
      -webkit-clip-path: polygon(100% 0%, 98% 0%, 14% 43%, 8.5% 47.5%, 6% 50%, 8.5% 52.5%, 14% 57%, 98% 100%, 100% 100%);
      clip-path: polygon(100% 0%, 98% 0%, 14% 43%, 8.5% 47.5%, 6% 50%, 8.5% 52.5%, 14% 57%, 98% 100%, 100% 100%);
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.35), inset 0 -4px 18px rgba(45,38,28,0.18), inset 10px 0 22px rgba(0,0,0,0.06);
    }
    #sobre2::after {
      inset: 11% 0 11% 14%;
      -webkit-clip-path: polygon(100% 0%, 97.5% 0%, 18% 44%, 12% 48%, 9% 50%, 12% 52%, 18% 56%, 97.5% 100%, 100% 100%);
      clip-path: polygon(100% 0%, 97.5% 0%, 18% 44%, 12% 48%, 9% 50%, 12% 52%, 18% 56%, 97.5% 100%, 100% 100%);
    }
    #sobre3 {
      left: 0; right: auto; z-index: 30; transform-origin: left center;
      -webkit-clip-path: polygon(0% 0%, 2% 0%, 82% 44%, 89% 48%, 92% 50%, 89% 52%, 82% 56%, 2% 100%, 0% 100%);
      clip-path: polygon(0% 0%, 2% 0%, 82% 44%, 89% 48%, 92% 50%, 89% 52%, 82% 56%, 2% 100%, 0% 100%);
    }
    #sobre3::after {
      inset: 13% 18% 13% 0; opacity: 0.35;
      -webkit-clip-path: polygon(0% 0%, 2.8% 0%, 78% 45%, 85% 48.5%, 88.5% 50%, 85% 51.5%, 78% 55%, 2.8% 100%, 0% 100%);
      clip-path: polygon(0% 0%, 2.8% 0%, 78% 45%, 85% 48.5%, 88.5% 50%, 85% 51.5%, 78% 55%, 2.8% 100%, 0% 100%);
    }
    #sobre4 {
      right: 0; left: auto; z-index: 30; transform-origin: right center;
      -webkit-clip-path: polygon(100% 0%, 98% 0%, 18% 44%, 11% 48%, 8% 50%, 11% 52%, 18% 56%, 98% 100%, 100% 100%);
      clip-path: polygon(100% 0%, 98% 0%, 18% 44%, 11% 48%, 8% 50%, 11% 52%, 18% 56%, 98% 100%, 100% 100%);
    }
    #sobre4::after {
      inset: 13% 0 13% 18%; opacity: 0.35;
      -webkit-clip-path: polygon(100% 0%, 97.2% 0%, 22% 45%, 15% 48.5%, 11.5% 50%, 15% 51.5%, 22% 55%, 97.2% 100%, 100% 100%);
      clip-path: polygon(100% 0%, 97.2% 0%, 22% 45%, 15% 48.5%, 11.5% 50%, 15% 51.5%, 22% 55%, 97.2% 100%, 100% 100%);
    }
    @media (max-width: 639px) {
      #sobre1, #sobre2, #sobre3, #sobre4 { width: 100vw; }
      #sobre1 {
        -webkit-clip-path: polygon(0% 0%, 1.8% 0%, 46% 44%, 49.5% 47.5%, 51.5% 50%, 49.5% 52.5%, 46% 56%, 1.8% 100%, 0% 100%);
        clip-path: polygon(0% 0%, 1.8% 0%, 46% 44%, 49.5% 47.5%, 51.5% 50%, 49.5% 52.5%, 46% 56%, 1.8% 100%, 0% 100%);
      }
      #sobre1::after {
        inset: 11% 22% 11% 0;
        -webkit-clip-path: polygon(0% 0%, 2.2% 0%, 44% 45%, 48.5% 48.5%, 50.5% 50%, 48.5% 51.5%, 44% 55%, 2.2% 100%, 0% 100%);
        clip-path: polygon(0% 0%, 2.2% 0%, 44% 45%, 48.5% 48.5%, 50.5% 50%, 48.5% 51.5%, 44% 55%, 2.2% 100%, 0% 100%);
      }
      #sobre2 {
        -webkit-clip-path: polygon(100% 0%, 98.2% 0%, 54% 44%, 50.5% 47.5%, 48.5% 50%, 50.5% 52.5%, 54% 56%, 98.2% 100%, 100% 100%);
        clip-path: polygon(100% 0%, 98.2% 0%, 54% 44%, 50.5% 47.5%, 48.5% 50%, 50.5% 52.5%, 54% 56%, 98.2% 100%, 100% 100%);
      }
      #sobre2::after {
        inset: 11% 0 11% 22%;
        -webkit-clip-path: polygon(100% 0%, 97.8% 0%, 56% 45%, 51.5% 48.5%, 49.5% 50%, 51.5% 51.5%, 56% 55%, 97.8% 100%, 100% 100%);
        clip-path: polygon(100% 0%, 97.8% 0%, 56% 45%, 51.5% 48.5%, 49.5% 50%, 51.5% 51.5%, 56% 55%, 97.8% 100%, 100% 100%);
      }
      #sobre3 {
        -webkit-clip-path: polygon(0% 0%, 1.8% 0%, 44% 45%, 48% 48.5%, 50% 50%, 48% 51.5%, 44% 55%, 1.8% 100%, 0% 100%);
        clip-path: polygon(0% 0%, 1.8% 0%, 44% 45%, 48% 48.5%, 50% 50%, 48% 51.5%, 44% 55%, 1.8% 100%, 0% 100%);
      }
      #sobre3::after {
        inset: 12% 26% 12% 0;
        -webkit-clip-path: polygon(0% 0%, 2.4% 0%, 42% 46%, 47% 49%, 49.2% 50%, 47% 51%, 42% 54%, 2.4% 100%, 0% 100%);
        clip-path: polygon(0% 0%, 2.4% 0%, 42% 46%, 47% 49%, 49.2% 50%, 47% 51%, 42% 54%, 2.4% 100%, 0% 100%);
      }
      #sobre4 {
        -webkit-clip-path: polygon(100% 0%, 98.2% 0%, 56% 45%, 52% 48.5%, 50% 50%, 52% 51.5%, 56% 55%, 98.2% 100%, 100% 100%);
        clip-path: polygon(100% 0%, 98.2% 0%, 56% 45%, 52% 48.5%, 50% 50%, 52% 51.5%, 56% 55%, 98.2% 100%, 100% 100%);
      }
      #sobre4::after {
        inset: 12% 0 12% 26%;
        -webkit-clip-path: polygon(100% 0%, 97.6% 0%, 58% 46%, 53% 49%, 50.8% 50%, 53% 51%, 58% 54%, 97.6% 100%, 100% 100%);
        clip-path: polygon(100% 0%, 97.6% 0%, 58% 46%, 53% 49%, 50.8% 50%, 53% 51%, 58% 54%, 97.6% 100%, 100% 100%);
      }
    }
    @media (min-width: 640px) {
      #flores { left: calc(50% + 0.2%); }
      #sobre1, #sobre2 { width: 100vw; }
      #sobre3, #sobre4 { width: 100vw; }
    }

    .background { position: fixed; top:0; left:0; width:100vw; height:100vh; background:var(--beige-medio); z-index:60; transition:opacity 1s; }

    /* ══ BOTÓN MÚSICA ══ */
    #floatingButton {
      position: fixed; bottom:20px; right:20px; width:56px; height:56px;
      background: var(--olivo-sobre); border-radius:50%; display:none;
      align-items:center; justify-content:center; gap:3px;
      cursor:pointer; z-index:50; border:none; outline:none;
      box-shadow: 0 4px 16px rgba(87, 80, 56, 0.4); -webkit-tap-highlight-color:transparent;
    }
    #floatingButton:hover { background: var(--olivo-sobre-os); }
    #floatingButton .bar { width:3px; border-radius:2px; background:var(--crema); }
    #floatingButton.playing .bar { animation: eq 0.5s infinite alternate ease-in-out; }
    #floatingButton.playing .bar:nth-child(1) { animation-duration:0.5s; }
    #floatingButton.playing .bar:nth-child(2) { animation-duration:0.7s; animation-delay:0.1s; }
    #floatingButton.playing .bar:nth-child(3) { animation-duration:0.4s; animation-delay:0.2s; }
    #floatingButton.playing .bar:nth-child(4) { animation-duration:0.6s; animation-delay:0.05s; }
    @keyframes eq { 0% { height:4px; } 100% { height:20px; } }
    #floatingButton.paused .bar { display:none; }
    #floatingButton.paused::after {
      content:''; width:0; height:0; border-style:solid;
      border-width:9px 0 9px 16px; border-color:transparent transparent transparent var(--crema);
      margin-left:4px;
    }

    /* ══════════════════════ PAGE ══════════════════════ */
    .page-wrapper { max-width:480px; margin:0 auto; overflow-x:clip; position:relative; z-index:0; }

    /* ══ FLORES / OLIVO — editorial con movimiento (como Daniela) ══ */
    .organic-editorial-canvas {
      position: absolute; left: 50%; top: 0;
      transform: translateX(-50%);
      width: 100vw; min-height: 100vh;
      pointer-events: none; z-index: 6; overflow: visible;
      -webkit-mask-image: linear-gradient(90deg,
        rgba(0,0,0,1) 0%, rgba(0,0,0,1) 12%, rgba(0,0,0,0.92) 20%,
        rgba(0,0,0,0.26) 32%, rgba(0,0,0,0.1) 50%,
        rgba(0,0,0,0.26) 68%, rgba(0,0,0,0.92) 80%,
        rgba(0,0,0,1) 88%, rgba(0,0,0,1) 100%);
      mask-image: linear-gradient(90deg,
        rgba(0,0,0,1) 0%, rgba(0,0,0,1) 12%, rgba(0,0,0,0.92) 20%,
        rgba(0,0,0,0.26) 32%, rgba(0,0,0,0.1) 50%,
        rgba(0,0,0,0.26) 68%, rgba(0,0,0,0.92) 80%,
        rgba(0,0,0,1) 88%, rgba(0,0,0,1) 100%);
      mask-mode: alpha;
      -webkit-mask-size: 100% 100%;
      mask-size: 100% 100%;
    }
    .organic-motif {
      position: absolute;
      width: clamp(100px, 24vw, 200px);
      opacity: 1;
      will-change: transform;
    }
    .organic-motif--deep { opacity: 0.9; }
    .organic-motif--right { right: max(-16px, -3vw); left: auto; }
    .organic-motif--left  { left: max(-16px, -3vw); right: auto; }
    .organic-motif--w85 { width: clamp(110px, 26vw, 210px); }
    .organic-motif--w68 { width: clamp(88px, 21vw, 165px); }
    .organic-motif-parallax { width: 100%; display: block; will-change: transform; }
    .organic-motif-inner {
      width: 100%; height: auto;
      transform-origin: 50% 92%;
      display: block;
    }
    .organic-motif-flip { display: block; width: 100%; line-height: 0; }
    .organic-motif--left .organic-motif-flip { transform: scaleX(-1); }
    .organic-motif-img {
      width: 100%; height: auto; display: block;
      mix-blend-mode: screen;
      opacity: 0.9;
      filter: contrast(1.04) saturate(0.92) sepia(0.12) hue-rotate(-8deg);
    }
    .organic-motif-img--olive {
      mix-blend-mode: multiply;
      opacity: 0.78;
      filter: contrast(1.02) saturate(0.85);
    }
    .organic-motif-img--rama {
      mix-blend-mode: multiply;
      opacity: 0.72;
      filter: none;
    }
    @keyframes organic-sway-a {
      0% { transform: rotate(-9deg) translate3d(-5px, 2px, 0); }
      100% { transform: rotate(8.5deg) translate3d(10px, -8px, 0); }
    }
    @keyframes organic-sway-b {
      0% { transform: rotate(8deg) translate3d(4px, 3px, 0); }
      100% { transform: rotate(-9deg) translate3d(-10px, 6px, 0); }
    }
    @keyframes organic-sway-c {
      0% { transform: rotate(-6.5deg) translate3d(-2px, 4px, 0); }
      100% { transform: rotate(7deg) translate3d(9px, -8px, 0); }
    }
    .organic-motif.organic-sway-a .organic-motif-inner { animation: organic-sway-a 6.2s ease-in-out infinite alternate; }
    .organic-motif.organic-sway-b .organic-motif-inner { animation: organic-sway-b 7.2s ease-in-out infinite alternate; }
    .organic-motif.organic-sway-c .organic-motif-inner { animation: organic-sway-c 5.6s ease-in-out infinite alternate; }
    @media (max-width: 639px) {
      .organic-motif:nth-child(n + 5) { display: none; }
    }
    @media (prefers-reduced-motion: reduce) {
      .organic-motif-inner { animation: none !important; }
      .deco-planta-sway { animation: none !important; }
      #lazo, .inv-container .lazo-inv { animation: none !important; }
    }

    /* Movimiento suave en plantas sueltas (dress code, portada, ubicación…) */
    .deco-planta-sway {
      transform-origin: 50% 88%;
      will-change: transform;
    }
    .deco-planta-sway--a { animation: organic-sway-a 6.2s ease-in-out infinite alternate; }
    .deco-planta-sway--b { animation: organic-sway-b 7.2s ease-in-out infinite alternate; }
    .deco-planta-sway--c { animation: organic-sway-c 5.6s ease-in-out infinite alternate; }

    #mainContent > *:not(.organic-editorial-canvas):not(.svg-clip-defs) { position:relative; z-index:5; }

    /* ══ PORTADA ══ */
    .section-portada {
      position: relative; width:100vw; margin-left:calc(50% - 50vw);
      height: 100svh; min-height:580px; max-height:860px;
      display:flex; flex-direction:column; align-items:center; justify-content:flex-end;
      padding:48px 24px 90px; overflow:hidden; isolation:isolate;
      clip-path: url(#clip-portada);
    }
    .portada-slideshow {
      position:absolute; inset:0; z-index:0; overflow:hidden;
    }
    .portada-slide {
      position:absolute; inset:0;
      background-size:cover; background-position:center 30%;
      background-repeat:no-repeat;
      opacity:0; transition:opacity 1.8s ease-in-out;
    }
    .portada-slide.active { opacity:1; }

    .portada-inner { position:relative; z-index:2; text-align:center; width:100%; transform:translateY(-16px); }
    .portada-eyebrow {
      font-family:'Montserrat',sans-serif; font-size:12px; font-weight:600;
      letter-spacing:0.45em; text-transform:uppercase; color:rgba(255,255,255,0.92); margin-bottom:12px;
    }
    .portada-title {
      font-family:'slight',cursive; font-weight:400;
      font-size:clamp(2rem,8.5vw,3.5rem); color:#fff; line-height:1.05;
      text-shadow:0 2px 20px rgba(0,0,0,0.45); margin-bottom:4px;
      letter-spacing:0.02em; white-space:nowrap; max-width:100%;
    }
    .portada-amp {
      font-family:'slight',cursive; font-size:0.78em; color:rgba(255,255,255,0.95);
      display:inline; line-height:inherit; padding:0 0.12em;
    }
    .portada-fecha {
      font-family:'Antic Didone',serif; font-style:italic;
      font-size:clamp(1.15rem,4.8vw,1.55rem); letter-spacing:0.3em;
      color:rgba(255,255,255,0.95); margin-top:16px;
      text-shadow:0 2px 14px rgba(0,0,0,0.45);
    }

    /* ══ SEP VEGETAL + BLOQUE INVITADO ══ */
    .bloque-invitado {
      padding: clamp(16px, 4vw, 28px) 0 clamp(36px, 8vw, 56px);
    }
    .sep-vegetal { display:flex; align-items:center; gap:14px; padding:0 28px; margin:0; }
    .sep-vegetal--inv { margin: clamp(12px, 3vw, 20px) 0; }
    .sep-vegetal-line { flex:1; height:1px; background:linear-gradient(90deg,transparent,rgba(107,123,74,0.38),transparent); }
    .sep-vegetal-icon { font-size:16px; color:var(--verde-medio); opacity:0.65; }

    /* ══ FRASE ══ */
    .section-frase {
      padding: 40px 32px;
      text-align: center;
      background: transparent;
    }
    .frase-txt { font-family:'Antic Didone',serif; font-style:italic; font-size:clamp(1rem,4.2vw,1.2rem); line-height:1.65; color:#4A4035; }

    /* ══ NOMBRE INVITADO ══ */
    #invitacion {
      padding: 5px 0;
      width: 100%;
      max-width: 400px;
      margin: 0 auto;
      text-align: center;
      opacity: 0;
      transition: opacity 0.5s ease-in-out;
      font-family: 'Antic Didone', serif;
      font-style: italic;
      color: var(--cafe-oscuro);
    }
    #invitacion.hidden { display: none; }
    #invitacion.visible { opacity: 1; display: block; }
    #nombreInvitado {
      margin: 0;
      font-size: 4vw;
      line-height: 1.2;
      max-width: 100%;
      display: block;
      text-align: center;
      text-transform: uppercase;
      word-break: normal;
    }
    #pasesInvitado {
      margin: 10px 0 0 0;
      font-size: 3.5vw;
      text-align: center;
      color: var(--tierra);
    }
    .bloque-nombre { display: inline-block; white-space: nowrap; }
    @media (min-width: 768px) {
      #invitacion { max-width: 600px; }
      #nombreInvitado { font-size: 3vw; }
      #pasesInvitado { font-size: 2.5vw; }
    }

    /* ══════════ INV-CONTAINER (layout como Daniela) ══════════ */
    .inv-container {
      position:relative; width:100%; max-width:480px;
      margin: clamp(12px, 3vw, 24px) auto clamp(2rem,8vw,3.5rem);
      aspect-ratio:480 / 900;
      background:transparent; display:block; overflow:visible;
      /* Entre punta del lazo y “Hoy nuestra historia…” — sube/baja solo este % */
      --inv-nombres-top: 44%;
    }
    .inv-container .layer {
      position:absolute; width:100%; height:auto; top:0; left:0; background:none;
    }
    .inv-container .z1 { z-index:1; }
    .inv-container .z1 {
      width: calc(100% - clamp(28px, 7vw, 44px));
      left: 50%;
      top: clamp(8px, 1.8vw, 14px);
      transform: translateX(-50%);
    }
    .inv-container .z9 { z-index:9; }
    .inv-container .z10 { z-index:10; }

    .inv-container .lazo-inv {
      top: 12%;
      width: 55%;
      left: 45%;
      transform: translateX(-20%) rotate(-5deg);
      transform-origin: 50% 0%;
      animation: lazo-inv-pendulo 6.2s ease-in-out infinite;
    }
    @keyframes lazo-inv-pendulo {
      0%, 100% { transform: translateX(-20%) rotate(-11deg); }
      50%      { transform: translateX(-20%) rotate(1deg); }
    }
    .inv-container .sello-inv {
      width:20%;
      left:39%;
      top:16%;
    }

    .paper-wrapper-inv {
      position:absolute; top:32%; left:50%; width:79%;
      transform:translateX(-50%); z-index:5; background:transparent; overflow:visible;
    }
    .paper-img-inv { width:100%; display:block; filter:drop-shadow(0 9px 15px rgba(0,0,0,0.1)); }

    .content-overlay-inv {
      position:absolute; top:0; left:0; width:100%; height:100%;
      padding:15% 10% 5% 10%;
      display:flex; flex-direction:column; align-items:center; justify-content:center;
      text-align:center; box-sizing:border-box;
      font-family:'Antic Didone',serif; font-style:italic; background:transparent;
      overflow:visible;
    }
    .inv-container .names-row-inv {
      position:absolute; top:var(--inv-nombres-top); left:0; right:0;
      margin:0; width:100%; display:flex; justify-content:center;
      font-style:normal; z-index:7; pointer-events:none; overflow:visible;
    }
    .names-slight-inv {
      font-family:'slight',cursive; font-size:6vw; color:var(--dorado);
      white-space:nowrap; line-height:1.2; overflow:visible; display:inline-block;
      opacity:1; transform:none; visibility:visible;
    }
    .content-overlay-inv .txt-small-inv,
    .content-overlay-inv .section-title-inv,
    .content-overlay-inv .blessing-inv,
    .content-overlay-inv .city-inv {
      opacity:1; transform:none; visibility:visible;
    }
    .txt-small-inv {
      font-size:2.8vw; line-height:1.3; margin-bottom:4%;
      color:#444; text-transform:uppercase;
    }
    .section-title-inv {
      font-size:4.5vw; letter-spacing:3px; margin:3% 0;
      color:#222; font-weight:normal; font-style:normal;
    }
    .blessing-inv {
      font-size:3.2vw; color:var(--dorado); margin-bottom:4%; font-weight:normal;
    }
    .city-inv {
      font-size:2.5vw; letter-spacing:2px; margin-top:3%; padding-bottom:0;
    }
    @media (min-width:480px) {
      .names-slight-inv { font-size:28px; }
      .txt-small-inv { font-size:13px; margin-bottom:12px; }
      .section-title-inv { font-size:22px; margin:12px 0; }
      .blessing-inv { font-size:15px; margin-bottom:12px; }
      .city-inv { font-size:12px; margin-top:10px; }
    }

    /* ══ FOTO BANNER ══ */
    .section-foto-banner { width:100vw; margin-left:calc(50% - 50vw); position:relative; overflow:hidden; }
    .foto-banner-img { width:100%; max-height:500px; object-fit:cover; object-position:center 28%; display:block; }
    .foto-banner-overlay {
      position:absolute; inset:0;
      background:linear-gradient(to bottom, transparent 55%, rgba(74,64,53,0.42) 100%);
      display:flex; flex-direction:column; align-items:center; justify-content:flex-end; padding:30px 24px;
    }
    .foto-banner-fecha {
      font-family:'Antic Didone',serif; font-style:italic;
      font-size:clamp(1.1rem,4.5vw,1.4rem); color:#fff; letter-spacing:0.25em;
      text-align:center; text-shadow:0 2px 16px rgba(0,0,0,0.5);
    }

    /* ══ COUNTDOWN ══ */
    .section-countdown { padding:clamp(2rem,6vw,3rem) 20px; text-align:center; background:transparent; }
    .countdown-titulo { font-family:'slight',cursive; font-size:clamp(2.2rem,8vw,3rem); color:var(--cafe-oscuro); margin-bottom:20px; font-weight:400; }
    .countdown-wrap { display:flex; justify-content:center; gap:2rem; }
    .cd-item { text-align:center; min-width:52px; }
    .cd-num { font-family:'Lustria',serif; font-size:32px; color:#555; display:block; line-height:1; }
    .cd-label { font-family:'Montserrat',sans-serif; font-size:9px; font-weight:600; letter-spacing:0.1em; text-transform:uppercase; color:var(--taupe); margin-top:4px; display:block; }
    .countdown-subtxt { font-family:'Antic Didone',serif; font-style:italic; font-size:15px; color:#888; margin-top:16px; }
    .btn-calendario {
      display:inline-flex; align-items:center; gap:8px; margin-top:22px; padding:11px 26px;
      background:var(--olivo-sobre); color:#fff; text-decoration:none;
      font-size:10px; letter-spacing:0.12em; text-transform:uppercase;
      border-radius:3px; font-family:'Montserrat',sans-serif; font-weight:600;
      transition: background 0.25s ease;
    }
    .btn-calendario:hover { background:var(--olivo-sobre-os); }

    .foto-seccion {
      width: 100vw;
      margin-left: calc(50% - 50vw);
      padding: 0 16px 28px;
      max-width: none;
      overflow: hidden;
      display: flex;
      justify-content: center;
      background: transparent;
    }
    .foto-seccion-img {
      width: 100%;
      max-width: 440px;
      max-height: min(75vh, 640px);
      object-fit: contain;
      object-position: center center;
      border-radius: 22px;
      box-shadow: 0 14px 36px rgba(74, 64, 53, 0.14);
      display: block;
    }
    .foto-full { width:100vw; margin-left:calc(50% - 50vw); position:relative; overflow:hidden; }
    .foto-full-img { width:100%; max-height:460px; object-fit:cover; object-position:center 22%; display:block; }
    .foto-full-overlay {
      position:absolute; inset:0;
      background:linear-gradient(to bottom, transparent 50%, rgba(74,64,53,0.45) 100%);
      display:flex; align-items:flex-end; justify-content:center; padding:28px 20px;
    }
    .foto-full-cita {
      font-family:'Antic Didone',serif; font-style:italic;
      font-size:clamp(1rem,4vw,1.25rem); color:#fff;
      text-align:center; line-height:1.55; max-width:320px;
      text-shadow:0 2px 16px rgba(0,0,0,0.5);
    }

    /* ══ BLOQUE FONDO PAPEL (acuarela, sin beige plano) ══ */
    .bloque-papel {
      width:100vw; margin-left:calc(50% - 50vw);
      background: transparent;
      padding:clamp(1.75rem,5vw,3rem) 0;
      position:relative;
    }
    .bloque-papel-inner { max-width:480px; margin:0 auto; padding:0 20px; }

    .section-titulo-slight {
      font-family:'slight',cursive; font-weight:400;
      font-size:clamp(2rem,7.5vw,2.8rem); color:var(--cafe-oscuro);
      text-align:center; margin-bottom:28px;
    }

    /* ══ UBICACIÓN (bloque royal — como Daniela) ══ */
    .section-ubicacion {
      padding:clamp(1.5rem,5vw,2.5rem) 20px clamp(1.5rem,5vw,2rem);
      width:100%; position:relative; background:transparent;
    }
    .section-ubicacion .royal-center-wrapper {
      display:flex; justify-content:center; align-items:flex-start;
      width:100%; min-height:0; padding-bottom:4px;
    }
    .section-ubicacion .royal-visual-bounds {
      position:relative; width:332px; max-width:92vw; height:364px;
    }
    .section-ubicacion .royal-container {
      position:absolute; right:0; top:25px; width:249px; max-width:75vw; height:309px;
    }
    .section-ubicacion .itinerary-plant {
      position: absolute;
      width: 130px;
      z-index: 1;
      left: -33%;
      top: 58%;
      transform: rotate(205deg);
      transform-origin: 50% 88%;
      pointer-events: none;
      animation: itinerary-plant-sway 6.2s ease-in-out infinite alternate;
    }
    @keyframes itinerary-plant-sway {
      from { transform: rotate(202deg) translate3d(-2px, 0, 0); }
      to   { transform: rotate(208deg) translate3d(3px, -4px, 0); }
    }
    .section-ubicacion .wax-seal {
      position:absolute; width:34%; z-index:10; left:-25%; top:-8%;
      pointer-events:none; filter:drop-shadow(3px 4px 5px rgba(0,0,0,0.4));
    }
    .section-ubicacion .itinerary-flip-card {
      position:absolute; width:100%; height:100%; z-index:5;
      perspective:1000px; background-color:transparent; cursor:pointer;
    }
    .section-ubicacion .itinerary-inner {
      position:relative; width:100%; height:100%;
      transition:transform 0.8s; transform-style:preserve-3d;
      box-shadow:0 10px 20px rgba(0,0,0,0.3);
    }
    .section-ubicacion .itinerary-flip-card:hover .itinerary-inner,
    .section-ubicacion .itinerary-flip-card.flipped .itinerary-inner {
      transform:rotateY(180deg);
    }
    .section-ubicacion .itinerary-front,
    .section-ubicacion .itinerary-back {
      position:absolute; width:100%; height:100%;
      backface-visibility:hidden; -webkit-backface-visibility:hidden;
      background-size:cover; background-position:center;
    }
    .section-ubicacion .itinerary-front {
      z-index:2; display:flex; flex-direction:column; align-items:center; justify-content:center; color:#fff;
      background-image:
        linear-gradient(rgba(74,64,53,0.1), rgba(74,64,53,0.22)),
        url('https://pub-a65601eb9ffe4b62a9bcbf111a23ee8c.r2.dev/invitations/custom-orders/ibis%26kleber/fondoubi.webp');
      background-position: center center;
    }
    .section-ubicacion .titulo-itinerario {
      font-family:'slight',cursive; font-size:clamp(1.85rem,5.5vw,2.35rem);
      margin:0; white-space:nowrap;
      color:var(--cafe-oscuro);
      text-shadow:0 1px 10px rgba(255,255,255,0.85);
    }
    .section-ubicacion .itinerary-front p {
      color:var(--cafe-oscuro);
      text-shadow:0 1px 6px rgba(255,255,255,0.75);
    }
    .section-ubicacion .itinerary-back {
      z-index:1; transform:rotateY(180deg); padding:20px 15px;
      display:flex; flex-direction:column; justify-content:center;
      background-image:
        linear-gradient(rgba(255,255,255,0.88), rgba(255,255,255,0.88)),
        url('https://pub-a65601eb9ffe4b62a9bcbf111a23ee8c.r2.dev/invitations/custom-orders/daniela-sofia-xv/2-2.webp');
    }
    .section-ubicacion .itinerary-item {
      display:flex; flex-direction:row-reverse; align-items:center; gap:12px;
    }
    .section-ubicacion .itinerary-item img { width:50px; }
    .section-ubicacion .itinerary-text { text-align:right; }
    .section-ubicacion .itinerary-text h3 {
      font-family:'Antic Didone',serif; font-size:0.65rem; margin:0;
      text-transform:uppercase; color:#1a1a1a;
    }
    .section-ubicacion .itinerary-text p {
      font-family:'Antic Didone',serif; font-style:italic; font-size:0.6rem;
      margin:4px 0 8px; color:#444;
    }
    .section-ubicacion .btn-location {
      display:inline-block; padding:6px 15px; border:1px solid var(--verde-savila-hover);
      text-decoration:none; font-size:0.55rem; color:var(--verde-oliva);
      text-transform:uppercase; letter-spacing:1px; transition:all 0.3s ease;
      font-family:'Montserrat',sans-serif;
    }
    .section-ubicacion .btn-location:hover {
      background:var(--verde-savila); color:var(--verde-savila-texto); border-color:var(--verde-savila);
    }

    /* ══ VERSÍCULO ══ */
    .section-versiculo {
      padding:clamp(2rem,7vw,3.5rem) 28px; text-align:center;
      background:transparent; width:100vw; margin-left:calc(50% - 50vw);
    }
    .versiculo-txt {
      font-family:'Antic Didone',serif; font-style:italic;
      font-size:clamp(1rem,4.2vw,1.22rem); line-height:1.65;
      color:var(--cafe-oscuro); max-width:380px; margin:0 auto;
    }
    .versiculo-ref { font-family:'Montserrat',sans-serif; font-size:9px; letter-spacing:0.2em; text-transform:uppercase; color:var(--taupe); margin-top:14px; display:block; }

    /* ══ DRESS CODE (posiciones Daniela) ══ */
    .section-dresscode {
      padding: 0;
      overflow: visible;
      background: transparent;
      text-align: center;
    }
    .dc-general-wrapper {
      width: 100%;
      max-width: 500px;
      margin: 0 auto;
      display: flex;
      flex-direction: column;
      align-items: center;
      padding-top: 0;
      padding-bottom: calc(var(--invite-section-y) * 0.35);
      overflow: visible;
    }
    .dc-gsap-left, .dc-gsap-right, .dc-gsap-logo, .dc-gsap-leaf, .dc-gsap-bridge-leaf { will-change: transform, opacity; }
    .dc-canvas-container {
      position: relative;
      width: 100%;
      height: 520px;
      margin: clamp(52px, 10vw, 84px) auto 0 auto;
    }
    .dc-leaf-wrap {
      position: absolute; top: 15px; right: -120px; width: 240px; z-index: 1;
    }
    .dc-leaf-asset {
      width: 100%; display: block;
      mix-blend-mode: multiply; opacity: 0.85;
    }
    .card-top-pos { position: absolute; top: -50px; left: -40px; z-index: 5; }
    .dc-logo-asset {
      position: absolute;
      bottom: 30px;
      left: -65px;
      width: 210px;
      z-index: 20;
      pointer-events: none;
      filter:
        sepia(0.62) hue-rotate(352deg) saturate(0.72) brightness(0.9)
        drop-shadow(0 12px 20px rgba(74,64,53,0.22));
    }
    .card-bottom-pos { position: absolute; bottom: -20px; right: -40px; z-index: 10; }
    .dc-flip-card {
      position: absolute;
      width: 340px;
      max-width: 88vw;
      height: 225px;
      border-radius: 10px;
      cursor: pointer;
      overflow: hidden;
      -webkit-mask-image: -webkit-radial-gradient(white, black);
      transform: translateZ(0);
    }
    .dc-flip-inner { position:relative; width:100%; height:100%; }
    .dc-flip-front {
      position:absolute; width:100%; height:100%; top:0; left:0; z-index:2;
      background-size:cover; background-position:center;
      display:flex; flex-direction:column; justify-content:center; align-items:center;
      transition:transform 0.6s cubic-bezier(0.4,0,0.2,1);
    }
    .dc-text-overlay { width:100%; padding:18px 16px; text-align:center; }
    .dc-flip-back {
      position:absolute; width:100%; height:100%; top:0; left:0; z-index:1;
      background:#fcfcfc; display:flex; align-items:center; justify-content:center;
    }
    .dc-back-content {
      text-align:center; width:100%;
      display:flex; flex-direction:column; align-items:center; justify-content:center;
    }
    .dc-gsap-left.active .dc-flip-front { transform:translateX(-100%); }
    .dc-gsap-right.active .dc-flip-front { transform:translateX(100%); }
    .dc-title-style {
      font-family:'slight',cursive;
      font-size:clamp(1.75rem,7vw,2.15rem);
      color:var(--rosa-palo); font-weight:400; margin:0; letter-spacing:0.04em;
      text-shadow:0 0 1px rgba(255,255,255,0.95), 0 2px 14px rgba(240,235,227,0.9);
    }
    .dc-more-link {
      font-family:'Antic Didone',serif; font-size:0.95rem;
      text-transform:uppercase; text-decoration:underline; text-underline-offset:3px;
      color:#000; margin-top:8px; letter-spacing:0.08em;
    }
    .dc-back-main {
      font-family:'Antic Didone',serif; font-size:clamp(1.35rem,5vw,28px);
      color:var(--cafe-oscuro); margin:0;
    }
    .dc-back-sub {
      font-family:'Antic Didone',serif; font-style:italic;
      font-size:clamp(0.85rem,3.2vw,15px); color:#444;
      line-height:1.45; margin:0; max-width:280px;
    }
    .dc-back-content--texto { padding:12px 18px; box-sizing:border-box; }
    .dc-back-content--texto .dc-back-main { margin-bottom:10px; }
    @media (max-width:600px) {
      .dc-canvas-container {
        transform: scale(0.75);
        transform-origin: top center;
        height: 420px;
        margin-top: clamp(44px, 9vw, 68px);
      }
    }

    /* ══ MESA DE REGALOS (posiciones Daniela — gift-wrap suelto, sin section-regalos) ══ */
    .bloque-dress-regalos .gift-wrap-left {
      position: relative;
      width: 100%;
      max-width: 500px;
      min-height: 700px;
      height: auto;
      margin: 0 auto;
      padding-bottom: clamp(20px, 5vw, 44px);
      text-align: left;
      overflow: hidden;
    }
    /* section-regalos queda para bloques post-separador si hiciera falta */
    .section-regalos {
      padding: var(--invite-section-y) 16px calc(var(--invite-section-y) * 1.35);
      position: relative;
      overflow: visible;
      display: flex;
      flex-direction: column;
      align-items: center;
      background: transparent;
    }
    .ovalo-fondo-left {
      position: absolute;
      top: 10px;
      left: 15px;
      width: 310px;
      height: 410px;
      background: url('https://pub-a65601eb9ffe4b62a9bcbf111a23ee8c.r2.dev/invitations/custom-orders/daniela-sofia-xv/mesa-fondo-e1773427293825.webp') no-repeat left center / contain;
      display: flex;
      align-items: center;
      justify-content: center;
      z-index: 3;
    }
    .centrado-interno-texto {
      width: 210px;
      text-align: center;
      font-family: 'Antic Didone', serif;
      color: var(--cafe-oscuro);
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      padding: 0 6px;
      margin: 0 auto;
    }
    .gift-wrap-left .title {
      font-size: 20px;
      letter-spacing: 2px;
      font-style: italic;
      margin-bottom: 8px;
      color: var(--cafe-oscuro);
    }
    .gift-wrap-left .intro {
      font-size: 11.5px;
      line-height: 1.3;
      font-style: italic;
      margin: 0;
      color: var(--texto);
    }
    .planta-entre-dc-regalos {
      position: relative;
      width: 100%;
      max-width: 500px;
      margin: -8px auto -28px;
      height: clamp(56px, 10vw, 88px);
      z-index: 4;
      pointer-events: none;
    }
    .planta-entre-dc-regalos__wrap {
      position: absolute;
      right: clamp(-72px, -14vw, -48px);
      top: 50%;
      width: clamp(140px, 36vw, 220px);
      transform: translateY(-50%);
      transform-origin: center 85%;
    }
    .planta-entre-dc-regalos__img {
      width: 100%;
      display: block;
      mix-blend-mode: multiply;
      opacity: 0.9;
    }
    .foto-wrap {
      position: absolute;
      top: 290px;
      right: 0;
      width: 250px;
      z-index: 2;
    }
    .foto-wrap-slideshow {
      position: relative;
      width: 100%;
      aspect-ratio: 4 / 5.6;
      overflow: hidden;
      background: var(--crema);
      border-radius: 12px;
      box-shadow: 0 10px 24px rgba(61,74,40,0.15);
    }
    .foto-wrap-slide {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: center;
      opacity: 0;
      transition: opacity 1.8s ease-in-out;
    }
    .foto-wrap-slide--contain {
      object-fit: contain;
      object-position: center;
      padding: 6px;
      box-sizing: border-box;
    }
    .foto-wrap-slide.active { opacity: 1; }
    @media (max-width:500px) {
      .bloque-dress-regalos .gift-wrap-left { min-height: 550px; }
      .ovalo-fondo-left { width: 280px; height: 370px; left: 5px; }
      .centrado-interno-texto { width: 190px; }
      .planta-entre-dc-regalos { margin-bottom: -20px; height: 48px; }
      .planta-entre-dc-regalos__wrap { width: 118px; right: -42px; }
      .foto-wrap { width: 200px; top: 270px; }
    }

    /* ══ SEPARADOR LAZO + SELLO (Daniela — colores boda) ══ */
    .elegant-separator {
      position:relative; width:100vw; max-width:none;
      margin-left:calc(50% - 50vw); margin-right:calc(50% - 50vw);
      height:160px; display:flex; align-items:center; justify-content:center;
      overflow:hidden; flex-shrink:0; background:transparent;
    }
    .fan-band {
      position:absolute; width:110%; left:-5%; height:45px;
      background:linear-gradient(90deg, rgba(154,132,112,0.28) 0%, rgba(232,223,212,0.62) 45%, rgba(245,237,230,0.68) 55%, rgba(154,132,112,0.28) 100%);
      transform-origin:center center;
    }
    .fan-top-2 { transform:rotate(6deg); z-index:1; opacity:0.35; }
    .fan-top-1 { transform:rotate(3deg); z-index:2; opacity:0.58; }
    .fan-bottom-2 { transform:rotate(-6deg); z-index:1; opacity:0.35; }
    .fan-bottom-1 { transform:rotate(-3deg); z-index:2; opacity:0.58; }
    .ribbon-main-aligned {
      position:absolute; width:92%; max-width:1200px; height:55px; z-index:5;
      background:linear-gradient(90deg, #8B7355 0%, #A89880 16%, #E8DFD4 40%, #F5EDE6 50%, #E8DFD4 60%, #A89880 84%, #8B7355 100%);
      clip-path:polygon(0 0, 100% 0, calc(100% - 30px) 50%, 100% 100%, 0 100%, 30px 50%);
    }
    .ribbon-fold-3d {
      position:absolute; width:70px; height:65px; border-radius:5px; z-index:6;
      background:linear-gradient(145deg, #F5EDE6 0%, #E8DFD4 42%, #B8A590 100%);
    }
    .ribbon-fold-3d.left { transform:translateX(-65px) perspective(150px) rotateY(25deg); }
    .ribbon-fold-3d.right { transform:translateX(65px) perspective(150px) rotateY(-25deg); }
    .bow-seal {
      position:relative; width:115px; z-index:10; cursor:pointer;
      filter:drop-shadow(0 4px 10px rgba(61,74,40,0.35));
    }
    .post-separator-photo {
      width:100%; max-width:480px; margin:0 auto; padding:0 16px 8px; box-sizing:border-box;
    }
    .post-separator-photo img {
      width:100%; height:auto; display:block; border-radius:22px;
      box-shadow:0 14px 36px rgba(74,64,53,0.14);
    }

    /* ══ RSVP ══ */
    .section-rsvp { padding:clamp(1.5rem,5vw,2.5rem) 0 clamp(2rem,7vw,4rem); }
    .rsvp-caps-title {
      text-align: center;
      font-family: 'Antic Didone', serif;
      font-size: clamp(2.1rem, 9vw, 3rem);
      font-weight: 400;
      letter-spacing: 0.38em;
      text-indent: 0.38em;
      color: #4A4035;
      margin: 36px auto 10px;
      text-transform: uppercase;
      width: 100%;
      max-width: 500px;
      text-shadow:
        1px 1px 0 rgba(255, 252, 248, 0.95),
        -1px -1px 0 rgba(154, 132, 112, 0.45),
        0 2px 0 rgba(255, 255, 255, 0.55),
        0 4px 10px rgba(74, 64, 53, 0.12);
    }

    /* Contenedor RSVP royal (igual al snippet) */
    .royal-inv-main-wrapper {
      --r-dorado: var(--dorado);
      --r-texto:  var(--texto);
      --r-verde:  var(--verde-savila);
      all:initial; display:block; width:100%;
    }
    .royal-inv-container {
      position:relative; width:100%; max-width:480px; margin:0 auto;
      min-height:850px; height:auto; background:transparent !important;
      display:block; overflow:visible; font-family:'Antic Didone',serif;
    }
    .royal-inv-layer { position:absolute; width:100%; height:auto; top:0; left:0; pointer-events:none; }
    .royal-inv-z1  { z-index:1; }
    .royal-inv-z1 {
      width: calc(100% - clamp(28px, 7vw, 44px));
      left: 50%;
      top: clamp(8px, 1.8vw, 14px);
      transform: translateX(-50%);
    }
    .royal-inv-z10 { z-index:10; }
    .royal-inv-sello { width:22%; left:38%; top:12%; pointer-events:auto; }
    .royal-inv-paper-wrapper {
      position:relative; top:180px; left:50%; width:76%; transform:translateX(-50%);
      z-index:5; display:flex; flex-direction:column;
      background-image:url('https://pub-a65601eb9ffe4b62a9bcbf111a23ee8c.r2.dev/invitations/custom-orders/daniela-sofia-xv/dsf-1.webp');
      background-size:100% 100%; background-repeat:no-repeat;
      filter:drop-shadow(0 9px 15px rgba(0,0,0,0.1));
    }
    .royal-inv-content-overlay { position:relative; width:100%; padding:50px 25px; display:flex; flex-direction:column; box-sizing:border-box; }
    .royal-inv-form-inner { width:100%; text-align:left; }
    .royal-inv-form-header { text-align:center; margin-bottom:15px; }
    .royal-inv-form-title { font-style:italic; font-weight:normal; font-size:24px; margin:0 0 5px 0; color:var(--r-texto); font-family:'Antic Didone',serif; }
    .royal-inv-form-subtitle { font-size:13px; color:#555; margin:0; line-height:1.2; font-family:'Antic Didone',serif; }
    .royal-inv-form-group { margin-bottom:10px; }
    .royal-inv-form-group label {
      display: block;
      font-weight: 400;
      font-size: 13px;
      margin-bottom: 5px;
      text-transform: none;
      color: var(--cafe-oscuro);
      letter-spacing: 0.03em;
      font-family: 'Antic Didone', serif;
      font-style: italic;
    }
    .royal-inv-form-required { color: var(--tierra); font-style: normal; }
    .royal-inv-form-input {
      width:100% !important; padding:8px !important; border:1px solid rgba(0,0,0,0.15) !important;
      background:rgba(255,255,255,0.4) !important; box-sizing:border-box !important;
      font-family:'Antic Didone',serif !important; font-size:14px !important;
      border-radius:4px !important; margin:0 !important;
    }
    .royal-inv-disabled { background-color:rgba(0,0,0,0.05) !important; color:#777; cursor:not-allowed; }
    .royal-inv-textarea { height:50px !important; resize:none !important; }
    .royal-inv-form-help { font-size:11px; color:#666; font-style:italic; margin-top:3px; margin-bottom:0; font-family:'Antic Didone',serif; }
    .royal-inv-submit-btn {
      width:100%; background:var(--olivo-sobre); color:#fff; padding:12px; border:none;
      cursor:pointer; font-size:13px; font-weight:bold; letter-spacing:1px;
      border-radius:4px; margin-top:10px; font-family:'Antic Didone',serif;
      transition: background 0.25s ease;
    }
    .royal-inv-submit-btn:hover { background:var(--olivo-sobre-os); }
    @media (max-width:480px) {
      .royal-inv-container { min-height:850px; }
      .royal-inv-paper-wrapper { top:160px; width:82%; }
      .royal-inv-content-overlay { padding:40px 20px; }
    }

    /* ══ FOTO CIERRE (después del formulario) ══ */
    .foto-post-rsvp {
      padding: clamp(1.5rem, 5vw, 2.5rem) 20px clamp(0.5rem, 2vw, 1rem);
      max-width: 480px;
      margin: 0 auto;
    }
    .foto-post-rsvp img {
      width: 100%;
      height: auto;
      max-height: 520px;
      object-fit: cover;
      object-position: center 30%;
      display: block;
      border-radius: 22px;
      box-shadow: 0 14px 36px rgba(74,64,53,0.14);
    }

    /* ══ CIERRE ══ */
    .section-cierre {
      padding:clamp(2.5rem,8vw,4rem) 20px clamp(3rem,10vw,5rem);
      text-align:center;
      background:transparent;
      width:100vw; margin-left:calc(50% - 50vw);
    }
    .cierre-txt {
      font-family:'Antic Didone',serif; font-style:italic;
      font-size:clamp(1rem,4.2vw,1.15rem); color:var(--texto); line-height:1.65;
      margin:0 auto 1.25rem; max-width:340px;
    }
    .cierre-firma {
      font-family:'slight',cursive; font-size:clamp(1.8rem,7vw,2.5rem);
      color:var(--cafe-oscuro); font-weight:400; letter-spacing:0.04em;
    }

    /* ══ ANIMACIONES — texto fade-up suave (sin recortes) ══ */
    .section-frase,
    .section-countdown,
    .section-versiculo,
    .section-cierre,
    .bloque-papel-inner,
    .content-overlay-inv,
    .content-overlay-inv *,
    .inv-container .names-row-inv,
    .names-slight-inv {
      overflow: visible;
    }
    .bloque-invitado,
    .gift-wrap-left .centrado-interno-texto,
    .section-rsvp,
    .royal-inv-form-inner {
      overflow: visible;
    }
    .gsap-stagger > *,
    .text-fade-item {
      will-change: opacity, transform;
      backface-visibility: hidden;
      -webkit-backface-visibility: hidden;
    }
    @media (prefers-reduced-motion: reduce) {
      .deco-planta-sway { animation: none !important; }
      .itinerary-plant { animation: none !important; }
      #lazo, .inv-container .lazo-inv { animation: none !important; }
      .gsap-stagger > * { will-change: auto; }
    }
