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

        .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] {
            --color-primary: #4A1216;
            --color-secondary: #EADFD6;
            --color-accent: #8E6A3A;
            --color-background: #F8F2EA;
            --color-text: #3A1C1E;
            --color-heading: #4A1216;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .reveal-fade-up.reveal-visible,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .reveal-fade-down.reveal-visible,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .reveal-fade-left.reveal-visible,.archive-sheet[data-archive="carmesi"][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="carmesi"][data-archive-locale="ru"] .reveal-fade-up,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .reveal-fade-down,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .reveal-fade-left,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .reveal-fade-right,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .reveal-scale,.archive-sheet[data-archive="carmesi"][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 carmesi 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="carmesi"][data-archive-locale="ru"] { --vei-mono-font: 'Playfair Display', 'Cormorant Garamond', serif; }

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

    /* ── Tokens de paleta (de $colors) ── */
    --cm-sunset:       #4A1216;
    --cm-sunset-dim:   rgba(74,18,22,0.10);
    --cm-sunset-soft:  rgba(74,18,22,0.16);
    --cm-sunset-border:rgba(74,18,22,0.30);
    --cm-cream:        #EADFD6;
    --cm-olive:        #8E6A3A;
    --cm-olive-dim:    rgba(142,106,58,0.12);
    --cm-olive-soft:   rgba(142,106,58,0.20);
    --cm-olive-border: rgba(142,106,58,0.32);
    --cm-bg:           #F8F2EA;
    --cm-text:         #3A1C1E;
    --cm-heading:      #4A1216;
    --cm-head-soft:    rgba(74,18,22,0.14);
    /* Superficies (tokenizadas para soportar paletas claras y oscuras) */
    --cm-paper:        #F6EFE4;
    --cm-paper-feat:   #F0E7DC;
    --cm-card:         #FDFAF5;
    --cm-surface:      #F3ECE2;
    --cm-keyline:      rgba(142, 106, 58, 0.32);
    --cm-btn-hover:    #3F0D0F;
    --cm-btn-bg:       #5A1519;      /* fondo de botón: bronce, blanco encima pasa AA */
    --cm-ink-gold:     #6E5433;    /* tinta bronce del texto pequeño informativo */
    --cm-on-accent:    #FFFFFF;
    --cm-frame:        #FFFFFF;
    --cm-ph-fill:      linear-gradient(160deg, #EADFD6 0%, #D9C9BF 100%);
    --cm-amp:          rgba(142, 106, 58, 0.16);
    --cm-hero-bg:      #3F0D0F;
    --cm-hero-ink:     #E9DCCB;
    --cm-hero-heading: #D4B27A;
    --cm-hero-accent:  #F4EBDD;
    --cm-hero-line:    rgba(212, 178, 122, 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 carmesi. */
    --cm-foil:    none;
    --cm-foil-sm: none;
    --cm-gold:    #8E6A3A;
    --cm-ink-heading: #4A1216;
    --cm-ink-text:    #3A1C1E;
    --cm-ink-label:   #6E5433;   /* oro viejo plano de filetes y acentos */
    --cm-veil-rgb: 246,239,228;
    /* Papeles: el del cuerpo (crema) y el del sobre (carmesi), mismas fibras */
    --cm-wine-tex:     url('/media/archive/nupcii.com/images/templates/carmesi/terciopelo-suave.webp');
    --cm-wine-paper:   #3F0D0F;
    --cm-on-wine:      #F4EBDD;
    --cm-on-wine-gold: #D4B27A;
    --cm-on-wine-name: #D4B27A;
    --cm-on-wine-amp:  #F4EBDD;
    /* Piezas de papelería (lo que viene dentro del sobre) */
    --cm-lacre:   url('/media/archive/nupcii.com/images/templates/carmesi/lacre-carmesi.webp');
    --cm-tex-size:      380px;   /* perilla: escala del grano (la tesela mide 600px) */
    /* FIRMA DE LA CASA: pieza de papel marfil con UN filete de oro interior fino y
       plano (ni cantos dorados ni biseles), apoyada sobre el terciopelo con sombra
       honda. Las cinco tarjetas del cuerpo la comparten. */
    --cm-piece-paper:  var(--cm-paper);
    --cm-piece-line:   rgba(142, 106, 58, 0.55);     /* oro viejo, hairline */
    --cm-piece-inset:  9px;                           /* distancia del filete al canto */
    --cm-piece-shadow: drop-shadow(0 26px 30px rgba(12, 2, 3, 0.55)) drop-shadow(0 4px 6px rgba(12, 2, 3, 0.35));

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

    /* "LA VELADA": el cuerpo ES el terciopelo vino del sobre, UNO solo para toda la
       página y vive aquí, en el contenedor (las secciones son transparentes: si cada
       una pintara su fondo taparía la sombra de la pieza anterior y se vería una
       franja en cada junta). Sobre el terciopelo solo van caligrafía, titulares y
       oro; todo texto de lectura vive en piezas de papel marfil apoyadas encima.
       Tesela terciopelo-suave.webp (ajuste de Andrés, 8 oct: la anterior "parecía una
       pared de ladrillo"): la misma tesela de terciopelo con las motas claras
       desenfocadas (σ 1.4, aplicado sobre un mosaico 3x3 para que siga sin costura) y el
       contraste al 45% alrededor del tono medio. */
    background-color: var(--cm-wine-paper);
    background-image: var(--cm-wine-tex);
    background-size: var(--cm-tex-size);
    --cm-heading:  var(--cm-on-wine);
    --cm-text:     var(--cm-on-wine);
    --cm-ink-gold: var(--cm-on-wine-gold);
    --cm-gold:     var(--cm-on-wine-gold);
    color: var(--cm-text);
    font-family: var(--font-cm-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 carmesi 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="carmesi"][data-archive-locale="ru"] .cm-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="carmesi"][data-archive-locale="ru"] .cm-wrap :where(h1, h2, h3) { margin: 0; font-weight: 400; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-wrap :where(p) { margin: 0; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-wrap :where(a) { color: inherit; }

/* Sin capa de grano procedural: sobre el vino sumaba puntitos nítidos que, con las
   motas de la tesela, hacían leer el fondo como ladrillo (ajuste de Andrés, 8 oct). */

/* ── Entrada cinematográfica (auto-play, escalonada con --d) ── */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-wrap .cm-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="carmesi"][data-archive-locale="ru"].fl-intro-pending .cm-wrap .cm-rise { animation: none !important; }
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"].fl-intro-done .cm-wrap .cm-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="carmesi"][data-archive-locale="ru"] .cm-wrap .cm-rise { animation: none !important; opacity: 1; transform: none; }
}

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

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

/* "Cinta": banda de imagen a ancho completo, muy horizontal, debajo de /guest */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-ribbon {
    width: 100%;
    height: clamp(120px, 20cqw, 260px);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}
/* En Oliva estas secciones eran hojas oliva sobre el crema; en Carmesí TODO es
   terciopelo, así que son transparentes como las demás (la clase se conserva por
   si alguna sección quiere en el futuro un fondo propio). */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-wrap .cm-bg-wine { background: transparent; }
/* Piezas de papel marfil sobre el terciopelo: recuperan la tinta oscura de lectura */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-wrap :is(.cm-program, .cm-gift, .cm-rsvp, .cm-cal, .cm-info-card, .cm-dc-card, .cm-dedicated) {
    --cm-heading:  var(--cm-ink-heading);
    --cm-text:     var(--cm-ink-text);
    --cm-ink-gold: var(--cm-ink-label);
    --cm-gold:     #8E6A3A;
    color: var(--cm-ink-text);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-container { z-index: 2; }

/* ─────────── Cabecera de sección ─────────── */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-head { text-align: center; margin-bottom: clamp(44px, 6cqw, 70px); }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-head-title {
    font-family: var(--font-cm-display);
    font-size: clamp(34px, 6cqw, 56px);
    font-style: italic;
    font-weight: 500;
    color: var(--cm-heading);
    line-height: 1.08;
    text-shadow: var(--cm-foil);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-head-sub {
    font-family: var(--font-cm-body);
    font-size: 12px;
    font-weight: 400;
    letter-spacing: 3.5px;
    text-transform: uppercase;
    color: var(--cm-ink-gold);   /* AA: en oro quedaba <3:1 sobre el papel */
    margin-top: 14px;
    text-shadow: var(--cm-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 Carmesí el ornamento es la línea. */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-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(--cm-gold); opacity: 0.75;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-divider-line,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-divider-mark { display: none; }

/* ─────────── La rúbrica (separador de capítulo) ───────────
   Dos trazos caligráficos espejo en foil dorado con las iniciales de la pareja en el
   hueco central (lámina rubrica-monograma.png de Andrés). El dibujo es una MÁSCARA
   (rubrica.webp, solo alpha, 1000x83): el oro lo pinta el CSS con --cm-gold (oro claro
   sobre el terciopelo) y un brillo de foil muy leve. Hueco central medido: 18.3% del
   ancho, centrado en el recorte. */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-emblem {
    position: relative; container-type: inline-size;
    width: clamp(250px, 64cqw, 430px); aspect-ratio: 1000 / 83;
    margin: 0 auto clamp(30px, 4.6cqw, 48px);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-emblem-art {
    position: absolute; inset: 0;
    background: linear-gradient(100deg, var(--cm-gold) 0%, color-mix(in srgb, var(--cm-gold) 78%, #FFF3CF) 38%, var(--cm-gold) 62%, color-mix(in srgb, var(--cm-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-12c912844d91) center / 100% 100% no-repeat;
            mask: var(--offline-mask-12c912844d91) center / 100% 100% no-repeat;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-emblem-mono {
    position: absolute; left: 50%; top: 50%; translate: -50% -52%;
    white-space: nowrap;
    font-family: var(--font-cm-name); font-weight: 400;
    font-size: 6.2cqw; letter-spacing: 0.06em; line-height: 1;   /* el hueco mide 18.3cqw */
    color: var(--cm-gold);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-emblem-mono i { font-family: var(--font-cm-display); font-style: italic; font-size: 0.9em; margin: 0 0.08em; }


/* ═══════════════ HERO — "LA FOTOGRAFÍA DE LA NOCHE" ═══════════════
   Foto protagonista a sangre y, a su lado, el terciopelo vino con los nombres en
   oro. Entre ambos, UN filete de oro fino y plano (la junta). Nada de V ni lacre:
   el sobre ya se abrió en el intro. Móvil: foto arriba (54svh), filete horizontal,
   textos debajo. Desktop: foto a la izquierda (56%), filete vertical, textos al lado. */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero {
    --cm-flap-line: 1.5px;                        /* grosor del filete de oro de la junta */
    --cm-flap-gold: var(--cm-on-wine-gold);       /* 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(--cm-hero-ink);
    background: transparent;   /* el terciopelo continuo del wrap */
}

/* ── Terciopelo ── El de la portada es el MISMO del wrap, sin fondo propio: una
   segunda capa con la misma tesela pero otro origen dejaba una junta visible al
   pasar al cuerpo. El velo pone solo una luz suave, sin oscurecer el borde inferior
   (un degradado hacia oscuro también se leía como escalón contra el cuerpo). */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-silk { display: none; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-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.07) 0%, rgba(255,248,222,0) 60%);
}

/* ── La foto y su junta ──
   .cm-hero-flap es una capa de oro plano del tamaño de la foto; .cm-hero-flap-photo es
   la foto retirada --cm-flap-line del canto que toca el panel: lo que asoma del oro es
   el filete de la junta (vertical en desktop, horizontal en móvil). */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-photo-half {
    position: relative; z-index: 2; flex: 1 1 56%;
    filter: drop-shadow(0 6px 18px rgba(12,2,3,0.55));
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-flap,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-flap-photo { position: absolute; inset: 0; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-flap { background: var(--cm-flap-gold); }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-flap-photo {
    right: var(--cm-flap-line);
    overflow: hidden;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-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="carmesi"][data-archive-locale="ru"] .cm-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 carmesi la tinta clara lleva solo una sombra corta y oscura */
    --cm-foil:    0 1px 1.5px rgba(22,24,10,0.40);
    --cm-foil-sm: 0 1px 1px rgba(22,24,10,0.35);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-panel-inner { position: relative; z-index: 3; width: 100%; }

/* ── Textos: escala y aire ── */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-eyebrow {
    font-family: var(--font-cm-name);
    font-size: clamp(11px, 1.15cqw, 13.5px); font-weight: 500;
    letter-spacing: 0.3em; text-transform: uppercase; color: var(--cm-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="carmesi"][data-archive-locale="ru"] .cm-hero-name {
    font-family: var(--font-cm-script); font-weight: 400; font-style: normal;
    font-size: clamp(49px, 5.5cqw, 114px); line-height: 1.0; color: var(--cm-hero-heading);
    text-shadow: none;   /* la sombra engordaba el trazo fino de Sloop sobre el carmesi */
    margin: 0;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-amp {
    display: block;
    font-family: var(--font-cm-script); font-weight: 400;
    font-size: clamp(26px, 2.9cqw, 48px); line-height: 1;
    color: var(--cm-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="carmesi"][data-archive-locale="ru"] .cm-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="carmesi"][data-archive-locale="ru"] .cm-hm-line { display: block; width: clamp(22px, 3cqw, 44px); height: 1px; background: var(--cm-hero-line); }
/* Con la fecha a 13px (piso informativo), en teléfonos de 360px o menos la más larga
   ("26 de septiembre de 2026") se partía en dos líneas: ahí se quitan los filetes. */
@container (max-width: 370px) { .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hm-line { display: none; } }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hm-text {
    font-family: var(--font-cm-body);
    font-size: clamp(13px, 1.15cqw, 15px); letter-spacing: 0.3em; text-transform: uppercase;   /* fecha = texto informativo: piso 13px (auditoría, 8 oct) */
    color: var(--cm-hero-ink);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-place {
    font-family: var(--font-cm-display); font-style: italic;
    font-size: clamp(16px, 1.7cqw, 22px); color: var(--cm-hero-accent); margin-top: 12px;
}

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

/* ── Escritorio: filete de oro a lo largo de todo el pie de la portada (mismo trazo
   que la junta foto/panel), que cierra la portada antes del cuerpo (pedido de Andrés) ── */
@container (min-width: 900px) {
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero::after {
        content: ""; position: absolute; left: 0; right: 0; bottom: 0; z-index: 5;
        height: var(--cm-flap-line); background: var(--cm-flap-gold); pointer-events: none;
    }
}

/* ── Móvil: la foto arriba, filete horizontal en la junta, textos debajo ── */
@container (max-width: 899px) {
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero { flex-direction: column; min-height: calc(var(--archive-vh, 1svh) * 100); }
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-photo-half { flex: 0 0 calc(var(--archive-vh, 1svh) * 54); }
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-flap-photo { right: 0; bottom: var(--cm-flap-line); }
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-panel {
        flex: 1 1 auto; align-items: center;
        padding: clamp(24px, calc(var(--archive-vh, 1svh) * 3.6), 40px) 22px clamp(32px, calc(var(--archive-vh, 1svh) * 5), 56px);
    }
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-name { font-size: clamp(43px, 12.6cqw, 94px); }
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-scroll { display: none; }
}

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

.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cd {
    display: flex; align-items: stretch; justify-content: center;
    gap: clamp(8px, 2.4cqw, 22px); flex-wrap: nowrap;
}
/* Cada cifra en su NÚMERO DE MESA: tarjeta marfil vertical con filete de oro
   interior, de pie en un soporte de aro de alambre dorado (fotografía real de
   Andrés, lámina numero-mesa.png; recorte 661x1029 con alpha). Contenido acotado
   (cifra + rótulo), así que la pieza va entera a proporción fija, sin 9-slice.
   Lámina v2 (4:5, bloque macizo): la tarjeta ocupa el 99% del ancho y el 92.3% del
   alto del recorte; el bloque asoma 7.7% por debajo. La pieza es un CONTENEDOR y
   cifra, rótulo y pie van en cqw de su propio ancho: así escalan con la tarjeta y
   nunca la estiran (un padding en % se resuelve contra el ancho del contenedor flex,
   no de la pieza, y en escritorio la deformaba).
   Ajuste de Andrés (8 oct): fuera el bloque de latón, queda SOLO el papel. Tarjeta
   numero-mesa-papel.webp 520x618: la franja inferior que tapaba el bloque es el
   espejo de la superior real (canto + filete) y el corte es recto forzado. Sin el
   bloque la cifra va centrada (--cm-nm-foot 0). */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cd-unit {
    --cm-nm-foot: 0px;
    position: relative; flex: 0 1 clamp(72px, 21.5cqw, 140px); min-width: 0;
    aspect-ratio: 520 / 618;
    container-type: inline-size;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    padding: 0;
    background: url('/media/archive/nupcii.com/images/templates/carmesi/numero-mesa-papel.webp') center / 100% 100% no-repeat;
    filter: drop-shadow(0 18px 22px rgba(12,2,3,0.55)) drop-shadow(0 3px 5px rgba(12,2,3,0.35));
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cd-num {
    font-family: var(--font-cm-display);
    font-size: clamp(30px, 46cqw, 66px);   /* cqw = ancho de la tarjeta */
    font-weight: 500;
    line-height: 0.92;
    color: var(--cm-ink-heading);          /* tinta vino impresa en el marfil */
    font-variant-numeric: lining-nums tabular-nums;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cd-lbl {
    font-family: var(--font-cm-body);
    font-size: clamp(10px, 12cqw, 11px); font-weight: 400;   /* decorativo: piso 10px (auditoría, 8 oct) */
    letter-spacing: 0.26em; text-transform: uppercase;
    color: var(--cm-ink-label);
    margin-top: clamp(8px, 11cqw, 16px);
    margin-bottom: var(--cm-nm-foot);
    padding-left: 0.26em;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cd-sep { display: none; }

/* ═══════════════ LA FECHA: calendario, dedicatoria y foto ═══════════════
   Tres piezas apiladas en el mismo orden en móvil y escritorio: el calendario de pie
   en su atril, la dedicatoria (la pieza central) y la primera foto en su marco de
   rúbricas. Sin cabeceras propias: va pegada al countdown, con menos aire que entre
   capítulos. */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-date {
    display: grid; justify-items: center; justify-content: center;
    grid-template-areas: "cal" "ded" "photo";
    row-gap: clamp(72px, 20cqw, 110px);   /* aire entre piezas (las patas del atril ya cuentan en la caja del calendario) */
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal       { grid-area: cal; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dedicated { grid-area: ded; margin-block: clamp(20px, 5cqw, 44px); }   /* la dedicatoria es la pieza central: aire propio arriba y abajo */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-frame     { grid-area: photo; }
/* Escritorio: el MISMO orden apilado que en móvil (calendario, dedicatoria, foto),
   como en Oliva. Ajuste de Andrés (8 oct): con la foto al lado del calendario la
   dedicatoria quedaba como pie de un par y perdía el protagonismo; sola en su fila,
   entre dos piezas más pequeñas, es el centro de la sección. El calendario baja a
   250px (antes 280) para que la dedicatoria pese aún más. */
@container (min-width: 760px) {
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-date { row-gap: clamp(88px, 9cqw, 128px); }
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-date .cm-cal { --cm-cal-w: min(250px, 78cqw); }   /* 2 clases: la regla base de .cm-cal va después */
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cd-sec   { padding-bottom: clamp(36px, 6cqw, 70px); }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-date-sec { padding-top: clamp(20px, 4cqw, 48px); padding-bottom: clamp(36px, 6cqw, 70px); }
/* Countdown y calendario como UNA sola pieza (ajuste de Andrés, 8 oct): cuando la
   fecha va justo después, el countdown no deja aire abajo y la fecha solo el justo
   arriba: de las cifras a la punta del atril quedan 30px en móvil y 44px en
   escritorio (antes 56 y 118). */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cd-sec:has(+ .cm-date-sec) { padding-bottom: 0; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cd-sec + .cm-date-sec { padding-top: clamp(30px, 3.5cqw, 44px); }
/* Calendario DE PIE en un ATRIL de latón (ajuste de Andrés, 8 oct: el bloque macizo
   no se entendía como soporte). Lámina calendario-atril.png (tarjeta 741px de ancho,
   filete a 30px de los lados y 26px de arriba; la deriva de 7px del filete derecho se
   corrigió con un remapeo lineal por fila). Alto variable, así que tres piezas:
   ::before = CABEZA (canto superior + filete + la punta del atril que asoma 6.61% del
   ancho por ENCIMA de la caja), ::after = CUERPO en 9-slice (60 filas de papel + la
   franja inferior real con su filete, brillo igualado), y .cm-cal-stand = PIE
   (travesaño + patas, 103% del ancho, cuelga 22.8% del ancho bajo la caja). La punta
   y las patas se reservan como margen de la pieza para que la rejilla las cuente.
   GOTCHA cqw: en los pseudoelementos del propio contenedor, 1cqw = 1% de su caja de
   CONTENIDO (sin padding): la pieza va SIN padding y el aire lo ponen los hijos. */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal {
    --card-head: 8.23cqw;
    position: relative; container-type: inline-size;
    --cm-cal-w: min(280px, 78cqw);   /* cqw del wrap: en la rejilla un % sería cíclico; escritorio = 250px */
    width: var(--cm-cal-w);
    margin-top: calc(var(--cm-cal-w) * 0.066);      /* la punta del atril */
    margin-bottom: calc(var(--cm-cal-w) * 0.228);   /* travesaño y patas */
    padding: 0;
    filter: var(--cm-piece-shadow);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal > * { margin-left: 10%; margin-right: 10%; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal > :first-child { margin-top: clamp(26px, 12cqw, 34px); }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal > :nth-last-child(2) { margin-bottom: clamp(30px, 14cqw, 40px); }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal::before {
    content: ""; position: absolute; z-index: 1; left: 0; right: 0;
    top: -6.61cqw; height: 14.84cqw;
    background: url('/media/archive/nupcii.com/images/templates/carmesi/atril-cabeza.webp') top center / 100% 100% no-repeat;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal::after {
    content: ""; position: absolute; z-index: 0; left: 0; right: 0; bottom: 0;
    top: calc(var(--card-head) - 2px);
    border-style: solid; border-width: 0 5.4cqw 8.1cqw;
    border-image: url('/media/archive/nupcii.com/images/templates/carmesi/atril-cuerpo-2.webp') 0 30 45 fill / 0 5.4cqw 8.1cqw stretch;
    background: #F3EEE4;   /* el papel de la lámina: tapa la costura de subpíxel entre tramos del 9-slice */
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal > * { position: relative; z-index: 2; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal-stand {
    position: absolute; z-index: 3; margin: 0;
    left: -1.48cqw; top: calc(100% - 1px);
    width: 102.97cqw; aspect-ratio: 577 / 128;
    background: url('/media/archive/nupcii.com/images/templates/carmesi/atril-pie.webp') center / 100% 100% no-repeat;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal-month {
    font-family: var(--font-cm-display); font-style: italic; font-weight: 400;
    font-size: clamp(21px, 2.6cqw, 26px); line-height: 1.1;
    color: var(--cm-heading); text-align: center; text-transform: capitalize;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal-grid {
    display: grid; grid-template-columns: repeat(7, 1fr);
    margin-top: clamp(10px, 1.4cqw, 14px);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal-dow {
    font-family: var(--font-cm-body);
    font-size: 10px; font-weight: 500; letter-spacing: 0.16em;   /* decorativo: piso 10px (antes 8.5) */
    text-transform: uppercase; color: var(--cm-ink-gold);
    text-align: center; padding-bottom: 7px;
    border-bottom: 1px solid var(--cm-keyline);
    margin-bottom: 8px;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal-day {
    position: relative;
    font-family: var(--font-cm-body); font-size: 12px;
    color: var(--cm-text); text-align: center;
    padding: 5px 0; z-index: 1;
    font-variant-numeric: tabular-nums;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal-day.is-out { opacity: 0.22; }
/* El día de la boda lo sella el lacre real, en miniatura */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal-day.is-day { color: #2D1C02; font-weight: 600; }   /* la tinta del monograma del intro */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal-day.is-day::before {
    content: ""; position: absolute; top: 50%; left: 50%;
    width: 32px; height: 32px;   /* ajuste de Andrés, 8 oct: antes 42px */
    transform: translate(-50%, -52%); z-index: -1;
    background: var(--cm-lacre) center / contain no-repeat;
    filter: drop-shadow(0 2px 3px rgba(40,30,8,0.45));
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-cal-weekday {
    font-family: var(--font-cm-body);
    font-size: 10px; letter-spacing: 0.34em; text-transform: uppercase;   /* decorativo: piso 10px (antes 9.5) */
    color: var(--cm-ink-gold); text-align: center;
    margin-top: clamp(8px, 1.2cqw, 12px);
}

/* Las dos fotos destacadas van en el MISMO marco de rúbricas, con la cinta distinta en
   cada una (decisión de Andrés, 8 oct): marco-cinta.png (listón plano de oro mate con
   rúbricas caligráficas en las cuatro esquinas y una al centro arriba; cinta vino
   ondulada desde la esquina superior derecha) para la foto de la fecha, y
   marco-cinta-b.png (el mismo marco, cinta enrollada abajo en el canto IZQUIERDO) para
   la del itinerario: diagonal en la página y cada cinta hacia afuera de su columna.
   La B salió más baja (hueco 0.791) y se alargó estirando el tramo liso de los
   listones laterales (+125 filas entre 300 y 660) hasta el 0.698 de la A: las dos
   fotos tienen la misma proporción. Mate por componentes; las lazadas cerradas de las
   rúbricas se abren (región cerrada ≥3px en ambas direcciones) y los brillos del
   listón (líneas de 1-2px) se quedan. Dos capas por foto: la foto detrás recortada al
   hueco (~0.5% de solape bajo el listón) y el marco encima. Geometría propia por foto;
   la pieza se corre (--cm-frame-nudge) para centrar el ORO y no la caja, y el ancho de
   B se deriva del de A para que los dos huecos midan igual (A 72.83%, B 76.58%). */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-frame,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-photo {
    --cm-frame-w: min(400px, 84cqw);   /* ancho de la caja A; sin %: en la columna auto de la fecha sería cíclico */
    position: relative; margin: 0;
    translate: var(--cm-frame-nudge, 0) var(--cm-frame-nudge-y, 0);
    filter: drop-shadow(0 22px 28px rgba(12,2,3,0.55)) drop-shadow(0 3px 6px rgba(12,2,3,0.35));
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-frame-photo,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-photo-img { position: absolute; z-index: 1; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-frame-art,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-photo-art {
    position: absolute; inset: 0; z-index: 2; display: block;
    width: 100%; height: 100%; pointer-events: none;
}
/* A, la fecha: recorte 1001x1197, hueco left 7.49 top 7.52 width 72.83 height 87.30 %;
   el oro (con las rúbricas) ocupa 0.6–87.7% del ancho → se corre 5.9% hacia la cinta. */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-frame { width: var(--cm-frame-w); aspect-ratio: 1001 / 1197; --cm-frame-nudge: 5.9%; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-frame-photo {
    left: 7%; top: 7.05%; width: 73.8%; height: 88.25%;
    background-size: cover; background-position: center 30%;
}


/* ═══════════════ INVITACIÓN DEDICADA — "LA TARJETA DE SITIO" ═══════════════
   En una cena de gala el invitado encuentra su nombre en la tarjeta de sitio: aquí la
   dedicatoria es esa tarjeta, marfil con el filete de oro interior. Ajuste de Andrés
   (8 oct, segunda vez): con nombres largos la tarjeta crece y el 9-slice de la lámina
   (sitio4) estiraba unas pocas filas, así que cualquier ondulación del filete se
   volvía líneas cruzadas. Ahora papel y filete son CSS: el papel es el de la casa
   (--cm-piece-paper) y el filete un borde de 1px pintado con el MISMO degradado de oro
   de la rúbrica (brillo de foil), a las distancias medidas en la lámina (3.03cqw
   arriba y abajo, 2.7cqw a los lados). Geometría exacta a cualquier alto. Tinta
   oscura: es una pieza marfil (está en el :is() de piezas claras). Sin padding
   propio: el aire lo ponen los márgenes de los hijos (gotcha cqw de los
   pseudoelementos). */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dedicated {
    position: relative; container-type: inline-size;
    width: min(640px, 100cqw - 48px);   /* cqw del wrap: dentro de la rejilla un % sería cíclico (la pieza es contenedor) */
    margin: 0 auto; text-align: center;
    padding: 0;
    background: var(--cm-piece-paper);
    filter: var(--cm-piece-shadow);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dedicated > * { margin-left: 11%; margin-right: 11%; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dedicated > .cm-ded-eyebrow { margin-top: clamp(38px, 10.5cqw, 60px); }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dedicated > :last-child { margin-bottom: clamp(36px, 10cqw, 56px); }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dedicated::before {
    --cm-ded-foil: color-mix(in srgb, var(--cm-gold) 82%, #E9C98A);
    content: ""; position: absolute; z-index: 1; pointer-events: none;
    inset: 3.03cqw 2.7cqw;
    border: max(1px, 0.24cqw) solid var(--cm-ded-foil);
    border-image: linear-gradient(100deg, var(--cm-ded-foil) 0%, color-mix(in srgb, var(--cm-ded-foil) 72%, #FFF3CF) 38%, var(--cm-ded-foil) 62%, color-mix(in srgb, var(--cm-ded-foil) 86%, #3A2A08) 100%) 1;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dedicated > * { position: relative; z-index: 2; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-ded-stamp {
    position: absolute; z-index: 2;
    top: clamp(6px, 1.6cqw, 14px); right: clamp(8px, 2cqw, 18px);
    font-family: var(--font-cm-name); font-weight: 400;
    font-size: clamp(13px, 1.8cqw, 16px); letter-spacing: 0.08em; line-height: 1;
    color: var(--cm-ink-label); opacity: 0.9;
    top: clamp(20px, 6.2cqw, 36px); right: clamp(20px, 6.2cqw, 36px);   /* dentro del filete (está al 2.7% del canto) */
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-ded-stamp i { font-family: var(--font-cm-display); font-style: italic; margin: 0 0.12em; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-ded-eyebrow {
    font-family: var(--font-cm-name);
    font-size: 12px; font-weight: 400; letter-spacing: 0.3em; text-transform: uppercase;
    color: var(--cm-ink-gold);
    margin: 0 0 clamp(14px, calc(var(--archive-vh, 1svh) * 2.2), 24px);
    padding-left: 0.3em;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-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="carmesi"][data-archive-locale="ru"] .cm-ded-name {
    font-family: var(--font-cm-script); font-weight: 400;
    font-size: clamp(43px, 7cqw, 88px); line-height: 1.35;
    color: var(--cm-heading);
}
/* Nombres largos (varios invitados o tratamientos extensos): cuerpo menor */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-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="carmesi"][data-archive-locale="ru"] .cm-ded-amp {
    font-family: var(--font-cm-script);
    font-size: clamp(24px, 3.4cqw, 42px); line-height: 1;
    color: var(--cm-ink-gold);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-ded-sep {
    display: block; width: clamp(20px, 2.6cqw, 30px); height: 1px;
    background: var(--cm-gold); opacity: 0.6;
    margin: clamp(8px, 1.2cqw, 14px) auto;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-ded-meta {
    font-family: var(--font-cm-name);
    font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; line-height: 1.9;
    color: var(--cm-ink-gold); margin-top: 14px;
}
/* Cupos ("4 personas" / "+3 acompañantes"): cifra en itálica + rótulo, sin caja */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-ded-count {
    display: inline-flex; align-items: baseline; gap: 9px;
    margin: 16px auto 0;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-ded-count-n {
    font-family: var(--font-cm-display); font-style: italic; font-weight: 600;
    font-size: clamp(24px, 3.2cqw, 30px); line-height: 1; color: var(--cm-heading);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-ded-count-l {
    font-family: var(--font-cm-name); font-weight: 500;
    font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--cm-ink-gold);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-ded-rule { display: block; width: clamp(40px, 8cqw, 60px); height: 1px; background: var(--cm-gold); opacity: 0.75; margin: clamp(24px, calc(var(--archive-vh, 1svh) * 3.2), 34px) auto; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-ded-msg {
    font-family: var(--font-cm-display); font-style: italic;
    font-size: clamp(18px, 2.3cqw, 23px); line-height: 1.6;
    color: var(--cm-text); max-width: 30ch; margin: 0 auto;
}

/* ═══════════════ ITINERARIO — "EL PROGRAMA DE LA NOCHE" ═══════════════
   Sobre el terciopelo, UNA sola tarjeta marfil (la pieza de la casa: filete interior
   plano + sombra honda) con los momentos del día como un programa de gala: icono en
   foil, rótulo en versalitas, sede, dirección y enlace, y la hora en la columna
   derecha; entre momentos, un filete de oro. Al lado, la foto recta con el mismo
   filete interior. Nada de hilos, medallones ni botánica. */

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

/* ── La foto: el marco de rúbricas B (ver .cm-frame). Recorte 965x1396, hueco left
   15.85 top 5.52 width 76.58 height 75.86 %; el oro ocupa 8.4–99.6% del ancho y
   0.4–85.6% del alto (la cinta cuelga abajo a la izquierda) → se corre -4% en X y +7%
   en Y. Ancho = 0.951 × A para que los huecos midan igual. ── */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-photo {
    margin: 0 auto; aspect-ratio: 965 / 1396;
    width: min(calc(var(--cm-frame-w) * 0.951), 100%);   /* aquí la columna es fija: el % sí vale */
    --cm-frame-nudge: -4%; --cm-frame-nudge-y: 7%;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-photo-img {
    left: 15.35%; top: 5.02%; width: 77.6%; height: 76.85%;
    display: block; object-fit: cover; object-position: center 30%;
}

/* ── El programa ── */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-program {
    position: relative;
    border: 12px solid transparent;
    background: var(--cm-piece-paper);
    outline: 1px solid var(--cm-piece-line); outline-offset: calc(-1 * var(--cm-piece-inset));
    filter: var(--cm-piece-shadow);
    padding: clamp(10px, 1.6cqw, 18px) clamp(14px, 2.6cqw, 30px);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-program-item {
    position: relative; z-index: 1;
    display: grid;
    grid-template-columns: auto 1fr auto;
    grid-template-areas: "ico body time";
    column-gap: clamp(14px, 2.2cqw, 24px);
    align-items: start;
    padding: clamp(22px, 3cqw, 34px) clamp(4px, 1cqw, 10px);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-program-item + .cm-program-item { border-top: 1px solid var(--cm-keyline); }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-program-body { grid-area: body; min-width: 0; }

/* Iconos del día en foil dorado (capilla / brindis; anillos / pastel): línea fina
   estampada. Son MÁSCARAS (solo alpha), el oro lo pinta el CSS como en la rúbrica.
   Caja de alto común, apoyada arriba junto al rótulo. */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-ico {
    grid-area: ico; flex: none; display: block;
    height: clamp(38px, 4.6cqw, 50px); aspect-ratio: 226 / 300;
    margin-top: -2px;
    background: linear-gradient(100deg, var(--cm-gold) 0%, color-mix(in srgb, var(--cm-gold) 78%, #FFF3CF) 40%, var(--cm-gold) 70%, color-mix(in srgb, var(--cm-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-81a144f26e52) center / contain no-repeat;
            mask: var(--offline-mask-81a144f26e52) center / contain no-repeat;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-ico--glasses {
    aspect-ratio: 258 / 300;
    -webkit-mask-image: var(--offline-mask-d8d9fc616bdd);
            mask-image: var(--offline-mask-d8d9fc616bdd);
}
/* Variante neutra (anillos / pastel), misma lámina de foil */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-ico--rings {
    height: clamp(30px, 3.6cqw, 40px); aspect-ratio: 400 / 300;
    -webkit-mask-image: var(--offline-mask-718b18e1734d);
            mask-image: var(--offline-mask-718b18e1734d);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-ico--cake {
    aspect-ratio: 260 / 300;
    -webkit-mask-image: var(--offline-mask-8a4ef5bff5aa);
            mask-image: var(--offline-mask-8a4ef5bff5aa);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-label {
    font-family: var(--font-cm-body);
    font-size: clamp(10px, 1.15cqw, 11.5px); font-weight: 400;
    letter-spacing: 0.34em; text-transform: uppercase;
    color: var(--cm-ink-gold);
    margin-bottom: clamp(6px, 0.9cqw, 10px);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-time {
    grid-area: time;
    display: flex; align-items: baseline; gap: 5px;
    justify-self: end; margin-top: -2px;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-h {
    font-family: var(--font-cm-display); font-weight: 400;
    font-size: clamp(28px, 3.8cqw, 40px); line-height: 1;
    color: var(--cm-heading);
    font-variant-numeric: lining-nums tabular-nums;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-ampm {
    font-family: var(--font-cm-body);
    font-size: clamp(10px, 1.1cqw, 11px); font-weight: 500; letter-spacing: 0.18em;   /* decorativo: piso 10px (antes 9) */
    color: var(--cm-ink-gold);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-venue {
    font-family: var(--font-cm-display); font-weight: 500;
    font-size: clamp(21px, 2.8cqw, 30px); line-height: 1.16;
    color: var(--cm-heading);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-addr {
    display: flex; align-items: center; gap: 7px;
    font-family: var(--font-cm-body); font-size: clamp(14px, 1.4cqw, 15px);   /* dirección = texto informativo: 14px (antes 12.5) */
    color: var(--cm-text); opacity: 0.85; margin-top: 8px;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-pin { flex: none; width: 15px; height: 15px; color: var(--cm-gold); }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-map {
    display: inline-flex; align-items: center; gap: clamp(14px, 2cqw, 26px);
    margin-top: clamp(12px, 1.6cqw, 18px);
    font-family: var(--font-cm-body); font-size: clamp(10px, 1.15cqw, 11.5px);
    font-weight: 500; letter-spacing: 0.22em; text-transform: uppercase;
    text-decoration: none; color: var(--cm-heading);
    transition: opacity .3s ease !important;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-map span { flex: none; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-arrow { width: 36px; height: 8px; color: var(--cm-gold); }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-map:hover { opacity: 0.7; }
/* Móvil estrecho: la hora baja bajo el rótulo, a la derecha del icono */
@container (max-width: 520px) {
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-program-item { grid-template-columns: auto 1fr; grid-template-areas: "ico time" "ico body"; row-gap: 6px; }
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-tl-time { justify-self: start; }
}


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

/* ═══════════════ CÓDIGO DE VESTIMENTA — "LAS TARJETAS GEMELAS" ═══════════════
   Dos tarjetas marfil iguales (la pieza de la casa: filete interior plano + sombra
   honda) sobre el terciopelo, con el vestido y el esmoquin en foil dorado (máscaras de
   la lámina iconos-vestimenta.png), el rótulo en versalitas y el código en itálica. */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dc {
    display: grid; grid-template-columns: repeat(2, 1fr);
    gap: clamp(22px, 5cqw, 64px);
    max-width: 720px; margin: 0 auto;
    align-items: stretch;   /* lado a lado miden lo mismo aunque una tenga más notas */
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dc-card {
    position: relative; container-type: inline-size;
    text-align: center;
    border: 12px solid transparent;
    background: var(--cm-piece-paper);
    outline: 1px solid var(--cm-piece-line); outline-offset: calc(-1 * var(--cm-piece-inset));
    filter: var(--cm-piece-shadow);
    padding: clamp(28px, 12cqw, 44px) 10% clamp(26px, 11cqw, 40px);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dc-card > * { position: relative; z-index: 1; }
/* Icono en foil dorado (máscara, como capilla y brindis) */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dc-icon {
    display: block; margin: 0 auto clamp(14px, 6cqw, 22px);
    height: clamp(78px, 34cqw, 112px); aspect-ratio: 227 / 360;
    background: linear-gradient(100deg, var(--cm-gold) 0%, color-mix(in srgb, var(--cm-gold) 78%, #FFF3CF) 40%, var(--cm-gold) 70%, color-mix(in srgb, var(--cm-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-db5abea2f61e) center / contain no-repeat;
            mask: var(--offline-mask-db5abea2f61e) center / contain no-repeat;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dc-icon--suit {
    aspect-ratio: 179 / 360;
    -webkit-mask-image: var(--offline-mask-5088116665ad);
            mask-image: var(--offline-mask-5088116665ad);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dc-name {
    font-family: var(--font-cm-name); font-weight: 500;
    font-size: 11.5px; letter-spacing: 0.3em; text-transform: uppercase;
    color: var(--cm-ink-gold);
    padding-left: 0.3em; margin-bottom: 8px;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dc-code { font-family: var(--font-cm-display); font-style: italic; font-size: clamp(28px, 11cqw, 42px); color: var(--cm-heading); line-height: 1.12; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dc .cm-divider { margin: clamp(14px, 5cqw, 22px) auto clamp(12px, 4.4cqw, 18px); }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-dc-notes { font-family: var(--font-cm-body); font-size: 14.5px; line-height: 1.6; color: var(--cm-text); opacity: 0.85; }

/* ═══════════════ REGALOS ═══════════════
   La sección tranquila: sobre la hoja carmesi, 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="carmesi"][data-archive-locale="ru"] #gifts { padding-top: clamp(84px, 11cqw, 132px); padding-bottom: clamp(92px, 12cqw, 148px); }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-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: none;
    background: var(--cm-piece-paper);
    outline: 1px solid var(--cm-piece-line); outline-offset: calc(-1 * var(--cm-piece-inset));
    filter: var(--cm-piece-shadow);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-gift > * { position: relative; z-index: 1; }
/* Icono del tipo de regalo en foil dorado (máscara): sobre / caja / corazón */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-gift-icon {
    display: block; margin: 0 auto clamp(18px, calc(var(--archive-vh, 1svh) * 2.8), 26px);
    height: clamp(50px, 8cqw, 66px); aspect-ratio: 482 / 300;
    background: linear-gradient(100deg, var(--cm-gold) 0%, color-mix(in srgb, var(--cm-gold) 78%, #FFF3CF) 40%, var(--cm-gold) 70%, color-mix(in srgb, var(--cm-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-ec26b926d748) center / contain no-repeat;
            mask: var(--offline-mask-ec26b926d748) center / contain no-repeat;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-gift-icon--regalo {
    height: clamp(62px, 9.5cqw, 80px); aspect-ratio: 450 / 300;
    -webkit-mask-image: var(--offline-mask-e2ee085577fc); mask-image: var(--offline-mask-e2ee085577fc);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-gift-icon--corazon {
    height: clamp(56px, 8.6cqw, 72px); aspect-ratio: 447 / 300;
    -webkit-mask-image: var(--offline-mask-a41393561e9a); mask-image: var(--offline-mask-a41393561e9a);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-gift-title { font-family: var(--font-cm-display); font-style: italic; font-size: clamp(28px, 4.4cqw, 42px); color: var(--cm-heading); margin-bottom: 16px; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-gift-text { font-family: var(--font-cm-display); font-size: clamp(17px, 2.4cqw, 21px); line-height: 1.6; color: var(--cm-text); }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-gift-list { list-style: none; padding: 0; margin: 24px 0 0; display: flex; flex-direction: column; gap: 12px; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-gift-list li {
    font-family: var(--font-cm-body); font-size: 15px; color: var(--cm-text);
    padding-bottom: 12px; border-bottom: 1px solid color-mix(in srgb, var(--cm-gold) 38%, transparent);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-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 carmesi, por legibilidad, y
   la versión impresa sin tarjeta, que Andrés prefirió con tarjeta.) */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-info {
    display: flex; flex-direction: column; align-items: center;
    gap: clamp(18px, 4cqw, 26px);
    max-width: 1040px; margin: 0 auto;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-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: none;
    background: var(--cm-piece-paper);
    outline: 1px solid var(--cm-piece-line); outline-offset: calc(-1 * var(--cm-piece-inset));
    filter: var(--cm-piece-shadow);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-info-card > * { position: relative; z-index: 1; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-info-icon {
    display: block; margin: 0 auto clamp(16px, 2.4cqw, 22px);
    height: clamp(48px, 6cqw, 58px); aspect-ratio: 532 / 300;
    background: linear-gradient(100deg, var(--cm-gold) 0%, color-mix(in srgb, var(--cm-gold) 78%, #FFF3CF) 40%, var(--cm-gold) 70%, color-mix(in srgb, var(--cm-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-795d8ed8f515) center / contain no-repeat;
            mask: var(--offline-mask-795d8ed8f515) center / contain no-repeat;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-info-icon--carro {
    height: clamp(40px, 5cqw, 48px); aspect-ratio: 809 / 300;
    -webkit-mask-image: var(--offline-mask-0817015d9dbe); mask-image: var(--offline-mask-0817015d9dbe);
}
/* Fachada de hotel (Alojamiento): línea fina como el coche, misma caja de alto que la nota */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-info-icon--hotel {
    height: clamp(48px, 6cqw, 58px); aspect-ratio: 353 / 300;
    -webkit-mask-image: var(--offline-mask-735ccc98f221); mask-image: var(--offline-mask-735ccc98f221);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-info-icon--globos {
    height: clamp(66px, 8cqw, 78px); aspect-ratio: 307 / 300;
    -webkit-mask-image: var(--offline-mask-ec4e725aef59); mask-image: var(--offline-mask-ec4e725aef59);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-info-title { font-family: var(--font-cm-display); font-style: italic; font-size: clamp(24px, 3cqw, 30px); color: var(--cm-heading); margin-bottom: 10px; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-info-text { font-family: var(--font-cm-body); font-size: 15px; line-height: 1.65; color: var(--cm-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="carmesi"][data-archive-locale="ru"] .cm-info { flex-direction: row; align-items: stretch; justify-content: center; gap: clamp(20px, 2.6cqw, 32px); }
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-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="carmesi"][data-archive-locale="ru"] .cm-info:has(> :nth-child(4)) { flex-wrap: wrap; }
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-info:has(> :nth-child(4)) .cm-info-card { flex: 0 1 calc(50% - clamp(10px, 1.3cqw, 16px)); max-width: 420px; }
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-info-icon,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-info-icon--carro,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-info-icon--hotel,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-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="carmesi"][data-archive-locale="ru"] .cm-info-icon          { -webkit-mask-size: auto clamp(48px, 6cqw, 58px); mask-size: auto clamp(48px, 6cqw, 58px); }
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-info-icon--carro   { -webkit-mask-size: auto clamp(40px, 5cqw, 48px); mask-size: auto clamp(40px, 5cqw, 48px); }
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-info-icon--hotel   { -webkit-mask-size: auto clamp(48px, 6cqw, 58px); mask-size: auto clamp(48px, 6cqw, 58px); }
    .archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-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 carmesi, 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="carmesi"][data-archive-locale="ru"] #rsvp { padding-bottom: clamp(56px, 8cqw, 96px); }   /* sin sombra en la junta: el terciopelo es continuo */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] #rsvp::after { display: none; }                 /* sin filete inferior: continúa en el footer */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] #rsvp ~ .cm-footer::before { display: none; }   /* ni el superior del footer: una sola hoja */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-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: none;
    background: var(--cm-piece-paper);
    outline: 1px solid var(--cm-piece-line); outline-offset: calc(-1 * var(--cm-piece-inset));
    filter: var(--cm-piece-shadow);
    text-align: center;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-rsvp > * { position: relative; z-index: 1; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-rsvp-intro { font-family: var(--font-cm-display); font-size: clamp(18px, 2.6cqw, 23px); color: var(--cm-text); line-height: 1.55; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-rsvp-intro strong { color: var(--cm-heading); font-weight: 500; }
/* Aire entre el saludo y el formulario (sin fecha límite quedaban pegados) */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-rsvp-intro { margin-bottom: 26px; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-rsvp-intro + .cm-rsvp-deadline { margin-top: -8px; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-rsvp-deadline {
    font-family: var(--font-cm-body); font-size: clamp(14px, 1.9cqw, 16.5px); letter-spacing: 0.5px;
    color: var(--cm-ink-gold); margin-top: 18px; margin-bottom: 30px; line-height: 1.5;   /* AA: en oro (sunset) daba ~3.1 */
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-rsvp-empty {
    margin-top: 26px; padding: 28px;
    border: 1px dashed var(--cm-olive-border); border-radius: var(--cm-radius);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-rsvp-empty p { font-family: var(--font-cm-body); font-size: 14px; color: var(--cm-text); opacity: 0.8; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-rsvp :is(form, .rsvp-form) { margin-top: 28px; }

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

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

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

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

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

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

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

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

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

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

/* ═══════════════ FOOTER ═══════════════ */
/* El cierre: sobre el mismo terciopelo, el lacre grande con el monograma y los nombres
   en caligrafía de oro. Tinta marfil y oro claro por tokens locales. */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-footer {
    position: relative;
    padding: clamp(56px, 7cqw, 88px) 24px clamp(34px, 4cqw, 50px);
    text-align: center;
    background: transparent;   /* el terciopelo continuo del wrap */
    --cm-heading: var(--cm-on-wine);
    --cm-text: var(--cm-on-wine);
    --cm-ink-gold: var(--cm-on-wine-gold);
    --cm-sunset: var(--cm-on-wine-gold);
    --cm-sunset-border: rgba(210,182,128,0.45);
    --cm-foil: 0 1px 1.5px rgba(22,24,10,0.45);
    color: var(--cm-on-wine);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-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(--cm-on-wine-gold) 14%, var(--cm-on-wine-gold) 86%, transparent);
    opacity: 0.7;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-footer-inner { position: relative; z-index: 1; }
/* La cartela caligráfica (ornamento-footer-3.webp, máscara solo alpha 800x800, recorte
   cuadrado centrado en el hueco) pintada con el MISMO oro plano de la rúbrica y el
   marco; nada de lacre: en Carmesí el cierre es ornamentación, no sello. El hueco
   mide 69cqw de ancho por 56cqw de alto; el monograma (Playfair, oro sobre vino) ocupa
   ~2.3em de ancho → 19cqw cabe con aire. */
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-footer-ornament {
    position: relative; width: clamp(230px, 58cqw, 310px); aspect-ratio: 1 / 1;
    margin: 0 auto clamp(14px, 2.4cqw, 24px);
    container-type: inline-size;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-footer-ornament-art {
    position: absolute; inset: 0;
    background: linear-gradient(100deg, var(--cm-gold) 0%, color-mix(in srgb, var(--cm-gold) 78%, #FFF3CF) 38%, var(--cm-gold) 62%, color-mix(in srgb, var(--cm-gold) 86%, #3A2A08) 100%);
    -webkit-mask: var(--offline-mask-91fa041a82b4) center / 100% 100% no-repeat;
            mask: var(--offline-mask-91fa041a82b4) center / 100% 100% no-repeat;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-footer-ornament-mono {
    position: absolute; left: 50%; top: 50%; translate: -50% -52%;
    white-space: nowrap;
    font-family: var(--font-cm-name); font-weight: 400;
    font-size: 19cqw; letter-spacing: 0.04em; line-height: 1;
    color: var(--cm-gold);
    text-shadow: var(--cm-foil);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-footer-ornament-mono i { font-family: var(--font-cm-display); font-style: italic; font-weight: 400; font-size: 0.8em; margin: 0 0.06em; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-footer-inner { max-width: 780px; margin: 0 auto; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-footer-names {
    display: flex; flex-wrap: wrap; justify-content: center; align-items: baseline;
    column-gap: 0.3em; row-gap: 0;
    font-family: var(--font-cm-script); font-style: normal;
    font-size: clamp(30px, 4cqw, 46px); line-height: 1.15;
    color: var(--cm-on-wine-name);
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-footer-names .cm-foot-name { white-space: nowrap; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-footer-names .cm-foot-amp { color: var(--cm-on-wine-amp); }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-footer-date {
    font-family: var(--font-cm-body); font-size: 12px; letter-spacing: 3px; text-transform: uppercase;
    color: var(--cm-ink-gold); margin-top: 10px;   /* AA: el oro daba 2.7:1 sobre el velo de seda */
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-footer-credit { font-family: var(--font-cm-body); font-size: 12px; color: var(--cm-text); opacity: 0.7; margin-top: 22px; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-footer-link { color: var(--cm-ink-gold); text-decoration: none; border-bottom: 1px solid var(--cm-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="carmesi"][data-archive-locale="ru"] .cm-hero-name,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-hero-amp,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-ded-name,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-ded-amp,.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .cm-footer-names { letter-spacing: 3px; }

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


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

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

.archive-sheet[data-archive="carmesi"][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(234, 223, 207, 0.5);
    color: #EADFCF; 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="carmesi"][data-archive-locale="ru"] .vei-skip:hover { background: rgba(234, 223, 207, 0.08); }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .vei-stage[data-variant='mobile'] .vei-skip { color: #EADFCF; border-color: rgba(234, 223, 207, 0.5); }


.archive-sheet[data-archive="carmesi"][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="carmesi"][data-archive-locale="ru"] .vei-seal:focus-visible { outline: 2px solid #EADFCF; 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="carmesi"][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="carmesi"][data-archive-locale="ru"] .vei-knot-tap { position: absolute; z-index: 4; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.archive-sheet[data-archive="carmesi"][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="carmesi"][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="carmesi"][data-archive-locale="ru"] .vei-seal { container-type: size; }
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .vei-monogram {
    font-family: var(--vei-mono-font, 'Cormorant Garamond', 'Playfair Display', serif);
    font-weight: 500;
    font-size: 22px;        /* fallback sin container queries */
    font-size: 27cqh;
    color: #2D1C02;
    letter-spacing: 1px;
    text-shadow: 0 1px 0 rgba(255, 236, 196, 0.8), 0 -1px 0 rgba(0, 0, 0, 0.35);
    mix-blend-mode: normal;
    line-height: 1;
    user-select: none;
}
.archive-sheet[data-archive="carmesi"][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="carmesi"][data-archive-locale="ru"] .vei-stage[data-variant='desktop'] .vei-monogram { font-size: 17px; font-size: 27cqh; }

.archive-sheet[data-archive="carmesi"][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(234, 223, 207, 0.6);
    animation: veiHintFade 2.6s ease-in-out 1.2s infinite !important;
    transition: opacity .45s ease !important;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .vei-stage[data-variant='mobile'] .vei-hint { color: rgba(234, 223, 207, 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="carmesi"][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(234, 223, 207, 0.5);
    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="carmesi"][data-archive-locale="ru"] .vei-stage.is-opening .vei-seal {
    opacity: 0; animation: none !important; pointer-events: none;
    transition: opacity 250ms ease 250ms !important;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .vei-stage[data-variant='desktop'].is-opening .vei-seal {
    transition: opacity 350ms ease 60ms !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="carmesi"][data-archive-locale="ru"] .vei-stage.is-opening .vei-hint { animation: none !important; opacity: 0; pointer-events: none; }
.archive-sheet[data-archive="carmesi"][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="carmesi"][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%, #FFFBF5 0%, #FAF2E6 45%, #F0E3D2 100%);
    transition: opacity .8s ease !important;
}
.archive-sheet[data-archive="carmesi"][data-archive-locale="ru"] .vei-stage.vei-blooming .vei-bloom { opacity: 1; }

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

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