
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] {
            --color-primary: #B08A4C;
            --color-secondary: #EFE6D8;
            --color-accent: #AD8A52;
            --color-background: #F8F4EC;
            --color-text: #4A4036;
            --color-heading: #8A6B3F;

            --font-heading: 'Playfair Display', serif;
            --font-body: 'Montserrat', sans-serif;
        }

        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] {
            font-family: var(--font-body);
            color: var(--color-text);
            background-color: var(--color-background);
            line-height: 1.6;
            overflow-x: hidden;
        }

                    /* Preview/iframe contexts: hide scrollbar for a cleaner showcase look.
               Scrolling still works (touch + wheel), only the visual bar is hidden. */
            .archive-sheet[data-archive="perle"][data-archive-locale="ru"],.archive-sheet[data-archive="perle"][data-archive-locale="ru"] { scrollbar-width: none; -ms-overflow-style: none; }
            .archive-sheet[data-archive="perle"][data-archive-locale="ru"]::-webkit-scrollbar,.archive-sheet[data-archive="perle"][data-archive-locale="ru"]::-webkit-scrollbar { display: none; width: 0; height: 0; }
        
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] h1,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] h2,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] h3,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] h4,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] h5,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] h6 {
            font-family: var(--font-heading);
            color: var(--color-heading);
            line-height: 1.2;
        }

        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 0 20px;
        }

        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .section {
            padding: 50px 0;
        }

        @container archive (max-width: 768px) {
            .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .section {
                padding: 30px 0;
            }
        }

        /* Smooth scroll */
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] {
            scroll-behavior: smooth;
        }

        /* Loading animation */
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .fade-in {
            animation: fadeIn 1s ease-in !important;
        }

        @keyframes fadeIn {
            from {
                opacity: 0;
                transform: translateY(20px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        /* Alpine.js cloak */
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] [x-cloak] {
            display: none !important;
        }

        /* ===== Scroll Reveal Animations ===== */

        /* Base reveal states - elementos ocultos por defecto */
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-up,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-down,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-left,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-right,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-scale,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-zoom {
            opacity: 0;
            transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1) !important;
        }

        /* Fade Up - elemento sube desde abajo */
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-up {
            transform: translateY(40px);
        }

        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-up.reveal-visible {
            opacity: 1;
            transform: translateY(0);
        }

        /* Fade Down - elemento baja desde arriba */
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-down {
            transform: translateY(-40px);
        }

        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-down.reveal-visible {
            opacity: 1;
            transform: translateY(0);
        }

        /* Fade Left - elemento viene desde la derecha */
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-left {
            transform: translateX(40px);
        }

        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-left.reveal-visible {
            opacity: 1;
            transform: translateX(0);
        }

        /* Fade Right - elemento viene desde la izquierda */
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-right {
            transform: translateX(-40px);
        }

        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-right.reveal-visible {
            opacity: 1;
            transform: translateX(0);
        }

        /* Scale - elemento crece */
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-scale {
            transform: scale(0.9);
        }

        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-scale.reveal-visible {
            opacity: 1;
            transform: scale(1);
        }

        /* Zoom - elemento hace zoom in */
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-zoom {
            transform: scale(1.1);
        }

        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-zoom.reveal-visible {
            opacity: 1;
            transform: scale(1);
        }

        /* Delays para animar elementos secuencialmente */
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-delay-100 { transition-delay: 100ms !important; }
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-delay-200 { transition-delay: 200ms !important; }
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-delay-300 { transition-delay: 300ms !important; }
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-delay-400 { transition-delay: 400ms !important; }
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-delay-500 { transition-delay: 500ms !important; }

        /* Duración de animaciones */
        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-duration-slow {
            transition-duration: 1.2s !important;
        }

        .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-duration-fast {
            transition-duration: 0.5s !important;
        }

        /* Responsive - reducir movimiento en móviles */
        @container archive (max-width: 768px) {
            .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-up,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-down {
                transform: translateY(20px);
            }

            .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-left,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-right {
                transform: translateX(20px);
            }

            .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-up.reveal-visible,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-down.reveal-visible,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-left.reveal-visible,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-right.reveal-visible {
                transform: translate(0, 0);
            }
        }

        /* Respetar preferencias de accesibilidad */
        @media (prefers-reduced-motion: reduce) {
            .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-up,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-down,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-left,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-fade-right,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-scale,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .reveal-zoom {
                opacity: 1;
                transform: none;
                transition: none !important;
            }
        }

        /* Music animations */
        @keyframes musicIconPulse {
            0%, 100% { transform: scale(1); opacity: 1; }
            50% { transform: scale(1.08); opacity: 0.85; }
        }

        @keyframes musicBtnPulse {
            0%, 100% { box-shadow: 0 4px 16px rgba(0,0,0,0.25); }
            50% { box-shadow: 0 4px 24px rgba(122,46,58,0.5); }
        }
    

/* ══════════════════════════════════════════════════════════════
   FLORENTIA — atardecer toscano + verde oliva · prefijo fl
   ══════════════════════════════════════════════════════════════ */

/* Sloop Script (self-host · Sloop Script Three, el corte más florido).
   Subset woff2 (latin + tildes + Ñ + puntuación, ligaduras intactas): 31KB vs
   los 103KB del TTF completo; renderiza el & y el nombre de la sede del hero. */


/* Robelia (fuente exclusiva de Perle, self-host woff2 subset latin+tildes).
   Documentar licencia en el repo cuando Andrés confirme su origen/compra. */


/* Switzer (complementaria de Perle, variable 100-900, Fontshare Free Font License:
   ver public/fonts/perle/LICENSE-Switzer-FFL.txt) */


/* La intro de video toma la fuente exclusiva para el monograma del sello */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] { --vei-mono-font: 'Cormorant Garamond', 'Cormorant Garamond', serif; }

.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-wrap {
    container-type: inline-size;
    position: relative;

    /* ── Tokens de paleta (de $colors) ── */
    --pr-sunset:       #B08A4C;
    --pr-sunset-dim:   rgba(176,138,76,0.10);
    --pr-sunset-soft:  rgba(176,138,76,0.16);
    --pr-sunset-border:rgba(176,138,76,0.30);
    --pr-cream:        #EFE6D8;
    --pr-olive:        #AD8A52;
    --pr-olive-dim:    rgba(173,138,82,0.12);
    --pr-olive-soft:   rgba(173,138,82,0.20);
    --pr-olive-border: rgba(173,138,82,0.32);
    --pr-bg:           #F8F4EC;
    --pr-text:         #4A4036;
    --pr-heading:      #8A6B3F;
    --pr-head-soft:    rgba(138,107,63,0.14);
    /* Superficies (tokenizadas para soportar paletas claras y oscuras) */
    --pr-paper:        #EFEAE1;
    --pr-paper-feat:   #F1EADC;
    --pr-card:         #FDFBF5;
    --pr-surface:      #F2ECDF;
    --pr-keyline:      rgba(173, 138, 82, 0.30);
    --pr-btn-hover:    #6E5433;
    --pr-btn-bg:       #8A6B3F;      /* fondo de botón: bronce, blanco encima pasa AA */
    --pr-ink-gold:     #6E5433;    /* tinta bronce del texto pequeño informativo */
    --pr-on-accent:    #FFFFFF;
    --pr-frame:        #FFFFFF;
    --pr-ph-fill:      linear-gradient(160deg, #F1EADC 0%, #E4D9C4 100%);
    --pr-amp:          rgba(173, 138, 82, 0.14);
    --pr-hero-bg:      radial-gradient(92% 55% at 50% -6%, rgba(196,168,110,0.14), transparent 60%), linear-gradient(165deg, #FBF8F1 0%, #F4EEE1 55%, #EDE5D3 100%);
    --pr-hero-ink:     #4A4036;
    --pr-hero-heading: #6E5433;
    --pr-hero-accent:  #AD8A52;
    --pr-hero-line:    rgba(173, 138, 82, 0.45);
    /* Relieve de foil: el texto dorado va estampado en caliente sobre el papel, así
       que capta luz arriba-izquierda (misma dirección que el estampado y la seda) y
       deja una sombra corta y CÁLIDA abajo-derecha. Nunca gris ni negra: sobre crema
       eso ensucia. --pr-foil para display, --pr-foil-sm para versalitas pequeñas. */
    --pr-foil:    -0.5px -0.5px 0 rgba(255,253,248,0.85),
                   0.7px 1.1px 1.6px rgba(122,96,58,0.30),
                   0 2px 7px rgba(122,96,58,0.10);
    --pr-foil-sm: -0.4px -0.4px 0 rgba(255,253,248,0.7),
                   0.4px 0.7px 1px rgba(122,96,58,0.24);
    /* Velo sobre la seda y halo tras los títulos: el crema del PAPEL en rgba, así
       cada paleta empalma seda↔papel sola (si el papel cambia y esto no, escalón) */
    --pr-veil-rgb: 239,234,225;
    /* Perla: gradiente reutilizado por divisores, alfiler y medallones de hora */
    --pr-pearl: radial-gradient(circle at 34% 30%, #FFFFFF 0%, #F7F0E2 40%, #DCCBAB 100%);
    /* Seda del concepto (portada y secciones protagonista) */
    --pr-silk:        url('/media/archive/nupcii.com/images/templates/perle/silk-desktop.webp');
    /* Estampado en seco de la paleta (misma tesela, pasada de color por paleta) */
    --pr-emboss:      url('/media/archive/nupcii.com/images/templates/perle/emboss-rose.webp');
    --pr-silk-mobile: url('/media/archive/nupcii.com/images/templates/perle/silk-mobile.webp');

    /* ── Tokens estructurales (hardcoded) ── */
    /* Robelia = la voz principal de Perle (fuente exclusiva); Sloop = acento caligráfico;
       el cuerpo usa la complementaria (Jost provisional hasta definir el par definitivo C4) */
    --font-pr-display: 'Cormorant Garamond', 'Cormorant Garamond', serif;
    --font-pr-name:    'Cormorant Garamond', 'Playfair Display', serif;             /* nombres del hero */
    --font-pr-script:  'Great Vibes', 'Great Vibes', cursive;     /* acento caligráfico */
    --font-pr-body:    'Montserrat', 'Jost', 'Montserrat', sans-serif;
    --pr-radius:       3px;
    --pr-maxw:         1080px;
    /* Onda (wave) usada como transición entre secciones */
    --pr-wave-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 80' preserveAspectRatio='none'%3E%3Cpath d='M0,80 L0,46 C200,8 400,8 600,40 C800,72 1000,72 1200,40 L1200,80 Z' fill='%23000'/%3E%3C/svg%3E");
    --pr-shadow:       0 24px 60px -28px rgba(61,46,32,0.45);
    --pr-shadow-sm:    0 12px 36px -20px rgba(61,46,32,0.35);

    /* Campo cálido CONTINUO para toda la página: atardecer arriba → crema → durazno abajo.
       Las secciones son transparentes y dejan fluir este campo, sin líneas duras entre ellas. */
    background:
        radial-gradient(125% 55% at 50% 0%, rgba(176,138,76,0.16) 0%, transparent 46%),
        linear-gradient(180deg, #EFE6D8 0%, #F8F4EC 15%, #F8F4EC 66%, #EFE6D8 100%);
    background-color: #F8F4EC;
    color: var(--pr-text);
    font-family: var(--font-pr-body);
    font-weight: 300;
    line-height: 1.7;
    letter-spacing: 0.3px;
    overflow-x: hidden;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-wrap * { box-sizing: border-box; }
/* Resets con :where() → especificidad 0 para que las reglas de cada componente
   (márgenes de párrafos, títulos) ganen siempre por orden de aparición. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-wrap :where(h1, h2, h3) { margin: 0; font-weight: 400; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-wrap :where(p) { margin: 0; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-wrap :where(a) { color: inherit; }

/* ── Textura de papel (grano procedural SVG) sobre toda la página ──
   soft-light = añade textura sin oscurecer ni teñir; no requiere imagen externa. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-wrap::after {
    content: "";
    position: absolute; inset: 0; z-index: 40;
    pointer-events: none;
    opacity: 0.55;
    mix-blend-mode: soft-light;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)'/%3E%3C/svg%3E");
    background-size: 300px 300px;
}

/* ── Entrada cinematográfica (auto-play, escalonada con --d) ── */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-wrap .pr-rise {
    opacity: 0;
    transform: translateY(28px);
    animation: prRise 1s cubic-bezier(.2,.7,.2,1) both !important;
    animation-delay: var(--d, 0s) !important;
}
@keyframes prRise { to { opacity: 1; transform: none; } }
/* Coordinación con el intro del sobre: mientras está abierto, el hero retiene su entrada;
   al cerrarse el sobre, la dispara escalonada (reveal). En el customizer (sin intro) anima al cargar. */
@media (prefers-reduced-motion: no-preference) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"].fl-intro-pending .pr-wrap .pr-rise { animation: none !important; }
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"].fl-intro-done .pr-wrap .pr-rise {
        animation: prRise 1s cubic-bezier(.2,.7,.2,1) both !important;
        animation-delay: var(--d, 0s) !important;
    }
}
@media (prefers-reduced-motion: reduce) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-wrap .pr-rise { animation: none !important; opacity: 1; transform: none; }
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-arch-photo,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-embers span { animation: none !important; }
}

.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-container {
    max-width: var(--pr-maxw);
    margin: 0 auto;
    padding: 0 28px;
    position: relative;
    z-index: 2;
}

/* The polaroid carousel sizes its slides from 100vw and reserves ~20px per side.
   The 28px container padding was clipping the card on mobile; trim it for the
   gallery section so it fits like the other templates (Velvet Rose, Oasis). */
@container archive (max-width: 768px) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-sec:has(.pr-gallery-host) .pr-container { padding-left: 12px; padding-right: 12px; }
}

/* ─────────── Secciones + transición tipo onda (wave) ─────────── */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-sec {
    padding: clamp(72px, 11cqw, 130px) 0;
    position: relative;
    z-index: 0;
}
/* Cuerpo "papel claro": UN SOLO tono uniforme para todo el cuerpo (la única transición de
   color es portada-oliva → cuerpo-papel). Las secciones se separan por aire y ornamentos,
   no por bandas de color. Textura de papel global (.pr-wrap::after). */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-bg,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-cream { background: var(--pr-paper); }  /* papel crema cálido, uniforme en todo el cuerpo */

/* Papel ESTAMPADO EN SECO (blind emboss): el mismo relieve floral del sobre del
   intro continúa en las secciones de papel, así el sobre y la invitación son la
   misma papelería. La textura es luz y sombra (gris neutro) en modo soft-light:
   no tiñe, modula el papel que haya debajo, así sirve con cualquier paleta.
   Asset: tesela generada aparte (perle-estampado-landscape), pasada por paso alto
   para dejar solo el relieve y fusionada consigo misma desplazada media tesela
   para que repita sin costura. Ver documentation/PERLE-ESTAMPADO-PAPEL.md */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-bg::before,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-cream::before {
    content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    /* La imagen ENTERA, sin modo de fusión ni opacidad: el papel de la sección ES
       el papel estampado, con su crema cálido, su relieve y su fibra. Cualquier
       blend (soft-light aplana el relieve, luminosity roba el color al papel de
       debajo y lo vuelve gris) aleja el resultado del original. */
    background-image: var(--pr-emboss);
    background-repeat: repeat;
    /* A escala real: la tesela mide 1448px y las flores están dibujadas para verse
       a ese tamaño. Encogerla las apiña y las vuelve un patrón. */
    background-size: 1000px;
    /* Anclado al CENTRO (no a la esquina): así la fase horizontal de la tesela no
       depende del ancho de pantalla y el encabezado, que también va centrado, cae
       siempre sobre la misma zona del dibujo. El desplazamiento vertical se eligió
       midiendo la franja de la tesela con menos relieve en la banda del título. */
    background-position: center -558px;
    /* Relieve más suave: como --pr-paper es EXACTAMENTE el tono medio del estampado,
       bajar la opacidad comprime sombras y luces contra ese tono sin desplazar el
       color. Es un control de profundidad del relieve, no de color. */
    opacity: 0.44;
}
@container archive (min-width: 768px) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-bg::before,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-cream::before { background-size: 1400px; background-position: center -804px; }
}
/* El estampado no debe arrancar de golpe contra la seda: donde la sección vecina
   es de seda (portada, itinerario, regalos, footer) la textura entra o sale con un
   degradado largo, y el papel liso hace de bisagra. Entre dos secciones de papel
   NO se desvanece: ahí el estampado es continuo. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-wrap {
    --pr-fade: clamp(90px, 14cqw, 190px);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] :is(.pr-hero, .pr-bg-olive) + :is(.pr-bg-bg, .pr-bg-cream)::before {
    -webkit-mask-image: linear-gradient(to bottom, transparent, #000 var(--pr-fade));
            mask-image: linear-gradient(to bottom, transparent, #000 var(--pr-fade));
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] :is(.pr-bg-bg, .pr-bg-cream):has(+ :is(.pr-bg-olive, .pr-footer))::before {
    -webkit-mask-image: linear-gradient(to top, transparent, #000 var(--pr-fade));
            mask-image: linear-gradient(to top, transparent, #000 var(--pr-fade));
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] :is(.pr-hero, .pr-bg-olive) + :is(.pr-bg-bg, .pr-bg-cream):has(+ :is(.pr-bg-olive, .pr-footer))::before {
    -webkit-mask-image: linear-gradient(to bottom, transparent, #000 var(--pr-fade), #000 calc(100% - var(--pr-fade)), transparent);
            mask-image: linear-gradient(to bottom, transparent, #000 var(--pr-fade), #000 calc(100% - var(--pr-fade)), transparent);
}
/* Save-Data / reduced-motion no aplican aquí, pero sí conviene bajar el estampado
   cuando el usuario pide menos estímulo visual */
@media (prefers-reduced-transparency: reduce) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-bg::before,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-cream::before { opacity: 0.45; }
}

/* "Cinta": banda de imagen a ancho completo, muy horizontal, debajo de /guest */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-ribbon {
    width: 100%;
    height: clamp(120px, 20cqw, 260px);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}
/* Sección protagonista: vuelve la SEDA bajo un velo de champán (el mismo material
   de la portada), para que el cuerpo respire entre papel y tela. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-olive {
    padding: clamp(104px, 14cqw, 168px) 0;  /* más aire: deja el contenido fuera de las curvas */
    background-color: var(--pr-paper-feat);
    background-image:
        linear-gradient(rgba(var(--pr-veil-rgb),0.76), rgba(var(--pr-veil-rgb),0.80)),
        var(--pr-silk-mobile);
    background-size: cover;
    background-position: center;
}
@container archive (min-width: 768px) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-olive {
        background-image:
            linear-gradient(rgba(var(--pr-veil-rgb),0.76), rgba(var(--pr-veil-rgb),0.80)),
            var(--pr-silk);
    }
}
/* Transición suave papel ↔ oliva: el papel del cuerpo se cuela por arriba y por abajo de la
   sección oliva en curvas orgánicas asimétricas con filo difuminado (no bandas duras). */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-olive::before,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-olive::after {
    content: ""; position: absolute; left: 0; right: 0;
    height: clamp(72px, 11cqw, 150px); z-index: 1; pointer-events: none;
    background: var(--pr-paper);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-olive::before {
    top: -1px;
    -webkit-mask: radial-gradient(160% 100% at 58% -34%, #000 48%, rgba(0,0,0,0) 80%);
            mask: radial-gradient(160% 100% at 58% -34%, #000 48%, rgba(0,0,0,0) 80%);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-olive::after {
    bottom: -1px;
    -webkit-mask: radial-gradient(160% 100% at 42% 134%, #000 48%, rgba(0,0,0,0) 80%);
            mask: radial-gradient(160% 100% at 42% 134%, #000 48%, rgba(0,0,0,0) 80%);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-container { z-index: 2; }

/* ─────────── Cabecera de sección ─────────── */
/* El encabezado se reserva su claro: en una plancha de imprenta el dibujo deja
   sitio al texto. Halo del MISMO tono del papel (#EFEAE1 = tono medio del
   estampado), así no se ve como una mancha, solo alisa el relieve bajo el título.
   Solo en las secciones de papel; las de seda no lo necesitan. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-bg .pr-head,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-cream .pr-head { position: relative; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-bg .pr-head::before,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-bg-cream .pr-head::before {
    content: ""; position: absolute; z-index: -1; pointer-events: none;
    left: 50%; top: 46%; transform: translate(-50%, -50%);
    width: min(124%, 940px); height: 190%;
    background: radial-gradient(ellipse at center,
        var(--pr-paper) 0%,
        rgba(var(--pr-veil-rgb),0.86) 40%,
        rgba(var(--pr-veil-rgb),0) 72%);
}

.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-head { text-align: center; margin-bottom: clamp(44px, 6cqw, 70px); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-head-title {
    font-family: var(--font-pr-display);
    font-size: clamp(34px, 6cqw, 56px);
    font-style: italic;
    font-weight: 500;
    color: var(--pr-heading);
    line-height: 1.08;
    text-shadow: var(--pr-foil);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-head-sub {
    font-family: var(--font-pr-body);
    font-size: 12px;
    font-weight: 400;
    letter-spacing: 3.5px;
    text-transform: uppercase;
    color: var(--pr-ink-gold);   /* AA: en oro quedaba <3:1 sobre el papel */
    margin-top: 14px;
    text-shadow: var(--pr-foil-sm);
}
/* Separador ornamental: hairline que se desvanece hacia los lados + detalle central (hojita) */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-divider {
    display: flex; align-items: center; justify-content: center;
    gap: clamp(14px, 2.4cqw, 22px);
    width: clamp(180px, 36cqw, 300px);
    margin: clamp(20px, calc(var(--archive-vh, 1svh) * 3), 30px) auto 0;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-divider-line { height: 1px; flex: 1; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-divider-line:first-child { background: linear-gradient(to right, transparent, var(--pr-olive-border)); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-divider-line:last-child  { background: linear-gradient(to left,  transparent, var(--pr-olive-border)); }
/* Marca central del divisor: TRES PERLAS graduadas (la firma de Perle; en
   Florentia era un rombo de olivo). Las dos pequeñas son ::before/::after. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-divider-mark {
    position: relative; flex: none;
    width: 9px; height: 9px; border-radius: 50%;
    transform: none; opacity: 1;
    background: var(--pr-pearl);
    box-shadow: 0 1px 2px rgba(90,70,40,0.28);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-divider-mark::before,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-divider-mark::after {
    content: ""; position: absolute; top: 50%;
    width: 5px; height: 5px; border-radius: 50%;
    transform: translateY(-50%);
    background: var(--pr-pearl);
    box-shadow: 0 1px 2px rgba(90,70,40,0.22);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-divider-mark::before { left: -13px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-divider-mark::after  { right: -13px; }

/* ─────────── Flora de Perle ───────────
   Botánica dibujada a mano (PNG con alpha) aplicada como MÁSCARA CSS: la tinta
   sale de var(--pr-olive), así el ornamento sigue la paleta que elija la pareja. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-botanical {
    display: inline-block;
    background-color: var(--pr-olive);
    -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
    -webkit-mask-position: center;  mask-position: center;
    -webkit-mask-size: contain;     mask-size: contain;
}
/* Marca de agua en tarjetas de papelería (dedicada, regalos): rama en las esquinas.
   El selector va con .pr-wrap delante a propósito: `.pr-dedicated > *` (más abajo)
   fija position:relative a los hijos y con igual especificidad ganaría por orden. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-wrap .pr-card-branch {
    position: absolute; z-index: 0; pointer-events: none;
    bottom: clamp(10px, 2cqw, 20px);
    width: clamp(44px, 6cqw, 66px); height: clamp(88px, 12cqw, 132px);
    opacity: 0.17;
    background-color: var(--pr-olive);
    -webkit-mask: var(--offline-mask-fa388b440063) bottom center / contain no-repeat;
            mask: var(--offline-mask-fa388b440063) bottom center / contain no-repeat;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-wrap .pr-card-branch-l { left: clamp(12px, 2.4cqw, 24px);  transform: scaleX(-1); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-wrap .pr-card-branch-r { right: clamp(12px, 2.4cqw, 24px); }

/* ─────────── Sello de cera ─────────── */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-seal-img { display: block; width: 100%; height: 100%; object-fit: contain;
    filter: drop-shadow(0 6px 14px rgba(61,46,32,0.35)); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-seal-initials {
    position: absolute; inset: 0;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--font-pr-display);
    font-style: italic;
    font-weight: 500;
    font-size: clamp(15px, 2.2cqw, 22px);
    color: #5A4322;                                  /* bronce sobre lacre champán */
    letter-spacing: 1px;
    text-shadow: 0 1px 0 rgba(255,250,240,0.42);
    padding-bottom: 4%;
}

/* ═══════════════ HERO — PARTIDO (foto | panel de seda) ═══════════════
   Patrón de Ébène con los materiales de Perle (aprobado el 16 ago). La foto manda
   con el 58% del ancho y el panel de textos va sobre la seda. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero {
    position: relative;
    min-height: calc(var(--archive-vh, 1svh) * 100);
    display: flex; flex-direction: row;
    overflow: hidden; isolation: isolate;
    color: var(--pr-hero-ink);
    background: var(--pr-hero-bg);
}

/* Transición al cuerpo: el papel sube sobre TODA la portada en una curva
   emplumada, sobre la seda y sobre la foto a la vez, así el borde inferior deja de
   ser una línea recta. El primer stop va en 44% para que el papel llegue OPACO al
   borde (con 22% se colaba un 20% de lo de arriba y volvía a leerse la línea). */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero::after {
    content: ""; position: absolute; left: -3%; right: -3%; bottom: -1px;
    height: clamp(120px, 20cqw, 300px); z-index: 5; pointer-events: none;
    background: var(--pr-paper);
    -webkit-mask: radial-gradient(170% 135% at 46% 150%, #000 44%, rgba(0,0,0,0) 96%);
            mask: radial-gradient(170% 135% at 46% 150%, #000 44%, rgba(0,0,0,0) 96%);
}

/* ── Mitad de foto ──
   Encuadre por `cover` con la foto DOMINANTE (58%): en un marco fijo solo caben
   recortar o dejar barras, y con foto vertical las barras hundían la jerarquía de
   la pareja. El encuadre lo elige la pareja desde el customizer ("Posición de la
   imagen": superior / centro / inferior), igual que en Ébène. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-photo-half { position: relative; z-index: 2; flex: 1 1 58%; overflow: hidden; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-photo-img {
    position: absolute; inset: 0; display: block;
    width: 100%; height: 100%; object-fit: cover;
    animation: prKen 36s ease-in-out infinite alternate !important;
}
@keyframes prKen { from { transform: scale(1.015); } to { transform: scale(1.075); } }
/* Filete de oro entre foto y panel */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-photo-half::after {
    content: ""; position: absolute; z-index: 3;
    right: 0; top: clamp(40px, calc(var(--archive-vh, 1svh) * 7), 90px); bottom: clamp(40px, calc(var(--archive-vh, 1svh) * 7), 90px);
    width: 1px;
    background: linear-gradient(180deg, transparent, var(--pr-olive-border) 18%, var(--pr-olive-border) 82%, transparent);
}

/* ── Mitad de panel, sobre la seda ── */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-panel {
    position: relative; z-index: 2; flex: 0 0 42%;
    display: flex; align-items: center; justify-content: center;
    padding: clamp(56px, calc(var(--archive-vh, 1svh) * 7), 110px) clamp(26px, 3.6cqw, 64px);
    text-align: center;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-silk {
    position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background-image: var(--pr-silk-mobile);
    background-size: cover; background-position: center;
}
@container archive (min-width: 768px) { .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-silk { background-image: var(--pr-silk); } }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-veil {
    position: absolute; inset: 0; z-index: 1; pointer-events: none;
    background:
        radial-gradient(76% 52% at 50% 44%, rgba(255,253,248,0.60) 0%, rgba(252,247,238,0.28) 58%, rgba(244,236,222,0.10) 100%),
        linear-gradient(180deg, rgba(248,244,236,0.34) 0%, rgba(248,244,236,0.04) 30%, rgba(240,231,214,0.26) 100%);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-panel-inner { position: relative; z-index: 3; width: 100%; }

/* ── Textos ── */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-eyebrow {
    font-family: var(--font-pr-body);
    font-size: clamp(10px, 1.1cqw, 12.5px); font-weight: 400;
    
    letter-spacing: 0.34em; text-transform: uppercase; color: var(--pr-hero-heading);
    margin-bottom: clamp(14px, calc(var(--archive-vh, 1svh) * 2.2), 26px);
    line-height: 1.9;
    text-shadow: var(--pr-foil-sm);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-name {
    font-family: var(--font-pr-name); font-weight: 400; font-style: normal;
    font-size: clamp(30px, 3.6cqw, 66px); line-height: 1.06; color: var(--pr-hero-heading);
    letter-spacing: 0.02em;
    text-shadow: var(--pr-foil);
    margin: 0;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-amp {
    display: block;
    font-family: var(--font-pr-script);
    font-size: clamp(22px, 2.6cqw, 40px); line-height: 0.9;
    color: var(--pr-hero-accent);
    margin: clamp(2px, calc(var(--archive-vh, 1svh) * 0.5), 8px) 0;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-meta {
    display: flex; align-items: center; justify-content: center; gap: 14px;
    margin-top: clamp(20px, calc(var(--archive-vh, 1svh) * 3), 34px);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hm-line { display: block; width: clamp(22px, 3cqw, 44px); height: 1px; background: var(--pr-hero-line); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hm-text {
    font-family: var(--font-pr-body);
    font-size: clamp(11px, 1.15cqw, 13px); letter-spacing: 3px; text-transform: uppercase;
    color: var(--pr-hero-ink);
    text-shadow: var(--pr-foil-sm);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-place {
    font-family: var(--font-pr-display); font-style: italic;
    font-size: clamp(15px, 1.7cqw, 21px); color: var(--pr-hero-accent); margin-top: 12px;
    text-shadow: var(--pr-foil-sm);
}

/* ── Indicador de scroll, al pie del panel ── */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-scroll {
    position: absolute; left: 50%; bottom: clamp(14px, calc(var(--archive-vh, 1svh) * 2.4), 30px); transform: translateX(-50%);
    z-index: 4;
    background: none; border: 0; padding: 8px; cursor: pointer;
    display: inline-flex; align-items: flex-start; justify-content: center;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-scroll-track {
    position: relative; display: block; width: 1px; height: 52px;
    background: linear-gradient(var(--pr-hero-line), rgba(0,0,0,0));
    overflow: hidden;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-scroll-dot {
    position: absolute; left: -1.5px; top: 0;
    width: 4px; height: 4px; border-radius: 50%;
    background: var(--pr-hero-accent);
    animation: prScrollDot 2s ease-in-out infinite !important;
}
@keyframes prScrollDot {
    0% { transform: translateY(0); opacity: 0; }
    20% { opacity: 1; }
    80% { opacity: 1; }
    100% { transform: translateY(46px); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-scroll-dot { animation: none !important; top: 46%; opacity: .85; }
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-photo-img { animation: none !important; }
}

/* ── Móvil: se apila, foto arriba y panel debajo ── */
@container (max-width: 899px) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero { flex-direction: column; min-height: calc(var(--archive-vh, 1svh) * 100); }
    /* Menos alto para la foto: el panel de textos gana terreno y no queda hundido */
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-photo-half { flex: 0 0 calc(var(--archive-vh, 1svh) * 47); }
    /* La foto se disuelve en su borde inferior y deja ver la seda de debajo, que es
       la misma que continúa en el panel: nada de corte recto entre ambos.
       La máscara va en el CONTENEDOR, no en la imagen: si va en la imagen, el zoom
       lento la escala con ella y empuja el final del degradado fuera del área
       visible, de modo que el contenedor lo recorta y reaparece el corte. */
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-photo-half {
        -webkit-mask-image: linear-gradient(to bottom, #000 62%, rgba(0,0,0,0.55) 84%, transparent 100%);
                mask-image: linear-gradient(to bottom, #000 62%, rgba(0,0,0,0.55) 84%, transparent 100%);
    }
    /* Sin filete en móvil: aquí la separación la hace el difuminado, y una raya
       recta en medio del degradado lo contradice. */
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-photo-half::after { display: none; }
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-panel { flex: 1 1 auto; padding: clamp(44px, calc(var(--archive-vh, 1svh) * 7), 76px) 22px clamp(52px, calc(var(--archive-vh, 1svh) * 8), 84px); }
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-hero-name { font-size: clamp(34px, 9.5cqw, 68px); }
}

/* ═══════════════ COUNTDOWN ═══════════════ */
/* Sección papel limpia: sin onda ni nube sunset (herencia de Florentia). El ::before
   queda libre para el patrón impreso, así que solo se anula el ::after. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cd-sec::after { display: none; }


.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cd { display: flex; align-items: stretch; justify-content: center; gap: clamp(14px, 5cqw, 48px); flex-wrap: nowrap; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cd-unit { display: flex; flex-direction: column; align-items: center; justify-content: center; min-width: clamp(52px, 14cqw, 92px); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cd-num {
    font-family: var(--font-pr-display);
    font-size: clamp(46px, 11cqw, 92px);
    font-weight: 500;
    line-height: 0.95;
    color: var(--pr-heading);
    font-variant-numeric: tabular-nums;
    text-shadow: var(--pr-foil);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cd-lbl {
    font-family: var(--font-pr-body);
    font-size: 10.5px; font-weight: 400;
    letter-spacing: 0.32em; text-transform: uppercase;
    color: var(--pr-ink-gold);   /* AA: el oro quedaba en ~4.3:1 sobre el papel */
    margin-top: 16px;
    padding-left: 0.32em;
    text-shadow: var(--pr-foil-sm);
}
/* Separador = hairline vertical fino (sin cajitas, sin dos puntos), desvanecido en extremos */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cd-sep {
    align-self: center;
    width: 1px;
    height: clamp(44px, 9cqw, 76px);
    background: var(--pr-olive-border);
    -webkit-mask: linear-gradient(180deg, transparent, #000 22%, #000 78%, transparent);
            mask: linear-gradient(180deg, transparent, #000 22%, #000 78%, transparent);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cd-caption {
    text-align: center;
    margin-top: clamp(28px, 4.5cqw, 48px);
    font-family: var(--font-pr-script);
    font-size: clamp(34px, 5cqw, 58px);
    line-height: 1;
    color: var(--pr-heading);
}

/* ═══════════════ CALENDARIO DEL MES ═══════════════
   Debajo de la cuenta regresiva: el invitado ve en qué día de la semana cae la
   boda. Va en pareja con una foto sujeta por un alfiler de perla. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-date {
    display: flex; align-items: center; justify-content: center;
    gap: clamp(22px, 4cqw, 52px); flex-wrap: wrap;
    margin-top: clamp(44px, 6.5cqw, 78px);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cal {
    position: relative;
    width: min(330px, 92%);
    padding: clamp(18px, 2.6cqw, 26px) clamp(16px, 2.4cqw, 24px) clamp(14px, 2cqw, 20px);
    background: var(--pr-card);
    border: 1px solid var(--pr-keyline);
    box-shadow: 0 26px 56px -34px rgba(95,75,40,0.22), 0 2px 8px -6px rgba(95,75,40,0.10);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cal::before {   /* doble filete, como el resto de la papelería */
    content: ""; position: absolute; inset: 6px; pointer-events: none;
    border: 1px solid var(--pr-keyline); opacity: 0.55;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cal-month {
    font-family: var(--font-pr-display); font-style: italic;
    font-size: clamp(19px, 2.4cqw, 25px); line-height: 1.1;
    color: var(--pr-heading); text-align: center; text-transform: capitalize;
    text-shadow: var(--pr-foil);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cal-grid {
    display: grid; grid-template-columns: repeat(7, 1fr);
    margin-top: clamp(12px, 1.8cqw, 18px);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cal-dow {
    font-family: var(--font-pr-body);
    font-size: 9.5px; font-weight: 500; letter-spacing: 0.14em;
    text-transform: uppercase; color: var(--pr-ink-gold);   /* AA */
    text-align: center; padding-bottom: 9px;
    border-bottom: 1px solid var(--pr-keyline);
    margin-bottom: 7px;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cal-day {
    position: relative;
    font-family: var(--font-pr-body); font-size: 12.5px;
    color: var(--pr-text); text-align: center;
    padding: 6px 0; z-index: 1;
    font-variant-numeric: tabular-nums;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cal-day.is-out { opacity: 0.24; }
/* El día del evento: perla con anillo de oro, eco del sello de lacre del intro */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cal-day.is-day {
    color: var(--pr-heading); font-weight: 600;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cal-day.is-day::before {
    content: ""; position: absolute; top: 50%; left: 50%;
    width: 30px; height: 30px; border-radius: 50%;
    transform: translate(-50%, -50%); z-index: -1;
    background: var(--pr-pearl);
    border: 1px solid var(--pr-olive-border);
    box-shadow: 0 4px 10px -6px rgba(95,75,40,0.55);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cal-weekday {
    font-family: var(--font-pr-display); font-style: italic;
    font-size: clamp(16px, 2cqw, 20px);
    color: var(--pr-heading); text-align: center;
    text-transform: capitalize;
    margin-top: clamp(12px, 1.8cqw, 18px);
    text-shadow: var(--pr-foil);
}
/* Foto sujeta con alfiler de perla */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-date-photo {
    position: relative; margin: 0;
    width: min(230px, 62%); aspect-ratio: 3 / 4;
    padding: 10px;
    background: var(--pr-frame);
    transform: rotate(-1.4deg);
    box-shadow: 0 30px 58px -30px rgba(96,76,44,0.5), 0 6px 16px -10px rgba(96,76,44,0.2);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-date-photo-img { width: 100%; height: 100%; background-size: cover; background-position: center; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-pin {
    position: absolute; top: -9px; left: 50%; transform: translateX(-50%);
    width: 18px; height: 18px; border-radius: 50%; z-index: 2;
    background: var(--pr-pearl);
    box-shadow: 0 4px 9px -3px rgba(90,70,40,0.55);
}
@container (max-width: 620px) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-date { gap: clamp(26px, 6cqw, 40px); }
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-date-photo { width: min(210px, 58%); }
}

/* ═══════════════ INVITACIÓN DEDICADA ═══════════════ */
/* Invitación dedicada: marco passe-partout + nombre del invitado en Sloop (momento de reconocimiento) */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-dedicated {
    position: relative;
    max-width: 620px; margin: 0 auto; text-align: center;
    padding: clamp(56px, 7.5cqw, 88px) clamp(34px, 6cqw, 70px);
    background: var(--pr-card);                 /* marfil más claro que el papel del cuerpo */
    border: 1px solid var(--pr-olive-border);
    box-shadow: 0 34px 70px -36px rgba(95,75,40,0.22), 0 2px 10px -6px rgba(95,75,40,0.10);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-dedicated::before {  /* doble filete interior */
    content: ""; position: absolute; inset: 7px; pointer-events: none;
    border: 1px solid var(--pr-keyline);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-dedicated > * { position: relative; z-index: 1; }
/* Sello de cera sobre el filete superior */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-ded-seal {
    position: absolute; top: 0; left: 50%; transform: translate(-50%, -50%);
    width: clamp(58px, 9cqw, 78px); aspect-ratio: 1; z-index: 2;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-ded-eyebrow {
    font-family: var(--font-pr-name);
    font-size: 12px; letter-spacing: 0.3em; text-transform: uppercase;
    color: var(--pr-ink-gold);   /* AA */
    margin: clamp(10px, calc(var(--archive-vh, 1svh) * 1.6), 18px) 0 clamp(14px, calc(var(--archive-vh, 1svh) * 2.2), 24px);
    padding-left: 0.3em;
    text-shadow: var(--pr-foil-sm);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-ded-names { display: flex; flex-direction: column; align-items: center; gap: 0; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-ded-name {
    /* Nombre del invitado en Robelia (la voz principal de Perle; la caligrafía
       Sloop queda solo en el "&" y acentos menores) */
    font-family: var(--font-pr-name); font-weight: 400;
    font-size: clamp(34px, 5.6cqw, 70px); line-height: 1.12;
    letter-spacing: 0.02em;
    color: var(--pr-heading);
    text-shadow: var(--pr-foil);
}
/* Nombres largos (varios invitados o tratamientos extensos): cuerpo menor
   para no estirar la sección */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-ded-name--compact { font-size: clamp(28px, 3.9cqw, 48px); }
/* Separadores entre nombres apilados. Con 2 invitados (pareja, el caso
   común) va un "&" en caligrafía; con 3+ una hairline como .pr-ded-rule
   en miniatura, para no leerse como cadena "A & B & C" */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-ded-amp {
    font-family: var(--font-pr-script);
    font-size: clamp(24px, 3.4cqw, 42px); line-height: 1;
    color: var(--pr-sunset);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-ded-sep {
    display: block; width: clamp(20px, 2.6cqw, 30px); height: 1px;
    background: var(--pr-sunset-border);
    margin: clamp(8px, 1.2cqw, 14px) auto;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-ded-meta {
    font-family: var(--font-pr-name);
    font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
    color: var(--pr-ink-gold); margin-top: 16px;   /* AA */
}
/* Cupos (p. ej. "4 personas" / "+3 acompañantes"): dato importante → etiqueta con número realzado */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-ded-count {
    display: inline-flex; align-items: baseline; gap: 8px;
    margin: 18px auto 0; padding: 8px 18px;
    background: var(--pr-olive-dim);
    border: 1px solid var(--pr-olive-border);
    border-radius: var(--pr-radius);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-ded-count-n {
    font-family: var(--font-pr-display); font-style: italic; font-weight: 600;
    font-size: clamp(22px, 3cqw, 28px); line-height: 1; color: var(--pr-heading);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-ded-count-l {
    font-family: var(--font-pr-name); font-weight: 500;
    font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--pr-ink-gold);   /* AA */
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-ded-rule { display: block; width: 56px; height: 1px; background: var(--pr-olive-border); margin: clamp(22px, calc(var(--archive-vh, 1svh) * 3), 32px) auto; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-ded-msg {
    font-family: var(--font-pr-display); font-style: italic;
    font-size: clamp(17px, 2.2cqw, 22px); line-height: 1.6;
    color: var(--pr-text); max-width: 32ch; margin: 0 auto;
    text-shadow: var(--pr-foil);
}
/* Esta sección no necesita el "even glow" (ya no hay glows, pero por si acaso) */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-ded-sec::after { display: none; }

/* ═══════════════ ITINERARIO ═══════════════
   Maquetado según la referencia de Andrés: retrato a un lado, línea de tiempo
   vertical con medallones de icono, y tarjetas de esquinas suaves con la hora
   separada del lugar por un filete. Cierra con ramas, corazón y una frase. */

/* ── Divisor con corazón de la cabecera del itinerario ── */
/* Divisor: filete · corazón · filete */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rule-heart {
    display: flex; align-items: center; justify-content: center;
    gap: clamp(14px, 2.2cqw, 20px);
    width: clamp(200px, 34cqw, 300px);
    margin: clamp(18px, calc(var(--archive-vh, 1svh) * 2.6), 28px) auto 0;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rule-line { height: 1px; flex: 1; background: var(--pr-olive-border); opacity: 0.75; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rule-icon {
    flex: none; width: clamp(17px, 2.2cqw, 21px); height: auto;
    color: var(--pr-olive);
}

/* ── Rejilla: retrato + columna de tarjetas ── */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl {
    display: grid; grid-template-columns: 1fr;
    gap: clamp(30px, 4.4cqw, 48px);
    max-width: 1020px; margin: 0 auto;
    align-items: start;
}
/* En móvil manda la información: las tarjetas van primero y la foto cierra.
   En escritorio vuelve el orden natural, con el retrato en la columna izquierda.
   (La foto es decorativa, alt vacío, así que el orden del DOM no afecta a lectores
   de pantalla.) */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-photo { order: 2; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-cards { order: 1; }
@container (min-width: 900px) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl { grid-template-columns: minmax(260px, 380px) 1fr; gap: clamp(48px, 6cqw, 78px); }
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-photo,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-cards { order: 0; }
    /* Ceremonia y celebración en la misma sede: una sola tarjeta, centrada frente
       al retrato en vez de colgando de la parte superior. */
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl--single .pr-tl-cards { align-self: center; }
    /* Sin retrato (la pareja no subió esa foto destacada): la rejilla de dos
       columnas dejaba a las tarjetas apretadas en el carril del retrato con la
       otra columna vacía. Una sola columna centrada a ancho de lectura. */
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl--nophoto { grid-template-columns: 1fr; max-width: 700px; }
}

/* ── Retrato: mismo lenguaje que la foto de la fecha ──
   Papel recto, alfiler de perla e inclinación mínima. Las dos fotos ENMARCADAS de
   la invitación comparten tratamiento; la cinta queda aparte porque es una banda,
   no una foto colocada. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-photo {
    position: relative; margin: 0;
    padding: clamp(9px, 1.1cqw, 13px);
    background: var(--pr-frame);
    transform: rotate(-1.1deg);
    box-shadow: 0 30px 60px -34px rgba(96,76,44,0.45), 0 4px 14px -10px rgba(96,76,44,0.18);
}
/* En móvil la foto manda: se muestra con SU proporción, sin recortes sorpresa.
   En escritorio sí se encuadra a 3/4 para que acompañe a la columna de tarjetas. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-photo-img {
    display: block; width: 100%; height: auto;
}
@container (min-width: 900px) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-photo { aspect-ratio: 3 / 4; }
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-photo-img { height: 100%; object-fit: cover; }
}

/* ── Columna de tarjetas + línea de tiempo ── */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-cards {
    position: relative;
    display: flex; flex-direction: column;
    gap: clamp(26px, 3.6cqw, 42px);
    padding-left: clamp(46px, 6cqw, 62px);   /* carril del medallón */
}
/* Línea vertical continua, desvanecida en los extremos */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-track {
    position: absolute; top: 0; bottom: 0;
    left: clamp(23px, 3cqw, 31px);
    width: 1px; background: var(--pr-olive-border);
    -webkit-mask: linear-gradient(180deg, transparent, #000 12%, #000 88%, transparent);
            mask: linear-gradient(180deg, transparent, #000 12%, #000 88%, transparent);
}
/* La línea no debe treparse a la cabecera: arranca en el borde de la primera
   tarjeta y muere en la última, con los extremos desvanecidos. */

.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-card {
    position: relative;
    background: var(--pr-card);
    border: 1px solid var(--pr-keyline);
    border-radius: clamp(14px, 1.8cqw, 20px);
    box-shadow: 0 26px 54px -34px rgba(95,75,40,0.28), 0 2px 10px -8px rgba(95,75,40,0.14);
    padding: clamp(26px, 3.4cqw, 40px) clamp(24px, 3.2cqw, 38px);
    display: grid;
    grid-template-columns: auto 1px 1fr;
    grid-template-areas:
        "label label label"
        "time  vrule info";
    column-gap: clamp(16px, 2.4cqw, 28px);
    row-gap: clamp(12px, 1.6cqw, 18px);
    align-items: center;
}
@container (min-width: 900px) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-card {
        grid-template-areas:
            "time vrule label"
            "time vrule info";
        row-gap: clamp(6px, 0.8cqw, 10px);
    }
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-card > * { position: relative; z-index: 1; }

/* Medallón del icono, montado sobre la línea */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-medal {
    position: absolute; z-index: 2;
    left: clamp(-46px, -6cqw, -62px); top: 50%;
    transform: translateY(-50%);
    width: clamp(46px, 6cqw, 62px); aspect-ratio: 1;
    display: flex; align-items: center; justify-content: center;
    border-radius: 50%;
    background: var(--pr-card);
    border: 1px solid var(--pr-olive-border);
    box-shadow: 0 8px 20px -12px rgba(95,75,40,0.5);
}
/* Iconos de los momentos: joyería de alambre de oro y perla (recursos propios),
   dentro de la medalla; contain en caja cuadrada, cada pieza con su aspecto. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-ico {
    display: block; width: 66%; height: 66%;
    background: center / contain no-repeat;
    filter: drop-shadow(0 2px 4px rgba(95,75,40,0.18));
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-ico--church  { background-image: url('/media/archive/nupcii.com/images/templates/perle/ico-church.webp'); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-ico--glasses { background-image: url('/media/archive/nupcii.com/images/templates/perle/ico-toast.webp'); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-ico--rings   { background-image: url('/media/archive/nupcii.com/images/templates/perle/ico-rings.webp'); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-ico--cake    { background-image: url('/media/archive/nupcii.com/images/templates/perle/ico-cake.webp'); }

.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-label {
    grid-area: label;
    font-family: var(--font-pr-body);
    font-size: clamp(10px, 1.2cqw, 12px); font-weight: 500;
    letter-spacing: 0.24em; text-transform: uppercase;
    color: var(--pr-ink-gold);   /* AA */
    text-shadow: var(--pr-foil-sm);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-time {
    grid-area: time;
    display: flex; align-items: baseline; gap: 5px;
    justify-self: start;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-h {
    font-family: var(--font-pr-display); 
    font-size: clamp(30px, 4cqw, 42px); line-height: 1;
    color: var(--pr-heading);
    font-variant-numeric: tabular-nums;
    text-shadow: var(--pr-foil);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-ampm {
    font-family: var(--font-pr-body);
    font-size: clamp(9px, 1.1cqw, 11px); font-weight: 500; letter-spacing: 0.18em;
    color: var(--pr-ink-gold);   /* AA */
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-vrule {
    grid-area: vrule; align-self: stretch;
    width: 1px; background: var(--pr-keyline);
}
@container (min-width: 900px) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-vrule { grid-row: 1 / 3; }
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-info { grid-area: info; min-width: 0; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-venue {
    font-family: var(--font-pr-display);
    font-size: clamp(20px, 2.8cqw, 30px); line-height: 1.16;
    color: var(--pr-heading);
    text-shadow: var(--pr-foil);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-addr {
    display: flex; align-items: center; gap: 7px;
    font-family: var(--font-pr-body); font-size: clamp(12.5px, 1.4cqw, 14px);
    color: var(--pr-text); opacity: 0.82; margin-top: 8px;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-pin { flex: none; width: 15px; height: 15px; color: var(--pr-sunset); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-map {
    display: flex; align-items: center; gap: clamp(14px, 2cqw, 26px);
    margin-top: clamp(14px, 1.8cqw, 20px);
    padding-top: clamp(12px, 1.6cqw, 16px);
    border-top: 1px solid var(--pr-keyline);
    font-family: var(--font-pr-body); font-size: clamp(10px, 1.15cqw, 11.5px);
    font-weight: 500; letter-spacing: 0.2em; text-transform: uppercase;
    text-decoration: none; color: var(--pr-heading);
    transition: color .3s ease !important;
    text-shadow: var(--pr-foil-sm);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-map span { flex: none; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-arrow { flex: 1; min-width: 26px; max-width: 46px; height: 8px; color: var(--pr-heading); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-map:hover { color: var(--pr-sunset); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-tl-map:hover .pr-tl-arrow { color: var(--pr-sunset); }


/* ═══════════════ GALERÍA ═══════════════ */
/* Puente de variables para los layouts de galería compartidos (incl. Polaroid):
   look premium → sin inclinación + controles sutiles en oliva (no el coral de la paleta). */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-gallery-host {
    position: relative;
    max-width: 1100px; margin: 0 auto;
    --gallery-primary: var(--pr-olive);
    --gallery-accent:  var(--pr-olive);
    --gallery-text:    var(--pr-text);
    --gallery-heading: var(--pr-heading);
    --gallery-font-script: var(--font-pr-display);
    --gallery-polaroid-tilt: 0;                 /* fotos rectas (como las demás premium) */
    /* La tarjeta Polaroid es SIEMPRE blanca, así que la leyenda debe ser oscura en todas las
       paletas (con --pr-text claro de los temas joya quedaba invisible). Sobreescribible por
       paleta vía --pr-polaroid-ink si alguna quisiera otro tono. */
    --gallery-polaroid-text: var(--pr-polaroid-ink, #34302a);
}

/* ═══════════════ DRESS CODE ═══════════════ */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-dc { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(18px, 3cqw, 32px); max-width: 760px; margin: 0 auto; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-dc-card {
    position: relative;
    text-align: center;
    padding: clamp(38px, 4.5cqw, 56px) clamp(24px, 3cqw, 36px);
    background: var(--pr-card);
    border: 1px solid var(--pr-olive-border);
    border-radius: var(--pr-radius);
    box-shadow: 0 26px 56px -34px rgba(95,75,40,0.20), 0 2px 8px -6px rgba(95,75,40,0.10);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-dc-card::before {  /* doble filete interior (como la tarjeta dedicada) */
    content: ""; position: absolute; inset: 7px; pointer-events: none;
    border: 1px solid var(--pr-keyline);
}
/* Iconos de vestimenta (recursos propios): vestido y chaqueta */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-dc-icon {
    display: block;
    height: clamp(56px, 7.4cqw, 82px);
    margin: 0 auto clamp(14px, 2cqw, 20px);
    background: center / contain no-repeat;
    filter: drop-shadow(0 2px 4px rgba(95,75,40,0.18));
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-dc-icon--dress { width: clamp(52px, 7.0cqw, 70px); background-image: url('/media/archive/nupcii.com/images/templates/perle/ico-dress.webp'); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-dc-icon--suit  { width: clamp(48px, 6.5cqw, 65px); background-image: url('/media/archive/nupcii.com/images/templates/perle/ico-suit.webp'); }

/* Rol = etiqueta pequeña (solo clasifica) */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-dc-name {
    font-family: var(--font-pr-name); font-weight: 500;
    font-size: 12px; letter-spacing: 0.28em; text-transform: uppercase;
    color: var(--pr-ink-gold); margin-bottom: clamp(14px, calc(var(--archive-vh, 1svh) * 2), 20px);   /* AA */
    text-shadow: var(--pr-foil-sm);
}
/* Código de vestimenta = protagonista (lo que el invitado debe saber) */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-dc-code { font-family: var(--font-pr-display); font-style: italic; font-size: clamp(30px, 4.4cqw, 44px); color: var(--pr-heading); line-height: 1.12; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-dc .pr-divider { width: clamp(120px, 55%, 170px); margin: clamp(18px, calc(var(--archive-vh, 1svh) * 2.6), 26px) auto clamp(16px, calc(var(--archive-vh, 1svh) * 2.2), 22px); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-dc-notes { font-family: var(--font-pr-body); font-size: 13.5px; color: var(--pr-text); opacity: 0.78; margin-top: 12px; }

/* ═══════════════ REGALOS ═══════════════ */
/* Tarjeta de papelería (como la dedicada): marfil + doble filete + watermark de laurel */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-gift {
    position: relative;
    max-width: 600px; margin: 0 auto; text-align: center;
    padding: clamp(54px, 7cqw, 84px) clamp(34px, 6cqw, 70px);
    background: var(--pr-card);
    border: 1px solid var(--pr-olive-border);
    border-radius: var(--pr-radius);
    box-shadow: 0 34px 70px -36px rgba(95,75,40,0.22), 0 2px 10px -6px rgba(95,75,40,0.10);
    text-shadow: var(--pr-foil);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-gift::before {  /* doble filete interior */
    content: ""; position: absolute; inset: 7px; pointer-events: none;
    border: 1px solid var(--pr-keyline);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-gift > * { position: relative; z-index: 1; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-gift .pr-card-calla { opacity: 0.14; }
/* Más aire en la sección de regalos, sobre todo en la parte inferior */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] #gifts { padding-top: clamp(112px, 15cqw, 184px); padding-bottom: clamp(144px, 19cqw, 224px); }
/* Iconos de la mesa de regalos (recursos propios): sobre, caja y corazón */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-gift-icon {
    display: block; margin: 0 auto clamp(16px, calc(var(--archive-vh, 1svh) * 2.4), 24px);
    height: clamp(52px, 7cqw, 74px);
    background: center / contain no-repeat;
    filter: drop-shadow(0 2px 4px rgba(95,75,40,0.18));
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-gift-icon--envelope { width: clamp(78px, 10.5cqw, 105px); background-image: url('/media/archive/nupcii.com/images/templates/perle/ico-envelope.webp'); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-gift-icon--box      { width: clamp(47px, 6.4cqw, 64px); background-image: url('/media/archive/nupcii.com/images/templates/perle/ico-gift.webp'); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-gift-icon--heart    { width: clamp(61px, 8.2cqw, 82px); background-image: url('/media/archive/nupcii.com/images/templates/perle/ico-heart.webp'); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-gift-title { font-family: var(--font-pr-display); font-style: italic; font-size: clamp(28px, 4.4cqw, 42px); color: var(--pr-heading); margin-bottom: 18px; text-shadow: var(--pr-foil); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-gift-text { font-family: var(--font-pr-display); font-size: clamp(17px, 2.4cqw, 21px); line-height: 1.6; color: var(--pr-text); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-gift-list { list-style: none; padding: 0; margin: 22px 0 0; display: flex; flex-direction: column; gap: 12px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-gift-list li {
    font-family: var(--font-pr-body); font-size: 15px; color: var(--pr-text);
    padding-bottom: 12px; border-bottom: 1px solid var(--pr-olive-dim);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-gift-list li:last-child { border-bottom: none; }

/* ═══════════════ LOGÍSTICA ═══════════════ */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(18px, 3cqw, 28px); max-width: 900px; margin: 0 auto; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info-card--full { grid-column: 1 / -1; }
/* Tres tarjetas en la fila de abajo (Transporte + Alojamiento + Niños): tres columnas.
   :where() conserva la especificidad del grid para que el 1fr del @container móvil siga ganando. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info:where(:has(> :nth-child(4)), :not(:has(.pr-info-card--full)):has(> :nth-child(3))) { grid-template-columns: repeat(3, 1fr); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info:not(:has(.pr-info-card--full)) .pr-info-card:only-child {
    grid-column: 1 / -1;
    max-width: 450px;
    margin-left: auto;
    margin-right: auto;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info:has(.pr-info-card--full) .pr-info-card:not(.pr-info-card--full):last-child:nth-child(2) {
    grid-column: 1 / -1;
    max-width: 450px;
    margin-left: auto;
    margin-right: auto;
}
@container (max-width: 560px) { .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info { grid-template-columns: 1fr; } }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info-card {
    position: relative;
    text-align: center; padding: clamp(34px, 4cqw, 48px) clamp(22px, 3cqw, 30px);
    background: var(--pr-card);
    border: 1px solid var(--pr-olive-border);
    border-radius: var(--pr-radius);
    box-shadow: 0 26px 56px -34px rgba(95,75,40,0.20), 0 2px 8px -6px rgba(95,75,40,0.10);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info-card::before {  /* doble filete interior */
    content: ""; position: absolute; inset: 7px; pointer-events: none;
    border: 1px solid var(--pr-keyline);
}
/* Iconos de información (recursos propios): nota, coche, hotel y globos */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info-icon {
    display: block; margin: 0 auto 14px;
    height: clamp(46px, 6cqw, 62px);
    background: center / contain no-repeat;
    filter: drop-shadow(0 2px 4px rgba(95,75,40,0.18));
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info-icon--note    { width: clamp(60px, 8.1cqw, 81px); background-image: url('/media/archive/nupcii.com/images/templates/perle/ico-note.webp'); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info-icon--car     { width: clamp(92px, 12.4cqw, 124px); background-image: url('/media/archive/nupcii.com/images/templates/perle/ico-car.webp'); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info-icon--hotel   { width: clamp(53px, 7.2cqw, 72px); background-image: url('/media/archive/nupcii.com/images/templates/perle/ico-hotel.webp'); }
/* Los globos son altos y estrechos: con la misma altura que el coche perdían masa */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info-icon--balloon { height: clamp(56px, 7.3cqw, 76px); width: clamp(36px, 4.8cqw, 48px); background-image: url('/media/archive/nupcii.com/images/templates/perle/ico-balloon.webp'); }
/* Tarjetas lado a lado (>560 de container): caja de altura común con el icono
   apoyado en la base para que los títulos alineen (la height pisa la del globo a propósito) */
@container (min-width: 561px) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info-card:not(.pr-info-card--full) .pr-info-icon {
        height: clamp(64px, 8.4cqw, 88px);
        background-position: bottom center;
    }
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info-title { font-family: var(--font-pr-display); font-style: italic; font-size: clamp(22px, 3cqw, 28px); color: var(--pr-heading); margin-bottom: 12px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-info-text { font-family: var(--font-pr-body); font-size: 14.5px; color: var(--pr-text); opacity: 0.85; }

/* ═══════════════ RSVP ═══════════════ */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp {
    position: relative;
    max-width: 600px; margin: 0 auto;
    padding: clamp(60px, 7cqw, 80px) clamp(28px, 5cqw, 56px) clamp(40px, 5cqw, 56px);
    background: var(--pr-card);
    border: 1px solid var(--pr-olive-border);
    border-radius: var(--pr-radius);
    box-shadow: 0 34px 70px -36px rgba(95,75,40,0.22), 0 2px 10px -6px rgba(95,75,40,0.10);
    text-align: center;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp::before {  /* doble filete interior (como las demás tarjetas) */
    content: ""; position: absolute; inset: 7px; pointer-events: none;
    border: 1px solid var(--pr-keyline);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp-intro { font-family: var(--font-pr-display); font-size: clamp(18px, 2.6cqw, 23px); color: var(--pr-text); line-height: 1.55; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp-intro strong { color: var(--pr-heading); font-weight: 500; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp-deadline {
    font-family: var(--font-pr-body); font-size: clamp(14px, 1.9cqw, 16.5px); letter-spacing: 0.5px;
    color: var(--pr-ink-gold); margin-top: 18px; margin-bottom: 30px; line-height: 1.5;   /* AA: en oro (sunset) daba ~3.1 */
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp-empty {
    margin-top: 26px; padding: 28px;
    border: 1px dashed var(--pr-olive-border); border-radius: var(--pr-radius);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp-empty p { font-family: var(--font-pr-body); font-size: 14px; color: var(--pr-text); opacity: 0.8; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp :is(form, .rsvp-form) { margin-top: 28px; }

/* ── Formulario RSVP: estiliza el componente compartido public.rsvp-form ── */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .rsvp-form-container { padding: 0 !important; background: transparent !important; border: none !important; box-shadow: none !important; }

.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .rsvp-response-buttons { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 26px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .response-option {
    cursor: pointer; padding: 16px; margin: 0;
    border: 1px solid var(--pr-olive-border) !important; border-radius: var(--pr-radius) !important;
    background: var(--pr-surface) !important; transition: all .3s ease !important;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .response-option:hover { border-color: var(--pr-olive) !important; background: var(--pr-olive-dim) !important; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .response-option.selected { border-color: var(--pr-olive) !important; background: var(--pr-olive-dim) !important; box-shadow: inset 0 0 0 1px var(--pr-olive-border) !important; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .option-content { display: flex; flex-direction: column; align-items: center; gap: 8px; color: var(--pr-text) !important; font-family: var(--font-pr-body); font-size: 13px; letter-spacing: 1.5px; text-transform: uppercase; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .response-option.selected .option-content { color: var(--pr-olive) !important; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .option-icon { color: var(--pr-olive); }

.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .section-label { display: block; font-size: 10px !important; font-weight: 400 !important; color: var(--pr-olive) !important; letter-spacing: 3px !important; text-transform: uppercase; font-family: var(--font-pr-body) !important; margin-bottom: 14px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .optional-label { font-size: 11px; opacity: .55; margin-left: 4px; letter-spacing: 0; text-transform: none; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .section-divider { height: 1px; background: var(--pr-olive-border) !important; margin: 22px 0; }

.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .checkbox-group,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .checkbox-group-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .checkbox-item,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .event-checkbox {
    display: flex; align-items: center; gap: 9px; padding: 11px 13px; cursor: pointer;
    border: 1px solid var(--pr-olive-border) !important; background: var(--pr-surface) !important;
    border-radius: var(--pr-radius) !important; transition: all .2s !important;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .checkbox-item:hover,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .event-checkbox:hover { border-color: var(--pr-olive) !important; background: var(--pr-olive-dim) !important; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .event-checkbox { flex-direction: column; align-items: flex-start; gap: 3px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .checkbox-input { accent-color: var(--pr-olive) !important; width: 16px; height: 16px; flex-shrink: 0; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .checkbox-label,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .event-name { font-size: 14px; color: var(--pr-text) !important; font-family: var(--font-pr-body); cursor: pointer; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .event-time { font-size: 14px; color: var(--pr-text) !important; opacity: 0.75; display: block; font-family: var(--font-pr-body); }

.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .number-input-wrapper { display: flex; align-items: center; gap: 16px; justify-content: center; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .count-button { width: 38px; height: 38px; border-radius: 50% !important; background: var(--pr-btn-bg) !important; color: var(--pr-on-accent) !important; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all .2s !important; flex-shrink: 0; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .count-button:hover:not(:disabled) { background: var(--pr-btn-hover) !important; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .count-button:disabled { opacity: .3; cursor: not-allowed; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .count-input { width: 64px; text-align: center; font-family: var(--font-pr-display) !important; font-size: 30px; font-style: italic; background: var(--pr-surface) !important; border: 1px solid var(--pr-olive-border) !important; border-radius: var(--pr-radius) !important; padding: 4px; color: var(--pr-heading) !important; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .helper-text { display: block; text-align: center; font-size: 13px; color: var(--pr-text) !important; opacity: 0.55; margin-top: 8px; letter-spacing: 1px; font-family: var(--font-pr-body); }

.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .dietary-textarea { width: 100%; padding: 12px 14px; background: var(--pr-surface) !important; border: 1px solid var(--pr-olive-border) !important; border-radius: var(--pr-radius) !important; font-family: var(--font-pr-body); font-size: 14px; color: var(--pr-text) !important; resize: vertical; transition: border-color .2s !important; min-height: 72px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .dietary-textarea:focus { outline: none; border-color: var(--pr-olive) !important; box-shadow: 0 0 0 3px var(--pr-olive-dim); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .dietary-textarea::placeholder { color: var(--pr-text) !important; opacity: 0.5; font-style: italic; }

.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .decline-info-message { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; background: rgba(192,57,43,0.05) !important; border: 1px solid rgba(192,57,43,0.18) !important; border-radius: var(--pr-radius) !important; margin-top: 20px; text-align: left; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .decline-icon-small { flex-shrink: 0; color: #c0392b; margin-top: 2px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .decline-info-text { flex: 1; font-size: 14px; line-height: 1.6; color: var(--pr-text) !important; margin: 0; font-family: var(--font-pr-body); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .decline-info-text strong { color: #c0392b !important; }

.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .submit-button { width: 100%; padding: 16px 28px; background: var(--pr-btn-bg) !important; color: var(--pr-on-accent) !important; border: none !important; border-radius: var(--pr-radius) !important; font-family: var(--font-pr-body); font-size: 11px; font-weight: 500; letter-spacing: 3px; text-transform: uppercase; cursor: pointer; transition: all .3s ease !important; margin-top: 26px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .submit-button:hover:not(:disabled) { background: var(--pr-btn-hover) !important; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .submit-button:disabled { opacity: .4; cursor: not-allowed; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .error-message { display: block; margin-top: 6px; font-size: 14px; color: #c0392b; font-family: var(--font-pr-body); }

/* Resumen de confirmación */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .confirmation-summary { text-align: center; padding: 8px 0; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .success-icon { width: 76px; height: 76px; border-radius: 50%; background: var(--pr-olive-dim); border: 1px solid var(--pr-olive-border); box-shadow: 0 0 0 6px var(--pr-olive-dim); display: flex; align-items: center; justify-content: center; margin: 0 auto 20px; color: var(--pr-olive); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .decline-icon { width: 76px; height: 76px; border-radius: 50%; background: rgba(192,57,43,0.08); border: 1px solid rgba(192,57,43,0.25); display: flex; align-items: center; justify-content: center; margin: 0 auto 20px; color: #c0392b; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .success-heading { font-family: var(--font-pr-display); font-size: clamp(26px,4cqw,34px); font-style: italic; font-weight: 500; color: var(--pr-heading); margin-bottom: 14px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .decline-heading { font-family: var(--font-pr-display); font-size: clamp(24px,3.6cqw,30px); font-style: italic; font-weight: 500; color: #c0392b; margin-bottom: 14px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .confirmation-message,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .decline-message { font-family: var(--font-pr-body); font-size: 14px; line-height: 1.6; color: var(--pr-text); opacity: .85; margin-bottom: 20px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .confirmation-details { background: var(--pr-surface); border: 1px solid var(--pr-olive-border); border-radius: var(--pr-radius); padding: 22px 26px; display: flex; flex-direction: column; gap: 16px; text-align: left; margin: 0 auto 20px; max-width: 420px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .detail-item { display: flex; flex-direction: column; gap: 6px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .detail-item strong { font-family: var(--font-pr-body); font-size: 10px; letter-spacing: 2px; text-transform: uppercase; color: var(--pr-olive); font-weight: 500; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .names-list,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .events-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 4px; font-family: var(--font-pr-body); font-size: 14px; color: var(--pr-text); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .dietary-text { font-family: var(--font-pr-body); font-size: 14px; color: var(--pr-text); }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .edit-button { display: inline-block; margin-top: 4px; font-family: var(--font-pr-body); font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: var(--pr-heading); background: none; border: none; border-bottom: 1px solid var(--pr-sunset-border); padding-bottom: 3px; cursor: pointer; transition: color .3s, border-color .3s !important; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .edit-button:hover { color: var(--pr-sunset); border-color: var(--pr-sunset); }

@container (max-width: 600px) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .rsvp-response-buttons { grid-template-columns: 1fr; }
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .checkbox-group,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-rsvp .checkbox-group-grid { grid-template-columns: 1fr; }
}

/* ═══════════════ FOOTER ═══════════════ */
/* El cierre vuelve al material de la portada: seda bajo velo de champán, de modo
   que la invitación empieza y termina sobre la misma tela. La onda de Florentia se
   sustituye por la misma curva emplumada que usan las secciones protagonista. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-footer {
    position: relative;
    padding: clamp(56px, 7cqw, 88px) 24px clamp(34px, 4cqw, 50px);
    text-align: center;
    background-color: var(--pr-paper-feat);
    background-image:
        linear-gradient(rgba(var(--pr-veil-rgb),0.70), rgba(var(--pr-veil-rgb),0.76)),
        var(--pr-silk-mobile);
    background-size: cover;
    background-position: center;
}
@container archive (min-width: 768px) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-footer {
        background-image:
            linear-gradient(rgba(var(--pr-veil-rgb),0.70), rgba(var(--pr-veil-rgb),0.76)),
            var(--pr-silk);
    }
}
/* El papel del cuerpo se derrama sobre la seda en una curva orgánica */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-footer::before {
    content: ""; position: absolute; left: 0; right: 0; top: -1px;
    height: clamp(72px, 11cqw, 150px); z-index: 1; pointer-events: none;
    background: var(--pr-paper);
    -webkit-mask: radial-gradient(160% 100% at 54% -34%, #000 48%, rgba(0,0,0,0) 80%);
            mask: radial-gradient(160% 100% at 54% -34%, #000 48%, rgba(0,0,0,0) 80%);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-footer-inner { position: relative; z-index: 1; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-footer-inner { max-width: 780px; margin: 0 auto; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-footer-seal { position: relative; width: clamp(78px, 12cqw, 102px); aspect-ratio: 1; margin: 0 auto 16px; }
/* Monograma del footer: mismo color crema del intro */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-footer-seal .pr-seal-initials {
    font-family: var(--font-pr-name);
    font-weight: 400; font-style: normal;
    font-size: clamp(22px, 4.4cqw, 31px); letter-spacing: 1px;
    color: #5A4322;                                  /* bronce sobre el lacre champán */
    text-shadow: 0 1px 0 rgba(255,250,240,0.42);
    padding-bottom: 5%;
}
/* Nombres en Robelia, como en la portada (la caligrafía queda solo en el &) */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-footer-names {
    display: flex; flex-wrap: wrap; justify-content: center; align-items: baseline;
    column-gap: 0.34em; row-gap: 0;
    font-family: var(--font-pr-name); font-style: normal;
    font-size: clamp(26px, 3.4cqw, 42px); line-height: 1.14;
    letter-spacing: 0.02em; color: var(--pr-heading);
    text-shadow: var(--pr-foil);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-footer-names .pr-foot-name { white-space: nowrap; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-footer-names .pr-foot-amp {
    font-family: var(--font-pr-script);
    font-size: 0.72em; line-height: 1;
    color: var(--pr-sunset);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-footer-date {
    font-family: var(--font-pr-body); font-size: 12px; letter-spacing: 3px; text-transform: uppercase;
    color: var(--pr-ink-gold); margin-top: 10px;   /* AA: el oro daba 2.7:1 sobre el velo de seda */
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-footer-credit { font-family: var(--font-pr-body); font-size: 12px; color: var(--pr-text); opacity: 0.7; margin-top: 22px; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-footer-link { color: var(--pr-ink-gold); text-decoration: none; border-bottom: 1px solid var(--pr-sunset-border); }   /* AA: heading daba 4.1 sobre el velo */

/* ═══════════════ RESPONSIVE ═══════════════ */
@container (max-width: 600px) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-dc { grid-template-columns: 1fr; max-width: 380px; }
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cd-sep { display: none; }
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cd { gap: 4px; }
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-cd-unit { min-width: 0; flex: 1; }
    /* Footer: nombres apilados (primero / & / segundo) cuando no hay ancho */
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .pr-footer-names { flex-direction: column; align-items: center; }
}


/* ══════════════ VIDEO ENVELOPE INTRO (.vei-*) ══════════════ */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-stage {
    position: fixed; inset: 0; z-index: 10000;
    overflow: hidden;
    font-family: 'Jost', sans-serif;
    background: #F5EFE4;   /* pinta antes de que llegue el primer frame */
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-stage.vei-contained { position: absolute; z-index: 30; }

.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-media { position: absolute; inset: 0; z-index: 0; }
/* La caja del video la fija layout() (left/top/width/height); sin JS aún, cover */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-video {
    position: absolute; inset: 0; width: 100%; height: 100%;
    max-width: none;   /* el preflight de Tailwind (customizer) capa img,video a max-width:100% y aplastaba el video cuando el cover lo hace más ancho que el stage */
    object-fit: cover; object-position: center;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-video[style*="width"] { object-fit: fill; }
/* Relleno tras el video cuando no cubre el marco: color plano del papel del borde.
   (Se probó el póster desenfocado: a 25px los pétalos quedaban como manchas y a
   70px el promedio de las flores salía más oscuro que el papel; el plano empalma.) */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-backdrop { position: absolute; inset: 0; }
/* Bordes del video emplumados (5%) SOLO contra el relleno, por eje: el borde que
   coincide con la pantalla se queda nítido (al abrir, las flores llegan limpias) */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-fitted.vei-pad-x:not(.vei-pad-y) .vei-video,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-fitted.vei-pad-x:not(.vei-pad-y) .vei-poster,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-fitted.vei-pad-x:not(.vei-pad-y) .vei-static {
    -webkit-mask-image: linear-gradient(to right, transparent, #000 5%, #000 95%, transparent);
            mask-image: linear-gradient(to right, transparent, #000 5%, #000 95%, transparent);
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-fitted.vei-pad-y:not(.vei-pad-x) .vei-video,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-fitted.vei-pad-y:not(.vei-pad-x) .vei-poster,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-fitted.vei-pad-y:not(.vei-pad-x) .vei-static {
    -webkit-mask-image: linear-gradient(to bottom, transparent, #000 5%, #000 95%, transparent);
            mask-image: linear-gradient(to bottom, transparent, #000 5%, #000 95%, transparent);
}
/* Relleno en los dos ejes (escritorio con aire: el video 16:9 y la pantalla tienen
   casi la misma proporción): fundido en los cuatro bordes pero CORTO (3%), para que
   al abrir no se lea como viñeta */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-fitted.vei-pad-x.vei-pad-y .vei-video,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-fitted.vei-pad-x.vei-pad-y .vei-poster,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-fitted.vei-pad-x.vei-pad-y .vei-static {
    -webkit-mask-image: linear-gradient(to right, transparent, #000 3%, #000 97%, transparent),
                        linear-gradient(to bottom, transparent, #000 3%, #000 97%, transparent);
            mask-image: linear-gradient(to right, transparent, #000 3%, #000 97%, transparent),
                        linear-gradient(to bottom, transparent, #000 3%, #000 97%, transparent);
    -webkit-mask-composite: source-in;
            mask-composite: intersect;
}
/* iOS pinta un botón de play nativo sobre el video cuando bloquea el autoplay
   (Ahorro de Energía; Chrome iOS lo muestra, cae justo sobre el sello). El tap
   del sello es nuestro control: el del sistema se oculta. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-video::-webkit-media-controls,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-video::-webkit-media-controls-start-playback-button,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-video::-webkit-media-controls-overlay-play-button {
    display: none !important;
    -webkit-appearance: none !important;
    opacity: 0 !important;
}
/* Micro-crossfade al entrar la apertura: amortigua cualquier reencuadre mínimo
   entre el loop y la apertura cuando vienen de herramientas distintas */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-video-open { opacity: 0; transition: opacity .25s ease !important; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-video-open.is-live { opacity: 1; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-static { position: absolute; inset: 0; background-size: cover; background-position: center; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-static[style*="width"] { background-size: 100% 100%; }
/* Póster propio bajo los videos (mismo primer frame): da la cara cuando el
   autoplay está bloqueado y hay que esconder los <video> con su botón nativo */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-poster {
    position: absolute; inset: 0;
    background-size: cover; background-position: center;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-poster[style*="width"] { background-size: 100% 100%; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-poster-only .vei-video { opacity: 0 !important; }

.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-skip {
    position: absolute; top: clamp(16px, calc(var(--archive-vh, 1svh) * 3), 28px); right: clamp(16px, 3cqw, 28px); z-index: 5;
    background: rgba(255,253,248,0.55); border: 1px solid rgba(74, 64, 54, 0.38);
    color: #7A6A50; font-family: 'Jost', sans-serif;
    font-size: 11px; letter-spacing: 2.5px; text-transform: uppercase;
    padding: 7px 16px; border-radius: 999px; cursor: pointer;
    backdrop-filter: blur(4px); transition: background .25s ease, opacity .4s ease !important;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-skip:hover { background: rgba(74, 64, 54, 0.08); }


.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-seal {
    position: absolute; z-index: 4;
    border-radius: 50%; cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    -webkit-tap-highlight-color: transparent;
    animation: veiSealPulse 2.8s ease-in-out infinite !important;
    transition: opacity .3s ease !important;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-seal:focus-visible { outline: 2px solid #7A6A50; outline-offset: 4px; }
/* Etiqueta rectangular (sealMap con dw): la zona de tap es toda la etiqueta.
   Sin pulso de respiración: sobre una etiqueta cosida el latido se veía raro
   (el hint ya invita al tap); el pulso queda solo para sellos circulares. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-seal--rect { border-radius: 12px; animation: none !important; }
/* Zona de tap del nudo: invisible, solo captura el gesto */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-knot-tap { position: absolute; z-index: 4; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-stage.is-opening .vei-knot-tap { pointer-events: none; }

/* Host del monograma bordado (threadtext): la librería fija la ALTURA del host al
   bloque de la palabra y lo dibuja con aire de descendentes abajo, así que el
   centrado va por transform (top 50% + -40%: -50% óptico corregido por ese aire),
   no por insets. Laterales 8% para no besar el pespunte. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-mono-thread { position: absolute; left: 8%; right: 8%; top: 50%; transform: translateY(-40%); pointer-events: none; }
@keyframes veiSealPulse { 0%,100% { transform: scale(1); } 50% { transform: scale(1.045); } }

/* Monograma "grabado" en el lacre: tinta bronce con doble sombra de relieve.
   Tamaño = 38% del diámetro del sello (.vei-seal mide d x d px y es container). */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-seal { container-type: size; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-monogram {
    font-family: var(--vei-mono-font, 'Cormorant Garamond', 'Playfair Display', serif);
    font-weight: 400;
    font-size: 22px;        /* fallback sin container queries */
    font-size: 32cqh;
    color: #7A5B2E;
    letter-spacing: 1px;
    text-shadow: 0 1px 0 rgba(255, 248, 232, 0.55), 0 -1px 1px rgba(88, 62, 25, 0.5);
    mix-blend-mode: normal;
    line-height: 1;
    user-select: none;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-monogram i { font-size: .58em; opacity: .8; margin: 0 .06em; }
/* El sello desktop tiene el borde perlado proporcionalmente más grueso: medallón interior menor */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-stage[data-variant='desktop'] .vei-monogram { font-size: 17px; font-size: 21cqh; }

.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-hint {
    position: absolute; bottom: clamp(5%, calc(var(--archive-vh, 1svh) * 7), 10%); left: 50%; transform: translateX(-50%); z-index: 4;
    margin: 0; text-align: center; width: 90%;
    font-size: 12px; letter-spacing: 3px; text-transform: uppercase;
    color: #7A6A50;
    animation: veiHintFade 2.6s ease-in-out 1.2s infinite !important;
    transition: opacity .45s ease !important;
}
@keyframes veiHintFade { 0%,100% { opacity: 0.55; } 50% { opacity: 1; } }
/* Píldora translúcida tras el hint (opt-in): legible sobre flores o detalle */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-hint--pill {
    /* Centrado por márgenes y no por left:50% + transform: a un absoluto con
       width:auto el left:50% le deja solo media pantalla y partía en 3 líneas */
    left: 0; right: 0; transform: none; margin: 0 auto;
    width: max-content; max-width: min(90%, 480px);
    padding: 8px 18px; border-radius: 999px;
    background: rgba(255,253,248,0.55); border: 1px solid rgba(74, 64, 54, 0.38);
    backdrop-filter: blur(4px);
}

/* Apertura: los overlays HTML se retiran. El monograma espera y se funde según la
   plantilla (Perle: con el destello inicial; Jardin: se queda mientras el centro de
   la corona sigue vacío). */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-stage.is-opening .vei-seal {
    opacity: 0; animation: none !important; pointer-events: none;
    transition: opacity 300ms ease 50ms !important;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-stage[data-variant='desktop'].is-opening .vei-seal {
    transition: opacity 300ms ease 50ms !important;
}
/* El hint tiene una animación infinita sobre opacity (veiHintFade): hay que cortarla
   o gana siempre sobre el opacity:0 y el texto seguía a la vista durante la apertura */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-stage.is-opening .vei-hint { animation: none !important; opacity: 0; pointer-events: none; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-stage.is-opening .vei-skip { opacity: 0; pointer-events: none; }

/* Bloom final (fade sobre el tramo final del video de apertura) */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-bloom {
    position: absolute; inset: 0; z-index: 6; pointer-events: none;
    opacity: 0; background: radial-gradient(circle at 50% 52%, #FFFDF8 0%, #FBF6EA 45%, #F1E9D8 100%);
    transition: opacity .8s ease !important;
}
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-stage.vei-blooming .vei-bloom { opacity: 1; }

/* Salida del overlay completo */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-leave { transition: opacity .85s ease !important; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-leave-end { opacity: 0; }

@media (prefers-reduced-motion: reduce) {
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-seal,.archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-hint { animation: none !important; }
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-bloom { transition: opacity .2s ease !important; }
    .archive-sheet[data-archive="perle"][data-archive-locale="ru"] .vei-leave { transition: opacity .25s ease !important; }
}

/* Allow longer localized labels to wrap within the original layout. */
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] { -webkit-text-size-adjust: 100%; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] [class$='cal-dow'] { letter-spacing: 0; }
.archive-sheet[data-archive="perle"][data-archive-locale="ru"] [class*='guest-names'],.archive-sheet[data-archive="perle"][data-archive-locale="ru"] [class$='env-guests'] { overflow-wrap: anywhere; }
