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

        .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] {
            --color-primary: #47492D;
            --color-secondary: #E9E3D3;
            --color-accent: #957340;
            --color-background: #F8F4EB;
            --color-text: #3E3F30;
            --color-heading: #47492D;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/* ══════════════════════════════════════════════════════════════
   OLIVA · sobre verde oliva con lacre dorado, sobria y clásica · prefijo ol
   ══════════════════════════════════════════════════════════════ */

/* 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="oliva"][data-archive-locale="ru"] { --vei-mono-font: 'Playfair Display', 'Cormorant Garamond', serif; }

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

    /* ── Tokens de paleta (de $colors) ── */
    --ol-sunset:       #47492D;
    --ol-sunset-dim:   rgba(71,73,45,0.10);
    --ol-sunset-soft:  rgba(71,73,45,0.16);
    --ol-sunset-border:rgba(71,73,45,0.30);
    --ol-cream:        #E9E3D3;
    --ol-olive:        #957340;
    --ol-olive-dim:    rgba(149,115,64,0.12);
    --ol-olive-soft:   rgba(149,115,64,0.20);
    --ol-olive-border: rgba(149,115,64,0.32);
    --ol-bg:           #F8F4EB;
    --ol-text:         #3E3F30;
    --ol-heading:      #47492D;
    --ol-head-soft:    rgba(71,73,45,0.14);
    /* Superficies (tokenizadas para soportar paletas claras y oscuras) */
    --ol-paper:        #F4EFE5;
    --ol-paper-feat:   #EEE8DA;
    --ol-card:         #FDFBF6;
    --ol-surface:      #F1ECE0;
    --ol-keyline:      rgba(149, 115, 64, 0.32);
    --ol-btn-hover:    #34361F;
    --ol-btn-bg:       #47492D;      /* fondo de botón: bronce, blanco encima pasa AA */
    --ol-ink-gold:     #5A5B3A;    /* tinta bronce del texto pequeño informativo */
    --ol-on-accent:    #FFFFFF;
    --ol-frame:        #FFFFFF;
    --ol-ph-fill:      linear-gradient(160deg, #EAE4D4 0%, #DAD2BD 100%);
    --ol-amp:          rgba(149, 115, 64, 0.16);
    --ol-hero-bg:      #43452A;
    --ol-hero-ink:     #E4DDC9;
    --ol-hero-heading: #D2B680;
    --ol-hero-accent:  #F1ECDF;
    --ol-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 oliva. */
    --ol-foil:    none;
    --ol-foil-sm: none;
    --ol-gold:    #957340;
    --ol-ink-heading: #47492D;
    --ol-ink-text:    #3E3F30;
    --ol-ink-label:   #5A5B3A;   /* oro viejo plano de filetes y acentos */
    --ol-veil-rgb: 244,239,229;
    /* Papeles: el del cuerpo (crema) y el del sobre (oliva), mismas fibras */
    --ol-paper-tex:     url('/media/archive/nupcii.com/images/templates/oliva/paper-crema.webp');
    --ol-olive-tex:     url('/media/archive/nupcii.com/images/templates/oliva/paper-oliva.webp');
    --ol-olive-paper:   #43452A;
    --ol-on-olive:      #F1ECDF;
    --ol-on-olive-gold: #D2B680;
    --ol-on-olive-name: #D2B680;
    --ol-on-olive-amp:  #F1ECDF;
    /* Piezas de papelería (lo que viene dentro del sobre) */
    --ol-lacre:   url('/media/archive/nupcii.com/images/templates/oliva/lacre-oliva.webp');
    --ol-card-img: url('/media/archive/nupcii.com/images/templates/oliva/tarjeta-canto.webp');
    --ol-tex-size:      380px;   /* perilla: escala del grano (la tesela mide 600px) */

    /* ── Tokens estructurales (hardcoded) ── */
    --font-ol-display: 'Cormorant Garamond', 'Playfair Display', serif;
    --font-ol-name:    'Playfair Display', 'Cormorant Garamond', serif;  /* nombres del hero */
    --font-ol-script:  'Great Vibes', 'Great Vibes', cursive;     /* acento caligráfico */
    --font-ol-body:    'Jost', 'Montserrat', sans-serif;
    --ol-radius:       3px;
    --ol-maxw:         1080px;
    --ol-shadow:       0 24px 60px -28px rgba(61,46,32,0.45);
    --ol-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(--ol-paper);
    background-image: var(--ol-paper-tex);
    background-size: var(--ol-tex-size);
    color: var(--ol-text);
    font-family: var(--font-ol-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 oliva 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="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-wrap :where(h1, h2, h3) { margin: 0; font-weight: 400; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-wrap :where(p) { margin: 0; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-wrap .ol-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="oliva"][data-archive-locale="ru"].fl-intro-pending .ol-wrap .ol-rise { animation: none !important; }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"].fl-intro-done .ol-wrap .ol-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="oliva"][data-archive-locale="ru"] .ol-wrap .ol-rise { animation: none !important; opacity: 1; transform: none; }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-arch-photo,.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hero-embers span { animation: none !important; }
}

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

/* ─────────── Secciones + transición tipo onda (wave) ─────────── */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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 --ol-paper: sin escalón ni blend).
   Las secciones se separan por aire y filetes, no por bandas de textura. */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-bg-bg,.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-bg-cream { background: transparent; }

/* "Cinta": banda de imagen a ancho completo, muy horizontal, debajo de /guest */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-ribbon {
    width: 100%;
    height: clamp(120px, 20cqw, 260px);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}
/* Secciones sobre el PAPEL OLIVA del sobre (itinerario, regalos): una hoja oliva
   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="oliva"][data-archive-locale="ru"] .ol-wrap .ol-bg-olive {
    position: relative; z-index: 1; overflow: hidden;
    padding: clamp(96px, 13cqw, 160px) 0;
    background-color: var(--ol-olive-paper);
    background-image:
        radial-gradient(60% 40% at 50% 18%, rgba(255,248,222,0.07) 0%, rgba(255,248,222,0) 70%),
        var(--ol-olive-tex);
    background-size: auto, var(--ol-tex-size);
    box-shadow: 0 18px 34px -22px rgba(30,32,12,0.55), 0 -18px 34px -22px rgba(30,32,12,0.45);
    --ol-heading:  var(--ol-on-olive);
    --ol-text:     var(--ol-on-olive);
    --ol-ink-gold: var(--ol-on-olive-gold);
    --ol-gold:     #CDAE72;
    color: var(--ol-on-olive);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-bg-olive::before,.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-bg-olive::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="oliva"][data-archive-locale="ru"] .ol-bg-olive::before { top: 5px; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-bg-olive::after  { bottom: 5px; }
/* Piezas de papel claro sobre la hoja oliva: recuperan la tinta oscura */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-bg-olive :is(.ol-tl-card, .ol-gift, .ol-rsvp) {
    --ol-heading:  var(--ol-ink-heading);
    --ol-text:     var(--ol-ink-text);
    --ol-ink-gold: var(--ol-ink-label);
    --ol-gold:     #957340;
    color: var(--ol-ink-text);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-container { z-index: 2; }

/* ─────────── Cabecera de sección ─────────── */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-head { text-align: center; margin-bottom: clamp(44px, 6cqw, 70px); }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-head-title {
    font-family: var(--font-ol-display);
    font-size: clamp(34px, 6cqw, 56px);
    font-style: italic;
    font-weight: 500;
    color: var(--ol-heading);
    line-height: 1.08;
    text-shadow: var(--ol-foil);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-head-sub {
    font-family: var(--font-ol-body);
    font-size: 12px;
    font-weight: 400;
    letter-spacing: 3.5px;
    text-transform: uppercase;
    color: var(--ol-ink-gold);   /* AA: en oro quedaba <3:1 sobre el papel */
    margin-top: 14px;
    text-shadow: var(--ol-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 Oliva el ornamento es la línea. */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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(--ol-gold); opacity: 0.75;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-divider-line,.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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 oliva) y un
   brillo de foil muy leve. Hueco central medido: 13.6% del ancho, centrado. */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-emblem {
    position: relative; container-type: inline-size;
    width: clamp(250px, 64cqw, 430px); aspect-ratio: 1000 / 117;
    margin: 0 auto clamp(30px, 4.6cqw, 48px);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-emblem-art {
    position: absolute; inset: 0;
    background: linear-gradient(100deg, var(--ol-gold) 0%, color-mix(in srgb, var(--ol-gold) 78%, #FFF3CF) 38%, var(--ol-gold) 62%, color-mix(in srgb, var(--ol-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-52f3d363b22b) center / 100% 100% no-repeat;
            mask: var(--offline-mask-52f3d363b22b) center / 100% 100% no-repeat;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-emblem-mono {
    position: absolute; left: 50%; top: 50%; translate: -50% -52%;
    white-space: nowrap;
    font-family: var(--font-ol-name); font-weight: 400;
    font-size: 5cqw; letter-spacing: 0.06em; line-height: 1;
    color: var(--ol-gold);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-emblem-mono i { font-family: var(--font-ol-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 oliva 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="oliva"][data-archive-locale="ru"] .ol-hero {
    --ol-flap-v: clamp(64px, 22cqw, 150px);     /* profundidad de la V (perilla) */
    --ol-flap-line: 1.5px;                        /* grosor del filete de oro */
    --ol-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(--ol-hero-ink);
    background: var(--ol-hero-bg);
}

/* ── Papel ── */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hero-silk {
    position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background-color: var(--ol-olive-paper);
    background-image: var(--ol-olive-tex);
    background-size: var(--ol-tex-size);
}
/* Luz de ventana suave (la del loop del intro): da profundidad sin textura */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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) ──
   .ol-hero-photo-half lleva la sombra (drop-shadow: un clip-path se come las sombras
   del propio elemento); .ol-hero-flap es el oro recortado en V; .ol-hero-flap-photo
   es la foto con la MISMA V desplazada --ol-flap-line: lo que asoma es el filete. */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-hero-flap,.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hero-flap-photo { position: absolute; inset: 0; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hero-flap {
    background: var(--ol-flap-gold);
    clip-path: polygon(0 0, calc(100% - var(--ol-flap-v)) 0, 100% 50%, calc(100% - var(--ol-flap-v)) 100%, 0 100%);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hero-flap-photo {
    right: var(--ol-flap-line);
    overflow: hidden;
    clip-path: polygon(0 0, calc(100% - var(--ol-flap-v)) 0, 100% 50%, calc(100% - var(--ol-flap-v)) 100%, 0 100%);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-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 oliva la tinta clara lleva solo una sombra corta y oscura */
    --ol-foil:    0 1px 1.5px rgba(22,24,10,0.40);
    --ol-foil-sm: 0 1px 1px rgba(22,24,10,0.35);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hero-panel-inner { position: relative; z-index: 3; width: 100%; }

/* ── Textos: escala y aire ── */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hero-eyebrow {
    font-family: var(--font-ol-name);
    font-size: clamp(11px, 1.15cqw, 13.5px); font-weight: 500;
    letter-spacing: 0.3em; text-transform: uppercase; color: var(--ol-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="oliva"][data-archive-locale="ru"] .ol-hero-name {
    font-family: var(--font-ol-script); font-weight: 400; font-style: normal;
    font-size: clamp(49px, 5.5cqw, 114px); line-height: 1.0; color: var(--ol-hero-heading);
    text-shadow: none;   /* la sombra engordaba el trazo fino de Sloop sobre el oliva */
    margin: 0;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hero-amp {
    display: block;
    font-family: var(--font-ol-script); font-weight: 400;
    font-size: clamp(26px, 2.9cqw, 48px); line-height: 1;
    color: var(--ol-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="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-hm-line { display: block; width: clamp(22px, 3cqw, 44px); height: 1px; background: var(--ol-hero-line); }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hm-text {
    font-family: var(--font-ol-body);
    font-size: clamp(11px, 1.15cqw, 13px); letter-spacing: 0.3em; text-transform: uppercase;
    color: var(--ol-hero-ink);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hero-place {
    font-family: var(--font-ol-display); font-style: italic;
    font-size: clamp(16px, 1.7cqw, 22px); color: var(--ol-hero-accent); margin-top: 12px;
}

/* ── Indicador de scroll, al pie del panel (solo escritorio) ── */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-scroll-track {
    position: relative; display: block; width: 1px; height: 52px;
    background: linear-gradient(var(--ol-hero-line), rgba(0,0,0,0));
    overflow: hidden;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-scroll-dot {
    position: absolute; left: -1.5px; top: 0;
    width: 4px; height: 4px; border-radius: 50%;
    background: var(--ol-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="oliva"][data-archive-locale="ru"] .ol-scroll-dot { animation: none !important; top: 46%; opacity: .85; }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-hero { flex-direction: column; min-height: calc(var(--archive-vh, 1svh) * 100); }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hero-photo-half { flex: 0 0 calc(var(--archive-vh, 1svh) * 54); }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hero-flap,.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hero-flap-photo {
        clip-path: polygon(0 0, 100% 0, 100% calc(100% - var(--ol-flap-v)), 50% 100%, 0 calc(100% - var(--ol-flap-v)));
    }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hero-flap-photo { right: 0; bottom: var(--ol-flap-line); }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-hero-name { font-size: clamp(43px, 12.6cqw, 94px); }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hero-scroll { display: none; }
}

/* ═══════════════ COUNTDOWN ═══════════════
   Toda la sección sobre el papel claro (emblema, título y subtítulo en tinta oliva,
   como el resto de cabeceras) y cada cifra en SU pieza de cartulina oliva, lado a
   lado: el patrón de las otras plantillas de la colección, con el material de Oliva
   (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="oliva"][data-archive-locale="ru"] .ol-cd-sec::after { display: none; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-cd-band { position: relative; }   /* agrupa cabecera + cifras; sin fondo propio */

.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-cd {
    display: flex; align-items: stretch; justify-content: center;
    gap: clamp(8px, 2.4cqw, 22px); flex-wrap: nowrap;
}
/* Cada cifra en su PLACA: cartulina oliva 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="oliva"][data-archive-locale="ru"] .ol-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/oliva/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="oliva"][data-archive-locale="ru"] .ol-cd-num {
    font-family: var(--font-ol-display);
    font-size: clamp(34px, 9.4cqw, 80px);
    font-weight: 500;
    line-height: 0.92;
    color: var(--ol-on-olive);
    font-variant-numeric: lining-nums tabular-nums;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-cd-lbl {
    font-family: var(--font-ol-body);
    font-size: clamp(8.5px, 2.4cqw, 10.5px); font-weight: 400;
    letter-spacing: 0.26em; text-transform: uppercase;
    color: var(--ol-on-olive-gold);
    margin-top: clamp(10px, 2.4cqw, 16px);
    padding-left: 0.26em;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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 oliva abierto con forro de oro. */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-cd-sec .ol-date { margin-top: clamp(40px, 7cqw, 70px); }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-cd-sec { padding-bottom: clamp(36px, 6cqw, 70px); }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-ded-sec { padding-top: clamp(20px, 4cqw, 48px); padding-bottom: clamp(36px, 6cqw, 70px); }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-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(--ol-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="oliva"][data-archive-locale="ru"] .ol-cal-month {
    font-family: var(--font-ol-display); font-style: italic; font-weight: 400;
    font-size: clamp(21px, 2.6cqw, 26px); line-height: 1.1;
    color: var(--ol-heading); text-align: center; text-transform: capitalize;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-cal-grid {
    display: grid; grid-template-columns: repeat(7, 1fr);
    margin-top: clamp(10px, 1.4cqw, 14px);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-cal-dow {
    font-family: var(--font-ol-body);
    font-size: 8.5px; font-weight: 500; letter-spacing: 0.16em;
    text-transform: uppercase; color: var(--ol-ink-gold);
    text-align: center; padding-bottom: 7px;
    border-bottom: 1px solid var(--ol-keyline);
    margin-bottom: 8px;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-cal-day {
    position: relative;
    font-family: var(--font-ol-body); font-size: 12px;
    color: var(--ol-text); text-align: center;
    padding: 5px 0; z-index: 1;
    font-variant-numeric: tabular-nums;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-cal-day.is-out { opacity: 0.22; }
/* El día de la boda lo sella el lacre real, en miniatura */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-cal-day.is-day { color: #452E0C; font-weight: 600; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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(--ol-lacre) center / contain no-repeat;
    filter: drop-shadow(0 2px 3px rgba(40,30,8,0.45));
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-cal-weekday {
    font-family: var(--font-ol-body);
    font-size: 9.5px; letter-spacing: 0.34em; text-transform: uppercase;
    color: var(--ol-ink-gold); text-align: center;
    margin-top: clamp(8px, 1.2cqw, 12px);
}

/* La foto de la fecha en su BOLSILLO de cartulina oliva (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.
   Medido en el asset: marfil de 5.5% a 90% del ancho; fondo de la curva al 54.5%. */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-env {
    position: relative; margin: 0;
    width: min(350px, 86%); aspect-ratio: 1055 / 1045;
    margin-top: min(150px, 37%);
    filter: drop-shadow(0 26px 30px rgba(30,32,12,0.26)) drop-shadow(0 3px 6px rgba(30,32,12,0.18));
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-env-back,.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-env-front {
    position: absolute; inset: 0; display: block; width: 100%; height: 100%;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-env-front { z-index: 2; pointer-events: none; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-env-photo {
    position: absolute; z-index: 1;
    left: 8.5%; width: 78.5%; bottom: 43.5%;
    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="oliva"][data-archive-locale="ru"] .ol-env-mono {
    position: absolute; z-index: 3; left: 9%; bottom: 8%;
    font-family: var(--font-ol-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="oliva"][data-archive-locale="ru"] .ol-env-mono i { font-family: var(--font-ol-display); font-style: italic; font-weight: 400; margin: 0 0.12em; }
@container (max-width: 620px) {
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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 oliva (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="oliva"][data-archive-locale="ru"] .ol-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/oliva/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 oliva */
    --ol-heading:  var(--ol-on-olive);
    --ol-text:     var(--ol-on-olive);
    --ol-ink-gold: var(--ol-on-olive-gold);
    --ol-gold:     #CDAE72;
    color: var(--ol-on-olive);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-dedicated > * { position: relative; z-index: 1; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-ded-stamp {
    position: absolute; z-index: 2;
    top: clamp(6px, 1.6cqw, 14px); right: clamp(8px, 2cqw, 18px);
    font-family: var(--font-ol-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="oliva"][data-archive-locale="ru"] .ol-ded-stamp i { font-family: var(--font-ol-display); font-style: italic; margin: 0 0.12em; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-ded-eyebrow {
    font-family: var(--font-ol-name);
    font-size: 12px; font-weight: 400; letter-spacing: 0.3em; text-transform: uppercase;
    color: var(--ol-ink-gold);
    margin: 0 0 clamp(14px, calc(var(--archive-vh, 1svh) * 2.2), 24px);
    padding-left: 0.3em;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-ded-name {
    font-family: var(--font-ol-script); font-weight: 400;
    font-size: clamp(43px, 7cqw, 88px); line-height: 1.35;
    color: var(--ol-on-olive-name);
}
/* Nombres largos (varios invitados o tratamientos extensos): cuerpo menor */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-ded-amp {
    font-family: var(--font-ol-script);
    font-size: clamp(24px, 3.4cqw, 42px); line-height: 1;
    color: var(--ol-on-olive-amp);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-ded-sep {
    display: block; width: clamp(20px, 2.6cqw, 30px); height: 1px;
    background: var(--ol-gold); opacity: 0.6;
    margin: clamp(8px, 1.2cqw, 14px) auto;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-ded-meta {
    font-family: var(--font-ol-name);
    font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; line-height: 1.9;
    color: var(--ol-ink-gold); margin-top: 14px;
}
/* Cupos ("4 personas" / "+3 acompañantes"): cifra en itálica + rótulo, sin caja */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-ded-count {
    display: inline-flex; align-items: baseline; gap: 9px;
    margin: 16px auto 0;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-ded-count-n {
    font-family: var(--font-ol-display); font-style: italic; font-weight: 600;
    font-size: clamp(24px, 3.2cqw, 30px); line-height: 1; color: var(--ol-heading);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-ded-count-l {
    font-family: var(--font-ol-name); font-weight: 500;
    font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--ol-ink-gold);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-ded-rule { display: block; width: clamp(40px, 8cqw, 60px); height: 1px; background: var(--ol-gold); opacity: 0.75; margin: clamp(24px, calc(var(--archive-vh, 1svh) * 3.2), 34px) auto; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-ded-msg {
    font-family: var(--font-ol-display); font-style: italic;
    font-size: clamp(18px, 2.3cqw, 23px); line-height: 1.6;
    color: var(--ol-text); max-width: 30ch; margin: 0 auto;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-ded-sec::after { display: none; }

/* ═══════════════ ITINERARIO — "LAS TARJETAS DEL DÍA" ═══════════════
   Sobre la hoja oliva: 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="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-tl-photo { order: 2; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-cards { order: 1; }
@container (min-width: 900px) {
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl { grid-template-columns: minmax(260px, 380px) 1fr; gap: clamp(56px, 7cqw, 90px); align-items: center; }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-photo,.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-cards { order: 0; }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl--single .ol-tl-cards { align-self: center; }
    /* Sin retrato: una sola columna centrada a ancho de lectura */
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-tl-photo-img { display: block; width: 100%; height: auto; }
@container (min-width: 900px) {
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-photo { aspect-ratio: 3 / 4; }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-photo-img { height: 100%; object-fit: cover; }
}
/* Rama: sube en diagonal por la esquina inferior DERECHA de la foto (tallo abajo,
   puntas hacia arriba-derecha, saliéndose un poco). El asset ya viene en esa
   dirección (rama v2, la misma del bolsillo), sin espejo. */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-photo::after {
    content: ""; position: absolute; z-index: 2; pointer-events: none;
    width: 56%; aspect-ratio: 620 / 724;
    right: -9%; bottom: -11%;
    rotate: 4deg;
    background: url('/media/archive/nupcii.com/images/templates/oliva/rama-olivo.webp') center / contain no-repeat;
    filter: drop-shadow(3px 7px 6px rgba(6,8,2,0.5));
}

/* ── Columna de tarjetas + hilo de oro ── */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-tl-card {
    position: relative;
    border: 12px solid transparent;
    border-image: var(--ol-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="oliva"][data-archive-locale="ru"] .ol-tl-card {
        grid-template-areas:
            "time vrule label"
            "time vrule info";
        row-gap: clamp(6px, 0.8cqw, 10px);
    }
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-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(--ol-olive-paper), 0 0 0 5px rgba(205,174,114,0.6);
}

.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-label {
    grid-area: label;
    display: flex; align-items: center; gap: clamp(10px, 1.4cqw, 14px);
    font-family: var(--font-ol-body);
    font-size: clamp(10px, 1.15cqw, 11.5px); font-weight: 400;
    letter-spacing: 0.34em; text-transform: uppercase;
    color: var(--ol-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="oliva"][data-archive-locale="ru"] .ol-tl-ico {
    flex: none; display: block;
    height: clamp(34px, 4.2cqw, 44px); aspect-ratio: 344 / 457;
    background: linear-gradient(100deg, var(--ol-gold) 0%, color-mix(in srgb, var(--ol-gold) 78%, #FFF3CF) 40%, var(--ol-gold) 70%, color-mix(in srgb, var(--ol-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-3cdd9f42c102) center / contain no-repeat;
            mask: var(--offline-mask-3cdd9f42c102) center / contain no-repeat;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-ico--glasses {
    height: clamp(28px, 3.5cqw, 36px); aspect-ratio: 396 / 362;
    -webkit-mask-image: var(--offline-mask-dbebed41b00a);
            mask-image: var(--offline-mask-dbebed41b00a);
}
/* Variante neutra (anillos / pastel), misma lámina de foil */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-ico--rings {
    height: clamp(30px, 3.7cqw, 38px); aspect-ratio: 286 / 240;
    -webkit-mask-image: var(--offline-mask-57719e799240);
            mask-image: var(--offline-mask-57719e799240);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-ico--cake {
    height: clamp(34px, 4.2cqw, 44px); aspect-ratio: 182 / 240;
    -webkit-mask-image: var(--offline-mask-218c107e4d62);
            mask-image: var(--offline-mask-218c107e4d62);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-time {
    grid-area: time;
    display: flex; align-items: baseline; gap: 5px;
    justify-self: start;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-h {
    font-family: var(--font-ol-display); font-weight: 400;
    font-size: clamp(34px, 4.4cqw, 48px); line-height: 1;
    color: var(--ol-heading);
    font-variant-numeric: lining-nums tabular-nums;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-ampm {
    font-family: var(--font-ol-body);
    font-size: clamp(9px, 1.1cqw, 11px); font-weight: 500; letter-spacing: 0.18em;
    color: var(--ol-ink-gold);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-vrule {
    grid-area: vrule; align-self: stretch;
    width: 1px; background: var(--ol-gold); opacity: 0.5;
}
@container (min-width: 900px) {
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-vrule { grid-row: 1 / 3; }
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-info { grid-area: info; min-width: 0; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-venue {
    font-family: var(--font-ol-display); font-weight: 500;
    font-size: clamp(21px, 2.8cqw, 30px); line-height: 1.16;
    color: var(--ol-heading);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-addr {
    display: flex; align-items: center; gap: 7px;
    font-family: var(--font-ol-body); font-size: clamp(12.5px, 1.4cqw, 14px);
    color: var(--ol-text); opacity: 0.85; margin-top: 8px;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-pin { flex: none; width: 15px; height: 15px; color: var(--ol-gold); }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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(--ol-keyline);
    font-family: var(--font-ol-body); font-size: clamp(10px, 1.15cqw, 11.5px);
    font-weight: 500; letter-spacing: 0.22em; text-transform: uppercase;
    text-decoration: none; color: var(--ol-heading);
    transition: opacity .3s ease !important;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-map span { flex: none; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-tl-arrow { flex: 1; min-width: 26px; max-width: 46px; height: 8px; color: var(--ol-gold); }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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 oliva (no el coral de la paleta). */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-gallery-host {
    position: relative;
    max-width: 1100px; margin: 0 auto;
    --gallery-primary: var(--ol-olive);
    --gallery-accent:  var(--ol-olive);
    --gallery-text:    var(--ol-text);
    --gallery-heading: var(--ol-heading);
    --gallery-font-script: var(--font-ol-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 --ol-text claro de los temas joya quedaba invisible). Sobreescribible por
       paleta vía --ol-polaroid-ink si alguna quisiera otro tono. */
    --gallery-polaroid-text: var(--ol-polaroid-ink, #34302a);
}

/* ═══════════════ CÓDIGO DE VESTIMENTA — "LAS ETIQUETAS" ═══════════════
   Dos etiquetas de prenda (cartulina marfil con esquinas recortadas, ojal dorado y
   cordón de oro: fotografía real) en vez de las tarjetas gemelas del resto de la
   colección. Cada etiqueta son DOS piezas del mismo asset para poder crecer en
   alto con las notas (texto libre):
     ::before = la CABEZA (cordón + ojal + esquinas), de proporción fija;
     ::after  = el CUERPO en 9-slice (cantos lisos), que estira lo que haga falta.
   La tarjeta es contenedor (cqw) para que cabeza y contenido escalen juntos. */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-dc {
    display: grid; grid-template-columns: repeat(2, 1fr);
    gap: clamp(22px, 5cqw, 64px);
    /* stretch: lado a lado las dos etiquetas miden lo mismo aunque una tenga más
       texto (el cuerpo 9-slice de la corta se estira hasta la altura de la larga) */
    max-width: 700px; margin: 0 auto; align-items: stretch;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-dc-card {
    --tag-head: 46cqw;          /* alto visible de la cabeza: 29.5cqw de etiqueta + cordón */
    position: relative; container-type: inline-size;
    text-align: center;
    padding: 0 10% clamp(26px, 12cqw, 44px);
    filter: drop-shadow(0 22px 24px rgba(40,42,20,0.20)) drop-shadow(0 3px 5px rgba(40,42,20,0.14));
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-dc-card::before {
    content: ""; position: absolute; z-index: 1; left: 0; right: 0; top: 0; height: var(--tag-head);
    background: url('/media/archive/nupcii.com/images/templates/oliva/etiqueta-head.webp') bottom center / 100% auto no-repeat;
    /* el cordón se pierde hacia arriba, como si colgara de fuera del encuadre */
    -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 22%);
            mask-image: linear-gradient(to bottom, transparent 0, #000 22%);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-dc-card::after {
    content: ""; position: absolute; z-index: 0; bottom: 0;
    top: calc(var(--tag-head) - 8px);   /* el cuerpo entra 8px BAJO la cabeza (que va encima): sin costura */
    /* El cuerpo es una tira CORTA y recta de la etiqueta en 9-slice (cantos con su
       filo dorado). Su centro va DESENFOCADO en el propio asset: estirar el grano de
       la foto hacía vetas verticales, y un color plano por CSS no casaba con el tono
       renderizado de la imagen. La tira es ~6 px más estrecha que la cabeza. */
    left: 0.55%; right: 0.55%;
    border-style: solid; border-width: 0 10px 18px;
    border-image: url('/media/archive/nupcii.com/images/templates/oliva/etiqueta-body.webp') 0 24 36 fill / 0 12px 18px stretch;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-dc-card > * { position: relative; z-index: 2; }

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

/* ═══════════════ REGALOS ═══════════════
   La sección tranquila: sobre la hoja oliva, 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="oliva"][data-archive-locale="ru"] #gifts { padding-top: clamp(84px, 11cqw, 132px); padding-bottom: clamp(92px, 12cqw, 148px); }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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(--ol-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="oliva"][data-archive-locale="ru"] .ol-gift > * { position: relative; z-index: 1; }
/* Icono del tipo de regalo en foil dorado (máscara): sobre / caja / corazón */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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(--ol-gold) 0%, color-mix(in srgb, var(--ol-gold) 78%, #FFF3CF) 40%, var(--ol-gold) 70%, color-mix(in srgb, var(--ol-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-644b85502292) center / contain no-repeat;
            mask: var(--offline-mask-644b85502292) center / contain no-repeat;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-gift-icon--regalo {
    height: clamp(68px, 10.5cqw, 88px); aspect-ratio: 258 / 274;
    -webkit-mask-image: var(--offline-mask-510a586ae916); mask-image: var(--offline-mask-510a586ae916);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-gift-icon--corazon {
    height: clamp(58px, 9cqw, 76px); aspect-ratio: 255 / 229;
    -webkit-mask-image: var(--offline-mask-6c6fcf913042); mask-image: var(--offline-mask-6c6fcf913042);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-gift-title { font-family: var(--font-ol-display); font-style: italic; font-size: clamp(28px, 4.4cqw, 42px); color: var(--ol-heading); margin-bottom: 16px; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-gift-text { font-family: var(--font-ol-display); font-size: clamp(17px, 2.4cqw, 21px); line-height: 1.6; color: var(--ol-text); }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-gift-list { list-style: none; padding: 0; margin: 24px 0 0; display: flex; flex-direction: column; gap: 12px; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-gift-list li {
    font-family: var(--font-ol-body); font-size: 15px; color: var(--ol-text);
    padding-bottom: 12px; border-bottom: 1px solid color-mix(in srgb, var(--ol-gold) 38%, transparent);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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 oliva, por legibilidad, y
   la versión impresa sin tarjeta, que Andrés prefirió con tarjeta.) */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-info {
    display: flex; flex-direction: column; align-items: center;
    gap: clamp(18px, 4cqw, 26px);
    max-width: 1040px; margin: 0 auto;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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(--ol-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="oliva"][data-archive-locale="ru"] .ol-info-card > * { position: relative; z-index: 1; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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(--ol-gold) 0%, color-mix(in srgb, var(--ol-gold) 78%, #FFF3CF) 40%, var(--ol-gold) 70%, color-mix(in srgb, var(--ol-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-8dc4fbe40bf4) center / contain no-repeat;
            mask: var(--offline-mask-8dc4fbe40bf4) center / contain no-repeat;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-info-icon--carro {
    height: clamp(46px, 5.6cqw, 54px); aspect-ratio: 458 / 173;
    -webkit-mask-image: var(--offline-mask-22e9d2644aa0); mask-image: var(--offline-mask-22e9d2644aa0);
}
/* Fachada de hotel (Alojamiento): línea fina como el coche, misma caja de alto que la nota */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-info-icon--hotel {
    height: clamp(52px, 6.4cqw, 62px); aspect-ratio: 285 / 196;
    -webkit-mask-image: var(--offline-mask-65927f6066f8); mask-image: var(--offline-mask-65927f6066f8);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-info-icon--globos {
    height: clamp(66px, 8cqw, 78px); aspect-ratio: 252 / 349;
    -webkit-mask-image: var(--offline-mask-7e8459f57ded); mask-image: var(--offline-mask-7e8459f57ded);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-info-title { font-family: var(--font-ol-display); font-style: italic; font-size: clamp(24px, 3cqw, 30px); color: var(--ol-heading); margin-bottom: 10px; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-info-text { font-family: var(--font-ol-body); font-size: 15px; line-height: 1.65; color: var(--ol-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="oliva"][data-archive-locale="ru"] .ol-info { flex-direction: row; align-items: stretch; justify-content: center; gap: clamp(20px, 2.6cqw, 32px); }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-info:has(> :nth-child(4)) { flex-wrap: wrap; }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-info:has(> :nth-child(4)) .ol-info-card { flex: 0 1 calc(50% - clamp(10px, 1.3cqw, 16px)); max-width: 420px; }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-info-icon,.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-info-icon--carro,.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-info-icon--hotel,.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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="oliva"][data-archive-locale="ru"] .ol-info-icon          { -webkit-mask-size: auto clamp(52px, 6.4cqw, 62px); mask-size: auto clamp(52px, 6.4cqw, 62px); }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-info-icon--carro   { -webkit-mask-size: auto clamp(46px, 5.6cqw, 54px); mask-size: auto clamp(46px, 5.6cqw, 54px); }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-info-icon--hotel   { -webkit-mask-size: auto clamp(52px, 6.4cqw, 62px); mask-size: auto clamp(52px, 6.4cqw, 62px); }
    .archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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 oliva, 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="oliva"][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="oliva"][data-archive-locale="ru"] #rsvp::after { display: none; }                 /* sin filete inferior: continúa en el footer */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] #rsvp ~ .ol-footer::before { display: none; }   /* ni el superior del footer: una sola hoja */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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(--ol-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="oliva"][data-archive-locale="ru"] .ol-rsvp > * { position: relative; z-index: 1; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-rsvp-intro { font-family: var(--font-ol-display); font-size: clamp(18px, 2.6cqw, 23px); color: var(--ol-text); line-height: 1.55; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-rsvp-intro strong { color: var(--ol-heading); font-weight: 500; }
/* Aire entre el saludo y el formulario (sin fecha límite quedaban pegados) */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-rsvp-intro { margin-bottom: 26px; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-rsvp-intro + .ol-rsvp-deadline { margin-top: -8px; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-rsvp-deadline {
    font-family: var(--font-ol-body); font-size: clamp(14px, 1.9cqw, 16.5px); letter-spacing: 0.5px;
    color: var(--ol-ink-gold); margin-top: 18px; margin-bottom: 30px; line-height: 1.5;   /* AA: en oro (sunset) daba ~3.1 */
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-rsvp-empty {
    margin-top: 26px; padding: 28px;
    border: 1px dashed var(--ol-olive-border); border-radius: var(--ol-radius);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-rsvp-empty p { font-family: var(--font-ol-body); font-size: 14px; color: var(--ol-text); opacity: 0.8; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-rsvp :is(form, .rsvp-form) { margin-top: 28px; }

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

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

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

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

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

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

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

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

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

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

/* ═══════════════ FOOTER ═══════════════ */
/* El cierre vuelve al papel oliva 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="oliva"][data-archive-locale="ru"] .ol-footer {
    position: relative;
    padding: clamp(56px, 7cqw, 88px) 24px clamp(34px, 4cqw, 50px);
    text-align: center;
    background-color: var(--ol-olive-paper);
    background-image: var(--ol-olive-tex);
    background-size: var(--ol-tex-size);
    --ol-heading: var(--ol-on-olive);
    --ol-text: var(--ol-on-olive);
    --ol-ink-gold: var(--ol-on-olive-gold);
    --ol-sunset: var(--ol-on-olive-gold);
    --ol-sunset-border: rgba(210,182,128,0.45);
    --ol-foil: 0 1px 1.5px rgba(22,24,10,0.45);
    color: var(--ol-on-olive);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-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(--ol-on-olive-gold) 14%, var(--ol-on-olive-gold) 86%, transparent);
    opacity: 0.7;
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-footer-inner { position: relative; z-index: 1; }
/* Corona de olivo (lámina propia, graduada al salvia de la rama) con las iniciales
   en oro en su centro medido (50.2% / 51.1% del asset) */
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-footer-wreath {
    position: relative; width: clamp(170px, 42cqw, 230px); aspect-ratio: 640 / 610;
    margin: 0 auto clamp(18px, 2.6cqw, 28px);
    background: url('/media/archive/nupcii.com/images/templates/oliva/corona-olivo.webp') center / contain no-repeat;
    filter: drop-shadow(0 6px 8px rgba(6,8,2,0.45));
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-footer-wreath-mono {
    position: absolute; left: 50.2%; top: 51.1%; translate: -50% -50%;
    white-space: nowrap;
    font-family: var(--font-ol-name); font-weight: 400;
    font-size: clamp(26px, 6cqw, 34px); letter-spacing: 0.06em; line-height: 1;
    color: #CDAE72;
    text-shadow: 0 1px 1px rgba(16,18,6,0.5);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-footer-wreath-mono i { font-family: var(--font-ol-display); font-style: italic; font-size: 0.86em; margin: 0 0.08em; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-footer-inner { max-width: 780px; margin: 0 auto; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-footer-names {
    display: flex; flex-wrap: wrap; justify-content: center; align-items: baseline;
    column-gap: 0.3em; row-gap: 0;
    font-family: var(--font-ol-script); font-style: normal;
    font-size: clamp(30px, 4cqw, 46px); line-height: 1.15;
    color: var(--ol-on-olive-name);
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-footer-names .ol-foot-name { white-space: nowrap; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-footer-names .ol-foot-amp { color: var(--ol-on-olive-amp); }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-footer-date {
    font-family: var(--font-ol-body); font-size: 12px; letter-spacing: 3px; text-transform: uppercase;
    color: var(--ol-ink-gold); margin-top: 10px;   /* AA: el oro daba 2.7:1 sobre el velo de seda */
}
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-footer-credit { font-family: var(--font-ol-body); font-size: 12px; color: var(--ol-text); opacity: 0.7; margin-top: 22px; }
.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-footer-link { color: var(--ol-ink-gold); text-decoration: none; border-bottom: 1px solid var(--ol-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="oliva"][data-archive-locale="ru"] .ol-hero-name,.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-hero-amp,.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-ded-name,.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-ded-amp,.archive-sheet[data-archive="oliva"][data-archive-locale="ru"] .ol-footer-names { letter-spacing: 3px; }

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


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

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

.archive-sheet[data-archive="oliva"][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(62, 63, 48, 0.38);
    color: #3E3F30; 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="oliva"][data-archive-locale="ru"] .vei-skip:hover { background: rgba(62, 63, 48, 0.08); }
.archive-sheet[data-archive="oliva"][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="oliva"][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="oliva"][data-archive-locale="ru"] .vei-seal:focus-visible { outline: 2px solid #3E3F30; 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="oliva"][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="oliva"][data-archive-locale="ru"] .vei-knot-tap { position: absolute; z-index: 4; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.archive-sheet[data-archive="oliva"][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="oliva"][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="oliva"][data-archive-locale="ru"] .vei-seal { container-type: size; }
.archive-sheet[data-archive="oliva"][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: 30cqh;
    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="oliva"][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="oliva"][data-archive-locale="ru"] .vei-stage[data-variant='desktop'] .vei-monogram { font-size: 17px; font-size: 30cqh; }

.archive-sheet[data-archive="oliva"][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(62, 63, 48, 0.6);
    animation: veiHintFade 2.6s ease-in-out 1.2s infinite !important;
    transition: opacity .45s ease !important;
}
.archive-sheet[data-archive="oliva"][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="oliva"][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(62, 63, 48, 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="oliva"][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="oliva"][data-archive-locale="ru"] .vei-stage[data-variant='desktop'].is-opening .vei-seal {
    transition: opacity 300ms ease 300ms !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="oliva"][data-archive-locale="ru"] .vei-stage.is-opening .vei-hint { animation: none !important; opacity: 0; pointer-events: none; }
.archive-sheet[data-archive="oliva"][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="oliva"][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="oliva"][data-archive-locale="ru"] .vei-stage.vei-blooming .vei-bloom { opacity: 1; }

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

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