{"id":9397,"date":"2024-02-29T20:32:06","date_gmt":"2024-03-01T01:32:06","guid":{"rendered":"https:\/\/wordpress-506718-3849576.cloudwaysapps.com\/gallery\/list-of-puerto-vallarta-webcams\/"},"modified":"2026-08-21T12:57:47","modified_gmt":"2026-08-21T17:57:47","slug":"lista-webcams-puerto-vallarta","status":"publish","type":"gallery","link":"https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/","title":{"rendered":"Webcams\/C\u00e1maras Web en Vivo de Puerto Vallarta y Bah\u00eda de Banderas"},"content":{"rendered":"\n<!-- ==========================================================================\n     PUERTO VALLARTA LIVE WEBCAMS \u00e2\u20ac\u201d 100% NATIVE WORDPRESS HTML BLOCK (SPANISH)\n     Copia y pega este bloque COMPLETO en un bloque \"HTML personalizado\" en WordPress.\n     P\u00c3\u00a1gina: puertovallarta.net\/es\/galeria\/camaras-web-puerto-vallarta\/\n     ========================================================================== -->\n\n<!-- LEAFLET MAP CSS -->\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css\" integrity=\"sha256-p4NxAoJBhIIN+hmNHrzRCf9tD\/miZyoHS5obTRR9BMY=\" crossorigin=\"\" \/>\n\n<!-- GOOGLE FONTS: PLUS JAKARTA SANS -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\" \/>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" \/>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&#038;display=swap\" rel=\"stylesheet\" \/>\n\n<style>\n  \/* ==========================================================================\n     STRICTLY SCOPED CSS NAMESPACE (#pv-webcams-app-es)\n     ========================================================================== *\/\n  #pv-webcams-app-es {\n    --pv-primary: #1e73be;\n    --pv-primary-hover: #155d9b;\n    --pv-primary-light: #e8f2fa;\n    --pv-navy: #0d2847;\n    --pv-text-main: #1e293b;\n    --pv-text-muted: #64748b;\n    --pv-bg-page: #f8fafc;\n    --pv-bg-card: #ffffff;\n    --pv-border: #e2e8f0;\n    --pv-live-red: #ff3b30;\n    --pv-radius-lg: 16px;\n    --pv-radius-md: 12px;\n    --pv-radius-sm: 8px;\n    --pv-radius-pill: 9999px;\n    --pv-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.06);\n    --pv-shadow-md: 0 4px 12px -2px rgba(15, 23, 42, 0.08);\n    --pv-shadow-lg: 0 12px 24px -4px rgba(15, 23, 42, 0.12);\n    --pv-transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n\n    font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;\n    color: var(--pv-text-main) !important;\n    max-width: 1240px;\n    margin: 20px auto 40px auto;\n    padding: 0 10px;\n    box-sizing: border-box;\n    line-height: 1.5;\n  }\n\n  #pv-webcams-app-es * {\n    box-sizing: border-box !important;\n  }\n\n  #pv-webcams-app-es .pv-header {\n    background: var(--pv-bg-card);\n    border: 1px solid var(--pv-border);\n    border-radius: var(--pv-radius-lg);\n    padding: 22px 26px;\n    margin-bottom: 20px;\n    box-shadow: var(--pv-shadow-sm);\n    display: flex;\n    flex-direction: column;\n    gap: 14px;\n  }\n\n  #pv-webcams-app-es .pv-header-top {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    flex-wrap: wrap;\n    gap: 12px;\n  }\n\n  #pv-webcams-app-es .pv-live-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 9px;\n    background: #0f172a;\n    color: #ffffff !important;\n    font-size: 12px;\n    font-weight: 700;\n    letter-spacing: 0.04em;\n    text-transform: uppercase;\n    padding: 6px 14px;\n    border-radius: var(--pv-radius-pill);\n    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);\n  }\n\n  #pv-webcams-app-es .pv-pulse-dot {\n    width: 9px;\n    height: 9px;\n    background-color: var(--pv-live-red);\n    border-radius: 50%;\n    position: relative;\n    display: inline-block;\n  }\n\n  #pv-webcams-app-es .pv-pulse-dot::after {\n    content: '';\n    position: absolute;\n    top: -3px; left: -3px; right: -3px; bottom: -3px;\n    border: 2px solid var(--pv-live-red);\n    border-radius: 50%;\n    animation: pvRadarPulseEs 1.6s infinite cubic-bezier(0, 0.2, 0.8, 1);\n  }\n\n  @keyframes pvRadarPulseEs {\n    0% { transform: scale(0.6); opacity: 1; }\n    100% { transform: scale(2.4); opacity: 0; }\n  }\n\n  #pv-webcams-app-es .pv-toggle-btn {\n    background: #f1f5f9;\n    border: 1px solid var(--pv-border);\n    border-radius: var(--pv-radius-pill);\n    padding: 7px 16px;\n    font-size: 13px;\n    font-weight: 700;\n    color: var(--pv-text-main) !important;\n    cursor: pointer;\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n    transition: var(--pv-transition);\n  }\n\n  #pv-webcams-app-es .pv-toggle-btn:hover,\n  #pv-webcams-app-es .pv-toggle-btn.active {\n    background: var(--pv-primary);\n    color: #ffffff !important;\n    border-color: var(--pv-primary);\n    box-shadow: 0 2px 8px rgba(30, 115, 190, 0.3);\n  }\n\n  #pv-webcams-app-es .pv-header-main h2 {\n    font-size: 26px !important;\n    font-weight: 800 !important;\n    color: var(--pv-navy) !important;\n    letter-spacing: -0.02em !important;\n    margin: 0 0 6px 0 !important;\n    line-height: 1.2 !important;\n  }\n\n  #pv-webcams-app-es .pv-header-main p {\n    font-size: 14px !important;\n    color: var(--pv-text-muted) !important;\n    margin: 0 !important;\n    max-width: 850px;\n  }\n\n  #pv-webcams-app-es .pv-map-wrapper {\n    background: var(--pv-bg-card);\n    border: 1px solid var(--pv-border);\n    border-radius: var(--pv-radius-lg);\n    overflow: hidden;\n    margin-bottom: 24px;\n    box-shadow: var(--pv-shadow-sm);\n    display: block;\n    animation: pvFadeInEs 0.3s ease;\n  }\n\n  #pv-webcams-app-es .pv-map-wrapper.collapsed {\n    display: none;\n  }\n\n  @keyframes pvFadeInEs {\n    from { opacity: 0; transform: translateY(-8px); }\n    to { opacity: 1; transform: translateY(0); }\n  }\n\n  #pv-webcams-app-es .pv-map-header {\n    padding: 12px 18px;\n    background: #f8fafc;\n    border-bottom: 1px solid var(--pv-border);\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    font-size: 13px;\n    font-weight: 700;\n    color: var(--pv-text-main);\n  }\n\n  #pv-webcams-app-es #pvBanderasBayMapEs {\n    width: 100%;\n    height: 440px;\n    z-index: 1;\n  }\n\n  .pv-map-pin {\n    background: var(--pv-primary, #1e73be);\n    border: 2px solid #ffffff;\n    border-radius: 50%;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.4);\n    position: relative;\n    width: 14px;\n    height: 14px;\n  }\n\n  .pv-map-pin::after {\n    content: '';\n    position: absolute;\n    top: -4px; left: -4px; right: -4px; bottom: -4px;\n    border: 2px solid var(--pv-primary, #1e73be);\n    border-radius: 50%;\n    animation: pvRadarPulseEs 1.8s infinite cubic-bezier(0, 0.2, 0.8, 1);\n  }\n\n  .leaflet-popup-content-wrapper {\n    border-radius: 12px !important;\n    padding: 0 !important;\n    overflow: hidden;\n    box-shadow: 0 12px 24px -4px rgba(15, 23, 42, 0.2) !important;\n  }\n  .leaflet-popup-content {\n    margin: 0 !important;\n    line-height: 1.4 !important;\n  }\n  .pv-map-popup {\n    width: 230px;\n    font-family: 'Plus Jakarta Sans', sans-serif;\n  }\n  .pv-map-popup-thumb {\n    width: 100%;\n    height: 125px;\n    object-fit: cover;\n    display: block;\n    background: #000;\n  }\n  .pv-map-popup-info {\n    padding: 10px 12px;\n  }\n  .pv-map-popup-title {\n    font-size: 13px;\n    font-weight: 700;\n    color: #0d2847;\n    margin-bottom: 4px;\n  }\n  .pv-map-popup-zone {\n    font-size: 11px;\n    font-weight: 700;\n    color: #1e73be;\n    text-transform: uppercase;\n    margin-bottom: 6px;\n    display: block;\n  }\n  .pv-map-popup-btn {\n    display: block;\n    width: 100%;\n    text-align: center;\n    background: #1e73be;\n    color: #fff !important;\n    padding: 6px 0;\n    border-radius: 6px;\n    font-size: 12px;\n    font-weight: 700;\n    text-decoration: none !important;\n  }\n\n  #pv-webcams-app-es .pv-controls {\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n    margin-bottom: 24px;\n  }\n\n  #pv-webcams-app-es .pv-search-input {\n    width: 100% !important;\n    padding: 12px 16px 12px 42px !important;\n    border: 1px solid var(--pv-border) !important;\n    border-radius: var(--pv-radius-md) !important;\n    font-family: inherit !important;\n    font-size: 14px !important;\n    background: var(--pv-bg-card) !important;\n    color: var(--pv-text-main) !important;\n    outline: none !important;\n    box-shadow: none !important;\n    transition: var(--pv-transition);\n  }\n\n  #pv-webcams-app-es .pv-search-input:focus {\n    border-color: var(--pv-primary) !important;\n    box-shadow: 0 0 0 3px rgba(30, 115, 190, 0.15) !important;\n  }\n\n  #pv-webcams-app-es .pv-filter-chips {\n    display: flex;\n    gap: 8px;\n    flex-wrap: wrap;\n    align-items: center;\n  }\n\n  #pv-webcams-app-es .pv-chip {\n    background: var(--pv-bg-card);\n    border: 1px solid var(--pv-border);\n    border-radius: var(--pv-radius-pill);\n    padding: 7px 14px;\n    font-size: 13px;\n    font-weight: 600;\n    color: var(--pv-text-main) !important;\n    cursor: pointer;\n    transition: var(--pv-transition);\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    user-select: none;\n    text-decoration: none !important;\n  }\n\n  #pv-webcams-app-es .pv-chip:hover {\n    border-color: var(--pv-primary);\n    color: var(--pv-primary) !important;\n    background: var(--pv-primary-light);\n  }\n\n  #pv-webcams-app-es .pv-chip:active {\n    transform: scale(0.96);\n  }\n\n  #pv-webcams-app-es .pv-chip.active {\n    background: var(--pv-primary);\n    border-color: var(--pv-primary);\n    color: #ffffff !important;\n    box-shadow: 0 2px 6px rgba(30, 115, 190, 0.25);\n  }\n\n  #pv-webcams-app-es .pv-chip .pv-badge-count {\n    background: rgba(0, 0, 0, 0.08);\n    padding: 2px 7px;\n    border-radius: var(--pv-radius-pill);\n    font-size: 11px;\n    font-weight: 700;\n  }\n\n  #pv-webcams-app-es .pv-chip.active .pv-badge-count {\n    background: rgba(255, 255, 255, 0.25);\n    color: #ffffff !important;\n  }\n\n  #pv-webcams-app-es .pv-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));\n    gap: 24px;\n  }\n\n  #pv-webcams-app-es .pv-card {\n    background: var(--pv-bg-card);\n    border: 1px solid var(--pv-border);\n    border-radius: var(--pv-radius-lg);\n    overflow: hidden;\n    box-shadow: var(--pv-shadow-sm);\n    transition: var(--pv-transition);\n    display: flex;\n    flex-direction: column;\n    position: relative;\n  }\n\n  #pv-webcams-app-es .pv-card:hover {\n    transform: translateY(-4px);\n    box-shadow: var(--pv-shadow-lg);\n    border-color: #cbd5e1;\n  }\n\n  #pv-webcams-app-es .pv-viewport {\n    position: relative;\n    width: 100%;\n    padding-top: 56.25%;\n    background: #0f172a;\n    overflow: hidden;\n  }\n\n  #pv-webcams-app-es .pv-viewport iframe,\n  #pv-webcams-app-es .pv-viewport img {\n    position: absolute;\n    top: 0; left: 0; width: 100%; height: 100%;\n    border: none;\n    object-fit: cover;\n  }\n\n  #pv-webcams-app-es .pv-viewport-overlay {\n    position: absolute;\n    top: 12px; left: 12px; right: 12px;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    pointer-events: none;\n    z-index: 5;\n  }\n\n  #pv-webcams-app-es .pv-tag-live {\n    background: rgba(15, 23, 42, 0.88);\n    backdrop-filter: blur(6px);\n    color: #ffffff !important;\n    font-size: 11px;\n    font-weight: 800;\n    letter-spacing: 0.05em;\n    padding: 5px 11px;\n    border-radius: var(--pv-radius-pill);\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.35);\n    border: 1px solid rgba(255, 255, 255, 0.18);\n  }\n\n  #pv-webcams-app-es .pv-btn-expand {\n    pointer-events: auto;\n    background: rgba(15, 23, 42, 0.88);\n    backdrop-filter: blur(6px);\n    border: 1px solid rgba(255,255,255,0.25);\n    color: #ffffff !important;\n    width: 38px;\n    height: 38px;\n    border-radius: 50%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    cursor: pointer;\n    font-size: 18px;\n    font-weight: 700;\n    box-shadow: 0 2px 8px rgba(0,0,0,0.35);\n    transition: var(--pv-transition);\n  }\n\n  #pv-webcams-app-es .pv-btn-expand:hover {\n    background: var(--pv-primary);\n    border-color: var(--pv-primary);\n    transform: scale(1.15);\n  }\n\n  #pv-webcams-app-es .pv-card-info {\n    padding: 18px 20px;\n    display: flex;\n    flex-direction: column;\n    flex: 1;\n    gap: 10px;\n  }\n\n  #pv-webcams-app-es .pv-meta-row {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 8px;\n  }\n\n  #pv-webcams-app-es .pv-zone-badge {\n    background: var(--pv-primary-light);\n    color: var(--pv-primary) !important;\n    font-size: 11px;\n    font-weight: 700;\n    padding: 3px 10px;\n    border-radius: var(--pv-radius-pill);\n    text-transform: uppercase;\n    letter-spacing: 0.03em;\n  }\n\n  #pv-webcams-app-es .pv-type-badge {\n    font-size: 11px;\n    font-weight: 600;\n    color: var(--pv-text-muted);\n  }\n\n  #pv-webcams-app-es .pv-card-title {\n    font-size: 16px !important;\n    font-weight: 700 !important;\n    color: var(--pv-navy) !important;\n    line-height: 1.35 !important;\n    margin: 0 !important;\n  }\n\n  #pv-webcams-app-es .pv-card-desc {\n    font-size: 13px !important;\n    color: var(--pv-text-muted) !important;\n    line-height: 1.45 !important;\n    margin: 0 !important;\n    display: -webkit-box;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n  }\n\n  #pv-webcams-app-es .pv-card-footer {\n    margin-top: auto;\n    padding-top: 12px;\n    border-top: 1px solid #f1f5f9;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    font-size: 12px;\n  }\n\n  #pv-webcams-app-es .pv-location-text {\n    color: var(--pv-text-muted);\n    font-weight: 500;\n  }\n\n  #pv-webcams-app-es .pv-btn-watch {\n    color: var(--pv-primary) !important;\n    font-weight: 700;\n    text-decoration: none !important;\n    display: inline-flex;\n    align-items: center;\n    gap: 4px;\n    cursor: pointer;\n    border: none;\n    background: none;\n    font-size: 12px;\n  }\n\n  #pv-webcams-app-es .pv-btn-watch:hover {\n    color: var(--pv-primary-hover) !important;\n    text-decoration: underline !important;\n  }\n\n  #pvModalBackdropEs {\n    position: fixed !important;\n    top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important;\n    background: rgba(15, 23, 42, 0.88) !important;\n    backdrop-filter: blur(8px) !important;\n    z-index: 9999999 !important;\n    display: flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n    padding: 20px !important;\n    opacity: 0 !important;\n    pointer-events: none !important;\n    transition: opacity 0.3s ease !important;\n  }\n\n  #pvModalBackdropEs.active {\n    opacity: 1 !important;\n    pointer-events: auto !important;\n  }\n\n  #pvModalDialogEs {\n    background: #ffffff !important;\n    border-radius: 16px !important;\n    max-width: 1000px !important;\n    width: 100% !important;\n    overflow: hidden !important;\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5) !important;\n    transform: scale(0.95);\n    transition: transform 0.3s ease;\n  }\n\n  #pvModalBackdropEs.active #pvModalDialogEs {\n    transform: scale(1);\n  }\n\n  #pvModalPlayerEs {\n    position: relative;\n    width: 100%;\n    padding-top: 56.25%;\n    background: #000;\n  }\n\n  #pvModalPlayerEs iframe,\n  #pvModalPlayerEs img {\n    position: absolute;\n    top: 0; left: 0; width: 100%; height: 100%;\n    border: none;\n  }\n\n  #pvModalBodyEs {\n    padding: 20px 24px;\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n    font-family: 'Plus Jakarta Sans', sans-serif !important;\n  }\n\n  #pvModalCloseEs {\n    background: #f1f5f9 !important;\n    border: none !important;\n    width: 36px !important;\n    height: 36px !important;\n    border-radius: 50% !important;\n    cursor: pointer !important;\n    display: flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n    color: #64748b !important;\n    font-size: 18px !important;\n  }\n\n  #pvModalCloseEs:hover {\n    background: #e2e8f0 !important;\n    color: #0d2847 !important;\n  }\n\n  @media (max-width: 640px) {\n    #pv-webcams-app-es { padding: 0 4px; }\n    #pv-webcams-app-es .pv-header { padding: 18px 16px; gap: 12px; }\n    #pv-webcams-app-es .pv-header-main h2 { font-size: 22px !important; }\n    #pv-webcams-app-es #pvBanderasBayMapEs { height: 320px; }\n    #pv-webcams-app-es .pv-filter-chips { gap: 6px; }\n    #pv-webcams-app-es .pv-chip { padding: 6px 11px; font-size: 12px; }\n    #pv-webcams-app-es .pv-grid { grid-template-columns: 1fr; }\n  }\n<\/style>\n\n<div id=\"pv-webcams-app-es\">\n  <div class=\"pv-header\">\n    <div class=\"pv-header-top\">\n      <div class=\"pv-live-badge\">\n        <span class=\"pv-pulse-dot\"><\/span>\n        <span>EN VIVO<\/span> &bull; <span id=\"pvActiveCountEs\">16 C&aacute;maras Activas<\/span>\n      <\/div>\n      <button type=\"button\" class=\"pv-toggle-btn active\" id=\"pvBtnToggleMapEs\" onclick=\"pvToggleMapEs()\">\n        <svg width=\"15\" height=\"15\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" style=\"vertical-align: -2px;\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 20l-5.447-2.724A1 1 0 013 16.382V5.618a1 1 0 011.447-.894L9 7m0 13l6-3m-6 3V7m6 10l4.553 2.276A1 1 0 0021 18.382V7.618a1 1 0 00-.553-.894L15 4m0 13V4m0 0L9 7\"><\/path><\/svg>\n        <span>Mapa de la Bah&iacute;a<\/span>\n      <\/button>\n    <\/div>\n    <div class=\"pv-header-main\">\n      <h2>C&aacute;maras Web en Vivo de Puerto Vallarta<\/h2>\n      <p>Explora c&aacute;maras en vivo de playas, marina, monta&ntilde;as y atardeceres en Puerto Vallarta y la Bah&iacute;a de Banderas.<\/p>\n    <\/div>\n  <\/div>\n\n  <div class=\"pv-map-wrapper\" id=\"pvMapSectionEs\">\n    <div class=\"pv-map-header\">\n      <span>&#128205; Mapa Interactivo de C&aacute;maras &mdash; Bah&iacute;a de Banderas y Puerto Vallarta<\/span>\n      <button type=\"button\" style=\"background: none; border: none; cursor: pointer; color: #1e73be; font-weight: 700;\" onclick=\"pvToggleMapEs()\">&times; Cerrar Mapa<\/button>\n    <\/div>\n    <div id=\"pvBanderasBayMapEs\"><\/div>\n  <\/div>\n\n  <div class=\"pv-controls\">\n    <div style=\"position: relative;\">\n      <svg style=\"position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: #64748b; pointer-events: none;\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"><\/path>\n      <\/svg>\n      <input type=\"text\" id=\"pvSearchInputEs\" class=\"pv-search-input\" placeholder=\"Buscar por nombre, hotel o lugar...\" oninput=\"pvHandleSearchEs(this.value)\" \/>\n    <\/div>\n    <div class=\"pv-filter-chips\" id=\"pvZoneChipsEs\"><\/div>\n  <\/div>\n\n  <div class=\"pv-grid\" id=\"pvCardsGridEs\"><\/div>\n\n  <div id=\"pvNoResultsEs\" style=\"display: none; text-align: center; padding: 50px 20px; background: #ffffff; border: 1px dashed #cbd5e1; border-radius: 16px;\">\n    <h3 style=\"font-size: 18px; color: #0d2847; margin-bottom: 6px;\">No se encontraron c&aacute;maras con esa b&uacute;squeda<\/h3>\n    <p style=\"color: #64748b; font-size: 14px;\">Verifica la ortograf&iacute;a o selecciona otra zona arriba.<\/p>\n  <\/div>\n<\/div>\n\n<div id=\"pvModalBackdropEs\" onclick=\"pvCloseModalEs(event)\">\n  <div id=\"pvModalDialogEs\" onclick=\"event.stopPropagation()\">\n    <div id=\"pvModalPlayerEs\"><\/div>\n    <div id=\"pvModalBodyEs\">\n      <div style=\"display: flex; justify-content: space-between; align-items: flex-start; gap: 16px;\">\n        <div>\n          <span class=\"pv-zone-badge\" id=\"pvModalZoneEs\">Zona Rom&aacute;ntica<\/span>\n          <h2 id=\"pvModalTitleEs\" style=\"font-size: 20px; font-weight: 800; color: #0d2847; margin: 6px 0 0 0;\">T&iacute;tulo<\/h2>\n        <\/div>\n        <button type=\"button\" id=\"pvModalCloseEs\" onclick=\"pvCloseModalEs()\" title=\"Cerrar (Esc)\">&times;<\/button>\n      <\/div>\n      <p id=\"pvModalDescEs\" style=\"color: #64748b; font-size: 14px; margin: 0;\"><\/p>\n      <div style=\"display: flex; justify-content: space-between; align-items: center; padding-top: 10px; border-top: 1px solid #f1f5f9; font-size: 12px;\">\n        <div style=\"color: #64748b; font-weight: 500;\">&#128205; <span id=\"pvModalLocEs\">Ubicaci&oacute;n<\/span><\/div>\n        <a id=\"pvModalLinkEs\" href=\"#\" target=\"_blank\" rel=\"noopener\" class=\"pv-btn-watch\">Visitar Sitio del Establecimiento &nearr;<\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function() {\n  const PV_CAMERAS_ES = [\n    {\n      \"id\": \"daiquiri-dicks-olas-altas\",\n      \"name\": \"Daiquiri Dick's on the Beach (Playa Olas Altas)\",\n      \"zone\": \"romantic\",\n      \"zone_name\": \"Zona Rom\\u00e1ntica\",\n      \"location\": \"Playa Olas Altas, Zona Rom\\u00e1ntica\",\n      \"lat\": 20.601446,\n      \"lng\": -105.238202,\n      \"type\": \"iframe\",\n      \"embed_url\": \"https:\/\/g3.ipcamlive.com\/player\/player.php?alias=662abcbe448a7\",\n      \"source_url\": \"https:\/\/g3.ipcamlive.com\/player\/player.php?alias=662abcbe448a7\",\n      \"thumbnail\": \"https:\/\/g3.ipcamlive.com\/player\/snapshot.php?alias=662abcbe448a7\",\n      \"description\": \"C\\u00e1mara en vivo con vista a las arenas doradas, palmeras y olas del Pac\\u00edfico en Daiquiri Dick's en Playa Olas Altas.\"\n    },\n    {\n      \"id\": \"los-muertos-pier-palapa\",\n      \"name\": \"Muelle y Playa Los Muertos (Restaurante La Palapa)\",\n      \"zone\": \"romantic\",\n      \"zone_name\": \"Zona Rom\\u00e1ntica\",\n      \"location\": \"Playa Los Muertos, Viejo Vallarta\",\n      \"lat\": 20.59964890952821,\n      \"lng\": -105.23870414552358,\n      \"type\": \"youtube\",\n      \"embed_url\": \"https:\/\/www.youtube.com\/embed\/T6BwOCPXGoo?autoplay=1\",\n      \"source_url\": \"https:\/\/www.lapalapapv.com\",\n      \"thumbnail\": \"https:\/\/img.youtube.com\/vi\/T6BwOCPXGoo\/hqdefault.jpg\",\n      \"description\": \"Vista ic\\u00f3nica en vivo del Muelle de Los Muertos con forma de vela, atardeceres y la terraza de playa del Restaurante La Palapa.\"\n    },\n    {\n      \"id\": \"el-dorado-beach\",\n      \"name\": \"Webcam de Restaurante El Dorado (Playa Los Muertos)\",\n      \"zone\": \"romantic\",\n      \"zone_name\": \"Zona Rom\\u00e1ntica\",\n      \"location\": \"Playa Los Muertos, Zona Rom\\u00e1ntica\",\n      \"lat\": 20.599260223486553,\n      \"lng\": -105.23895163769133,\n      \"type\": \"youtube\",\n      \"embed_url\": \"https:\/\/www.youtube.com\/embed\/YN6x2lVENDk?autoplay=1\",\n      \"source_url\": \"https:\/\/www.youtube.com\/watch?v=YN6x2lVENDk\",\n      \"thumbnail\": \"https:\/\/img.youtube.com\/vi\/YN6x2lVENDk\/hqdefault.jpg\",\n      \"description\": \"Ambiente de club de playa, camastros y olas del Pac\\u00edfico en El Dorado en Playa Los Muertos.\"\n    },\n    {\n      \"id\": \"ipcamlive-romantic-zone\",\n      \"name\": \"Zona Rom\\u00e1ntica (Calle Basilio Badillo)\",\n      \"zone\": \"romantic\",\n      \"zone_name\": \"Zona Rom\\u00e1ntica\",\n      \"location\": \"Calle Basilio Badillo (ThrIVe & MedSpa)\",\n      \"lat\": 20.602708463437477,\n      \"lng\": -105.23482540744857,\n      \"type\": \"iframe\",\n      \"embed_url\": \"https:\/\/www.ipcamlive.com\/player\/player.php?alias=66a7fb01a47a4&autoplay=1\",\n      \"source_url\": \"https:\/\/www.ipcamlive.com\/player\/player.php?alias=66a7fb01a47a4\",\n      \"thumbnail\": \"https:\/\/www.ipcamlive.com\/player\/snapshot.php?alias=66a7fb01a47a4\",\n      \"description\": \"Vista de 180 grados a nivel de calle sobre la animada zona de restaurantes y galer\\u00edas de Basilio Badillo.\"\n    },\n    {\n      \"id\": \"vallarta-shores\",\n      \"name\": \"Vallarta Shores \\u2013 Playa Los Muertos\",\n      \"zone\": \"romantic\",\n      \"zone_name\": \"Zona Rom\\u00e1ntica\",\n      \"location\": \"Playa Los Muertos Sur\",\n      \"lat\": 20.59612137772964,\n      \"lng\": -105.23968562513224,\n      \"type\": \"iframe\",\n      \"embed_url\": \"https:\/\/v.angelcam.com\/iframe?v=51eyob6nr8\",\n      \"source_url\": \"https:\/\/vallartashores.com\/live-vallarta-webcam\/\",\n      \"thumbnail\": \"https:\/\/img.youtube.com\/vi\/YN6x2lVENDk\/hqdefault.jpg\",\n      \"description\": \"Perspectiva panor\\u00e1mica frente al mar desde el extremo sur de Playa Los Muertos hacia la bah\\u00eda.\"\n    },\n    {\n      \"id\": \"alamar-banderas-bay\",\n      \"name\": \"Alamar y Vista Panor\\u00e1mica Bah\\u00eda de Banderas (La Cruz)\",\n      \"zone\": \"north\",\n      \"zone_name\": \"Zona Norte\",\n      \"location\": \"La Cruz de Huanacaxtle, Riviera Nayarit\",\n      \"lat\": 20.747943762745248,\n      \"lng\": -105.38822407726664,\n      \"type\": \"youtube\",\n      \"embed_url\": \"https:\/\/www.youtube.com\/embed\/263jvA3g9Ls?autoplay=1\",\n      \"source_url\": \"https:\/\/www.youtube.com\/watch?v=263jvA3g9Ls\",\n      \"thumbnail\": \"https:\/\/img.youtube.com\/vi\/263jvA3g9Ls\/hqdefault.jpg\",\n      \"description\": \"Espectacular vista panor\\u00e1mica de altura sobre la Bah\\u00eda de Banderas, veleros y la costa desde Alamar.\"\n    },\n    {\n      \"id\": \"grand-velas-nuevo-vallarta\",\n      \"name\": \"Grand Velas Riviera Nayarit\",\n      \"zone\": \"north\",\n      \"zone_name\": \"Zona Norte\",\n      \"location\": \"Nuevo Nayarit \/ Riviera Nayarit\",\n      \"lat\": 20.707609345591077,\n      \"lng\": -105.30040300190261,\n      \"type\": \"mjpg\",\n      \"embed_url\": \"https:\/\/cam-rn.grandvelas.net\/axis-cgi\/mjpg\/video.cgi?streamprofile=live\",\n      \"source_url\": \"https:\/\/cam-rn.grandvelas.net\/axis-cgi\/mjpg\/video.cgi?streamprofile=live\",\n      \"thumbnail\": \"https:\/\/cam-rn.grandvelas.net\/axis-cgi\/mjpg\/video.cgi?streamprofile=live\",\n      \"description\": \"Amplia playa y albercas infinitas con vista a la curva norte de la Bah\\u00eda de Banderas en Nuevo Nayarit.\"\n    },\n    {\n      \"id\": \"villa-del-palmar-flamingos\",\n      \"name\": \"Villa del Palmar Flamingos\",\n      \"zone\": \"north\",\n      \"zone_name\": \"Zona Norte\",\n      \"location\": \"Flamingos \/ Nuevo Nayarit\",\n      \"lat\": 20.739775,\n      \"lng\": -105.321855,\n      \"type\": \"mjpg\",\n      \"embed_url\": \"https:\/\/live.villagroupresorts.com\/vdpfl\/cam.mjpg\",\n      \"source_url\": \"https:\/\/flamingos.villadelpalmar.com\",\n      \"thumbnail\": \"https:\/\/live.villagroupresorts.com\/vdpfl\/cam.mjpg\",\n      \"description\": \"Vista en vivo de las albercas, palmeras y frente de playa en Villa del Palmar Flamingos en Riviera Nayarit.\"\n    },\n    {\n      \"id\": \"marina-towers-cam1\",\n      \"name\": \"Torres Marina Cam 01 (Entrada Marina)\",\n      \"zone\": \"marina\",\n      \"zone_name\": \"Marina Vallarta\",\n      \"location\": \"Torres Marina, Marina Vallarta\",\n      \"lat\": 20.656062236163603,\n      \"lng\": -105.24721886691042,\n      \"type\": \"iframe\",\n      \"embed_url\": \"https:\/\/g3.ipcamlive.com\/player\/player.php?alias=66a9467052d59\",\n      \"source_url\": \"https:\/\/marinatowers.mx\/en\/live-cam\/\",\n      \"thumbnail\": \"https:\/\/g3.ipcamlive.com\/player\/snapshot.php?alias=66a9467052d59\",\n      \"description\": \"C\\u00e1mara en vivo sobre el canal de entrada norte y amarres de yates en Torres Marina.\"\n    },\n    {\n      \"id\": \"marina-towers-cam2\",\n      \"name\": \"Torres Marina Cam 02 (Muelle y D\\u00e1rsena)\",\n      \"zone\": \"marina\",\n      \"zone_name\": \"Marina Vallarta\",\n      \"location\": \"Muelles Principales Marina Vallarta\",\n      \"lat\": 20.656895481728977,\n      \"lng\": -105.2467575269875,\n      \"type\": \"iframe\",\n      \"embed_url\": \"https:\/\/g1.ipcamlive.com\/player\/player.php?alias=651f4ad1bab43\",\n      \"source_url\": \"https:\/\/marinatowers.mx\/en\/live-cam\/\",\n      \"thumbnail\": \"https:\/\/g1.ipcamlive.com\/player\/snapshot.php?alias=651f4ad1bab43\",\n      \"description\": \"Vista en vivo sobre los muelles de yates, la d\\u00e1rsena y el malec\\u00f3n de Marina Vallarta.\"\n    },\n    {\n      \"id\": \"marina-towers-cam3\",\n      \"name\": \"Torres Marina Cam 03 (Puerto y Bah\\u00eda)\",\n      \"zone\": \"marina\",\n      \"zone_name\": \"Marina Vallarta\",\n      \"location\": \"Torres Marina \/ Vista Puerto M\\u00e1gico\",\n      \"lat\": 20.658240711915706,\n      \"lng\": -105.24640347541873,\n      \"type\": \"iframe\",\n      \"embed_url\": \"https:\/\/g3.ipcamlive.com\/player\/player.php?alias=656637e067099\",\n      \"source_url\": \"https:\/\/marinatowers.mx\/en\/live-cam\/\",\n      \"thumbnail\": \"https:\/\/g3.ipcamlive.com\/player\/snapshot.php?alias=656637e067099\",\n      \"description\": \"Vista amplia de la llegada de cruceros a Puerto M\\u00e1gico y las aguas de la Bah\\u00eda de Banderas.\"\n    },\n    {\n      \"id\": \"marina-towers-cam4\",\n      \"name\": \"Torres Marina Cam 04 (Malec\\u00f3n y Paisaje)\",\n      \"zone\": \"marina\",\n      \"zone_name\": \"Marina Vallarta\",\n      \"location\": \"Malec\\u00f3n de Marina Vallarta\",\n      \"lat\": 20.65750000000000,\n      \"lng\": -105.24660000000000,\n      \"type\": \"iframe\",\n      \"embed_url\": \"https:\/\/g3.ipcamlive.com\/player\/player.php?alias=66a9475306b30\",\n      \"source_url\": \"https:\/\/marinatowers.mx\/en\/live-cam\/\",\n      \"thumbnail\": \"https:\/\/g3.ipcamlive.com\/player\/snapshot.php?alias=66a9475306b30\",\n      \"description\": \"Perspectiva panor\\u00e1mica a lo largo del malec\\u00f3n de la marina, restaurantes y monta\\u00f1as.\"\n    },\n    {\n      \"id\": \"velas-vallarta\",\n      \"name\": \"Resort Velas Vallarta\",\n      \"zone\": \"marina\",\n      \"zone_name\": \"Marina Vallarta\",\n      \"location\": \"Playa de Marina Vallarta\",\n      \"lat\": 20.66546640453808,\n      \"lng\": -105.25963936086396,\n      \"type\": \"mjpg\",\n      \"embed_url\": \"https:\/\/cam-vv.velasresorts.com\/mjpg\/video.mjpg\",\n      \"source_url\": \"https:\/\/cam-vv.velasresorts.com\/mjpg\/video.mjpg\",\n      \"thumbnail\": \"https:\/\/cam-vv.velasresorts.com\/mjpg\/video.mjpg\",\n      \"description\": \"Albercas del resort, jardines exuberantes y arenas doradas de la playa de Marina Vallarta.\"\n    },\n    {\n      \"id\": \"pv-airport\",\n      \"name\": \"Aeropuerto de Puerto Vallarta (Vista Marina)\",\n      \"zone\": \"marina\",\n      \"zone_name\": \"Marina Vallarta\",\n      \"location\": \"Hotel One \/ Marina Vallarta (Hacia Pista)\",\n      \"lat\": 20.674332615362477,\n      \"lng\": -105.25124233202835,\n      \"type\": \"jpg-refresh\",\n      \"embed_url\": \"https:\/\/webcamsdemexico.net\/puertovallarta5\/live.jpg\",\n      \"refresh_interval\": 5000,\n      \"source_url\": \"https:\/\/webcamsdemexico.com\/webcam\/puerto-vallarta-aeropuerto-2\/\",\n      \"thumbnail\": \"https:\/\/webcamsdemexico.net\/puertovallarta5\/live.jpg\",\n      \"description\": \"Vista panor\\u00e1mica desde Marina Vallarta mirando hacia la pista del aeropuerto y vuelos.\"\n    },\n    {\n      \"id\": \"villa-del-palmar\",\n      \"name\": \"Frente de Playa Villa del Palmar\",\n      \"zone\": \"hotel\",\n      \"zone_name\": \"Zona Hotelera\",\n      \"location\": \"Zona Hotelera Norte, Puerto Vallarta\",\n      \"lat\": 20.642587379954687,\n      \"lng\": -105.23702920570103,\n      \"type\": \"mjpg\",\n      \"embed_url\": \"https:\/\/live.villagroupresorts.com\/vdppv\/cam.mjpg\",\n      \"source_url\": \"https:\/\/live.villagroupresorts.com\/vdppv\/cam.mjpg\",\n      \"thumbnail\": \"https:\/\/live.villagroupresorts.com\/vdppv\/cam.mjpg\",\n      \"description\": \"Vista de playa en la Zona Hotelera con albercas, palmeras y catamaranes navegando en la bah\\u00eda.\"\n    },\n    {\n      \"id\": \"grand-park-royal\",\n      \"name\": \"Grand Park Royal (Playa Las Gemelas)\",\n      \"zone\": \"south\",\n      \"zone_name\": \"Zona Sur\",\n      \"location\": \"Playa Las Gemelas, Costa Sur\",\n      \"lat\": 20.54835234439688,\n      \"lng\": -105.2732021455246,\n      \"type\": \"youtube\",\n      \"embed_url\": \"https:\/\/www.youtube.com\/embed\/V6Co4YdL25Q?autoplay=1\",\n      \"source_url\": \"https:\/\/webcamsdemexico.com\/webcam\/grand-park-royal-puerto-vallarta\/\",\n      \"thumbnail\": \"https:\/\/img.youtube.com\/vi\/V6Co4YdL25Q\/hqdefault.jpg\",\n      \"description\": \"Transmisi\\u00f3n en vivo de las aguas turquesas y arenas limpias en la famosa Playa Las Gemelas en la Zona Sur.\"\n    },\n    {\n      \"id\": \"hyatt-ziva\",\n      \"name\": \"Hyatt Ziva (Playa Las Estacas)\",\n      \"zone\": \"south\",\n      \"zone_name\": \"Zona Sur\",\n      \"location\": \"Playa Las Estacas, Costa Sur\",\n      \"lat\": 20.584364777633837,\n      \"lng\": -105.24331652279051,\n      \"type\": \"youtube\",\n      \"embed_url\": \"https:\/\/www.youtube.com\/embed\/5boZ1Vw95OU?autoplay=1\",\n      \"source_url\": \"https:\/\/webcamsdemexico.com\/webcam\/puerto-vallarta-hyatt-ziva\/\",\n      \"thumbnail\": \"https:\/\/img.youtube.com\/vi\/5boZ1Vw95OU\/hqdefault.jpg\",\n      \"description\": \"Perspectiva en vivo de la caleta privada con aguas tranquilas, acantilados y arenas doradas en Las Estacas.\"\n    },\n    {\n      \"id\": \"hotel-mousai\",\n      \"name\": \"Hotel Mousai y Garza Blanca\",\n      \"zone\": \"south\",\n      \"zone_name\": \"Zona Sur\",\n      \"location\": \"Costa Sur \/ Carretera a Barra de Navidad\",\n      \"lat\": 20.553133753454958,\n      \"lng\": -105.26322103203078,\n      \"type\": \"mjpg\",\n      \"embed_url\": \"https:\/\/gbpvcam01.taferresorts.com\/mjpg\/video.mjpg\",\n      \"source_url\": \"https:\/\/gbpvcam01.taferresorts.com\/mjpg\/video.mjpg\",\n      \"thumbnail\": \"https:\/\/gbpvcam01.taferresorts.com\/mjpg\/video.mjpg\",\n      \"description\": \"Impresionante vista donde la selva de la Sierra Madre se une con el mar en la Zona Sur.\"\n    }\n  ];\n\n  let pvActiveZoneEs = \"all\";\n  let pvSearchQueryEs = \"\";\n  let pvMapEs = null;\n  let pvMarkersEs = [];\n  let pvIsMapVisibleEs = true;\n  let pvModalTimerEs = null;\n  let pvRefreshTimersEs = [];\n\n  function pvInitAppEs() {\n    pvRenderChipsEs();\n    pvRenderCardsEs();\n    pvLoadLeafletScriptEs(pvInitMapEs);\n  }\n\n  function pvLoadLeafletScriptEs(callback) {\n    if (window.L) { callback(); return; }\n    const script = document.createElement(\"script\");\n    script.src = \"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js\";\n    script.crossOrigin = \"\";\n    script.onload = callback;\n    document.head.appendChild(script);\n  }\n\n  function pvRenderChipsEs() {\n    const container = document.getElementById(\"pvZoneChipsEs\");\n    if (!container) return;\n    container.innerHTML = \"\";\n\n    const zones = [\n      { id: \"all\", label: \"Todas\", icon: \"&#127760;\" },\n      { id: \"romantic\", label: \"Zona Rom&aacute;ntica\", icon: \"&#10084;&#65039;\" },\n      { id: \"downtown\", label: \"Centro \/ Malec&oacute;n\", icon: \"&#127963;&#65039;\" },\n      { id: \"hotel\", label: \"Zona Hotelera\", icon: \"&#127976;\" },\n      { id: \"south\", label: \"Zona Sur\", icon: \"&#9968;&#65039;\" },\n      { id: \"marina\", label: \"Marina Vallarta\", icon: \"&#9875;\" },\n      { id: \"north\", label: \"Zona Norte\", icon: \"&#127796;\" }\n    ];\n\n    const counts = { all: PV_CAMERAS_ES.length };\n    PV_CAMERAS_ES.forEach(c => counts[c.zone] = (counts[c.zone] || 0) + 1);\n\n    document.getElementById(\"pvActiveCountEs\").textContent = `${PV_CAMERAS_ES.length} C\\u00e1maras Activas`;\n\n    zones.forEach(z => {\n      const count = counts[z.id] || 0;\n      if (count === 0 && z.id !== \"all\") return;\n\n      const btn = document.createElement(\"button\");\n      btn.type = \"button\";\n      btn.className = `pv-chip ${pvActiveZoneEs === z.id ? \"active\" : \"\"}`;\n      btn.onclick = () => {\n        pvActiveZoneEs = z.id;\n        pvRenderChipsEs();\n        pvRenderCardsEs();\n        if (pvIsMapVisibleEs) pvUpdateMapMarkersEs();\n      };\n      btn.innerHTML = `<span>${z.icon}<\/span><span>${z.label}<\/span><span class=\"pv-badge-count\">${count}<\/span>`;\n      container.appendChild(btn);\n    });\n  }\n\n  function pvRenderCardsEs() {\n    const grid = document.getElementById(\"pvCardsGridEs\");\n    const noResults = document.getElementById(\"pvNoResultsEs\");\n    if (!grid) return;\n\n    pvRefreshTimersEs.forEach(t => clearInterval(t));\n    pvRefreshTimersEs = [];\n    grid.innerHTML = \"\";\n\n    const filtered = PV_CAMERAS_ES.filter(c => {\n      if (pvActiveZoneEs !== \"all\" && c.zone !== pvActiveZoneEs) return false;\n      if (pvSearchQueryEs) {\n        const q = pvSearchQueryEs.toLowerCase();\n        return c.name.toLowerCase().includes(q) || c.location.toLowerCase().includes(q) || c.description.toLowerCase().includes(q) || c.zone_name.toLowerCase().includes(q);\n      }\n      return true;\n    });\n\n    if (filtered.length === 0) {\n      noResults.style.display = \"block\";\n      grid.style.display = \"none\";\n      return;\n    }\n\n    noResults.style.display = \"none\";\n    grid.style.display = \"grid\";\n\n    filtered.forEach(cam => {\n      const card = document.createElement(\"div\");\n      card.className = \"pv-card\";\n\n      let viewport = \"\";\n      if (cam.type === \"jpg-refresh\") {\n        const imgId = `pv-img-es-${cam.id}`;\n        viewport = `\n          <div class=\"pv-viewport\">\n            <img decoding=\"async\" id=\"${imgId}\" src=\"${cam.embed_url}?t=${Date.now()}\" alt=\"${cam.name}\" loading=\"lazy\" onerror=\"pvHandleImgErrorEs(this)\" \/>\n            <div class=\"pv-viewport-overlay\">\n              <span class=\"pv-tag-live\"><span class=\"pv-pulse-dot\"><\/span> EN VIVO<\/span>\n              <button type=\"button\" class=\"pv-btn-expand\" onclick=\"pvOpenModalEs('${cam.id}')\" title=\"Pantalla Completa\">&#9974;<\/button>\n            <\/div>\n          <\/div>\n        `;\n        const t = setInterval(() => {\n          const el = document.getElementById(imgId);\n          if (el) el.src = `${cam.embed_url}?t=${Date.now()}`;\n        }, cam.refresh_interval || 5000);\n        pvRefreshTimersEs.push(t);\n\n      } else if (cam.type === \"mjpg\") {\n        viewport = `\n          <div class=\"pv-viewport\">\n            <img decoding=\"async\" src=\"${cam.embed_url}\" alt=\"${cam.name}\" loading=\"lazy\" onerror=\"pvHandleImgErrorEs(this)\" \/>\n            <div class=\"pv-viewport-overlay\">\n              <span class=\"pv-tag-live\"><span class=\"pv-pulse-dot\"><\/span> EN VIVO<\/span>\n              <button type=\"button\" class=\"pv-btn-expand\" onclick=\"pvOpenModalEs('${cam.id}')\" title=\"Pantalla Completa\">&#9974;<\/button>\n            <\/div>\n          <\/div>\n        `;\n      } else {\n        viewport = `\n          <div class=\"pv-viewport\">\n            <iframe src=\"${cam.embed_url}\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen loading=\"lazy\" title=\"${cam.name}\"><\/iframe>\n            <div class=\"pv-viewport-overlay\">\n              <span class=\"pv-tag-live\"><span class=\"pv-pulse-dot\"><\/span> EN VIVO<\/span>\n              <button type=\"button\" class=\"pv-btn-expand\" onclick=\"pvOpenModalEs('${cam.id}')\" title=\"Pantalla Completa\">&#9974;<\/button>\n            <\/div>\n          <\/div>\n        `;\n      }\n\n      card.innerHTML = `\n        ${viewport}\n        <div class=\"pv-card-info\">\n          <div class=\"pv-meta-row\">\n            <span class=\"pv-zone-badge\">${cam.zone_name}<\/span>\n            <span class=\"pv-type-badge\">${cam.type.toUpperCase()}<\/span>\n          <\/div>\n          <h3 class=\"pv-card-title\">${cam.name}<\/h3>\n          <p class=\"pv-card-desc\">${cam.description}<\/p>\n          <div class=\"pv-card-footer\">\n            <div class=\"pv-location-text\">&#128205; ${cam.location}<\/div>\n            <button type=\"button\" class=\"pv-btn-watch\" onclick=\"pvOpenModalEs('${cam.id}')\">Ver en Vivo &nearr;<\/button>\n          <\/div>\n        <\/div>\n      `;\n      grid.appendChild(card);\n    });\n  }\n\n  window.pvHandleImgErrorEs = function(img) {\n    img.onerror = null;\n    img.src = 'https:\/\/images.unsplash.com\/photo-1540555700478-4be289fbecef?w=600&q=80';\n    const parent = img.closest('.pv-viewport');\n    if (parent) {\n      const badge = parent.querySelector('.pv-tag-live');\n      if (badge) {\n        badge.innerHTML = '<span style=\"display:inline-block;width:7px;height:7px;background:#f59e0b;border-radius:50%;margin-right:4px;\"><\/span> RECONECTANDO...';\n        badge.style.background = 'rgba(15, 23, 42, 0.92)';\n      }\n    }\n  };\n\n  window.pvHandleSearchEs = function(val) {\n    pvSearchQueryEs = (val || \"\").trim();\n    pvRenderCardsEs();\n  };\n\n  window.pvToggleMapEs = function() {\n    pvIsMapVisibleEs = !pvIsMapVisibleEs;\n    const mapSec = document.getElementById(\"pvMapSectionEs\");\n    const btn = document.getElementById(\"pvBtnToggleMapEs\");\n    if (mapSec) mapSec.classList.toggle(\"collapsed\", !pvIsMapVisibleEs);\n    if (btn) btn.classList.toggle(\"active\", pvIsMapVisibleEs);\n    if (pvIsMapVisibleEs && pvMapEs) {\n      setTimeout(() => {\n        pvMapEs.invalidateSize();\n        pvUpdateMapMarkersEs();\n      }, 100);\n    }\n  };\n\n  function pvInitMapEs() {\n    if (!window.L) return;\n    const mapEl = document.getElementById(\"pvBanderasBayMapEs\");\n    if (!mapEl || pvMapEs) return;\n\n    pvMapEs = L.map('pvBanderasBayMapEs', {\n      center: [20.65, -105.28],\n      zoom: 12,\n      scrollWheelZoom: false\n    });\n\n    L.tileLayer('https:\/\/{s}.basemaps.cartocdn.com\/rastertiles\/voyager\/{z}\/{x}\/{y}{r}.png', {\n      attribution: '&copy; <a href=\"https:\/\/carto.com\/\">CARTO<\/a>, &copy; <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a>',\n      maxZoom: 18\n    }).addTo(pvMapEs);\n\n    pvUpdateMapMarkersEs();\n  }\n\n  function pvUpdateMapMarkersEs() {\n    if (!pvMapEs || !window.L) return;\n    pvMarkersEs.forEach(m => pvMapEs.removeLayer(m));\n    pvMarkersEs = [];\n    const bounds = [];\n\n    PV_CAMERAS_ES.forEach(cam => {\n      if (!cam.lat || !cam.lng) return;\n      if (pvActiveZoneEs !== \"all\" && cam.zone !== pvActiveZoneEs) return;\n\n      const customIcon = L.divIcon({\n        className: 'custom-map-icon',\n        html: `<div class=\"pv-map-pin\"><\/div>`,\n        iconSize: [14, 14],\n        iconAnchor: [7, 7]\n      });\n\n      const marker = L.marker([cam.lat, cam.lng], { icon: customIcon }).addTo(pvMapEs);\n      bounds.push([cam.lat, cam.lng]);\n\n      const popupHtml = `\n        <div class=\"pv-map-popup\">\n          <img decoding=\"async\" src=\"${cam.thumbnail || ''}\" class=\"pv-map-popup-thumb\" alt=\"${cam.name}\" \/>\n          <div class=\"pv-map-popup-info\">\n            <span class=\"pv-map-popup-zone\">${cam.zone_name}<\/span>\n            <div class=\"pv-map-popup-title\">${cam.name}<\/div>\n            <a href=\"javascript:void(0)\" onclick=\"pvOpenModalEs('${cam.id}')\" class=\"pv-map-popup-btn\">&#9654; Ver en Vivo<\/a>\n          <\/div>\n        <\/div>\n      `;\n      marker.bindPopup(popupHtml);\n      pvMarkersEs.push(marker);\n    });\n\n    if (bounds.length > 0) {\n      pvMapEs.fitBounds(bounds, { padding: [40, 40], maxZoom: 14 });\n    }\n  }\n\n  window.pvOpenModalEs = function(camId) {\n    const cam = PV_CAMERAS_ES.find(c => c.id === camId);\n    if (!cam) return;\n\n    if (pvModalTimerEs) {\n      clearInterval(pvModalTimerEs);\n      pvModalTimerEs = null;\n    }\n\n    document.getElementById(\"pvModalTitleEs\").textContent = cam.name;\n    document.getElementById(\"pvModalZoneEs\").textContent = cam.zone_name;\n    document.getElementById(\"pvModalDescEs\").textContent = cam.description;\n    document.getElementById(\"pvModalLocEs\").textContent = cam.location;\n    document.getElementById(\"pvModalLinkEs\").href = cam.source_url || \"#\";\n\n    const p = document.getElementById(\"pvModalPlayerEs\");\n    p.innerHTML = \"\";\n\n    if (cam.type === \"jpg-refresh\") {\n      const mImgId = `pv-mimg-es-${cam.id}`;\n      p.innerHTML = `<img decoding=\"async\" id=\"${mImgId}\" src=\"${cam.embed_url}?t=${Date.now()}\" style=\"width: 100%; height: 100%; object-fit: contain;\" alt=\"${cam.name}\" \/>`;\n      pvModalTimerEs = setInterval(() => {\n        const el = document.getElementById(mImgId);\n        if (el) el.src = `${cam.embed_url}?t=${Date.now()}`;\n      }, cam.refresh_interval || 5000);\n    } else if (cam.type === \"mjpg\") {\n      p.innerHTML = `<img decoding=\"async\" src=\"${cam.embed_url}\" style=\"width: 100%; height: 100%; object-fit: contain;\" alt=\"${cam.name}\" \/>`;\n    } else {\n      p.innerHTML = `<iframe src=\"${cam.embed_url}\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen style=\"width: 100%; height: 100%; border: none;\" title=\"${cam.name}\"><\/iframe>`;\n    }\n\n    document.getElementById(\"pvModalBackdropEs\").classList.add(\"active\");\n    document.body.style.overflow = \"hidden\";\n  };\n\n  window.pvCloseModalEs = function() {\n    if (pvModalTimerEs) {\n      clearInterval(pvModalTimerEs);\n      pvModalTimerEs = null;\n    }\n    const b = document.getElementById(\"pvModalBackdropEs\");\n    if (b) b.classList.remove(\"active\");\n    const p = document.getElementById(\"pvModalPlayerEs\");\n    if (p) p.innerHTML = \"\";\n    document.body.style.overflow = \"\";\n  };\n\n  document.addEventListener(\"keydown\", (e) => {\n    if (e.key === \"Escape\") pvCloseModalEs();\n  });\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", pvInitAppEs);\n  } else {\n    pvInitAppEs();\n  }\n})();\n<\/script>\n\n\n<div class=\"gb-container gb-container-56c17610\">\n<div class=\"gb-container gb-container-fe05d5f2\">\n<div  class=\"ultp-post-grid-block wp-block-ultimate-post-post-grid-2 ultp-block-a73f06 \"><div class=\"ultp-block-wrapper\" ><div class=\"ultp-loading\"><div class=\"ultp-loading-blocks\" style=\"width:100%;height:100%;\"><div style=\"left: 0;top: 0;animation-delay:0s;\"><\/div><div style=\"left: 21px;top: 0;animation-delay:0.125s;\"><\/div><div style=\"left: 42px;top: 0;animation-delay:0.25s;\"><\/div><div style=\"left: 0;top: 21px;animation-delay:0.875s;\"><\/div><div style=\"left: 42px;top: 21px;animation-delay:0.375s;\"><\/div><div style=\"left: 0;top: 42px;animation-delay:0.75s;\"><\/div><div style=\"left: 42px;top: 42px;animation-delay:0.625s;\"><\/div><div style=\"left: 21px;top: 42px;animation-delay:0.5s;\"><\/div><\/div><\/div><div class=\"ultp-block-items-wrap ultp-block-row\"><div class=\"ultp-block-item post-id-7169\"><div class=\"ultp-block-content-wrap ultp-block-content-overlay\"><div class=\"ultp-block-image ultp-block-image-zoomOut ultp-block-image-overlay ultp-block-image-simgleGradient\"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/historia\/\" ><img decoding=\"async\"  loading=\"lazy\" alt=\"Historia de Puerto Vallarta, Jalisco, M\u00e9xico\"  src=\"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/panoramica-mirador-cerro-de-la-cruz-pv-02-870x570.webp\" \/><\/a><\/div><div class=\"ultp-block-content ultp-block-content-bottomPosition\"><div class=\"ultp-block-content-inner\"><h3 class=\"ultp-block-title \"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/historia\/\" >Historia de Puerto Vallarta, Jalisco, M\u00e9xico<\/a><\/h3><\/div><\/div><\/div><\/div><div class=\"ultp-block-item post-id-8485\"><div class=\"ultp-block-content-wrap ultp-block-content-overlay\"><div class=\"ultp-block-image ultp-block-image-zoomOut ultp-block-image-overlay ultp-block-image-simgleGradient\"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/colonias\/\" ><img decoding=\"async\"  loading=\"lazy\" alt=\"Colonias de Puerto Vallarta\"  src=\"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/zona-romantica-26-scaled-1-870x570.webp\" \/><\/a><\/div><div class=\"ultp-block-content ultp-block-content-bottomPosition\"><div class=\"ultp-block-content-inner\"><h3 class=\"ultp-block-title \"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/colonias\/\" >Colonias de Puerto Vallarta<\/a><\/h3><\/div><\/div><\/div><\/div><div class=\"ultp-block-item post-id-5588\"><div class=\"ultp-block-content-wrap ultp-block-content-overlay\"><div class=\"ultp-block-image ultp-block-image-zoomOut ultp-block-image-overlay ultp-block-image-simgleGradient\"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/acerca-de-puerto-vallarta\/\" ><img decoding=\"async\"  loading=\"lazy\" alt=\"Malec\u00f3n y Calle Galeana centro de Puerto Vallarta\"  src=\"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/all-about-puerto-vallarta-centro-malecon-esquina-galeana-drone-870x570.webp\" \/><\/a><\/div><div class=\"ultp-block-content ultp-block-content-bottomPosition\"><div class=\"ultp-block-content-inner\"><h3 class=\"ultp-block-title \"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/acerca-de-puerto-vallarta\/\" >Acerca de Puerto Vallarta, Jalisco, M\u00e9xico<\/a><\/h3><\/div><\/div><\/div><\/div><div class=\"ultp-block-item post-id-8399\"><div class=\"ultp-block-content-wrap ultp-block-content-overlay\"><div class=\"ultp-block-image ultp-block-image-zoomOut ultp-block-image-overlay ultp-block-image-simgleGradient\"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/biodiversidad-de-puerto-vallarta\/\" ><img decoding=\"async\"  loading=\"lazy\" alt=\"La impresionante biodiversidad de Puerto Vallarta\"  src=\"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/DSC_0930-870x570.webp\" \/><\/a><\/div><div class=\"ultp-block-content ultp-block-content-bottomPosition\"><div class=\"ultp-block-content-inner\"><h3 class=\"ultp-block-title \"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/biodiversidad-de-puerto-vallarta\/\" >La impresionante biodiversidad de Puerto Vallarta<\/a><\/h3><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"pagination-block-html\" aria-hidden=\"true\" style=\"display: none;\"><\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"gb-container gb-container-0a94b8cf\">\n<div class=\"gb-container gb-container-5f85b37c\">\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div  class=\"wp-block-ultimate-post-image ultp-block-e2bf80\"><div class=\"ultp-block-wrapper\"><figure class=\"ultp-image-block-wrapper\"><div class=\"ultp-image-block ultp-image-block-none\"><img decoding=\"async\"  class=\"ultp-image\"  alt=\"Image Not Found\"  src=\"https:\/\/puertovallarta.net\/wp-content\/uploads\/tours-banner-pvnet-23-1.jpg\" \/><\/div><\/figure><\/div><\/div>\n\n\n<h5 class=\"wp-block-heading has-text-align-center\"><strong><strong>Reserva tours y ap\u00f3yanos<\/strong><\/strong><\/h5>\n\n\n\n<div class=\"wp-block-ultimate-post-advanced-list ultp-block-a7fd43\"><ul class=\"ultp-list-wrapper ultp-list-layout1\">\n<li class=\"wp-block-ultimate-post-list ultp-block-70a559\"><div class=\"ultp-list-content\"><div class=\"ultp-listicon-bg\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 48 48\"><g><path d=\"M24 4.1A19.9 19.9 0 1 1 4.1 24 19.922 19.922 0 0 1 24 4.1M24 0a24 24 0 1 0 24 24A24 24 0 0 0 24 0\"><\/path><path d=\"M20.333 32.836a2.258 2.258 0 0 1-1.6-.664l-6.179-6.178a2.05 2.05 0 0 1 2.9-2.9l4.885 4.884 12.217-12.216a2.05 2.05 0 0 1 2.9 2.9l-13.51 13.51a2.259 2.259 0 0 1-1.6.664\"><\/path><\/g><\/svg><\/div><div class=\"ultp-list-title\">Los mejores precios<\/div><\/div><\/li>\n\n\n\n<li class=\"wp-block-ultimate-post-list ultp-block-06bd35\"><div class=\"ultp-list-content\"><div class=\"ultp-listicon-bg\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 48 48\"><g><path d=\"M24 4.1A19.9 19.9 0 1 1 4.1 24 19.922 19.922 0 0 1 24 4.1M24 0a24 24 0 1 0 24 24A24 24 0 0 0 24 0\"><\/path><path d=\"M20.333 32.836a2.258 2.258 0 0 1-1.6-.664l-6.179-6.178a2.05 2.05 0 0 1 2.9-2.9l4.885 4.884 12.217-12.216a2.05 2.05 0 0 1 2.9 2.9l-13.51 13.51a2.259 2.259 0 0 1-1.6.664\"><\/path><\/g><\/svg><\/div><div class=\"ultp-list-title\">100% Soporte local<\/div><\/div><\/li>\n\n\n\n<li class=\"wp-block-ultimate-post-list ultp-block-31a255\"><div class=\"ultp-list-content\"><div class=\"ultp-listicon-bg\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 48 48\"><g><path d=\"M24 4.1A19.9 19.9 0 1 1 4.1 24 19.922 19.922 0 0 1 24 4.1M24 0a24 24 0 1 0 24 24A24 24 0 0 0 24 0\"><\/path><path d=\"M20.333 32.836a2.258 2.258 0 0 1-1.6-.664l-6.179-6.178a2.05 2.05 0 0 1 2.9-2.9l4.885 4.884 12.217-12.216a2.05 2.05 0 0 1 2.9 2.9l-13.51 13.51a2.259 2.259 0 0 1-1.6.664\"><\/path><\/g><\/svg><\/div><div class=\"ultp-list-title\">2+ d\u00e9cadas de experiencia en PV<\/div><\/div><\/li>\n<\/ul><\/div>\n\n\n\n<div class=\"wp-block-essential-blocks-button\"><div class=\"eb-parent-wrapper eb-parent-eb-button-lc30e \"><div class=\"eb-button-wrapper eb-button-alignment eb-button-lc30e\"><div class=\"eb-button\"><a class=\"eb-button-anchor\" href=\"https:\/\/fareharbor.com\/embeds\/book\/puertovallartanet\/?full-items=yes&amp;u=2f9380df-9b34-4309-af22-6b69bd81e150&amp;from-ssl=yes&amp;ga4t=&amp;g4=yes&amp;cp=no&amp;csp=no&amp;back=https%3A%2F%2Fpuertovallarta.net%2Ffast_facts%2Fabout-jalisco%2F&amp;language=en-us\" target=\"_blank\" rel=\"noopener\"><i icon=\"fas fa-ship\" class=\"fas fa-ship eb-button-icon eb-button-icon-left hvr-icon\"><\/i><strong>\u00a1Reserva tours en l\u00ednea!<\/strong><\/a><\/div><\/div><\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div  class=\"wp-block-ultimate-post-image ultp-block-5076e4\"><div class=\"ultp-block-wrapper\"><figure class=\"ultp-image-block-wrapper\"><div class=\"ultp-image-block ultp-image-block-none\"><img decoding=\"async\"  class=\"ultp-image\"  alt=\"The Boy on the Seahorse\"  src=\"https:\/\/puertovallarta.net\/wp-content\/uploads\/Los-muertos-beach-seahorse-statue-las-pilitas-b-1200x800-1.webp\" \/><\/div><\/figure><\/div><\/div>\n\n\n<h5 class=\"wp-block-heading has-text-align-center\"><strong>Bolet\u00edn de Puerto Vallarta<\/strong><\/h5>\n\n\n\n<div class=\"wp-block-ultimate-post-advanced-list ultp-block-432848\"><ul class=\"ultp-list-wrapper ultp-list-layout1\">\n<li class=\"wp-block-ultimate-post-list ultp-block-8bfd07\"><div class=\"ultp-list-content\"><div class=\"ultp-listicon-bg\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" enable-background=\"new 0 0 53.76 53.76\" version=\"1.1\" viewBox=\"0 0 53.76 53.76\"><g transform=\"matrix(-1 3.6739e-16 -3.6739e-16 -1 53.76 53.76)\"><path class=\"active-path\" d=\"M44.574,53.76L9.186,26.88L44.574,0V53.76z M13.044,26.88l29.194,22.172V4.709L13.044,26.88z\" data-original=\"#000000\"><\/path><\/g><\/svg><\/div><div class=\"ultp-list-title\">Informaci\u00f3n nueva cada 2 semanas<\/div><\/div><\/li>\n\n\n\n<li class=\"wp-block-ultimate-post-list ultp-block-ee8f32\"><div class=\"ultp-list-content\"><div class=\"ultp-listicon-bg\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" enable-background=\"new 0 0 53.76 53.76\" version=\"1.1\" viewBox=\"0 0 53.76 53.76\"><g transform=\"matrix(-1 3.6739e-16 -3.6739e-16 -1 53.76 53.76)\"><path class=\"active-path\" d=\"M44.574,53.76L9.186,26.88L44.574,0V53.76z M13.044,26.88l29.194,22.172V4.709L13.044,26.88z\" data-original=\"#000000\"><\/path><\/g><\/svg><\/div><div class=\"ultp-list-title\">Contenido gratis, noticias, videos<\/div><\/div><\/li>\n\n\n\n<li class=\"wp-block-ultimate-post-list ultp-block-a86fc1\"><div class=\"ultp-list-content\"><div class=\"ultp-listicon-bg\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" enable-background=\"new 0 0 53.76 53.76\" version=\"1.1\" viewBox=\"0 0 53.76 53.76\"><g transform=\"matrix(-1 3.6739e-16 -3.6739e-16 -1 53.76 53.76)\"><path class=\"active-path\" d=\"M44.574,53.76L9.186,26.88L44.574,0V53.76z M13.044,26.88l29.194,22.172V4.709L13.044,26.88z\" data-original=\"#000000\"><\/path><\/g><\/svg><\/div><div class=\"ultp-list-title\">Cancela tu suscripci\u00f3n en cualquier momento<\/div><\/div><\/li>\n<\/ul><\/div>\n\n\n\n<div class=\"wp-block-essential-blocks-button\"><div class=\"eb-parent-wrapper eb-parent-eb-button-tj90g \"><div class=\"eb-button-wrapper eb-button-alignment eb-button-tj90g\"><div class=\"eb-button\"><a class=\"eb-button-anchor\" href=\"https:\/\/puertovallarta.net\/news\/newsletter\/\" rel=\"noopener\"><i icon=\"far fa-newspaper\" class=\"far fa-newspaper eb-button-icon eb-button-icon-left hvr-icon\"><\/i><strong>\u00a1Suscribete ahora!<\/strong><\/a><\/div><\/div><\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div  class=\"wp-block-ultimate-post-image ultp-block-624b4f\"><div class=\"ultp-block-wrapper\"><figure class=\"ultp-image-block-wrapper\"><div class=\"ultp-image-block ultp-image-block-none\"><img decoding=\"async\"  class=\"ultp-image\"  alt=\"Discover the beauty of Puerto Vallarta with our hotels\"  src=\"https:\/\/puertovallarta.net\/wp-content\/uploads\/Discover-the-beauty-of-Puerto-Vallarta-with-our-hotels.png\" \/><\/div><\/figure><\/div><\/div>\n\n\n<h5 class=\"wp-block-heading has-text-align-center\"><strong><strong>Cont\u00e1ctanos por WhatsApp<\/strong><\/strong><\/h5>\n\n\n\n<div class=\"wp-block-ultimate-post-advanced-list ultp-block-f10905\"><ul class=\"ultp-list-wrapper ultp-list-layout1\">\n<li class=\"wp-block-ultimate-post-list ultp-block-52d52a\"><div class=\"ultp-list-content\"><div class=\"ultp-listicon-bg\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 44 44.26\"><path d=\"M22.311 0A21.555 21.555 0 0 0 .798 21.6a22.259 22.259 0 0 0 3.01 11.067l-3.807 11.6 11.951-3.805A21.656 21.656 0 0 0 44 21.517 21.687 21.687 0 0 0 22.311 0m10.637 29.915a5.156 5.156 0 0 1-3.487 2.414c-4.559.983-9.387-2.593-12.338-5.633a22.894 22.894 0 0 1-5.275-8.046c-.983-2.861.358-8.583 4.381-7.689.984.179 1.163 1.073 1.431 1.878.447 1.162.8 2.235 1.251 3.4a1.514 1.514 0 0 1 0 .894c-.357.805-1.162 1.341-1.7 2.056-.805 1.252 2.324 4.292 3.218 5.1 1.163 1.072 2.951 2.682 4.56 2.861.894.089 2.056-1.7 2.5-2.325.358-.447.626-.536 1.073-.358 1.52.626 2.951 1.52 4.47 2.325a.811.811 0 0 1 .537.983 3.565 3.565 0 0 1-.626 2.146\"><\/path><\/svg><\/div><div class=\"ultp-list-title\">Habla con nuestro experto en reservas<\/div><\/div><\/li>\n\n\n\n<li class=\"wp-block-ultimate-post-list ultp-block-8fe172\"><div class=\"ultp-list-content\"><div class=\"ultp-listicon-bg\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 44 44.26\"><path d=\"M22.311 0A21.555 21.555 0 0 0 .798 21.6a22.259 22.259 0 0 0 3.01 11.067l-3.807 11.6 11.951-3.805A21.656 21.656 0 0 0 44 21.517 21.687 21.687 0 0 0 22.311 0m10.637 29.915a5.156 5.156 0 0 1-3.487 2.414c-4.559.983-9.387-2.593-12.338-5.633a22.894 22.894 0 0 1-5.275-8.046c-.983-2.861.358-8.583 4.381-7.689.984.179 1.163 1.073 1.431 1.878.447 1.162.8 2.235 1.251 3.4a1.514 1.514 0 0 1 0 .894c-.357.805-1.162 1.341-1.7 2.056-.805 1.252 2.324 4.292 3.218 5.1 1.163 1.072 2.951 2.682 4.56 2.861.894.089 2.056-1.7 2.5-2.325.358-.447.626-.536 1.073-.358 1.52.626 2.951 1.52 4.47 2.325a.811.811 0 0 1 .537.983 3.565 3.565 0 0 1-.626 2.146\"><\/path><\/svg><\/div><div class=\"ultp-list-title\">Soporte humano y local<\/div><\/div><\/li>\n\n\n\n<li class=\"wp-block-ultimate-post-list ultp-block-8e7013\"><div class=\"ultp-list-content\"><div class=\"ultp-listicon-bg\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 44 44.26\"><path d=\"M22.311 0A21.555 21.555 0 0 0 .798 21.6a22.259 22.259 0 0 0 3.01 11.067l-3.807 11.6 11.951-3.805A21.656 21.656 0 0 0 44 21.517 21.687 21.687 0 0 0 22.311 0m10.637 29.915a5.156 5.156 0 0 1-3.487 2.414c-4.559.983-9.387-2.593-12.338-5.633a22.894 22.894 0 0 1-5.275-8.046c-.983-2.861.358-8.583 4.381-7.689.984.179 1.163 1.073 1.431 1.878.447 1.162.8 2.235 1.251 3.4a1.514 1.514 0 0 1 0 .894c-.357.805-1.162 1.341-1.7 2.056-.805 1.252 2.324 4.292 3.218 5.1 1.163 1.072 2.951 2.682 4.56 2.861.894.089 2.056-1.7 2.5-2.325.358-.447.626-.536 1.073-.358 1.52.626 2.951 1.52 4.47 2.325a.811.811 0 0 1 .537.983 3.565 3.565 0 0 1-.626 2.146\"><\/path><\/svg><\/div><div class=\"ultp-list-title\">Reserva tours, hoteles, traslado y m\u00e1s<\/div><\/div><\/li>\n<\/ul><\/div>\n\n\n\n<div class=\"wp-block-essential-blocks-button\"><div class=\"eb-parent-wrapper eb-parent-eb-button-dc67i \"><div class=\"eb-button-wrapper eb-button-alignment eb-button-dc67i\"><div class=\"eb-button\"><a class=\"eb-button-anchor\" href=\"https:\/\/wa.me\/523221435305\" target=\"_blank\" rel=\"noopener\"><i icon=\"fab fa-whatsapp\" class=\"fab fa-whatsapp eb-button-icon eb-button-icon-left hvr-icon\"><\/i><strong>Cont\u00e1ctanos<\/strong><\/a><\/div><\/div><\/div><\/div>\n<\/div>\n<\/div>\n\n<\/div>\n<\/div>\n\n<div class=\"gb-container gb-container-0e97ff71\">\n<div class=\"gb-container gb-container-7e09c6ba\">\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-8f761849 wp-block-group-is-layout-flex\">\n<p class=\"wp-block-paragraph\">\u00daltima modificaci\u00f3n:<\/p>\n\n\n<div class=\"wp-block-post-date__modified-date wp-block-post-date\"><time datetime=\"2026-08-21T12:57:47-05:00\">Ago 21, 2026<\/time><\/div><\/div>\n\n\n<div class=\"taxonomy-category wp-block-post-terms has-background has-base-background-color\"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/categoria\/galeria\/\" rel=\"tag\">Galeria<\/a><\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"taxonomy-post_tag wp-block-post-terms\"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/tag\/camaras-web\/\" rel=\"tag\">C\u00e1maras Web<\/a><\/div>\n<\/div>\n\n<div class=\"gb-container gb-container-34759634\">\n\n<p class=\"has-text-align-center wp-block-paragraph\">Comparte este art\u00edculo \u00a1escoge tu plataforma preferida!<\/p>\n\n\n<div\n    class=\"root-eb-social-share-lzify wp-block-essential-blocks-social-share\">\n    <div class=\"eb-parent-wrapper eb-parent-eb-social-share-lzify\">\n        <div\n            class=\"eb-social-share-lzify eb-social-share-wrapper\">\n            <ul class=\"eb-social-shares\">\n                                    <li>\n                        <a class=\"facebook-f-original \"\n                            href=https:\/\/www.facebook.com\/sharer\/sharer.php?u=https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/                            target=\"_blank\" rel=\"nofollow noopener noreferrer\">\n                            <i class=\"fab fa-facebook-f hvr-icon eb-social-share-icon\"><\/i>                                                    <\/a>\n                    <\/li>\n                                    <li>\n                        <a class=\"twitter-original \"\n                            href=https:\/\/twitter.com\/share?text=Webcams\/C\u00e1maras%20Web%20en%20Vivo%20de%20Puerto%20Vallarta%20y%20Bah\u00eda%20de%20Banderas&#038;url=https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/                            target=\"_blank\" rel=\"nofollow noopener noreferrer\">\n                            <i class=\"fab fa-twitter hvr-icon eb-social-share-icon\"><\/i>                                                    <\/a>\n                    <\/li>\n                                    <li>\n                        <a class=\"linkedin-in-original \"\n                            href=https:\/\/www.linkedin.com\/shareArticle?title=Webcams\/C\u00e1maras%20Web%20en%20Vivo%20de%20Puerto%20Vallarta%20y%20Bah\u00eda%20de%20Banderas&#038;url=https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/&#038;mini=true                            target=\"_blank\" rel=\"nofollow noopener noreferrer\">\n                            <i class=\"fab fa-linkedin-in hvr-icon eb-social-share-icon\"><\/i>                                                    <\/a>\n                    <\/li>\n                                    <li>\n                        <a class=\"whatsapp-original \"\n                            href=https:\/\/api.whatsapp.com\/send?text=Webcams\/C\u00e1maras%20Web%20en%20Vivo%20de%20Puerto%20Vallarta%20y%20Bah\u00eda%20de%20Banderas%20https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/                            target=\"_blank\" rel=\"nofollow noopener noreferrer\">\n                            <i class=\"fab fa-whatsapp hvr-icon eb-social-share-icon\"><\/i>                                                    <\/a>\n                    <\/li>\n                                    <li>\n                        <a class=\"pinterest-original \"\n                            href=https:\/\/pinterest.com\/pin\/create\/button\/?url=https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/                            target=\"_blank\" rel=\"nofollow noopener noreferrer\">\n                            <i class=\"fab fa-pinterest hvr-icon eb-social-share-icon\"><\/i>                                                    <\/a>\n                    <\/li>\n                                    <li>\n                        <a class=\"envelope-original \"\n                            href=mailto:?subject=Webcams\/C\u00e1maras%20Web%20en%20Vivo%20de%20Puerto%20Vallarta%20y%20Bah\u00eda%20de%20Banderas&#038;body=https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/                            target=\"_blank\" rel=\"nofollow noopener noreferrer\">\n                            <i class=\"fas fa-envelope hvr-icon eb-social-share-icon\"><\/i>                                                    <\/a>\n                    <\/li>\n                            <\/ul>\n        <\/div>\n    <\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"gb-container gb-container-51b9f657\">\n<div class=\"gb-container gb-container-f2b6cc6e\">\n<div  class=\"ultp-post-grid-block wp-block-ultimate-post-post-grid-6 ultp-block-ff1809\"><div class=\"ultp-block-wrapper\"><div class=\"ultp-loading\"><div class=\"ultp-loading-blocks\" style=\"width:100%;height:100%;\"><div style=\"left: 0;top: 0;animation-delay:0s;\"><\/div><div style=\"left: 21px;top: 0;animation-delay:0.125s;\"><\/div><div style=\"left: 42px;top: 0;animation-delay:0.25s;\"><\/div><div style=\"left: 0;top: 21px;animation-delay:0.875s;\"><\/div><div style=\"left: 42px;top: 21px;animation-delay:0.375s;\"><\/div><div style=\"left: 0;top: 42px;animation-delay:0.75s;\"><\/div><div style=\"left: 42px;top: 42px;animation-delay:0.625s;\"><\/div><div style=\"left: 21px;top: 42px;animation-delay:0.5s;\"><\/div><\/div><\/div><div class=\"ultp-block-items-wrap ultp-block-row ultp-layout2 ultp-block-content-false\"><div class=\"ultp-block-item post-id-36907 ultp-block-item-0\"><div class=\"ultp-block-content-wrap ultp-block-content-overlay\"><div class=\"ultp-block-image ultp-block-image-zoomIn ultp-block-image-overlay ultp-block-image-simgleGradient\"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/aeropuerto-puerto-vallarta\/mapa-traslados-aeropuerto-puerto-vallarta\/\" target=\"_blank\"><img decoding=\"async\"  loading=\"lazy\" alt=\"Image of the category playa los muertos\"  src=\"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/Image-of-the-category-playa-los-muertos.png\" \/><\/a><\/div><div class=\"ultp-block-content ultp-block-content-bottomPosition\"><div class=\"ultp-block-content-inner\"><div class=\"ultp-block-meta ultp-block-meta-dot ultp-block-meta-icon\"><span class=\"ultp-block-date ultp-block-meta-element\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n  <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M3 5.5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-14ZM8 2v3m8-3v3M3 9h18\"\/>\n<\/svg>\nMay 24, 2026<\/span><\/div><h3 class=\"ultp-block-title \"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/aeropuerto-puerto-vallarta\/mapa-traslados-aeropuerto-puerto-vallarta\/\" target=\"_blank\">Mapa de traslados del Aeropuerto de Puerto Vallarta<\/a><\/h3><div class=\"ultp-block-readmore\"><a aria-label=\"Mapa de traslados del Aeropuerto de Puerto Vallarta\" href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/aeropuerto-puerto-vallarta\/mapa-traslados-aeropuerto-puerto-vallarta\/\" target=\"_blank\">Leer m\u00e1s<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n  <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"m9 18 6-6-6-6\"\/>\n<\/svg>\n<\/a><\/div><\/div><\/div><\/div><\/div><div class=\"ultp-block-item post-id-36906 ultp-block-item-1\"><div class=\"ultp-block-content-wrap ultp-block-content-overlay\"><div class=\"ultp-block-image ultp-block-image-zoomIn ultp-block-image-overlay ultp-block-image-simgleGradient\"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/aeropuerto-puerto-vallarta\/llegadas-salidas-pvr\/\" target=\"_blank\"><img decoding=\"async\"  loading=\"lazy\" alt=\"Image of the category playa los muertos\"  src=\"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/Image-of-the-category-playa-los-muertos.png\" \/><\/a><\/div><div class=\"ultp-block-content ultp-block-content-bottomPosition\"><div class=\"ultp-block-content-inner\"><div class=\"ultp-block-meta ultp-block-meta-dot ultp-block-meta-icon\"><span class=\"ultp-block-date ultp-block-meta-element\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n  <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M3 5.5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-14ZM8 2v3m8-3v3M3 9h18\"\/>\n<\/svg>\nMay 24, 2026<\/span><\/div><h3 class=\"ultp-block-title \"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/aeropuerto-puerto-vallarta\/llegadas-salidas-pvr\/\" target=\"_blank\">Llegadas y salidas de PVR<\/a><\/h3><div class=\"ultp-block-readmore\"><a aria-label=\"Llegadas y salidas de PVR\" href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/aeropuerto-puerto-vallarta\/llegadas-salidas-pvr\/\" target=\"_blank\">Leer m\u00e1s<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n  <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"m9 18 6-6-6-6\"\/>\n<\/svg>\n<\/a><\/div><\/div><\/div><\/div><\/div><div class=\"ultp-block-item post-id-36905 ultp-block-item-2\"><div class=\"ultp-block-content-wrap ultp-block-content-overlay\"><div class=\"ultp-block-image ultp-block-image-zoomIn ultp-block-image-overlay ultp-block-image-simgleGradient\"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/aeropuerto-puerto-vallarta\/historia-datos-aeropuerto-puerto-vallarta\/\" target=\"_blank\"><img decoding=\"async\"  loading=\"lazy\" alt=\"Image of the category playa los muertos\"  src=\"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/Image-of-the-category-playa-los-muertos.png\" \/><\/a><\/div><div class=\"ultp-block-content ultp-block-content-bottomPosition\"><div class=\"ultp-block-content-inner\"><div class=\"ultp-block-meta ultp-block-meta-dot ultp-block-meta-icon\"><span class=\"ultp-block-date ultp-block-meta-element\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n  <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M3 5.5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-14ZM8 2v3m8-3v3M3 9h18\"\/>\n<\/svg>\nMay 24, 2026<\/span><\/div><h3 class=\"ultp-block-title \"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/aeropuerto-puerto-vallarta\/historia-datos-aeropuerto-puerto-vallarta\/\" target=\"_blank\">Historia e Informaci\u00f3n del Aeropuerto de Puerto Vallarta<\/a><\/h3><div class=\"ultp-block-readmore\"><a aria-label=\"Historia e Informaci\u00f3n del Aeropuerto de Puerto Vallarta\" href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/aeropuerto-puerto-vallarta\/historia-datos-aeropuerto-puerto-vallarta\/\" target=\"_blank\">Leer m\u00e1s<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n  <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"m9 18 6-6-6-6\"\/>\n<\/svg>\n<\/a><\/div><\/div><\/div><\/div><\/div><div class=\"ultp-block-item post-id-36904 ultp-block-item-3\"><div class=\"ultp-block-content-wrap ultp-block-content-overlay\"><div class=\"ultp-block-image ultp-block-image-zoomIn ultp-block-image-overlay ultp-block-image-simgleGradient\"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/aeropuerto-puerto-vallarta\/consejos-salida-aeropuerto-puerto-vallarta\/\" target=\"_blank\"><img decoding=\"async\"  loading=\"lazy\" alt=\"Image of the category playa los muertos\"  src=\"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/Image-of-the-category-playa-los-muertos.png\" \/><\/a><\/div><div class=\"ultp-block-content ultp-block-content-bottomPosition\"><div class=\"ultp-block-content-inner\"><div class=\"ultp-block-meta ultp-block-meta-dot ultp-block-meta-icon\"><span class=\"ultp-block-date ultp-block-meta-element\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n  <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M3 5.5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-14ZM8 2v3m8-3v3M3 9h18\"\/>\n<\/svg>\nMay 24, 2026<\/span><\/div><h3 class=\"ultp-block-title \"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/aeropuerto-puerto-vallarta\/consejos-salida-aeropuerto-puerto-vallarta\/\" target=\"_blank\">Consejos de salida del Aeropuerto de Puerto Vallarta<\/a><\/h3><div class=\"ultp-block-readmore\"><a aria-label=\"Consejos de salida del Aeropuerto de Puerto Vallarta\" href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/aeropuerto-puerto-vallarta\/consejos-salida-aeropuerto-puerto-vallarta\/\" target=\"_blank\">Leer m\u00e1s<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n  <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"m9 18 6-6-6-6\"\/>\n<\/svg>\n<\/a><\/div><\/div><\/div><\/div><\/div><div class=\"ultp-block-item post-id-36903 ultp-block-item-4\"><div class=\"ultp-block-content-wrap ultp-block-content-overlay\"><div class=\"ultp-block-image ultp-block-image-zoomIn ultp-block-image-overlay ultp-block-image-simgleGradient\"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/aeropuerto-puerto-vallarta\/traslados-aeropuerto-puerto-vallarta\/\" target=\"_blank\"><img decoding=\"async\"  loading=\"lazy\" alt=\"Image of the category playa los muertos\"  src=\"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/Image-of-the-category-playa-los-muertos.png\" \/><\/a><\/div><div class=\"ultp-block-content ultp-block-content-bottomPosition\"><div class=\"ultp-block-content-inner\"><div class=\"ultp-block-meta ultp-block-meta-dot ultp-block-meta-icon\"><span class=\"ultp-block-date ultp-block-meta-element\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n  <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M3 5.5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-14ZM8 2v3m8-3v3M3 9h18\"\/>\n<\/svg>\nMay 24, 2026<\/span><\/div><h3 class=\"ultp-block-title \"><a href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/aeropuerto-puerto-vallarta\/traslados-aeropuerto-puerto-vallarta\/\" target=\"_blank\">Gu\u00eda de traslados del Aeropuerto de Puerto Vallarta<\/a><\/h3><div class=\"ultp-block-readmore\"><a aria-label=\"Gu\u00eda de traslados del Aeropuerto de Puerto Vallarta\" href=\"https:\/\/www.puertovallarta.net\/espanol\/informacion-general\/aeropuerto-puerto-vallarta\/traslados-aeropuerto-puerto-vallarta\/\" target=\"_blank\">Leer m\u00e1s<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n  <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"m9 18 6-6-6-6\"\/>\n<\/svg>\n<\/a><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"pagination-block-html\" aria-hidden=\"true\" style=\"display: none;\"><\/div><\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>EN VIVO &bull; 16 C&aacute;maras Activas Mapa de la Bah&iacute;a C&aacute;maras Web en Vivo de Puerto Vallarta Explora c&aacute;maras en vivo de playas, marina, monta&ntilde;as y atardeceres en Puerto Vallarta y la Bah&iacute;a de Banderas. &#128205; Mapa Interactivo de C&aacute;maras &mdash; Bah&iacute;a de Banderas y Puerto Vallarta &times; Cerrar Mapa No se encontraron c&aacute;maras con &#8230; <a title=\"Webcams\/C\u00e1maras Web en Vivo de Puerto Vallarta y Bah\u00eda de Banderas\" class=\"read-more\" href=\"https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/\" aria-label=\"Leer m\u00e1s sobre Webcams\/C\u00e1maras Web en Vivo de Puerto Vallarta y Bah\u00eda de Banderas\">Averigua m\u00e1s<\/a><\/p>\n","protected":false},"author":1,"featured_media":9377,"parent":0,"menu_order":0,"template":"","categories":[256],"tags":[445],"class_list":["post-9397","gallery","type-gallery","status-publish","has-post-thumbnail","hentry","category-galeria","tag-camaras-web"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Webcams\/C\u00e1maras Web en Vivo de Puerto Vallarta y Bah\u00eda de Banderas<\/title>\n<meta name=\"description\" content=\"Puerto Vallarta cuenta con varias webcams en diferentes areas. Encu\u00e9ntralas todas en un mismo sitio y disfruta de las vistas en tiempo real.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Webcams\/C\u00e1maras Web en Vivo de Puerto Vallarta y Bah\u00eda de Banderas\" \/>\n<meta property=\"og:description\" content=\"Puerto Vallarta cuenta con varias webcams en diferentes areas. Encu\u00e9ntralas todas en un mismo sitio y disfruta de las vistas en tiempo real.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/\" \/>\n<meta property=\"og:site_name\" content=\"Puerto Vallarta Net\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/puerto.vallarta.jalisco.mexico\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-21T17:57:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/punta-negra-beach-live-1200x673-1.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"673\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@puertovallarta2\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/galeria\\\/lista-webcams-puerto-vallarta\\\/\",\"url\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/galeria\\\/lista-webcams-puerto-vallarta\\\/\",\"name\":\"Webcams\\\/C\u00e1maras Web en Vivo de Puerto Vallarta y Bah\u00eda de Banderas\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/galeria\\\/lista-webcams-puerto-vallarta\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/galeria\\\/lista-webcams-puerto-vallarta\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.puertovallarta.net\\\/wp-content\\\/uploads\\\/punta-negra-beach-live-1200x673-1.webp\",\"datePublished\":\"2024-03-01T01:32:06+00:00\",\"dateModified\":\"2026-08-21T17:57:47+00:00\",\"description\":\"Puerto Vallarta cuenta con varias webcams en diferentes areas. Encu\u00e9ntralas todas en un mismo sitio y disfruta de las vistas en tiempo real.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/galeria\\\/lista-webcams-puerto-vallarta\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/galeria\\\/lista-webcams-puerto-vallarta\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/galeria\\\/lista-webcams-puerto-vallarta\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.puertovallarta.net\\\/wp-content\\\/uploads\\\/punta-negra-beach-live-1200x673-1.webp\",\"contentUrl\":\"https:\\\/\\\/www.puertovallarta.net\\\/wp-content\\\/uploads\\\/punta-negra-beach-live-1200x673-1.webp\",\"width\":1200,\"height\":673},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/galeria\\\/lista-webcams-puerto-vallarta\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Webcams\\\/C\u00e1maras Web en Vivo de Puerto Vallarta y Bah\u00eda de Banderas\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/#website\",\"url\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/\",\"name\":\"Puerto Vallarta Net\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/#organization\",\"name\":\"Puerto Vallarta Jalisco M\u00e9xico gu\u00eda de viajes\",\"alternateName\":\"Puerto Vallarta\",\"url\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.puertovallarta.net\\\/wp-content\\\/uploads\\\/Isologo-Full-Color-Big.png\",\"contentUrl\":\"https:\\\/\\\/www.puertovallarta.net\\\/wp-content\\\/uploads\\\/Isologo-Full-Color-Big.png\",\"width\":1200,\"height\":241,\"caption\":\"Puerto Vallarta Jalisco M\u00e9xico gu\u00eda de viajes\"},\"image\":{\"@id\":\"https:\\\/\\\/www.puertovallarta.net\\\/espanol\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/puerto.vallarta.jalisco.mexico\\\/\",\"https:\\\/\\\/x.com\\\/puertovallarta2\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UChg7y8D0-hnR4odYCnLNalQ\\\/\",\"https:\\\/\\\/www.pinterest.com\\\/puertovallarta\\\/\",\"https:\\\/\\\/www.instagram.com\\\/puertovallartamexico\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Webcams\/C\u00e1maras Web en Vivo de Puerto Vallarta y Bah\u00eda de Banderas","description":"Puerto Vallarta cuenta con varias webcams en diferentes areas. Encu\u00e9ntralas todas en un mismo sitio y disfruta de las vistas en tiempo real.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/","og_locale":"es_MX","og_type":"article","og_title":"Webcams\/C\u00e1maras Web en Vivo de Puerto Vallarta y Bah\u00eda de Banderas","og_description":"Puerto Vallarta cuenta con varias webcams en diferentes areas. Encu\u00e9ntralas todas en un mismo sitio y disfruta de las vistas en tiempo real.","og_url":"https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/","og_site_name":"Puerto Vallarta Net","article_publisher":"https:\/\/www.facebook.com\/puerto.vallarta.jalisco.mexico\/","article_modified_time":"2026-08-21T17:57:47+00:00","og_image":[{"width":1200,"height":673,"url":"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/punta-negra-beach-live-1200x673-1.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_site":"@puertovallarta2","twitter_misc":{"Tiempo de lectura":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/","url":"https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/","name":"Webcams\/C\u00e1maras Web en Vivo de Puerto Vallarta y Bah\u00eda de Banderas","isPartOf":{"@id":"https:\/\/www.puertovallarta.net\/espanol\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/#primaryimage"},"image":{"@id":"https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/#primaryimage"},"thumbnailUrl":"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/punta-negra-beach-live-1200x673-1.webp","datePublished":"2024-03-01T01:32:06+00:00","dateModified":"2026-08-21T17:57:47+00:00","description":"Puerto Vallarta cuenta con varias webcams en diferentes areas. Encu\u00e9ntralas todas en un mismo sitio y disfruta de las vistas en tiempo real.","breadcrumb":{"@id":"https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/#primaryimage","url":"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/punta-negra-beach-live-1200x673-1.webp","contentUrl":"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/punta-negra-beach-live-1200x673-1.webp","width":1200,"height":673},{"@type":"BreadcrumbList","@id":"https:\/\/www.puertovallarta.net\/espanol\/galeria\/lista-webcams-puerto-vallarta\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inicio","item":"https:\/\/www.puertovallarta.net\/espanol\/"},{"@type":"ListItem","position":2,"name":"Webcams\/C\u00e1maras Web en Vivo de Puerto Vallarta y Bah\u00eda de Banderas"}]},{"@type":"WebSite","@id":"https:\/\/www.puertovallarta.net\/espanol\/#website","url":"https:\/\/www.puertovallarta.net\/espanol\/","name":"Puerto Vallarta Net","description":"","publisher":{"@id":"https:\/\/www.puertovallarta.net\/espanol\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.puertovallarta.net\/espanol\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.puertovallarta.net\/espanol\/#organization","name":"Puerto Vallarta Jalisco M\u00e9xico gu\u00eda de viajes","alternateName":"Puerto Vallarta","url":"https:\/\/www.puertovallarta.net\/espanol\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.puertovallarta.net\/espanol\/#\/schema\/logo\/image\/","url":"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/Isologo-Full-Color-Big.png","contentUrl":"https:\/\/www.puertovallarta.net\/wp-content\/uploads\/Isologo-Full-Color-Big.png","width":1200,"height":241,"caption":"Puerto Vallarta Jalisco M\u00e9xico gu\u00eda de viajes"},"image":{"@id":"https:\/\/www.puertovallarta.net\/espanol\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/puerto.vallarta.jalisco.mexico\/","https:\/\/x.com\/puertovallarta2","https:\/\/www.youtube.com\/channel\/UChg7y8D0-hnR4odYCnLNalQ\/","https:\/\/www.pinterest.com\/puertovallarta\/","https:\/\/www.instagram.com\/puertovallartamexico\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.puertovallarta.net\/espanol\/wp-json\/wp\/v2\/gallery\/9397","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.puertovallarta.net\/espanol\/wp-json\/wp\/v2\/gallery"}],"about":[{"href":"https:\/\/www.puertovallarta.net\/espanol\/wp-json\/wp\/v2\/types\/gallery"}],"author":[{"embeddable":true,"href":"https:\/\/www.puertovallarta.net\/espanol\/wp-json\/wp\/v2\/users\/1"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.puertovallarta.net\/espanol\/wp-json\/wp\/v2\/media\/9377"}],"wp:attachment":[{"href":"https:\/\/www.puertovallarta.net\/espanol\/wp-json\/wp\/v2\/media?parent=9397"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.puertovallarta.net\/espanol\/wp-json\/wp\/v2\/categories?post=9397"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.puertovallarta.net\/espanol\/wp-json\/wp\/v2\/tags?post=9397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}