
    @font-face{font-family:'Cormorant Local';src:url('assets/fonts/cormorant-garamond-400-latin.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap;}
    @font-face{font-family:'Cormorant Local';src:url('assets/fonts/cormorant-garamond-400-italic-latin.woff2') format('woff2');font-style:italic;font-weight:400;font-display:swap;}
    @font-face{font-family:'Bodoni Moda Local';src:url('assets/fonts/bodoni-moda-400-latin.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap;}
    :root {
        /* papel salino y tinta: los mismos del Gate, para que la invitación sea una sola pieza */
        --papel:#E9DCC6; --papel-luz:#F0E6D3; --tinta:#2B2118; --tinta-suave:#5C5245; --sepia:#7A5A3C; --regla:rgba(43,33,24,.22);
        /* pigmentos de la escena pintada */
        --mar-tinta:#1F5F6B; --terra-tinta:#8A4424; --coral:#C2593A; --mar:#2F8190; --mar-luz:#4A9C9E; --selva:#48592C; --arena:#E0B57F; --pampa:#D1B483; --sol:#F2BC7D;
        /* sobre el agua y la selva: marfil para leer, farol para foco y música */
        --marfil:#F4EEE2; --farol:#FFD27A; --noche:#0B1A1F;
        --px:2px;   /* tamaño del píxel lógico; mar-terra-paint.js lo iguala al del Gate */
        --borde-papel-sup:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 2' preserveAspectRatio='none' shape-rendering='crispEdges' fill='%23E9DCC6'%3E%3Crect x='0' y='0' width='1' height='2'/%3E%3Crect x='1' y='0' width='1' height='2'/%3E%3Crect x='2' y='1' width='1' height='1'/%3E%3Crect x='3' y='0' width='1' height='2'/%3E%3Crect x='4' y='0' width='1' height='2'/%3E%3Crect x='5' y='0' width='1' height='2'/%3E%3Crect x='6' y='1' width='1' height='1'/%3E%3Crect x='7' y='1' width='1' height='1'/%3E%3Crect x='8' y='0' width='1' height='2'/%3E%3Crect x='9' y='0' width='1' height='2'/%3E%3Crect x='10' y='0' width='1' height='2'/%3E%3Crect x='11' y='0' width='1' height='2'/%3E%3Crect x='12' y='1' width='1' height='1'/%3E%3Crect x='13' y='0' width='1' height='2'/%3E%3Crect x='14' y='0' width='1' height='2'/%3E%3Crect x='15' y='1' width='1' height='1'/%3E%3Crect x='17' y='1' width='1' height='1'/%3E%3Crect x='18' y='0' width='1' height='2'/%3E%3Crect x='19' y='0' width='1' height='2'/%3E%3Crect x='20' y='0' width='1' height='2'/%3E%3Crect x='21' y='1' width='1' height='1'/%3E%3Crect x='22' y='0' width='1' height='2'/%3E%3Crect x='23' y='0' width='1' height='2'/%3E%3C/svg%3E");
        --borde-papel-inf:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 2' preserveAspectRatio='none' shape-rendering='crispEdges' fill='%23E9DCC6'%3E%3Crect x='0' y='0' width='1' height='2'/%3E%3Crect x='1' y='0' width='1' height='2'/%3E%3Crect x='2' y='0' width='1' height='1'/%3E%3Crect x='3' y='0' width='1' height='2'/%3E%3Crect x='4' y='0' width='1' height='2'/%3E%3Crect x='5' y='0' width='1' height='2'/%3E%3Crect x='6' y='0' width='1' height='1'/%3E%3Crect x='7' y='0' width='1' height='1'/%3E%3Crect x='8' y='0' width='1' height='2'/%3E%3Crect x='9' y='0' width='1' height='2'/%3E%3Crect x='10' y='0' width='1' height='2'/%3E%3Crect x='11' y='0' width='1' height='2'/%3E%3Crect x='12' y='0' width='1' height='1'/%3E%3Crect x='13' y='0' width='1' height='2'/%3E%3Crect x='14' y='0' width='1' height='2'/%3E%3Crect x='15' y='0' width='1' height='1'/%3E%3Crect x='17' y='0' width='1' height='1'/%3E%3Crect x='18' y='0' width='1' height='2'/%3E%3Crect x='19' y='0' width='1' height='2'/%3E%3Crect x='20' y='0' width='1' height='2'/%3E%3Crect x='21' y='0' width='1' height='1'/%3E%3Crect x='22' y='0' width='1' height='2'/%3E%3Crect x='23' y='0' width='1' height='2'/%3E%3C/svg%3E");
        --borde-sombra-sup:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 2' preserveAspectRatio='none' shape-rendering='crispEdges' fill='%230B0E18' fill-opacity='0.45'%3E%3Crect x='0' y='0' width='1' height='2'/%3E%3Crect x='1' y='0' width='1' height='2'/%3E%3Crect x='2' y='1' width='1' height='1'/%3E%3Crect x='3' y='0' width='1' height='2'/%3E%3Crect x='4' y='0' width='1' height='2'/%3E%3Crect x='5' y='0' width='1' height='2'/%3E%3Crect x='6' y='1' width='1' height='1'/%3E%3Crect x='7' y='1' width='1' height='1'/%3E%3Crect x='8' y='0' width='1' height='2'/%3E%3Crect x='9' y='0' width='1' height='2'/%3E%3Crect x='10' y='0' width='1' height='2'/%3E%3Crect x='11' y='0' width='1' height='2'/%3E%3Crect x='12' y='1' width='1' height='1'/%3E%3Crect x='13' y='0' width='1' height='2'/%3E%3Crect x='14' y='0' width='1' height='2'/%3E%3Crect x='15' y='1' width='1' height='1'/%3E%3Crect x='17' y='1' width='1' height='1'/%3E%3Crect x='18' y='0' width='1' height='2'/%3E%3Crect x='19' y='0' width='1' height='2'/%3E%3Crect x='20' y='0' width='1' height='2'/%3E%3Crect x='21' y='1' width='1' height='1'/%3E%3Crect x='22' y='0' width='1' height='2'/%3E%3Crect x='23' y='0' width='1' height='2'/%3E%3C/svg%3E");
        --borde-sombra-inf:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 2' preserveAspectRatio='none' shape-rendering='crispEdges' fill='%230B0E18' fill-opacity='0.45'%3E%3Crect x='0' y='0' width='1' height='2'/%3E%3Crect x='1' y='0' width='1' height='2'/%3E%3Crect x='2' y='0' width='1' height='1'/%3E%3Crect x='3' y='0' width='1' height='2'/%3E%3Crect x='4' y='0' width='1' height='2'/%3E%3Crect x='5' y='0' width='1' height='2'/%3E%3Crect x='6' y='0' width='1' height='1'/%3E%3Crect x='7' y='0' width='1' height='1'/%3E%3Crect x='8' y='0' width='1' height='2'/%3E%3Crect x='9' y='0' width='1' height='2'/%3E%3Crect x='10' y='0' width='1' height='2'/%3E%3Crect x='11' y='0' width='1' height='2'/%3E%3Crect x='12' y='0' width='1' height='1'/%3E%3Crect x='13' y='0' width='1' height='2'/%3E%3Crect x='14' y='0' width='1' height='2'/%3E%3Crect x='15' y='0' width='1' height='1'/%3E%3Crect x='17' y='0' width='1' height='1'/%3E%3Crect x='18' y='0' width='1' height='2'/%3E%3Crect x='19' y='0' width='1' height='2'/%3E%3Crect x='20' y='0' width='1' height='2'/%3E%3Crect x='21' y='0' width='1' height='1'/%3E%3Crect x='22' y='0' width='1' height='2'/%3E%3Crect x='23' y='0' width='1' height='2'/%3E%3C/svg%3E");
        --color-canvas:#0B1A1F; --color-ink:#2B2118; --color-action:#2B2118; --color-focus:#2B2118;
        --font-body:system-ui,-apple-system,'Segoe UI',sans-serif;
        --font-display:'Bodoni Moda Local','Cormorant Local',Georgia,serif;
        --font-serif:'Cormorant Local',Georgia,serif;
    }
    @media(min-width:900px){:root{--px:3px;}}
    *,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
    html{scroll-behavior:smooth;font-synthesis:style;}
    body{font-family:var(--font-body);background:var(--color-canvas);color:var(--marfil);overflow-x:hidden;}
    body.portal-locked{overflow:hidden;}
    h1,h2,h3,h4{font-family:var(--font-serif);font-weight:400;}
    [hidden]{display:none!important;}
    .noscript-note{position:relative;z-index:10000;padding:12px 16px;background:var(--papel);color:var(--tinta);text-align:center;font-size:16px;}
    /* la lámina entra, el cielo se queda: el fade vive en los hijos, nunca en la sección */
    .fade-section>:not(.cielo){transition:opacity .8s ease,transform .8s ease;}
    .fade-section.fuera>:not(.cielo){opacity:0;transform:translateY(-10px);}   /* todo entra de arriba hacia abajo */
    @keyframes rotate-ring{to{transform:rotate(360deg)}}
    @keyframes kcBar{0%{height:2px;opacity:.5}100%{opacity:1}}


    /* ═══ MODAL — MAR & TERRA REDISEÑO TOTAL ═══ */

    #modal-inicio{position:fixed;inset:0;z-index:9999;overflow:hidden;transition:opacity 1.8s cubic-bezier(.4,0,.2,1),visibility 1.8s;}
    #modal-inicio.cerrado{opacity:0;visibility:hidden;pointer-events:none;}

    /* ═══ GATE · LA COSTA SE PINTA SOLA — papel salino, lienzo pixel y cartucho de tinta ═══ */
    #modal-inicio{--gate-paper:#E9DCC6;--gate-ink:#2B2118;--gate-ink-soft:rgba(43,33,24,.74);--gate-sepia:#7A5A3C;--gate-coral:#C2593A;--gate-sol:#E8845A;--gate-type-in:4.3s;--gate-cta-in:5.4s;background:var(--gate-paper);color:var(--gate-ink);}
    #modal-inicio[data-state="dissolve"],#modal-inicio[data-state="complete"]{background:transparent;}
    .mt-canvas{position:absolute;top:0;left:0;display:block;image-rendering:crisp-edges;image-rendering:pixelated;pointer-events:none;}
    .mt-band{position:absolute;left:0;right:0;bottom:0;z-index:2;display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 16px calc(14px + env(safe-area-inset-bottom));text-align:center;}
    /* la tinta del cartucho llega casi al final del dibujo y baja renglón por renglón, de arriba abajo */
    .mt-band>*{animation:mtInk .9s cubic-bezier(.3,.6,.2,1) var(--gate-type-in) both;}
    .mt-band>.mt-names{animation-delay:calc(var(--gate-type-in) + .3s);}
    .mt-band>.mt-tagline{animation-delay:calc(var(--gate-type-in) + .7s);}
    .mt-band>.mt-enter{animation-delay:var(--gate-cta-in);}
    .mt-band>.mt-kcs{animation-delay:calc(var(--gate-cta-in) + .4s);}
    @keyframes mtInk{from{opacity:0;clip-path:inset(-20px -20px calc(100% + 20px) -20px);transform:translateY(-3px);}55%{opacity:1;}to{opacity:1;clip-path:inset(-20px);transform:none;}}
    .mt-pre,.mt-tagline,.mt-kcs{font-family:var(--font-serif);font-style:italic;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gate-ink-soft);}
    .mt-tagline{font-family:var(--font-display);font-style:normal;font-size:.86rem;letter-spacing:.2em;color:var(--gate-ink);}
    .mt-names{font-family:var(--font-display);font-size:clamp(2.2rem,9vw,3.4rem);line-height:1;letter-spacing:.01em;color:var(--gate-ink);}
    .mt-amp{font-family:var(--font-serif);font-style:italic;color:var(--gate-sepia);}
    .mt-goo{position:absolute;width:0;height:0;}
    /* botón de marea: contorno de tinta que el agua llena; en reposo la ola lame la base y dice «aquí se toca» */
    .mt-enter{position:relative;z-index:0;display:inline-flex;align-items:center;gap:12px;min-width:44px;min-height:52px;margin-top:10px;padding:12px 28px 12px 20px;background:transparent;border:2px solid var(--gate-ink);border-radius:999px;color:var(--gate-ink);font:inherit;cursor:pointer;overflow:hidden;transition:color .6s ease;-webkit-tap-highlight-color:transparent;}
    .mt-enter-marea{position:absolute;inset:0 0 -3px;z-index:-1;filter:url(#mt-goo);pointer-events:none;}
    .mt-enter-marea i{position:absolute;top:0;width:38%;height:100%;border-radius:50%;background:#2F8190;transform:scale(1.45) translateY(125%);transition:transform .7s cubic-bezier(.3,.7,.2,1);animation:mtOla 3.2s ease-in-out calc(var(--gate-cta-in) + 1s) infinite;}
    .mt-enter-marea i:nth-child(1){left:-6%;}
    .mt-enter-marea i:nth-child(2){left:31%;animation-delay:calc(var(--gate-cta-in) + 1.15s);}
    .mt-enter-marea i:nth-child(3){left:68%;animation-delay:calc(var(--gate-cta-in) + 1.3s);}
    @keyframes mtOla{0%,100%{transform:scale(1.45) translateY(125%);}45%{transform:scale(1.45) translateY(96%);}}
    .mt-enter:hover,.mt-enter:focus-visible,.mt-enter:active,#modal-inicio.abriendo .mt-enter{color:var(--gate-paper);}
    .mt-enter:hover .mt-enter-marea i,.mt-enter:focus-visible .mt-enter-marea i,.mt-enter:active .mt-enter-marea i,#modal-inicio.abriendo .mt-enter-marea i{animation:none;transform:scale(1.45) translateY(0);}
    .mt-enter-mark{display:block;flex:0 0 auto;width:46px;height:16px;overflow:visible;}
    .mt-enter-sun{fill:var(--gate-coral);transition:transform .7s cubic-bezier(.55,0,.25,1);}
    .mt-enter-horizon{stroke:currentColor;stroke-width:1.1;}
    .mt-enter-wave{fill:none;stroke:var(--gate-sepia);stroke-width:1;stroke-linecap:round;transition:stroke .6s;}
    .mt-enter:hover .mt-enter-wave,.mt-enter:focus-visible .mt-enter-wave,.mt-enter:active .mt-enter-wave,#modal-inicio.abriendo .mt-enter-wave{stroke:#D1B483;}
    .mt-enter-label{font-family:var(--font-serif);font-size:.92rem;letter-spacing:.22em;text-transform:uppercase;}
    .mt-enter:hover .mt-enter-sun{transform:translateY(2px);}
    #modal-inicio .mt-enter:focus-visible{outline:2px solid var(--gate-ink);outline-offset:4px;}
    /* el gesto se acusa al instante: el sol del sello se pone y la tinta se retira para el atardecer */
    #modal-inicio.abriendo .mt-enter-sun{transform:translateY(10px);}
    #modal-inicio.abriendo .mt-band{opacity:0;transition:opacity .55s ease .15s;pointer-events:none;}
    .mt-kcs{margin-top:2px;font-size:.62rem;}
    .mt-kcs span{color:var(--gate-sepia);}
    @media (min-aspect-ratio:4/3) and (max-height:760px){.mt-band{gap:3px;padding-top:10px;}.mt-names{font-size:clamp(2rem,6vh,2.8rem);}}

/* ═══ PORTADA — la foto también se pinta: bitono mar/arena, en la rejilla pixel del Gate ═══ */
    .portada{width:100%;min-height:100vh;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding-bottom:max(8vh,84px);text-align:center;background:#123039;}   /* «Desliza» nunca pisa la sede */
    /* respaldo sin JS o sin lienzo: la foto real, llevada a agua y arena */
    .portada-bg{position:absolute;inset:0;background:url('/assets/boda/novios-new/sol.jpg') center 22%/cover no-repeat;filter:brightness(.42) saturate(.5) sepia(.35) hue-rotate(150deg);}
    .portada-overlay{position:absolute;inset:0;background:linear-gradient(to top,rgba(11,26,31,.94) 0%,rgba(11,26,31,.6) 34%,transparent 62%);}
    html.hero-pixel .portada-bg{background:none;filter:none;}
    html.hero-pixel .portada-overlay{display:none;}
    .portada-pixel{position:absolute;top:0;left:0;display:block;image-rendering:crisp-edges;image-rendering:pixelated;pointer-events:none;}
    .portada-horizonte{position:absolute;top:47%;left:0;right:0;height:1px;z-index:2;pointer-events:none;background:linear-gradient(to right,transparent 0%,rgba(208,152,64,.08) 18%,rgba(208,152,64,.42) 50%,rgba(208,152,64,.08) 82%,transparent 100%);}
    .portada-contenido{position:relative;z-index:3;padding:0 16px;}
    .portada-nombres{font-family:var(--font-display);font-style:normal;font-size:clamp(3.4em,11vw,7.2em);line-height:.88;letter-spacing:2px;color:var(--marfil);text-shadow:var(--px) var(--px) 0 var(--noche);}
    .nombres-letras .l{display:inline-block;will-change:transform;}
    .letras-en-espera .nombres-letras .l{opacity:0;}   /* anime.js las sube desde el horizonte cuando el Gate se disuelve */
    .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}
    /* Gate focus transfer: keep pointer focus quiet; keyboard gets the open ink flourish below. */
    .portada-nombres:focus{outline:0;outline-offset:0;}
    .portada-trazo{display:block;width:min(92vw,360px);height:56px;overflow:visible;margin:6px auto 8px;pointer-events:none;}
    .portada-trazo path{fill:none;stroke-linecap:round;stroke-linejoin:round;}
    /* el ícono del Gate en tinta: horizonte, aro, medio sol, olas (mar) y pampa con hoja (terra) */
    .portada-trazo__horizonte{stroke:rgba(214,178,126,.8);stroke-width:1.2;}
    .portada-trazo__aro{stroke:#D6B27E;stroke-width:1.6;}
    .portada-trazo__sol{stroke:#E8845A;stroke-width:1.9;}
    .portada-trazo__ola{stroke:#86CFC2;stroke-width:1.3;}
    .portada-trazo__pampa{stroke:#D1B483;stroke-width:1.3;}
    .portada-trazo__hoja{stroke:#9DB27A;stroke-width:1.3;}
    html[data-gate-input="keyboard"] .portada-nombres:focus + .portada-trazo .portada-trazo__horizonte{stroke:var(--farol);stroke-width:2.1;}
    .portada-fecha{font-family:var(--font-serif);font-size:clamp(1em,3vw,1.5em);letter-spacing:.18em;color:var(--marfil);}
    .portada-lugar{margin-top:8px;font-size:.72em;letter-spacing:.2em;text-transform:uppercase;color:var(--pampa);}
    .scroll-hint{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);z-index:3;display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0 18px;border:1px solid rgba(214,178,126,.6);border-radius:999px;background:rgba(11,26,31,.45);color:var(--marfil);font-size:.64em;letter-spacing:.28em;text-transform:uppercase;text-decoration:none;}
    .scroll-hint .px{display:block;width:12px;height:12px;color:#D6B27E;animation:marBob 2.2s ease-in-out infinite;}
    .scroll-hint:hover{border-color:#D6B27E;}
    .scroll-hint:focus-visible{outline:2px solid var(--farol);outline-offset:3px;}
    @keyframes marBob{0%,100%{transform:translateY(-2px);}50%{transform:translateY(3px);}}

/* ═══ PAISAJE — mar o terra por sección; el lienzo pinta la textura y la orilla donde se tocan ═══ */
    .seccion,.rsvp-seccion,.captura-section,.secreto-wrap,.kc-footer{position:relative;isolation:isolate;contain:paint;text-align:center;padding:clamp(46px,8vw,84px) 16px;}
    canvas.cielo{position:absolute;top:0;left:0;z-index:-1;display:block;image-rendering:crisp-edges;image-rendering:pixelated;pointer-events:none;}
    /* mar = agua teal que se hunde hacia la noche; terra = selva que se apaga; cada color es el borde inferior de su sección */
    #dedicatoria{background:#3F5A33;padding-top:clamp(110px,18vw,170px);}   /* banda abierta: la primera orilla bajo el Hero */
    #cuenta-regresiva{background:#2B6770;}
    #detalles-evento{background:#26606A;}
    #itinerario{background:#38502F;}
    #historia-sec{background:#21545E;}
    #actividades{background:#324829;}
    #vestimenta{background:#2E4326;}
    #galeria-inspiracion{background:#1C4A54;}
    #antes-de-partir{background:#19424C;}
    #regalos{background:#283B22;}
    #rsvp{background:#15383F;}
    #kc-echoes{background:#112F36;}
    #secreto{background:#1F2E1B;}
    .kc-footer{background:#0B1A1F;}
    .seccion-inner{max-width:860px;margin:0 auto;}

/* ═══ LÁMINAS — papel salino con filo rasgado en píxel y sombra dura; el papel vive en ::before ═══ */
    .lamina{position:relative;isolation:isolate;max-width:760px;margin-inline:auto;padding:clamp(34px,7vw,60px) clamp(20px,5vw,52px);color:var(--tinta);transition:clip-path 1.1s cubic-bezier(.3,.6,.2,1);}
    /* revelado de arriba abajo: la lámina se desenrolla y su contenido cae en cascada, una sola vez */
    .fade-section.fuera .lamina{clip-path:inset(0 0 100% 0);}
    .fade-section.dentro .lamina{clip-path:inset(-14px);}
    .fade-section .lamina>*{transition:opacity .6s ease,transform .6s ease;}
    .fade-section.fuera .lamina>*{opacity:0;transform:translateY(-10px);}
    .lamina>:nth-child(2){transition-delay:.12s;}
    .lamina>:nth-child(3){transition-delay:.22s;}
    .lamina>:nth-child(4){transition-delay:.32s;}
    .lamina>:nth-child(5){transition-delay:.42s;}
    .lamina>:nth-child(n+6){transition-delay:.52s;}
    .lamina::before,.lamina::after{content:"";position:absolute;inset:calc(-2*var(--px)) 0;pointer-events:none;
        background:var(--sup) top left/calc(24*var(--px)) calc(2*var(--px)) repeat-x,var(--inf) bottom left/calc(24*var(--px)) calc(2*var(--px)) repeat-x,linear-gradient(var(--fondo) 0 0) center/100% calc(100% - 4*var(--px)) no-repeat;}
    .lamina::before{z-index:-1;--fondo:var(--papel);--sup:var(--borde-papel-sup);--inf:var(--borde-papel-inf);}
    .lamina::after{z-index:-2;--fondo:rgb(11 14 24/.45);--sup:var(--borde-sombra-sup);--inf:var(--borde-sombra-inf);transform:translate(calc(3*var(--px)),calc(3*var(--px)));}
    .lamina :focus-visible{outline:2px solid var(--tinta);outline-offset:4px;}
    .kcs-watermark,.costa-pretitulo,.historia-deco,.captura-pre-title{display:block;margin-bottom:10px;font-family:var(--font-serif);font-style:italic;font-size:.76rem;letter-spacing:.22em;text-transform:uppercase;color:var(--tinta-suave);}
    .titulo-seccion{font-family:var(--font-serif);font-style:italic;font-size:clamp(2.1rem,6vw,3.2rem);line-height:1.08;color:var(--tinta);}
    .seccion-alt .titulo-seccion em,.historia-titulo em{color:var(--mar-tinta);}
    .seccion-jade .titulo-seccion em,.costa-section .titulo-seccion em,.rsvp-seccion .titulo-seccion em{color:var(--terra-tinta);}
    /* divisor: una línea de tinta punteada en píxel, sin iconos */
    .wdiv{width:min(120px,40%);height:var(--px);margin:18px auto 30px;background:repeating-linear-gradient(90deg,var(--tinta) 0 calc(2*var(--px)),transparent calc(2*var(--px)) calc(4*var(--px)));opacity:.55;}
    .wdiv>*{display:none;}
    .fecha-pendiente{max-width:620px;margin:14px auto 0;font-family:var(--font-serif);font-size:1.12rem;line-height:1.7;color:var(--tinta-suave);}
    .countdown-meta{max-width:560px;margin:18px auto 0;font-size:.82rem;line-height:1.7;color:var(--tinta-suave);}
    .fecha-pendiente strong{font-weight:400;font-style:italic;color:var(--tinta);}   /* solo existe el peso 400: el énfasis es itálica, no negrita falsa */
    /* muestra de pigmento: color que se deshace en tramado hacia el papel */
    .act-swatch,.color-c{--c:var(--mar);display:block;background:linear-gradient(90deg,var(--c) 0 62%,transparent 62%),repeating-conic-gradient(var(--c) 0 25%,transparent 0 50%) 0 0/calc(2*var(--px)) calc(2*var(--px));}

/* ═══ DEDICATORIA ═══ */
    .dedicatoria-panel{max-width:640px;margin:6px auto 0;}
    .dedicatoria-mark{display:block;width:58px;height:28px;margin:0 auto 18px;color:var(--mar-tinta);}
    .dedicatoria-quote{max-width:620px;margin:0 auto;font-family:var(--font-serif);font-style:italic;font-size:clamp(1.3rem,4.4vw,1.85rem);line-height:1.55;color:var(--tinta);text-wrap:pretty;}
    .dedicatoria-firma{display:block;margin-top:20px;font-family:var(--font-serif);font-style:normal;font-size:.86rem;letter-spacing:.24em;text-transform:uppercase;color:var(--terra-tinta);}

/* ═══ CUENTA REGRESIVA — tabla de mareas impresa ═══ */
    .contador{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:min(100%,600px);margin:28px auto 0;border-block:var(--px) solid var(--tinta);}
    .unidad{min-width:0;padding:18px 4px 14px;}
    .unidad+.unidad{border-left:1px solid var(--regla);}
    .unidad .numero{display:block;font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:clamp(2rem,8vw,3.2rem);line-height:1;color:var(--tinta);}
    .unidad .etiqueta{display:block;margin-top:8px;font-family:var(--font-serif);font-style:italic;font-size:clamp(.72rem,2.4vw,.86rem);letter-spacing:.12em;text-transform:uppercase;color:var(--tinta-suave);}
    /* el viaje a la playa: un avioncito pixel cruza sobre la tabla de mareas */
    .vuelo{position:relative;width:min(100%,600px);height:34px;margin:20px auto 0;}
    .vuelo-estela{position:absolute;left:0;right:0;top:50%;height:var(--px);background:repeating-linear-gradient(90deg,var(--mar-tinta) 0 calc(2*var(--px)),transparent calc(2*var(--px)) calc(5*var(--px)));opacity:.4;}
    .vuelo-avion{position:absolute;top:calc(50% - 12px);left:0;width:48px;height:24px;animation:vuelo 9s linear infinite;}
    @keyframes vuelo{0%{left:-48px;opacity:0;transform:translateY(0);}6%{opacity:1;}25%{transform:translateY(-4px);}50%{transform:translateY(0);}75%{transform:translateY(-4px);}94%{opacity:1;}100%{left:100%;opacity:0;transform:translateY(0);}}
    .fade-section.fuera .vuelo-avion{animation-play-state:paused;}

/* ═══ ITINERARIO — la tarde en seis luces: cada boya es el cielo a esa hora ═══ */
    .itinerary-inner{--boya:48px;}
    .costa-timeline{max-width:560px;margin:30px auto 0;padding:0;list-style:none;position:relative;text-align:left;}
    .costa-timeline::before{content:'';position:absolute;left:calc(var(--boya)/2 - var(--px)/2);top:24px;bottom:40px;width:var(--px);background:repeating-linear-gradient(to bottom,var(--tinta) 0 calc(2*var(--px)),transparent calc(2*var(--px)) calc(5*var(--px)));opacity:.5;transform-origin:top;transition:transform 1.2s ease .3s;}
    .fade-section.fuera .costa-timeline::before{transform:scaleY(0);}
    .costa-evento{display:grid;grid-template-columns:var(--boya) minmax(0,1fr);gap:clamp(14px,4vw,24px);align-items:start;padding:10px 0;position:relative;transition:opacity .6s ease,transform .6s ease;}
    .fade-section.fuera .costa-evento{opacity:0;transform:translateX(-14px);}
    .costa-evento:nth-child(1){transition-delay:.35s;}
    .costa-evento:nth-child(2){transition-delay:.5s;}
    .costa-evento:nth-child(3){transition-delay:.65s;}
    .costa-evento:nth-child(4){transition-delay:.8s;}
    .costa-evento:nth-child(5){transition-delay:.95s;}
    .costa-evento:nth-child(6){transition-delay:1.1s;}
    .costa-boya{display:flex;flex-direction:column;align-items:center;gap:6px;position:relative;z-index:1;}
    .costa-boya-circulo{display:block;width:var(--boya);height:var(--boya);border-radius:50%;background:var(--papel);transition:transform .55s cubic-bezier(.34,1.56,.64,1);transition-delay:inherit;}
    .fade-section.fuera .costa-boya-circulo{transform:scale(.4);}
    .costa-boya-circulo .px{display:block;width:100%;height:100%;}
    .costa-boya-hora{font-family:var(--font-display);font-size:.98rem;font-variant-numeric:tabular-nums;color:var(--tinta);background:var(--papel);padding:0 2px;}
    .costa-card{min-width:0;padding-top:6px;}
    .costa-card-titulo{margin:0 0 4px;font-family:var(--font-serif);font-style:italic;font-size:1.35rem;line-height:1.2;color:var(--tinta);}
    .costa-card-desc{margin:0;font-size:.9rem;line-height:1.6;color:var(--tinta-suave);}

/* ═══ HISTORIA — cartela de papel; las fotos viajan sobre el cielo ═══ */
    .historia-header{max-width:560px;margin:0 auto 34px;}
    .historia-titulo{font-family:var(--font-serif);font-style:italic;font-size:clamp(2.1rem,6vw,3.2rem);line-height:1.08;color:var(--tinta);margin-bottom:12px;}
    .historia-intro{max-width:480px;margin:0 auto;font-family:var(--font-serif);font-size:1.08rem;line-height:1.6;color:var(--tinta-suave);}
    .historia-line{width:min(120px,40%);height:var(--px);margin:16px auto 0;background:repeating-linear-gradient(90deg,var(--tinta) 0 calc(2*var(--px)),transparent calc(2*var(--px)) calc(4*var(--px)));opacity:.55;}
    .historia-sticky{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;justify-content:center;overflow:hidden;}
    .historia-track{display:flex;gap:38px;padding:0 55px;will-change:transform;transition:transform .05s linear;}
    @media(max-width:768px){
        .historia-sticky{position:relative;height:auto;overflow:visible;}
        .historia-track{overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:18px;padding:6px 18px 12px;scrollbar-width:none;}
        .historia-track::-webkit-scrollbar{display:none;}
    }
    .hito{flex-shrink:0;width:clamp(255px,68vw,298px);background:var(--papel);scroll-snap-align:start;box-shadow:calc(3*var(--px)) calc(3*var(--px)) 0 rgb(11 14 24/.45);}
    .hito-foto{width:100%;height:175px;overflow:hidden;background:#1F2043;}
    .hito-foto img{display:block;width:100%;height:100%;object-fit:cover;filter:saturate(.85) sepia(.12);}
    .hito-texto{padding:16px 16px 18px;text-align:left;color:var(--tinta);}
    .hito-año{margin-bottom:6px;font-family:var(--font-serif);font-size:.8rem;letter-spacing:.24em;color:var(--mar-tinta);}
    .hito-titulo{margin-bottom:6px;font-family:var(--font-serif);font-style:italic;font-size:1.25rem;color:var(--tinta);}
    .hito-desc{font-size:.86rem;line-height:1.6;color:var(--tinta-suave);}
    .historia-progress{height:var(--px);margin:22px 55px 0;background:rgba(244,238,226,.2);overflow:hidden;}
    .historia-progress-bar{height:100%;width:0%;background:var(--marfil);transition:width .1s linear;}
    .historia-scroll-hint{margin-top:10px;text-align:center;font-size:.66em;letter-spacing:.28em;text-transform:uppercase;color:var(--marfil);}
    .historia-swipe-hint{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:18px;font-size:.74em;letter-spacing:.14em;color:var(--marfil);}
    .swipe-hand .px{display:block;width:16px;height:16px;transform:rotate(90deg);color:var(--marfil);}
    @media(min-width:769px){
        /* anclaje de escritorio: la sección mide lo que el JS le da y el marco fijo ocupa todo su alto, con la cartela dentro */
        #historia-sec{padding:0;}
        #historia-sec>.seccion-inner{max-width:none;height:100%;}
        .historia-sticky{gap:22px;padding:24px 0;}
        .historia-header{margin:0 auto;padding:22px 36px;}
        .historia-track{width:max-content;margin-inline:auto;}
        .historia-progress{width:min(560px,80%);margin:0 auto;}
    }

/* ═══ ACTIVIDADES — cuatro pigmentos ═══ */
    .act-intro{max-width:520px;margin:0 auto;font-family:var(--font-serif);font-size:1.1rem;line-height:1.6;color:var(--tinta-suave);}
    .act-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 16px;margin-top:30px;text-align:left;}
    @media(min-width:760px){.act-grid{grid-template-columns:repeat(4,minmax(0,1fr));}}
    .act-swatch{height:calc(10*var(--px));margin-bottom:12px;}
    .act-swatch--mar{--c:var(--mar);}
    .act-swatch--terra{--c:var(--selva);}
    .act-swatch--materia{--c:#9C7C5E;}
    .act-swatch--luz{--c:var(--sol);}
    .act-card h4{margin-bottom:4px;font-family:var(--font-serif);font-style:italic;font-size:1.3rem;color:var(--tinta);}
    .act-card p{font-size:.86rem;line-height:1.6;color:var(--tinta-suave);}

/* ═══ VESTIMENTA ═══ */
    .paleta{display:flex;justify-content:center;gap:20px;flex-wrap:wrap;margin-top:24px;}
    .color-item{display:flex;flex-direction:column;align-items:center;gap:8px;}
    .color-c{width:calc(24*var(--px));height:calc(14*var(--px));}
    .color-c--jade{--c:#3E5A45;}
    .color-c--marea{--c:#2F6F80;}
    .color-c--arena{--c:#D2B283;}
    .color-c--terracota{--c:#A8583C;}
    .color-n{font-family:var(--font-serif);font-style:italic;font-size:.95rem;letter-spacing:.06em;color:var(--tinta-suave);}
    .dc-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:28px;text-align:left;}
    .dc-card{padding-top:14px;border-top:var(--px) solid var(--tinta);}
    .dc-card h4{margin:0 0 6px;font-family:var(--font-serif);font-style:italic;font-size:1.25rem;color:var(--tinta);}
    .dc-card p{font-size:.88rem;line-height:1.6;color:var(--tinta-suave);}

/* ═══ GALERÍA — Polaroids sobre el agua ═══ */
    .lamina--cartela{max-width:520px;padding:clamp(28px,6vw,44px) clamp(18px,5vw,40px);}
    .lamina--cartela .wdiv{margin-bottom:0;}
    .galeria-mar{max-width:980px;margin:34px auto 0;}
    .galeria-track{display:flex;align-items:center;gap:clamp(16px,3vw,30px);overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;touch-action:pan-x pan-y;padding:22px 10%;scroll-padding-inline:10%;}
    .galeria-track::-webkit-scrollbar{display:none;}
    .galeria-track:focus-visible{outline:2px solid var(--farol);outline-offset:3px;}
    .polaroid{flex:0 0 min(78vw,360px);scroll-snap-align:center;transform:rotate(var(--polaroid-tilt,0deg));}
    .polaroid--1{--polaroid-tilt:-1.2deg;}
    .polaroid--2{--polaroid-tilt:1deg;}
    .polaroid--3{--polaroid-tilt:-.7deg;}
    .polaroid--1 .polaroid-window img{--polaroid-crop:50% 42%;}
    .polaroid--2 .polaroid-window img{--polaroid-crop:50% 55%;}
    .polaroid--3 .polaroid-window img{--polaroid-crop:50% 48%;}
    .polaroid-frame{margin:0;padding:12px 12px 0;position:relative;background:var(--papel-luz);box-shadow:calc(3*var(--px)) calc(3*var(--px)) 0 rgb(11 14 24/.5);}
    .polaroid-window{aspect-ratio:4/3;overflow:hidden;background:#1F2043;}
    .polaroid-window img{display:block;width:100%;height:100%;object-fit:cover;object-position:var(--polaroid-crop,50% 50%);filter:saturate(.85) sepia(.1);}
    .polaroid-caption{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;min-height:76px;padding:14px 7px 13px;color:var(--tinta);text-align:left;}
    .polaroid-caption strong{display:block;font-family:var(--font-serif);font-size:clamp(1.08rem,3vw,1.3rem);font-style:italic;font-weight:400;line-height:1.15;}
    .polaroid-caption small{display:block;margin-top:6px;font-family:var(--font-body);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--tinta-suave);}
    .polaroid-tide-mark{flex:0 0 42px;width:42px;height:18px;color:var(--mar-tinta);}
    .galeria-controls{display:flex;justify-content:center;align-items:center;gap:18px;margin:20px auto 0;}
    .galeria-nav{display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:var(--papel);color:var(--tinta);cursor:pointer;box-shadow:var(--px) var(--px) 0 rgb(11 14 24/.5);}
    .galeria-nav:disabled{opacity:.4;cursor:not-allowed;}
    .galeria-nav:focus-visible{outline:2px solid var(--farol);outline-offset:4px;}
    .galeria-nav svg{width:18px;height:18px;}
    .galeria-status{min-width:100px;font-size:.7em;letter-spacing:.16em;text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--marfil);}
    .galeria-nota{max-width:540px;margin:14px auto 0;font-size:.8em;line-height:1.65;color:var(--marfil);}
    @media(min-width:760px){.galeria-track{padding-inline:calc((100% - min(36vw,360px))/2);scroll-padding-inline:calc((100% - min(36vw,360px))/2);}.polaroid{flex-basis:min(36vw,360px);}}
    @media(prefers-reduced-motion:reduce){.galeria-track{scroll-behavior:auto;}}

/* ═══ ANTES DE PARTIR · REGALOS ═══ */
    .practica-list{max-width:620px;margin:30px auto 0;border-top:var(--px) solid var(--tinta);}
    .practica-row{display:grid;grid-template-columns:48px minmax(0,1fr);gap:12px;padding:18px 2px;text-align:left;border-bottom:1px solid var(--regla);}
    .practica-index{font-family:var(--font-display);font-size:1.4rem;color:var(--mar-tinta);}
    .practica-row h3{margin:0 0 4px;font-family:var(--font-serif);font-style:italic;font-size:1.25rem;color:var(--tinta);}
    .practica-row p{margin:0;font-size:.9rem;line-height:1.65;color:var(--tinta-suave);}
    .tarjeta-regalos{max-width:520px;margin:28px auto 0;padding:26px 8px;border-block:var(--px) solid var(--tinta);}
    .tarjeta-regalos h3{margin-bottom:12px;font-style:italic;font-size:1.6rem;color:var(--tinta);}
    .tarjeta-regalos p{margin-bottom:6px;font-size:.92rem;line-height:1.6;color:var(--tinta-suave);}
    .regalos-sep{width:min(120px,40%);height:var(--px);margin:18px auto;background:repeating-linear-gradient(90deg,var(--tinta) 0 calc(2*var(--px)),transparent calc(2*var(--px)) calc(4*var(--px)));opacity:.45;}
    .sobre{width:120px;margin:4px auto 6px;}
    .sobre svg{display:block;width:100%;height:auto;overflow:visible;}
    .sobre-fondo{fill:#D9C7AC;stroke:var(--tinta);stroke-width:1.4;}
    .sobre-solapa-abierta{fill:#DCCBB2;stroke:var(--tinta);stroke-width:1.4;stroke-linejoin:round;}
    .sobre-carta rect{fill:var(--papel-luz);stroke:var(--tinta);stroke-width:1.2;}
    .sobre-carta path{stroke:var(--sepia);stroke-width:1.4;stroke-linecap:round;}
    .sobre-bolsillo{fill:var(--papel);stroke:var(--tinta);stroke-width:1.4;stroke-linejoin:round;}
    .sobre-pliegue{stroke:rgba(43,33,24,.35);stroke-width:1.2;}
    .sobre-solapa path{fill:var(--papel);stroke:var(--tinta);stroke-width:1.4;stroke-linejoin:round;}
    .sobre-sello{fill:var(--coral);}
    .sobre-sello-ola{fill:none;stroke:var(--papel);stroke-width:1.3;stroke-linecap:round;}
    /* al revelarse: la solapa sellada se pliega, se abre hacia atrás y la tarjeta asoma */
    .sobre-solapa,.sobre-solapa-abierta,.sobre-carta{transform-box:view-box;}
    .sobre-solapa{transform-origin:60px 38px;transition:transform .45s ease .8s;}
    .sobre-solapa-abierta{transform-origin:60px 38px;transform:scaleY(0);transition:transform .45s ease 1.25s;}
    .sobre-carta{transition:transform .8s cubic-bezier(.3,.7,.2,1) 1.6s;}
    .fade-section.dentro .sobre-solapa{transform:scaleY(0);}
    .fade-section.dentro .sobre-solapa-abierta{transform:scaleY(1);}
    .fade-section.dentro .sobre-carta{transform:translateY(-24px);}
    /* lluvia de sobres detrás de la lámina: papel y tinta, nunca oro */
    .lluvia-sobres{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;}
    .lluvia-sobres i{position:absolute;top:-8%;width:18px;height:12px;background:linear-gradient(to bottom right,transparent 47%,rgba(43,33,24,.55) 48% 53%,transparent 54%) left top/50% 70% no-repeat,linear-gradient(to bottom left,transparent 47%,rgba(43,33,24,.55) 48% 53%,transparent 54%) right top/50% 70% no-repeat,var(--papel);box-shadow:inset 0 0 0 1px rgba(43,33,24,.55),2px 2px 0 rgba(11,14,24,.3);animation:lluvia 9s linear infinite;}
    .lluvia-sobres i:nth-child(1){left:6%;animation-duration:8s;animation-delay:-1s;}
    .lluvia-sobres i:nth-child(2){left:18%;animation-duration:10s;animation-delay:-5s;}
    .lluvia-sobres i:nth-child(3){left:30%;animation-duration:9s;animation-delay:-3s;}
    .lluvia-sobres i:nth-child(4){left:44%;animation-duration:11s;animation-delay:-7s;}
    .lluvia-sobres i:nth-child(5){left:58%;animation-duration:8.5s;animation-delay:-2s;}
    .lluvia-sobres i:nth-child(6){left:70%;animation-duration:10s;animation-delay:-6s;}
    .lluvia-sobres i:nth-child(7){left:82%;animation-duration:9.5s;animation-delay:-4s;}
    .lluvia-sobres i:nth-child(8){left:92%;animation-duration:12s;animation-delay:-8s;}
    .lluvia-sobres i:nth-child(9){left:12%;animation-duration:11s;animation-delay:-9s;}
    .lluvia-sobres i:nth-child(10){left:76%;animation-duration:8s;animation-delay:-1.5s;}
    @keyframes lluvia{0%{top:-8%;transform:rotate(-14deg) translateX(0);}50%{transform:rotate(12deg) translateX(14px);}100%{top:104%;transform:rotate(-10deg) translateX(-6px);}}
    .fade-section.fuera .lluvia-sobres i{animation-play-state:paused;}

/* ═══ RSVP — tinta sobre papel, bajo los faroles de la palapa ═══ */
    .demo-status{max-width:620px;margin:14px auto 0;padding:12px 14px;border-left:calc(2*var(--px)) solid var(--terra-tinta);background:rgba(43,33,24,.05);color:var(--tinta-suave);font-size:.86rem;line-height:1.65;text-align:left;}
    .form-card{max-width:520px;margin:30px auto 0;text-align:left;}
    .campo{margin-bottom:22px;}
    .campo label{display:block;margin-bottom:6px;font-family:var(--font-serif);font-style:italic;font-size:.92rem;letter-spacing:.12em;text-transform:uppercase;color:var(--tinta-suave);}
    .campo input,.campo select,.campo textarea{width:100%;padding:10px 2px;background:transparent;border:0;border-bottom:var(--px) solid var(--tinta);border-radius:0;color:var(--tinta);font-family:var(--font-body);font-size:16px;line-height:1.5;-webkit-appearance:none;appearance:none;}
    .campo select{padding-right:28px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8' shape-rendering='crispEdges' fill='%232B2118'%3E%3Cpath d='M1 2h1v1H1zM6 2h1v1H6zM1 3h2v1H1zM5 3h2v1H5zM2 4h4v1H2zM3 5h2v1H3z'/%3E%3C/svg%3E") right 2px center/16px 16px no-repeat;}
    .campo textarea{min-height:92px;resize:vertical;}
    .campo input::placeholder,.campo textarea::placeholder{color:var(--tinta-suave);font-style:italic;opacity:1;}
    .campo input:focus,.campo select:focus,.campo textarea:focus{outline:none;border-bottom-color:var(--terra-tinta);}
    .campo input:focus-visible,.campo select:focus-visible,.campo textarea:focus-visible{outline:2px solid var(--tinta);outline-offset:4px;}
    .campo small{display:block;margin-top:7px;font-size:.8rem;line-height:1.5;color:var(--tinta-suave);}
    .campo-indent{margin-left:14px;padding-left:14px;border-left:var(--px) solid var(--regla);}
    .rsvp-mensaje{margin:0 0 14px;font-size:.9rem;line-height:1.6;color:var(--terra-tinta);}
    .rsvp-mensaje:empty{display:none;}
    /* botones de tinta con esquinas en escalón de píxel; el foco va por dentro porque clip-path recorta el exterior */
    .kc-rsvp-marca{display:inline-flex;align-items:center;gap:8px;margin-bottom:8px;font-family:var(--font-display);font-size:.92rem;letter-spacing:.3em;color:var(--mar-tinta);}
    .kc-rsvp-estrella{display:block;width:18px;height:18px;animation:estrellaFlota 3.2s ease-in-out infinite;}
    @keyframes estrellaFlota{0%,100%{transform:translateY(0) rotate(0);}50%{transform:translateY(-5px) rotate(8deg);}}
    .titulo-rsvp{font-size:clamp(2.4rem,7.4vw,3.8rem);}
    /* botón que brota: al acercarse la mano crecen monstera, palma y pampa detrás del botón de mar */
    .btn-enviar{position:relative;isolation:isolate;display:block;width:100%;margin-top:30px;padding:17px;background:var(--mar-tinta);color:var(--papel);border:0;border-radius:6px;box-shadow:3px 3px 0 rgba(43,33,24,.3);font-family:var(--font-serif);font-size:1.02rem;letter-spacing:.22em;text-transform:uppercase;cursor:pointer;transition:border-radius .3s ease,background .3s ease;}
    .btn-enviar:hover:not(:disabled),.btn-enviar:focus-visible{border-radius:6px 6px 22px 22px;background:#184E58;}
    .btn-brotes{position:absolute;inset:0;z-index:-1;pointer-events:none;}
    .brote{position:absolute;bottom:62%;width:0;height:auto;overflow:visible;transform-origin:50% 100%;transition:width .5s ease;}
    .brote path{stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;}
    .brote--monstera{left:10%;}
    .brote--monstera path{fill:#6D893D;stroke:var(--selva);}
    .brote--monstera .brote-vena{fill:none;stroke:#3D592B;}
    .brote--palma{left:50%;translate:-50% 0;}
    .brote--palma path{fill:none;stroke:#5A6529;}
    .brote--pampa{right:12%;}
    .brote--pampa path{fill:#E6D1A5;stroke:#C9A36E;}
    .fade-section.dentro .brote--monstera{width:30px;}
    .fade-section.dentro .brote--palma{width:36px;}
    .fade-section.dentro .brote--pampa{width:18px;}
    .btn-enviar:hover:not(:disabled) .brote,.btn-enviar:focus-visible .brote{animation:brota 2.4s ease-in-out .4s infinite;}
    .btn-enviar:hover:not(:disabled) .brote--monstera,.btn-enviar:focus-visible .brote--monstera{width:50px;}
    .btn-enviar:hover:not(:disabled) .brote--palma,.btn-enviar:focus-visible .brote--palma{width:64px;}
    .btn-enviar:hover:not(:disabled) .brote--pampa,.btn-enviar:focus-visible .brote--pampa{width:30px;}
    @keyframes brota{0%,100%{transform:rotate(0);}50%{transform:rotate(-6deg);}}
    .btn-enviar:disabled{opacity:.45;cursor:not-allowed;}
    .btn-enviar:focus-visible{outline:2px solid var(--tinta);outline-offset:4px;}
    .btn-w{display:inline-flex;align-items:center;gap:8px;margin:6px 4px 0;padding:12px 22px;border:1px solid var(--tinta);border-radius:24px;background:transparent;color:var(--tinta);font-family:var(--font-serif);font-size:.86rem;letter-spacing:.18em;text-transform:uppercase;cursor:pointer;transition:transform .2s,box-shadow .2s;}
    .btn-w:hover{transform:translate(-3px,-3px);box-shadow:3px 3px 0 var(--mar-tinta);}
    .btn-w:focus-visible{outline:2px solid var(--tinta);outline-offset:4px;}
    #form-exito{text-align:center;padding:26px 10px;}
    #form-exito .eicon{display:block;width:64px;height:22px;margin:0 auto 14px;}
    #form-exito .eicon svg{display:block;width:100%;height:100%;overflow:visible;}
    #form-exito h3{margin-bottom:8px;font-style:italic;font-size:1.8rem;color:var(--tinta);}
    #form-exito p{margin-bottom:16px;font-size:.92rem;line-height:1.6;color:var(--tinta-suave);}
    .mt-sello-sol{fill:var(--coral);}
    .mt-sello-horizonte{stroke:var(--tinta);stroke-width:1.1;}
    .mt-sello-ola{fill:none;stroke:var(--sepia);stroke-width:1;stroke-linecap:round;}

/* ═══ KC-ECHOES ═══ */
    .captura-content{max-width:540px;}
    .captura-header{margin-bottom:24px;}
    .captura-title{font-family:var(--font-serif);font-style:italic;font-size:clamp(2.1rem,6vw,3rem);line-height:1.1;color:var(--tinta);}
    .captura-icon-wrap{display:inline-grid;place-items:center;min-width:140px;min-height:104px;margin-bottom:16px;}
    .captura-cam-svg{display:block;width:128px;height:96px;margin:0 auto;overflow:visible;color:var(--tinta);animation:echoesLevita 5.6s ease-in-out infinite;}
    @keyframes echoesLevita{0%,100%{transform:translateY(0) rotate(-1deg);}50%{transform:translateY(-6px) rotate(1deg);}}
    .btn-curva{display:inline-block;margin:0 0 16px;padding:.8em 2em;border:1px solid var(--tinta);border-radius:24px;background:var(--tinta);color:var(--papel);font-family:var(--font-serif);font-size:.95rem;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;transition:transform .2s,box-shadow .2s,background .2s,color .2s;}
    .btn-curva:hover{transform:translate(-4px,-4px);background:var(--papel);color:var(--tinta);box-shadow:4px 4px 0 var(--mar-tinta);}
    .btn-curva:active{transform:none;box-shadow:none;}
    .btn-curva:focus-visible{outline:2px solid var(--tinta);outline-offset:4px;}
    .btn-curva:disabled{opacity:.55;cursor:not-allowed;transform:none;background:var(--tinta);color:var(--papel);box-shadow:none;}
    .captura-desc{margin-bottom:26px;font-family:var(--font-serif);font-size:1.08rem;line-height:1.7;color:var(--tinta-suave);}

/* ═══ LA PERLA ═══ */
    .secreto-caja{max-width:520px;margin:0 auto;padding:44px 24px;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:240px;transition:min-height .6s ease;}
    .secreto-trigger{display:flex;flex-direction:column;align-items:center;gap:14px;width:max-content;max-width:100%;padding:6px;background:none;border:0;color:inherit;font:inherit;cursor:pointer;}
    .secreto-trigger .sico{display:block;}
    .secreto-trigger .sico .px{display:block;width:64px;height:64px;animation:perlaFlota 3.6s ease-in-out infinite;}
    @keyframes perlaFlota{0%,100%{transform:translateY(0);}50%{transform:translateY(-7px);}}
    .secreto-trigger-label{padding:6px 2px;border-bottom:var(--px) solid var(--tinta);font-family:var(--font-serif);font-style:italic;font-size:.98rem;letter-spacing:.2em;text-transform:uppercase;color:var(--tinta);}
    .mensaje-secreto{display:flex;flex-direction:column;align-items:center;opacity:0;visibility:hidden;height:0;overflow:hidden;transform:translateY(12px);transition:opacity .6s ease,transform .6s ease,visibility .6s;width:100%;position:absolute;top:0;left:0;right:0;padding:44px 24px;}
    .secreto-caja.revelado{min-height:360px;}
    .secreto-caja.revelado .secreto-trigger{opacity:0;visibility:hidden;pointer-events:none;height:0;}
    .secreto-caja.revelado .mensaje-secreto{opacity:1;visibility:visible;height:100%;position:relative;transform:none;}
    .mensaje-secreto h3{margin-bottom:18px;font-family:var(--font-serif);font-style:italic;font-size:1.8rem;color:var(--tinta);}
    .mensaje-secreto blockquote{font-family:var(--font-serif);font-style:italic;font-size:1.28rem;line-height:1.8;color:var(--tinta);}
    .mensaje-secreto .firma{margin-top:20px;font-size:.9rem;letter-spacing:.14em;color:var(--terra-tinta);}

/* ═══ KC FLOAT — pórtico de arena: disco de mar profundo, anillo dashed de arena y sol coral; gira solo mientras suena ═══ */
    .kc-float{position:fixed;bottom:max(16px,calc(env(safe-area-inset-bottom,0px) + 14px));right:max(16px,calc(env(safe-area-inset-right,0px) + 14px));z-index:9000;width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;border:none;background:none;padding:0;overflow:visible;opacity:0;transform:translateY(20px);transition:opacity .6s ease,transform .6s cubic-bezier(.34,1.56,.64,1);-webkit-tap-highlight-color:transparent;}
    .kc-float.visible{opacity:1;transform:translateY(0);}
    .kc-float:focus-visible{outline:2px solid var(--farol);outline-offset:6px;}
    .kc-float-bg{position:absolute;inset:0;z-index:1;border-radius:50%;background:radial-gradient(circle at 35% 30%,var(--mar-tinta) 0%,#12343B 55%,var(--noche) 100%);border:1px solid rgba(214,178,126,.6);box-shadow:0 4px 18px rgba(11,26,31,.55),inset 0 1px 0 rgba(244,238,226,.12);transition:border-color .4s,box-shadow .4s;}
    .kc-float:hover .kc-float-bg{border-color:#D6B27E;}
    .kc-float-glow{position:absolute;inset:-12px;z-index:0;border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(74,156,158,.34) 0%,rgba(74,156,158,.14) 42%,transparent 70%);animation:kcBreath 3s ease-in-out infinite alternate;}
    @keyframes kcBreath{from{opacity:.4;transform:scale(.9);}to{opacity:.9;transform:scale(1.14);}}
    .kc-ring{position:absolute;z-index:2;border-radius:50%;pointer-events:none;transition:opacity .4s,border-color .4s,box-shadow .4s;}
    /* anillo de arena con el sol coral en la cima; el sol gira con el anillo */
    .kc-ring--boda{inset:-10px;border:1.5px dashed rgba(214,178,126,.9);box-shadow:0 0 12px rgba(242,188,125,.25);filter:drop-shadow(0 0 1px rgba(11,26,31,.7));animation:rotate-ring 14s linear infinite;}
    .kc-ring--boda::before{content:'';position:absolute;top:-4.5px;left:50%;width:7px;height:7px;border-radius:1px;transform:translateX(-50%) rotate(45deg);background:linear-gradient(135deg,#E8845A 0%,var(--sol) 100%);box-shadow:0 0 6px 2px rgba(242,188,125,.55),0 0 14px 4px rgba(232,132,90,.28);}
    .kc-float.paused .kc-ring--boda,.kc-float.paused .kc-float-glow,.kc-float.paused .kc-bar{animation-play-state:paused;}
    .kc-float.paused .kc-ring--boda{border-color:rgba(214,178,126,.28);box-shadow:none;opacity:.7;}
    .kc-float.paused .kc-ring--boda::before{box-shadow:none;opacity:.35;}
    .kc-float.paused .kc-float-glow{opacity:.1;}
    .kc-letter{position:relative;z-index:3;font-family:var(--font-display);font-size:.88rem;letter-spacing:.06em;line-height:1;color:#D6B27E;text-shadow:0 0 10px rgba(242,188,125,.3);transition:color .4s,text-shadow .4s;}
    .kc-float.paused .kc-letter{color:rgba(214,178,126,.5);text-shadow:none;}
    .kc-bars{position:absolute;z-index:4;bottom:5px;left:50%;transform:translateX(-50%);display:flex;align-items:flex-end;gap:2px;}
    .kc-bar{width:2px;border-radius:1px;background:#D6B27E;animation:kcBar var(--d) alternate infinite;}
    .kc-bar:nth-child(1){height:5px;--d:.3s;}
    .kc-bar:nth-child(2){height:7px;--d:.2s;animation-delay:.1s;}
    .kc-bar:nth-child(3){height:4px;--d:.35s;animation-delay:.2s;}
    .kc-float.paused .kc-bar{height:2px!important;opacity:.38;}

/* ═══ FOOTER — noche cerrada sobre el mar ═══ */
    .kc-footer{padding:52px 16px 64px;overflow-x:hidden;}   /* el mar nocturno queda bajo la firma, sin espacio muerto */
    .kc-f-div{width:min(120px,40%);height:var(--px);margin:0 auto 26px;background:repeating-linear-gradient(90deg,var(--marfil) 0 calc(2*var(--px)),transparent calc(2*var(--px)) calc(4*var(--px)));opacity:.45;}
    .kc-f-div>*{display:none;}
    .kc-f-main{margin-bottom:26px;font-family:var(--font-serif);font-size:.9rem;letter-spacing:.14em;text-transform:uppercase;line-height:1.9;color:rgba(244,238,226,.78);}
    .kc-f-main strong{display:inline-block;margin:0 4px;font-weight:400;font-size:1.1em;color:var(--marfil);}
    .kc-f-fecha{display:block;margin-top:4px;font-size:.9em;color:rgba(244,238,226,.66);}
    .kc-f-perla{display:inline-block;width:18px;height:18px;margin:0 2px;vertical-align:-3px;}
    .kc-f-fecha--inline{display:inline-block;margin-left:6px;}
    .kc-f-brand{display:inline-flex;align-items:center;gap:10px;padding:10px;text-decoration:none;}
    .kc-f-brand:focus-visible{outline:2px solid var(--farol);outline-offset:2px;}
    .ig-ico{width:18px;height:18px;color:var(--pampa);transition:color .3s;}
    .kc-f-brand-txt{font-family:var(--font-serif);font-size:1rem;letter-spacing:.2em;color:var(--pampa);transition:color .3s;}
    .kc-f-brand:hover .ig-ico,.kc-f-brand:hover .kc-f-brand-txt{color:var(--farol);}

    @media(max-width:600px){.portada-fecha{font-size:.82em;letter-spacing:.08em;line-height:1.45;}.portada-lugar{max-width:86vw;margin:8px auto 0;font-size:.62em;letter-spacing:.12em;line-height:1.45;}.dc-cards{grid-template-columns:1fr;}.mensaje-secreto{padding:34px 18px;}.kc-f-main{font-size:.78rem;letter-spacing:.1em;}}
    @media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important;}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important;}.kc-ring--boda,.kc-float-glow{animation:none!important;}.mt-band>*,.mt-enter-marea i,.vuelo-avion,.orillas-ruta,.ubi-pin,.captura-cam-svg,.secreto-trigger .sico .px,.kc-rsvp-estrella,.scroll-hint .px,.brote{animation:none!important;}.lluvia-sobres{display:none;}.fade-section.fuera .lamina{clip-path:none;}}

/* ═══ DOS ORILLAS — la carta de agua, estuario y raíz, ahora en tinta sobre papel ═══ */
    .orillas-inner.lamina{max-width:980px;}
    .orillas-estuario{position:relative;max-width:920px;margin:clamp(24px,5vw,44px) auto 0;padding:10px 0 18px;border-block:1px solid var(--regla);}
    .orillas-drawing{display:block;width:100%;height:auto;overflow:visible;}
    .orillas-drawing path{stroke-linecap:round;stroke-linejoin:round;}
    .orillas-wash{stroke:none;}
    .orillas-arena{fill:#E0B57F;opacity:.5;}
    .orillas-ink__costa{stroke:var(--sepia);stroke-width:2.2;}
    .orillas-ink__ola{stroke:var(--mar-luz);stroke-width:1.8;}
    .orillas-ink__espuma{stroke:rgba(47,129,144,.55);stroke-width:1.4;}
    .orillas-ink__palma{stroke:var(--selva);stroke-width:2.2;}
    .orillas-ink__palapa{stroke:var(--sepia);stroke-width:2;}
    .orillas-ink__selva{stroke:var(--selva);stroke-width:1.8;}
    .orillas-ruta{stroke:var(--tinta);stroke-width:2.6;stroke-linecap:round;stroke-dasharray:1 11;opacity:.65;animation:ruta 2.8s linear infinite;}
    @keyframes ruta{to{stroke-dashoffset:-24;}}
    .orillas-rosa circle{fill:rgba(240,230,211,.7);stroke:var(--tinta);stroke-width:1.2;}
    .orillas-rosa path{fill:none;stroke:var(--tinta);stroke-width:1.2;}
    .orillas-rosa text,.orillas-rotulo{font-family:var(--font-serif);font-style:italic;font-size:22px;letter-spacing:.3em;fill:var(--mar-tinta);}
    .orillas-rotulo--terra{fill:var(--terra-tinta);}
    /* ubicaciones: alfileres que flotan; el botón de cada orilla enciende el suyo */
    .ubi-pin{transform-box:fill-box;transform-origin:50% 100%;animation:ubiFlota 3s ease-in-out infinite;transition:transform .35s cubic-bezier(.34,1.56,.64,1);}
    .ubi--terra .ubi-pin{animation-delay:-1.4s;}
    .ubi--mar .ubi-pin path{fill:var(--mar-tinta);}
    .ubi--terra .ubi-pin path{fill:var(--terra-tinta);}
    .ubi-pin circle{fill:var(--papel);}
    .ubi-rotulo{opacity:0;transform:translateY(8px);transition:opacity .35s ease,transform .35s ease;}
    .ubi-rotulo rect{fill:var(--papel-luz);stroke:var(--tinta);stroke-width:1.4;}
    .ubi-rotulo text{font-family:var(--font-serif);font-size:20px;letter-spacing:.06em;fill:var(--tinta);}
    .ubi.activa .ubi-pin{animation:none;transform:scale(1.35);}
    .ubi.activa .ubi-rotulo{opacity:1;transform:none;}
    @keyframes ubiFlota{0%,100%{transform:translateY(0);}50%{transform:translateY(-6px);}}
    .ubi-btn{--sombra:var(--mar-tinta);margin-top:14px;padding:.62em 1.4em;border:1px solid var(--tinta);border-radius:24px;background:var(--tinta);color:var(--papel);font-family:var(--font-serif);font-size:.9rem;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;transition:transform .2s,box-shadow .2s,background .2s,color .2s;}
    .ubi-btn--terra{--sombra:var(--terra-tinta);}
    .ubi-btn:hover,.ubi-btn[aria-pressed="true"]{transform:translate(-3px,-3px);background:var(--papel);color:var(--tinta);box-shadow:3px 3px 0 var(--sombra);}
    .ubi-btn:active{transform:none;box-shadow:none;}
    .ubi-btn:focus-visible{outline:2px solid var(--tinta);outline-offset:4px;}
    .orillas-momentos{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 58px minmax(0,1fr);align-items:stretch;max-width:760px;margin:-2px auto 0;}
    .orilla-momento{min-width:0;padding:16px clamp(14px,3vw,28px) 10px;text-align:left;}
    .orilla-momento--terra{text-align:right;}
    .orilla-origen{display:block;margin-bottom:11px;font-size:.66rem;letter-spacing:.19em;text-transform:uppercase;color:var(--mar-tinta);}
    .orilla-origen span{font-variant-numeric:tabular-nums;color:var(--tinta);}
    .orilla-momento--terra .orilla-origen{color:var(--terra-tinta);}
    .orilla-momento h3{margin:0 0 8px;font-family:var(--font-serif);font-size:clamp(1.35rem,2.7vw,1.8rem);font-style:italic;color:var(--tinta);}
    .orilla-hora{display:block;margin:8px 0 13px;font-family:var(--font-display);font-size:clamp(2.25rem,5vw,3.2rem);font-variant-numeric:tabular-nums;line-height:.92;letter-spacing:.025em;color:var(--mar-tinta);}
    .orilla-momento--terra .orilla-hora{color:var(--terra-tinta);}
    .orilla-hora span{font-family:var(--font-serif);font-size:.38em;font-style:italic;letter-spacing:0;}
    .orilla-momento p{margin:0;font-size:.9rem;line-height:1.85;color:var(--tinta-suave);}
    .orillas-crossing{display:flex;align-items:stretch;justify-content:center;min-width:0;}
    .orillas-crossing svg{display:block;width:40px;height:100%;min-height:180px;overflow:visible;}
    .orillas-crossing__shadow,.orillas-crossing__line{stroke-linecap:round;stroke-linejoin:round;}
    .orillas-crossing__shadow{stroke:rgba(43,33,24,.12);stroke-width:6;}
    .orillas-crossing__line{stroke:url(#orillas-crossing-ink);stroke-width:1.8;vector-effect:non-scaling-stroke;}
    .orillas-crossing__mark--mar{fill:var(--mar-tinta);}
    .orillas-crossing__mark--terra{fill:var(--terra-tinta);}
    .orillas-disclosure{max-width:590px;margin:17px auto 0;font-size:.8rem;line-height:1.7;letter-spacing:.02em;color:var(--tinta-suave);}
    @media(max-width:600px){
        .orillas-estuario{margin-top:26px;padding:12px 0 20px;}
        .orillas-drawing{width:100%;}
        .orillas-ink__costa,.orillas-ink__palma{stroke-width:3.4;}
        .orillas-ink__ola,.orillas-ink__palapa,.orillas-ink__selva{stroke-width:2.8;}
        .orillas-ruta{stroke-width:3.6;}
        .orillas-rosa text,.orillas-rotulo{font-size:30px;}
        .ubi-rotulo text{font-size:24px;}
        .orillas-momentos{grid-template-columns:30px minmax(0,1fr);grid-template-rows:auto 32px auto;margin:4px 2px 0;}
        .orilla-momento{grid-column:2;padding:16px 8px 13px 8px;text-align:left;}
        .orilla-momento--mar{grid-row:1;}
        .orilla-momento--terra{grid-row:3;text-align:left;}
        .orilla-momento h3{font-size:1.5rem;}
        .orilla-hora{font-size:2.55rem;}
        .orillas-crossing{grid-column:1;grid-row:1 / span 3;}
        .orillas-crossing svg{width:28px;min-height:160px;}
        .orillas-disclosure{text-align:left;}
    }
