        :root{
            --ft:'Cormorant Garamond',serif;--fs:'Montserrat',sans-serif;
            --bw-void:    #07070A;
            --bw-obsidian:#0C0C10;
            --bw-obsidian2:#111117;
            --bw-obsidian3:#17171E;
            --bw-obsidian4:#1E1E26;
            --bw-pearl:  #F5F2EE;
            --bw-pearl2: #EAE7E0;
            --bw-pearl3: #DEDAD2;
            --bw-pearl4: #CEC9C0;
            --bw-silver:   #C0BCB5;
            --bw-silver-l: #D8D4CE;
            --bw-silver-d: #888480;
            --bw-ink:    #EDEDE8;
            --bw-ink2:   #A8A49E;
            --bw-ink3:   #666260;
            --bw-text-dark:  #18181C;
            --bw-text-dark2: #383530;
            --bw-text-dark3: #686460;
            --bw-border:   rgba(192,188,181,.18);
            --bw-border-l: rgba(192,188,181,.07);
            --bw-border-d: rgba(192,188,181,.32);
            --bw-gold:    #9A7A3A;
            --bw-gold-l:  #C4A05A;
            --bw-gold-glow:rgba(154,122,58,.28);
            --marfil:var(--bw-pearl);--crema:var(--bw-pearl2);
            --carbon:#18181E;--carbon-l:#48484F;
            --oro:var(--bw-silver);--oro-l:var(--bw-silver-l);
            --oro-glow:rgba(192,188,181,.22);
            --negro:var(--bw-void);--blanco:var(--bw-pearl);
            --texto-c:var(--bw-ink);--texto-s:var(--bw-ink2);--texto-t:var(--bw-ink3);
            --terra:var(--bw-silver);--terra-l:var(--bw-silver-l);
            --olivo:#48484F;--olivo-l:#88888F;--olivo-xl:#CCCCCC;
            --oscuro:var(--bw-void);
            --ease-bounce:cubic-bezier(.34,1.56,.64,1);
            --noche-1:var(--bw-obsidian);
            --noche-2:var(--bw-obsidian2);
            --noche-3:var(--bw-obsidian3);
            --noche-card:var(--bw-obsidian4);
            --noche-card2:#242432;
            --noche-border:var(--bw-border);
            --noche-border-l:var(--bw-border-l);
            --wv-base:   #F2EFE9;
            --wv-alt:    #E6E3DC;
            --wv-vein1:  rgba(188,184,178,.12);
            --wv-vein2:  rgba(168,164,158,.08);
            --wv-vein3:  rgba(208,204,198,.16);
            --wv-card:   #EAE7E0;
            --wv-card2:  #DEDAD2;
            --wv-deep:   #CEC9C0;
            --wv-ink:    #18181C;
            --wv-ink2:   #383530;
            --wv-ink3:   #686460;
            --wv-gold:   var(--bw-silver);
            --wv-gold-l: var(--bw-silver-l);
            --wv-border: var(--bw-border);
            --grain-svg:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.72' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E");
            --grain-light:url("data:image/svg+xml,%3Csvg viewBox='0 0 240 240' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)' opacity='1'/%3E%3C/svg%3E");
            --bw-diamond:url("data:image/svg+xml,%3Csvg width='48' height='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M24 2L46 24L24 46L2 24Z' fill='none' stroke='rgba(192,188,181,0.07)' stroke-width='0.6'/%3E%3C/svg%3E");
        }

        *{margin:0;padding:0;box-sizing:border-box}
        html{scroll-behavior:smooth}
        body{font-family:var(--fs);background:var(--noche-1);color:var(--texto-c);overflow-x:hidden;font-weight:300}
        h1,h2,h3,h4,.serif{font-family:var(--ft);font-weight:400}

        /* ═══ PARTICLES ═══ */
        #particles-bg{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
        .particle{position:absolute;width:3px;height:3px;background:var(--oro);border-radius:50%;opacity:0;
            box-shadow:0 0 8px 2px var(--oro-glow);animation:float-particle linear infinite}
        @keyframes float-particle{
            0%{transform:translateY(100vh) translateX(0) scale(.5);opacity:0}
            15%{opacity:.8}70%{opacity:.6}
            100%{transform:translateY(-10vh) translateX(var(--drift)) scale(1.1);opacity:0}
        }

        /* ════════════════════════════════════════
           INTRO — NOIR EDITORIAL · GPU-OPTIMIZED
        ════════════════════════════════════════ */

        /* ── INTRO WRAPPER ── */
        #intro-dark{
            position:fixed;inset:0;z-index:9999;
            background:#000;
            display:flex;flex-direction:column;overflow:hidden;
            will-change:opacity,transform;
            transition:opacity 1.4s cubic-bezier(.4,0,.2,1),
                        transform 1.4s cubic-bezier(.4,0,.2,1),
                        visibility 1.4s;
        }
        #intro-dark.abierto{
            opacity:0;
            transform:scale(1.03);
            visibility:hidden;
            pointer-events:none;
        }

        /* Background photo — Ken Burns sin filtros pesados en runtime */
        .vi-bg{
            position:absolute;inset:-6%;width:112%;height:112%;
            z-index:0;
            background:url('Fotos/noir_portada.png') center 30%/cover no-repeat;
            will-change:transform,opacity;
            animation:viKbZoom 36s ease-in-out infinite alternate,
                       viBgReveal 5s ease .05s both;
        }
        @keyframes viKbZoom{
            0%  {transform:scale(1) translate(0,0)}
            100%{transform:scale(1.06) translate(-1%,-.4%)}
        }
        /* Revelar de negro a gris oscuro dramático, sin filter en loop */
        @keyframes viBgReveal{
            0%  {opacity:0}
            40% {opacity:.18}
            100%{opacity:.32}
        }

        /* Overlay editorial — dos gradientes en pseudo-elementos para no acumular layers */
        .vi-vignette{
            position:absolute;inset:0;z-index:1;pointer-events:none;
            background:
                linear-gradient(to bottom,
                    #000 0%,rgba(0,0,0,.85) 12%,
                    transparent 35%,
                    transparent 58%,
                    rgba(0,0,0,.92) 100%),
                linear-gradient(to right,
                    rgba(0,0,0,.65) 0%,transparent 28%,
                    transparent 72%,rgba(0,0,0,.65) 100%);
        }

        /* Grain estático (no animation = 0 repaint cost) */
        .vi-grain{
            position:absolute;inset:0;z-index:3;pointer-events:none;
            opacity:.055;mix-blend-mode:overlay;
            background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E");
            animation:viGrain .6s steps(8) infinite;
        }
        @keyframes viGrain{
            0%  {background-position:0 0}
            14% {background-position:-4% -7%}
            28% {background-position:5%   2%}
            42% {background-position:-2%  5%}
            57% {background-position:4%  -4%}
            71% {background-position:-3%  1%}
            85% {background-position:2%  -5%}
            100%{background-position:0 0}
        }

        /* Scanlines finas */
        .vi-scanlines{
            position:absolute;inset:0;z-index:4;pointer-events:none;
            background:repeating-linear-gradient(
                to bottom,transparent 0,transparent 3px,
                rgba(255,255,255,.008) 3px,rgba(255,255,255,.008) 4px)
        }

        /* Líneas laterales de luz editorial */
        .vi-light-l,.vi-light-r{
            position:absolute;top:0;bottom:0;z-index:5;pointer-events:none;
            width:1px;opacity:0;
        }
        .vi-light-l{
            left:clamp(26px,5vw,56px);
            background:linear-gradient(to bottom,
                transparent 0%,rgba(181,154,89,.35) 25%,
                rgba(181,154,89,.6) 50%,rgba(181,154,89,.35) 75%,transparent 100%);
            animation:viLightIn .9s ease 1.2s forwards;
        }
        .vi-light-r{
            right:clamp(26px,5vw,56px);
            background:linear-gradient(to bottom,
                transparent 0%,rgba(255,255,255,.08) 30%,
                rgba(255,255,255,.14) 50%,rgba(255,255,255,.08) 70%,transparent 100%);
            animation:viLightIn .9s ease 1.4s forwards;
        }
        @keyframes viLightIn{
            from{opacity:0;transform:scaleY(.4)}
            to  {opacity:1;transform:scaleY(1)}
        }

        /* Bar header editorial */
        .vi-bar{
            position:relative;z-index:8;flex-shrink:0;
            display:flex;align-items:center;
            padding:clamp(12px,2vh,20px) clamp(18px,5vw,42px);
            border-bottom:1px solid rgba(255,255,255,.06);
            opacity:0;
            animation:viDown .7s ease .3s both;
        }
        @keyframes viDown{
            from{opacity:0;transform:translateY(-14px)}
            to  {opacity:1;transform:translateY(0)}
        }
        .vi-bar-brand{
            font-family:var(--fs);font-size:clamp(.28em,1vw,.38em);
            letter-spacing:clamp(5px,1.8vw,8px);text-transform:uppercase;
            color:rgba(255,255,255,.18);font-weight:300;white-space:nowrap;
        }
        .vi-bar-sep{
            flex:1;height:1px;margin:0 clamp(10px,3vw,22px);
            background:linear-gradient(to right,transparent,rgba(181,154,89,.22),transparent);
        }
        .vi-bar-vol{
            font-family:var(--ft);font-style:italic;
            font-size:clamp(.36em,1.3vw,.46em);
            letter-spacing:3px;color:rgba(181,154,89,.38);white-space:nowrap;
        }

        /* Texto lateral girado */
        .vi-cl{
            position:absolute;z-index:8;
            font-family:var(--fs);font-size:clamp(.22em,.85vw,.3em);
            letter-spacing:clamp(3px,1vw,5px);text-transform:uppercase;
            color:rgba(255,255,255,.1);font-weight:200;
            writing-mode:vertical-rl;pointer-events:none;top:50%;
        }
        .vi-cl-l{
            left:clamp(6px,1.2vw,12px);
            transform:translateY(-50%) rotate(180deg);
            opacity:0;animation:viFromL .9s ease 1.3s both;
        }
        .vi-cl-r{
            right:clamp(6px,1.2vw,12px);
            transform:translateY(-50%);
            opacity:0;animation:viFromR .9s ease 1.5s both;
        }
        @keyframes viFromL{
            from{opacity:0;transform:translateY(-50%) rotate(180deg) translateX(10px)}
            to  {opacity:1;transform:translateY(-50%) rotate(180deg) translateX(0)}
        }
        @keyframes viFromR{
            from{opacity:0;transform:translateY(-50%) translateX(10px)}
            to  {opacity:1;transform:translateY(-50%) translateX(0)}
        }

        /* Cuerpo central */
        .vi-body{
            position:relative;z-index:8;flex:1;
            display:flex;flex-direction:column;justify-content:center;
            padding:0 clamp(28px,7vw,60px);
        }

        /* Etiqueta top */
        .vi-tag{
            font-family:var(--fs);
            font-size:clamp(.3em,1.1vw,.38em);
            letter-spacing:clamp(6px,2.2vw,10px);
            text-transform:uppercase;
            color:rgba(255,255,255,.14);
            font-weight:200;
            margin-bottom:clamp(14px,3vh,28px);
            display:flex;align-items:center;gap:14px;
            opacity:0;animation:viFadeUp .75s ease 1.0s both;
        }
        .vi-tag::before,.vi-tag::after{
            content:'';flex:0 0 30px;height:1px;
            background:linear-gradient(to right,transparent,rgba(181,154,89,.3));
        }
        .vi-tag::after{background:linear-gradient(to left,transparent,rgba(181,154,89,.3));}

        /* Nombres grandes */
        .vi-nwrap{overflow:hidden;line-height:.82}
        .vi-nwrap.right{text-align:right}
        .vi-n{
            display:block;
            font-family:var(--ft);
            font-size:clamp(4.8em,21vw,11em);
            font-style:italic;font-weight:300;
            /* Gradiente coral empolvado — seductor, no blanco plano */
            background:linear-gradient(
                160deg,
                #F8F0E8 0%,
                #EDD9C8 28%,
                #D4B998 52%,
                #E8D5C4 72%,
                #F5EDE4 100%
            );
            -webkit-background-clip:text;
            -webkit-text-fill-color:transparent;
            background-clip:text;
            line-height:.82;
            letter-spacing:-1px;
            will-change:transform;
            transform:translateY(110%);
            animation:viSlideUp 1.1s cubic-bezier(.16,1,.3,1) both;
        }
        .vi-nwrap:nth-of-type(1) .vi-n{animation-delay:1.2s}
        .vi-nwrap.right .vi-n{animation-delay:1.55s}
        @keyframes viSlideUp{to{transform:translateY(0)}}

        /* Línea dorada & ampersand */
        .vi-goldrow{
            display:flex;align-items:center;
            gap:clamp(10px,3vw,20px);
            margin:clamp(4px,1vh,10px) 0;
            opacity:0;animation:viFade .5s ease 2.0s both;
        }
        @keyframes viFade{from{opacity:0}to{opacity:1}}
        .vi-gline{
            flex:1;height:1px;background:linear-gradient(to right,transparent,var(--oro));
            transform:scaleX(0);transform-origin:left;
            animation:viLineX .9s ease 2.05s both;
        }
        .vi-gline:last-child{
            background:linear-gradient(to left,transparent,var(--oro));
            transform-origin:right;
        }
        @keyframes viLineX{to{transform:scaleX(1)}}
        /* ── Wax Seal SVG — se dibuja al final del intro ──
           stroke-dasharray trick: el sello aparece como si lo grabaran
           con un hierro en cámara lenta. Espectacular en mobile.
        */
        .vi-seal{
            position:relative;
            flex-shrink:0;
            width:clamp(62px,14vw,86px);
            height:clamp(62px,14vw,86px);
            opacity:0;
            animation:viSealReveal .4s ease 2.0s both;
        }
        @keyframes viSealReveal{
            from{opacity:0;transform:scale(.6) rotate(-15deg)}
            to  {opacity:1;transform:scale(1) rotate(0deg)}
        }
        /* Resplandor dorado al revelarse */
        .vi-seal::after{
            content:'';
            position:absolute;inset:-12px;
            border-radius:50%;
            background:radial-gradient(circle,rgba(181,154,89,.3) 0%,transparent 65%);
            opacity:0;
            animation:viSealGlow 1.8s ease 2.4s infinite alternate;
        }
        @keyframes viSealGlow{
            0%  {opacity:0;transform:scale(.9)}
            100%{opacity:1;transform:scale(1.1)}
        }
        /* Trazado SVG que se dibuja */
        .vi-seal-svg .seal-ring{
            stroke-dasharray:280;
            stroke-dashoffset:280;
            animation:sealDraw 1.6s cubic-bezier(.16,1,.3,1) 2.1s both;
        }
        .vi-seal-svg .seal-ring2{
            stroke-dasharray:220;
            stroke-dashoffset:220;
            animation:sealDraw 1.4s cubic-bezier(.16,1,.3,1) 2.25s both;
        }
        .vi-seal-svg .seal-deco{
            stroke-dasharray:180;
            stroke-dashoffset:180;
            animation:sealDraw 1.0s cubic-bezier(.16,1,.3,1) 2.55s both;
        }
        @keyframes sealDraw{
            to{stroke-dashoffset:0}
        }
        /* Las iniciales aparecen de golpe al final del dibujo */
        .vi-seal-svg .seal-text{
            opacity:0;
            animation:viFade .5s ease 3.0s both;
            font-family:'Cormorant Garamond',serif;
        }

        /* Meta fecha / lugar */
        .vi-meta{
            display:flex;align-items:center;flex-wrap:wrap;
            gap:clamp(5px,1.8vw,12px);
            margin-top:clamp(6px,1.2vh,12px);
            opacity:0;animation:viFadeUp .7s ease 2.6s both;
        }
        @keyframes viFadeUp{
            from{opacity:0;transform:translateY(14px)}
            to  {opacity:1;transform:translateY(0)}
        }
        .vi-fecha{
            font-family:var(--ft);font-style:italic;
            font-size:clamp(.7em,2.3vw,.95em);
            letter-spacing:3px;color:rgba(255,255,255,.45);
        }
        .vi-mdot{color:rgba(181,154,89,.35);font-size:.5em;line-height:1}
        .vi-venue{
            font-family:var(--fs);font-weight:200;
            font-size:clamp(.3em,1.1vw,.4em);
            letter-spacing:clamp(3px,1.2vw,6px);
            text-transform:uppercase;
            color:rgba(255,255,255,.18);
        }


        /* ═══ WAX SEAL CTA — Abre la Invitación
           El sello ES el botón. Sin texto torpe, solo geometría pura.
           Secuencia: se dibuja (stroke-dash) → vibra con pulso → invita a tocarlo.
        ═══ */
        .vi-seal{
            /* Posicionamiento en el goldrow, entre los nombres */
            position:relative;
            flex-shrink:0;
            display:flex;
            flex-direction:column;
            align-items:center;
            gap:10px;
            width:clamp(82px,18vw,110px);
            height:auto;
            opacity:0;
            animation:viSealReveal .5s cubic-bezier(.16,1,.3,1) 1.9s both;
            background:none;
            border:none;
            cursor:pointer;
            padding:0;
            outline:none;
            -webkit-tap-highlight-color:transparent;
        }
        /* Wrapper que da dimensiones fijas al scope del pulso y glow */
        .vi-seal-wrap{
            position:relative;
            width:clamp(82px,18vw,110px);
            height:clamp(82px,18vw,110px);
            flex-shrink:0;
            display:flex;align-items:center;justify-content:center;
        }
        @keyframes viSealReveal{
            from{opacity:0;transform:scale(.5) rotate(-25deg)}
            to  {opacity:1;transform:scale(1) rotate(0deg)}
        }


        /* Capa glow detras del SVG — centrado en vi-seal-wrap */
        .vi-seal-glow{
            position:absolute;
            top:50%;left:50%;
            transform:translate(-50%,-50%);
            width:130%;
            height:130%;
            border-radius:50%;
            background:radial-gradient(circle,rgba(181,154,89,.28) 0%,transparent 65%);
            pointer-events:none;
            opacity:0;
            animation:viSealGlow 2.2s ease 3.8s infinite alternate;
        }
        @keyframes viSealGlow{
            0%  {opacity:0;transform:translate(-50%,-50%) scale(.85)}
            100%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}
        }
        /* Pulso de ring — centrado en vi-seal-wrap */
        .vi-seal-ring-pulse{
            position:absolute;
            top:50%;left:50%;
            transform:translate(-50%,-50%) scale(1);
            width:clamp(82px,18vw,110px);
            height:clamp(82px,18vw,110px);
            border:1px solid rgba(181,154,89,.5);
            border-radius:50%;
            pointer-events:none;
            opacity:0;
            animation:sealRingExpand 2.4s ease 4.2s infinite;
        }
        @keyframes sealRingExpand{
            0%  {transform:translate(-50%,-50%) scale(1);opacity:.7}
            100%{transform:translate(-50%,-50%) scale(1.7);opacity:0}
        }

        /* Hint de texto debajo del sello — ahora es hermano del goldrow */
        .vi-seal-hint{
            font-family:var(--fs);
            font-size:clamp(.26em,.9vw,.34em);
            letter-spacing:clamp(4px,1.4vw,7px);
            text-transform:uppercase;
            color:rgba(181,154,89,.5);
            font-weight:200;
            white-space:nowrap;
            text-align:center;
            display:block;
            margin-top:-2px;
            opacity:0;
            animation:viFadeUp .7s ease 4.0s both;
        }

        /* Hover: el sello escala como al presionar cera caliente */
        .vi-seal:hover .vi-seal-svg{
            transform:scale(1.08) rotate(5deg);
        }
        .vi-seal:active .vi-seal-svg{
            transform:scale(.94);
        }
        .vi-seal-svg{
            transition:transform .4s cubic-bezier(.16,1,.3,1);
            display:block;
            width:clamp(82px,18vw,110px);
            height:clamp(82px,18vw,110px);
        }

        /* Trazados que se dibujan en cascada — dasharray = 2πr exacto */
        .vi-seal-svg .seal-ring{
            stroke-dasharray:327;   /* 2π × 52 = 326.7 */
            stroke-dashoffset:327;
            animation:sealDraw 2.6s cubic-bezier(.16,1,.3,1) 2.0s both;
        }
        .vi-seal-svg .seal-ring2{
            stroke-dasharray:271;   /* 2π × 43 = 270.2 */
            stroke-dashoffset:271;
            animation:sealDraw 2.2s cubic-bezier(.16,1,.3,1) 2.3s both;
        }
        .vi-seal-svg .seal-ring3{
            stroke-dasharray:214;   /* 2π × 34 = 213.6 */
            stroke-dashoffset:214;
            animation:sealDraw 1.8s cubic-bezier(.16,1,.3,1) 2.65s both;
        }
        .vi-seal-svg .seal-rays{
            stroke-dasharray:260;   /* mayor que cualquier rayo (~34px) */
            stroke-dashoffset:260;
            animation:sealDraw 1.6s cubic-bezier(.16,1,.3,1) 3.0s both;
        }
        .vi-seal-svg .seal-ticks{
            stroke-dasharray:20;
            stroke-dashoffset:20;
            animation:sealDraw 1.4s cubic-bezier(.16,1,.3,1) 3.2s both;
        }
        .vi-seal-svg .seal-inner-ring{
            stroke-dasharray:38;    /* 2π × 6 = 37.7 */
            stroke-dashoffset:38;
            animation:sealDraw 1.0s cubic-bezier(.16,1,.3,1) 3.5s both;
        }
        .vi-seal-svg .seal-dots{
            opacity:0;
            animation:viFade .7s ease 3.8s both;
        }
        @keyframes sealDraw{to{stroke-dashoffset:0}}

        /* Credit signature */
        .vi-credit{
            position:absolute;
            bottom:clamp(72px,11vh,102px);
            left:50%;transform:translateX(-50%);
            z-index:9;white-space:nowrap;
            font-size:clamp(.23em,.85vw,.31em);
            letter-spacing:5px;text-transform:uppercase;
            color:rgba(255,255,255,.06);
            opacity:0;animation:viFade 2.2s ease 4.0s both;
        }

        /* ═══ GENERAL — DARK OVERRIDE ═══ */
        .seccion{padding:100px 20px;text-align:center;position:relative;z-index:1;background:var(--noche-2)}
        .seccion::before{content:'';position:absolute;inset:0;background:var(--grain-svg);opacity:.022;pointer-events:none;z-index:0}
        .seccion-alt{background:var(--noche-3)}
        .seccion-dark{background:var(--negro);color:var(--marfil)}
        .contenedor{max-width:800px;margin:0 auto;position:relative;z-index:1}
        .titulo{font-size:clamp(2.2em,5vw,3.5em);font-style:italic;color:var(--texto-c);margin-bottom:20px}
        .subtitulo{font-size:.7em;letter-spacing:5px;text-transform:uppercase;color:var(--oro);margin-bottom:10px;font-weight:500}
        .texto{font-size:1em;line-height:1.8;color:var(--texto-s)}
        .divisor{display:flex;align-items:center;justify-content:center;gap:15px;margin:28px auto}
        .divisor::before,.divisor::after{content:'';width:60px;height:1px;background:linear-gradient(to right,transparent,var(--oro-l))}
        .divisor::after{background:linear-gradient(to left,transparent,var(--oro-l))}
        .divisor .d{width:6px;height:6px;background:var(--oro);transform:rotate(45deg)}

        /* ══════════════════════════════════════════════
           SECCIONES LIGHT — Paleta White Vogue
           Papel de algodón 300g con luz editorial 2900K
        ══════════════════════════════════════════════ */
        .seccion-light{
            /* Mármol Calacatta cremoso — vetas via gradientes layered */
            background:
                linear-gradient(108deg, var(--wv-vein3) 0%, transparent 28%,
                    var(--wv-vein1) 55%, transparent 72%,
                    var(--wv-vein2) 90%, transparent 100%),
                linear-gradient(198deg, var(--wv-vein1) 5%, transparent 42%,
                    var(--wv-vein3) 68%, transparent 90%),
                var(--wv-base);
            position:relative;z-index:1;
            padding:100px 20px;
            text-align:center;
        }
        /* Grain muy sutil sobre el mármol */
        .seccion-light::before{
            content:'';position:absolute;inset:0;pointer-events:none;z-index:0;
            background-image:var(--grain-light);
            opacity:.04;
            mix-blend-mode:multiply;
        }
        /* Borde inferior dorado: transición hacia secciones oscuras */
        .seccion-light::after{
            content:'';position:absolute;left:0;right:0;bottom:0;height:3px;
            background:linear-gradient(to right,transparent,var(--wv-gold),transparent);
            opacity:.3;pointer-events:none;
        }
        /* Variante alterna: vetas giradas, tono ligeramente más profundo */
        .seccion-light-alt{
            background:
                linear-gradient(152deg, var(--wv-vein2) 0%, transparent 35%,
                    var(--wv-vein3) 58%, transparent 78%,
                    var(--wv-vein1) 95%, transparent 100%),
                linear-gradient(242deg, var(--wv-vein3) 8%, transparent 40%,
                    var(--wv-vein1) 65%, transparent 88%),
                var(--wv-alt);
        }
        /* Overrides de tipografía dentro de secciones light */
        .seccion-light .titulo,
        .seccion-light-alt .titulo{
            color:var(--wv-ink);
        }
        .seccion-light .subtitulo,
        .seccion-light-alt .subtitulo{
            color:var(--wv-gold);
        }
        .seccion-light .texto,
        .seccion-light-alt .texto{
            color:var(--wv-ink2);
        }
        /* Divisor en modo light */
        .seccion-light .divisor::before,
        .seccion-light .divisor::after,
        .seccion-light-alt .divisor::before,
        .seccion-light-alt .divisor::after{
            background:linear-gradient(to right,transparent,var(--wv-gold));
            opacity:.5;
        }
        .seccion-light .divisor .d,
        .seccion-light-alt .divisor .d{
            background:var(--wv-gold);
        }

        /* ── Familia cards en modo LIGHT ── */
        .seccion-light .familia-card-inner,
        .seccion-light-alt .familia-card-inner{
            background:var(--wv-card);
            border:1px solid var(--wv-border);
            box-shadow:
                0 2px 0 rgba(255,255,255,.9) inset,
                0 8px 32px rgba(30,25,15,.08),
                0 1px 3px rgba(154,122,58,.12);
        }
        .seccion-light .familia-card-inner::before,
        .seccion-light-alt .familia-card-inner::before{
            border-color:rgba(154,122,58,.07);
        }
        .seccion-light .familia-card-inner::after,
        .seccion-light-alt .familia-card-inner::after{
            background:linear-gradient(to right,transparent,var(--wv-gold),transparent);
            opacity:.5;
        }
        .seccion-light .familia-bloque h4,
        .seccion-light-alt .familia-bloque h4{
            color:var(--wv-gold);
        }
        .seccion-light .familia-nombres,
        .seccion-light-alt .familia-nombres{
            color:var(--wv-ink);
        }
        .seccion-light .familia-y,
        .seccion-light-alt .familia-y{
            color:var(--wv-gold-l);
        }
        .seccion-light .familia-sep-line,
        .seccion-light-alt .familia-sep-line{
            background:var(--wv-gold);opacity:.35;
        }
        /* Dots y flechas en light */
        .seccion-light .fam-dot,
        .seccion-light-alt .fam-dot{
            background:rgba(154,122,58,.2);
        }
        .seccion-light .fam-dot.active,
        .seccion-light-alt .fam-dot.active{
            background:var(--wv-gold);
        }
        .seccion-light .fam-arrow,
        .seccion-light-alt .fam-arrow{
            border-color:var(--wv-border);
            color:var(--wv-gold);
        }
        .seccion-light .fam-arrow:hover,
        .seccion-light-alt .fam-arrow:hover{
            background:rgba(154,122,58,.08);
            border-color:var(--wv-gold);
        }

        /* ── Reglas de Etiqueta cards en modo LIGHT ── */
        .seccion-light .card,
        .seccion-light-alt .card{
            background:var(--wv-card);
            border-color:var(--wv-border);
            box-shadow:
                0 2px 0 rgba(255,255,255,.85) inset,
                0 6px 24px rgba(30,25,15,.07);
        }
        .seccion-light .card::after,
        .seccion-light-alt .card::after{
            background-image:var(--grain-light);
            opacity:.04;
            mix-blend-mode:multiply;
        }
        .seccion-light .card:hover,
        .seccion-light-alt .card:hover{
            box-shadow:
                0 2px 0 rgba(255,255,255,.9) inset,
                0 14px 40px rgba(30,25,15,.1),
                0 0 20px rgba(154,122,58,.06);
            border-color:rgba(154,122,58,.35);
        }
        .seccion-light .card .ico-wrap,
        .seccion-light-alt .card .ico-wrap{
            border-color:var(--wv-border);
            background:rgba(154,122,58,.06);
        }
        .seccion-light .card h3,
        .seccion-light-alt .card h3{
            color:var(--wv-ink);
        }
        .seccion-light .card p,
        .seccion-light-alt .card p{
            color:var(--wv-ink2);
        }
        .seccion-light .card .subtitulo,
        .seccion-light-alt .card .subtitulo{
            color:var(--wv-gold);
        }

        /* regalo-envelope ya usa --wv-* tokens directo, no necesita overrides light */
        /* Texto descriptivo introductorio en sección light */
        .seccion-light .texto-light-intro{
            font-family:var(--ft);font-style:italic;
            font-size:clamp(1em,2.5vw,1.15em);
            color:var(--wv-ink2);line-height:1.85;
            max-width:500px;margin:0 auto 10px;
        }

        /* ═══ NARRATIVE ═══ */
        .narrative-section{position:relative;overflow:hidden;padding:0}
        .narrative-img{width:100%;height:70vh;object-fit:cover;filter:grayscale(40%) contrast(110%);display:block}
        .narrative-video{width:100%;height:70vh;object-fit:cover;display:block}
        .narrative-overlay{position:absolute;inset:0;background:linear-gradient(to top,var(--noche-2) 15%,transparent 50%,rgba(0,0,0,.3) 100%)}
        .narrative-text{position:relative;text-align:center;padding:0 30px 80px;margin-top:-120px;z-index:2}
        .narrative-text h2{font-family:var(--ft);font-size:clamp(1.5em,4vw,2.2em);font-style:italic;color:var(--texto-c);line-height:1.6;max-width:550px;margin:0 auto}
        .narrative-firma{font-size:.7em;letter-spacing:3px;color:var(--oro);text-transform:uppercase;margin-top:20px}

        /* ═══ CARTA VOGUE — HAS SIDO ELEGIDO ═══
           Papel de algodón impreso · Fondo light sobre sección oscura.
           La sombra la dispara visualmente como una carta real.
        ══════════════════════════ */
        .boleto-vip{
            position:relative;
            /* Coral empolvado / seashell — papel de lujo caliente */
            background:
                linear-gradient(135deg,
                    rgba(240,215,200,.35) 0%, transparent 40%,
                    rgba(220,195,178,.2) 70%, transparent 100%),
                linear-gradient(225deg,
                    rgba(235,210,195,.25) 0%, transparent 55%),
                var(--wv-card);
            border:none;
            padding:clamp(44px,6vh,64px) clamp(32px,5vw,52px);
            margin:50px auto;
            max-width:560px;
            /* Sombra dramática que eleva la carta sobre el fondo negro */
            box-shadow:
                0 2px 0 rgba(255,245,240,.95) inset,
                0 -1px 0 rgba(160,130,110,.18) inset,
                0 30px 80px rgba(0,0,0,.55),
                0 10px 30px rgba(0,0,0,.35),
                0  2px  8px rgba(0,0,0,.2);
            transition:transform .55s cubic-bezier(.16,1,.3,1),
                       box-shadow .55s cubic-bezier(.16,1,.3,1);
        }
        /* Textura de papel fino por encima */
        .boleto-vip::before{
            content:'';position:absolute;inset:0;
            background-image:var(--grain-light);
            opacity:.06;pointer-events:none;
            mix-blend-mode:multiply;
        }
        /* Marco interior grabado — muy sutil */
        .boleto-vip::after{
            content:'';position:absolute;
            inset:clamp(10px,2vw,16px);
            border:1px solid rgba(154,122,58,.15);
            pointer-events:none;
        }
        .boleto-vip:hover{
            transform:translateY(-7px) rotate(-.3deg);
            box-shadow:
                0 2px 0 rgba(255,245,240,.95) inset,
                0 -1px 0 rgba(160,130,110,.18) inset,
                0 45px 100px rgba(0,0,0,.62),
                0 15px 40px rgba(0,0,0,.4),
                0  3px 10px rgba(0,0,0,.25);
        }

        /* Semicírculos de "ticket" — en color del fondo de la sección (oscuro) */
        .boleto-perf{
            position:absolute;
            top:65%;transform:translateY(-50%);
            width:34px;height:34px;
            background:var(--noche-2);  /* mismo color que la sección */
            border-radius:50%;
            z-index:3;
        }
        .boleto-perf.l{left:-17px;}
        .boleto-perf.r{right:-17px;}

        /* Línea perforada de separación */
        .boleto-linea{
            position:absolute;top:65%;
            left:0;right:0;
            height:1px;
            background:repeating-linear-gradient(
                90deg,
                transparent,transparent 5px,
                rgba(154,122,58,.25) 5px,rgba(154,122,58,.25) 10px);
        }

        /* Contenido de la carta */
        .boleto-content{position:relative;z-index:1;}

        /* Badge top */
        .boleto-badge{
            font-size:.52em;
            letter-spacing:6px;
            color:var(--wv-gold);
            text-transform:uppercase;
            margin-bottom:20px;
            display:flex;align-items:center;justify-content:center;gap:12px;
        }
        .boleto-badge::before,.boleto-badge::after{
            content:'';flex:1;height:1px;
            background:linear-gradient(to right,transparent,var(--wv-border));
            max-width:50px;
        }
        .boleto-badge::after{background:linear-gradient(to left,transparent,var(--wv-border));}

        /* Iniciales grandes */
        .boleto-init{
            font-family:var(--ft);
            font-size:clamp(3.2em,9vw,4.8em);
            font-style:italic;
            color:var(--wv-ink);
            line-height:1;
            margin-bottom:6px;
            letter-spacing:-1px;
        }

        /* Subtitulo */
        .boleto-sub{
            font-family:var(--ft);font-style:italic;
            color:var(--wv-ink3);
            margin-bottom:16px;font-size:1.05em;
        }

        /* Nombres */
        .boleto-nombres{margin-bottom:4px;}
        .boleto-nombres h3{
            font-size:1.05em;
            color:var(--wv-gold);
            font-weight:400;margin:3px 0;
        }
        .boleto-nombres .amp{
            font-family:var(--ft);font-style:italic;
            color:var(--wv-ink3);font-size:.88em;
        }

        /* Datos fecha/hora/vestimenta */
        .boleto-datos{
            display:flex;justify-content:space-between;
            text-align:center;
            margin-top:18px;padding-top:18px;
            border-top:1px solid rgba(154,122,58,.12);
        }
        .boleto-item h4{
            font-size:.56em;letter-spacing:3px;
            color:var(--wv-gold);text-transform:uppercase;
            margin-bottom:7px;font-weight:500;
        }
        .boleto-item p{
            font-family:var(--ft);font-size:1.15em;
            color:var(--wv-ink);font-style:italic;
        }

        /* ── LUGARES DEL EVENTO ── */
        .boleto-lugares{
            margin-top:8px;
            padding-top:20px;
            border-top:1px solid rgba(154,122,58,.12);
            display:flex;flex-direction:column;gap:0;
        }
        .bl-lugar-item{
            display:flex;
            align-items:flex-start;
            gap:14px;
            padding:14px 0;
            border-bottom:1px dashed rgba(154,122,58,.18);
        }
        .bl-lugar-item:last-child{border-bottom:none;}
        .bl-icon-wrap{
            width:36px;height:36px;
            border:1px solid var(--wv-border);
            border-radius:50%;
            display:flex;align-items:center;justify-content:center;
            flex-shrink:0;
            background:rgba(154,122,58,.06);
            font-size:.9em;
            margin-top:2px;
            color:var(--wv-gold);
        }
        .bl-lugar-info{text-align:left;flex:1;}
        .bl-tipo{
            display:block;font-family:var(--fs);
            font-size:.52em;letter-spacing:3px;
            text-transform:uppercase;
            color:var(--wv-gold);margin-bottom:3px;
        }
        .bl-nombre{
            display:block;font-family:var(--ft);
            font-size:1.15em;
            color:var(--wv-ink);font-style:italic;
        }
        .bl-hora{
            display:block;font-family:var(--fs);
            font-size:.55em;letter-spacing:2px;
            color:var(--wv-ink3);margin-top:2px;
        }

        /* Botón de mapa integrado en la tarjeta */
        .bl-map-btn{
            display:inline-flex;
            align-items:center;
            gap:5px;
            margin-top:8px;
            padding:6px 12px;
            border:1px solid var(--wv-border);
            background:rgba(154,122,58,.05);
            color:var(--wv-gold);
            text-decoration:none;
            font-family:var(--fs);
            font-size:.5em;
            letter-spacing:3px;
            text-transform:uppercase;
            transition:background .3s ease,border-color .3s ease,color .3s ease;
            cursor:pointer;
        }
        .bl-map-btn:hover{
            background:rgba(154,122,58,.12);
            border-color:var(--wv-gold);
        }
        .bl-map-btn svg{
            width:10px;height:10px;
            stroke:currentColor;fill:none;
            stroke-width:2;stroke-linecap:round;
            flex-shrink:0;
        }

        /* ═══ CONTADOR — SAVE THE DATE EDITORIAL ═══ */

        /* -- Título Save the Date -- */
        .std-label{
            font-family:var(--ft);
            font-style:italic;
            font-size:clamp(1.8em,6vw,3em);
            color:var(--texto-c);
            letter-spacing:clamp(4px,1.8vw,8px);
            line-height:1;
            margin-bottom:0;
            position:relative;
            display:inline-block;
            overflow:hidden;          /* contiene el shimmer — sin esto se sale en mobile */
            opacity:0;
            animation:stdReveal 1s cubic-bezier(.16,1,.3,1) .3s both;
        }
        @keyframes stdReveal{
            from{opacity:0;transform:translateY(16px)}
            to{opacity:1;transform:translateY(0)}
        }
        /* Shimmer una vez al cargar — GPU: translateX en lugar de left */
        .std-label::after{
            content:'';
            position:absolute;top:0;left:0;width:50%;height:100%;
            background:linear-gradient(100deg,
                transparent 0%,rgba(181,154,89,.22) 45%,
                rgba(255,230,140,.32) 50%,rgba(181,154,89,.22) 55%,
                transparent 100%);
            transform:translateX(-220%);
            animation:stdShimmer 2.6s ease 1.2s both;
            pointer-events:none;
        }
        @keyframes stdShimmer{from{transform:translateX(-220%)}to{transform:translateX(340%)}}

        /* Subtítulo Script cursivo dorado */
        .std-script{
            font-family:var(--ft);
            font-style:italic;
            font-size:clamp(.75em,2.5vw,1em);
            color:var(--oro);
            letter-spacing:2px;
            display:block;
            margin-top:6px;
            opacity:0;
            animation:stdReveal .8s ease .7s both;
        }

        /* Linea dorada bajo el título */
        .std-divline{
            display:flex;align-items:center;justify-content:center;gap:14px;
            margin:16px auto 28px;
            opacity:0;
            animation:stdReveal .8s ease 1s both;
        }
        .std-divline::before,.std-divline::after{
            content:'';
            width:clamp(40px,10vw,80px);height:1px;
            background:linear-gradient(to right,transparent,var(--oro));
            opacity:.5;
        }
        .std-divline::after{background:linear-gradient(to left,transparent,var(--oro))}
        .std-divline .std-diamond{
            width:8px;height:8px;
            background:var(--oro);transform:rotate(45deg);
            animation:stdDiamondPulse 2.4s ease-in-out infinite;
            box-shadow:0 0 12px rgba(181,154,89,.5);
        }
        @keyframes stdDiamondPulse{
            0%,100%{transform:rotate(45deg) scale(1);box-shadow:0 0 8px rgba(181,154,89,.35)}
            50%    {transform:rotate(45deg) scale(1.35);box-shadow:0 0 20px rgba(181,154,89,.65)}
        }

        /* Wrapper del bloque contador */
        .contador-mag-wrap{
            max-width:700px;margin:0 auto;
            border:1px solid rgba(181,154,89,.22);
            padding:2px;
            background:linear-gradient(135deg,rgba(181,154,89,.12) 0%,transparent 40%,rgba(181,154,89,.1) 100%);
            position:relative;
            /* Glow exterior pulsado */
            animation:wrapGlow 4s ease-in-out infinite alternate;
        }
        @keyframes wrapGlow{
            0% {box-shadow:0 0 0px rgba(181,154,89,0),0 8px 32px rgba(0,0,0,.4)}
            100%{box-shadow:0 0 30px rgba(181,154,89,.12),0 12px 40px rgba(0,0,0,.55)}
        }

        .contador-mag-inner{
            background:var(--noche-card);
            padding:clamp(30px,5vh,50px) clamp(10px,2vw,20px);
            display:flex;align-items:stretch;position:relative;overflow:hidden}

        /* Línea dorada top */
        .contador-mag-inner::before{
            content:'';position:absolute;top:0;left:0;right:0;
            height:2px;background:linear-gradient(to right,transparent,var(--oro),var(--oro-l),var(--oro),transparent)}

        /* Grain de lujo sobre el contador */
        .contador-mag-inner::after{
            content:'';position:absolute;inset:0;
            background-image:var(--grain-svg);
            opacity:.018;pointer-events:none;}

        .mag-unit{flex:1;text-align:center;padding:0 clamp(6px,2vw,20px);position:relative}
        .mag-unit+.mag-unit::before{
            content:'';position:absolute;left:0;top:10%;bottom:10%;width:1px;
            background:linear-gradient(to bottom,transparent,rgba(181,154,89,.3),transparent)}

        /* Números con pulso de luz */
        .mag-num{
            display:block;
            font-family:var(--ft);font-style:italic;font-weight:300;
            font-size:clamp(2.8em,10vw,5.5em);
            color:var(--texto-c);line-height:1;letter-spacing:-2px;
            position:relative;
            /* Flipeo suave al cambiar el valor */
            transition:transform .25s cubic-bezier(.16,1,.3,1), color .25s ease;
        }
        /* Glow base que respira */
        .mag-num::before{
            content:attr(data-v);
            position:absolute;inset:0;
            font:inherit;
            color:transparent;
            text-shadow:0 0 40px rgba(181,154,89,.18);
            animation:numGlow 3.6s ease-in-out infinite alternate;
            pointer-events:none;
        }
        @keyframes numGlow{
            0% {text-shadow:0 0 30px rgba(181,154,89,.1)}
            100%{text-shadow:0 0 60px rgba(181,154,89,.3),0 0 90px rgba(181,154,89,.1)}
        }
        /* Clase que se agrega via JS al cambiar valor para flip */
        .mag-num.flip{
            transform:translateY(-6px) scale(.96);
            color:var(--oro-l);
        }

        .mag-label{
            display:block;font-family:var(--fs);
            font-size:clamp(.38em,1.2vw,.52em);
            letter-spacing:4px;text-transform:uppercase;
            color:var(--oro);margin-top:8px;font-weight:300}

        /* Barra animada bajo cada unidad — GPU: translateX */
        .mag-bar{
            width:18px;height:1px;background:var(--oro);margin:6px auto 0;
            opacity:.4;
            position:relative;overflow:hidden;
        }
        .mag-bar::after{
            content:'';
            position:absolute;top:0;left:0;width:70%;
            height:100%;
            background:linear-gradient(to right,transparent,rgba(255,230,140,.8),transparent);
            transform:translateX(-145%);
            animation:barSweep 3s ease-in-out infinite;
        }
        @keyframes barSweep{
            0%,40%{transform:translateX(-145%)}
            100%{transform:translateX(200%)}
        }

        /* ── BOTÓN GUARDAR EN CALENDARIO ── */
        .btn-calendar-wrap{
            margin:28px auto 0;
            display:flex;
            justify-content:center;
            opacity:0;
            animation:stdReveal .8s ease 1.4s both;
        }
        .btn-calendar{
            display:inline-flex;
            align-items:center;
            gap:10px;
            padding:15px 32px;
            /* Fondo muy sutil — el borde dorado es la estrella */
            background:transparent;
            border:1px solid rgba(181,154,89,.38);
            color:var(--oro);
            font-family:var(--fs);
            font-size:clamp(.5em,1.5vw,.65em);
            letter-spacing:5px;
            text-transform:uppercase;
            font-weight:300;
            text-decoration:none;
            cursor:pointer;
            outline:none;
            position:relative;
            overflow:hidden;
            transition:
                border-color .45s ease,
                color .45s ease,
                background .45s ease,
                box-shadow .45s ease;
            -webkit-tap-highlight-color:transparent;
        }
        /* Shimmer de barrido en el botón — GPU: translateX */
        .btn-calendar::before{
            content:'';
            position:absolute;top:0;left:0;width:60%;height:100%;
            background:linear-gradient(100deg,
                transparent 0%,rgba(181,154,89,.1) 40%,
                rgba(255,230,140,.18) 50%,rgba(181,154,89,.1) 60%,
                transparent 100%);
            transform:translateX(-200%);
            transition:transform .8s ease;
        }
        /* Línea superior dorada que crece al hover */
        .btn-calendar::after{
            content:'';
            position:absolute;top:0;left:0;right:0;height:1px;
            background:linear-gradient(to right,transparent,var(--oro),transparent);
            transform:scaleX(0);transition:transform .5s ease;
            opacity:.8;
        }
        .btn-calendar:hover::before{transform:translateX(260%);}
        .btn-calendar:hover::after{transform:scaleX(1);}
        .btn-calendar:hover{
            border-color:rgba(181,154,89,.75);
            color:var(--oro-l);
            box-shadow:
                0 0 22px rgba(181,154,89,.14),
                0 8px 28px rgba(0,0,0,.35);
        }
        .btn-calendar:active{
            transform:scale(.97);
        }
        /* Icono calendario SVG inline */
        .btn-cal-ico{
            width:14px;height:14px;
            stroke:currentColor;fill:none;
            stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;
            flex-shrink:0;
            transition:transform .4s var(--ease-bounce);
        }
        .btn-calendar:hover .btn-cal-ico{
            transform:translateY(-2px) scale(1.1);
        }
        /* Texto de notificación bajo el botón */
        .btn-calendar-note{
            font-family:var(--fs);
            font-size:clamp(.36em,1vw,.45em);
            letter-spacing:3px;
            color:rgba(181,154,89,.38);
            text-transform:uppercase;
            text-align:center;
            margin-top:10px;
            display:flex;
            align-items:center;
            justify-content:center;
            gap:6px;
        }
        .btn-calendar-note::before{content:'✦';font-size:.8em;opacity:.6;}

        /* ═══ FAMILIA — HORIZONTAL CAROUSEL ═══ */
        .familia-carousel-wrap{position:relative;margin-top:56px;overflow:visible}
        .familia-track{
            display:flex;
            overflow-x:auto;
            scroll-snap-type:x mandatory;
            scroll-behavior:smooth;
            -webkit-overflow-scrolling:touch;
            scrollbar-width:none;gap:0}
        .familia-track::-webkit-scrollbar{display:none}
        .familia-slide{
            flex:0 0 100%;
            scroll-snap-align:center;
            padding:30px 20px 40px;
            text-align:center}
        .familia-card-inner{
            max-width:420px;margin:0 auto;
            border:1px solid rgba(154,122,58,.18);
            /* Coral empolvado: mismo lenguaje que el boleto VIP */
            background:
                linear-gradient(140deg,
                    rgba(230,205,188,.3) 0%, transparent 45%,
                    rgba(215,192,175,.18) 75%, transparent 100%),
                var(--wv-card);
            padding:48px 30px 36px;   /* Top extra para el crest flotante */
            position:relative;
            overflow:visible;          /* El crest puede salir por arriba */
        }
        .familia-card-inner::before{
            content:'';position:absolute;inset:8px;
            border:1px solid rgba(154,122,58,.12);pointer-events:none;
        }
        .familia-card-inner::after{
            content:'';position:absolute;top:0;left:0;right:0;
            height:2px;background:linear-gradient(to right,transparent,var(--wv-gold),transparent);opacity:.7;
        }

        /* ── CREST DE LUJO — sello ornámental sobre el borde dorado ── */
        .familia-crest{
            position:absolute;
            top:-18px;           /* Flota a caballo entre el borde y el interior */
            left:50%;
            transform:translateX(-50%);
            width:36px;
            height:36px;
            z-index:10;
            /* Fondo coral para tapar el borde del card */
            background:
                linear-gradient(140deg, rgba(230,205,188,.4) 0%, transparent 70%),
                var(--wv-card);
            border:1px solid rgba(154,122,58,.25);
            border-radius:50%;
            display:flex;align-items:center;justify-content:center;
            box-shadow:
                0 2px 8px rgba(0,0,0,.08),
                0 0 0 3px rgba(154,122,58,.06);
            /* Shimmer suave cada 4 segundos */
            animation:crestShimmer 4s ease infinite;
        }
        @keyframes crestShimmer{
            0%,100%{box-shadow:0 2px 8px rgba(0,0,0,.08),0 0 0 3px rgba(154,122,58,.06)}
            50%    {box-shadow:0 3px 12px rgba(0,0,0,.12),0 0 0 4px rgba(154,122,58,.18),0 0 18px rgba(154,122,58,.12)}
        }
        .familia-crest svg{
            width:20px;height:20px;
            overflow:visible;
        }
        .familia-bloque h4{
            font-family:var(--fs);font-size:.62em;letter-spacing:5px;
            color:var(--wv-gold);text-transform:uppercase;margin-bottom:16px;font-weight:500;
        }
        .familia-nombres{
            font-family:var(--ft);font-size:1.45em;
            color:var(--wv-ink);line-height:1.7;font-style:italic;
        }
        .familia-y{font-size:.7em;color:var(--wv-gold);font-style:normal;display:block;margin:4px 0}
        .familia-sep-line{width:40px;height:1px;background:var(--wv-gold);margin:16px auto;opacity:.35}
        /* Dots */
        .familia-dots{display:flex;justify-content:center;gap:10px;margin-top:16px}
        .fam-dot{
            width:28px;height:2px;background:rgba(181,154,89,.2);
            cursor:pointer;transition:.3s;border:none;outline:none;padding:0}
        .fam-dot.active{background:var(--oro);width:36px}
        /* Nav arrows */
        .familia-nav{display:flex;justify-content:center;gap:14px;margin-top:14px}
        .fam-arrow{
            background:transparent;border:1px solid rgba(181,154,89,.25);
            color:var(--oro);width:36px;height:36px;
            display:flex;align-items:center;justify-content:center;
            cursor:pointer;font-size:1em;transition:.3s;flex-shrink:0}
        .fam-arrow:hover{background:rgba(181,154,89,.1);border-color:rgba(181,154,89,.5)}

        /* ═══ CARDSTACK — NUESTRO AMOR ═══ */
        .cardstack-section{padding:100px 20px;background:var(--noche-2);text-align:center;position:relative;z-index:1}
        .cardstack-section::before{content:'';position:absolute;inset:0;background:var(--grain-svg);opacity:.022;pointer-events:none;z-index:0}
        .cardstack-section .contenedor{position:relative;z-index:1}
        .cardstack-wrap{position:relative;max-width:340px;margin:50px auto 0}
        .cardstack{
            position:relative;
            height:clamp(340px,55vw,440px);
            cursor:pointer;
            margin-bottom:20px;
            -webkit-tap-highlight-color:transparent}
        .stack-card{
            position:absolute;inset:0;
            overflow:hidden;
            border:1px solid rgba(181,154,89,.18);
            will-change:transform,opacity;
            transition:transform .65s cubic-bezier(.22,1,.36,1),opacity .65s ease}
        
        /* Inner frame */
        .stack-card::after{
            content:'';position:absolute;
            top:12px;left:12px;right:12px;bottom:12px;
            border:1px solid rgba(181,154,89,.12);
            pointer-events:none;z-index:2}
        .stack-card img{width:100%;height:100%;object-fit:cover;filter:grayscale(100%) contrast(115%) brightness(.95);display:block}
        
        /* Gold caption bar at bottom */
        .stack-card-caption{
            position:absolute;bottom:0;left:0;right:0;
            background:linear-gradient(to top,rgba(0,0,0,.9) 0%,rgba(0,0,0,.5) 60%,transparent 100%);
            padding:30px 20px 16px;z-index:3}
        .stack-card-num{font-family:var(--fs);font-size:.5em;letter-spacing:5px;color:var(--oro);text-transform:uppercase}
        .stack-hint{
            font-family:var(--fs);font-size:.58em;letter-spacing:4px;
            text-transform:uppercase;color:var(--texto-t);
            display:flex;align-items:center;justify-content:center;gap:10px;
            margin-top:16px}
        .stack-hint::before,.stack-hint::after{content:'';width:20px;height:1px;background:rgba(181,154,89,.2)}
        .stack-counter{
            font-family:var(--ft);font-style:italic;
            font-size:.9em;color:var(--texto-s);
            text-align:center;margin-top:8px}

        /* ═══ MEMORIA FOTOGRÁFICA — DIFUMINADO EDITORIAL ═══ */
        .memoria-destacada{
            position:relative;
            width:100vw;
            max-width:none;
            margin:52px calc(50% - 50vw) 0;
            overflow:hidden;
            background:transparent}
        .memoria-destacada img{
            display:block;
            width:100%;
            aspect-ratio:1555 / 1012;
            object-fit:cover;
            filter:brightness(.9) saturate(.88) sepia(.08)}
        .memoria-destacada::before,
        .memoria-destacada::after{
            content:'';
            position:absolute;
            z-index:1;
            left:-4%;
            width:108%;
            height:18%;
            pointer-events:none;
            backdrop-filter:blur(10px);
            -webkit-backdrop-filter:blur(10px)}
        .memoria-destacada::before{
            top:-2%;
            background:linear-gradient(to bottom,var(--wv-base) 0%,rgba(23,17,13,.82) 42%,transparent 100%)}
        .memoria-destacada::after{
            bottom:-2%;
            background:linear-gradient(to top,var(--wv-base) 0%,rgba(23,17,13,.82) 42%,transparent 100%)}
        @media(max-width:600px){
            .memoria-seccion{padding-top:10px}}
        @media(prefers-reduced-motion:reduce){
            .memoria-destacada img{filter:brightness(.9) saturate(.88) sepia(.08)}}

        /* ═══ ETIQUETA CARDS — REDESIGN COMPACTO ═══
           Desktop: 2 columnas iguales
           Mobile: layout horizontal tipo "badge de lujo"
           (ico izquierda | texto derecha) — no apilado gigante
        ═══ */
        .cards-grid{
            display:grid;
            grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
            gap:20px;
            margin-top:40px;
        }
        .card{
            background:var(--noche-card);
            border:1px solid rgba(181,154,89,.15);
            padding:38px 28px;
            transition:transform .4s,box-shadow .4s,border-color .4s;
            position:relative;overflow:hidden;
            text-align:center;
        }
        .card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(to right,transparent,var(--oro),transparent);transform:scaleX(0);transition:transform .5s;opacity:.7}
        .card::after{content:'';position:absolute;inset:0;background:var(--grain-svg);opacity:.025;pointer-events:none}
        .card:hover{transform:translateY(-5px);box-shadow:0 18px 45px rgba(0,0,0,.4),0 0 25px rgba(181,154,89,.05);border-color:rgba(181,154,89,.3)}
        .card:hover::before{transform:scaleX(1)}
        .card .ico-wrap{
            width:58px;height:58px;border-radius:50%;
            border:1px solid rgba(181,154,89,.25);
            background:rgba(181,154,89,.07);
            display:flex;align-items:center;justify-content:center;
            font-size:1.5em;margin:0 auto 18px;
            transition:background .4s,box-shadow .4s;position:relative;z-index:1;
            flex-shrink:0;
        }
        .card:hover .ico-wrap{background:rgba(181,154,89,.13);box-shadow:0 0 22px rgba(181,154,89,.12)}
        .card h3{font-family:var(--ft);font-size:1.5em;font-style:italic;margin-bottom:8px;color:var(--texto-c);position:relative;z-index:1}
        .card p{color:var(--texto-s);font-size:.86em;line-height:1.7;position:relative;z-index:1}
        .card .subtitulo{position:relative;z-index:1}

        /* En mobile: modo badge horizontal compacto para secciones light */
        @media(max-width:600px){
            /* Solo en modo light las cards se vuelven horizontales */
            .seccion-light .card,
            .seccion-light-alt .card{
                display:flex;
                align-items:center;
                gap:18px;
                text-align:left;
                padding:22px 20px;
            }
            .seccion-light .card .ico-wrap,
            .seccion-light-alt .card .ico-wrap{
                width:50px;height:50px;
                margin:0;
                font-size:1.3em;
                flex-shrink:0;
            }
            .seccion-light .card-text-wrap,
            .seccion-light-alt .card-text-wrap{
                flex:1;
            }
            .seccion-light .card h3,
            .seccion-light-alt .card h3{
                font-size:1.25em;
                margin-bottom:4px;
            }
            .seccion-light .card p,
            .seccion-light-alt .card p{
                font-size:.80em;
                line-height:1.55;
            }
            .seccion-light .card .subtitulo,
            .seccion-light-alt .card .subtitulo{
                font-size:.5em;
                margin-bottom:5px;
            }
            /* El divisor inline no tiene sentido en horizontal */
            .seccion-light .card .divisor,
            .seccion-light-alt .card .divisor{
                display:none;
            }
        }

        /* ═══ DRESS CODE ═══ */
        .dress-silhouette{display:flex;justify-content:center;gap:40px;margin:30px auto}
        .dress-silhouette svg{width:100px;height:160px;opacity:.7}
        .dress-silhouette svg path{fill:var(--texto-c)}
        .dress-labels{display:flex;justify-content:center;gap:60px;font-size:.65em;letter-spacing:3px;text-transform:uppercase;color:var(--texto-s)}

        /* ═══ GALERÍA (legacy) ═══ */
        .galeria{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-top:40px}
        .gal-wrap{position:relative;overflow:hidden;border:1px solid rgba(181,154,89,.15);transition:transform .5s,box-shadow .5s}
        .gal-wrap.featured{border-color:var(--oro);box-shadow:0 15px 40px rgba(181,154,89,.15);transform:scale(1.03);z-index:2;border-width:2px}
        .gal-img{width:100%;aspect-ratio:4/5;object-fit:cover;filter:grayscale(100%) contrast(115%) brightness(.95);transition:transform .5s,filter .5s;display:block}
        .gal-wrap:hover{transform:scale(1.03);box-shadow:0 20px 50px rgba(0,0,0,.08);z-index:3}
        .gal-wrap.featured:hover{transform:scale(1.06)}
        .gal-wrap:hover .gal-img{transform:scale(1.08);filter:grayscale(100%) contrast(120%) brightness(.9)}

        /* ═══ ÁLBUM COMPARTIDO ═══ */
        .album-noir{position:relative;overflow:hidden;background:var(--negro);padding:100px 20px;text-align:center;z-index:1}
        .album-noir-bg{position:absolute;inset:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 50% 30%,rgba(181,154,89,.06) 0%,transparent 60%)}
        .album-noir .contenedor{position:relative;z-index:2}
        .album-frames{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0}
        .album-frame-float{position:absolute;width:clamp(45px,8vw,70px);height:clamp(55px,10vw,88px);border:1px solid rgba(181,154,89,.12);background:rgba(181,154,89,.03);opacity:0;animation:filmFloat linear infinite}
        .album-frame-float::before{content:'';position:absolute;inset:4px;border:1px solid rgba(181,154,89,.08)}
        .album-frame-float::after{content:'';position:absolute;bottom:6px;left:50%;transform:translateX(-50%);width:60%;height:1px;background:rgba(181,154,89,.1)}
        @keyframes filmFloat{
            0%{transform:translateY(110vh) rotate(var(--rot,5deg));opacity:0}
            10%{opacity:.6}80%{opacity:.4}
            100%{transform:translateY(-15vh) rotate(calc(var(--rot,5deg) + 30deg));opacity:0}}
        .album-card{position:relative;max-width:480px;margin:40px auto 0;background:rgba(255,255,255,.03);border:1px solid rgba(181,154,89,.2);padding:clamp(40px,6vw,60px) clamp(28px,5vw,45px);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);transition:transform .5s ease,box-shadow .5s ease,border-color .5s ease}
        .album-card:hover{transform:translateY(-6px);box-shadow:0 30px 80px rgba(181,154,89,.12);border-color:rgba(181,154,89,.4)}
        .album-card::before{content:'';position:absolute;inset:8px;border:1px solid rgba(181,154,89,.08);pointer-events:none;transition:border-color .5s}
        .album-card:hover::before{border-color:rgba(181,154,89,.2)}
        .album-card::after{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(to right,transparent,var(--oro),transparent);opacity:.5}

        .album-tag{font-size:.55em;letter-spacing:8px;text-transform:uppercase;color:rgba(181,154,89,.5);margin-bottom:16px;display:flex;align-items:center;justify-content:center;gap:12px}
        .album-tag::before,.album-tag::after{content:'';width:25px;height:1px;background:linear-gradient(90deg,transparent,rgba(181,154,89,.4))}
        .album-tag::after{background:linear-gradient(270deg,transparent,rgba(181,154,89,.4))}
        .album-title{font-family:var(--ft);font-size:clamp(1.8em,5vw,2.6em);font-style:italic;color:var(--blanco);margin-bottom:14px;text-shadow:0 2px 20px rgba(0,0,0,.5)}
        .album-desc{font-family:var(--ft);font-style:italic;font-size:clamp(.95em,2.5vw,1.1em);color:rgba(255,255,255,.6);line-height:1.8;max-width:380px;margin:0 auto 30px}
        .album-sep{width:60px;height:1px;background:linear-gradient(90deg,transparent,var(--oro),transparent);margin:0 auto 30px;opacity:.5}
        .album-btn{display:inline-flex;align-items:center;gap:12px;background:transparent;border:1px solid var(--oro);color:var(--oro);padding:16px 36px;font-family:var(--fs);font-size:.65em;letter-spacing:5px;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:all .5s ease;position:relative;overflow:hidden}
        .album-btn::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(181,154,89,.2),transparent);transition:.8s ease}
        .album-btn:hover::before{left:100%}
        .album-btn:hover{background:var(--oro);color:#000;box-shadow:0 0 40px rgba(181,154,89,.25)}
        .album-btn svg{width:16px;height:16px;stroke:currentColor;transition:transform .4s ease}
        .album-btn:hover svg{transform:scale(1.15) rotate(-5deg)}
        .album-note{margin-top:28px;font-size:.6em;letter-spacing:4px;text-transform:uppercase;color:rgba(181,154,89,.35);display:flex;align-items:center;justify-content:center;gap:8px}
        .album-note::before{content:'✦';font-size:.8em;opacity:.5}
        @media(max-width:600px){.album-card{margin:30px 10px 0;padding:36px 22px}}

        /* ═══ REGALOS — ENVELOPE MARMOL CREMOSO ═══
           El envelope vive en seccion-light, por lo tanto:
           fondo = mármol cremoso, texto = wv-ink, acentos = wv-gold
        ═══ */
        .regalo-wrap{
            max-width:520px;
            margin:40px auto 0;
        }
        .regalo-envelope{
            /* Mármol cremoso con gradientes de coral suave */
            background:
                linear-gradient(125deg,
                    rgba(240,215,200,.22) 0%, transparent 35%,
                    rgba(215,192,175,.12) 65%, transparent 100%),
                linear-gradient(225deg,
                    rgba(235,210,195,.15) 0%, transparent 55%),
                var(--wv-card);
            border:1px solid rgba(154,122,58,.22);
            padding:0;
            position:relative;
            overflow:hidden;
            box-shadow:
                0 2px 0 rgba(255,248,244,.9) inset,
                0 12px 40px rgba(30,20,10,.08),
                0 3px 12px rgba(30,20,10,.05);
        }
        /* Borde dorado superior */
        .regalo-envelope::before{
            content:'';position:absolute;top:0;left:0;right:0;height:2px;
            background:linear-gradient(to right,
                transparent,var(--wv-gold),var(--wv-gold-l),var(--wv-gold),transparent);
            opacity:.8;
        }
        /* Zona superior del envelope */
        .regalo-env-top{
            padding:32px 36px 22px;
            background:linear-gradient(to bottom,
                rgba(154,122,58,.05) 0%,transparent 100%);
            border-bottom:1px solid rgba(154,122,58,.1);
            text-align:center;
        }
        .regalo-env-icon{
            font-size:2.2em;
            opacity:.85;
            animation:flotar 3s ease-in-out infinite;
        }
        .regalo-env-title{
            font-family:var(--ft);
            font-size:1.55em;
            color:var(--wv-ink);
            font-style:italic;
            margin-top:10px;
        }
        .regalo-env-sub{
            font-family:var(--ft);
            font-style:italic;
            color:var(--wv-ink2);
            font-size:.92em;
            margin:8px auto 0;
            line-height:1.65;
            max-width:360px;
        }
        /* Lista de items */
        .regalo-items{
            padding:8px 36px 32px;
        }
        .regalo-item{
            display:flex;
            align-items:center;
            gap:18px;
            padding:20px 0;
            border-bottom:1px solid rgba(154,122,58,.1);
        }
        .regalo-item:last-child{border-bottom:none}
        .regalo-item-icon{
            width:46px;height:46px;flex-shrink:0;
            border:1px solid rgba(154,122,58,.22);
            border-radius:50%;
            background:rgba(154,122,58,.06);
            display:flex;align-items:center;justify-content:center;
            font-size:1.2em;
            transition:background .3s,box-shadow .3s;
        }
        .regalo-item:hover .regalo-item-icon{
            background:rgba(154,122,58,.12);
            box-shadow:0 0 18px rgba(154,122,58,.15);
        }
        .regalo-item-body{flex:1;text-align:left}
        .regalo-item-body h4{
            font-family:var(--ft);
            font-size:1.25em;
            color:var(--wv-ink);
            font-style:italic;
            margin-bottom:3px;
        }
        .regalo-item-body p{
            font-size:.68em;
            letter-spacing:2px;
            color:var(--wv-ink3);
            text-transform:uppercase;
        }
        .regalo-item-action a{
            font-family:var(--fs);
            font-size:.58em;
            letter-spacing:3px;
            text-transform:uppercase;
            color:var(--wv-gold);
            text-decoration:none;
            border:1px solid rgba(154,122,58,.3);
            padding:8px 14px;
            white-space:nowrap;
            transition:.3s;
            display:block;
            background:rgba(154,122,58,.03);
        }
        .regalo-item-action a:hover{
            background:rgba(154,122,58,.1);
            border-color:var(--wv-gold);
        }

        /* Móvil: compacto pero elegante */
        @media(max-width:500px){
            .regalo-env-top{
                padding:26px 20px 18px;
            }
            .regalo-items{
                padding:6px 20px 24px;
            }
            .regalo-item{
                gap:14px;
                padding:16px 0;
            }
            .regalo-item-icon{
                width:40px;height:40px;
                font-size:1.1em;
            }
            .regalo-item-body h4{
                font-size:1.1em;
            }
            .regalo-item-body p{
                font-size:.62em;
            }
            /* Botón debajo del body en mobile */
            .regalo-item{
                flex-wrap:wrap;
                gap:10px;
            }
            .regalo-item-action{
                width:100%;
                padding-left:54px; /* alinear con el texto: icon(40) + gap(14) */
            }
            .regalo-item-action a{
                display:inline-block;
                padding:6px 14px;
            }
        }

        /* ═══ RSVP — DARK EDITORIAL ═══ */
        .rsvp-form{
            background:var(--noche-card);
            border:1px solid rgba(181,154,89,.18);
            padding:55px 38px;max-width:520px;
            margin:40px auto 0;text-align:left;position:relative;
            min-height:380px;display:flex;flex-direction:column;justify-content:center}
        .rsvp-form::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(to right,transparent,var(--oro),var(--oro-l),var(--oro),transparent)}
        .rsvp-form::after{content:'';position:absolute;inset:10px;border:1px solid rgba(181,154,89,.06);pointer-events:none}
        .campo{margin-bottom:24px;position:relative;z-index:1}
        .campo label{display:block;font-size:.6em;letter-spacing:3px;color:var(--oro);text-transform:uppercase;margin-bottom:10px;font-weight:500}
        .campo input,.campo select{
            width:100%;padding:14px 0;border:none;
            border-bottom:1px solid rgba(181,154,89,.2);
            background:transparent;
            font-family:var(--fs);font-size:.95em;color:var(--texto-c);
            outline:none;transition:.3s}
        .campo select option{background:var(--noche-card);color:var(--texto-c)}
        .campo input:focus,.campo select:focus{border-bottom-color:var(--oro)}
        .campo input::placeholder{color:var(--texto-t)}
        .campo-indent{margin-left:14px;border-left:2px solid rgba(181,154,89,.2);padding-left:14px}
        .campo-opcional{font-size:.82em;letter-spacing:1px;color:var(--texto-t);text-transform:none;font-weight:400;font-style:italic;margin-left:4px;opacity:.75}
        .btn-enviar{width:100%;background:var(--oro);color:var(--negro);border:none;padding:18px;font-family:var(--fs);font-size:.75em;letter-spacing:3px;text-transform:uppercase;cursor:pointer;transition:.3s;font-weight:500;position:relative;z-index:1}
        .btn-enviar:hover:not(:disabled){background:var(--texto-c);color:var(--negro)}
        .btn-enviar:disabled{opacity:.5;cursor:not-allowed}
        #form-exito{display:none;flex-direction:column;justify-content:center;align-items:center;text-align:center;width:100%;animation:fadeUp .8s ease forwards;position:relative;z-index:1}
        @keyframes fadeUp{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}
        #form-exito .eicon{font-size:3em;color:var(--oro);margin-bottom:14px;animation:resplandor 3s ease-in-out infinite alternate}
        @keyframes resplandor{0%{text-shadow:0 0 10px rgba(181,154,89,.3)}100%{text-shadow:0 0 30px rgba(181,154,89,.7),0 0 60px rgba(181,154,89,.3)}}
        #form-exito h3{font-family:var(--ft);font-size:2.2em;font-style:italic;color:var(--oro);margin-bottom:10px}
        #form-exito p{color:var(--texto-s);font-size:.95em;line-height:1.5}

        /* ═══ KC-RSVP — SALUDO VIP INTELIGENTE ═══ */
        .rsvp-vip-saludo{
            padding:18px 0 22px;
            border-bottom:1px solid rgba(181,154,89,.12);
            margin-bottom:28px;
        }
        .rsvp-vip-saludo .vs-tag{
            font-family:var(--fs);font-size:.52em;letter-spacing:5px;
            text-transform:uppercase;color:var(--oro);
            display:flex;align-items:center;gap:10px;margin-bottom:12px;
        }
        .rsvp-vip-saludo .vs-tag::before,.rsvp-vip-saludo .vs-tag::after{
            content:'';flex:0 0 20px;height:1px;
            background:linear-gradient(to right,transparent,rgba(181,154,89,.4));
        }
        .rsvp-vip-saludo .vs-tag::after{background:linear-gradient(to left,transparent,rgba(181,154,89,.4))}
        .rsvp-vip-saludo .vs-nombre{
            font-family:var(--ft);font-style:italic;
            font-size:clamp(1.3em,3.5vw,1.65em);
            color:var(--texto-c);line-height:1.3;margin-bottom:6px;
        }
        .rsvp-vip-saludo .vs-pases{
            font-family:var(--fs);font-size:.6em;
            letter-spacing:2px;color:var(--texto-s);
        }
        .rsvp-vip-saludo .vs-pases span{
            color:var(--oro);font-weight:500;
        }

        /* ═══ KC-RSVP — VIP PASS RESULT CARD ═══ */
        #kc-vip-pass{
            display:none;
            flex-direction:column;
            align-items:center;
            width:100%;
            animation:fadeUp .9s cubic-bezier(.16,1,.3,1) forwards;
        }
        .vip-pass-card{
            width:100%;
            background:
                linear-gradient(135deg,rgba(240,215,200,.3) 0%,transparent 40%,rgba(220,195,178,.18) 70%,transparent 100%),
                linear-gradient(225deg,rgba(235,210,195,.2) 0%,transparent 55%),
                var(--wv-card);
            border:1px solid rgba(154,122,58,.28);
            padding:clamp(28px,4vh,40px) clamp(20px,4vw,36px);
            position:relative;overflow:hidden;
            box-shadow:
                0 2px 0 rgba(255,245,240,.95) inset,
                0 20px 60px rgba(0,0,0,.55),
                0 8px 24px rgba(0,0,0,.38);
        }
        .vip-pass-card::before{
            content:'';position:absolute;inset:0;
            background-image:var(--grain-light);
            opacity:.05;pointer-events:none;mix-blend-mode:multiply;
        }
        .vip-pass-card::after{
            content:'';position:absolute;
            inset:clamp(8px,1.5vw,12px);
            border:1px solid rgba(154,122,58,.14);
            pointer-events:none;
        }
        /* Perforaciones de ticket */
        .vp-perf{
            position:absolute;top:58%;transform:translateY(-50%);
            width:28px;height:28px;
            background:var(--noche-card);
            border-radius:50%;z-index:3;
        }
        .vp-perf.l{left:-14px}
        .vp-perf.r{right:-14px}
        .vp-linea{
            position:absolute;top:58%;left:0;right:0;height:1px;
            background:repeating-linear-gradient(90deg,transparent,transparent 4px,rgba(154,122,58,.25) 4px,rgba(154,122,58,.25) 9px);
        }
        .vp-content{position:relative;z-index:1;}
        /* Header compacto del pass */
        .vp-badge{
            font-size:.5em;letter-spacing:6px;color:var(--wv-gold);
            text-transform:uppercase;margin-bottom:10px;
            display:flex;align-items:center;justify-content:center;gap:10px;
        }
        .vp-badge::before,.vp-badge::after{
            content:'';flex:1;height:1px;
            background:linear-gradient(to right,transparent,var(--wv-border));
            max-width:44px;
        }
        .vp-badge::after{background:linear-gradient(to left,transparent,var(--wv-border))}
        .vp-initials{
            font-family:var(--ft);font-size:clamp(2.4em,7vw,3.4em);
            font-style:italic;color:var(--wv-ink);line-height:.95;
            margin-bottom:2px;letter-spacing:-1px;
        }
        .vp-subtitle{
            font-family:var(--ft);font-style:italic;
            color:var(--wv-ink2);margin-bottom:10px;font-size:.88em;
        }
        /* Stub inferior — vertical centrado, QR grande protagonista */
        .vp-stub{
            padding-top:clamp(14px,2.5vh,20px);
            display:flex;
            flex-direction:column;
            align-items:center;
            gap:14px;
            text-align:center;
        }
        /* QR grande y limpio */
        .vp-qr-wrap{
            background:#fff;
            padding:8px;
            border-radius:3px;
            box-shadow:
                0 6px 24px rgba(0,0,0,.22),
                0 0 0 1px rgba(154,122,58,.15);
            width:140px;height:140px;
            display:flex;align-items:center;justify-content:center;
            flex-shrink:0;
        }
        .vp-stub-info{width:100%;}
        .vp-stub-nombre{
            font-family:var(--ft);font-size:clamp(1.15em,3.5vw,1.4em);
            color:var(--wv-ink);font-style:italic;
            margin-bottom:4px;line-height:1.2;
        }
        .vp-stub-pases{
            font-family:var(--fs);font-size:.58em;
            letter-spacing:3px;text-transform:uppercase;
            color:var(--wv-gold);margin-bottom:8px;
            font-weight:500;
        }
        /* KC Brand — el único vivo, shimmer perpetuo */
        .vp-stub-brand{
            font-family:var(--fs);font-size:.48em;
            letter-spacing:4px;text-transform:uppercase;
            color:var(--wv-gold);
            position:relative;overflow:hidden;
            display:inline-block;
            padding:2px 0;
        }
        .vp-stub-brand::after{
            content:'';
            position:absolute;top:0;left:-120%;width:55%;height:100%;
            background:linear-gradient(100deg,
                transparent 0%,
                rgba(212,180,100,.08) 42%,
                rgba(255,230,140,.15) 50%,
                rgba(212,180,100,.08) 58%,
                transparent 100%);
            animation:kcBrandShimmer 3.5s ease-in-out infinite;
        }
        @keyframes kcBrandShimmer{
            0%,35%{left:-120%}
            100%{left:170%}
        }
        .vp-save-hint{
            margin-top:8px;
            font-family:var(--fs);font-size:.5em;
            letter-spacing:2px;text-transform:uppercase;
            color:var(--wv-ink2);
            display:flex;align-items:center;gap:5px;
            justify-content:center;line-height:1.7;
            flex-wrap:wrap;
        }
        .vp-save-hint::before{content:'📸';flex-shrink:0}

        /* ═══ KC-RSVP — TICKET STANDALONE OVERLAY ═══
           Se activa cuando la URL tiene ?ticket=Nombre&pases=N
           Bloquea TODO el contenido, muestra solo la postal de agradecimiento.
        ═══ */
        #kc-ticket-overlay{
            display:none;
            position:fixed;inset:0;
            z-index:99999;
            background:#0A090700;
            flex-direction:column;
            align-items:center;
            justify-content:center;
            padding:20px;
            backdrop-filter:blur(0);
        }
        #kc-ticket-overlay.active{
            display:flex;
            background:var(--noche-1);
        }
        /* Grain de fondo del overlay */
        #kc-ticket-overlay::before{
            content:'';position:fixed;inset:0;
            background-image:var(--grain-svg);
            opacity:.03;pointer-events:none;
        }
        .kct-wrap{
            max-width:380px;width:100%;
            animation:fadeUp 1s cubic-bezier(.16,1,.3,1) both;
        }
        /* La postal de agradecimiento */
        .kct-card{
            background:
                linear-gradient(135deg,rgba(240,215,200,.35) 0%,transparent 40%,rgba(220,195,178,.2) 70%,transparent 100%),
                linear-gradient(225deg,rgba(235,210,195,.25) 0%,transparent 55%),
                var(--wv-card);
            border:1px solid rgba(154,122,58,.28);
            padding:clamp(36px,5vh,52px) clamp(26px,5vw,44px);
            position:relative;overflow:hidden;
            box-shadow:
                0 2px 0 rgba(255,245,240,.95) inset,
                0 30px 80px rgba(0,0,0,.7),
                0 10px 30px rgba(0,0,0,.5);
            text-align:center;
        }
        .kct-card::before{
            content:'';position:absolute;inset:0;
            background-image:var(--grain-light);
            opacity:.055;pointer-events:none;mix-blend-mode:multiply;
        }
        .kct-card::after{
            content:'';position:absolute;
            inset:clamp(8px,1.5vw,12px);
            border:1px solid rgba(154,122,58,.14);
            pointer-events:none;
        }
        .kct-content{position:relative;z-index:1;}
        .kct-badge{
            font-size:.48em;letter-spacing:6px;color:var(--wv-gold);
            text-transform:uppercase;margin-bottom:16px;
            display:flex;align-items:center;justify-content:center;gap:10px;
        }
        .kct-badge::before,.kct-badge::after{
            content:'';flex:1;height:1px;
            background:linear-gradient(to right,transparent,var(--wv-border));
            max-width:40px;
        }
        .kct-badge::after{background:linear-gradient(to left,transparent,var(--wv-border))}
        .kct-initials{
            font-family:var(--ft);font-size:clamp(3em,10vw,4.5em);
            font-style:italic;color:var(--wv-ink);line-height:.88;
            margin-bottom:8px;
        }
        .kct-sub{
            font-family:var(--ft);font-style:italic;
            /* subido de #8A7A68 a #4A4138 — mucho más legible sobre coral */
            color:var(--wv-ink2);font-size:.9em;margin-bottom:16px;
        }
        .kct-sep{
            width:40px;height:1px;
            background:linear-gradient(to right,transparent,var(--wv-gold),transparent);
            margin:0 auto 20px;opacity:.6;
        }
        .kct-nombre-label{
            font-family:var(--fs);font-size:.5em;
            letter-spacing:4px;text-transform:uppercase;
            color:var(--wv-gold);margin-bottom:6px;
        }
        .kct-nombre{
            font-family:var(--ft);font-size:clamp(1.5em,5vw,2em);
            font-style:italic;
            /* tinta nocturna pura — máximo contraste VIP */
            color:var(--wv-ink);margin-bottom:6px;
            text-shadow:0 1px 0 rgba(255,255,255,.5);
        }
        .kct-pases{
            font-family:var(--fs);font-size:.55em;
            letter-spacing:3px;text-transform:uppercase;
            /* oro profundo — se lee perfecto sobre coral */
            color:var(--wv-gold);font-weight:500;
            margin-bottom:20px;
        }
        .kct-msg{
            font-family:var(--ft);font-style:italic;
            font-size:clamp(.88em,2.5vw,.96em);
            /* ink2 sobre coral = sepia oscuro fácil de leer */
            color:var(--wv-ink2);line-height:1.9;
            max-width:300px;margin:0 auto 18px;
        }
        .kct-sign{
            font-family:var(--ft);font-style:italic;
            font-size:clamp(.82em,2vw,.92em);
            color:var(--wv-gold);font-weight:500;
            margin-bottom:20px;
        }
        .kct-datos{
            display:flex;justify-content:center;gap:24px;
            padding-top:14px;
            border-top:1px solid rgba(154,122,58,.15);
            margin-bottom:14px;
        }
        .kct-dato{text-align:center;}
        .kct-dato h4{
            font-size:.46em;letter-spacing:3px;color:var(--wv-gold);
            text-transform:uppercase;margin-bottom:4px;font-weight:600;
        }
        .kct-dato p{
            font-family:var(--ft);font-size:.88em;
            color:var(--wv-ink);font-style:italic;
        }
        /* KC Brand — texto oscuro para max contraste sobre coral, stars en gold vivas */
        .kct-brand{
            font-family:var(--fs);font-size:.46em;
            letter-spacing:4px;text-transform:uppercase;
            /* ink2 = sepia oscuro #4A4138 — se lee perfecto sobre el coral */
            color:var(--wv-ink2);
            display:flex;align-items:center;justify-content:center;gap:8px;
            position:relative;
        }
        /* Las estrellas siguen siendo doradas y animadas — únicas vivas */
        .kct-brand::before{content:'✦';font-size:.75em;color:var(--wv-gold);animation:kcStarPulse 2.2s ease-in-out infinite alternate;opacity:.8}
        .kct-brand::after{content:'✦';font-size:.75em;color:var(--wv-gold);animation:kcStarPulse 2.2s ease-in-out .8s infinite alternate;opacity:.8}
        @keyframes kcStarPulse{
            0%{opacity:.25;transform:scale(.7)}
            100%{opacity:1;transform:scale(1.2)}
        }
        .kct-brand span{
            position:relative;overflow:hidden;display:inline-block;
        }
        .kct-brand span::after{
            content:'';
            position:absolute;top:0;left:-120%;width:55%;height:100%;
            background:linear-gradient(100deg,
                transparent 0%,
                rgba(74,65,56,.05) 42%,
                rgba(100,85,65,.1) 50%,
                rgba(74,65,56,.05) 58%,
                transparent 100%);
            animation:kcBrandShimmer 4s ease-in-out 1.5s infinite;
        }
        @media(max-width:600px){
            .rsvp-form{padding:32px 20px}
            .vp-qr-wrap{width:130px;height:130px}
        }
        /* ═══ CHIP MAPS — Badge minimalista elegante ═══ */
        .kct-maps-chip{
            display:inline-flex;
            align-items:center;
            gap:9px;
            margin-top:22px;
            padding:11px 20px;
            background:rgba(10,8,7,.55);
            border:1px solid rgba(181,154,89,.22);
            border-radius:40px;
            cursor:pointer;
            -webkit-tap-highlight-color:transparent;
            text-decoration:none;
            position:relative;
            overflow:hidden;
            transition:border-color .35s,background .35s;
            /* Pulso de glow dorado */
            animation:chipGlow 3s ease-in-out infinite alternate;
        }
        @keyframes chipGlow{
            0% {box-shadow:0 0 0px rgba(181,154,89,0),  0 4px 16px rgba(0,0,0,.4)}
            100%{box-shadow:0 0 14px rgba(181,154,89,.18),0 4px 20px rgba(0,0,0,.5)}
        }
        .kct-maps-chip:hover{
            border-color:rgba(181,154,89,.5);
            background:rgba(30,24,18,.8);
            animation-play-state:paused;
        }
        /* Pin SVG */
        .kct-maps-chip-pin{
            flex-shrink:0;
            width:14px;height:14px;
            fill:var(--oro);
            opacity:.85;
        }
        /* Texto */
        .kct-maps-chip-text{
            font-family:var(--fs);font-size:.44em;
            letter-spacing:4px;text-transform:uppercase;
            color:rgba(255,255,255,.65);
            white-space:nowrap;
        }
        /* Flecha derecha */
        .kct-maps-chip-arrow{
            font-size:.9em;
            color:rgba(181,154,89,.45);
            transition:transform .3s,color .3s;
        }
        .kct-maps-chip:hover .kct-maps-chip-arrow{
            transform:translateX(3px);
            color:rgba(181,154,89,.8);
        }

        /* ═══ OVERLAY MAPA STANDALONE ═══ */
        #kc-mapa-overlay{
            display:none;
            position:fixed;inset:0;
            z-index:99999;
            flex-direction:column;
            align-items:center;
            justify-content:center;
            padding:24px;
            background:var(--noche-1);
        }
        #kc-mapa-overlay.active{display:flex;}
        #kc-mapa-overlay::before{
            content:'';position:fixed;inset:0;
            background-image:var(--grain-svg);
            opacity:.03;pointer-events:none;
        }
        .kcm-wrap{
            max-width:380px;width:100%;
            animation:fadeUp .9s cubic-bezier(.16,1,.3,1) both;
        }
        .kcm-card{
            background:
                linear-gradient(135deg,rgba(30,22,14,.8) 0%,rgba(20,14,8,.95) 100%);
            border:1px solid rgba(181,154,89,.2);
            padding:36px 32px 30px;
            position:relative;overflow:hidden;
            box-shadow:0 24px 60px rgba(0,0,0,.7),0 8px 24px rgba(0,0,0,.5);
            text-align:center;
        }
        .kcm-card::after{
            content:'';position:absolute;
            inset:10px;
            border:1px solid rgba(181,154,89,.06);
            pointer-events:none;
        }
        .kcm-content{position:relative;z-index:1;}
        .kcm-badge{
            font-family:var(--fs);font-size:.48em;
            letter-spacing:6px;text-transform:uppercase;
            color:var(--oro);margin-bottom:18px;
            display:flex;align-items:center;justify-content:center;gap:10px;
        }
        .kcm-badge::before,.kcm-badge::after{
            content:'';flex:1;height:1px;
            background:linear-gradient(to right,transparent,rgba(181,154,89,.35));
            max-width:36px;
        }
        .kcm-badge::after{background:linear-gradient(to left,transparent,rgba(181,154,89,.35))}
        .kcm-title{
            font-family:var(--ft);font-style:italic;
            font-size:clamp(1.4em,4vw,1.7em);
            color:var(--texto-c);margin-bottom:22px;line-height:1.2;
        }
        .kcm-lugar{
            border-top:1px solid rgba(181,154,89,.1);
            padding:18px 0 0;margin-top:0;
            text-align:left;
        }
        .kcm-lugar + .kcm-lugar{margin-top:4px;}
        .kcm-lugar-icon{
            font-size:.85em;color:var(--oro);margin-bottom:5px;
            display:flex;align-items:center;gap:6px;
            font-family:var(--fs);font-size:.5em;
            letter-spacing:3px;text-transform:uppercase;
            color:rgba(181,154,89,.55);
        }
        .kcm-lugar-nombre{
            font-family:var(--ft);font-style:italic;
            font-size:1em;color:var(--texto-c);margin-bottom:3px;
        }
        .kcm-lugar-hora{
            font-family:var(--fs);font-size:.5em;
            letter-spacing:2px;color:rgba(255,255,255,.35);
            margin-bottom:10px;
        }
        .kcm-map-btn{
            display:inline-flex;align-items:center;gap:7px;
            padding:9px 16px;
            border:1px solid rgba(181,154,89,.3);
            background:rgba(181,154,89,.07);
            font-family:var(--fs);font-size:.5em;
            letter-spacing:3px;text-transform:uppercase;
            color:var(--oro);text-decoration:none;
            border-radius:2px;
            transition:background .3s,border-color .3s;
        }
        .kcm-map-btn:hover{background:rgba(181,154,89,.15);border-color:rgba(181,154,89,.55)}
        .kcm-map-btn svg{
            width:12px;height:12px;fill:var(--oro);
        }

        /* ═══ BOTONES ═══ */
        .btn{display:inline-block;background:var(--oro);color:var(--negro);padding:14px 32px;text-decoration:none;font-size:.7em;letter-spacing:3px;text-transform:uppercase;transition:all .3s;border:1px solid var(--oro);font-weight:400}
        .btn:hover{background:transparent;color:var(--oro)}
        .btn-outline{background:transparent;color:var(--oro);border:1px solid rgba(181,154,89,.4);padding:12px 26px;display:inline-block;text-decoration:none;font-size:.65em;letter-spacing:3px;text-transform:uppercase;transition:.3s;font-family:var(--fs);cursor:pointer}
        .btn-outline:hover{background:var(--oro);color:var(--negro);border-color:var(--oro)}

        /* ═══ FOOTER ═══ */
        footer{background:linear-gradient(to bottom,#1c1c1c,var(--negro));border-top:1px solid rgba(181,154,89,.15);text-align:center;padding:70px 20px 50px;position:relative;z-index:1}
        .footer-divider{display:flex;align-items:center;justify-content:center;gap:15px;margin-bottom:30px}
        .footer-divider::before,.footer-divider::after{content:'';height:1px;width:clamp(80px,22vw,160px);background:linear-gradient(to right,transparent,rgba(181,154,89,.3));opacity:.5}
        .footer-divider::after{background:linear-gradient(to left,transparent,rgba(181,154,89,.3))}
        .footer-divider span{color:var(--terra);font-size:1em;animation:parpadeo 3s infinite}
        .footer-sello{font-size:.65em;letter-spacing:3px;color:rgba(255,255,255,.7);text-transform:uppercase;line-height:2.4;margin-bottom:30px}
        .footer-sello .nombre-dedicado{color:var(--oro);font-weight:600;letter-spacing:4px;font-size:1.1em}
        .footer-sello .lugar-fecha{color:rgba(255,255,255,.5);font-size:.9em}
        .footer-brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;padding:10px 4px;transition:all .4s ease;cursor:pointer;position:relative}
        .footer-brand::after{content:'';position:absolute;right:-10px;top:50%;transform:translateY(-50%);width:4px;height:4px;border-radius:50%;background:rgba(181,154,89,.6);animation:brandDot 4s ease-in-out infinite;pointer-events:none}
        @keyframes brandDot{0%,45%,100%{opacity:0;transform:translateY(-50%) scale(.5)}55%,85%{opacity:1;transform:translateY(-50%) scale(1)}}
        .footer-brand .ig-ico{width:14px;height:14px;opacity:.7;transition:opacity .4s ease;color:var(--terra);flex-shrink:0;animation:icoBreath 3.5s ease-in-out infinite alternate}
        @keyframes icoBreath{0%{opacity:.5}100%{opacity:.9}}
        .footer-brand:hover .ig-ico{opacity:1;color:var(--terra-l);animation:none}
        .footer-brand-text{font-family:var(--ft);font-style:italic;color:rgba(181,154,89,.85);font-size:.95em;letter-spacing:3px;transition:color .4s ease,text-shadow .4s ease,letter-spacing .4s ease;position:relative;overflow:hidden}
        .footer-brand-text::after{content:'';position:absolute;top:0;left:-120%;width:55%;height:100%;background:linear-gradient(100deg,transparent 0%,rgba(255,255,255,.08) 45%,rgba(255,230,200,.12) 50%,rgba(255,255,255,.08) 55%,transparent 100%);animation:brandShimmer 5s ease-in-out infinite;pointer-events:none}
        @keyframes brandShimmer{0%,70%{left:-120%}100%{left:160%}}
        .footer-brand:hover .footer-brand-text{color:rgba(181,154,89,.9);letter-spacing:4px;text-shadow:0 0 18px rgba(181,154,89,.3)}

        /* ═══ BOTÓN FLOTANTE KC ═══ */
        @keyframes rotate-ring{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
        .kc-float{position:fixed;bottom:calc(clamp(18px,3vh,30px) + env(safe-area-inset-bottom, 0px));right:clamp(18px,3vw,28px);z-index:9000;width:44px;height:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;background:none;padding:0;outline:none;-webkit-tap-highlight-color:transparent;opacity:0;transform:translateY(20px);transition:opacity .6s ease,transform .6s var(--ease-bounce)}
        .kc-float.visible{opacity:1;transform:translateY(0)}
        .kc-float-bg{position:absolute;inset:0;border-radius:50%;background:rgba(20,20,20,.85);border:1px solid rgba(181,154,89,.25);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:border-color .4s ease,box-shadow .4s ease,background .4s ease,transform .15s ease}
        .kc-float:hover .kc-float-bg{border-color:rgba(181,154,89,.45);box-shadow:0 4px 20px rgba(0,0,0,.4),0 0 25px rgba(181,154,89,.1);background:rgba(10,10,10,.95)}
        .kc-float-glow{position:absolute;inset:-10px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(181,154,89,.15) 0%,transparent 70%);transition:opacity .8s ease;animation:kcBreath 3s ease-in-out infinite alternate}
        .kc-float.paused .kc-float-glow{opacity:.15;animation-play-state:paused}
        @keyframes kcBreath{0%{opacity:.4;transform:scale(.9)}100%{opacity:.8;transform:scale(1.15)}}
        .kc-ring{position:absolute;inset:-6px;border-radius:50%;border:1px double rgba(181,154,89,.35);animation:rotate-ring 25s linear infinite;transition:border-color .4s ease}
        .kc-ring::after{content:'';position:absolute;top:-3px;left:50%;transform:translateX(-50%);width:6px;height:6px;background:var(--oro);border-radius:50%;box-shadow:0 0 8px var(--oro)}
        .kc-float.paused .kc-ring{animation-play-state:paused;border-color:rgba(181,154,89,.08)}
        .kc-float:hover .kc-ring{border-color:rgba(181,154,89,.5)}
        .kc-letter{position:relative;z-index:2;font-family:var(--ft);font-size:.85em;font-style:italic;color:var(--terra);letter-spacing:1px;transition:color .3s ease,text-shadow .3s ease,transform .3s var(--ease-bounce);text-shadow:0 0 10px rgba(181,154,89,.2);line-height:1}
        .kc-float:hover .kc-letter{color:var(--crema);text-shadow:0 0 15px rgba(181,154,89,.4);transform:scale(1.08)}
        .kc-bars{position:absolute;bottom:5px;left:50%;transform:translateX(-50%);display:flex;gap:1.5px;z-index:3}
        .kc-bar{width:2px;background:var(--oro);border-radius:1px;animation:kcBar var(--d,.4s) ease-in-out infinite alternate;transition:opacity .3s ease}
        .kc-bar:nth-child(1){height:5px;--d:.35s}
        .kc-bar:nth-child(2){height:7px;--d:.25s;animation-delay:.1s}
        .kc-bar:nth-child(3){height:4px;--d:.4s;animation-delay:.2s}
        @keyframes kcBar{0%{height:2px;opacity:.3}100%{opacity:.8}}
        .kc-float.paused .kc-bar{animation-play-state:paused;opacity:.15;height:2px!important}
        .kc-float:active .kc-float-bg{transform:scale(.92)}
        .kc-float:active .kc-letter{transform:scale(.9)}

        /* ═══ PORTADA — EDITORIAL VOGUE ═══ */
        .portada{
            width:100%;min-height:100vh;min-height:100svh;
            position:relative;overflow:hidden;
            display:flex;flex-direction:column;background:#000;
        }

        /* BG: Ken Burns GPU-only (solo transform) */
        .portada-bg{
            position:absolute;top:-8%;left:-8%;width:116%;height:116%;
            background:url('Fotos/mansion-noir.png') center 30%/cover no-repeat;
            /* Filtro estatico: se aplica una sola vez en carga, NO en loop */
            filter:grayscale(100%) contrast(1.4) brightness(.38);
            animation:portKb 30s ease-in-out infinite alternate;
            z-index:1;will-change:transform;
        }
        @keyframes portKb{
            0%  {transform:scale(1) translate(0,0)}
            100%{transform:scale(1.055) translate(-1%,-.4%)}
        }

        /* Overlay en dos capas, sin blur ni filter */
        .portada-overlay{
            position:absolute;inset:0;z-index:2;
            background:
                linear-gradient(to bottom,
                    rgba(0,0,0,.78) 0%,
                    rgba(0,0,0,.3) 18%,
                    transparent 42%,
                    rgba(0,0,0,.55) 70%,
                    rgba(0,0,0,.96) 100%),
                linear-gradient(to right,
                    rgba(0,0,0,.5) 0%,transparent 32%,
                    transparent 68%,rgba(0,0,0,.5) 100%);
        }

        /* Grain portada */
        .portada-grain{
            position:absolute;inset:0;z-index:3;pointer-events:none;
            opacity:.055;mix-blend-mode:overlay;
            background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E");
            animation:grain .55s steps(7) infinite;
        }
        @keyframes grain{
            0%{background-position:0 0}14%{background-position:-4% -7%}
            28%{background-position:5% 2%}42%{background-position:-2% 5%}
            57%{background-position:4% -4%}71%{background-position:-3% 1%}
            85%{background-position:2% -5%}100%{background-position:0 0}
        }

        /* ═══ VEIL DE ENTRADA — NOIR LUXE REVEAL ═══
           Un velo negro que se disuelve en 2.4s.
           GPU-only: solo opacity. Sin bands, sin janks, sin repaints.
           Al centro, un flash dorado sutil que marca el momento.
        ═══ */
        .portada-veil{
            position:absolute;inset:0;z-index:20;
            pointer-events:none;
            /* Gradiente radial: negro suave en bordes, intenso al centro */
            background:radial-gradient(
                ellipse at 50% 42%,
                rgba(0,0,0,.88) 0%,
                #000 55%
            );
            opacity:1;
            will-change:opacity;
            transition:opacity 2.4s cubic-bezier(.4,0,.15,1) .1s;
        }
        /* Flash dorado de apertura — aparece y desaparece junto con el reveal */
        .portada-veil::after{
            content:'';
            position:absolute;inset:0;
            background:radial-gradient(
                ellipse at 50% 50%,
                rgba(181,154,89,.07) 0%,
                transparent 62%
            );
            opacity:0;
        }
        .portada.revealed .portada-veil{
            opacity:0;
        }
        .portada.revealed .portada-veil::after{
            animation:veilGoldFlash 2.4s cubic-bezier(.4,0,.15,1) .1s both;
        }
        @keyframes veilGoldFlash{
            0%   {opacity:0}
            35%  {opacity:1}
            100% {opacity:0}
        }

        

        /* ── TOPBAR ── */
        .portada-topbar{
            position:relative;z-index:5;
            display:flex;align-items:center;justify-content:space-between;
            padding:clamp(14px,2.5vh,22px) clamp(50px,7vw,72px);
            border-bottom:1px solid rgba(181,154,89,.18);
            opacity:0;
        }
        .portada.revealed .portada-topbar{animation:fadeSlideDown .7s ease 1.0s both}
        .portada-topbar-brand{
            font-family:var(--fs);font-size:clamp(.38em,.95vw,.45em);
            letter-spacing:7px;text-transform:uppercase;
            color:rgba(255,255,255,.55);font-weight:300;
        }
        .portada-topbar-date{
            font-family:var(--ft);font-style:italic;
            font-size:clamp(.58em,1.5vw,.68em);
            letter-spacing:5px;color:var(--oro);
            text-shadow:
                0 0 14px rgba(181,154,89,.55),
                0 0 35px rgba(181,154,89,.2);
        }
        .portada-topbar-line{
            flex:1;height:1px;margin:0 clamp(16px,3.5vw,32px);
            background:linear-gradient(to right,
                rgba(255,255,255,.04),rgba(181,154,89,.2),rgba(255,255,255,.04));
        }

        /* ── CONTENIDO PRINCIPAL ── */
        .portada-contenido{
            position:relative;z-index:5;flex:1;
            display:flex;flex-direction:column;justify-content:flex-end;
            padding:0 clamp(50px,7vw,80px) clamp(50px,9vh,90px);
        }

        /* Label "Nos Casamos" — glow dorado pulsante */
        .portada-label{
            font-family:var(--ft);font-style:italic;
            font-size:clamp(.56em,2vw,.75em);
            letter-spacing:9px;color:var(--oro-l);
            text-transform:uppercase;
            text-shadow:
                0 0 18px rgba(181,154,89,.7),
                0 0 40px rgba(181,154,89,.3),
                0 0 80px rgba(181,154,89,.12);
            margin-bottom:clamp(8px,1.8vh,16px);
            display:flex;align-items:center;gap:16px;
            opacity:0;
            animation:labelGlow 3s ease-in-out infinite alternate;
        }
        @keyframes labelGlow{
            0%  {text-shadow:0 0 14px rgba(181,154,89,.5),0 0 30px rgba(181,154,89,.2)}
            100%{text-shadow:0 0 24px rgba(181,154,89,.85),0 0 55px rgba(181,154,89,.4),0 0 100px rgba(181,154,89,.15)}
        }
        .portada.revealed .portada-label{animation:fadeSlideLeft .8s ease 1.15s both, labelGlow 3s ease-in-out 2s infinite alternate}
        .portada-label::before{
            content:'';
            flex:0 0 24px;height:1px;
            background:var(--oro);opacity:.7;
        }
        .portada-label::after{
            content:'';
            flex:0 0 clamp(50px,11vw,100px);height:1px;
            background:linear-gradient(to right,var(--oro),transparent);
            opacity:.6;
        }

        /* Iniciales grandes — gradiente cream/coral + shimmer GPU */
        .portada-iniciales{
            font-family:var(--ft);
            font-size:clamp(5.5em,25vw,13em);
            font-style:italic;line-height:.80;
            /* Gradiente crema → coral → oro sutil */
            background:linear-gradient(
                150deg,
                #F8F0E8 0%,
                #EDD9C8 30%,
                #D4B998 55%,
                #EDE0D0 75%,
                #FAF5EE 100%
            );
            -webkit-background-clip:text;
            -webkit-text-fill-color:transparent;
            background-clip:text;
            letter-spacing:-3px;
            opacity:0;
            margin-bottom:clamp(12px,2.5vh,24px);
            position:relative;
            overflow:hidden;
        }
        .portada.revealed .portada-iniciales{
            animation:fadeSlideUp 1.2s cubic-bezier(.16,1,.3,1) 1.25s both;
        }
        /* Shimmer GPU — translateX en lugar de left */
        .portada-iniciales::after{
            content:'';
            position:absolute;top:0;left:0;width:60%;height:100%;
            background:linear-gradient(100deg,
                transparent 0%,
                rgba(255,255,255,.1) 45%,
                rgba(255,248,235,.2) 50%,
                rgba(255,255,255,.1) 55%,
                transparent 100%);
            transform:translateX(-180%);
            animation:initialesShimmer 1.2s ease 2.5s both;
        }
        @keyframes initialesShimmer{
            from{transform:translateX(-180%)}to{transform:translateX(280%)}
        }

        /* Linea dorada expansible */
        .portada-linea{
            width:100%;height:1px;
            background:linear-gradient(to right,var(--oro),var(--oro-l),rgba(181,154,89,.08));
            margin-bottom:clamp(14px,2.5vh,24px);
            opacity:0;transform:scaleX(0);transform-origin:left;
        }
        .portada.revealed .portada-linea{
            animation:expandLine 1.1s cubic-bezier(.16,1,.3,1) 1.72s both;
        }
        @keyframes expandLine{
            from{opacity:1;transform:scaleX(0)}
            to  {opacity:1;transform:scaleX(1)}
        }

        /* Nombres completos */
        .portada-nombres{
            font-family:var(--fs);
            font-size:clamp(.65em,3vw,1em);
            letter-spacing:clamp(7px,2.8vw,15px);
            text-transform:uppercase;
            color:rgba(255,255,255,.85);
            font-weight:200;opacity:0;
        }
        .portada.revealed .portada-nombres{animation:fadeSlideUp .9s ease 1.9s both}

        /* Lugar */
        .portada-lugar{
            font-family:var(--ft);
            font-size:clamp(.75em,2.5vw,.96em);
            color:rgba(255,255,255,.58);
            letter-spacing:4px;
            margin-top:clamp(5px,1.2vh,10px);
            font-style:italic;opacity:0;
            text-shadow:0 0 20px rgba(0,0,0,.6);
        }
        .portada.revealed .portada-lugar{animation:fadeSlideUp .9s ease 2.08s both}

        /* Numero editorial tipo Vogue en esquina inferior izquierda */
        .portada-edition{
            position:absolute;bottom:clamp(28px,5vh,50px);
            left:clamp(50px,7vw,80px);
            z-index:7;
            font-family:var(--fs);
            font-size:clamp(.3em,1vw,.4em);
            letter-spacing:5px;text-transform:uppercase;
            color:rgba(255,255,255,.42);
            font-weight:300;
            opacity:0;
        }
        .portada.revealed .portada-edition{animation:fadeIn .9s ease 2.2s both}

        /* ── SCROLL HINT — REDESIGNED ── */
        .scroll-hint{
            position:absolute;bottom:clamp(20px,4vh,40px);
            right:clamp(20px,4vw,36px);z-index:7;
            display:flex;flex-direction:column;align-items:center;gap:10px;
            opacity:0}
        .portada.revealed .scroll-hint{animation:fadeIn 1s ease 2.3s forwards}
        .scroll-hint-text{
            font-family:var(--fs);font-size:.42em;letter-spacing:6px;
            text-transform:uppercase;color:rgba(255,255,255,.6);
            writing-mode:vertical-lr;
            text-orientation:mixed;
            text-shadow:0 0 12px rgba(0,0,0,.8);}
        .scroll-hint-line{
            width:1px;height:clamp(35px,5vh,55px);
            background:linear-gradient(to bottom,var(--oro),transparent);
            animation:scrollLine 2.2s ease-in-out infinite}
        .scroll-hint-dot{
            width:6px;height:6px;border-radius:50%;
            background:var(--oro);
            box-shadow:0 0 8px var(--oro);
            animation:dotPulse 2.2s ease-in-out infinite}
        @keyframes scrollLine{
            0%{transform:scaleY(0) translateY(0);transform-origin:top;opacity:0}
            10%{opacity:1}50%{transform:scaleY(1);transform-origin:top}
            100%{transform:scaleY(0) translateY(100%);transform-origin:bottom;opacity:0}}
        @keyframes dotPulse{0%,100%{transform:scale(1);opacity:.6}50%{transform:scale(1.4);opacity:1}}

        @keyframes fadeSlideDown{from{opacity:0;transform:translateY(-18px)}to{opacity:1;transform:translateY(0)}}
        @keyframes fadeSlideLeft{from{opacity:0;transform:translateX(-18px)}to{opacity:1;transform:translateX(0)}}
        @keyframes fadeSlideUp{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}
        @keyframes fadeIn{from{opacity:0}to{opacity:1}}

        /* ═══ ANIMATIONS ═══ */
        @keyframes parpadeo{0%,100%{opacity:.5}50%{opacity:1}}
        @keyframes flotar{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}

        /* ═══ EMBERS ═══ */
        #embers-bg{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
        .ember{position:absolute;background:var(--oro);border-radius:50% 0 50% 0;opacity:0;animation:caer-ember linear infinite}
        @keyframes caer-ember{
            0%{transform:translateY(-20px) rotate(0deg) translateX(0);opacity:.5}
            100%{transform:translateY(110vh) rotate(540deg) translateX(var(--drift));opacity:0}}

        /* ═══ RSVP PETALS ═══ */
        .rsvp-petals{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0}
        .noir-petal{position:absolute;border-radius:50% 0 50% 0;opacity:0;animation:caer-petal linear infinite}
        @keyframes caer-petal{
            0%{transform:translateY(-15px) rotate(0deg) translateX(0) scale(.8);opacity:0}
            10%{opacity:.6}80%{opacity:.3}
            100%{transform:translateY(calc(100% + 60px)) rotate(720deg) translateX(var(--drift)) scale(.4);opacity:0}}

        /* ═══ SECRETO ═══ */
        .secreto-wrap{padding:80px 20px;text-align:center;position:relative;z-index:1;background:var(--negro)}
        .secreto-trigger{cursor:pointer;display:inline-flex;flex-direction:column;align-items:center;gap:12px;position:relative}
        .secreto-trigger::before{content:'';position:absolute;top:15px;left:50%;transform:translate(-50%,-50%);width:70px;height:70px;background:radial-gradient(circle,rgba(181,154,89,.35) 0%,transparent 70%);border-radius:50%;animation:latido-aura 2s ease-in-out infinite;z-index:-1}
        @keyframes latido-aura{0%,100%{transform:translate(-50%,-50%) scale(1);opacity:.4}50%{transform:translate(-50%,-50%) scale(1.5);opacity:1}}
        .secreto-trigger .sico{font-size:2.8em;opacity:1;animation:flotar-giro 3s ease-in-out infinite;filter:drop-shadow(0 0 12px rgba(181,154,89,.8))}
        @keyframes flotar-giro{0%,100%{transform:translateY(0) rotate(-8deg)}50%{transform:translateY(-10px) rotate(8deg)}}
        .secreto-trigger p{font-size:.7em;letter-spacing:5px;text-transform:uppercase;color:var(--oro);font-weight:500;animation:parpadeo 2s infinite}
        .mensaje-secreto{display:none;max-width:540px;margin:30px auto 0;background:rgba(181,154,89,.06);border:1px solid rgba(181,154,89,.2);padding:50px 38px;text-align:center;position:relative}
        .mensaje-secreto.visible{display:block;animation:rev-msg 1s ease forwards}
        @keyframes rev-msg{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}
        .mensaje-secreto::before{content:'✦';position:absolute;top:-16px;left:50%;transform:translateX(-50%);font-size:1.8em;color:var(--oro);text-shadow:0 0 20px rgba(181,154,89,.6)}
        .mensaje-secreto h3{font-family:var(--ft);font-size:1.9em;color:var(--oro);font-style:italic;margin-bottom:22px}
        .mensaje-secreto blockquote{font-family:var(--ft);font-style:italic;font-size:1.2em;color:var(--crema);line-height:1.85}
        .mensaje-secreto .firma{margin-top:22px;color:var(--oro);font-size:.85em;letter-spacing:2px}
        @media(max-width:600px){.mensaje-secreto{padding:36px 20px}.rsvp-form{padding:32px 20px}}


        /* ═══════════════════════════════════════════════════════
           BLACK OR WHITE — Ornament System & Textures
        ═══════════════════════════════════════════════════════ */

        /* ── B&W Section backgrounds ── */
        .seccion{background:
            radial-gradient(ellipse at 20% 0%, rgba(192,188,181,.04) 0%, transparent 60%),
            var(--bw-obsidian2)}
        .seccion-alt{background:var(--bw-obsidian3)}
        .seccion-dark{background:var(--bw-void)}

        /* ── Light sections — Mármol Aperlado Frío ── */
        .seccion-light{
            background:
                linear-gradient(108deg,rgba(208,204,198,.14) 0%,transparent 28%,
                    rgba(188,184,178,.09) 55%,transparent 72%,
                    rgba(208,204,198,.12) 90%,transparent 100%),
                linear-gradient(198deg,rgba(188,184,178,.10) 5%,transparent 42%,
                    rgba(208,204,198,.14) 68%,transparent 90%),
                var(--wv-base);
        }
        .seccion-light::before{
            content:'';position:absolute;inset:0;pointer-events:none;z-index:0;
            background-image:var(--grain-light);opacity:.035;mix-blend-mode:multiply;
        }
        .seccion-light::after{
            content:'';position:absolute;left:0;right:0;bottom:0;height:1px;
            background:linear-gradient(to right,transparent,var(--bw-silver),transparent);
            opacity:.22;pointer-events:none;
        }
        .seccion-light-alt{
            background:
                linear-gradient(152deg,rgba(188,184,178,.10) 0%,transparent 35%,
                    rgba(208,204,198,.13) 58%,transparent 78%,
                    rgba(188,184,178,.09) 95%,transparent 100%),
                linear-gradient(242deg,rgba(208,204,198,.12) 8%,transparent 40%,
                    rgba(188,184,178,.10) 65%,transparent 88%),
                var(--wv-alt);
        }

        /* ── Ornamento geométrico de diamante ── */
        .bw-diamond-orn{
            display:flex;flex-direction:column;align-items:center;
            gap:clamp(10px,2vh,18px);
            margin:0 auto clamp(24px,4vh,40px);
        }
        .bw-diamond-icon{
            position:relative;
            width:clamp(60px,12vw,80px);
            height:clamp(60px,12vw,80px);
            display:flex;align-items:center;justify-content:center;
            flex-shrink:0;
        }
        .bw-diamond-icon svg{
            width:100%;height:100%;
            overflow:visible;
        }
        .bw-di-outer{
            stroke-dasharray:220;stroke-dashoffset:220;
            animation:bwDiDraw 1.8s cubic-bezier(.16,1,.3,1) .3s both;
        }
        .bw-di-mid{
            stroke-dasharray:160;stroke-dashoffset:160;
            animation:bwDiDraw 1.6s cubic-bezier(.16,1,.3,1) .55s both;
        }
        .bw-di-inner{
            stroke-dasharray:100;stroke-dashoffset:100;
            animation:bwDiDraw 1.3s cubic-bezier(.16,1,.3,1) .8s both;
        }
        .bw-di-dot{opacity:0;animation:bwFade .5s ease 1.2s both;}
        @keyframes bwDiDraw{to{stroke-dashoffset:0}}
        @keyframes bwFade{from{opacity:0}to{opacity:1}}

        /* Glow aperlado detrás */
        .bw-diamond-icon::before{
            content:'';position:absolute;inset:-16px;border-radius:50%;
            background:radial-gradient(circle,rgba(192,188,181,.12) 0%,transparent 65%);
            animation:bwGlowBreath 3.2s ease-in-out infinite alternate;
            pointer-events:none;
        }
        @keyframes bwGlowBreath{
            0%{opacity:.4;transform:scale(.9)}
            100%{opacity:.9;transform:scale(1.12)}
        }
        /* Pulso anular */
        .bw-di-pulse{
            position:absolute;inset:0;
            border:1px solid rgba(192,188,181,.28);
            border-radius:50%;
            animation:bwPulseRing 2.8s ease 1.6s infinite;
        }
        @keyframes bwPulseRing{
            0%{transform:scale(1);opacity:.6}
            100%{transform:scale(1.65);opacity:0}
        }

        /* ── Divisor Black or White ── */
        .bw-divider{
            display:flex;align-items:center;justify-content:center;
            gap:12px;margin:24px auto;
        }
        .bw-divider::before,.bw-divider::after{
            content:'';flex:0 0 clamp(40px,8vw,70px);height:1px;
            background:linear-gradient(to right,transparent,var(--bw-silver));
            opacity:.35;
        }
        .bw-divider::after{background:linear-gradient(to left,transparent,var(--bw-silver));opacity:.35;}
        .bw-divider-gem{
            width:8px;height:8px;
            background:var(--bw-silver-l);
            transform:rotate(45deg);
            box-shadow:0 0 10px rgba(192,188,181,.4);
            animation:bwGemPulse 2.8s ease-in-out infinite;
        }
        @keyframes bwGemPulse{
            0%,100%{transform:rotate(45deg) scale(1);box-shadow:0 0 8px rgba(192,188,181,.3)}
            50%{transform:rotate(45deg) scale(1.3);box-shadow:0 0 18px rgba(192,188,181,.6)}
        }

        /* ── Texto decorativo vertical B&W ── */
        .bw-vert-label{
            position:absolute;top:50%;z-index:8;
            font-family:var(--fs);font-size:clamp(.2em,.7vw,.28em);
            letter-spacing:clamp(4px,1.2vw,6px);text-transform:uppercase;
            color:rgba(240,237,232,.08);font-weight:200;
            writing-mode:vertical-rl;pointer-events:none;
        }
        .bw-vert-label.left{
            left:clamp(8px,1.4vw,14px);
            transform:translateY(-50%) rotate(180deg);
        }
        .bw-vert-label.right{
            right:clamp(8px,1.4vw,14px);
            transform:translateY(-50%);
        }

        /* ── Líneas decorativas verticales de sección ── */
        .bw-section-line{
            position:absolute;top:0;bottom:0;width:1px;
            pointer-events:none;
            background:linear-gradient(to bottom,
                transparent 0%,rgba(192,188,181,.14) 20%,
                rgba(192,188,181,.22) 50%,rgba(192,188,181,.14) 80%,transparent 100%);
        }
        .bw-section-line.left{left:clamp(20px,4vw,42px);}
        .bw-section-line.right{right:clamp(20px,4vw,42px);}

        /* ── Pattern de rombos de fondo ── */
        .bw-pattern-overlay{
            position:absolute;inset:0;pointer-events:none;z-index:0;
            background-image:var(--bw-diamond);
            opacity:.6;
        }

        /* ── Itinerario — acordeón geométrico ── */
        .bw-itinerario-trigger{
            display:inline-flex;flex-direction:column;align-items:center;
            gap:16px;cursor:pointer;margin-top:40px;
            background:none;border:none;outline:none;
            -webkit-tap-highlight-color:transparent;
            position:relative;
        }
        .bw-itinerario-trigger .bw-diamond-icon{
            width:clamp(64px,14vw,84px);height:clamp(64px,14vw,84px);
        }
        .bw-itin-label{
            font-family:var(--fs);font-size:clamp(.44em,1.3vw,.54em);
            letter-spacing:7px;text-transform:uppercase;
            color:var(--bw-ink2);
            display:flex;align-items:center;gap:10px;
            transition:color .3s;
        }
        .bw-itinerario-trigger:hover .bw-itin-label{color:var(--bw-silver-l)}
        .bw-itin-label::before,.bw-itin-label::after{
            content:'';width:20px;height:1px;
            background:linear-gradient(to right,transparent,rgba(192,188,181,.4));
        }
        .bw-itin-label::after{background:linear-gradient(to left,transparent,rgba(192,188,181,.4))}
        .bw-itin-chevron{
            font-size:.9em;color:var(--bw-ink3);
            transition:transform .5s cubic-bezier(.16,1,.3,1),color .3s;
            line-height:1;
        }
        .bw-itinerario-trigger.open .bw-itin-chevron{
            transform:rotate(180deg);color:var(--bw-silver-l);
        }
        .bw-itinerario-trigger.open .bw-di-outer{stroke:rgba(192,188,181,.7)}

        /* Contenido del acordeón */
        .bw-itinerario-content{
            max-width:640px;margin:0 auto;
            max-height:0;overflow:hidden;
            transition:max-height 1.1s cubic-bezier(.16,1,.3,1),
                        opacity .6s ease;
            opacity:0;
        }
        .bw-itinerario-content.open{max-height:900px;opacity:1;}

        /* Marco interior del acordeón */
        .bw-itin-frame{
            border:1px solid var(--bw-border);
            background:
                linear-gradient(135deg,rgba(192,188,181,.05) 0%,transparent 40%,
                    rgba(192,188,181,.04) 100%),
                var(--bw-obsidian4);
            padding:clamp(28px,4vh,44px) clamp(20px,4vw,36px);
            position:relative;overflow:hidden;
            margin-top:24px;
        }
        .bw-itin-frame::before{
            content:'';position:absolute;top:0;left:0;right:0;height:1px;
            background:linear-gradient(to right,transparent,var(--bw-silver),transparent);
            opacity:.35;
        }
        .bw-itin-frame::after{
            content:'';position:absolute;inset:8px;
            border:1px solid var(--bw-border-l);pointer-events:none;
        }

        /* Timeline dentro del acordeón */
        .bw-itin-frame .timeline{
            display:flex;flex-direction:column;gap:0;
            max-width:100%;margin:0 auto;
            text-align:left;position:relative;
        }
        .bw-itin-frame .timeline::before{
            content:'';position:absolute;left:68px;top:0;bottom:0;width:1px;
            background:linear-gradient(to bottom,transparent,rgba(192,188,181,.28),transparent);
        }
        .bw-itin-frame .tl-item{
            display:flex;align-items:flex-start;gap:22px;
            padding:18px 0;position:relative;z-index:1;
        }
        .bw-itin-frame .tl-hora{
            font-family:var(--ft);font-size:1.2em;
            color:var(--bw-silver-l);width:52px;text-align:right;
            font-style:italic;padding-top:2px;
        }
        .bw-itin-frame .tl-hora span{
            font-size:.4em;font-family:var(--fs);font-style:normal;
            letter-spacing:2px;display:block;
        }
        .bw-itin-frame .tl-dot{
            width:11px;height:11px;background:var(--bw-silver);border-radius:50%;
            margin-top:7px;flex-shrink:0;
            box-shadow:0 0 0 3px var(--bw-obsidian4),
                       0 0 0 4px rgba(192,188,181,.22),
                       0 0 10px rgba(192,188,181,.2);
        }
        .bw-itin-frame .tl-info h3{
            font-family:var(--fs);font-size:.7em;letter-spacing:3px;
            text-transform:uppercase;color:var(--bw-ink);margin-bottom:3px;font-weight:500;
        }
        .bw-itin-frame .tl-info p{
            font-family:var(--ft);font-size:.95em;
            color:var(--bw-ink2);font-style:italic;
        }
        @media(max-width:600px){
            .bw-itin-frame .timeline::before{left:14px}
            .bw-itin-frame .tl-item{flex-wrap:wrap;padding-left:36px;gap:6px}
            .bw-itin-frame .tl-dot{position:absolute;left:0;top:26px}
            .bw-itin-frame .tl-hora{width:auto;text-align:left}
            .bw-itin-frame .tl-hora span{display:inline;margin-left:4px}
            .bw-itin-frame .tl-info{width:100%}
        }

        /* ── Album section ornamento ── */
        .bw-album-orn{
            width:clamp(72px,14vw,96px);height:clamp(72px,14vw,96px);
            margin:0 auto clamp(18px,3vh,28px);
            position:relative;display:flex;align-items:center;justify-content:center;
        }
        .bw-album-orn svg{width:100%;height:100%;overflow:visible;}
        .bw-ao-glow{
            position:absolute;inset:-18px;border-radius:50%;
            background:radial-gradient(circle,rgba(192,188,181,.1) 0%,transparent 65%);
            animation:bwGlowBreath 3.5s ease-in-out infinite alternate;
            pointer-events:none;
        }
        .bw-ao-ring{
            position:absolute;inset:-8px;border-radius:50%;
            border:1px solid rgba(192,188,181,.2);
            animation:bwSpinSlow 22s linear infinite;
        }
        .bw-ao-ring::before{
            content:'';position:absolute;top:-3px;left:50%;
            transform:translateX(-50%);
            width:6px;height:6px;border-radius:50%;
            background:var(--bw-silver-l);
            box-shadow:0 0 8px var(--bw-silver-l);
        }
        @keyframes bwSpinSlow{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}

        /* ── Familia card en modo light — perla fría ── */
        .seccion-light .familia-card-inner,
        .seccion-light-alt .familia-card-inner{
            background:
                linear-gradient(140deg,rgba(208,204,198,.22) 0%,transparent 45%,
                    rgba(188,184,178,.14) 75%,transparent 100%),
                var(--wv-card);
            border:1px solid var(--bw-border);
            box-shadow:
                0 2px 0 rgba(255,255,255,.7) inset,
                0 8px 28px rgba(10,10,14,.1),
                0 1px 3px rgba(192,188,181,.15);
        }
        .seccion-light .familia-card-inner::before,
        .seccion-light-alt .familia-card-inner::before{
            border-color:rgba(192,188,181,.08);
        }
        .seccion-light .familia-card-inner::after,
        .seccion-light-alt .familia-card-inner::after{
            background:linear-gradient(to right,transparent,var(--bw-silver),transparent);
            opacity:.3;
        }
        .seccion-light .familia-bloque h4,
        .seccion-light-alt .familia-bloque h4{color:var(--bw-silver-d);}
        .seccion-light .familia-nombres,
        .seccion-light-alt .familia-nombres{color:var(--wv-ink);}
        .seccion-light .familia-y,
        .seccion-light-alt .familia-y{color:var(--bw-silver);}
        .seccion-light .familia-sep-line,
        .seccion-light-alt .familia-sep-line{background:var(--bw-silver);opacity:.3;}
        .seccion-light .fam-dot,.seccion-light-alt .fam-dot{background:rgba(192,188,181,.2);}
        .seccion-light .fam-dot.active,.seccion-light-alt .fam-dot.active{background:var(--bw-silver);}
        .seccion-light .fam-arrow,.seccion-light-alt .fam-arrow{
            border-color:var(--bw-border);color:var(--bw-silver);
        }
        .seccion-light .fam-arrow:hover,.seccion-light-alt .fam-arrow:hover{
            background:rgba(192,188,181,.08);border-color:var(--bw-silver);
        }

        /* ── Cards etiqueta en light — perla fría ── */
        .seccion-light .card,.seccion-light-alt .card{
            background:var(--wv-card);
            border-color:var(--bw-border);
            box-shadow:0 2px 0 rgba(255,255,255,.7) inset,0 6px 20px rgba(10,10,14,.08);
        }
        .seccion-light .card::after,.seccion-light-alt .card::after{
            background-image:var(--grain-light);opacity:.035;mix-blend-mode:multiply;
        }
        .seccion-light .card:hover,.seccion-light-alt .card:hover{
            box-shadow:0 2px 0 rgba(255,255,255,.8) inset,
                0 12px 36px rgba(10,10,14,.12),
                0 0 18px rgba(192,188,181,.06);
            border-color:rgba(192,188,181,.3);
        }
        .seccion-light .card .ico-wrap,.seccion-light-alt .card .ico-wrap{
            border-color:var(--bw-border);background:rgba(192,188,181,.07);
        }
        .seccion-light .card h3,.seccion-light-alt .card h3{color:var(--wv-ink);}
        .seccion-light .card p,.seccion-light-alt .card p{color:var(--wv-ink2);}
        .seccion-light .card .subtitulo,.seccion-light-alt .card .subtitulo{color:var(--bw-silver-d);}

        /* ── Boleto VIP — papel perla frío ── */
        .boleto-vip{
            background:
                linear-gradient(135deg,rgba(208,204,198,.28) 0%,transparent 40%,
                    rgba(188,184,178,.16) 70%,transparent 100%),
                linear-gradient(225deg,rgba(200,196,190,.18) 0%,transparent 55%),
                var(--wv-card);
            box-shadow:
                0 2px 0 rgba(255,255,255,.75) inset,
                0 -1px 0 rgba(120,116,110,.15) inset,
                0 28px 72px rgba(0,0,0,.6),
                0 8px 28px rgba(0,0,0,.4),
                0 2px 6px rgba(0,0,0,.22);
        }
        .boleto-vip::after{border:1px solid rgba(192,188,181,.13);}

        /* ── Familia crest — plata ── */
        .familia-crest{
            background:linear-gradient(140deg,rgba(208,204,198,.35) 0%,transparent 70%),
                var(--wv-card);
            border:1px solid rgba(192,188,181,.22);
            box-shadow:0 2px 8px rgba(0,0,0,.1),0 0 0 3px rgba(192,188,181,.07);
        }
        @keyframes crestShimmer{
            0%,100%{box-shadow:0 2px 8px rgba(0,0,0,.1),0 0 0 3px rgba(192,188,181,.06)}
            50%{box-shadow:0 3px 12px rgba(0,0,0,.14),0 0 0 4px rgba(192,188,181,.16),0 0 18px rgba(192,188,181,.1)}
        }

        /* ── VIP Pass — perla fría ── */
        .vip-pass-card{
            background:
                linear-gradient(135deg,rgba(208,204,198,.28) 0%,transparent 40%,
                    rgba(188,184,178,.15) 70%,transparent 100%),
                linear-gradient(225deg,rgba(200,196,190,.18) 0%,transparent 55%),
                var(--wv-card);
            border:1px solid rgba(192,188,181,.25);
            box-shadow:0 2px 0 rgba(255,255,255,.7) inset,
                0 18px 56px rgba(0,0,0,.6),0 6px 20px rgba(0,0,0,.4);
        }
        .vp-perf.l,.vp-perf.r{background:var(--noche-card);}

        /* ── Ticket overlay card — perla fría ── */
        .kct-card{
            background:
                linear-gradient(135deg,rgba(208,204,198,.3) 0%,transparent 40%,
                    rgba(188,184,178,.18) 70%,transparent 100%),
                linear-gradient(225deg,rgba(200,196,190,.22) 0%,transparent 55%),
                var(--wv-card);
            border:1px solid rgba(192,188,181,.25);
            box-shadow:0 2px 0 rgba(255,255,255,.72) inset,
                0 28px 72px rgba(0,0,0,.72),0 8px 28px rgba(0,0,0,.52);
        }

        /* ── Gift envelope — perla fría ── */
        .regalo-envelope{
            background:
                linear-gradient(125deg,rgba(208,204,198,.18) 0%,transparent 35%,
                    rgba(188,184,178,.10) 65%,transparent 100%),
                linear-gradient(225deg,rgba(200,196,190,.12) 0%,transparent 55%),
                var(--wv-card);
            border:1px solid var(--bw-border);
            box-shadow:0 2px 0 rgba(255,255,255,.7) inset,
                0 10px 36px rgba(10,10,14,.09),0 2px 10px rgba(10,10,14,.05);
        }

        /* ── Shimmer plata (reemplaza oro) ── */
        @keyframes silverShimmer{
            0%,35%{left:-120%}100%{left:170%}
        }
        .vp-stub-brand::after{animation:silverShimmer 3.5s ease-in-out infinite;}
        .kct-brand span::after{animation:silverShimmer 4s ease-in-out 1.5s infinite;}

        /* ── Partículas plateadas (override) ── */
        .particle{
            background:var(--bw-silver);
            box-shadow:0 0 6px 2px rgba(192,188,181,.2);
        }
        .ember{border-radius:50% 0 50% 0;}
