{"id":552,"date":"2020-09-16T07:17:44","date_gmt":"2020-09-16T07:17:44","guid":{"rendered":"https:\/\/nv.contraluzfotografia.com\/?page_id=552"},"modified":"2026-04-09T00:07:38","modified_gmt":"2026-04-09T00:07:38","slug":"home","status":"publish","type":"page","link":"https:\/\/nv.contraluzfotografia.com\/","title":{"rendered":"Home"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"552\" class=\"elementor elementor-552\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-06e9ea5 e-flex e-con-boxed e-con e-parent\" data-id=\"06e9ea5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-a7d26ce e-flex e-con-boxed e-con e-child\" data-id=\"a7d26ce\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_motion_fx_mouse&quot;:&quot;yes&quot;,&quot;animation_mobile&quot;:&quot;fadeIn&quot;,&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4bc705c elementor-widget elementor-widget-html\" data-id=\"4bc705c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================\nBLOQUE 01 - HERO (v12 - fix m\u00f3vil overflow)\nProyecto: NV.contraluzfotografia.com\n========================= -->\n\n<style>\n  .elementor-widget-html { display: block !important; }\n\n  #cl-hero {\n    position: relative;\n    width: 100%;\n    min-height: 620px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    overflow: hidden;\n    height: 100vh;\n    height: 100dvh;\n    height: calc(var(--vh, 1vh) * 100);\n  }\n\n  #cl-hero-bg {\n    position: absolute;\n    top: 0; left: 0;\n    width: 100%;\n    height: 100%;\n    z-index: 0;\n  }\n\n  #cl-hero-bg img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    object-position: center center;\n    display: block;\n    transform: scale(1.06);\n    transform-origin: center center;\n  }\n\n  #cl-hero-overlay {\n    position: absolute;\n    inset: 0;\n    background-color: rgba(58,46,42,0.35);\n    z-index: 1;\n  }\n\n  #cl-hero-content {\n    position: relative;\n    z-index: 10;\n    width: 100%;\n    padding-left:   max(1.5rem, env(safe-area-inset-left));\n    padding-right:  max(1.5rem, env(safe-area-inset-right));\n    padding-bottom: max(1rem,   env(safe-area-inset-bottom));\n    padding-top: 80px;\n  }\n\n  #cl-hero-inner {\n    max-width: 64rem;\n    margin: 0 auto;\n    text-align: center;\n    padding-top: 4rem;\n    padding-bottom: 4rem;\n  }\n\n  #cl-hero-logo {\n    display: block;\n    margin: 0 auto 2.5rem;\n    width: clamp(120px, 18vw, 200px);\n    height: auto;\n  }\n\n  .cl-btn-primary {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 0.5rem;\n    min-height: 48px;\n    padding: 1rem 2.5rem;\n    background-color: #D0B8B3;\n    color: #ffffff !important;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: 0.15em;\n    text-transform: uppercase;\n    text-decoration: none !important;\n    border-radius: 2px;\n    transition: background-color 0.2s;\n    box-shadow: 0 4px 14px rgba(0,0,0,0.25);\n  }\n\n  .cl-btn-primary:hover { background-color: #BA9F9A; }\n\n  .cl-btn-secondary {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 48px;\n    padding: 1rem 2.5rem;\n    background-color: rgba(255,255,255,0.1);\n    color: #ffffff !important;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: 0.15em;\n    text-transform: uppercase;\n    text-decoration: none !important;\n    border: 1px solid rgba(255,255,255,0.3);\n    border-radius: 2px;\n    backdrop-filter: blur(12px);\n    -webkit-backdrop-filter: blur(12px);\n    transition: background-color 0.2s;\n  }\n\n  .cl-btn-secondary:hover { background-color: rgba(255,255,255,0.2); }\n\n  .cl-btns {\n    display: flex;\n    flex-direction: column;\n    gap: 1.25rem;\n    align-items: stretch;\n    justify-content: center;\n    margin-bottom: 1.5rem;\n  }\n\n  @media (min-width: 640px) {\n    .cl-btns { flex-direction: row; align-items: center; }\n    .cl-btn-primary,\n    .cl-btn-secondary { width: auto; }\n    #cl-hero-content  { padding-top: 96px; }\n  }\n\n  @media (min-width: 1024px) {\n    #cl-hero-inner { padding-top: 5rem; padding-bottom: 5rem; }\n  }\n\n  \/* =============================================\n     FIX M\u00d3VIL \u2014 todo el contenido visible\n     ============================================= *\/\n  @media (max-width: 639px) {\n\n    #cl-hero-inner {\n      padding-top: 1.5rem;\n      padding-bottom: 2rem;\n    }\n\n    #cl-hero-logo {\n      margin-bottom: 1.25rem;\n    }\n\n    #cl-hero-inner h1 {\n      margin-bottom: 1rem !important;\n    }\n\n    #cl-hero-inner .cl-hero-desc {\n      margin-bottom: 1.5rem !important;\n    }\n\n    .cl-btns {\n      gap: 0.75rem;\n      margin-bottom: 1rem;\n    }\n\n    .cl-btn-primary,\n    .cl-btn-secondary {\n      min-height: 44px;\n      padding: 0.75rem 1.75rem;\n    }\n\n    #cl-hero > a[href=\"#nosotros\"] {\n      bottom: 1rem !important;\n    }\n  }\n<\/style>\n\n<section\n  id=\"cl-hero\"\n  aria-label=\"Secci\u00f3n principal \u2014 Fotograf\u00eda y video de bodas en Saltillo, Coahuila\"\n>\n\n  <div id=\"cl-hero-bg\">\n    <picture>\n      <source\n        media=\"(max-width: 767px)\"\n        srcset=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2026\/03\/Boda-_-Adriana-y-Daniel-31-scaled.webp\"\n      \/>\n      <source\n        media=\"(min-width: 768px)\"\n        srcset=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2026\/03\/Boda-_-Gaby-y-Jose-91_Original-scaled.webp\"\n      \/>\n      <img\n        src=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2026\/03\/Boda-_-Gaby-y-Jose-91_Original-scaled.webp\"\n        alt=\"Fotograf\u00eda de boda editorial en Saltillo \u2014 Contraluz Fotograf\u00eda, Coahuila\"\n        loading=\"eager\"\n        decoding=\"async\"\n        fetchpriority=\"high\"\n      \/>\n    <\/picture>\n    <div id=\"cl-hero-overlay\"><\/div>\n  <\/div>\n\n  <div id=\"cl-hero-content\">\n    <div id=\"cl-hero-inner\">\n\n      <img\n        id=\"cl-hero-logo\"\n        src=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2023\/11\/Logotipo_B-01-scaled.png\"\n        alt=\"Contraluz Fotograf\u00eda \u2014 Fotograf\u00eda de bodas en Saltillo\"\n        loading=\"eager\"\n        decoding=\"async\"\n      \/>\n\n      <span style=\"display:block; font-family:'Manrope',sans-serif; font-size:12px; text-transform:uppercase; letter-spacing:0.4em; margin-bottom:1.25rem; color:rgba(255,255,255,0.9); font-weight:600;\">\n        Fotograf\u00eda editorial de bodas con sensibilidad y verdad\n      <\/span>\n\n      <h1 style=\"font-family:'Playfair Display',serif; font-size:clamp(2.5rem,8vw,5rem); font-weight:400; line-height:1.15; margin-bottom:2rem; color:#FDFCFB;\">\n        Fotograf\u00eda y video de bodas<br>\n        <span style=\"font-style:italic; font-weight:300; color:#E8DCD9;\">para guardar lo irrepetible<\/span>\n      <\/h1>\n\n      <p class=\"cl-hero-desc\" style=\"font-family:'Manrope',sans-serif; font-size:clamp(0.95rem,2vw,1.125rem); font-weight:300; max-width:46rem; margin:0 auto 3rem; color:rgba(255,255,255,0.9); line-height:1.75; letter-spacing:0.03em;\">\n        Cobertura en Saltillo y Coahuila para parejas que desean una historia visual honesta, elegante y atemporal; im\u00e1genes que conserven su fuerza hoy y con los a\u00f1os.\n      <\/p>\n\n      <div class=\"cl-btns\">\n        <a href=\"https:\/\/wa.me\/8441337326?text=Hola%20Contraluz%2C%20quiero%20cotizar%20mi%20boda\"\n           target=\"_blank\" rel=\"noopener noreferrer\"\n           class=\"cl-btn-primary\"\n           aria-label=\"Cotizar fotograf\u00eda de boda por WhatsApp\">\n          <span class=\"material-symbols-outlined\" style=\"font-size:18px;\" aria-hidden=\"true\">chat<\/span>\n          Cotizar por WhatsApp\n        <\/a>\n        <a href=\"https:\/\/portafolio.contraluzfotografia.com\/\"\n           target=\"_blank\" rel=\"noopener noreferrer\"\n           class=\"cl-btn-secondary\"\n           aria-label=\"Ver portafolio de bodas de Contraluz Fotograf\u00eda\">\n          Ver bodas completas\n        <\/a>\n      <\/div>\n\n      <p style=\"font-family:'Manrope',sans-serif; font-size:12px; color:rgba(255,255,255,0.75); text-transform:uppercase; letter-spacing:0.2em; font-weight:700; line-height:1.8; padding-left:0.5rem; padding-right:0.5rem; word-break:break-word; overflow-wrap:break-word;\">\n        Respuesta en menos de 24 horas<br>\n        Atenci\u00f3n personalizada desde el primer mensaje\n      <\/p>\n\n    <\/div>\n  <\/div>\n\n  <a href=\"#nosotros\"\n     style=\"position:absolute; bottom:2rem; left:50%; transform:translateX(-50%); color:rgba(255,255,255,0.55); text-decoration:none; z-index:10;\"\n     aria-label=\"Ir a la siguiente secci\u00f3n\">\n    <span class=\"material-symbols-outlined\" style=\"font-size:2rem;\" aria-hidden=\"true\">keyboard_double_arrow_down<\/span>\n  <\/a>\n\n<\/section>\n\n<script>\n(function(){\n  \/* Fix --vh para iOS Safari *\/\n  function setVh(){\n    var vh = window.innerHeight * 0.01;\n    document.documentElement.style.setProperty('--vh', vh + 'px');\n  }\n  setVh();\n  window.addEventListener('resize', setVh, { passive: true });\n  window.addEventListener('orientationchange', function(){\n    setTimeout(setVh, 120);\n  }, { passive: true });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f5d06ee e-flex e-con-boxed e-con e-child\" data-id=\"f5d06ee\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;animation_mobile&quot;:&quot;fadeIn&quot;,&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f5f00ac elementor-widget elementor-widget-html\" data-id=\"f5f00ac\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================\nBLOQUE 02 - VALUES (v3 - fix editor Elementor + reveal)\nProyecto: NV.contraluzfotografia.com\n========================= -->\n\n<style>\n  #cl-values {\n    padding-top: 5rem;\n    padding-bottom: 5rem;\n    background-color: #FDFCFB;\n  }\n\n  @media (min-width: 768px) {\n    #cl-values { padding-top: 8rem; padding-bottom: 8rem; }\n  }\n\n  #cl-values-inner {\n    max-width: 80rem;\n    margin: 0 auto;\n    padding-left:  max(1.5rem, env(safe-area-inset-left));\n    padding-right: max(1.5rem, env(safe-area-inset-right));\n  }\n\n  #cl-values-header {\n    text-align: center;\n    margin-bottom: 4rem;\n  }\n\n  #cl-values-header h2 {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(1.75rem, 4vw, 2.5rem);\n    font-weight: 400;\n    font-style: italic;\n    color: #3A2E2A;\n    margin-bottom: 1rem;\n  }\n\n  #cl-values-header p {\n    font-family: 'Manrope', sans-serif;\n    font-size: 1.1rem;\n    font-weight: 300;\n    color: #8A817C;\n    max-width: 38rem;\n    margin: 0 auto;\n    line-height: 1.75;\n  }\n\n  .cl-values-grid {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 2rem;\n  }\n\n  @media (min-width: 768px) {\n    .cl-values-grid { grid-template-columns: repeat(2, 1fr); }\n  }\n\n  @media (min-width: 1024px) {\n    .cl-values-grid { grid-template-columns: repeat(4, 1fr); }\n  }\n\n  .cl-value-card {\n    text-align: center;\n    padding: 1.5rem;\n  }\n\n  .cl-value-icon {\n    width: 4rem;\n    height: 4rem;\n    margin: 0 auto 1.5rem;\n    border-radius: 9999px;\n    border: 1px solid rgba(208, 184, 179, 0.4);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: #D0B8B3;\n  }\n\n  .cl-value-card h3 {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(1.2rem, 2.5vw, 1.45rem);\n    font-weight: 500;\n    color: #3A2E2A;\n    margin-bottom: 0.85rem;\n    line-height: 1.3;\n  }\n\n  .cl-value-card p {\n    font-family: 'Manrope', sans-serif;\n    font-size: 1rem;\n    font-weight: 300;\n    color: #8A817C;\n    line-height: 1.8;\n    margin: 0;\n  }\n\n  \/* Animaci\u00f3n local para este bloque \u2014 estado inicial *\/\n  .cl-val-anim {\n    opacity: 0;\n    transform: translateY(28px);\n    transition: opacity 0.7s cubic-bezier(0.4,0,0.2,1),\n                transform 0.7s cubic-bezier(0.4,0,0.2,1);\n  }\n  .cl-val-anim.cl-val-visible {\n    opacity: 1;\n    transform: translateY(0);\n  }\n\n  \/* En el editor de Elementor mostramos todo visible de inmediato *\/\n  .elementor-editor-active .cl-val-anim {\n    opacity: 1 !important;\n    transform: none !important;\n    transition: none !important;\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .cl-val-anim {\n      opacity: 1 !important;\n      transform: none !important;\n      transition: none !important;\n    }\n  }\n<\/style>\n\n<section\n  id=\"cl-values\"\n  aria-label=\"Nuestra forma de trabajar \u2014 Contraluz Fotograf\u00eda\"\n>\n  <div id=\"cl-values-inner\">\n\n    <div id=\"cl-values-header\" class=\"cl-val-anim\">\n      <h2>Una experiencia cuidada de principio a fin<\/h2>\n      <p>Cuidamos cada detalle con atenci\u00f3n y sensibilidad, para que ustedes puedan vivir su boda con calma y confianza.<\/p>\n    <\/div>\n\n    <div class=\"cl-values-grid\">\n\n      <div class=\"cl-value-card cl-val-anim\" style=\"transition-delay:0.10s;\">\n        <div class=\"cl-value-icon\">\n          <span class=\"material-symbols-outlined\" style=\"font-size:1.75rem; font-variation-settings:'FILL' 0,'wght' 300;\">event_available<\/span>\n        <\/div>\n        <h3>Tiempos claros de entrega<\/h3>\n        <p>Sus fotograf\u00edas y video se entregan en los tiempos acordados, con un proceso claro y bien acompa\u00f1ado desde el inicio.<\/p>\n      <\/div>\n\n      <div class=\"cl-value-card cl-val-anim\" style=\"transition-delay:0.20s;\">\n        <div class=\"cl-value-icon\">\n          <span class=\"material-symbols-outlined\" style=\"font-size:1.75rem; font-variation-settings:'FILL' 0,'wght' 300;\">camera_alt<\/span>\n        <\/div>\n        <h3>Direcci\u00f3n natural y sin rigidez<\/h3>\n        <p>Les guiamos durante el d\u00eda para que se sientan c\u00f3modos, disfruten la experiencia y se olviden de la c\u00e1mara.<\/p>\n      <\/div>\n\n      <div class=\"cl-value-card cl-val-anim\" style=\"transition-delay:0.30s;\">\n        <div class=\"cl-value-icon\">\n          <span class=\"material-symbols-outlined\" style=\"font-size:1.75rem; font-variation-settings:'FILL' 0,'wght' 300;\">videocam<\/span>\n        <\/div>\n        <h3>Fotograf\u00eda y video en armon\u00eda<\/h3>\n        <p>Trabajamos fotograf\u00eda y video con una misma sensibilidad visual, para documentar su boda con emoci\u00f3n e intenci\u00f3n.<\/p>\n      <\/div>\n\n      <div class=\"cl-value-card cl-val-anim\" style=\"transition-delay:0.40s;\">\n        <div class=\"cl-value-icon\">\n          <span class=\"material-symbols-outlined\" style=\"font-size:1.75rem; font-variation-settings:'FILL' 0,'wght' 300;\">favorite<\/span>\n        <\/div>\n        <h3>Comunicaci\u00f3n cercana y \u00e1gil<\/h3>\n        <p>Acompa\u00f1amos cada etapa con atenci\u00f3n cercana y respuestas oportunas, para que se sientan seguros desde el primer contacto.<\/p>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/section>\n\n<script>\n(function(){\n  \/* Si estamos en el editor de Elementor, no hacer nada \u2014\n     el CSS .elementor-editor-active ya muestra todo visible *\/\n  if(document.body && document.body.classList.contains('elementor-editor-active')) return;\n\n  function initValuesReveal(){\n    var items = document.querySelectorAll('#cl-values .cl-val-anim');\n    if(!items.length) return;\n\n    var obs = new IntersectionObserver(function(entries){\n      entries.forEach(function(entry){\n        if(entry.isIntersecting){\n          entry.target.classList.add('cl-val-visible');\n          obs.unobserve(entry.target);\n        }\n      });\n    }, { threshold: 0.12, rootMargin: '0px 0px -40px 0px' });\n\n    items.forEach(function(el){ obs.observe(el); });\n  }\n\n  if(document.readyState === 'loading'){\n    document.addEventListener('DOMContentLoaded', initValuesReveal);\n  } else {\n    initValuesReveal();\n  }\n  window.addEventListener('load', initValuesReveal);\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8856867 e-flex e-con-boxed e-con e-child\" data-id=\"8856867\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_motion_fx_mouse&quot;:&quot;yes&quot;,&quot;animation_mobile&quot;:&quot;fadeIn&quot;,&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2e19087 elementor-widget elementor-widget-html\" data-id=\"2e19087\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================\nBLOQUE 03 - ABOUT \/ SOBRE M\u00cd (v2 - fix wrapper + textos + reveal)\nProyecto: NV.contraluzfotografia.com\n========================= -->\n\n<style>\n  \/* === Secci\u00f3n unificada === *\/\n  #nosotros {\n    padding-top: 6rem;\n    padding-bottom: 6rem;\n    background-color: #F4F1EE;\n    border-top:    1px solid rgba(232,228,225,0.3);\n    border-bottom: 1px solid rgba(232,228,225,0.3);\n  }\n\n  @media (min-width: 1024px) {\n    #nosotros { padding-top: 8rem; padding-bottom: 8rem; }\n  }\n\n  #cl-about-inner {\n    max-width: 84rem;\n    margin: 0 auto;\n    padding-left:  max(1.5rem, env(safe-area-inset-left));\n    padding-right: max(1.5rem, env(safe-area-inset-right));\n  }\n\n  .cl-about-wrap {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 4rem;\n  }\n\n  @media (min-width: 1024px) {\n    .cl-about-wrap {\n      flex-direction: row;\n      align-items: flex-start;\n      gap: 6rem;\n    }\n  }\n\n  \/* Columna imagen *\/\n  .cl-about-img-col {\n    width: 100%;\n    position: relative;\n    flex-shrink: 0;\n  }\n\n  @media (min-width: 1024px) {\n    .cl-about-img-col { width: 40%; }\n  }\n\n  .cl-about-img-frame {\n    aspect-ratio: 4\/5;\n    overflow: hidden;\n    background-color: #FDFCFB;\n    position: relative;\n    box-shadow: 0 25px 50px rgba(58,46,42,0.18);\n  }\n\n  .cl-about-img-border {\n    position: absolute;\n    inset: 0;\n    border: 12px solid #ffffff;\n    z-index: 10;\n    pointer-events: none;\n  }\n\n  .cl-about-img-frame img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    object-position: center top;\n    display: block;\n  }\n\n  .cl-about-dot {\n    display: none;\n    position: absolute;\n    bottom: -1.5rem;\n    right: -1.5rem;\n    width: 8rem;\n    height: 8rem;\n    background-color: rgba(208,184,179,0.15);\n    border-radius: 9999px;\n    z-index: 0;\n  }\n\n  @media (min-width: 768px) {\n    .cl-about-dot { display: block; }\n  }\n\n  \/* Columna texto *\/\n  .cl-about-text-col {\n    width: 100%;\n    text-align: left;\n  }\n\n  @media (min-width: 1024px) {\n    .cl-about-text-col { width: 60%; }\n  }\n\n  .cl-about-eyebrow {\n    display: block;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.4em;\n    color: #D0B8B3;\n    margin-bottom: 1.25rem;\n  }\n\n  .cl-about-title {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(2.25rem, 5vw, 3.6rem);\n    font-weight: 400;\n    line-height: 1.12;\n    color: #3A2E2A;\n    margin-bottom: 1.5rem;\n  }\n\n  .cl-about-title span {\n    font-style: italic;\n    font-weight: 300;\n    color: #D0B8B3;\n  }\n\n  .cl-about-lead {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(1.2rem, 2.2vw, 1.55rem);\n    font-style: italic;\n    font-weight: 400;\n    line-height: 1.6;\n    color: #3A2E2A;\n    margin: 0 0 1.75rem 0;\n    max-width: 44rem;\n  }\n\n  .cl-about-text {\n    font-family: 'Manrope', sans-serif;\n    font-size: 1rem;\n    font-weight: 300;\n    color: #8A817C;\n    line-height: 1.9;\n    margin: 0 0 1.35rem 0;\n  }\n\n  .cl-about-divider {\n    width: 4rem;\n    height: 1px;\n    background-color: rgba(208,184,179,0.55);\n    margin: 2.25rem 0;\n  }\n\n  .cl-about-subtitle {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(1.5rem, 3vw, 2rem);\n    font-weight: 400;\n    font-style: italic;\n    color: #3A2E2A;\n    margin: 0 0 1.25rem 0;\n  }\n\n  .cl-about-list {\n    list-style: none;\n    padding: 0;\n    margin: 0 0 1.75rem 0;\n    display: flex;\n    flex-direction: column;\n    gap: 1rem;\n  }\n\n  \/* \u2191 TAMA\u00d1O CORREGIDO \u2191 *\/\n  .cl-about-list li {\n    display: flex;\n    align-items: flex-start;\n    gap: 0.9rem;\n    font-family: 'Manrope', sans-serif;\n    font-size: 1rem;        \/* era 0.98rem \u2192 16px *\/\n    font-weight: 300;\n    color: #8A817C;\n    line-height: 1.85;\n  }\n\n  .cl-about-list-icon {\n    color: #D0B8B3;\n    font-size: 1rem;\n    line-height: 1.4;\n    margin-top: 0.2rem;\n    flex-shrink: 0;\n  }\n\n  .cl-about-closing {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(1.1rem, 2vw, 1.35rem);\n    font-style: italic;\n    font-weight: 400;\n    color: #3A2E2A;\n    line-height: 1.7;\n    margin: 0 0 2.25rem 0;\n  }\n\n  .cl-about-expect {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 1rem;\n    margin-top: 1.5rem;\n  }\n\n  @media (min-width: 768px) {\n    .cl-about-expect { grid-template-columns: repeat(2, 1fr); }\n  }\n\n  .cl-about-expect-card {\n    background-color: rgba(255,255,255,0.65);\n    border: 1px solid #E8E4E1;\n    padding: 1.25rem 1.35rem;\n    border-radius: 2px;\n  }\n\n  \/* \u2191 TAMA\u00d1O CORREGIDO \u2191 *\/\n  .cl-about-expect-card p {\n    margin: 0;\n    font-family: 'Manrope', sans-serif;\n    font-size: 1rem;        \/* era 0.92rem \u2192 16px *\/\n    font-weight: 400;\n    color: #3A2E2A;\n    line-height: 1.75;\n  }\n\n  \/* === Animaciones locales === *\/\n  .cl-ab-reveal-left {\n    opacity: 0;\n    transform: translateX(-28px);\n    transition: opacity 0.85s cubic-bezier(0.4,0,0.2,1),\n                transform 0.85s cubic-bezier(0.4,0,0.2,1);\n  }\n\n  .cl-ab-reveal-right {\n    opacity: 0;\n    transform: translateX(28px);\n    transition: opacity 0.85s cubic-bezier(0.4,0,0.2,1),\n                transform 0.85s cubic-bezier(0.4,0,0.2,1);\n  }\n\n  .cl-ab-reveal-up {\n    opacity: 0;\n    transform: translateY(20px);\n    transition: opacity 0.7s cubic-bezier(0.4,0,0.2,1),\n                transform 0.7s cubic-bezier(0.4,0,0.2,1);\n  }\n\n  .cl-ab-reveal-left.cl-ab-visible,\n  .cl-ab-reveal-right.cl-ab-visible,\n  .cl-ab-reveal-up.cl-ab-visible {\n    opacity: 1;\n    transform: translate(0,0);\n  }\n\n  .elementor-editor-active .cl-ab-reveal-left,\n  .elementor-editor-active .cl-ab-reveal-right,\n  .elementor-editor-active .cl-ab-reveal-up {\n    opacity: 1 !important;\n    transform: none !important;\n    transition: none !important;\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .cl-ab-reveal-left,\n    .cl-ab-reveal-right,\n    .cl-ab-reveal-up {\n      opacity: 1 !important;\n      transform: none !important;\n      transition: none !important;\n    }\n  }\n<\/style>\n\n<section\n  id=\"nosotros\"\n  aria-label=\"Sobre Paloma \u2014 Contraluz Fotograf\u00eda Saltillo\"\n>\n  <div id=\"cl-about-inner\">\n    <div class=\"cl-about-wrap\">\n\n      <!-- Imagen -->\n      <div class=\"cl-about-img-col cl-ab-reveal-left\">\n        <div class=\"cl-about-img-frame\">\n          <div class=\"cl-about-img-border\" aria-hidden=\"true\"><\/div>\n          <img\n            src=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2026\/03\/DYCH016-scaled.webp\"\n            alt=\"Paloma, fot\u00f3grafa de bodas en Contraluz Fotograf\u00eda \u2014 Saltillo, Coahuila\"\n            loading=\"lazy\"\n            decoding=\"async\"\n          \/>\n        <\/div>\n        <div class=\"cl-about-dot\" aria-hidden=\"true\"><\/div>\n      <\/div>\n\n      <!-- Texto -->\n      <div class=\"cl-about-text-col cl-ab-reveal-right\">\n\n        <span class=\"cl-about-eyebrow\">Sobre m\u00ed<\/span>\n\n        <h2 class=\"cl-about-title\">\n          Hola, soy <span>Paloma<\/span>\n        <\/h2>\n\n        <p class=\"cl-about-lead\">\n          Creo profundamente que el amor verdadero no necesita exageraciones; solo necesita ser visto con el coraz\u00f3n correcto.\n        <\/p>\n\n        <p class=\"cl-about-text\">\n          Me conmueven las miradas que dicen m\u00e1s que mil palabras, los abrazos que duran un segundo m\u00e1s de lo normal y esas l\u00e1grimas que nadie planea, pero que lo significan todo. Mi forma de fotografiar es discreta y sensible; estoy atenta a lo que sienten, no solo a lo que sucede.\n        <\/p>\n\n        <p class=\"cl-about-text\">\n          Para m\u00ed, no son solo clientes. Son dos personas que est\u00e1n eligiendo caminar juntas el resto de su vida, y eso merece ser contado con ternura, respeto y mucha emoci\u00f3n.\n        <\/p>\n\n        <p class=\"cl-about-text\">\n          Quiero que cuando dentro de 20 a\u00f1os abran su galer\u00eda o su \u00e1lbum, no solo vean im\u00e1genes hermosas; quiero que vuelvan a sentir ese d\u00eda en el pecho.\n        <\/p>\n\n        <div class=\"cl-about-divider\" aria-hidden=\"true\"><\/div>\n\n        <h3 class=\"cl-about-subtitle\">Para la novia que\u2026<\/h3>\n\n        <ul class=\"cl-about-list\" role=\"list\">\n          <li>\n            <span class=\"cl-about-list-icon\" aria-hidden=\"true\">\u2726<\/span>\n            <span>Se emociona imaginando el momento en que lo ver\u00e1 esper\u00e1ndola al final del altar.<\/span>\n          <\/li>\n          <li>\n            <span class=\"cl-about-list-icon\" aria-hidden=\"true\">\u2726<\/span>\n            <span>Abraza fuerte, r\u00ede sin contenerse y no tiene miedo de llorar cuando el coraz\u00f3n se le desborda.<\/span>\n          <\/li>\n          <li>\n            <span class=\"cl-about-list-icon\" aria-hidden=\"true\">\u2726<\/span>\n            <span>Sue\u00f1a con una boda aut\u00e9ntica, donde lo m\u00e1s importante no sea la perfecci\u00f3n, sino el amor.<\/span>\n          <\/li>\n          <li>\n            <span class=\"cl-about-list-icon\" aria-hidden=\"true\">\u2726<\/span>\n            <span>Quiere sentirse acompa\u00f1ada, tranquila y comprendida en uno de los d\u00edas m\u00e1s importantes de su vida.<\/span>\n          <\/li>\n          <li>\n            <span class=\"cl-about-list-icon\" aria-hidden=\"true\">\u2726<\/span>\n            <span>Valora los recuerdos como un tesoro y sabe que las fotograf\u00edas ser\u00e1n el puente para volver a ese d\u00eda una y otra vez.<\/span>\n          <\/li>\n        <\/ul>\n\n        <p class=\"cl-about-closing\">\n          Si eres esa novia que siente profundo, que ama sin reservas y que quiere recordar su boda tal como la vivi\u00f3, estoy aqu\u00ed para ti.\n        <\/p>\n\n        <h3 class=\"cl-about-subtitle cl-ab-reveal-up\" style=\"transition-delay:0.15s;\">Lo que pueden esperar conmigo<\/h3>\n\n        <div class=\"cl-about-expect\">\n          <div class=\"cl-about-expect-card cl-ab-reveal-up\" style=\"transition-delay:0.20s;\">\n            <p>\u2728 Acompa\u00f1amiento cercano desde el primer mensaje<\/p>\n          <\/div>\n          <div class=\"cl-about-expect-card cl-ab-reveal-up\" style=\"transition-delay:0.28s;\">\n            <p>\u2728 Una experiencia tranquila, sin presi\u00f3n ni poses forzadas<\/p>\n          <\/div>\n          <div class=\"cl-about-expect-card cl-ab-reveal-up\" style=\"transition-delay:0.36s;\">\n            <p>\u2728 Fotograf\u00edas naturales, llenas de emoci\u00f3n real<\/p>\n          <\/div>\n          <div class=\"cl-about-expect-card cl-ab-reveal-up\" style=\"transition-delay:0.44s;\">\n            <p>\u2728 Recuerdos que con el tiempo se vuelven herencia<\/p>\n          <\/div>\n        <\/div>\n\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/section>\n\n<script>\n(function(){\n  if(document.body && document.body.classList.contains('elementor-editor-active')) return;\n\n  function initAboutReveal(){\n    var els = document.querySelectorAll(\n      '#nosotros .cl-ab-reveal-left, #nosotros .cl-ab-reveal-right, #nosotros .cl-ab-reveal-up'\n    );\n    if(!els.length) return;\n\n    var obs = new IntersectionObserver(function(entries){\n      entries.forEach(function(entry){\n        if(entry.isIntersecting){\n          entry.target.classList.add('cl-ab-visible');\n          obs.unobserve(entry.target);\n        }\n      });\n    }, { threshold: 0.08, rootMargin: '0px 0px -40px 0px' });\n\n    els.forEach(function(el){ obs.observe(el); });\n  }\n\n  if(document.readyState === 'loading'){\n    document.addEventListener('DOMContentLoaded', initAboutReveal);\n  } else {\n    initAboutReveal();\n  }\n  window.addEventListener('load', initAboutReveal);\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9c19c59 e-flex e-con-boxed e-con e-child\" data-id=\"9c19c59\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_motion_fx_mouse&quot;:&quot;yes&quot;,&quot;animation_mobile&quot;:&quot;fadeIn&quot;,&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e03f2f1 elementor-widget elementor-widget-html\" data-id=\"e03f2f1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================\nBLOQUE 04 - GALLERY CARRUSEL (v3 - lightbox al hacer clic)\nProyecto: NV.contraluzfotografia.com\n========================= -->\n\n<style>\n  \/* === Secci\u00f3n === *\/\n  #portafolio {\n    padding-top: 6rem;\n    padding-bottom: 6rem;\n    background-color: #FDFCFB;\n  }\n\n  @media (min-width: 768px) {\n    #portafolio { padding-top: 8rem; padding-bottom: 8rem; }\n  }\n\n  #cl-gallery-inner {\n    max-width: 80rem;\n    margin: 0 auto;\n    padding-left:  max(1.5rem, env(safe-area-inset-left));\n    padding-right: max(1.5rem, env(safe-area-inset-right));\n  }\n\n  \/* Header *\/\n  #cl-gallery-header {\n    text-align: center;\n    margin-bottom: 3.5rem;\n  }\n\n  #cl-gallery-header span {\n    display: block;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.3em;\n    color: #D0B8B3;\n    margin-bottom: 1rem;\n  }\n\n  #cl-gallery-header h2 {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(2rem, 5vw, 3rem);\n    font-weight: 400;\n    font-style: italic;\n    color: #3A2E2A;\n    margin: 0;\n  }\n\n  \/* Carrusel *\/\n  #cl-carousel {\n    position: relative;\n    width: 100%;\n    overflow: hidden;\n    border-radius: 2px;\n    box-shadow: 0 20px 60px rgba(58,46,42,0.15);\n    margin-bottom: 1rem;\n  }\n\n  #cl-progress {\n    position: absolute;\n    top: 0; left: 0;\n    height: 3px;\n    width: 0%;\n    background-color: #D0B8B3;\n    z-index: 30;\n    transition: width linear;\n  }\n\n  #cl-stage {\n    display: flex;\n    will-change: transform;\n    transition: transform 0.75s cubic-bezier(0.77, 0, 0.175, 1);\n  }\n\n  .cl-slide {\n    flex-shrink: 0;\n    width: 100%;\n    aspect-ratio: 16\/9;\n    position: relative;\n    overflow: hidden;\n    background-color: #E8E4E1;\n    \/* Indica que es clickeable *\/\n    cursor: zoom-in;\n  }\n\n  .cl-slide img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    object-position: center center;\n    display: block;\n    transform: scale(1);\n    transition: transform 6s ease-out;\n    will-change: transform;\n    pointer-events: none; \/* El click lo capta el .cl-slide *\/\n  }\n\n  .cl-slide.is-active img { transform: scale(1.07); }\n\n  \/* Hint \"ver en tama\u00f1o completo\" *\/\n  #cl-zoom-hint {\n    position: absolute;\n    bottom: 1rem;\n    left: 50%;\n    transform: translateX(-50%);\n    z-index: 20;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 600;\n    color: rgba(255,255,255,0.85);\n    letter-spacing: 0.12em;\n    text-transform: uppercase;\n    background-color: rgba(0,0,0,0.3);\n    padding: 0.35rem 0.85rem;\n    border-radius: 2px;\n    backdrop-filter: blur(6px);\n    -webkit-backdrop-filter: blur(6px);\n    display: flex;\n    align-items: center;\n    gap: 0.4rem;\n    pointer-events: none;\n    opacity: 1;\n    transition: opacity 0.4s;\n  }\n\n  \/* Oculta el hint en m\u00f3vil (ocupa espacio) *\/\n  @media (max-width: 640px) {\n    #cl-zoom-hint { display: none; }\n  }\n\n  \/* Botones nav carrusel *\/\n  .cl-nav-btn {\n    position: absolute;\n    top: 50%;\n    transform: translateY(-50%);\n    z-index: 20;\n    width: 44px;\n    height: 44px;\n    border-radius: 50%;\n    background-color: rgba(255,255,255,0.15);\n    border: 1px solid rgba(255,255,255,0.3);\n    color: #ffffff;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    cursor: pointer;\n    backdrop-filter: blur(8px);\n    -webkit-backdrop-filter: blur(8px);\n    transition: background-color 0.2s;\n    -webkit-tap-highlight-color: transparent;\n  }\n\n  .cl-nav-btn:hover  { background-color: rgba(255,255,255,0.3); }\n  .cl-nav-btn:active { background-color: rgba(255,255,255,0.45); }\n  #cl-prev { left: 1rem; }\n  #cl-next { right: 1rem; }\n\n  @media (min-width: 768px) {\n    .cl-nav-btn { width: 52px; height: 52px; }\n    #cl-prev { left: 1.5rem; }\n    #cl-next { right: 1.5rem; }\n  }\n\n  \/* Contador *\/\n  #cl-counter {\n    position: absolute;\n    top: 1rem; right: 1rem;\n    z-index: 20;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    color: rgba(255,255,255,0.85);\n    letter-spacing: 0.1em;\n    background-color: rgba(0,0,0,0.25);\n    padding: 0.3rem 0.6rem;\n    border-radius: 2px;\n    backdrop-filter: blur(4px);\n    -webkit-backdrop-filter: blur(4px);\n  }\n\n  \/* Dots *\/\n  #cl-dots {\n    display: flex;\n    justify-content: center;\n    gap: 0.5rem;\n    margin-top: 1.25rem;\n    margin-bottom: 3.5rem;\n  }\n\n  .cl-dot {\n    width: 6px;\n    height: 6px;\n    border-radius: 9999px;\n    background-color: #E8E4E1;\n    border: none;\n    cursor: pointer;\n    padding: 0;\n    transition: background-color 0.3s, width 0.3s;\n    -webkit-tap-highlight-color: transparent;\n  }\n\n  .cl-dot.is-active {\n    background-color: #D0B8B3;\n    width: 20px;\n  }\n\n  \/* CTA *\/\n  #cl-gallery-cta { text-align: center; }\n\n  .cl-gallery-btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 48px;\n    padding: 1rem 3rem;\n    background-color: #D0B8B3;\n    color: #ffffff !important;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.2em;\n    text-decoration: none !important;\n    border-radius: 2px;\n    box-shadow: 0 8px 24px rgba(208,184,179,0.35);\n    transition: background-color 0.2s;\n  }\n\n  .cl-gallery-btn:hover { background-color: #BA9F9A; }\n\n  \/* =============================================\n     LIGHTBOX\n     ============================================= *\/\n  #cl-lightbox {\n    position: fixed;\n    inset: 0;\n    z-index: 99999;\n    background-color: rgba(20,16,15,0.97);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    opacity: 0;\n    pointer-events: none;\n    transition: opacity 0.35s cubic-bezier(0.4,0,0.2,1);\n    backdrop-filter: blur(4px);\n    -webkit-backdrop-filter: blur(4px);\n  }\n\n  #cl-lightbox.is-open {\n    opacity: 1;\n    pointer-events: all;\n  }\n\n  \/* Imagen en lightbox *\/\n  #cl-lb-img-wrap {\n    position: relative;\n    max-width: min(90vw, 1200px);\n    max-height: 90vh;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transform: scale(0.96);\n    transition: transform 0.35s cubic-bezier(0.4,0,0.2,1);\n  }\n\n  #cl-lightbox.is-open #cl-lb-img-wrap {\n    transform: scale(1);\n  }\n\n  #cl-lb-img {\n    display: block;\n    max-width: 100%;\n    max-height: 90vh;\n    object-fit: contain;\n    border-radius: 2px;\n    box-shadow: 0 32px 80px rgba(0,0,0,0.6);\n    user-select: none;\n    -webkit-user-drag: none;\n  }\n\n  \/* Bot\u00f3n cerrar *\/\n  #cl-lb-close {\n    position: fixed;\n    top: 1.25rem;\n    right: 1.25rem;\n    width: 44px;\n    height: 44px;\n    border-radius: 50%;\n    background-color: rgba(255,255,255,0.1);\n    border: 1px solid rgba(255,255,255,0.2);\n    color: #ffffff;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    cursor: pointer;\n    transition: background-color 0.2s;\n    z-index: 100000;\n    -webkit-tap-highlight-color: transparent;\n  }\n\n  #cl-lb-close:hover { background-color: rgba(255,255,255,0.22); }\n\n  \/* Botones nav lightbox *\/\n  .cl-lb-nav {\n    position: fixed;\n    top: 50%;\n    transform: translateY(-50%);\n    width: 52px;\n    height: 52px;\n    border-radius: 50%;\n    background-color: rgba(255,255,255,0.08);\n    border: 1px solid rgba(255,255,255,0.18);\n    color: #ffffff;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    cursor: pointer;\n    z-index: 100000;\n    transition: background-color 0.2s;\n    -webkit-tap-highlight-color: transparent;\n  }\n\n  .cl-lb-nav:hover  { background-color: rgba(255,255,255,0.2); }\n  .cl-lb-nav:active { background-color: rgba(255,255,255,0.32); }\n\n  #cl-lb-prev { left: 1.25rem; }\n  #cl-lb-next { right: 1.25rem; }\n\n  \/* Contador lightbox *\/\n  #cl-lb-counter {\n    position: fixed;\n    bottom: 1.5rem;\n    left: 50%;\n    transform: translateX(-50%);\n    font-family: 'Manrope', sans-serif;\n    font-size: 12px;\n    font-weight: 600;\n    color: rgba(255,255,255,0.5);\n    letter-spacing: 0.2em;\n    text-transform: uppercase;\n    z-index: 100000;\n    white-space: nowrap;\n  }\n\n  \/* Alt text del lightbox (caption) *\/\n  #cl-lb-caption {\n    position: fixed;\n    bottom: 3.25rem;\n    left: 50%;\n    transform: translateX(-50%);\n    font-family: 'Manrope', sans-serif;\n    font-size: 12px;\n    font-weight: 300;\n    color: rgba(255,255,255,0.4);\n    letter-spacing: 0.08em;\n    z-index: 100000;\n    white-space: nowrap;\n    max-width: 90vw;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n\n  \/* En m\u00f3vil los nav van m\u00e1s pegados *\/\n  @media (max-width: 640px) {\n    #cl-lb-prev { left: 0.5rem; }\n    #cl-lb-next { right: 0.5rem; }\n    .cl-lb-nav { width: 44px; height: 44px; }\n  }\n\n  \/* Animaci\u00f3n reveal galer\u00eda *\/\n  .cl-gal-reveal {\n    opacity: 0;\n    transform: translateY(24px);\n    transition: opacity 0.7s cubic-bezier(0.4,0,0.2,1),\n                transform 0.7s cubic-bezier(0.4,0,0.2,1);\n  }\n  .cl-gal-reveal.cl-gal-visible {\n    opacity: 1;\n    transform: translateY(0);\n  }\n\n  .elementor-editor-active .cl-gal-reveal {\n    opacity: 1 !important;\n    transform: none !important;\n    transition: none !important;\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .cl-gal-reveal,\n    .cl-slide img,\n    #cl-lightbox,\n    #cl-lb-img-wrap {\n      opacity: 1 !important;\n      transform: none !important;\n      transition: none !important;\n    }\n  }\n<\/style>\n\n<section\n  id=\"portafolio\"\n  aria-label=\"Portafolio de bodas \u2014 Contraluz Fotograf\u00eda Saltillo\"\n>\n  <div id=\"cl-gallery-inner\">\n\n    <!-- Header -->\n    <div id=\"cl-gallery-header\" class=\"cl-gal-reveal\">\n      <span>Portafolio<\/span>\n      <h2>Una mirada a historias reales<\/h2>\n    <\/div>\n\n    <!-- Carrusel -->\n    <div\n      id=\"cl-carousel\"\n      role=\"region\"\n      aria-label=\"Galer\u00eda de bodas \u2014 haz clic para ver en tama\u00f1o completo\"\n      tabindex=\"0\"\n    >\n      <div id=\"cl-progress\" role=\"none\"><\/div>\n\n      <div id=\"cl-counter\" aria-live=\"polite\" aria-atomic=\"true\">1 \/ 10<\/div>\n\n      <div id=\"cl-stage\" aria-hidden=\"true\">\n        <div class=\"cl-slide is-active\" data-index=\"0\">\n          <img src=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2023\/11\/Boda-Raul-y-Iracema-46-scaled.webp\"\n               alt=\"Fotograf\u00eda de boda de Ra\u00fal e Iracema \u2014 Contraluz, Saltillo\" loading=\"eager\" decoding=\"async\"\/>\n        <\/div>\n        <div class=\"cl-slide\" data-index=\"1\">\n          <img src=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2023\/11\/Boda-Marla-y-Manuel-40_Original-scaled.jpg\"\n               alt=\"Fotograf\u00eda de boda de Marla y Manuel \u2014 Contraluz, Saltillo\" loading=\"lazy\" decoding=\"async\"\/>\n        <\/div>\n        <div class=\"cl-slide\" data-index=\"2\">\n          <img src=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2023\/11\/Boda-Lety-y-Erik-40-scaled.jpg\"\n               alt=\"Fotograf\u00eda de boda de Lety y Erik \u2014 Contraluz, Coahuila\" loading=\"lazy\" decoding=\"async\"\/>\n        <\/div>\n        <div class=\"cl-slide\" data-index=\"3\">\n          <img src=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2023\/11\/Boda-Cecy-y-Gabriel-20-scaled.jpg\"\n               alt=\"Fotograf\u00eda de boda de Cecy y Gabriel \u2014 Contraluz, Saltillo\" loading=\"lazy\" decoding=\"async\"\/>\n        <\/div>\n        <div class=\"cl-slide\" data-index=\"4\">\n          <img src=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2023\/11\/Boda-Montserrat-y-Manuel-18-scaled.webp\"\n               alt=\"Fotograf\u00eda de boda de Montserrat y Manuel \u2014 Contraluz, Coahuila\" loading=\"lazy\" decoding=\"async\"\/>\n        <\/div>\n        <div class=\"cl-slide\" data-index=\"5\">\n          <img src=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2023\/11\/Boda-Rocio-y-David-39-scaled.webp\"\n               alt=\"Fotograf\u00eda de boda de Roc\u00edo y David \u2014 Contraluz, Saltillo\" loading=\"lazy\" decoding=\"async\"\/>\n        <\/div>\n        <div class=\"cl-slide\" data-index=\"6\">\n          <img src=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2026\/03\/ContraluzBoda-Celia-y-Julio-22_Original-scaled.webp\"\n               alt=\"Fotograf\u00eda de boda de Celia y Julio \u2014 Contraluz, Coahuila\" loading=\"lazy\" decoding=\"async\"\/>\n        <\/div>\n        <div class=\"cl-slide\" data-index=\"7\">\n          <img src=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2026\/03\/ContraluzBoda-Gina-y-Uriel-63_Original-scaled.webp\"\n               alt=\"Fotograf\u00eda de boda de Gina y Uriel \u2014 Contraluz, Saltillo\" loading=\"lazy\" decoding=\"async\"\/>\n        <\/div>\n        <div class=\"cl-slide\" data-index=\"8\">\n          <img src=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2026\/03\/Boda-Valeria-y-Alfonso-00-94.jpg\"\n               alt=\"Fotograf\u00eda de boda de Valeria y Alfonso \u2014 Contraluz, Coahuila\" loading=\"lazy\" decoding=\"async\"\/>\n        <\/div>\n        <div class=\"cl-slide\" data-index=\"9\">\n          <img src=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2026\/03\/Boda-Angelica-y-Carlos-26_Original-scaled.webp\"\n               alt=\"Fotograf\u00eda de boda de Ang\u00e9lica y Carlos \u2014 Contraluz, Saltillo\" loading=\"lazy\" decoding=\"async\"\/>\n        <\/div>\n      <\/div>\n\n      <!-- Hint zoom -->\n      <div id=\"cl-zoom-hint\" aria-hidden=\"true\">\n        <span class=\"material-symbols-outlined\" style=\"font-size:14px;\">zoom_in<\/span>\n        Ver en tama\u00f1o completo\n      <\/div>\n\n      <!-- Botones nav carrusel -->\n      <button id=\"cl-prev\" class=\"cl-nav-btn\" aria-label=\"Imagen anterior\">\n        <span class=\"material-symbols-outlined\" style=\"font-size:20px;\" aria-hidden=\"true\">chevron_left<\/span>\n      <\/button>\n      <button id=\"cl-next\" class=\"cl-nav-btn\" aria-label=\"Imagen siguiente\">\n        <span class=\"material-symbols-outlined\" style=\"font-size:20px;\" aria-hidden=\"true\">chevron_right<\/span>\n      <\/button>\n    <\/div>\n\n    <!-- Dots -->\n    <div id=\"cl-dots\" role=\"tablist\" aria-label=\"Seleccionar imagen\">\n      <button class=\"cl-dot is-active\" role=\"tab\" aria-label=\"Imagen 1\" aria-selected=\"true\"><\/button>\n      <button class=\"cl-dot\" role=\"tab\" aria-label=\"Imagen 2\" aria-selected=\"false\"><\/button>\n      <button class=\"cl-dot\" role=\"tab\" aria-label=\"Imagen 3\" aria-selected=\"false\"><\/button>\n      <button class=\"cl-dot\" role=\"tab\" aria-label=\"Imagen 4\" aria-selected=\"false\"><\/button>\n      <button class=\"cl-dot\" role=\"tab\" aria-label=\"Imagen 5\" aria-selected=\"false\"><\/button>\n      <button class=\"cl-dot\" role=\"tab\" aria-label=\"Imagen 6\" aria-selected=\"false\"><\/button>\n      <button class=\"cl-dot\" role=\"tab\" aria-label=\"Imagen 7\" aria-selected=\"false\"><\/button>\n      <button class=\"cl-dot\" role=\"tab\" aria-label=\"Imagen 8\" aria-selected=\"false\"><\/button>\n      <button class=\"cl-dot\" role=\"tab\" aria-label=\"Imagen 9\" aria-selected=\"false\"><\/button>\n      <button class=\"cl-dot\" role=\"tab\" aria-label=\"Imagen 10\" aria-selected=\"false\"><\/button>\n    <\/div>\n\n    <!-- CTA -->\n    <div id=\"cl-gallery-cta\" class=\"cl-gal-reveal\" style=\"transition-delay:0.2s;\">\n      <a href=\"https:\/\/portafolio.contraluzfotografia.com\/\"\n         target=\"_blank\" rel=\"noopener noreferrer\"\n         class=\"cl-gallery-btn\"\n         aria-label=\"Ver portafolio completo de bodas \u2014 Contraluz Fotograf\u00eda\">\n        Ver bodas completas\n      <\/a>\n    <\/div>\n\n  <\/div>\n<\/section>\n\n<!-- =============================================\n  LIGHTBOX (fuera del section para evitar overflow)\n  ============================================= -->\n<div\n  id=\"cl-lightbox\"\n  role=\"dialog\"\n  aria-modal=\"true\"\n  aria-label=\"Fotograf\u00eda en tama\u00f1o completo\"\n  aria-hidden=\"true\"\n>\n  <!-- Cerrar -->\n  <button id=\"cl-lb-close\" aria-label=\"Cerrar fotograf\u00eda\">\n    <span class=\"material-symbols-outlined\" style=\"font-size:22px;\" aria-hidden=\"true\">close<\/span>\n  <\/button>\n\n  <!-- Nav prev -->\n  <button id=\"cl-lb-prev\" class=\"cl-lb-nav\" aria-label=\"Fotograf\u00eda anterior\">\n    <span class=\"material-symbols-outlined\" style=\"font-size:24px;\" aria-hidden=\"true\">chevron_left<\/span>\n  <\/button>\n\n  <!-- Imagen -->\n  <div id=\"cl-lb-img-wrap\">\n    <img decoding=\"async\" id=\"cl-lb-img\" src=\"\" alt=\"\" \/>\n  <\/div>\n\n  <!-- Nav next -->\n  <button id=\"cl-lb-next\" class=\"cl-lb-nav\" aria-label=\"Fotograf\u00eda siguiente\">\n    <span class=\"material-symbols-outlined\" style=\"font-size:24px;\" aria-hidden=\"true\">chevron_right<\/span>\n  <\/button>\n\n  <!-- Caption -->\n  <div id=\"cl-lb-caption\" aria-hidden=\"true\"><\/div>\n\n  <!-- Contador -->\n  <div id=\"cl-lb-counter\" aria-hidden=\"true\">1 \/ 10<\/div>\n<\/div>\n\n<script>\n(function(){\n  var TOTAL     = 10;\n  var DELAY     = 5000;\n  var current   = 0;\n  var lbOpen    = false;\n  var lbCurrent = 0;\n  var timer     = null;\n  var progTimer = null;\n\n  \/* \u2500\u2500 Referencias carrusel \u2500\u2500 *\/\n  var stage    = document.getElementById('cl-stage');\n  var carousel = document.getElementById('cl-carousel');\n  var progress = document.getElementById('cl-progress');\n  var counter  = document.getElementById('cl-counter');\n  var prevBtn  = document.getElementById('cl-prev');\n  var nextBtn  = document.getElementById('cl-next');\n  var zoomHint = document.getElementById('cl-zoom-hint');\n\n  if(!stage || !carousel || !prevBtn || !nextBtn) return;\n\n  var slides     = stage.querySelectorAll('.cl-slide');\n  var dots       = document.querySelectorAll('#cl-dots .cl-dot');\n  var touchStartX = 0;\n\n  \/* \u2500\u2500 Referencias lightbox \u2500\u2500 *\/\n  var lightbox   = document.getElementById('cl-lightbox');\n  var lbImg      = document.getElementById('cl-lb-img');\n  var lbCaption  = document.getElementById('cl-lb-caption');\n  var lbCounter  = document.getElementById('cl-lb-counter');\n  var lbClose    = document.getElementById('cl-lb-close');\n  var lbPrev     = document.getElementById('cl-lb-prev');\n  var lbNext     = document.getElementById('cl-lb-next');\n\n  \/* Recopila src y alt de cada slide *\/\n  var imgData = [];\n  slides.forEach(function(slide){\n    var img = slide.querySelector('img');\n    if(img) imgData.push({ src: img.src, alt: img.alt });\n  });\n\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     CARRUSEL\n  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n  function goTo(index) {\n    slides[current].classList.remove('is-active');\n    dots[current].classList.remove('is-active');\n    dots[current].setAttribute('aria-selected', 'false');\n\n    current = (index + TOTAL) % TOTAL;\n\n    slides[current].classList.add('is-active');\n    dots[current].classList.add('is-active');\n    dots[current].setAttribute('aria-selected', 'true');\n    stage.style.transform = 'translateX(-' + (current * 100) + '%)';\n    counter.textContent = (current + 1) + ' \/ ' + TOTAL;\n\n    resetProgress();\n  }\n\n  function resetProgress() {\n    if(!progress) return;\n    progress.style.transition = 'none';\n    progress.style.width = '0%';\n    clearTimeout(progTimer);\n    progTimer = setTimeout(function(){\n      progress.style.transition = 'width ' + DELAY + 'ms linear';\n      progress.style.width = '100%';\n    }, 30);\n  }\n\n  function startAuto() {\n    clearInterval(timer);\n    timer = setInterval(function(){ goTo(current + 1); }, DELAY);\n    resetProgress();\n  }\n\n  function stopAuto() {\n    clearInterval(timer);\n    clearTimeout(progTimer);\n    if(progress) progress.style.transition = 'none';\n  }\n\n  prevBtn.addEventListener('click', function(e){ e.stopPropagation(); stopAuto(); goTo(current - 1); startAuto(); });\n  nextBtn.addEventListener('click', function(e){ e.stopPropagation(); stopAuto(); goTo(current + 1); startAuto(); });\n\n  dots.forEach(function(dot, i){\n    dot.addEventListener('click', function(){ stopAuto(); goTo(i); startAuto(); });\n  });\n\n  carousel.addEventListener('keydown', function(e){\n    if(e.key === 'ArrowLeft')  { stopAuto(); goTo(current - 1); startAuto(); }\n    if(e.key === 'ArrowRight') { stopAuto(); goTo(current + 1); startAuto(); }\n  });\n\n  carousel.addEventListener('touchstart', function(e){ touchStartX = e.touches[0].clientX; }, { passive: true });\n  carousel.addEventListener('touchend', function(e){\n    var diff = touchStartX - e.changedTouches[0].clientX;\n    if(Math.abs(diff) > 40){\n      stopAuto();\n      goTo(diff > 0 ? current + 1 : current - 1);\n      startAuto();\n    }\n  }, { passive: true });\n\n  carousel.addEventListener('mouseenter', stopAuto);\n  carousel.addEventListener('mouseleave', function(){ if(!lbOpen) startAuto(); });\n\n  document.addEventListener('visibilitychange', function(){\n    document.hidden ? stopAuto() : (lbOpen ? null : startAuto());\n  });\n\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     LIGHTBOX \u2014 abrir\/cerrar\n  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n  function lbShow(index) {\n    if(!lightbox || !lbImg) return;\n    lbOpen    = true;\n    lbCurrent = (index + TOTAL) % TOTAL;\n\n    var data = imgData[lbCurrent];\n    lbImg.src = data.src;\n    lbImg.alt = data.alt;\n    if(lbCaption) lbCaption.textContent = data.alt;\n    if(lbCounter) lbCounter.textContent = (lbCurrent + 1) + ' \/ ' + TOTAL;\n\n    lightbox.classList.add('is-open');\n    lightbox.setAttribute('aria-hidden', 'false');\n    document.body.style.overflow = 'hidden';\n    stopAuto();\n\n    \/* Foco accesible *\/\n    if(lbClose) setTimeout(function(){ lbClose.focus(); }, 50);\n  }\n\n  function lbHide() {\n    if(!lightbox) return;\n    lbOpen = false;\n    lightbox.classList.remove('is-open');\n    lightbox.setAttribute('aria-hidden', 'true');\n    document.body.style.overflow = '';\n    startAuto();\n  }\n\n  function lbGoTo(index) {\n    lbCurrent = (index + TOTAL) % TOTAL;\n    var data = imgData[lbCurrent];\n\n    \/* Transici\u00f3n suave *\/\n    lbImg.style.opacity = '0';\n    lbImg.style.transform = 'scale(0.97)';\n    lbImg.style.transition = 'opacity 0.22s ease, transform 0.22s ease';\n\n    setTimeout(function(){\n      lbImg.src = data.src;\n      lbImg.alt = data.alt;\n      if(lbCaption) lbCaption.textContent = data.alt;\n      if(lbCounter) lbCounter.textContent = (lbCurrent + 1) + ' \/ ' + TOTAL;\n      lbImg.style.opacity = '1';\n      lbImg.style.transform = 'scale(1)';\n    }, 160);\n  }\n\n  \/* Click en slide abre lightbox *\/\n  slides.forEach(function(slide){\n    slide.addEventListener('click', function(){\n      var idx = parseInt(slide.getAttribute('data-index'), 10);\n      lbShow(isNaN(idx) ? current : idx);\n    });\n  });\n\n  \/* Controles lightbox *\/\n  if(lbClose) lbClose.addEventListener('click', lbHide);\n  if(lbPrev)  lbPrev.addEventListener('click', function(){ lbGoTo(lbCurrent - 1); });\n  if(lbNext)  lbNext.addEventListener('click', function(){ lbGoTo(lbCurrent + 1); });\n\n  \/* Click fuera de la imagen cierra *\/\n  if(lightbox){\n    lightbox.addEventListener('click', function(e){\n      if(e.target === lightbox) lbHide();\n    });\n  }\n\n  \/* Teclado en lightbox *\/\n  document.addEventListener('keydown', function(e){\n    if(!lbOpen) return;\n    if(e.key === 'Escape')     lbHide();\n    if(e.key === 'ArrowLeft')  lbGoTo(lbCurrent - 1);\n    if(e.key === 'ArrowRight') lbGoTo(lbCurrent + 1);\n  });\n\n  \/* Touch swipe en lightbox *\/\n  var lbTouchX = 0;\n  if(lightbox){\n    lightbox.addEventListener('touchstart', function(e){ lbTouchX = e.touches[0].clientX; }, { passive: true });\n    lightbox.addEventListener('touchend', function(e){\n      var diff = lbTouchX - e.changedTouches[0].clientX;\n      if(Math.abs(diff) > 40) lbGoTo(diff > 0 ? lbCurrent + 1 : lbCurrent - 1);\n    }, { passive: true });\n  }\n\n  \/* Oculta hint despu\u00e9s de 3 seg *\/\n  if(zoomHint){\n    setTimeout(function(){\n      zoomHint.style.opacity = '0';\n    }, 3000);\n  }\n\n  \/* Scroll reveal *\/\n  if(!document.body.classList.contains('elementor-editor-active')){\n    var revEls = document.querySelectorAll('#portafolio .cl-gal-reveal');\n    if(revEls.length){\n      var revObs = new IntersectionObserver(function(entries){\n        entries.forEach(function(entry){\n          if(entry.isIntersecting){\n            entry.target.classList.add('cl-gal-visible');\n            revObs.unobserve(entry.target);\n          }\n        });\n      }, { threshold: 0.12, rootMargin: '0px 0px -40px 0px' });\n      revEls.forEach(function(el){ revObs.observe(el); });\n    }\n  }\n\n  \/* Arranque *\/\n  goTo(0);\n  startAuto();\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-da024e8 e-flex e-con-boxed e-con e-child\" data-id=\"da024e8\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_motion_fx_mouse&quot;:&quot;yes&quot;,&quot;animation_mobile&quot;:&quot;fadeIn&quot;,&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-41cfd32 elementor-widget elementor-widget-html\" data-id=\"41cfd32\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================\nBLOQUE 05 - PROCESO (v2 - fix wrapper + textos + reveal)\nProyecto: NV.contraluzfotografia.com\n========================= -->\n\n<style>\n  \/* === Secci\u00f3n unificada === *\/\n  #proceso {\n    padding-top: 6rem;\n    padding-bottom: 6rem;\n    background-color: #F4F1EE;\n    border-top: 1px solid rgba(232,228,225,0.5);\n  }\n\n  @media (min-width: 768px) {\n    #proceso { padding-top: 8rem; padding-bottom: 8rem; }\n  }\n\n  #cl-proceso-inner {\n    max-width: 80rem;\n    margin: 0 auto;\n    padding-left:  max(1.5rem, env(safe-area-inset-left));\n    padding-right: max(1.5rem, env(safe-area-inset-right));\n  }\n\n  \/* Header *\/\n  #cl-proceso-header {\n    text-align: center;\n    margin-bottom: 5rem;\n  }\n\n  #cl-proceso-header span {\n    display: block;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.3em;\n    color: #D0B8B3;\n    margin-bottom: 1rem;\n  }\n\n  #cl-proceso-header h2 {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(2rem, 5vw, 3rem);\n    font-weight: 400;\n    font-style: italic;\n    color: #3A2E2A;\n    margin: 0;\n  }\n\n  \/* Grid *\/\n  .cl-proceso-grid {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 3rem;\n    position: relative;\n  }\n\n  @media (min-width: 768px) {\n    .cl-proceso-grid {\n      grid-template-columns: repeat(4, 1fr);\n      gap: 2rem;\n    }\n  }\n\n  \/* L\u00ednea conectora \u2014 solo desktop *\/\n  .cl-proceso-line {\n    display: none;\n  }\n\n  @media (min-width: 768px) {\n    .cl-proceso-line {\n      display: block;\n      position: absolute;\n      top: 2.5rem;\n      left: 12%;\n      right: 12%;\n      height: 1px;\n      background: linear-gradient(to right, transparent, rgba(208,184,179,0.4), transparent);\n      z-index: 0;\n    }\n  }\n\n  \/* Cada paso *\/\n  .cl-paso {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    text-align: center;\n    position: relative;\n    z-index: 10;\n  }\n\n  @media (max-width: 767px) {\n    .cl-paso {\n      flex-direction: row;\n      text-align: left;\n      gap: 1.25rem;\n      align-items: flex-start;\n    }\n  }\n\n  .cl-paso-icon {\n    width: 5rem;\n    height: 5rem;\n    flex-shrink: 0;\n    border-radius: 9999px;\n    background-color: #ffffff;\n    border: 1px solid rgba(208,184,179,0.25);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    margin-bottom: 1.5rem;\n    box-shadow: 0 2px 12px rgba(58,46,42,0.07);\n    color: #D0B8B3;\n  }\n\n  @media (max-width: 767px) {\n    .cl-paso-icon { margin-bottom: 0; }\n  }\n\n  \/* \u2191 TAMA\u00d1OS CORREGIDOS \u2191 *\/\n  .cl-paso-text h3 {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(1.15rem, 2.5vw, 1.35rem); \/* era 1.15rem fijo *\/\n    font-weight: 500;\n    color: #3A2E2A;\n    margin: 0 0 0.65rem 0;\n    line-height: 1.3;\n  }\n\n  .cl-paso-text p {\n    font-family: 'Manrope', sans-serif;\n    font-size: 1rem;                            \/* era 0.875rem (14px) \u2192 16px *\/\n    font-weight: 300;\n    color: #8A817C;\n    line-height: 1.8;\n    margin: 0;\n  }\n\n  \/* === Animaciones locales === *\/\n  .cl-pro-reveal {\n    opacity: 0;\n    transform: translateY(24px);\n    transition: opacity 0.7s cubic-bezier(0.4,0,0.2,1),\n                transform 0.7s cubic-bezier(0.4,0,0.2,1);\n  }\n\n  .cl-pro-reveal.cl-pro-visible {\n    opacity: 1;\n    transform: translateY(0);\n  }\n\n  .elementor-editor-active .cl-pro-reveal {\n    opacity: 1 !important;\n    transform: none !important;\n    transition: none !important;\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .cl-pro-reveal {\n      opacity: 1 !important;\n      transform: none !important;\n      transition: none !important;\n    }\n  }\n<\/style>\n\n<section\n  id=\"proceso\"\n  aria-label=\"Nuestro proceso \u2014 c\u00f3mo comenzar con Contraluz Fotograf\u00eda\"\n>\n  <div id=\"cl-proceso-inner\">\n\n    <!-- Header -->\n    <div id=\"cl-proceso-header\" class=\"cl-pro-reveal\">\n      <span>El proceso<\/span>\n      <h2>As\u00ed comienza su historia con nosotros<\/h2>\n    <\/div>\n\n    <!-- Pasos -->\n    <div class=\"cl-proceso-grid\">\n      <div class=\"cl-proceso-line\" aria-hidden=\"true\"><\/div>\n\n      <div class=\"cl-paso cl-pro-reveal\" style=\"transition-delay:0.10s;\">\n        <div class=\"cl-paso-icon\" aria-hidden=\"true\">\n          <span class=\"material-symbols-outlined\" style=\"font-size:1.75rem; font-variation-settings:'FILL' 0,'wght' 300;\">mail<\/span>\n        <\/div>\n        <div class=\"cl-paso-text\">\n          <h3>1. Primer contacto<\/h3>\n          <p>Escr\u00edbannos por WhatsApp o correo y conversemos sobre la disponibilidad de su fecha.<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"cl-paso cl-pro-reveal\" style=\"transition-delay:0.20s;\">\n        <div class=\"cl-paso-icon\" aria-hidden=\"true\">\n          <span class=\"material-symbols-outlined\" style=\"font-size:1.75rem; font-variation-settings:'FILL' 0,'wght' 300;\">call<\/span>\n        <\/div>\n        <div class=\"cl-paso-text\">\n          <h3>2. Nos conocemos<\/h3>\n          <p>Agendamos una llamada o videollamada para conocer su visi\u00f3n, resolver dudas y orientarles en cada detalle.<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"cl-paso cl-pro-reveal\" style=\"transition-delay:0.30s;\">\n        <div class=\"cl-paso-icon\" aria-hidden=\"true\">\n          <span class=\"material-symbols-outlined\" style=\"font-size:1.75rem; font-variation-settings:'FILL' 0,'wght' 300;\">edit_document<\/span>\n        <\/div>\n        <div class=\"cl-paso-text\">\n          <h3>3. Reserva de fecha<\/h3>\n          <p>Formalizamos su reserva con contrato digital y un anticipo desde $1,000 para asegurar su fecha.<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"cl-paso cl-pro-reveal\" style=\"transition-delay:0.40s;\">\n        <div class=\"cl-paso-icon\" aria-hidden=\"true\">\n          <span class=\"material-symbols-outlined\" style=\"font-size:1.75rem; font-variation-settings:'FILL' 0,'wght' 300;\">camera_alt<\/span>\n        <\/div>\n        <div class=\"cl-paso-text\">\n          <h3>4. El gran d\u00eda<\/h3>\n          <p>Mientras ustedes viven su d\u00eda, nosotros nos encargamos de convertirlo en recuerdos que permanezcan.<\/p>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/section>\n\n<script>\n(function(){\n  if(document.body && document.body.classList.contains('elementor-editor-active')) return;\n\n  function initProcesoReveal(){\n    var els = document.querySelectorAll('#proceso .cl-pro-reveal');\n    if(!els.length) return;\n\n    var obs = new IntersectionObserver(function(entries){\n      entries.forEach(function(entry){\n        if(entry.isIntersecting){\n          entry.target.classList.add('cl-pro-visible');\n          obs.unobserve(entry.target);\n        }\n      });\n    }, { threshold: 0.12, rootMargin: '0px 0px -40px 0px' });\n\n    els.forEach(function(el){ obs.observe(el); });\n  }\n\n  if(document.readyState === 'loading'){\n    document.addEventListener('DOMContentLoaded', initProcesoReveal);\n  } else {\n    initProcesoReveal();\n  }\n  window.addEventListener('load', initProcesoReveal);\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2804add e-flex e-con-boxed e-con e-child\" data-id=\"2804add\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_motion_fx_mouse&quot;:&quot;yes&quot;,&quot;animation_mobile&quot;:&quot;fadeIn&quot;,&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-991eaf2 elementor-widget elementor-widget-html\" data-id=\"991eaf2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================\nBLOQUE 06 - POR QU\u00c9 IMPORTA (Opci\u00f3n D - Split foto + lista)\nProyecto: NV.contraluzfotografia.com\n========================= -->\n\n<style>\n  \/* === Secci\u00f3n unificada === *\/\n  #paquetes {\n    background-color: #F4F1EE;\n  }\n\n  #cl-split-wrap {\n    display: flex;\n    flex-direction: column;\n    min-height: 600px;\n  }\n\n  @media (min-width: 1024px) {\n    #cl-split-wrap {\n      flex-direction: row;\n      min-height: 720px;\n    }\n  }\n\n  \/* \u2500\u2500 MITAD IZQUIERDA \u2014 Foto \u2500\u2500 *\/\n  #cl-split-photo {\n    position: relative;\n    width: 100%;\n    aspect-ratio: 4\/3;\n    overflow: hidden;\n    flex-shrink: 0;\n  }\n\n  @media (min-width: 1024px) {\n    #cl-split-photo {\n      width: 50%;\n      aspect-ratio: unset;\n    }\n  }\n\n  #cl-split-photo img {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    object-position: center center;\n    display: block;\n  }\n\n  #cl-split-overlay {\n    position: absolute;\n    inset: 0;\n    background: linear-gradient(\n      to bottom,\n      rgba(58,46,42,0.2) 0%,\n      rgba(58,46,42,0.65) 100%\n    );\n    z-index: 1;\n  }\n\n  #cl-split-quote {\n    position: absolute;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    z-index: 2;\n    padding: 2.5rem;\n  }\n\n  @media (min-width: 1024px) {\n    #cl-split-quote {\n      padding: 3.5rem;\n    }\n  }\n\n  #cl-split-quote blockquote {\n    margin: 0;\n    padding: 0;\n    border: none;\n  }\n\n  #cl-split-quote p {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(1.5rem, 3.5vw, 2.25rem);\n    font-weight: 400;\n    font-style: italic;\n    color: #FDFCFB;\n    line-height: 1.4;\n    margin: 0 0 1rem 0;\n    text-shadow: 0 2px 12px rgba(0,0,0,0.3);\n  }\n\n  #cl-split-quote cite {\n    display: block;\n    font-family: 'Manrope', sans-serif;\n    font-size: 10px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.4em;\n    color: rgba(255,255,255,0.65);\n    font-style: normal;\n  }\n\n  \/* \u2500\u2500 MITAD DERECHA \u2014 Lista \u2500\u2500 *\/\n  #cl-split-content {\n    width: 100%;\n    background-color: #F4F1EE;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    padding: 3.5rem max(1.5rem, env(safe-area-inset-right)) 3.5rem max(1.5rem, env(safe-area-inset-left));\n  }\n\n  @media (min-width: 1024px) {\n    #cl-split-content {\n      width: 50%;\n      padding: 5rem 4rem 5rem 5rem;\n    }\n  }\n\n  \/* Eyebrow *\/\n  #cl-split-eyebrow {\n    display: block;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.4em;\n    color: #D0B8B3;\n    margin-bottom: 2rem;\n  }\n\n  \/* Cada raz\u00f3n *\/\n  .cl-razon {\n    display: flex;\n    gap: 1.75rem;\n    align-items: flex-start;\n    padding-bottom: 2rem;\n    margin-bottom: 2rem;\n    border-bottom: 1px solid rgba(208,184,179,0.25);\n  }\n\n  .cl-razon:last-of-type {\n    border-bottom: none;\n    padding-bottom: 0;\n    margin-bottom: 2.5rem;\n  }\n\n  \/* N\u00famero grande *\/\n  .cl-razon-num {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(2.5rem, 5vw, 3.5rem);\n    font-weight: 400;\n    font-style: italic;\n    line-height: 1;\n    color: rgba(208,184,179,0.45);\n    flex-shrink: 0;\n    width: 2.5rem;\n    text-align: center;\n    margin-top: -0.25rem;\n  }\n\n  .cl-razon-body h3 {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(1.1rem, 2.5vw, 1.35rem);\n    font-weight: 500;\n    color: #3A2E2A;\n    margin: 0 0 0.6rem 0;\n    line-height: 1.3;\n  }\n\n  .cl-razon-body p {\n    font-family: 'Manrope', sans-serif;\n    font-size: 1rem;\n    font-weight: 300;\n    color: #8A817C;\n    line-height: 1.8;\n    margin: 0;\n  }\n\n  \/* CTA *\/\n  #cl-split-cta {\n    display: flex;\n    flex-direction: column;\n    gap: 0.75rem;\n  }\n\n  @media (min-width: 640px) {\n    #cl-split-cta { flex-direction: row; align-items: center; }\n  }\n\n  .cl-split-btn-primary {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 0.5rem;\n    min-height: 48px;\n    padding: 1rem 2rem;\n    background-color: #3A2E2A;\n    color: #ffffff !important;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.15em;\n    text-decoration: none !important;\n    border-radius: 2px;\n    transition: background-color 0.2s;\n  }\n\n  .cl-split-btn-primary:hover { background-color: #D0B8B3; }\n\n  .cl-split-btn-ghost {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 48px;\n    padding: 1rem 1.5rem;\n    color: #8A817C !important;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.12em;\n    text-decoration: none !important;\n    border-radius: 2px;\n    transition: color 0.2s;\n  }\n\n  .cl-split-btn-ghost:hover { color: #3A2E2A !important; }\n\n  \/* === Animaciones locales === *\/\n  .cl-sp-reveal-left {\n    opacity: 0;\n    transform: translateX(-28px);\n    transition: opacity 0.85s cubic-bezier(0.4,0,0.2,1),\n                transform 0.85s cubic-bezier(0.4,0,0.2,1);\n  }\n\n  .cl-sp-reveal-right {\n    opacity: 0;\n    transform: translateX(28px);\n    transition: opacity 0.85s cubic-bezier(0.4,0,0.2,1),\n                transform 0.85s cubic-bezier(0.4,0,0.2,1);\n  }\n\n  .cl-sp-reveal-up {\n    opacity: 0;\n    transform: translateY(20px);\n    transition: opacity 0.7s cubic-bezier(0.4,0,0.2,1),\n                transform 0.7s cubic-bezier(0.4,0,0.2,1);\n  }\n\n  .cl-sp-reveal-left.cl-sp-visible,\n  .cl-sp-reveal-right.cl-sp-visible,\n  .cl-sp-reveal-up.cl-sp-visible {\n    opacity: 1;\n    transform: translate(0,0);\n  }\n\n  .elementor-editor-active .cl-sp-reveal-left,\n  .elementor-editor-active .cl-sp-reveal-right,\n  .elementor-editor-active .cl-sp-reveal-up {\n    opacity: 1 !important;\n    transform: none !important;\n    transition: none !important;\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .cl-sp-reveal-left,\n    .cl-sp-reveal-right,\n    .cl-sp-reveal-up {\n      opacity: 1 !important;\n      transform: none !important;\n      transition: none !important;\n    }\n  }\n<\/style>\n\n<section\n  id=\"paquetes\"\n  aria-label=\"Por qu\u00e9 contratar fotograf\u00eda y video de boda \u2014 Contraluz Fotograf\u00eda\"\n>\n  <div id=\"cl-split-wrap\">\n\n    <!-- \u2500\u2500 MITAD IZQUIERDA \u2014 Foto con cita \u2500\u2500 -->\n    <div id=\"cl-split-photo\" class=\"cl-sp-reveal-left\">\n      <img\n        src=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2026\/03\/Boda-Valeria-y-Alfonso-00-94.jpg\"\n        alt=\"Boda de Valeria y Alfonso \u2014 Fotograf\u00eda editorial en Saltillo, Coahuila\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      \/>\n      <div id=\"cl-split-overlay\"><\/div>\n      <div id=\"cl-split-quote\">\n        <blockquote>\n          <p>Su boda ocurre una sola vez. Lo que sienten merece conservarse <\/p>\n          <cite>Contraluz Fotograf\u00eda \u00b7 Saltillo, Coahuila<\/cite>\n        <\/blockquote>\n      <\/div>\n    <\/div>\n\n    <!-- \u2500\u2500 MITAD DERECHA \u2014 Razones \u2500\u2500 -->\n    <div id=\"cl-split-content\" class=\"cl-sp-reveal-right\">\n\n      <span id=\"cl-split-eyebrow\">Por qu\u00e9 importa<\/span>\n\n      <!-- Raz\u00f3n 01 -->\n      <div class=\"cl-razon cl-sp-reveal-up\" style=\"transition-delay:0.15s;\">\n        <span class=\"cl-razon-num\" aria-hidden=\"true\">01<\/span>\n        <div class=\"cl-razon-body\">\n          <h3>El d\u00eda pasa m\u00e1s r\u00e1pido de lo que imaginan<\/h3>\n          <p>Entre los nervios y la emoci\u00f3n, muchos momentos se viven tan r\u00e1pido que apenas alcanzan a procesarlos. Nuestra cobertura les permite volver a ese d\u00eda y redescubrirlo completo.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Raz\u00f3n 02 -->\n      <div class=\"cl-razon cl-sp-reveal-up\" style=\"transition-delay:0.28s;\">\n        <span class=\"cl-razon-num\" aria-hidden=\"true\">02<\/span>\n        <div class=\"cl-razon-body\">\n          <h3>No tienen que saber posar para verse bien<\/h3>\n          <p>Les guiamos durante el d\u00eda para que se sientan tranquilos y disfruten la experiencia. El resultado son im\u00e1genes naturales, cercanas y fieles a quienes ustedes son.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Raz\u00f3n 03 -->\n      <div class=\"cl-razon cl-sp-reveal-up\" style=\"transition-delay:0.41s;\">\n        <span class=\"cl-razon-num\" aria-hidden=\"true\">03<\/span>\n        <div class=\"cl-razon-body\">\n          <h3>Los recuerdos merecen m\u00e1s que solo estar grabados<\/h3>\n          <p>Una cobertura con intenci\u00f3n documenta los detalles, las miradas y la esencia de su boda. Lo que reciben no solo se ve bien: tambi\u00e9n les devuelve la emoci\u00f3n de lo que vivieron.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- CTAs -->\n      <div id=\"cl-split-cta\" class=\"cl-sp-reveal-up\" style=\"transition-delay:0.54s;\">\n        <a href=\"https:\/\/wa.me\/8441337326?text=Hola%20Contraluz%2C%20quiero%20saber%20qu%C3%A9%20cobertura%20se%20adapta%20mejor%20a%20mi%20boda.\"\n           target=\"_blank\" rel=\"noopener noreferrer\"\n           class=\"cl-split-btn-primary\"\n           aria-label=\"Cotizar cobertura de boda por WhatsApp \u2014 Contraluz Fotograf\u00eda\">\n          <span class=\"material-symbols-outlined\" style=\"font-size:17px;\" aria-hidden=\"true\">chat<\/span>\n          Cotizar por WhatsApp\n        <\/a>\n        <a href=\"https:\/\/portafolio.contraluzfotografia.com\/\"\n           target=\"_blank\" rel=\"noopener noreferrer\"\n           class=\"cl-split-btn-ghost\"\n           aria-label=\"Ver portafolio de bodas \u2014 Contraluz Fotograf\u00eda\">\n          Ver portafolio \u2192\n        <\/a>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/section>\n\n<script>\n(function(){\n  if(document.body && document.body.classList.contains('elementor-editor-active')) return;\n\n  function initSplitReveal(){\n    var els = document.querySelectorAll(\n      '#paquetes .cl-sp-reveal-left, #paquetes .cl-sp-reveal-right, #paquetes .cl-sp-reveal-up'\n    );\n    if(!els.length) return;\n\n    var obs = new IntersectionObserver(function(entries){\n      entries.forEach(function(entry){\n        if(entry.isIntersecting){\n          entry.target.classList.add('cl-sp-visible');\n          obs.unobserve(entry.target);\n        }\n      });\n    }, { threshold: 0.10, rootMargin: '0px 0px -40px 0px' });\n\n    els.forEach(function(el){ obs.observe(el); });\n  }\n\n  if(document.readyState === 'loading'){\n    document.addEventListener('DOMContentLoaded', initSplitReveal);\n  } else {\n    initSplitReveal();\n  }\n  window.addEventListener('load', initSplitReveal);\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-54f9da5 e-flex e-con-boxed e-con e-child\" data-id=\"54f9da5\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_motion_fx_mouse&quot;:&quot;yes&quot;,&quot;animation_mobile&quot;:&quot;fadeIn&quot;,&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6e7c0f2 elementor-widget elementor-widget-html\" data-id=\"6e7c0f2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================\nBLOQUE 07 - RESE\u00d1AS CARRUSEL (v2 - fix wrapper + textos + reveal + guards)\nProyecto: NV.contraluzfotografia.com\n========================= -->\n\n<style>\n  \/* === Secci\u00f3n unificada === *\/\n  #resenas {\n    padding-top: 6rem;\n    padding-bottom: 6rem;\n    background-color: #F4F1EE;\n    border-top:    1px solid rgba(232,228,225,0.3);\n    border-bottom: 1px solid rgba(232,228,225,0.3);\n  }\n\n  @media (min-width: 768px) {\n    #resenas { padding-top: 8rem; padding-bottom: 8rem; }\n  }\n\n  #cl-resenas-inner {\n    max-width: 44rem;\n    margin: 0 auto;\n    padding-left:  max(1.5rem, env(safe-area-inset-left));\n    padding-right: max(1.5rem, env(safe-area-inset-right));\n  }\n\n  \/* Header *\/\n  #cl-resenas-header {\n    text-align: center;\n    margin-bottom: 2.5rem;\n  }\n\n  #cl-resenas-header .cl-eyebrow {\n    display: block;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.3em;\n    color: #D0B8B3;\n    margin-bottom: 0.75rem;\n  }\n\n  #cl-resenas-header h2 {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(1.75rem, 4vw, 2.5rem);\n    font-weight: 400;\n    font-style: italic;\n    color: #3A2E2A;\n    margin: 0 0 1rem 0;\n  }\n\n  \/* Badge Bodas.com.mx *\/\n  .cl-bodas-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    background: #ffffff;\n    border: 1px solid rgba(208,184,179,0.35);\n    border-radius: 9999px;\n    padding: 6px 16px 6px 12px;\n    box-shadow: 0 4px 12px rgba(0,0,0,0.06);\n    text-decoration: none !important;\n    transition: box-shadow 0.2s;\n  }\n\n  .cl-bodas-badge:hover { box-shadow: 0 6px 18px rgba(0,0,0,0.1); }\n  .cl-bodas-badge img   { height: 15px; display: block; }\n\n  .cl-bodas-badge__stars {\n    color: #D0B8B3;\n    font-size: 12px;\n    letter-spacing: 0.06em;\n  }\n\n  .cl-bodas-badge__score {\n    font-family: 'Manrope', sans-serif;\n    font-weight: 800;\n    font-size: 12px;\n    color: #3A2E2A;\n  }\n\n  \/* Carrusel *\/\n  .cl-tst-carousel {\n    position: relative;\n    overflow: hidden;\n    margin-bottom: 0;\n  }\n\n  .cl-tst-track {\n    display: flex;\n    transition: transform 0.45s cubic-bezier(0.4, 0, 0.2, 1);\n    will-change: transform;\n    user-select: none;\n    -webkit-user-select: none;\n  }\n\n  .cl-tst-slide {\n    flex: 0 0 100%;\n    width: 100%;\n    padding: 0 2px;\n  }\n\n  \/* Tarjeta *\/\n  .cl-tst-card {\n    background: #ffffff;\n    border-radius: 16px;\n    padding: 2.25rem 2rem 2rem;\n    border: 1px solid rgba(208,184,179,0.2);\n    box-shadow: 0 10px 40px rgba(58,46,42,0.08);\n    text-align: center;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n  }\n\n  \/* Avatar *\/\n  .cl-tst-avatar {\n    width: 56px;\n    height: 56px;\n    border-radius: 9999px;\n    background-color: #F4F1EE;\n    border: 2px solid rgba(208,184,179,0.35);\n    box-shadow: 0 4px 12px rgba(208,184,179,0.2);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-family: 'Playfair Display', serif;\n    font-size: 22px;\n    font-weight: 700;\n    color: #D0B8B3;\n    margin-bottom: 1.25rem;\n    flex-shrink: 0;\n  }\n\n  \/* Comilla *\/\n  .cl-tst-quote {\n    font-family: 'Playfair Display', serif;\n    font-size: 4rem;\n    color: #D0B8B3;\n    opacity: 0.25;\n    line-height: 1;\n    margin-bottom: -0.5rem;\n  }\n\n  \/* T\u00edtulo rese\u00f1a *\/\n  .cl-tst-title {\n    font-family: 'Playfair Display', serif;\n    font-size: 1.05rem;\n    font-weight: 600;\n    font-style: italic;\n    color: #3A2E2A;\n    margin-bottom: 0.75rem;\n  }\n\n  \/* \u2191 TAMA\u00d1OS CORREGIDOS \u2191 *\/\n  .cl-tst-text {\n    font-family: 'Manrope', sans-serif;\n    font-size: 1rem;        \/* era 0.875rem \u2192 16px *\/\n    line-height: 1.8;\n    color: #8A817C;\n    font-weight: 300;\n    max-width: 32rem;\n    margin: 0 auto;\n  }\n\n  .cl-tst-name {\n    margin-top: 1.25rem;\n    font-family: 'Manrope', sans-serif;\n    font-weight: 800;\n    font-size: 0.9rem;      \/* era 0.875rem \u2192 m\u00e1s legible *\/\n    color: #3A2E2A;\n    text-transform: uppercase;\n    letter-spacing: 0.08em;\n  }\n\n  .cl-tst-source {\n    font-family: 'Manrope', sans-serif;\n    color: #8A817C;\n    font-size: 11px;\n    font-weight: 500;\n    margin-top: 3px;\n    letter-spacing: 0.04em;\n  }\n\n  .cl-tst-stars {\n    color: #D0B8B3;\n    font-size: 13px;\n    letter-spacing: 0.1em;\n    margin-top: 0.6rem;\n  }\n\n  \/* Flechas *\/\n  .cl-tst-arrow {\n    position: absolute;\n    top: 50%;\n    transform: translateY(-50%);\n    width: 36px;\n    height: 36px;\n    border-radius: 9999px;\n    background: rgba(255,255,255,0.95);\n    border: 1px solid rgba(208,184,179,0.35);\n    box-shadow: 0 4px 14px rgba(0,0,0,0.1);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    cursor: pointer;\n    z-index: 10;\n    color: #D0B8B3;\n    font-size: 22px;\n    font-weight: 900;\n    -webkit-tap-highlight-color: transparent;\n    transition: transform 0.1s ease, box-shadow 0.2s;\n    padding: 0;\n    line-height: 1;\n    font-family: sans-serif;\n  }\n\n  .cl-tst-arrow:active { transform: translateY(-50%) scale(0.92); }\n  .cl-tst-arrow:hover  { box-shadow: 0 6px 20px rgba(0,0,0,0.14); }\n  .cl-tst-arrow-prev   { left: -18px; }\n  .cl-tst-arrow-next   { right: -18px; }\n\n  @media (max-width: 480px) {\n    .cl-tst-arrow-prev { left: -8px; }\n    .cl-tst-arrow-next { right: -8px; }\n  }\n\n  \/* Dots *\/\n  .cl-tst-dots {\n    display: flex;\n    justify-content: center;\n    gap: 7px;\n    margin-top: 1.5rem;\n  }\n\n  .cl-tst-dot {\n    width: 7px;\n    height: 7px;\n    border-radius: 9999px;\n    background: rgba(208,184,179,0.3);\n    border: none;\n    padding: 0;\n    cursor: pointer;\n    transition: all 0.25s ease;\n    -webkit-tap-highlight-color: transparent;\n  }\n\n  .cl-tst-dot.is-active {\n    background: #D0B8B3;\n    width: 22px;\n  }\n\n  \/* Contador *\/\n  .cl-tst-counter {\n    text-align: center;\n    margin-top: 0.75rem;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: 0.14em;\n    color: #8A817C;\n    text-transform: uppercase;\n  }\n\n  \/* === Animaciones locales === *\/\n  .cl-res-reveal {\n    opacity: 0;\n    transform: translateY(24px);\n    transition: opacity 0.7s cubic-bezier(0.4,0,0.2,1),\n                transform 0.7s cubic-bezier(0.4,0,0.2,1);\n  }\n\n  .cl-res-reveal.cl-res-visible {\n    opacity: 1;\n    transform: translateY(0);\n  }\n\n  .elementor-editor-active .cl-res-reveal {\n    opacity: 1 !important;\n    transform: none !important;\n    transition: none !important;\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .cl-res-reveal {\n      opacity: 1 !important;\n      transform: none !important;\n      transition: none !important;\n    }\n  }\n<\/style>\n\n<section\n  id=\"resenas\"\n  aria-label=\"Opiniones de parejas \u2014 Contraluz Fotograf\u00eda Saltillo\"\n>\n  <div id=\"cl-resenas-inner\">\n\n    <!-- Header -->\n    <div id=\"cl-resenas-header\" class=\"cl-res-reveal\">\n      <span class=\"cl-eyebrow\">Opiniones verificadas<\/span>\n      <h2>Lo que dicen las parejas<\/h2>\n      <div style=\"display:flex; justify-content:center;\">\n        <a href=\"https:\/\/www.bodas.com.mx\/fotografos-de-bodas\/contraluz--e148664\/opiniones\"\n           target=\"_blank\" rel=\"noopener noreferrer\"\n           class=\"cl-bodas-badge\"\n           aria-label=\"Ver 13 opiniones verificadas de Contraluz en Bodas.com.mx \u2014 4.9 estrellas\">\n          <img decoding=\"async\" src=\"https:\/\/cdn1.bodas.com.mx\/assets\/img\/logos\/gen_logoHeader.svg\" alt=\"Bodas.com.mx\" loading=\"lazy\">\n          <span class=\"cl-bodas-badge__stars\" aria-hidden=\"true\">\u2605\u2605\u2605\u2605\u2605<\/span>\n          <span class=\"cl-bodas-badge__score\">4.9 \u00b7 13 opiniones<\/span>\n        <\/a>\n      <\/div>\n    <\/div>\n\n    <!-- Carrusel -->\n    <div\n      class=\"cl-tst-carousel cl-res-reveal\"\n      id=\"clTstCarousel\"\n      style=\"transition-delay:0.15s;\"\n      role=\"region\"\n      aria-label=\"Carrusel de rese\u00f1as\"\n    >\n      <button class=\"cl-tst-arrow cl-tst-arrow-prev\" id=\"clTstPrev\" aria-label=\"Rese\u00f1a anterior\">&#8249;<\/button>\n      <button class=\"cl-tst-arrow cl-tst-arrow-next\" id=\"clTstNext\" aria-label=\"Rese\u00f1a siguiente\">&#8250;<\/button>\n\n      <div class=\"cl-tst-track\" id=\"clTstTrack\" aria-hidden=\"true\">\n\n        <!-- 1. Lourdes -->\n        <div class=\"cl-tst-slide\">\n          <div class=\"cl-tst-card\">\n            <div class=\"cl-tst-avatar\" aria-hidden=\"true\">L<\/div>\n            <div class=\"cl-tst-quote\" aria-hidden=\"true\">\"<\/div>\n            <div class=\"cl-tst-title\">Excelente servicio y atenci\u00f3n<\/div>\n            <p class=\"cl-tst-text\">Puntuales el d\u00eda del evento y con una disponibilidad para las citas inigualable. Estuvieron muy atentos en todo momento, siempre preguntando si se nos ofrec\u00eda algo. Sin duda, su servicio es excelente.<\/p>\n            <div class=\"cl-tst-name\">Lourdes<\/div>\n            <div class=\"cl-tst-source\">Verificado en Bodas.com.mx<\/div>\n            <div class=\"cl-tst-stars\" aria-label=\"5 estrellas\">\u2605\u2605\u2605\u2605\u2605<\/div>\n          <\/div>\n        <\/div>\n\n        <!-- 2. Brianda -->\n        <div class=\"cl-tst-slide\">\n          <div class=\"cl-tst-card\">\n            <div class=\"cl-tst-avatar\" aria-hidden=\"true\">B<\/div>\n            <div class=\"cl-tst-quote\" aria-hidden=\"true\">\"<\/div>\n            <div class=\"cl-tst-title\">Profesionales, innovadores, creativos<\/div>\n            <p class=\"cl-tst-text\">Excelentes para desempe\u00f1ar su trabajo, comprometidos con la calidad y los tiempos de entrega. La mejor atenci\u00f3n. Siempre est\u00e1n buscando innovar ofreciendo lo m\u00e1s actual en equipo y estilos.<\/p>\n            <div class=\"cl-tst-name\">Brianda<\/div>\n            <div class=\"cl-tst-source\">Verificado en Bodas.com.mx<\/div>\n            <div class=\"cl-tst-stars\" aria-label=\"5 estrellas\">\u2605\u2605\u2605\u2605\u2605<\/div>\n          <\/div>\n        <\/div>\n\n        <!-- 3. Hiram -->\n        <div class=\"cl-tst-slide\">\n          <div class=\"cl-tst-card\">\n            <div class=\"cl-tst-avatar\" aria-hidden=\"true\">H<\/div>\n            <div class=\"cl-tst-quote\" aria-hidden=\"true\">\"<\/div>\n            <div class=\"cl-tst-title\">Excelencia<\/div>\n            <p class=\"cl-tst-text\">Excelente trabajo de profesionalismo y calidad. Lograron captar por completo, y mucho m\u00e1s de lo que ten\u00edamos imaginado. Gracias a ellos podemos disfrutar de muy buenos momentos para siempre.<\/p>\n            <div class=\"cl-tst-name\">Hiram<\/div>\n            <div class=\"cl-tst-source\">Verificado en Bodas.com.mx<\/div>\n            <div class=\"cl-tst-stars\" aria-label=\"5 estrellas\">\u2605\u2605\u2605\u2605\u2605<\/div>\n          <\/div>\n        <\/div>\n\n        <!-- 4. Yovana -->\n        <div class=\"cl-tst-slide\">\n          <div class=\"cl-tst-card\">\n            <div class=\"cl-tst-avatar\" aria-hidden=\"true\">Y<\/div>\n            <div class=\"cl-tst-quote\" aria-hidden=\"true\">\"<\/div>\n            <div class=\"cl-tst-title\">Excelente trabajo<\/div>\n            <p class=\"cl-tst-text\">Nos encant\u00f3 su trabajo. Muy profesionales y las fotos divinas. \u00a1Muy atentos hasta en el m\u00e1s m\u00ednimo detalle! Amables y serviciales. Recomiendo ampliamente sus servicios.<\/p>\n            <div class=\"cl-tst-name\">Yovana<\/div>\n            <div class=\"cl-tst-source\">Verificado en Bodas.com.mx<\/div>\n            <div class=\"cl-tst-stars\" aria-label=\"5 estrellas\">\u2605\u2605\u2605\u2605\u2605<\/div>\n          <\/div>\n        <\/div>\n\n        <!-- 5. Sandra -->\n        <div class=\"cl-tst-slide\">\n          <div class=\"cl-tst-card\">\n            <div class=\"cl-tst-avatar\" aria-hidden=\"true\">S<\/div>\n            <div class=\"cl-tst-quote\" aria-hidden=\"true\">\"<\/div>\n            <div class=\"cl-tst-title\">Parte de nuestra historia<\/div>\n            <p class=\"cl-tst-text\">Muchas gracias a Contraluz por ser parte de nuestra historia y plasmar la alegr\u00eda de ese d\u00eda tan importante. Los recomiendo, muy buen servicio en todos los sentidos.<\/p>\n            <div class=\"cl-tst-name\">Sandra<\/div>\n            <div class=\"cl-tst-source\">Verificado en Bodas.com.mx<\/div>\n            <div class=\"cl-tst-stars\" aria-label=\"5 estrellas\">\u2605\u2605\u2605\u2605\u2605<\/div>\n          <\/div>\n        <\/div>\n\n      <\/div>\n    <\/div>\n\n    <!-- Dots -->\n    <div class=\"cl-tst-dots\" id=\"clTstDots\" role=\"tablist\" aria-label=\"Seleccionar rese\u00f1a\">\n      <button class=\"cl-tst-dot is-active\" data-i=\"0\" role=\"tab\" aria-label=\"Rese\u00f1a 1\" aria-selected=\"true\"><\/button>\n      <button class=\"cl-tst-dot\" data-i=\"1\" role=\"tab\" aria-label=\"Rese\u00f1a 2\" aria-selected=\"false\"><\/button>\n      <button class=\"cl-tst-dot\" data-i=\"2\" role=\"tab\" aria-label=\"Rese\u00f1a 3\" aria-selected=\"false\"><\/button>\n      <button class=\"cl-tst-dot\" data-i=\"3\" role=\"tab\" aria-label=\"Rese\u00f1a 4\" aria-selected=\"false\"><\/button>\n      <button class=\"cl-tst-dot\" data-i=\"4\" role=\"tab\" aria-label=\"Rese\u00f1a 5\" aria-selected=\"false\"><\/button>\n    <\/div>\n\n    <!-- Contador -->\n    <div\n      class=\"cl-tst-counter\"\n      id=\"clTstCounter\"\n      aria-live=\"polite\"\n      aria-atomic=\"true\"\n    >1 \/ 5<\/div>\n\n  <\/div>\n<\/section>\n\n<script>\n(function(){\n  var track   = document.getElementById('clTstTrack');\n  var dots    = document.querySelectorAll('#clTstDots .cl-tst-dot');\n  var counter = document.getElementById('clTstCounter');\n  var prev    = document.getElementById('clTstPrev');\n  var next    = document.getElementById('clTstNext');\n\n  \/* Guard: aborta limpio si Elementor a\u00fan no renderiz\u00f3 *\/\n  if(!track || !prev || !next) return;\n\n  var total   = 5;\n  var current = 0;\n  var timer;\n\n  function goTo(index) {\n    dots[current].classList.remove('is-active');\n    dots[current].setAttribute('aria-selected', 'false');\n\n    current = (index + total) % total;\n    track.style.transform = 'translateX(-' + (current * 100) + '%)';\n\n    dots[current].classList.add('is-active');\n    dots[current].setAttribute('aria-selected', 'true');\n    counter.textContent = (current + 1) + ' \/ ' + total;\n  }\n\n  function startAuto() {\n    clearInterval(timer);\n    timer = setInterval(function(){ goTo(current + 1); }, 5500);\n  }\n\n  function resetAuto() { clearInterval(timer); startAuto(); }\n\n  prev.addEventListener('click', function(){ goTo(current - 1); resetAuto(); });\n  next.addEventListener('click', function(){ goTo(current + 1); resetAuto(); });\n\n  dots.forEach(function(d){\n    d.addEventListener('click', function(){\n      goTo(parseInt(d.getAttribute('data-i')));\n      resetAuto();\n    });\n  });\n\n  \/* Swipe t\u00e1ctil *\/\n  var startX = 0;\n  track.addEventListener('touchstart', function(e){ startX = e.touches[0].clientX; }, { passive: true });\n  track.addEventListener('touchend', function(e){\n    var diff = startX - e.changedTouches[0].clientX;\n    if(Math.abs(diff) > 40){ goTo(diff > 0 ? current + 1 : current - 1); resetAuto(); }\n  }, { passive: true });\n\n  \/* Pausa si cambia de pesta\u00f1a *\/\n  document.addEventListener('visibilitychange', function(){\n    document.hidden ? clearInterval(timer) : startAuto();\n  });\n\n  \/* Scroll reveal *\/\n  if(!document.body.classList.contains('elementor-editor-active')){\n    var revEls = document.querySelectorAll('#resenas .cl-res-reveal');\n    if(revEls.length){\n      var obs = new IntersectionObserver(function(entries){\n        entries.forEach(function(entry){\n          if(entry.isIntersecting){\n            entry.target.classList.add('cl-res-visible');\n            obs.unobserve(entry.target);\n          }\n        });\n      }, { threshold: 0.10, rootMargin: '0px 0px -40px 0px' });\n      revEls.forEach(function(el){ obs.observe(el); });\n    }\n  }\n\n  startAuto();\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-38e0589 e-flex e-con-boxed e-con e-child\" data-id=\"38e0589\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_motion_fx_mouse&quot;:&quot;yes&quot;,&quot;animation_mobile&quot;:&quot;fadeIn&quot;,&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6ea5989 elementor-widget elementor-widget-html\" data-id=\"6ea5989\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================\nBLOQUE 08 - QU\u00c9 SUCEDE DESPU\u00c9S DE RESERVAR (v2 - fix wrapper + textos + reveal)\nProyecto: NV.contraluzfotografia.com\n========================= -->\n\n<style>\n  \/* === Secci\u00f3n unificada === *\/\n  #despues-de-reservar {\n    padding-top: 6rem;\n    padding-bottom: 6rem;\n    background-color: #FDFCFB;\n  }\n\n  @media (min-width: 768px) {\n    #despues-de-reservar { padding-top: 8rem; padding-bottom: 8rem; }\n  }\n\n  #cl-despues-inner {\n    max-width: 80rem;\n    margin: 0 auto;\n    padding-left:  max(1.5rem, env(safe-area-inset-left));\n    padding-right: max(1.5rem, env(safe-area-inset-right));\n  }\n\n  \/* Header *\/\n  #cl-despues-header {\n    text-align: center;\n    margin-bottom: 5rem;\n  }\n\n  #cl-despues-header .cl-eyebrow {\n    display: block;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.3em;\n    color: #D0B8B3;\n    margin-bottom: 0.75rem;\n  }\n\n  #cl-despues-header h2 {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(2rem, 5vw, 3rem);\n    font-weight: 400;\n    font-style: italic;\n    color: #3A2E2A;\n    margin: 0 0 1.25rem 0;\n  }\n\n  #cl-despues-header p {\n    font-family: 'Manrope', sans-serif;\n    font-size: 1.05rem;\n    font-weight: 300;\n    color: #8A817C;\n    max-width: 42rem;\n    margin: 0 auto;\n    line-height: 1.75;\n  }\n\n  \/* Grid 4 pasos *\/\n  .cl-despues-grid {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 1.5rem;\n    position: relative;\n    margin-bottom: 3.5rem;\n  }\n\n  @media (min-width: 768px) {\n    .cl-despues-grid { grid-template-columns: repeat(4, 1fr); }\n  }\n\n  \/* L\u00ednea conectora desktop *\/\n  .cl-despues-line { display: none; }\n\n  @media (min-width: 768px) {\n    .cl-despues-line {\n      display: block;\n      position: absolute;\n      top: 2.75rem;\n      left: 12%;\n      right: 12%;\n      height: 1px;\n      background: linear-gradient(to right, transparent, rgba(208,184,179,0.4), transparent);\n      z-index: 0;\n    }\n  }\n\n  \/* Tarjeta de paso *\/\n  .cl-despues-card {\n    background-color: #F4F1EE;\n    border: 1px solid #E8E4E1;\n    padding: 2rem;\n    text-align: center;\n    position: relative;\n    z-index: 10;\n    border-radius: 2px;\n  }\n\n  @media (max-width: 767px) {\n    .cl-despues-card {\n      display: flex;\n      flex-direction: row;\n      text-align: left;\n      gap: 1.25rem;\n      align-items: flex-start;\n      padding: 1.5rem;\n    }\n  }\n\n  .cl-despues-icon {\n    width: 4rem;\n    height: 4rem;\n    flex-shrink: 0;\n    border-radius: 9999px;\n    background-color: #ffffff;\n    border: 1px solid rgba(208,184,179,0.25);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    margin: 0 auto 1.25rem;\n    color: #D0B8B3;\n    box-shadow: 0 2px 12px rgba(58,46,42,0.06);\n  }\n\n  @media (max-width: 767px) {\n    .cl-despues-icon { margin: 0; }\n  }\n\n  \/* \u2191 TAMA\u00d1OS CORREGIDOS \u2191 *\/\n  .cl-despues-card-text h3 {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(1.1rem, 2.5vw, 1.3rem);  \/* era 1.1rem fijo *\/\n    font-weight: 500;\n    color: #3A2E2A;\n    margin: 0 0 0.6rem 0;\n    line-height: 1.3;\n  }\n\n  .cl-despues-card-text p {\n    font-family: 'Manrope', sans-serif;\n    font-size: 1rem;                           \/* era 0.85rem \u2192 16px *\/\n    font-weight: 300;\n    color: #8A817C;\n    line-height: 1.8;\n    margin: 0;\n  }\n\n  \/* Grid 3 beneficios *\/\n  .cl-despues-extras {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 1.25rem;\n  }\n\n  @media (min-width: 768px) {\n    .cl-despues-extras { grid-template-columns: repeat(3, 1fr); }\n  }\n\n  .cl-despues-extra {\n    padding: 1.75rem;\n    border: 1px solid #E8E4E1;\n    background-color: rgba(255,255,255,0.6);\n    border-radius: 2px;\n  }\n\n  .cl-despues-extra p.label {\n    font-family: 'Manrope', sans-serif;\n    font-size: 10px;\n    text-transform: uppercase;\n    letter-spacing: 0.4em;\n    font-weight: 700;\n    color: #D0B8B3;\n    margin: 0 0 0.6rem 0;\n  }\n\n  .cl-despues-extra p.body {\n    font-family: 'Manrope', sans-serif;\n    font-size: 1rem;                           \/* era 0.875rem \u2192 16px *\/\n    font-weight: 300;\n    color: #8A817C;\n    line-height: 1.8;\n    margin: 0;\n  }\n\n  \/* === Animaciones locales === *\/\n  .cl-des-reveal {\n    opacity: 0;\n    transform: translateY(24px);\n    transition: opacity 0.7s cubic-bezier(0.4,0,0.2,1),\n                transform 0.7s cubic-bezier(0.4,0,0.2,1);\n  }\n\n  .cl-des-reveal.cl-des-visible {\n    opacity: 1;\n    transform: translateY(0);\n  }\n\n  .elementor-editor-active .cl-des-reveal {\n    opacity: 1 !important;\n    transform: none !important;\n    transition: none !important;\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .cl-des-reveal {\n      opacity: 1 !important;\n      transform: none !important;\n      transition: none !important;\n    }\n  }\n<\/style>\n\n<section\n  id=\"despues-de-reservar\"\n  aria-label=\"Qu\u00e9 sucede despu\u00e9s de reservar \u2014 Contraluz Fotograf\u00eda\"\n>\n  <div id=\"cl-despues-inner\">\n\n    <!-- Header -->\n    <div id=\"cl-despues-header\" class=\"cl-des-reveal\">\n      <span class=\"cl-eyebrow\">Tranquilidad<\/span>\n      <h2>\u00bfQu\u00e9 sucede despu\u00e9s de reservar?<\/h2>\n      <p>Despu\u00e9s de apartar su fecha, les acompa\u00f1amos con claridad, organizaci\u00f3n y atenci\u00f3n cercana para que todo fluya con calma antes, durante y despu\u00e9s de su boda.<\/p>\n    <\/div>\n\n    <!-- 4 pasos -->\n    <div class=\"cl-despues-grid\">\n      <div class=\"cl-despues-line\" aria-hidden=\"true\"><\/div>\n\n      <div class=\"cl-despues-card cl-des-reveal\" style=\"transition-delay:0.10s;\">\n        <div class=\"cl-despues-icon\" aria-hidden=\"true\">\n          <span class=\"material-symbols-outlined\" style=\"font-size:1.75rem; font-variation-settings:'FILL' 0,'wght' 300;\">contract<\/span>\n        <\/div>\n        <div class=\"cl-despues-card-text\">\n          <h3>1. Confirmaci\u00f3n<\/h3>\n          <p>Les enviamos el contrato digital y la informaci\u00f3n necesaria para confirmar su reserva. Su fecha queda apartada y respaldada desde ese momento.<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"cl-despues-card cl-des-reveal\" style=\"transition-delay:0.20s;\">\n        <div class=\"cl-despues-icon\" aria-hidden=\"true\">\n          <span class=\"material-symbols-outlined\" style=\"font-size:1.75rem; font-variation-settings:'FILL' 0,'wght' 300;\">diversity_3<\/span>\n        <\/div>\n        <div class=\"cl-despues-card-text\">\n          <h3>2. Nos conocemos<\/h3>\n          <p>Agendamos una llamada para conocer su estilo, resolver dudas y entender qu\u00e9 momentos son m\u00e1s importantes para ustedes.<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"cl-despues-card cl-des-reveal\" style=\"transition-delay:0.30s;\">\n        <div class=\"cl-despues-icon\" aria-hidden=\"true\">\n          <span class=\"material-symbols-outlined\" style=\"font-size:1.75rem; font-variation-settings:'FILL' 0,'wght' 300;\">schedule<\/span>\n        <\/div>\n        <div class=\"cl-despues-card-text\">\n          <h3>3. Timeline del d\u00eda<\/h3>\n          <p>Les ayudamos a organizar el timeline del d\u00eda para que todo fluya con orden, sin prisas innecesarias y con espacio para disfrutar cada momento.<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"cl-despues-card cl-des-reveal\" style=\"transition-delay:0.40s;\">\n        <div class=\"cl-despues-icon\" aria-hidden=\"true\">\n          <span class=\"material-symbols-outlined\" style=\"font-size:1.75rem; font-variation-settings:'FILL' 0,'wght' 300;\">cloud_done<\/span>\n        <\/div>\n        <div class=\"cl-despues-card-text\">\n          <h3>4. Entrega<\/h3>\n          <p>Reciben su galer\u00eda y el material final de su cobertura en los tiempos acordados, con un proceso claro desde la edici\u00f3n hasta la entrega.<\/p>\n        <\/div>\n      <\/div>\n\n    <\/div>\n\n    <!-- 3 beneficios adicionales -->\n    <div class=\"cl-despues-extras\">\n\n      <div class=\"cl-despues-extra cl-des-reveal\" style=\"transition-delay:0.10s;\">\n        <p class=\"label\">Direcci\u00f3n natural<\/p>\n        <p class=\"body\">Les guiamos durante la sesi\u00f3n para que se sientan c\u00f3modos, disfruten la experiencia y se vean como ustedes mismos.<\/p>\n      <\/div>\n\n      <div class=\"cl-despues-extra cl-des-reveal\" style=\"transition-delay:0.22s;\">\n        <p class=\"label\">Respaldo de archivos<\/p>\n        <p class=\"body\">Su material se respalda en m\u00faltiples copias durante todo el proceso, para darles mayor seguridad desde la captura hasta la entrega final.<\/p>\n      <\/div>\n\n      <div class=\"cl-despues-extra cl-des-reveal\" style=\"transition-delay:0.34s;\">\n        <p class=\"label\">Comunicaci\u00f3n clara<\/p>\n        <p class=\"body\">Sabr\u00e1n en qu\u00e9 etapa estamos en cada momento, con atenci\u00f3n cercana y respuestas oportunas por WhatsApp.<\/p>\n      <\/div>\n\n    <\/div>\n\n  <\/div>\n<\/section>\n\n<script>\n(function(){\n  if(document.body && document.body.classList.contains('elementor-editor-active')) return;\n\n  function initDespuesReveal(){\n    var els = document.querySelectorAll('#despues-de-reservar .cl-des-reveal');\n    if(!els.length) return;\n\n    var obs = new IntersectionObserver(function(entries){\n      entries.forEach(function(entry){\n        if(entry.isIntersecting){\n          entry.target.classList.add('cl-des-visible');\n          obs.unobserve(entry.target);\n        }\n      });\n    }, { threshold: 0.10, rootMargin: '0px 0px -40px 0px' });\n\n    els.forEach(function(el){ obs.observe(el); });\n  }\n\n  if(document.readyState === 'loading'){\n    document.addEventListener('DOMContentLoaded', initDespuesReveal);\n  } else {\n    initDespuesReveal();\n  }\n  window.addEventListener('load', initDespuesReveal);\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a80f493 e-flex e-con-boxed e-con e-child\" data-id=\"a80f493\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_motion_fx_mouse&quot;:&quot;yes&quot;,&quot;animation_mobile&quot;:&quot;fadeIn&quot;,&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d020694 elementor-widget elementor-widget-html\" data-id=\"d020694\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================\nBLOQUE 09 - FAQ (v2 - fix wrapper + textos + reveal + guards)\nProyecto: NV.contraluzfotografia.com\n========================= -->\n\n<style>\n  \/* === Secci\u00f3n unificada === *\/\n  #faq {\n    padding-top: 6rem;\n    padding-bottom: 6rem;\n    background-color: #F4F1EE;\n    border-top: 1px solid rgba(232,228,225,0.5);\n  }\n\n  @media (min-width: 768px) {\n    #faq { padding-top: 8rem; padding-bottom: 8rem; }\n  }\n\n  #cl-faq-inner {\n    max-width: 52rem;\n    margin: 0 auto;\n    padding-left:  max(1.5rem, env(safe-area-inset-left));\n    padding-right: max(1.5rem, env(safe-area-inset-right));\n  }\n\n  \/* Header *\/\n  #cl-faq-header {\n    text-align: center;\n    margin-bottom: 4rem;\n  }\n\n  #cl-faq-header .cl-eyebrow {\n    display: block;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.3em;\n    color: #D0B8B3;\n    margin-bottom: 0.75rem;\n  }\n\n  #cl-faq-header h2 {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(2rem, 5vw, 3rem);\n    font-weight: 400;\n    font-style: italic;\n    color: #3A2E2A;\n    margin: 0;\n  }\n\n  \/* Lista *\/\n  .cl-faq-list {\n    display: flex;\n    flex-direction: column;\n    gap: 0;\n    border: 1px solid #E8E4E1;\n    border-radius: 2px;\n    overflow: hidden;\n  }\n\n  \/* \u00cdtem *\/\n  .cl-faq-item {\n    background-color: #ffffff;\n    border-bottom: 1px solid #E8E4E1;\n  }\n\n  .cl-faq-item:last-child { border-bottom: none; }\n\n  \/* Bot\u00f3n pregunta *\/\n  .cl-faq-btn {\n    width: 100%;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 1rem;\n    padding: 1.5rem 1.75rem;\n    background: none;\n    border: none;\n    cursor: pointer;\n    text-align: left;\n    -webkit-tap-highlight-color: transparent;\n    transition: background-color 0.2s;\n  }\n\n  .cl-faq-btn:hover     { background-color: #FDFCFB; }\n  .cl-faq-btn.is-open   { background-color: #FDFCFB; }\n\n  .cl-faq-question {\n    font-family: 'Playfair Display', serif;\n    font-size: 1rem;\n    font-weight: 400;\n    color: #3A2E2A;\n    line-height: 1.5;\n    flex: 1;\n  }\n\n  \/* \u00cdcono +\/\u00d7 *\/\n  .cl-faq-icon {\n    flex-shrink: 0;\n    width: 28px;\n    height: 28px;\n    border-radius: 9999px;\n    background-color: #F4F1EE;\n    border: 1px solid #E8E4E1;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: #D0B8B3;\n    font-size: 18px;\n    font-weight: 300;\n    font-family: sans-serif;\n    transition: background-color 0.2s, transform 0.3s;\n    line-height: 1;\n    padding: 0;\n    user-select: none;\n  }\n\n  .cl-faq-btn.is-open .cl-faq-icon {\n    background-color: #D0B8B3;\n    color: #ffffff;\n    transform: rotate(45deg);\n  }\n\n  \/* Respuesta (acorde\u00f3n) *\/\n  .cl-faq-answer {\n    max-height: 0;\n    overflow: hidden;\n    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1),\n                padding 0.3s ease;\n    padding: 0 1.75rem;\n  }\n\n  .cl-faq-answer.is-open {\n    max-height: 480px;   \/* +60px margen sobre el original *\/\n    padding: 0 1.75rem 1.5rem;\n  }\n\n  \/* \u2191 TAMA\u00d1O CORREGIDO \u2191 *\/\n  .cl-faq-answer p {\n    font-family: 'Manrope', sans-serif;\n    font-size: 1rem;          \/* era 0.9rem \u2192 16px *\/\n    font-weight: 300;\n    color: #8A817C;\n    line-height: 1.85;\n    margin: 0;\n    border-top: 1px solid #F4F1EE;\n    padding-top: 1.25rem;\n  }\n\n  .cl-faq-answer a {\n    color: #D0B8B3;\n    font-weight: 600;\n    text-decoration: none;\n  }\n\n  .cl-faq-answer a:hover { text-decoration: underline; }\n\n  \/* CTA inferior *\/\n  #cl-faq-cta {\n    text-align: center;\n    margin-top: 3rem;\n  }\n\n  \/* \u2191 TAMA\u00d1O CORREGIDO \u2191 *\/\n  #cl-faq-cta p {\n    font-family: 'Manrope', sans-serif;\n    font-size: 1rem;          \/* era 0.875rem \u2192 16px *\/\n    font-weight: 300;\n    color: #8A817C;\n    margin: 0;\n  }\n\n  #cl-faq-cta a {\n    color: #D0B8B3;\n    font-weight: 700;\n    text-decoration: none;\n  }\n\n  #cl-faq-cta a:hover { text-decoration: underline; }\n\n  \/* === Animaciones locales === *\/\n  .cl-faq-reveal {\n    opacity: 0;\n    transform: translateY(24px);\n    transition: opacity 0.7s cubic-bezier(0.4,0,0.2,1),\n                transform 0.7s cubic-bezier(0.4,0,0.2,1);\n  }\n\n  .cl-faq-reveal.cl-faq-visible {\n    opacity: 1;\n    transform: translateY(0);\n  }\n\n  .elementor-editor-active .cl-faq-reveal {\n    opacity: 1 !important;\n    transform: none !important;\n    transition: none !important;\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .cl-faq-reveal {\n      opacity: 1 !important;\n      transform: none !important;\n      transition: none !important;\n    }\n  }\n<\/style>\n\n<section\n  id=\"faq\"\n  aria-label=\"Preguntas frecuentes \u2014 Contraluz Fotograf\u00eda Saltillo\"\n>\n  <div id=\"cl-faq-inner\">\n\n    <!-- Header -->\n    <div id=\"cl-faq-header\" class=\"cl-faq-reveal\">\n      <span class=\"cl-eyebrow\">Dudas frecuentes<\/span>\n      <h2>Lo que suelen preguntarnos antes de reservar<\/h2>\n    <\/div>\n\n    <!-- Acorde\u00f3n -->\n    <div\n      class=\"cl-faq-list cl-faq-reveal\"\n      id=\"clFaqList\"\n      style=\"transition-delay:0.15s;\"\n      role=\"list\"\n    >\n\n      <!-- 1 -->\n      <div class=\"cl-faq-item\" role=\"listitem\">\n        <button class=\"cl-faq-btn\"\n          data-faq=\"0\"\n          aria-expanded=\"false\"\n          aria-controls=\"clFaq0\">\n          <span class=\"cl-faq-question\">\u00bfCu\u00e1ndo reciben sus fotos y video?<\/span>\n          <span class=\"cl-faq-icon\" aria-hidden=\"true\">+<\/span>\n        <\/button>\n        <div class=\"cl-faq-answer\" id=\"clFaq0\" role=\"region\">\n          <p>Los tiempos de entrega se acuerdan desde el inicio y quedan especificados en su contrato. En general, las fotograf\u00edas se entregan en galer\u00eda online privada entre 4 y 6 semanas despu\u00e9s del evento. El video puede tomar un poco m\u00e1s seg\u00fan el nivel de edici\u00f3n. Durante el proceso, les mantenemos informados por WhatsApp.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- 2 -->\n      <div class=\"cl-faq-item\" role=\"listitem\">\n        <button class=\"cl-faq-btn\"\n          data-faq=\"1\"\n          aria-expanded=\"false\"\n          aria-controls=\"clFaq1\">\n          <span class=\"cl-faq-question\">\u00bfC\u00f3mo apartan su fecha?<\/span>\n          <span class=\"cl-faq-icon\" aria-hidden=\"true\">+<\/span>\n        <\/button>\n        <div class=\"cl-faq-answer\" id=\"clFaq1\" role=\"region\">\n          <p>Primero confirmamos disponibilidad. Despu\u00e9s formalizamos la reserva con contrato digital y un anticipo desde $1,000 MXN. A partir de ese momento, su fecha queda apartada exclusivamente para ustedes.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- 3 -->\n      <div class=\"cl-faq-item\" role=\"listitem\">\n        <button class=\"cl-faq-btn\"\n          data-faq=\"2\"\n          aria-expanded=\"false\"\n          aria-controls=\"clFaq2\">\n          <span class=\"cl-faq-question\">\u00bfTrabajan fuera de Saltillo?<\/span>\n          <span class=\"cl-faq-icon\" aria-hidden=\"true\">+<\/span>\n        <\/button>\n        <div class=\"cl-faq-answer\" id=\"clFaq2\" role=\"region\">\n          <p>S\u00ed. Documentamos bodas en Saltillo, en otras ciudades de Coahuila y en distintas locaciones del norte de M\u00e9xico. Cuando la boda es fuera de Saltillo, se considera un costo adicional de traslado seg\u00fan la distancia y la log\u00edstica del evento.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- 4 -->\n      <div class=\"cl-faq-item\" role=\"listitem\">\n        <button class=\"cl-faq-btn\"\n          data-faq=\"3\"\n          aria-expanded=\"false\"\n          aria-controls=\"clFaq3\">\n          <span class=\"cl-faq-question\">\u00bfQu\u00e9 pasa si el clima o los horarios cambian el d\u00eda de la boda?<\/span>\n          <span class=\"cl-faq-icon\" aria-hidden=\"true\">+<\/span>\n        <\/button>\n        <div class=\"cl-faq-answer\" id=\"clFaq3\" role=\"region\">\n          <p>Parte de nuestro trabajo es adaptarnos a lo que realmente ocurre el d\u00eda de la boda. Si el clima cambia o los horarios se mueven, reaccionamos con experiencia y flexibilidad para seguir documentando su historia.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- 5 -->\n      <div class=\"cl-faq-item\" role=\"listitem\">\n        <button class=\"cl-faq-btn\"\n          data-faq=\"4\"\n          aria-expanded=\"false\"\n          aria-controls=\"clFaq4\">\n          <span class=\"cl-faq-question\">\u00bfPueden agregar horas o servicios extra?<\/span>\n          <span class=\"cl-faq-icon\" aria-hidden=\"true\">+<\/span>\n        <\/button>\n        <div class=\"cl-faq-answer\" id=\"clFaq4\" role=\"region\">\n          <p>S\u00ed. Si durante la planeaci\u00f3n necesitan ampliar la cobertura o sumar servicios adicionales, podemos ajustarlo antes del evento seg\u00fan disponibilidad. Lo importante es que su cobertura responda a lo que realmente necesita su boda.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- 6 -->\n      <div class=\"cl-faq-item\" role=\"listitem\">\n        <button class=\"cl-faq-btn\"\n          data-faq=\"5\"\n          aria-expanded=\"false\"\n          aria-controls=\"clFaq5\">\n          <span class=\"cl-faq-question\">\u00bfEn qu\u00e9 formato reciben sus fotograf\u00edas y cu\u00e1nto tiempo estar\u00e1n disponibles?<\/span>\n          <span class=\"cl-faq-icon\" aria-hidden=\"true\">+<\/span>\n        <\/button>\n        <div class=\"cl-faq-answer\" id=\"clFaq5\" role=\"region\">\n          <p>Sus fotograf\u00edas se entregan en alta resoluci\u00f3n a trav\u00e9s de una galer\u00eda online privada, desde donde pueden descargarlas y compartirlas. Dependiendo de la cobertura contratada, tambi\u00e9n puede incluirse entrega en memoria USB. Siempre recomendamos guardar una copia local para mayor respaldo.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- 7 -->\n      <div class=\"cl-faq-item\" role=\"listitem\">\n        <button class=\"cl-faq-btn\"\n          data-faq=\"6\"\n          aria-expanded=\"false\"\n          aria-controls=\"clFaq6\">\n          <span class=\"cl-faq-question\">\u00bfY si no saben posar o nunca han estado frente a c\u00e1mara?<\/span>\n          <span class=\"cl-faq-icon\" aria-hidden=\"true\">+<\/span>\n        <\/button>\n        <div class=\"cl-faq-answer\" id=\"clFaq6\" role=\"region\">\n          <p>No necesitan experiencia previa. Les guiamos durante la sesi\u00f3n y a lo largo del d\u00eda para que se sientan c\u00f3modos, disfruten la experiencia y se vean como ustedes mismos, sin poses forzadas ni presi\u00f3n innecesaria.<\/p>\n        <\/div>\n      <\/div>\n\n    <\/div>\n\n    <!-- CTA -->\n    <div id=\"cl-faq-cta\" class=\"cl-faq-reveal\" style=\"transition-delay:0.25s;\">\n      <p>\u00bfTienen una pregunta que no est\u00e1 aqu\u00ed?\n        <a href=\"https:\/\/wa.me\/8441337326?text=Hola%20Contraluz%2C%20tenemos%20una%20duda%20sobre%20sus%20servicios.\"\n           target=\"_blank\" rel=\"noopener noreferrer\">\n          Escr\u00edbannos directamente.\n        <\/a>\n      <\/p>\n    <\/div>\n\n  <\/div>\n<\/section>\n\n<script>\n(function(){\n  var list = document.getElementById('clFaqList');\n  if(!list) return;\n\n  var btns = list.querySelectorAll('.cl-faq-btn');\n  if(!btns.length) return;\n\n  btns.forEach(function(btn){\n    btn.addEventListener('click', function(){\n      var index  = btn.getAttribute('data-faq');\n      var answer = document.getElementById('clFaq' + index);\n      if(!answer) return;\n\n      var isOpen = btn.classList.contains('is-open');\n\n      \/* Cierra todos *\/\n      btns.forEach(function(b){\n        b.classList.remove('is-open');\n        b.setAttribute('aria-expanded', 'false');\n      });\n      list.querySelectorAll('.cl-faq-answer').forEach(function(a){\n        a.classList.remove('is-open');\n      });\n\n      \/* Abre el seleccionado si estaba cerrado *\/\n      if(!isOpen){\n        btn.classList.add('is-open');\n        btn.setAttribute('aria-expanded', 'true');\n        answer.classList.add('is-open');\n      }\n    });\n  });\n\n  \/* Scroll reveal *\/\n  if(!document.body.classList.contains('elementor-editor-active')){\n    var revEls = document.querySelectorAll('#faq .cl-faq-reveal');\n    if(revEls.length){\n      var obs = new IntersectionObserver(function(entries){\n        entries.forEach(function(entry){\n          if(entry.isIntersecting){\n            entry.target.classList.add('cl-faq-visible');\n            obs.unobserve(entry.target);\n          }\n        });\n      }, { threshold: 0.10, rootMargin: '0px 0px -40px 0px' });\n      revEls.forEach(function(el){ obs.observe(el); });\n    }\n  }\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5fa8e46 e-flex e-con-boxed e-con e-child\" data-id=\"5fa8e46\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_motion_fx_mouse&quot;:&quot;yes&quot;,&quot;animation_mobile&quot;:&quot;fadeIn&quot;,&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6795dea elementor-widget elementor-widget-html\" data-id=\"6795dea\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================\nBLOQUE 10 - CTA FINAL (v2 - fix wrapper + floor 12px + reveal)\nProyecto: NV.contraluzfotografia.com\n========================= -->\n\n<style>\n  \/* === Secci\u00f3n unificada === *\/\n  #cta-final {\n    position: relative;\n    padding-top: 8rem;\n    padding-bottom: 8rem;\n    overflow: hidden;\n  }\n\n  @media (min-width: 768px) {\n    #cta-final { padding-top: 10rem; padding-bottom: 10rem; }\n  }\n\n  #cl-cta-bg {\n    position: absolute;\n    inset: 0;\n    z-index: 0;\n  }\n\n  #cl-cta-bg img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    object-position: center center;\n    display: block;\n  }\n\n  #cl-cta-overlay {\n    position: absolute;\n    inset: 0;\n    background-color: rgba(253,252,251,0.88);\n    z-index: 1;\n  }\n\n  #cl-cta-content {\n    position: relative;\n    z-index: 10;\n    max-width: 56rem;\n    margin: 0 auto;\n    text-align: center;\n    padding-left:  max(1.5rem, env(safe-area-inset-left));\n    padding-right: max(1.5rem, env(safe-area-inset-right));\n  }\n\n  #cl-cta-content .cl-eyebrow {\n    display: block;\n    font-family: 'Manrope', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.5em;\n    color: #D0B8B3;\n    margin-bottom: 1.5rem;\n  }\n\n  #cl-cta-content h2 {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(2.25rem, 6vw, 3.75rem);\n    font-weight: 400;\n    font-style: italic;\n    color: #3A2E2A;\n    line-height: 1.2;\n    margin: 0 0 2.5rem 0;\n  }\n\n  .cl-cta-btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 0.75rem;\n    min-height: 56px;\n    padding: 1.25rem 3rem;\n    background-color: #D0B8B3;\n    color: #ffffff !important;\n    font-family: 'Manrope', sans-serif;\n    font-size: 12px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.2em;\n    text-decoration: none !important;\n    border-radius: 2px;\n    box-shadow: 0 20px 50px rgba(208,184,179,0.45);\n    transition: background-color 0.25s, transform 0.2s, box-shadow 0.25s;\n  }\n\n  .cl-cta-btn:hover {\n    background-color: #BA9F9A;\n    transform: scale(1.03);\n    box-shadow: 0 24px 60px rgba(208,184,179,0.55);\n  }\n\n  .cl-cta-btn:active { transform: scale(0.98); }\n\n  @media (max-width: 640px) {\n    .cl-cta-btn { width: 100%; }\n  }\n\n  #cl-cta-content .cl-subnote {\n    display: block;\n    margin-top: 2rem;\n    font-family: 'Manrope', sans-serif;\n    font-size: 12px;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.3em;\n    color: #8A817C;\n  }\n\n  \/* === Animaciones locales === *\/\n  .cl-cta-reveal {\n    opacity: 0;\n    transform: translateY(28px);\n    transition: opacity 0.85s cubic-bezier(0.4,0,0.2,1),\n                transform 0.85s cubic-bezier(0.4,0,0.2,1);\n  }\n\n  .cl-cta-reveal.cl-cta-visible {\n    opacity: 1;\n    transform: translateY(0);\n  }\n\n  .elementor-editor-active .cl-cta-reveal {\n    opacity: 1 !important;\n    transform: none !important;\n    transition: none !important;\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .cl-cta-reveal {\n      opacity: 1 !important;\n      transform: none !important;\n      transition: none !important;\n    }\n  }\n<\/style>\n\n<section\n  id=\"cta-final\"\n  aria-label=\"Consultar disponibilidad de fecha \u2014 Contraluz Fotograf\u00eda Saltillo\"\n>\n  <div id=\"cl-cta-bg\" aria-hidden=\"true\">\n    <img\n      src=\"http:\/\/nv.contraluzfotografia.com\/wp-content\/uploads\/2026\/03\/ContraluzBoda-Celia-y-Julio-22_Original-scaled.webp\"\n      alt=\"\"\n      loading=\"lazy\"\n      decoding=\"async\"\n    \/>\n  <\/div>\n  <div id=\"cl-cta-overlay\" aria-hidden=\"true\"><\/div>\n\n  <div id=\"cl-cta-content\" class=\"cl-cta-reveal\">\n    <span class=\"cl-eyebrow\">Fechas 2026 y 2027 abiertas<\/span>\n\n    <h2>\u00bfSu fecha sigue disponible?<\/h2>\n\n    <a href=\"https:\/\/wa.me\/8441337326?text=Hola%20Contraluz%2C%20quiero%20consultar%20disponibilidad%20para%20mi%20boda.%20%C2%BFTienen%20fecha%20disponible%3F\"\n       target=\"_blank\"\n       rel=\"noopener noreferrer\"\n       class=\"cl-cta-btn\"\n       aria-label=\"Consultar disponibilidad por WhatsApp \u2014 Contraluz Fotograf\u00eda\">\n      <span class=\"material-symbols-outlined\"\n            style=\"font-size:18px; font-variation-settings:'FILL' 0,'wght' 300;\"\n            aria-hidden=\"true\">chat<\/span>\n      Consultar disponibilidad\n    <\/a>\n\n    <span class=\"cl-subnote\">Respuesta en menos de 24 horas \u00b7 Atenci\u00f3n personalizada desde el primer mensaje<\/span>\n  <\/div>\n<\/section>\n\n<script>\n(function(){\n  if(document.body && document.body.classList.contains('elementor-editor-active')) return;\n\n  function initCtaReveal(){\n    var els = document.querySelectorAll('#cta-final .cl-cta-reveal');\n    if(!els.length) return;\n\n    var obs = new IntersectionObserver(function(entries){\n      entries.forEach(function(entry){\n        if(entry.isIntersecting){\n          entry.target.classList.add('cl-cta-visible');\n          obs.unobserve(entry.target);\n        }\n      });\n    }, { threshold: 0.15, rootMargin: '0px 0px -40px 0px' });\n\n    els.forEach(function(el){ obs.observe(el); });\n  }\n\n  if(document.readyState === 'loading'){\n    document.addEventListener('DOMContentLoaded', initCtaReveal);\n  } else {\n    initCtaReveal();\n  }\n  window.addEventListener('load', initCtaReveal);\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Fotograf\u00eda editorial de bodas con sensibilidad y verdad Fotograf\u00eda y video de bodas para guardar lo irrepetible Cobertura en Saltillo y Coahuila para parejas que desean una historia visual honesta, elegante y atemporal; im\u00e1genes que conserven su fuerza hoy y con los a\u00f1os. chat Cotizar por WhatsApp Ver bodas completas Respuesta en menos de 24 &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/nv.contraluzfotografia.com\/\"> <span class=\"screen-reader-text\">Home<\/span> Read More &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":972,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"enabled","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"_joinchat":[],"footnotes":""},"class_list":["post-552","page","type-page","status-publish","has-post-thumbnail","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/nv.contraluzfotografia.com\/index.php?rest_route=\/wp\/v2\/pages\/552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nv.contraluzfotografia.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nv.contraluzfotografia.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nv.contraluzfotografia.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nv.contraluzfotografia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=552"}],"version-history":[{"count":128,"href":"https:\/\/nv.contraluzfotografia.com\/index.php?rest_route=\/wp\/v2\/pages\/552\/revisions"}],"predecessor-version":[{"id":1057,"href":"https:\/\/nv.contraluzfotografia.com\/index.php?rest_route=\/wp\/v2\/pages\/552\/revisions\/1057"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nv.contraluzfotografia.com\/index.php?rest_route=\/wp\/v2\/media\/972"}],"wp:attachment":[{"href":"https:\/\/nv.contraluzfotografia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}