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

        .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] {
            --color-primary: #1F2D48;
            --color-secondary: #E6E3DA;
            --color-accent: #9E753F;
            --color-background: #F8F4EB;
            --color-text: #2E3447;
            --color-heading: #1F2D48;

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

        .archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"],.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] { scrollbar-width: none; -ms-overflow-style: none; }
            .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"]::-webkit-scrollbar,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"]::-webkit-scrollbar { display: none; width: 0; height: 0; }
        
        .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] h1,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] h2,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] h3,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] h4,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] h5,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] h6 {
            font-family: var(--font-heading);
            color: var(--color-heading);
            line-height: 1.2;
        }

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

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

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

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

        /* Loading animation */
        .archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"] [x-cloak] {
            display: none !important;
        }

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

        /* Base reveal states - elementos ocultos por defecto */
        .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .reveal-fade-up,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .reveal-fade-down,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .reveal-fade-left,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .reveal-fade-right,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .reveal-scale,.archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"] .reveal-fade-up {
            transform: translateY(40px);
        }

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

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

        .archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"] .reveal-fade-left {
            transform: translateX(40px);
        }

        .archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"] .reveal-fade-right {
            transform: translateX(-40px);
        }

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

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

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

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

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

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

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

        .archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"] .reveal-fade-up,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .reveal-fade-down {
                transform: translateY(20px);
            }

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

            .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .reveal-fade-up.reveal-visible,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .reveal-fade-down.reveal-visible,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .reveal-fade-left.reveal-visible,.archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"] .reveal-fade-up,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .reveal-fade-down,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .reveal-fade-left,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .reveal-fade-right,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .reveal-scale,.archive-sheet[data-archive="zafiro"][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); }
        }
    

/* ══════════════════════════════════════════════════════════════
   ZAFIRO · sobre azul noche con lacre dorado, sobria y clásica · prefijo zf
   ══════════════════════════════════════════════════════════════ */

/* Misma combinación tipográfica que Madeleyne (florentia): Cormorant Garamond
   (display), Playfair Display (nombres), Sloop Script (acento) y Jost (cuerpo).
   Sloop se sirve del subset woff2 compartido en fonts/perle (31KB). */


/* El monograma del lacre usa la fuente de los nombres */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] { --vei-mono-font: 'Playfair Display', 'Cormorant Garamond', serif; }

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

    /* ── Tokens de paleta (de $colors) ── */
    --zf-sunset:       #1F2D48;
    --zf-sunset-dim:   rgba(31,45,72,0.10);
    --zf-sunset-soft:  rgba(31,45,72,0.16);
    --zf-sunset-border:rgba(31,45,72,0.30);
    --zf-cream:        #E6E3DA;
    --zf-olive:        #9E753F;
    --zf-olive-dim:    rgba(158,117,63,0.12);
    --zf-olive-soft:   rgba(158,117,63,0.20);
    --zf-olive-border: rgba(158,117,63,0.32);
    --zf-bg:           #F8F4EB;
    --zf-text:         #2E3447;
    --zf-heading:      #1F2D48;
    --zf-head-soft:    rgba(31,45,72,0.14);
    /* Superficies (tokenizadas para soportar paletas claras y oscuras) */
    --zf-paper:        #F4EFE5;
    --zf-paper-feat:   #EEE8DA;
    --zf-card:         #FDFBF6;
    --zf-surface:      #F1ECE0;
    --zf-keyline:      rgba(158, 117, 63, 0.32);
    --zf-btn-hover:    #141E33;
    --zf-btn-bg:       #1F2D48;      /* fondo de botón: bronce, blanco encima pasa AA */
    --zf-ink-gold:     #4A5270;    /* tinta bronce del texto pequeño informativo */
    --zf-on-accent:    #FFFFFF;
    --zf-frame:        #FFFFFF;
    --zf-ph-fill:      linear-gradient(160deg, #EAE4D4 0%, #DAD2BD 100%);
    --zf-amp:          rgba(158, 117, 63, 0.16);
    --zf-hero-bg:      #131F36;
    --zf-hero-ink:     #E4DFD0;
    --zf-hero-heading: #D2B680;
    --zf-hero-accent:  #F1ECDF;
    --zf-hero-line:    rgba(210, 182, 128, 0.55);
    /* Tinta LIMPIA en todo el cuerpo: sin relieve de foil (el brillo crema + sombra
       cálida de Perle era parte de lo que envejecía la página). Los tokens siguen
       existiendo porque portada y footer los redefinen sobre el papel zafiro. */
    --zf-foil:    none;
    --zf-foil-sm: none;
    --zf-gold:    #9E753F;
    --zf-ink-heading: #1F2D48;
    --zf-ink-text:    #2E3447;
    --zf-ink-label:   #4A5270;   /* oro viejo plano de filetes y acentos */
    --zf-veil-rgb: 244,239,229;
    /* Papeles: el del cuerpo (crema) y el del sobre (zafiro), mismas fibras */
    --zf-paper-tex:     url('/media/archive/nupcii.com/images/templates/zafiro/paper-crema.webp');
    --zf-navy-tex:     url('/media/archive/nupcii.com/images/templates/zafiro/paper-zafiro.webp');
    --zf-navy-paper:   #131F36;
    --zf-on-navy:      #F1ECDF;
    --zf-on-navy-gold: #D2B680;
    --zf-on-navy-name: #D2B680;
    --zf-on-navy-amp:  #F1ECDF;
    /* Piezas de papelería (lo que viene dentro del sobre) */
    --zf-lacre:   url('/media/archive/nupcii.com/images/templates/zafiro/lacre-zafiro.webp');
    --zf-card-img: url('/media/archive/nupcii.com/images/templates/zafiro/tarjeta-canto.webp');
    --zf-tex-size:      380px;   /* perilla: escala del grano (la tesela mide 600px) */

    /* ── Tokens estructurales (hardcoded) ── */
    --font-zf-display: 'Cormorant Garamond', 'Playfair Display', serif;
    --font-zf-name:    'Playfair Display', 'Cormorant Garamond', serif;  /* nombres del hero */
    --font-zf-script:  'Great Vibes', 'Great Vibes', cursive;     /* acento caligráfico */
    --font-zf-body:    'Jost', 'Montserrat', sans-serif;
    --zf-radius:       3px;
    --zf-maxw:         1080px;
    --zf-shadow:       0 24px 60px -28px rgba(61,46,32,0.45);
    --zf-shadow-sm:    0 12px 36px -20px rgba(61,46,32,0.35);

    /* El papel crema es UNO solo para toda la página y vive aquí, en el contenedor:
       las secciones claras son transparentes. Si cada sección pintara su propio
       fondo, taparía la sombra de la pieza de la sección anterior y se vería un
       corte recto (franja) en cada junta. */
    background-color: var(--zf-paper);
    background-image: var(--zf-paper-tex);
    background-size: var(--zf-tex-size);
    color: var(--zf-text);
    font-family: var(--font-zf-body);
    font-weight: 300;
    /* Suavizado en escala de grises (el que usa la app y por tanto el customizer):
       con el subpíxel por defecto, el texto claro sobre el zafiro se veía más grueso
       y "tosco" en la invitación real que en el preview (Andrés lo comparó). */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    line-height: 1.7;
    letter-spacing: 0.3px;
    overflow-x: hidden;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-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="zafiro"][data-archive-locale="ru"] .zf-wrap :where(h1, h2, h3) { margin: 0; font-weight: 400; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-wrap :where(p) { margin: 0; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-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="zafiro"][data-archive-locale="ru"] .zf-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="zafiro"][data-archive-locale="ru"] .zf-wrap .zf-rise {
    opacity: 0;
    transform: translateY(28px);
    animation: olRise 1s cubic-bezier(.2,.7,.2,1) both !important;
    animation-delay: var(--d, 0s) !important;
}
@keyframes olRise { 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="zafiro"][data-archive-locale="ru"].fl-intro-pending .zf-wrap .zf-rise { animation: none !important; }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"].fl-intro-done .zf-wrap .zf-rise {
        animation: olRise 1s cubic-bezier(.2,.7,.2,1) both !important;
        animation-delay: var(--d, 0s) !important;
    }
}
@media (prefers-reduced-motion: reduce) {
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-wrap .zf-rise { animation: none !important; opacity: 1; transform: none; }
}

.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-container {
    max-width: var(--zf-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="zafiro"][data-archive-locale="ru"] .zf-sec:has(.zf-gallery-host) .zf-container { padding-left: 12px; padding-right: 12px; }
}

/* ─────────── Secciones + transición tipo onda (wave) ─────────── */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-sec {
    padding: clamp(72px, 11cqw, 130px) 0;
    position: relative;
    z-index: 0;
}
/* Papel del cuerpo: UN SOLO papel crema continuo, con el grano del propio sobre del
   intro (tesela paper-crema, cuyo tono medio ES --zf-paper: sin escalón ni blend).
   Las secciones se separan por aire y filetes, no por bandas de textura. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-bg-bg,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-bg-cream { background: transparent; }

/* "Cinta": banda de imagen a ancho completo, muy horizontal, debajo de /guest */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ribbon {
    width: 100%;
    height: clamp(120px, 20cqw, 260px);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}
/* Secciones sobre el PAPEL AZUL del sobre (itinerario, regalos): una hoja zafiro
   apoyada sobre el papel crema, con el mismo lenguaje de la faja (filete de oro
   junto a cada canto, sombra de papel). Dentro, la tinta se invierte por tokens
   locales; las piezas de papel claro que van encima los restauran. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-wrap .zf-bg-navy {
    position: relative; z-index: 1; overflow: hidden;
    padding: clamp(96px, 13cqw, 160px) 0;
    background-color: var(--zf-navy-paper);
    background-image:
        radial-gradient(60% 40% at 50% 18%, rgba(255,248,222,0.07) 0%, rgba(255,248,222,0) 70%),
        var(--zf-navy-tex);
    background-size: auto, var(--zf-tex-size);
    box-shadow: 0 18px 34px -22px rgba(30,32,12,0.55), 0 -18px 34px -22px rgba(30,32,12,0.45);
    --zf-heading:  var(--zf-on-navy);
    --zf-text:     var(--zf-on-navy);
    --zf-ink-gold: var(--zf-on-navy-gold);
    --zf-gold:     #CDAE72;
    color: var(--zf-on-navy);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-bg-navy::before,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-bg-navy::after {
    content: ""; position: absolute; left: 0; right: 0; height: 1px; z-index: 1;
    background: #CDAE72; opacity: 0.85; pointer-events: none;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-bg-navy::before { top: 5px; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-bg-navy::after  { bottom: 5px; }
/* Piezas de papel claro sobre la hoja zafiro: recuperan la tinta oscura */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-bg-navy :is(.zf-tl-card, .zf-gift, .zf-rsvp) {
    --zf-heading:  var(--zf-ink-heading);
    --zf-text:     var(--zf-ink-text);
    --zf-ink-gold: var(--zf-ink-label);
    --zf-gold:     #9E753F;
    color: var(--zf-ink-text);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-container { z-index: 2; }

/* ─────────── Cabecera de sección ─────────── */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-head { text-align: center; margin-bottom: clamp(44px, 6cqw, 70px); }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-head-title {
    font-family: var(--font-zf-display);
    font-size: clamp(34px, 6cqw, 56px);
    font-style: italic;
    font-weight: 500;
    color: var(--zf-heading);
    line-height: 1.08;
    text-shadow: var(--zf-foil);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-head-sub {
    font-family: var(--font-zf-body);
    font-size: 12px;
    font-weight: 400;
    letter-spacing: 3.5px;
    text-transform: uppercase;
    color: var(--zf-ink-gold);   /* AA: en oro quedaba <3:1 sobre el papel */
    margin-top: 14px;
    text-shadow: var(--zf-foil-sm);
}
/* Separador ornamental: hairline que se desvanece hacia los lados + detalle central (hojita) */
/* Divisor de cabecera: UN filete corto de oro, plano. Nada de perlas ni rombos:
   en Zafiro el ornamento es la línea. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-divider {
    display: block;
    width: clamp(40px, 8cqw, 60px); height: 1px;
    margin: clamp(22px, calc(var(--archive-vh, 1svh) * 3.2), 32px) auto 0;
    background: var(--zf-gold); opacity: 0.75;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-divider-line,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-divider-mark { display: none; }

/* ─────────── Emblema (separador de capítulo) ───────────
   Filigrana en foil dorado con las iniciales de la pareja en su hueco central.
   El dibujo es una MÁSCARA (emblema.webp, solo alpha): el oro lo pinta el CSS, así
   toma el tono de cada papel (oro viejo sobre crema, oro claro sobre zafiro) y un
   brillo de foil muy leve. Lámina propia de Zafiro: dos ramas de laurel enfrentadas
   en línea fina. Hueco central ampliado en la máscara a 23% (+3% de fundido) para un monograma a 9.2cqw (pedido de Andrés). */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-emblem {
    position: relative; container-type: inline-size;
    width: clamp(260px, 66cqw, 440px); aspect-ratio: 1000 / 127;
    margin: 0 auto clamp(30px, 4.6cqw, 48px);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-emblem-art {
    position: absolute; inset: 0;
    background: linear-gradient(100deg, var(--zf-gold) 0%, color-mix(in srgb, var(--zf-gold) 78%, #FFF3CF) 38%, var(--zf-gold) 62%, color-mix(in srgb, var(--zf-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-bf63e0a08e6e) center / 100% 100% no-repeat;
            mask: var(--offline-mask-bf63e0a08e6e) center / 100% 100% no-repeat;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-emblem-mono {
    position: absolute; left: 50%; top: 50%; translate: -50% -52%;
    white-space: nowrap;
    font-family: var(--font-zf-name); font-weight: 400;
    font-size: 9.2cqw; letter-spacing: 0.06em; line-height: 1;
    color: var(--zf-gold);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-emblem-mono i { font-family: var(--font-zf-display); font-style: italic; font-size: 0.9em; margin: 0 0.08em; }


/* ═══════════════ HERO — "LA SOLAPA" ═══════════════
   La portada continúa el gesto del intro: la foto es la SOLAPA del sobre (borde en V
   recorrido por un filete de oro fino y plano) y el lacre real con el monograma
   cierra la punta. Papel zafiro casi liso; el oro aparece solo en el filete y el lacre.
   Móvil: solapa arriba (V hacia abajo), textos debajo. Desktop: solapa a la izquierda
   (V hacia la derecha), textos al lado. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero {
    --zf-flap-v: clamp(64px, 22cqw, 150px);     /* profundidad de la V (perilla) */
    --zf-flap-line: 1.5px;                        /* grosor del filete de oro */
    --zf-flap-gold: #CDAE72;                      /* oro plano del filete */
    position: relative;
    min-height: calc(var(--archive-vh, 1svh) * 100);
    display: flex; flex-direction: row;
    overflow: hidden; isolation: isolate;
    color: var(--zf-hero-ink);
    background: var(--zf-hero-bg);
}

/* ── Papel ── */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-silk {
    position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background-color: var(--zf-navy-paper);
    background-image: var(--zf-navy-tex);
    background-size: var(--zf-tex-size);
}
/* Luz de ventana suave (la del loop del intro): da profundidad sin textura */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-veil {
    position: absolute; inset: 0; z-index: 1; pointer-events: none;
    background:
        radial-gradient(80% 60% at 50% 62%, rgba(255,248,222,0.085) 0%, rgba(255,248,222,0) 60%),
        linear-gradient(180deg, rgba(14,16,6,0) 55%, rgba(14,16,6,0.20) 100%);
}

/* ── La solapa (foto) ──
   .zf-hero-photo-half lleva la sombra (drop-shadow: un clip-path se come las sombras
   del propio elemento); .zf-hero-flap es el oro recortado en V; .zf-hero-flap-photo
   es la foto con la MISMA V desplazada --zf-flap-line: lo que asoma es el filete. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-photo-half {
    position: relative; z-index: 2; flex: 1 1 56%;
    filter: drop-shadow(0 6px 14px rgba(10,12,4,0.42));
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-flap,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-flap-photo { position: absolute; inset: 0; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-flap {
    background: var(--zf-flap-gold);
    clip-path: polygon(0 0, calc(100% - var(--zf-flap-v)) 0, 100% 50%, calc(100% - var(--zf-flap-v)) 100%, 0 100%);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-flap-photo {
    right: var(--zf-flap-line);
    overflow: hidden;
    clip-path: polygon(0 0, calc(100% - var(--zf-flap-v)) 0, 100% 50%, calc(100% - var(--zf-flap-v)) 100%, 0 100%);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-photo-img {
    position: absolute; inset: 0; display: block;
    width: 100%; height: 100%; object-fit: cover;
    animation: olKen 36s ease-in-out infinite alternate !important;
}
@keyframes olKen { from { transform: scale(1.015); } to { transform: scale(1.075); } }


/* ── Panel de textos, sobre el papel ── */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-panel {
    position: relative; z-index: 2; flex: 0 0 44%;
    display: flex; align-items: center; justify-content: center;
    padding: clamp(56px, calc(var(--archive-vh, 1svh) * 7), 110px) clamp(26px, 3.6cqw, 64px) clamp(56px, calc(var(--archive-vh, 1svh) * 7), 110px) clamp(34px, 4cqw, 72px);
    text-align: center;
    /* Sobre zafiro la tinta clara lleva solo una sombra corta y oscura */
    --zf-foil:    0 1px 1.5px rgba(22,24,10,0.40);
    --zf-foil-sm: 0 1px 1px rgba(22,24,10,0.35);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-panel-inner { position: relative; z-index: 3; width: 100%; }

/* ── Textos: escala y aire ── */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-eyebrow {
    font-family: var(--font-zf-name);
    font-size: clamp(11px, 1.15cqw, 13.5px); font-weight: 500;
    letter-spacing: 0.3em; text-transform: uppercase; color: var(--zf-hero-accent);
    margin-bottom: clamp(14px, calc(var(--archive-vh, 1svh) * 2.4), 28px);
    line-height: 1.8;
}
/* Nombres en caligrafía Sloop, como en Madeleyne: la voz de la pareja */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-name {
    font-family: var(--font-zf-script); font-weight: 400; font-style: normal;
    font-size: clamp(49px, 5.5cqw, 114px); line-height: 1.0; color: var(--zf-hero-heading);
    text-shadow: none;   /* la sombra engordaba el trazo fino de Sloop sobre el zafiro */
    margin: 0;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-amp {
    display: block;
    font-family: var(--font-zf-script); font-weight: 400;
    font-size: clamp(26px, 2.9cqw, 48px); line-height: 1;
    color: var(--zf-hero-accent);
    margin: clamp(2px, calc(var(--archive-vh, 1svh) * 0.5), 8px) 0 clamp(0px, calc(var(--archive-vh, 1svh) * 0.3), 6px);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-meta {
    display: flex; align-items: center; justify-content: center; gap: 16px;
    margin-top: clamp(26px, calc(var(--archive-vh, 1svh) * 4), 44px);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hm-line { display: block; width: clamp(22px, 3cqw, 44px); height: 1px; background: var(--zf-hero-line); }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hm-text {
    font-family: var(--font-zf-body);
    font-size: clamp(11px, 1.15cqw, 13px); letter-spacing: 0.3em; text-transform: uppercase;
    color: var(--zf-hero-ink);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-place {
    font-family: var(--font-zf-display); font-style: italic;
    font-size: clamp(16px, 1.7cqw, 22px); color: var(--zf-hero-accent); margin-top: 12px;
}

/* ── Indicador de scroll, al pie del panel (solo escritorio) ── */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-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="zafiro"][data-archive-locale="ru"] .zf-scroll-track {
    position: relative; display: block; width: 1px; height: 52px;
    background: linear-gradient(var(--zf-hero-line), rgba(0,0,0,0));
    overflow: hidden;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-scroll-dot {
    position: absolute; left: -1.5px; top: 0;
    width: 4px; height: 4px; border-radius: 50%;
    background: var(--zf-hero-accent);
    animation: olScrollDot 2s ease-in-out infinite !important;
}
@keyframes olScrollDot {
    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="zafiro"][data-archive-locale="ru"] .zf-scroll-dot { animation: none !important; top: 46%; opacity: .85; }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-photo-img { animation: none !important; }
}

/* ── Móvil: la solapa arriba con la V hacia abajo, textos debajo ── */
@container (max-width: 899px) {
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero { flex-direction: column; min-height: calc(var(--archive-vh, 1svh) * 100); }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-photo-half { flex: 0 0 calc(var(--archive-vh, 1svh) * 54); }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-flap,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-flap-photo {
        clip-path: polygon(0 0, 100% 0, 100% calc(100% - var(--zf-flap-v)), 50% 100%, 0 calc(100% - var(--zf-flap-v)));
    }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-flap-photo { right: 0; bottom: var(--zf-flap-line); }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-panel {
        flex: 1 1 auto; align-items: flex-start;
        padding: clamp(20px, calc(var(--archive-vh, 1svh) * 3.2), 34px) 22px clamp(40px, calc(var(--archive-vh, 1svh) * 6), 64px);
    }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-name { font-size: clamp(43px, 12.6cqw, 94px); }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-scroll { display: none; }
}

/* ═══════════════ COUNTDOWN ═══════════════
   Toda la sección sobre el papel claro (emblema, título y subtítulo en tinta zafiro,
   como el resto de cabeceras) y cada cifra en SU pieza de cartulina zafiro, lado a
   lado: el patrón de las otras plantillas de la colección, con el material de Zafiro
   (la pieza real del sobre, en 9-slice). Se descartaron la faja a sangre con el
   título fuera (parecían dos secciones) y con el título dentro (el emblema quedaba
   apartado). */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cd-sec::after { display: none; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cd-band { position: relative; }   /* agrupa cabecera + cifras; sin fondo propio */

.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cd {
    display: flex; align-items: stretch; justify-content: center;
    gap: clamp(8px, 2.4cqw, 22px); flex-wrap: nowrap;
}
/* Cada cifra en su PLACA: cartulina zafiro de esquinas recortadas (la forma de las
   etiquetas del código de vestimenta, en las cuatro esquinas), con canto dorado y un
   filete interior de oro. Fotografía real; contenido acotado (cifra + rótulo), así
   que la pieza va entera a proporción fija, sin 9-slice. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cd-unit {
    position: relative; flex: 0 1 clamp(72px, 21.5cqw, 150px); min-width: 0;
    aspect-ratio: 420 / 661;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    background: url('/media/archive/nupcii.com/images/templates/zafiro/placa-cifra.webp') center / 100% 100% no-repeat;
    filter: drop-shadow(0 16px 18px rgba(30,32,12,0.26)) drop-shadow(0 3px 5px rgba(30,32,12,0.20));
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cd-num {
    font-family: var(--font-zf-display);
    font-size: clamp(34px, 9.4cqw, 80px);
    font-weight: 500;
    line-height: 0.92;
    color: var(--zf-on-navy);
    font-variant-numeric: lining-nums tabular-nums;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cd-lbl {
    font-family: var(--font-zf-body);
    font-size: clamp(8.5px, 2.4cqw, 10.5px); font-weight: 400;
    letter-spacing: 0.26em; text-transform: uppercase;
    color: var(--zf-on-navy-gold);
    margin-top: clamp(10px, 2.4cqw, 16px);
    padding-left: 0.26em;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cd-sep { display: none; }

/* ═══════════════ LA FECHA: tarjeta + sobre ═══════════════
   Dos piezas del juego: el calendario impreso en una tarjeta de algodón con canto
   dorado (fotografía real, sombra en CSS) y la foto de la fecha a medio sacar de un
   sobre zafiro abierto con forro de oro. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-date {
    display: flex; align-items: center; justify-content: center;
    gap: clamp(36px, 7cqw, 96px); flex-wrap: wrap;
}
/* Countdown → calendario → dedicatoria → primera foto van seguidos, sin cabeceras
   propias entre ellos: menos aire que entre capítulos. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cd-sec .zf-date { margin-top: clamp(40px, 7cqw, 70px); }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cd-sec { padding-bottom: clamp(36px, 6cqw, 70px); }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-sec { padding-top: clamp(20px, 4cqw, 48px); padding-bottom: clamp(36px, 6cqw, 70px); }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-date-sec { padding-top: clamp(20px, 4cqw, 48px); }
/* Calendario COMPACTO: la tarjeta de canto dorado en 9-slice, ceñida a su contenido
   (antes iba a proporción fija y dejaba mucho papel en blanco). */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cal {
    position: relative;
    width: min(280px, 78%);
    padding: clamp(16px, 2.4cqw, 22px) clamp(10px, 1.8cqw, 16px) clamp(14px, 2cqw, 18px);
    border: 12px solid transparent;
    border-image: var(--zf-card-img) 24 fill / 12px stretch;
    background-color: #F4F0E7;   /* bajo el 9-slice: tapa la costura de subpíxel */
    filter: drop-shadow(0 20px 22px rgba(40,42,20,0.20)) drop-shadow(0 3px 5px rgba(40,42,20,0.14));
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cal-month {
    font-family: var(--font-zf-display); font-style: italic; font-weight: 400;
    font-size: clamp(21px, 2.6cqw, 26px); line-height: 1.1;
    color: var(--zf-heading); text-align: center; text-transform: capitalize;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cal-grid {
    display: grid; grid-template-columns: repeat(7, 1fr);
    margin-top: clamp(10px, 1.4cqw, 14px);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cal-dow {
    font-family: var(--font-zf-body);
    font-size: 8.5px; font-weight: 500; letter-spacing: 0.16em;
    text-transform: uppercase; color: var(--zf-ink-gold);
    text-align: center; padding-bottom: 7px;
    border-bottom: 1px solid var(--zf-keyline);
    margin-bottom: 8px;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cal-day {
    position: relative;
    font-family: var(--font-zf-body); font-size: 12px;
    color: var(--zf-text); text-align: center;
    padding: 5px 0; z-index: 1;
    font-variant-numeric: tabular-nums;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cal-day.is-out { opacity: 0.22; }
/* El día de la boda lo sella el lacre real, en miniatura */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cal-day.is-day { color: #452E0C; font-weight: 600; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cal-day.is-day::before {
    content: ""; position: absolute; top: 50%; left: 50%;
    width: 40px; height: 40px;
    transform: translate(-50%, -52%); z-index: -1;
    background: var(--zf-lacre) center / contain no-repeat;
    filter: drop-shadow(0 2px 3px rgba(40,30,8,0.45));
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-cal-weekday {
    font-family: var(--font-zf-body);
    font-size: 9.5px; letter-spacing: 0.34em; text-transform: uppercase;
    color: var(--zf-ink-gold); text-align: center;
    margin-top: clamp(8px, 1.2cqw, 12px);
}

/* La foto de la fecha en su BOLSILLO de cartulina zafiro (fotografía real, con la
   rama de olivo ya apoyada encima). Tres capas: fondo (pieza entera, con su tarjeta
   marfil de respaldo), la foto, y el frente del bolsillo + rama (la misma pieza con
   la zona marfil transparente, conservando la sombra del canto). La foto es más
   alta que el bolsillo y asoma por arriba: de ahí el margin-top de la figura.
   Lámina de Zafiro v3 (proporciones de Oliva: casi cuadrada, curva honda, ramita de
   laurel en oro abajo a la derecha). Medido en el asset: marfil de 5.8% a 92.5% del
   ancho; fondo de la curva al 52.1% del alto. La foto tapa el marfil por completo. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-env {
    position: relative; margin: 0;
    width: min(350px, 86%); aspect-ratio: 971 / 1086;
    margin-top: min(150px, 40%);
    filter: drop-shadow(0 26px 30px rgba(8,12,24,0.30)) drop-shadow(0 3px 6px rgba(8,12,24,0.20));
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-env-back,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-env-front {
    position: absolute; inset: 0; display: block; width: 100%; height: 100%;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-env-front { z-index: 2; pointer-events: none; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-env-photo {
    position: absolute; z-index: 1;
    left: 5.5%; width: 87.5%; bottom: 40%;
    aspect-ratio: 4 / 5;
    background-size: cover; background-position: center 30%;
    box-shadow: 0 3px 8px -2px rgba(40,30,8,0.35);
}
/* Iniciales de la pareja en oro, abajo a la izquierda del bolsillo (estampado) */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-env-mono {
    position: absolute; z-index: 3; left: 9%; bottom: 8%;
    font-family: var(--font-zf-name); font-weight: 400;
    font-size: clamp(15px, 2cqw, 19px); letter-spacing: 0.08em; line-height: 1;
    color: #CDAE72; opacity: 0.92;
    text-shadow: 0 1px 1px rgba(16,18,6,0.5);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-env-mono i { font-family: var(--font-zf-display); font-style: italic; font-weight: 400; margin: 0 0.12em; }
@container (max-width: 620px) {
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-date { gap: clamp(44px, 11cqw, 60px); }
}

/* ═══════════════ INVITACIÓN DEDICADA — "EL SOBRE ROTULADO" ═══════════════
   En una invitación física el nombre del invitado va escrito en el SOBRE. Aquí la
   dedicatoria es el frente de un sobre zafiro (fotografía real, en 9-slice porque el
   contenido es de largo variable), rotulado en caligrafía crema, con las iniciales
   de la pareja en foil dorado donde iría la estampilla. Sin lacre: cierra por detrás. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-dedicated {
    position: relative;
    max-width: 640px; margin: 0 auto; text-align: center;
    padding: clamp(46px, 7cqw, 76px) clamp(18px, 5cqw, 62px) clamp(40px, 6cqw, 66px);
    border: 14px solid transparent;
    border-image: url('/media/archive/nupcii.com/images/templates/zafiro/sobre-frente.webp') 28 fill / 14px stretch;
    background: #3F4227 border-box;   /* bajo el 9-slice: tapa la costura de subpíxel borde/centro */
    filter: drop-shadow(0 26px 28px rgba(30,32,12,0.30)) drop-shadow(0 3px 6px rgba(30,32,12,0.22));
    /* Tinta invertida: crema y oro claro sobre el zafiro */
    --zf-heading:  var(--zf-on-navy);
    --zf-text:     var(--zf-on-navy);
    --zf-ink-gold: var(--zf-on-navy-gold);
    --zf-gold:     #CDAE72;
    color: var(--zf-on-navy);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-dedicated > * { position: relative; z-index: 1; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-stamp {
    position: absolute; z-index: 2;
    top: clamp(6px, 1.6cqw, 14px); right: clamp(8px, 2cqw, 18px);
    font-family: var(--font-zf-name); font-weight: 400;
    font-size: clamp(13px, 1.8cqw, 16px); letter-spacing: 0.08em; line-height: 1;
    color: #CDAE72; opacity: 0.92;
    text-shadow: 0 1px 1px rgba(16,18,6,0.5);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-stamp i { font-family: var(--font-zf-display); font-style: italic; margin: 0 0.12em; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-eyebrow {
    font-family: var(--font-zf-name);
    font-size: 12px; font-weight: 400; letter-spacing: 0.3em; text-transform: uppercase;
    color: var(--zf-ink-gold);
    margin: 0 0 clamp(14px, calc(var(--archive-vh, 1svh) * 2.2), 24px);
    padding-left: 0.3em;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-names { display: flex; flex-direction: column; align-items: center; gap: 0; }
/* Nombre del invitado en caligrafía, como en Madeleyne (momento de reconocimiento).
   1.35 de interlínea: la Sloop tiene ascendentes/descendentes muy largos. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-name {
    font-family: var(--font-zf-script); font-weight: 400;
    font-size: clamp(43px, 7cqw, 88px); line-height: 1.35;
    color: var(--zf-on-navy-name);
}
/* Nombres largos (varios invitados o tratamientos extensos): cuerpo menor */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-name--compact { font-size: clamp(35px, 4.8cqw, 60px); }
/* Entre dos nombres (pareja), "&" en la itálica de la display; con 3+, un filete */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-amp {
    font-family: var(--font-zf-script);
    font-size: clamp(24px, 3.4cqw, 42px); line-height: 1;
    color: var(--zf-on-navy-amp);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-sep {
    display: block; width: clamp(20px, 2.6cqw, 30px); height: 1px;
    background: var(--zf-gold); opacity: 0.6;
    margin: clamp(8px, 1.2cqw, 14px) auto;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-meta {
    font-family: var(--font-zf-name);
    font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; line-height: 1.9;
    color: var(--zf-ink-gold); margin-top: 14px;
}
/* Cupos ("4 personas" / "+3 acompañantes"): cifra en itálica + rótulo, sin caja */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-count {
    display: inline-flex; align-items: baseline; gap: 9px;
    margin: 16px auto 0;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-count-n {
    font-family: var(--font-zf-display); font-style: italic; font-weight: 600;
    font-size: clamp(24px, 3.2cqw, 30px); line-height: 1; color: var(--zf-heading);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-count-l {
    font-family: var(--font-zf-name); font-weight: 500;
    font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--zf-ink-gold);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-rule { display: block; width: clamp(40px, 8cqw, 60px); height: 1px; background: var(--zf-gold); opacity: 0.75; margin: clamp(24px, calc(var(--archive-vh, 1svh) * 3.2), 34px) auto; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-msg {
    font-family: var(--font-zf-display); font-style: italic;
    font-size: clamp(18px, 2.3cqw, 23px); line-height: 1.6;
    color: var(--zf-text); max-width: 30ch; margin: 0 auto;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-sec::after { display: none; }

/* ═══════════════ ITINERARIO — "LAS TARJETAS DEL DÍA" ═══════════════
   Sobre la hoja zafiro: cada momento del día es una tarjeta de algodón con canto
   dorado (la pieza real, en 9-slice), unidas por un hilo de oro; al lado, la foto
   impresa con la rama de olivo apoyada en su esquina. */


/* ── Rejilla: retrato + columna de tarjetas ── */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl {
    display: grid; grid-template-columns: 1fr;
    gap: clamp(44px, 6cqw, 60px);
    max-width: 1020px; margin: 0 auto;
    align-items: start;
}
/* En móvil manda la información: las tarjetas van primero y la foto cierra. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-photo { order: 2; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-cards { order: 1; }
@container (min-width: 900px) {
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl { grid-template-columns: minmax(260px, 380px) 1fr; gap: clamp(56px, 7cqw, 90px); align-items: center; }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-photo,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-cards { order: 0; }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl--single .zf-tl-cards { align-self: center; }
    /* Sin retrato: una sola columna centrada a ancho de lectura */
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl--nophoto { grid-template-columns: 1fr; max-width: 700px; }
}

/* ── La foto impresa: borde marfil fino, recta, con la rama de olivo en su esquina ── */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-photo {
    position: relative; margin: 0 auto;
    width: min(100%, 420px);
    padding: clamp(6px, 0.8cqw, 9px);
    background: #FBF8F1;
    box-shadow: 0 30px 50px -26px rgba(10,12,4,0.65), 0 4px 12px -6px rgba(10,12,4,0.4);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-photo-img { display: block; width: 100%; height: auto; }
@container (min-width: 900px) {
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-photo { aspect-ratio: 3 / 4; }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-photo-img { height: 100%; object-fit: cover; }
}
/* Ramita de laurel en oro: sube en diagonal por la esquina inferior DERECHA de la
   foto (tallo abajo-izquierda, puntas arriba-derecha, saliéndose un poco). */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-photo::after {
    content: ""; position: absolute; z-index: 2; pointer-events: none;
    width: 50%; aspect-ratio: 640 / 757;
    right: -8%; bottom: -10%;
    rotate: 4deg;
    background: url('/media/archive/nupcii.com/images/templates/zafiro/laurel-rama.webp') center / contain no-repeat;
    filter: drop-shadow(2px 5px 5px rgba(6,8,2,0.45));
}

/* ── Columna de tarjetas + hilo de oro ── */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-cards {
    position: relative;
    display: flex; flex-direction: column;
    gap: clamp(26px, 3.6cqw, 40px);
    padding-left: clamp(26px, 3.6cqw, 40px);   /* carril del hilo */
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-track {
    position: absolute; top: 8%; bottom: 8%;
    left: clamp(5px, 0.8cqw, 9px);
    width: 1px; background: #CDAE72; opacity: 0.6;
}

.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-card {
    position: relative;
    border: 12px solid transparent;
    border-image: var(--zf-card-img) 24 fill / 12px stretch;
    background-color: #F4F0E7;   /* bajo el 9-slice: tapa la costura de subpíxel entre borde y centro */
    filter: drop-shadow(0 20px 22px rgba(8,10,2,0.42)) drop-shadow(0 3px 5px rgba(8,10,2,0.3));
    padding: clamp(20px, 2.8cqw, 34px) clamp(14px, 2.4cqw, 30px);
    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(14px, 1.8cqw, 20px);
    align-items: center;
}
@container (min-width: 900px) {
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-card {
        grid-template-areas:
            "time vrule label"
            "time vrule info";
        row-gap: clamp(6px, 0.8cqw, 10px);
    }
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-card > * { position: relative; z-index: 1; }

/* Nudo del hilo: un punto de oro a la altura de cada tarjeta (sin iconos) */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-medal {
    position: absolute; z-index: 2;
    left: calc(-12px - clamp(26px, 3.6cqw, 40px) + clamp(5px, 0.8cqw, 9px) - 4px); top: 50%;
    translate: 0 -50%;
    width: 9px; height: 9px; border-radius: 50%;
    background: #CDAE72;
    box-shadow: 0 0 0 4px var(--zf-navy-paper), 0 0 0 5px rgba(205,174,114,0.6);
}

.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-label {
    grid-area: label;
    display: flex; align-items: center; gap: clamp(10px, 1.4cqw, 14px);
    font-family: var(--font-zf-body);
    font-size: clamp(10px, 1.15cqw, 11.5px); font-weight: 400;
    letter-spacing: 0.34em; text-transform: uppercase;
    color: var(--zf-ink-gold);
}
/* Iconos del día en foil dorado (capilla / brindis): línea fina estampada junto al
   rótulo. Son MÁSCARAS (solo alpha), el oro lo pinta el CSS igual que en el emblema. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-ico {
    flex: none; display: block;
    height: clamp(34px, 4.2cqw, 44px); aspect-ratio: 344 / 457;
    background: linear-gradient(100deg, var(--zf-gold) 0%, color-mix(in srgb, var(--zf-gold) 78%, #FFF3CF) 40%, var(--zf-gold) 70%, color-mix(in srgb, var(--zf-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-715dd75126ce) center / contain no-repeat;
            mask: var(--offline-mask-715dd75126ce) center / contain no-repeat;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-ico--glasses {
    height: clamp(28px, 3.5cqw, 36px); aspect-ratio: 396 / 362;
    -webkit-mask-image: var(--offline-mask-6e6f83d73e7c);
            mask-image: var(--offline-mask-6e6f83d73e7c);
}
/* Variante neutra (anillos / pastel), misma lámina de foil */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-ico--rings {
    height: clamp(30px, 3.7cqw, 38px); aspect-ratio: 286 / 240;
    -webkit-mask-image: var(--offline-mask-6e48f6940d47);
            mask-image: var(--offline-mask-6e48f6940d47);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-ico--cake {
    height: clamp(34px, 4.2cqw, 44px); aspect-ratio: 182 / 240;
    -webkit-mask-image: var(--offline-mask-e067babbc356);
            mask-image: var(--offline-mask-e067babbc356);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-time {
    grid-area: time;
    display: flex; align-items: baseline; gap: 5px;
    justify-self: start;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-h {
    font-family: var(--font-zf-display); font-weight: 400;
    font-size: clamp(34px, 4.4cqw, 48px); line-height: 1;
    color: var(--zf-heading);
    font-variant-numeric: lining-nums tabular-nums;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-ampm {
    font-family: var(--font-zf-body);
    font-size: clamp(9px, 1.1cqw, 11px); font-weight: 500; letter-spacing: 0.18em;
    color: var(--zf-ink-gold);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-vrule {
    grid-area: vrule; align-self: stretch;
    width: 1px; background: var(--zf-gold); opacity: 0.5;
}
@container (min-width: 900px) {
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-vrule { grid-row: 1 / 3; }
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-info { grid-area: info; min-width: 0; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-venue {
    font-family: var(--font-zf-display); font-weight: 500;
    font-size: clamp(21px, 2.8cqw, 30px); line-height: 1.16;
    color: var(--zf-heading);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-addr {
    display: flex; align-items: center; gap: 7px;
    font-family: var(--font-zf-body); font-size: clamp(12.5px, 1.4cqw, 14px);
    color: var(--zf-text); opacity: 0.85; margin-top: 8px;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-pin { flex: none; width: 15px; height: 15px; color: var(--zf-gold); }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-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(--zf-keyline);
    font-family: var(--font-zf-body); font-size: clamp(10px, 1.15cqw, 11.5px);
    font-weight: 500; letter-spacing: 0.22em; text-transform: uppercase;
    text-decoration: none; color: var(--zf-heading);
    transition: opacity .3s ease !important;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-map span { flex: none; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-arrow { flex: 1; min-width: 26px; max-width: 46px; height: 8px; color: var(--zf-gold); }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-tl-map:hover { opacity: 0.7; }


/* ═══════════════ GALERÍA ═══════════════ */
/* Puente de variables para los layouts de galería compartidos (incl. Polaroid):
   look premium → sin inclinación + controles sutiles en zafiro (no el coral de la paleta). */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-gallery-host {
    position: relative;
    max-width: 1100px; margin: 0 auto;
    --gallery-primary: var(--zf-olive);
    --gallery-accent:  var(--zf-olive);
    --gallery-text:    var(--zf-text);
    --gallery-heading: var(--zf-heading);
    --gallery-font-script: var(--font-zf-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 --zf-text claro de los temas joya quedaba invisible). Sobreescribible por
       paleta vía --zf-polaroid-ink si alguna quisiera otro tono. */
    --gallery-polaroid-text: var(--zf-polaroid-ink, #34302a);
}

/* ═══════════════ CÓDIGO DE VESTIMENTA — "LAS TARJETAS DE LAUREL" ═══════════════
   Dos tarjetas marfil con filete de oro interior y una corona abierta de laurel en
   oro en la cabecera. La tarjeta y el filete se dibujan por CSS (crecen con el texto
   sin costuras); el laurel es la única pieza: máscara foil recortada de la lámina
   propia de Zafiro (`laurel-cabecera.webp`, solo alpha, el oro lo pinta el CSS). */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-dc {
    display: grid; grid-template-columns: repeat(2, 1fr);
    gap: clamp(22px, 5cqw, 64px);
    max-width: 700px; margin: 0 auto; align-items: stretch;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-dc-card {
    --tag-head: 25cqw;          /* alto reservado para el laurel */
    position: relative; container-type: inline-size;
    text-align: center;
    padding: 0 10% clamp(26px, 12cqw, 44px);
    background: var(--zf-card);
    box-shadow: 0 22px 24px rgba(40,42,20,0.16), 0 3px 5px rgba(40,42,20,0.12);
}
/* Filete interior de oro. Va en un pseudo HIJO y no como outline del propio
   elemento: las unidades cqw de un contenedor aplicadas a sí mismo se resuelven
   contra el contenedor PADRE (en escritorio el filete se metía 45px). */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-dc-card::after {
    content: ""; position: absolute; z-index: 0; inset: 3.5cqw;
    border: 1px solid color-mix(in srgb, var(--zf-gold) 78%, transparent);
    pointer-events: none;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-dc-card::before {
    content: ""; position: absolute; z-index: 1; left: 50%; top: 9cqw; translate: -50% 0;
    width: 38cqw; aspect-ratio: 480 / 176;
    background: linear-gradient(100deg, var(--zf-gold) 0%, color-mix(in srgb, var(--zf-gold) 78%, #FFF3CF) 40%, var(--zf-gold) 70%, color-mix(in srgb, var(--zf-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-3b7c7a834507) center / contain no-repeat;
            mask: var(--offline-mask-3b7c7a834507) center / contain no-repeat;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-dc-card > * { position: relative; z-index: 2; }

/* Icono en foil dorado bajo el laurel (máscara, como capilla y brindis) */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-dc-icon {
    display: block; margin: var(--tag-head) auto clamp(12px, 5cqw, 20px);
    height: clamp(70px, 30cqw, 104px); aspect-ratio: 160 / 300;
    background: linear-gradient(100deg, var(--zf-gold) 0%, color-mix(in srgb, var(--zf-gold) 78%, #FFF3CF) 40%, var(--zf-gold) 70%, color-mix(in srgb, var(--zf-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-0704476cc976) center / contain no-repeat;
            mask: var(--offline-mask-0704476cc976) center / contain no-repeat;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-dc-icon--suit {
    aspect-ratio: 190 / 300;
    -webkit-mask-image: var(--offline-mask-1ee6b556c298);
            mask-image: var(--offline-mask-1ee6b556c298);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-dc-name {
    font-family: var(--font-zf-name); font-weight: 500;
    font-size: 11.5px; letter-spacing: 0.3em; text-transform: uppercase;
    color: var(--zf-ink-gold);
    padding-left: 0.3em; margin-bottom: 8px;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-dc-code { font-family: var(--font-zf-display); font-style: italic; font-size: clamp(28px, 11cqw, 42px); color: var(--zf-heading); line-height: 1.12; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-dc .zf-divider { margin: clamp(14px, 5cqw, 22px) auto clamp(12px, 4.4cqw, 18px); }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-dc-notes { font-family: var(--font-zf-body); font-size: 14.5px; line-height: 1.6; color: var(--zf-text); opacity: 0.85; }

/* ═══════════════ REGALOS ═══════════════
   La sección tranquila: sobre la hoja zafiro, una tarjeta de canto dorado (la pieza
   real, en 9-slice: la lista de deseos puede ser larga) con el icono del tipo de
   regalo estampado en foil como protagonista. Sin objetos nuevos. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] #gifts { padding-top: clamp(84px, 11cqw, 132px); padding-bottom: clamp(92px, 12cqw, 148px); }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-gift {
    position: relative;
    max-width: 580px; margin: 0 auto; text-align: center;
    padding: clamp(40px, 6cqw, 66px) clamp(20px, 5cqw, 58px) clamp(40px, 6cqw, 64px);
    border: 12px solid transparent;
    border-image: var(--zf-card-img) 24 fill / 12px stretch;
    background-color: #F4F0E7;   /* bajo el 9-slice: tapa la costura de subpíxel */
    filter: drop-shadow(0 22px 24px rgba(8,10,2,0.42)) drop-shadow(0 3px 5px rgba(8,10,2,0.3));
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-gift > * { position: relative; z-index: 1; }
/* Icono del tipo de regalo en foil dorado (máscara): sobre / caja / corazón */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-gift-icon {
    display: block; margin: 0 auto clamp(18px, calc(var(--archive-vh, 1svh) * 2.8), 26px);
    height: clamp(58px, 9cqw, 76px); aspect-ratio: 288 / 194;
    background: linear-gradient(100deg, var(--zf-gold) 0%, color-mix(in srgb, var(--zf-gold) 78%, #FFF3CF) 40%, var(--zf-gold) 70%, color-mix(in srgb, var(--zf-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-e4ce9c747522) center / contain no-repeat;
            mask: var(--offline-mask-e4ce9c747522) center / contain no-repeat;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-gift-icon--regalo {
    height: clamp(68px, 10.5cqw, 88px); aspect-ratio: 258 / 274;
    -webkit-mask-image: var(--offline-mask-d5e9c3a6bebd); mask-image: var(--offline-mask-d5e9c3a6bebd);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-gift-icon--corazon {
    height: clamp(58px, 9cqw, 76px); aspect-ratio: 255 / 229;
    -webkit-mask-image: var(--offline-mask-f4cbff82256d); mask-image: var(--offline-mask-f4cbff82256d);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-gift-title { font-family: var(--font-zf-display); font-style: italic; font-size: clamp(28px, 4.4cqw, 42px); color: var(--zf-heading); margin-bottom: 16px; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-gift-text { font-family: var(--font-zf-display); font-size: clamp(17px, 2.4cqw, 21px); line-height: 1.6; color: var(--zf-text); }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-gift-list { list-style: none; padding: 0; margin: 24px 0 0; display: flex; flex-direction: column; gap: 12px; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-gift-list li {
    font-family: var(--font-zf-body); font-size: 15px; color: var(--zf-text);
    padding-bottom: 12px; border-bottom: 1px solid color-mix(in srgb, var(--zf-gold) 38%, transparent);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-gift-list li:last-child { border-bottom: none; padding-bottom: 0; }

/* ═══════════════ INFORMACIÓN ADICIONAL — tarjetas de canto dorado ═══════════════
   Cada dato en su tarjeta de algodón con canto dorado (la misma pieza real del
   itinerario, en 9-slice), con el icono en foil, título en itálica y texto en tinta
   oscura: texto de lectura sobre papel claro. Apiladas en móvil; lado a lado y del
   mismo alto en pantallas anchas. (Descartadas: cartulina zafiro, por legibilidad, y
   la versión impresa sin tarjeta, que Andrés prefirió con tarjeta.) */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info {
    display: flex; flex-direction: column; align-items: center;
    gap: clamp(18px, 4cqw, 26px);
    max-width: 1040px; margin: 0 auto;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-card {
    position: relative; text-align: center;
    width: 100%; max-width: 420px;
    padding: clamp(26px, 5cqw, 36px) clamp(12px, 3cqw, 26px) clamp(24px, 4.6cqw, 34px);
    border: 12px solid transparent;
    border-image: var(--zf-card-img) 24 fill / 12px stretch;
    background-color: #F4F0E7;   /* bajo el 9-slice: tapa la costura de subpíxel */
    filter: drop-shadow(0 22px 24px rgba(40,42,20,0.20)) drop-shadow(0 3px 5px rgba(40,42,20,0.15));
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-card > * { position: relative; z-index: 1; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-icon {
    display: block; margin: 0 auto clamp(16px, 2.4cqw, 22px);
    height: clamp(52px, 6.4cqw, 62px); aspect-ratio: 318 / 196;
    background: linear-gradient(100deg, var(--zf-gold) 0%, color-mix(in srgb, var(--zf-gold) 78%, #FFF3CF) 40%, var(--zf-gold) 70%, color-mix(in srgb, var(--zf-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-f85566549058) center / contain no-repeat;
            mask: var(--offline-mask-f85566549058) center / contain no-repeat;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-icon--carro {
    height: clamp(46px, 5.6cqw, 54px); aspect-ratio: 458 / 173;
    -webkit-mask-image: var(--offline-mask-34351e96b6a2); mask-image: var(--offline-mask-34351e96b6a2);
}
/* Fachada de hotel (Alojamiento): línea fina como el coche, misma caja de alto que la nota */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-icon--hotel {
    height: clamp(52px, 6.4cqw, 62px); aspect-ratio: 285 / 196;
    -webkit-mask-image: var(--offline-mask-c2714443d67c); mask-image: var(--offline-mask-c2714443d67c);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-icon--globos {
    height: clamp(66px, 8cqw, 78px); aspect-ratio: 252 / 349;
    -webkit-mask-image: var(--offline-mask-3727bf9db0c6); mask-image: var(--offline-mask-3727bf9db0c6);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-title { font-family: var(--font-zf-display); font-style: italic; font-size: clamp(24px, 3cqw, 30px); color: var(--zf-heading); margin-bottom: 10px; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-text { font-family: var(--font-zf-body); font-size: 15px; line-height: 1.65; color: var(--zf-text); }

/* Lado a lado: tarjetas iguales y del mismo alto; iconos en una caja de alto común
   apoyados en su base, así los títulos quedan a la misma altura. */
@container (min-width: 760px) {
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info { flex-direction: row; align-items: stretch; justify-content: center; gap: clamp(20px, 2.6cqw, 32px); }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-card { flex: 1 1 0; max-width: 330px; }
    /* Con Alojamiento (cuatro tarjetas) la fila pasa a 2×2; con tres se queda en fila */
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info:has(> :nth-child(4)) { flex-wrap: wrap; }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info:has(> :nth-child(4)) .zf-info-card { flex: 0 1 calc(50% - clamp(10px, 1.3cqw, 16px)); max-width: 420px; }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-icon,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-icon--carro,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-icon--hotel,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-icon--globos {
        height: clamp(66px, 8cqw, 78px); aspect-ratio: auto; width: 100%;
        -webkit-mask-position: bottom center; mask-position: bottom center;
    }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-icon          { -webkit-mask-size: auto clamp(52px, 6.4cqw, 62px); mask-size: auto clamp(52px, 6.4cqw, 62px); }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-icon--carro   { -webkit-mask-size: auto clamp(46px, 5.6cqw, 54px); mask-size: auto clamp(46px, 5.6cqw, 54px); }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-icon--hotel   { -webkit-mask-size: auto clamp(52px, 6.4cqw, 62px); mask-size: auto clamp(52px, 6.4cqw, 62px); }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-info-icon--globos  { -webkit-mask-size: contain; mask-size: contain; }
}

/* ═══════════════ RSVP — "LA TARJETA DE RESPUESTA" ═══════════════
   La acción más importante de la invitación: la tarjeta de canto dorado (pieza real,
   en 9-slice: el formulario cambia mucho de alto) sobre la hoja zafiro, que se funde
   con el footer para cerrar la invitación en el mismo papel con que abre. El
   formulario es el componente compartido public.rsvp-form; aquí solo se viste. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] #rsvp { padding-bottom: clamp(56px, 8cqw, 96px); box-shadow: 0 -18px 34px -22px rgba(30,32,12,0.45); }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] #rsvp::after { display: none; }                 /* sin filete inferior: continúa en el footer */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] #rsvp ~ .zf-footer::before { display: none; }   /* ni el superior del footer: una sola hoja */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp {
    position: relative;
    max-width: 600px; margin: 0 auto;
    padding: clamp(40px, 6cqw, 62px) clamp(16px, 4.4cqw, 50px) clamp(34px, 5cqw, 52px);
    border: 12px solid transparent;
    border-image: var(--zf-card-img) 24 fill / 12px stretch;
    background-color: #F4F0E7;   /* bajo el 9-slice: tapa la costura de subpíxel */
    filter: drop-shadow(0 22px 24px rgba(8,10,2,0.42)) drop-shadow(0 3px 5px rgba(8,10,2,0.3));
    text-align: center;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp > * { position: relative; z-index: 1; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp-intro { font-family: var(--font-zf-display); font-size: clamp(18px, 2.6cqw, 23px); color: var(--zf-text); line-height: 1.55; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp-intro strong { color: var(--zf-heading); font-weight: 500; }
/* Aire entre el saludo y el formulario (sin fecha límite quedaban pegados) */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp-intro { margin-bottom: 26px; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp-intro + .zf-rsvp-deadline { margin-top: -8px; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp-deadline {
    font-family: var(--font-zf-body); font-size: clamp(14px, 1.9cqw, 16.5px); letter-spacing: 0.5px;
    color: var(--zf-ink-gold); margin-top: 18px; margin-bottom: 30px; line-height: 1.5;   /* AA: en oro (sunset) daba ~3.1 */
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp-empty {
    margin-top: 26px; padding: 28px;
    border: 1px dashed var(--zf-olive-border); border-radius: var(--zf-radius);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp-empty p { font-family: var(--font-zf-body); font-size: 14px; color: var(--zf-text); opacity: 0.8; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp :is(form, .rsvp-form) { margin-top: 28px; }

/* ── Formulario RSVP: estiliza el componente compartido public.rsvp-form ── */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-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="zafiro"][data-archive-locale="ru"] .zf-rsvp .rsvp-form-container { padding: 0 !important; background: transparent !important; border: none !important; box-shadow: none !important; }

.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .rsvp-response-buttons { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 26px; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .response-option {
    cursor: pointer; padding: 18px 14px; margin: 0;
    border: 1px solid var(--zf-olive-border) !important; border-radius: 2px !important;
    background: #FBF9F3 !important; transition: all .3s ease !important;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .response-option:hover { border-color: var(--zf-olive) !important; background: var(--zf-olive-dim) !important; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .response-option.selected { border-color: var(--zf-navy-paper) !important; background: var(--zf-navy-paper) !important; box-shadow: inset 0 0 0 1px rgba(205,174,114,0.55) !important; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .option-content { display: flex; flex-direction: column; align-items: center; gap: 8px; color: var(--zf-text) !important; font-family: var(--font-zf-body); font-size: 13px; letter-spacing: 1.5px; text-transform: uppercase; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .response-option.selected .option-content { color: var(--zf-on-navy) !important; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .response-option.selected .option-icon { color: var(--zf-on-navy-gold); }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .option-icon { color: var(--zf-olive); }

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

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

.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .number-input-wrapper { display: flex; align-items: center; gap: 16px; justify-content: center; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .count-button { width: 38px; height: 38px; border-radius: 50% !important; background: var(--zf-btn-bg) !important; color: var(--zf-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="zafiro"][data-archive-locale="ru"] .zf-rsvp .count-button:hover:not(:disabled) { background: var(--zf-btn-hover) !important; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .count-button:disabled { opacity: .3; cursor: not-allowed; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .count-input { width: 64px; text-align: center; font-family: var(--font-zf-display) !important; font-size: 30px; font-style: italic; background: var(--zf-surface) !important; border: 1px solid var(--zf-olive-border) !important; border-radius: var(--zf-radius) !important; padding: 4px; color: var(--zf-heading) !important; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .helper-text { display: block; text-align: center; font-size: 13px; color: var(--zf-text) !important; opacity: 0.55; margin-top: 8px; letter-spacing: 1px; font-family: var(--font-zf-body); }

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

.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-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(--zf-radius) !important; margin-top: 20px; text-align: left; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .decline-icon-small { flex-shrink: 0; color: #c0392b; margin-top: 2px; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .decline-info-text { flex: 1; font-size: 14px; line-height: 1.6; color: var(--zf-text) !important; margin: 0; font-family: var(--font-zf-body); }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .decline-info-text strong { color: #c0392b !important; }

.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .submit-button { width: 100%; padding: 16px 28px; background: var(--zf-btn-bg) !important; color: var(--zf-on-accent) !important; border: none !important; border-radius: var(--zf-radius) !important; font-family: var(--font-zf-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="zafiro"][data-archive-locale="ru"] .zf-rsvp .submit-button:hover:not(:disabled) { background: var(--zf-btn-hover) !important; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .submit-button:disabled { opacity: .4; cursor: not-allowed; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-rsvp .error-message { display: block; margin-top: 6px; font-size: 14px; color: #c0392b; font-family: var(--font-zf-body); }

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

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

/* ═══════════════ FOOTER ═══════════════ */
/* El cierre vuelve al papel zafiro del sobre: la invitación empieza y termina en él.
   Tinta crema y oro claro por tokens locales; canto recto con filete de oro. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-footer {
    position: relative;
    padding: clamp(56px, 7cqw, 88px) 24px clamp(34px, 4cqw, 50px);
    text-align: center;
    background-color: var(--zf-navy-paper);
    background-image: var(--zf-navy-tex);
    background-size: var(--zf-tex-size);
    --zf-heading: var(--zf-on-navy);
    --zf-text: var(--zf-on-navy);
    --zf-ink-gold: var(--zf-on-navy-gold);
    --zf-sunset: var(--zf-on-navy-gold);
    --zf-sunset-border: rgba(210,182,128,0.45);
    --zf-foil: 0 1px 1.5px rgba(22,24,10,0.45);
    color: var(--zf-on-navy);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-footer::before {
    content: ""; position: absolute; left: 0; right: 0; top: 0;
    height: 1px; z-index: 1; pointer-events: none;
    background: linear-gradient(90deg, transparent, var(--zf-on-navy-gold) 14%, var(--zf-on-navy-gold) 86%, transparent);
    opacity: 0.7;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-footer-inner { position: relative; z-index: 1; }
/* Corona de laurel en oro (lámina propia) con las iniciales en oro claro en su
   centro geométrico (el hueco está abierto por arriba: centro del recorte) */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-footer-wreath {
    position: relative; width: clamp(150px, 36cqw, 196px); aspect-ratio: 640 / 597;
    margin: 0 auto clamp(18px, 2.6cqw, 28px);
    background: url('/media/archive/nupcii.com/images/templates/zafiro/laurel-corona.webp') center / contain no-repeat;
    filter: drop-shadow(0 6px 8px rgba(6,8,2,0.45));
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-footer-wreath-mono {
    position: absolute; left: 50%; top: 52%; translate: -50% -50%;
    white-space: nowrap;
    font-family: var(--font-zf-name); font-weight: 400;
    font-size: clamp(34px, 7.6cqw, 44px); letter-spacing: 0.06em; line-height: 1;
    color: #CDAE72;
    text-shadow: 0 1px 1px rgba(16,18,6,0.5);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-footer-wreath-mono i { font-family: var(--font-zf-display); font-style: italic; font-size: 0.86em; margin: 0 0.08em; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-footer-inner { max-width: 780px; margin: 0 auto; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-footer-names {
    display: flex; flex-wrap: wrap; justify-content: center; align-items: baseline;
    column-gap: 0.3em; row-gap: 0;
    font-family: var(--font-zf-script); font-style: normal;
    font-size: clamp(30px, 4cqw, 46px); line-height: 1.15;
    color: var(--zf-on-navy-name);
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-footer-names .zf-foot-name { white-space: nowrap; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-footer-names .zf-foot-amp { color: var(--zf-on-navy-amp); }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-footer-date {
    font-family: var(--font-zf-body); font-size: 12px; letter-spacing: 3px; text-transform: uppercase;
    color: var(--zf-ink-gold); margin-top: 10px;   /* AA: el oro daba 2.7:1 sobre el velo de seda */
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-footer-credit { font-family: var(--font-zf-body); font-size: 12px; color: var(--zf-text); opacity: 0.7; margin-top: 22px; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-footer-link { color: var(--zf-ink-gold); text-decoration: none; border-bottom: 1px solid var(--zf-sunset-border); }   /* AA: heading daba 4.1 sobre el velo */

/* ═══════════════ CALIGRAFÍA (Sloop) ═══════════════
   Ajuste de Andrés: toda la caligrafía lleva 3px de espaciado (portada, dedicatoria
   y footer; incluye sus "&"). Un solo sitio para tocarlo. */
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-name,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-hero-amp,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-name,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-ded-amp,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-footer-names { letter-spacing: 3px; }

/* ═══════════════ RESPONSIVE ═══════════════ */
@container (max-width: 600px) {
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-dc { grid-template-columns: 1fr; max-width: 290px; gap: 14px; }
    /* Footer: nombres apilados (primero / & / segundo) cuando no hay ancho */
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .zf-footer-names { flex-direction: column; align-items: center; }
}


/* ══════════════ VIDEO ENVELOPE INTRO (.vei-*) ══════════════ */
.archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"] .vei-stage.vei-contained { position: absolute; z-index: 30; }

.archive-sheet[data-archive="zafiro"][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="zafiro"][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="zafiro"][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="zafiro"][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="zafiro"][data-archive-locale="ru"] .vei-fitted.vei-pad-x:not(.vei-pad-y) .vei-video,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .vei-fitted.vei-pad-x:not(.vei-pad-y) .vei-poster,.archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"] .vei-fitted.vei-pad-y:not(.vei-pad-x) .vei-video,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .vei-fitted.vei-pad-y:not(.vei-pad-x) .vei-poster,.archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"] .vei-fitted.vei-pad-x.vei-pad-y .vei-video,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .vei-fitted.vei-pad-x.vei-pad-y .vei-poster,.archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"] .vei-video::-webkit-media-controls,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .vei-video::-webkit-media-controls-start-playback-button,.archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"] .vei-video-open { opacity: 0; transition: opacity .25s ease !important; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .vei-video-open.is-live { opacity: 1; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .vei-static { position: absolute; inset: 0; background-size: cover; background-position: center; }
.archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"] .vei-poster {
    position: absolute; inset: 0;
    background-size: cover; background-position: center;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .vei-poster[style*="width"] { background-size: 100% 100%; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .vei-poster-only .vei-video { opacity: 0 !important; }

.archive-sheet[data-archive="zafiro"][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: transparent; border: 1px solid rgba(46, 52, 71, 0.38);
    color: #2E3447; 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="zafiro"][data-archive-locale="ru"] .vei-skip:hover { background: rgba(46, 52, 71, 0.08); }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .vei-stage[data-variant='mobile'] .vei-skip { color: #EAE3D0; border-color: rgba(234, 227, 208, 0.5); }


.archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"] .vei-seal:focus-visible { outline: 2px solid #2E3447; 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="zafiro"][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="zafiro"][data-archive-locale="ru"] .vei-knot-tap { position: absolute; z-index: 4; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.archive-sheet[data-archive="zafiro"][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="zafiro"][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="zafiro"][data-archive-locale="ru"] .vei-seal { container-type: size; }
.archive-sheet[data-archive="zafiro"][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: 36cqh;
    color: #553B14;
    letter-spacing: 1px;
    text-shadow: 0 1px 0 rgba(255, 238, 196, 0.8), 0 -1px 1px rgba(44, 28, 6, 0.7), 0 0 1.5px rgba(60, 40, 12, 0.4);
    mix-blend-mode: normal;
    line-height: 1;
    user-select: none;
}
.archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"] .vei-stage[data-variant='desktop'] .vei-monogram { font-size: 17px; font-size: 36cqh; }

.archive-sheet[data-archive="zafiro"][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: rgba(46, 52, 71, 0.6);
    animation: veiHintFade 2.6s ease-in-out 1.2s infinite !important;
    transition: opacity .45s ease !important;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .vei-stage[data-variant='mobile'] .vei-hint { color: rgba(234, 227, 208, 0.6); }
@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="zafiro"][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(46, 52, 71, 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="zafiro"][data-archive-locale="ru"] .vei-stage.is-opening .vei-seal {
    opacity: 0; animation: none !important; pointer-events: none;
    transition: opacity 300ms ease 400ms !important;
}
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .vei-stage[data-variant='desktop'].is-opening .vei-seal {
    transition: opacity 300ms ease 400ms !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="zafiro"][data-archive-locale="ru"] .vei-stage.is-opening .vei-hint { animation: none !important; opacity: 0; pointer-events: none; }
.archive-sheet[data-archive="zafiro"][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="zafiro"][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="zafiro"][data-archive-locale="ru"] .vei-stage.vei-blooming .vei-bloom { opacity: 1; }

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

@media (prefers-reduced-motion: reduce) {
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .vei-seal,.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .vei-hint { animation: none !important; }
    .archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] .vei-bloom { transition: opacity .2s ease !important; }
    .archive-sheet[data-archive="zafiro"][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="zafiro"][data-archive-locale="ru"] { -webkit-text-size-adjust: 100%; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] [class$='cal-dow'] { letter-spacing: 0; }
.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] [class*='guest-names'],.archive-sheet[data-archive="zafiro"][data-archive-locale="ru"] [class$='env-guests'] { overflow-wrap: anywhere; }
