{"id":8,"date":"2026-09-20T15:38:06","date_gmt":"2026-09-20T15:38:06","guid":{"rendered":"https:\/\/news.digitalizacionpublica.es\/?page_id=8"},"modified":"2026-09-20T16:03:29","modified_gmt":"2026-09-20T16:03:29","slug":"inicio","status":"publish","type":"page","link":"https:\/\/news.digitalizacionpublica.es\/","title":{"rendered":"Inicio"},"content":{"rendered":"\n<!-- =========================================================\nDIGITALIZACI\u00d3N P\u00daBLICA \u2014 OBSERVATORIO\nLanding editorial din\u00e1mica\nWordPress + Astra + Editor nativo\n========================================================= -->\n\n<style>\n\/* =========================================================\n   RESET LOCAL\n========================================================= *\/\n\n#dp-observatorio,\n#dp-observatorio * {\n    box-sizing: border-box;\n}\n\n#dp-observatorio {\n    --dp-black: #0b0c0e;\n    --dp-ink: #111318;\n    --dp-text: #272a30;\n    --dp-muted: #6d7178;\n    --dp-line: #e3e5e8;\n    --dp-soft: #f5f6f7;\n    --dp-soft-2: #fafafa;\n    --dp-blue: #1457d9;\n    --dp-blue-dark: #0c3ea5;\n    --dp-white: #ffffff;\n    --dp-green: #0d7c66;\n    --dp-max: 1380px;\n\n    width: 100%;\n    margin: 0;\n    padding: 0;\n    background: var(--dp-white);\n    color: var(--dp-text);\n    font-family: Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n                 Roboto, Helvetica, Arial, sans-serif;\n    font-size: 16px;\n    line-height: 1.55;\n}\n\n#dp-observatorio a {\n    color: inherit;\n    text-decoration: none;\n}\n\n#dp-observatorio img {\n    display: block;\n    width: 100%;\n    height: auto;\n}\n\n#dp-observatorio button,\n#dp-observatorio input {\n    font: inherit;\n}\n\n.dp-container {\n    width: min(calc(100% - 48px), var(--dp-max));\n    margin: 0 auto;\n}\n\n\n\/* =========================================================\n   TOP BAR\n========================================================= *\/\n\n.dp-topbar {\n    background: var(--dp-black);\n    color: #fff;\n    font-size: 12px;\n    letter-spacing: .02em;\n}\n\n.dp-topbar-inner {\n    min-height: 38px;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 20px;\n}\n\n.dp-topbar-left,\n.dp-topbar-right {\n    display: flex;\n    align-items: center;\n    gap: 14px;\n}\n\n.dp-live-dot {\n    width: 7px;\n    height: 7px;\n    border-radius: 999px;\n    background: #55e3b3;\n    box-shadow: 0 0 0 4px rgba(85,227,179,.1);\n}\n\n.dp-topbar-label {\n    color: rgba(255,255,255,.66);\n}\n\n.dp-topbar a:hover {\n    color: #bcd0ff;\n}\n\n\n\/* =========================================================\n   BRAND\n========================================================= *\/\n\n.dp-brand-header {\n    background: #fff;\n    border-bottom: 1px solid var(--dp-line);\n}\n\n.dp-brand-inner {\n    min-height: 126px;\n    display: grid;\n    grid-template-columns: 1fr auto 1fr;\n    align-items: center;\n    gap: 20px;\n}\n\n.dp-brand-side {\n    font-size: 12px;\n    color: var(--dp-muted);\n}\n\n.dp-brand-side-right {\n    text-align: right;\n}\n\n.dp-brand {\n    text-align: center;\n}\n\n.dp-brand-eyebrow {\n    margin-bottom: 5px;\n    color: var(--dp-blue);\n    font-size: 11px;\n    font-weight: 800;\n    letter-spacing: .22em;\n    text-transform: uppercase;\n}\n\n.dp-brand-name {\n    margin: 0;\n    color: var(--dp-black);\n    font-family: Georgia, \"Times New Roman\", serif;\n    font-size: clamp(30px, 4vw, 54px);\n    font-weight: 700;\n    line-height: .98;\n    letter-spacing: -.035em;\n}\n\n.dp-brand-subtitle {\n    margin-top: 9px;\n    color: var(--dp-muted);\n    font-size: 12px;\n    letter-spacing: .08em;\n    text-transform: uppercase;\n}\n\n\n\/* =========================================================\n   MAIN NAV\n========================================================= *\/\n\n.dp-nav-wrap {\n    position: sticky;\n    top: 0;\n    z-index: 60;\n    background: rgba(255,255,255,.97);\n    border-bottom: 1px solid var(--dp-line);\n    backdrop-filter: blur(14px);\n}\n\n.dp-nav-inner {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 51px;\n}\n\n.dp-nav {\n    display: flex;\n    align-items: center;\n    gap: 4px;\n    overflow-x: auto;\n    scrollbar-width: none;\n    white-space: nowrap;\n}\n\n.dp-nav::-webkit-scrollbar {\n    display: none;\n}\n\n.dp-nav a {\n    display: inline-flex;\n    align-items: center;\n    min-height: 50px;\n    padding: 0 12px;\n    border-bottom: 2px solid transparent;\n    color: var(--dp-ink);\n    font-size: 13px;\n    font-weight: 650;\n    transition: .18s ease;\n}\n\n.dp-nav a:hover {\n    color: var(--dp-blue);\n    border-bottom-color: var(--dp-blue);\n}\n\n\n\/* =========================================================\n   TOPICS\n========================================================= *\/\n\n.dp-topics {\n    border-bottom: 1px solid var(--dp-line);\n    background: var(--dp-soft-2);\n}\n\n.dp-topics-inner {\n    min-height: 46px;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    overflow-x: auto;\n    scrollbar-width: none;\n}\n\n.dp-topics-inner::-webkit-scrollbar {\n    display: none;\n}\n\n.dp-topics-label {\n    flex: 0 0 auto;\n    margin-right: 7px;\n    color: var(--dp-muted);\n    font-size: 10px;\n    font-weight: 800;\n    letter-spacing: .14em;\n    text-transform: uppercase;\n}\n\n.dp-topic {\n    flex: 0 0 auto;\n    padding: 6px 10px;\n    border: 1px solid #dfe2e6;\n    border-radius: 999px;\n    background: #fff;\n    color: #363a41;\n    font-size: 11px;\n    font-weight: 650;\n    transition: .15s ease;\n}\n\n.dp-topic:hover {\n    border-color: var(--dp-blue);\n    color: var(--dp-blue);\n}\n\n\n\/* =========================================================\n   INTRO\n========================================================= *\/\n\n.dp-intro {\n    padding: 48px 0 25px;\n}\n\n.dp-intro-grid {\n    display: grid;\n    grid-template-columns: minmax(0, 1.55fr) minmax(300px, .45fr);\n    gap: 48px;\n    align-items: end;\n}\n\n.dp-kicker {\n    margin: 0 0 13px;\n    color: var(--dp-blue);\n    font-size: 11px;\n    font-weight: 800;\n    letter-spacing: .15em;\n    text-transform: uppercase;\n}\n\n.dp-intro h1 {\n    max-width: 900px;\n    margin: 0;\n    color: var(--dp-black);\n    font-family: Georgia, \"Times New Roman\", serif;\n    font-size: clamp(39px, 5vw, 69px);\n    font-weight: 700;\n    line-height: 1.01;\n    letter-spacing: -.045em;\n}\n\n.dp-intro-text {\n    max-width: 390px;\n    margin: 0;\n    padding-left: 22px;\n    border-left: 2px solid var(--dp-blue);\n    color: var(--dp-muted);\n    font-size: 14px;\n    line-height: 1.75;\n}\n\n\n\/* =========================================================\n   BREAKING \/ LATEST STRIP\n========================================================= *\/\n\n.dp-breaking {\n    margin-bottom: 34px;\n    border-top: 1px solid var(--dp-black);\n    border-bottom: 1px solid var(--dp-line);\n}\n\n.dp-breaking-inner {\n    min-height: 51px;\n    display: grid;\n    grid-template-columns: auto 1fr auto;\n    align-items: center;\n    gap: 15px;\n}\n\n.dp-breaking-title {\n    color: var(--dp-blue);\n    font-size: 10px;\n    font-weight: 900;\n    letter-spacing: .13em;\n    text-transform: uppercase;\n}\n\n.dp-breaking-link {\n    min-width: 0;\n    overflow: hidden;\n    color: var(--dp-ink);\n    font-size: 13px;\n    font-weight: 650;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n}\n\n.dp-breaking-link:hover {\n    color: var(--dp-blue);\n}\n\n.dp-breaking-date {\n    color: var(--dp-muted);\n    font-size: 11px;\n}\n\n\n\/* =========================================================\n   HERO NEWS GRID\n========================================================= *\/\n\n.dp-hero-grid {\n    display: grid;\n    grid-template-columns: minmax(0, 1.55fr) minmax(300px, .7fr);\n    gap: 30px;\n    padding-bottom: 44px;\n    border-bottom: 1px solid var(--dp-black);\n}\n\n.dp-main-story-image {\n    position: relative;\n    overflow: hidden;\n    aspect-ratio: 16 \/ 9;\n    margin-bottom: 19px;\n    background: #e8eaed;\n}\n\n.dp-main-story-image img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    transition: transform .45s ease;\n}\n\n.dp-main-story:hover .dp-main-story-image img {\n    transform: scale(1.018);\n}\n\n.dp-category {\n    display: inline-flex;\n    margin-bottom: 9px;\n    color: var(--dp-blue);\n    font-size: 10px;\n    font-weight: 850;\n    letter-spacing: .11em;\n    text-transform: uppercase;\n}\n\n.dp-main-title {\n    max-width: 940px;\n    margin: 0 0 12px;\n    color: var(--dp-black);\n    font-family: Georgia, \"Times New Roman\", serif;\n    font-size: clamp(30px, 3.4vw, 47px);\n    line-height: 1.05;\n    letter-spacing: -.03em;\n}\n\n.dp-main-excerpt {\n    max-width: 900px;\n    margin: 0;\n    color: var(--dp-muted);\n    font-size: 15px;\n    line-height: 1.7;\n}\n\n.dp-meta {\n    display: flex;\n    align-items: center;\n    gap: 7px;\n    margin-top: 15px;\n    color: #878b91;\n    font-size: 11px;\n}\n\n.dp-side-stories {\n    display: flex;\n    flex-direction: column;\n    border-top: 1px solid var(--dp-black);\n}\n\n.dp-side-story {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) 112px;\n    gap: 17px;\n    padding: 18px 0;\n    border-bottom: 1px solid var(--dp-line);\n}\n\n.dp-side-story:first-child {\n    padding-top: 16px;\n}\n\n.dp-side-story-image {\n    aspect-ratio: 1 \/ .78;\n    overflow: hidden;\n    background: #e8eaed;\n}\n\n.dp-side-story-image img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n}\n\n.dp-side-title {\n    margin: 0;\n    color: var(--dp-ink);\n    font-family: Georgia, \"Times New Roman\", serif;\n    font-size: 18px;\n    line-height: 1.18;\n    letter-spacing: -.015em;\n}\n\n.dp-side-story:hover .dp-side-title {\n    color: var(--dp-blue);\n}\n\n\n\/* =========================================================\n   SECTION\n========================================================= *\/\n\n.dp-section {\n    padding: 48px 0;\n}\n\n.dp-section + .dp-section {\n    border-top: 1px solid var(--dp-line);\n}\n\n.dp-section-head {\n    display: flex;\n    align-items: end;\n    justify-content: space-between;\n    gap: 20px;\n    margin-bottom: 24px;\n    padding-bottom: 12px;\n    border-bottom: 2px solid var(--dp-black);\n}\n\n.dp-section-title {\n    margin: 0;\n    color: var(--dp-black);\n    font-family: Georgia, \"Times New Roman\", serif;\n    font-size: 27px;\n    letter-spacing: -.025em;\n}\n\n.dp-section-link {\n    color: var(--dp-blue);\n    font-size: 11px;\n    font-weight: 800;\n    text-transform: uppercase;\n    letter-spacing: .06em;\n}\n\n.dp-section-link:hover {\n    text-decoration: underline;\n}\n\n\n\/* =========================================================\n   CARDS\n========================================================= *\/\n\n.dp-card-grid {\n    display: grid;\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n    gap: 23px;\n}\n\n.dp-card {\n    min-width: 0;\n}\n\n.dp-card-image {\n    aspect-ratio: 16 \/ 10;\n    margin-bottom: 14px;\n    overflow: hidden;\n    background: #e8eaed;\n}\n\n.dp-card-image img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    transition: transform .35s ease;\n}\n\n.dp-card:hover .dp-card-image img {\n    transform: scale(1.02);\n}\n\n.dp-card-title {\n    margin: 0;\n    color: var(--dp-ink);\n    font-family: Georgia, \"Times New Roman\", serif;\n    font-size: 19px;\n    line-height: 1.18;\n    letter-spacing: -.015em;\n}\n\n.dp-card:hover .dp-card-title {\n    color: var(--dp-blue);\n}\n\n.dp-card-date {\n    margin-top: 10px;\n    color: #8b8e94;\n    font-size: 10px;\n}\n\n\n\/* =========================================================\n   EDITORIAL FEATURE\n========================================================= *\/\n\n.dp-feature-band {\n    background: var(--dp-black);\n    color: #fff;\n}\n\n.dp-feature-band .dp-section {\n    padding-top: 55px;\n    padding-bottom: 58px;\n}\n\n.dp-feature-band .dp-section-head {\n    border-bottom-color: rgba(255,255,255,.34);\n}\n\n.dp-feature-band .dp-section-title {\n    color: #fff;\n}\n\n.dp-feature-band .dp-section-link {\n    color: #a9c5ff;\n}\n\n.dp-feature-grid {\n    display: grid;\n    grid-template-columns: minmax(0, 1.25fr) minmax(320px, .75fr);\n    gap: 42px;\n}\n\n.dp-feature-main {\n    display: grid;\n    grid-template-columns: minmax(0, 1.1fr) minmax(280px, .9fr);\n    gap: 28px;\n    align-items: center;\n}\n\n.dp-feature-image {\n    aspect-ratio: 4 \/ 3;\n    overflow: hidden;\n    background: #25272b;\n}\n\n.dp-feature-image img {\n    height: 100%;\n    object-fit: cover;\n}\n\n.dp-feature-copy .dp-category {\n    color: #8eb5ff;\n}\n\n.dp-feature-title {\n    margin: 0;\n    color: #fff;\n    font-family: Georgia, \"Times New Roman\", serif;\n    font-size: clamp(28px, 3vw, 43px);\n    line-height: 1.06;\n    letter-spacing: -.025em;\n}\n\n.dp-feature-list {\n    border-top: 1px solid rgba(255,255,255,.22);\n}\n\n.dp-feature-list a {\n    display: block;\n    padding: 16px 0;\n    border-bottom: 1px solid rgba(255,255,255,.17);\n}\n\n.dp-feature-list-title {\n    margin: 0;\n    color: #fff;\n    font-family: Georgia, \"Times New Roman\", serif;\n    font-size: 18px;\n    line-height: 1.2;\n}\n\n.dp-feature-list a:hover .dp-feature-list-title {\n    color: #a9c5ff;\n}\n\n\n\/* =========================================================\n   TERRITORIES\n========================================================= *\/\n\n.dp-territories {\n    background: var(--dp-soft);\n}\n\n.dp-territory-grid {\n    display: grid;\n    grid-template-columns: repeat(6, minmax(0, 1fr));\n    gap: 10px;\n}\n\n.dp-territory {\n    position: relative;\n    min-height: 84px;\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n    padding: 15px;\n    background: #fff;\n    border: 1px solid var(--dp-line);\n    transition: .18s ease;\n}\n\n.dp-territory:hover {\n    border-color: #aeb8ca;\n    transform: translateY(-2px);\n    box-shadow: 0 8px 25px rgba(13,18,28,.05);\n}\n\n.dp-territory-code {\n    color: var(--dp-blue);\n    font-size: 10px;\n    font-weight: 900;\n    letter-spacing: .1em;\n}\n\n.dp-territory-name {\n    color: var(--dp-ink);\n    font-size: 13px;\n    font-weight: 700;\n}\n\n\n\/* =========================================================\n   OBSERVATORY VALUE PROPOSITION\n========================================================= *\/\n\n.dp-about {\n    padding: 67px 0;\n    border-top: 1px solid var(--dp-line);\n}\n\n.dp-about-grid {\n    display: grid;\n    grid-template-columns: .9fr 1.1fr;\n    gap: 70px;\n    align-items: start;\n}\n\n.dp-about-label {\n    color: var(--dp-blue);\n    font-size: 10px;\n    font-weight: 900;\n    letter-spacing: .14em;\n    text-transform: uppercase;\n}\n\n.dp-about h2 {\n    margin: 10px 0 0;\n    max-width: 550px;\n    color: var(--dp-black);\n    font-family: Georgia, \"Times New Roman\", serif;\n    font-size: clamp(30px, 4vw, 48px);\n    line-height: 1.06;\n    letter-spacing: -.035em;\n}\n\n.dp-about-copy {\n    color: var(--dp-muted);\n    font-size: 15px;\n    line-height: 1.8;\n}\n\n.dp-about-copy p:first-child {\n    margin-top: 0;\n}\n\n.dp-about-points {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0,1fr));\n    gap: 13px;\n    margin-top: 26px;\n}\n\n.dp-about-point {\n    padding: 16px 18px;\n    border: 1px solid var(--dp-line);\n    background: var(--dp-soft-2);\n}\n\n.dp-about-point strong {\n    display: block;\n    margin-bottom: 3px;\n    color: var(--dp-ink);\n    font-size: 13px;\n}\n\n.dp-about-point span {\n    color: var(--dp-muted);\n    font-size: 12px;\n}\n\n\n\/* =========================================================\n   CTA\n========================================================= *\/\n\n.dp-cta {\n    padding: 54px 0;\n    background: #eef3fc;\n    border-top: 1px solid #dbe3f2;\n    border-bottom: 1px solid #dbe3f2;\n}\n\n.dp-cta-inner {\n    display: grid;\n    grid-template-columns: minmax(0,1fr) auto;\n    gap: 50px;\n    align-items: center;\n}\n\n.dp-cta-kicker {\n    margin-bottom: 8px;\n    color: var(--dp-blue);\n    font-size: 10px;\n    font-weight: 900;\n    letter-spacing: .13em;\n    text-transform: uppercase;\n}\n\n.dp-cta h2 {\n    max-width: 760px;\n    margin: 0 0 9px;\n    color: var(--dp-black);\n    font-family: Georgia, \"Times New Roman\", serif;\n    font-size: clamp(27px, 3.4vw, 42px);\n    line-height: 1.08;\n    letter-spacing: -.025em;\n}\n\n.dp-cta p {\n    max-width: 760px;\n    margin: 0;\n    color: var(--dp-muted);\n    font-size: 14px;\n}\n\n.dp-btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 48px;\n    padding: 0 21px;\n    border: 1px solid var(--dp-black);\n    background: var(--dp-black);\n    color: #fff !important;\n    font-size: 12px;\n    font-weight: 800;\n    white-space: nowrap;\n    transition: .18s ease;\n}\n\n.dp-btn:hover {\n    background: var(--dp-blue);\n    border-color: var(--dp-blue);\n}\n\n\n\/* =========================================================\n   FOOTER NOTE\n========================================================= *\/\n\n.dp-observer-footer {\n    padding: 25px 0;\n    background: #fff;\n}\n\n.dp-observer-footer-inner {\n    display: flex;\n    justify-content: space-between;\n    gap: 30px;\n    color: #858990;\n    font-size: 11px;\n}\n\n.dp-observer-footer a:hover {\n    color: var(--dp-blue);\n}\n\n\n\/* =========================================================\n   LOADING \/ SKELETONS\n========================================================= *\/\n\n.dp-skeleton {\n    position: relative;\n    overflow: hidden;\n    background: #eceef0;\n}\n\n.dp-skeleton::after {\n    content: \"\";\n    position: absolute;\n    inset: 0;\n    transform: translateX(-100%);\n    background: linear-gradient(\n        90deg,\n        transparent,\n        rgba(255,255,255,.6),\n        transparent\n    );\n    animation: dpShimmer 1.2s infinite;\n}\n\n@keyframes dpShimmer {\n    100% {\n        transform: translateX(100%);\n    }\n}\n\n.dp-empty {\n    padding: 30px 0;\n    color: var(--dp-muted);\n    font-size: 13px;\n}\n\n\n\/* =========================================================\n   RESPONSIVE\n========================================================= *\/\n\n@media (max-width: 1120px) {\n    .dp-card-grid {\n        grid-template-columns: repeat(2, minmax(0,1fr));\n    }\n\n    .dp-territory-grid {\n        grid-template-columns: repeat(4, minmax(0,1fr));\n    }\n\n    .dp-feature-main {\n        grid-template-columns: 1fr;\n    }\n}\n\n@media (max-width: 900px) {\n    .dp-container {\n        width: min(calc(100% - 32px), var(--dp-max));\n    }\n\n    .dp-brand-inner {\n        grid-template-columns: 1fr;\n        min-height: 115px;\n    }\n\n    .dp-brand-side {\n        display: none;\n    }\n\n    .dp-intro-grid,\n    .dp-hero-grid,\n    .dp-feature-grid,\n    .dp-about-grid,\n    .dp-cta-inner {\n        grid-template-columns: 1fr;\n    }\n\n    .dp-intro-text {\n        max-width: none;\n        margin-top: 10px;\n    }\n\n    .dp-hero-grid {\n        gap: 34px;\n    }\n\n    .dp-side-stories {\n        display: grid;\n        grid-template-columns: repeat(2, minmax(0,1fr));\n        gap: 0 24px;\n    }\n\n    .dp-territory-grid {\n        grid-template-columns: repeat(3, minmax(0,1fr));\n    }\n\n    .dp-cta-inner {\n        gap: 24px;\n    }\n}\n\n@media (max-width: 640px) {\n    .dp-container {\n        width: min(calc(100% - 24px), var(--dp-max));\n    }\n\n    .dp-topbar-right {\n        display: none;\n    }\n\n    .dp-topbar-inner {\n        justify-content: center;\n    }\n\n    .dp-brand-inner {\n        min-height: 105px;\n    }\n\n    .dp-brand-name {\n        font-size: 34px;\n    }\n\n    .dp-brand-subtitle {\n        font-size: 10px;\n    }\n\n    .dp-nav-inner {\n        justify-content: flex-start;\n    }\n\n    .dp-nav {\n        width: 100%;\n        justify-content: flex-start;\n    }\n\n    .dp-intro {\n        padding-top: 34px;\n    }\n\n    .dp-intro h1 {\n        font-size: 41px;\n    }\n\n    .dp-breaking-inner {\n        grid-template-columns: auto 1fr;\n    }\n\n    .dp-breaking-date {\n        display: none;\n    }\n\n    .dp-main-title {\n        font-size: 31px;\n    }\n\n    .dp-side-stories {\n        display: block;\n    }\n\n    .dp-card-grid {\n        grid-template-columns: 1fr;\n    }\n\n    .dp-card {\n        display: grid;\n        grid-template-columns: 120px 1fr;\n        gap: 15px;\n        padding-bottom: 18px;\n        border-bottom: 1px solid var(--dp-line);\n    }\n\n    .dp-card-image {\n        margin: 0;\n        aspect-ratio: 1 \/ .78;\n    }\n\n    .dp-card-title {\n        font-size: 18px;\n    }\n\n    .dp-feature-main {\n        display: block;\n    }\n\n    .dp-feature-image {\n        margin-bottom: 22px;\n    }\n\n    .dp-territory-grid {\n        grid-template-columns: repeat(2, minmax(0,1fr));\n    }\n\n    .dp-about-points {\n        grid-template-columns: 1fr;\n    }\n\n    .dp-observer-footer-inner {\n        flex-direction: column;\n        gap: 8px;\n    }\n}\n<\/style>\n\n\n<div id=\"dp-observatorio\">\n\n    <!-- TOP BAR -->\n    <div class=\"dp-topbar\">\n        <div class=\"dp-container dp-topbar-inner\">\n\n            <div class=\"dp-topbar-left\">\n                <span class=\"dp-live-dot\"><\/span>\n                <span class=\"dp-topbar-label\">Observatorio de Digitalizaci\u00f3n P\u00fablica<\/span>\n            <\/div>\n\n            <div class=\"dp-topbar-right\">\n                <span id=\"dp-current-date\"><\/span>\n                <span>\u00b7<\/span>\n                <a href=\"\/\">DigitalizacionPublica.es<\/a>\n            <\/div>\n\n        <\/div>\n    <\/div>\n\n\n    <!-- BRAND -->\n    <header class=\"dp-brand-header\">\n        <div class=\"dp-container dp-brand-inner\">\n\n            <div class=\"dp-brand-side\">\n                Administraci\u00f3n \u00b7 Tecnolog\u00eda \u00b7 Contrataci\u00f3n\n            <\/div>\n\n            <div class=\"dp-brand\">\n                <div class=\"dp-brand-eyebrow\">Observatorio<\/div>\n                <div class=\"dp-brand-name\">Digitalizaci\u00f3n P\u00fablica<\/div>\n                <div class=\"dp-brand-subtitle\">\n                    Administraci\u00f3n \u00b7 Innovaci\u00f3n \u00b7 Sector p\u00fablico\n                <\/div>\n            <\/div>\n\n            <div class=\"dp-brand-side dp-brand-side-right\">\n                Informaci\u00f3n especializada\n            <\/div>\n\n        <\/div>\n    <\/header>\n\n\n    <!-- NAV -->\n    <div class=\"dp-nav-wrap\">\n        <div class=\"dp-container dp-nav-inner\">\n\n            <nav class=\"dp-nav\" aria-label=\"Observatorio\">\n                <a href=\"#dp-portada\">Portada<\/a>\n                <a href=\"\/category\/administracion-electronica\/\">Administraci\u00f3n digital<\/a>\n                <a href=\"\/category\/contratacion-publica\/\">Contrataci\u00f3n p\u00fablica<\/a>\n                <a href=\"\/category\/administracion-local\/\">Administraci\u00f3n local<\/a>\n                <a href=\"#dp-ia\">Inteligencia artificial<\/a>\n                <a href=\"\/category\/ciberseguridad\/\">Ciberseguridad<\/a>\n                <a href=\"\/category\/normativa-publica\/\">Normativa<\/a>\n                <a href=\"\/category\/fondos-europeos\/\">Fondos<\/a>\n                <a href=\"#dp-territorios\">Territorios<\/a>\n            <\/nav>\n\n        <\/div>\n    <\/div>\n\n\n    <!-- TOPICS -->\n    <div class=\"dp-topics\">\n        <div class=\"dp-container dp-topics-inner\">\n            <span class=\"dp-topics-label\">Temas<\/span>\n            <a class=\"dp-topic\" href=\"\/?s=ENS\">ENS<\/a>\n            <a class=\"dp-topic\" href=\"\/?s=ENI\">ENI<\/a>\n            <a class=\"dp-topic\" href=\"\/?s=licitaciones\">Licitaciones TIC<\/a>\n            <a class=\"dp-topic\" href=\"\/?s=sede+electr\u00f3nica\">Sede electr\u00f3nica<\/a>\n            <a class=\"dp-topic\" href=\"\/?s=inteligencia+artificial\">Inteligencia artificial<\/a>\n            <a class=\"dp-topic\" href=\"\/?s=transparencia\">Transparencia<\/a>\n            <a class=\"dp-topic\" href=\"\/?s=fondos+europeos\">Fondos europeos<\/a>\n            <a class=\"dp-topic\" href=\"\/?s=interoperabilidad\">Interoperabilidad<\/a>\n        <\/div>\n    <\/div>\n\n\n    <!-- INTRO -->\n    <section class=\"dp-intro\" id=\"dp-portada\">\n        <div class=\"dp-container dp-intro-grid\">\n\n            <div>\n                <p class=\"dp-kicker\">Informaci\u00f3n para una Administraci\u00f3n m\u00e1s digital<\/p>\n                <h1>\n                    Actualidad, an\u00e1lisis y conocimiento sobre transformaci\u00f3n p\u00fablica.\n                <\/h1>\n            <\/div>\n\n            <p class=\"dp-intro-text\">\n                Seguimiento especializado de administraci\u00f3n electr\u00f3nica,\n                contrataci\u00f3n p\u00fablica, inteligencia artificial, normativa,\n                ciberseguridad, financiaci\u00f3n y modernizaci\u00f3n de los servicios p\u00fablicos.\n            <\/p>\n\n        <\/div>\n    <\/section>\n\n\n    <!-- LATEST STRIP -->\n    <div class=\"dp-container dp-breaking\">\n        <div class=\"dp-breaking-inner\">\n\n            <span class=\"dp-breaking-title\">\u00daltima publicaci\u00f3n<\/span>\n\n            <a id=\"dp-breaking-link\"\n               class=\"dp-breaking-link\"\n               href=\"#\"\n               aria-live=\"polite\">\n                Cargando actualidad del Observatorio&#8230;\n            <\/a>\n\n            <span id=\"dp-breaking-date\" class=\"dp-breaking-date\"><\/span>\n\n        <\/div>\n    <\/div>\n\n\n    <!-- HERO -->\n    <section class=\"dp-container dp-hero-grid\">\n\n        <article id=\"dp-main-story\" class=\"dp-main-story\">\n\n            <div class=\"dp-main-story-image dp-skeleton\"><\/div>\n\n            <span class=\"dp-category\">Actualidad<\/span>\n\n            <h2 class=\"dp-main-title\">\n                Cargando contenido&#8230;\n            <\/h2>\n\n            <p class=\"dp-main-excerpt\">\n                Estamos recuperando las \u00faltimas publicaciones de Digitalizaci\u00f3n P\u00fablica.\n            <\/p>\n\n        <\/article>\n\n        <aside id=\"dp-side-stories\" class=\"dp-side-stories\"><\/aside>\n\n    <\/section>\n\n\n    <!-- LATEST -->\n    <section class=\"dp-section\">\n        <div class=\"dp-container\">\n\n            <div class=\"dp-section-head\">\n                <h2 class=\"dp-section-title\">\u00daltimas publicaciones<\/h2>\n                <a href=\"\/blog\/\" class=\"dp-section-link\">Ver todas \u2192<\/a>\n            <\/div>\n\n            <div id=\"dp-latest-grid\" class=\"dp-card-grid\"><\/div>\n\n        <\/div>\n    <\/section>\n\n\n    <!-- CONTRATACI\u00d3N -->\n    <section class=\"dp-section\">\n        <div class=\"dp-container\">\n\n            <div class=\"dp-section-head\">\n                <h2 class=\"dp-section-title\">Contrataci\u00f3n p\u00fablica<\/h2>\n                <a href=\"\/category\/contratacion-publica\/\"\n                   class=\"dp-section-link\">\n                    Ver secci\u00f3n \u2192\n                <\/a>\n            <\/div>\n\n            <div id=\"dp-contract-grid\" class=\"dp-card-grid\"><\/div>\n\n        <\/div>\n    <\/section>\n\n\n    <!-- IA \/ FEATURE DARK -->\n    <section id=\"dp-ia\" class=\"dp-feature-band\">\n        <div class=\"dp-container dp-section\">\n\n            <div class=\"dp-section-head\">\n                <h2 class=\"dp-section-title\">\n                    Inteligencia artificial y automatizaci\u00f3n\n                <\/h2>\n\n                <a href=\"\/?s=inteligencia+artificial\"\n                   class=\"dp-section-link\">\n                    Ver contenidos \u2192\n                <\/a>\n            <\/div>\n\n            <div class=\"dp-feature-grid\">\n\n                <div id=\"dp-ai-main\"><\/div>\n\n                <div id=\"dp-ai-list\"\n                     class=\"dp-feature-list\"><\/div>\n\n            <\/div>\n\n        <\/div>\n    <\/section>\n\n\n    <!-- ADMINISTRACI\u00d3N LOCAL -->\n    <section class=\"dp-section\">\n        <div class=\"dp-container\">\n\n            <div class=\"dp-section-head\">\n                <h2 class=\"dp-section-title\">Administraci\u00f3n local<\/h2>\n\n                <a href=\"\/category\/administracion-local\/\"\n                   class=\"dp-section-link\">\n                    Ver secci\u00f3n \u2192\n                <\/a>\n            <\/div>\n\n            <div id=\"dp-local-grid\" class=\"dp-card-grid\"><\/div>\n\n        <\/div>\n    <\/section>\n\n\n    <!-- TERRITORIOS -->\n    <section id=\"dp-territorios\"\n             class=\"dp-territories\">\n\n        <div class=\"dp-container dp-section\">\n\n            <div class=\"dp-section-head\">\n                <h2 class=\"dp-section-title\">Digitalizaci\u00f3n por territorios<\/h2>\n                <a href=\"\/territorios\/\"\n                   class=\"dp-section-link\">\n                    Todos los territorios \u2192\n                <\/a>\n            <\/div>\n\n            <div class=\"dp-territory-grid\">\n\n                <a class=\"dp-territory\" href=\"\/territorios\/galicia\/\">\n                    <span class=\"dp-territory-code\">GAL<\/span>\n                    <span class=\"dp-territory-name\">Galicia<\/span>\n                <\/a>\n\n                <a class=\"dp-territory\" href=\"\/territorios\/comunidad-de-madrid\/\">\n                    <span class=\"dp-territory-code\">MAD<\/span>\n                    <span class=\"dp-territory-name\">Comunidad de Madrid<\/span>\n                <\/a>\n\n                <a class=\"dp-territory\" href=\"\/territorios\/cataluna\/\">\n                    <span class=\"dp-territory-code\">CAT<\/span>\n                    <span class=\"dp-territory-name\">Catalu\u00f1a<\/span>\n                <\/a>\n\n                <a class=\"dp-territory\" href=\"\/territorios\/andalucia\/\">\n                    <span class=\"dp-territory-code\">AND<\/span>\n                    <span class=\"dp-territory-name\">Andaluc\u00eda<\/span>\n                <\/a>\n\n                <a class=\"dp-territory\" href=\"\/territorios\/comunidad-valenciana\/\">\n                    <span class=\"dp-territory-code\">CVA<\/span>\n                    <span class=\"dp-territory-name\">Comunidad Valenciana<\/span>\n                <\/a>\n\n                <a class=\"dp-territory\" href=\"\/territorios\/pais-vasco\/\">\n                    <span class=\"dp-territory-code\">EUS<\/span>\n                    <span class=\"dp-territory-name\">Pa\u00eds Vasco<\/span>\n                <\/a>\n\n                <a class=\"dp-territory\" href=\"\/territorios\/castilla-y-leon\/\">\n                    <span class=\"dp-territory-code\">CYL<\/span>\n                    <span class=\"dp-territory-name\">Castilla y Le\u00f3n<\/span>\n                <\/a>\n\n                <a class=\"dp-territory\" href=\"\/territorios\/castilla-la-mancha\/\">\n                    <span class=\"dp-territory-code\">CLM<\/span>\n                    <span class=\"dp-territory-name\">Castilla-La Mancha<\/span>\n                <\/a>\n\n                <a class=\"dp-territory\" href=\"\/territorios\/aragon\/\">\n                    <span class=\"dp-territory-code\">ARA<\/span>\n                    <span class=\"dp-territory-name\">Arag\u00f3n<\/span>\n                <\/a>\n\n                <a class=\"dp-territory\" href=\"\/territorios\/asturias\/\">\n                    <span class=\"dp-territory-code\">AST<\/span>\n                    <span class=\"dp-territory-name\">Asturias<\/span>\n                <\/a>\n\n                <a class=\"dp-territory\" href=\"\/territorios\/islas-canarias\/\">\n                    <span class=\"dp-territory-code\">CAN<\/span>\n                    <span class=\"dp-territory-name\">Islas Canarias<\/span>\n                <\/a>\n\n                <a class=\"dp-territory\" href=\"\/territorios\/islas-baleares\/\">\n                    <span class=\"dp-territory-code\">BAL<\/span>\n                    <span class=\"dp-territory-name\">Islas Baleares<\/span>\n                <\/a>\n\n            <\/div>\n\n        <\/div>\n    <\/section>\n\n\n    <!-- ABOUT -->\n    <section class=\"dp-about\">\n\n        <div class=\"dp-container dp-about-grid\">\n\n            <div>\n                <span class=\"dp-about-label\">\n                    Sobre el Observatorio\n                <\/span>\n\n                <h2>\n                    Informaci\u00f3n p\u00fablica con contexto, fuentes y aplicaci\u00f3n pr\u00e1ctica.\n                <\/h2>\n            <\/div>\n\n            <div class=\"dp-about-copy\">\n\n                <p>\n                    El Observatorio de Digitalizaci\u00f3n P\u00fablica analiza la evoluci\u00f3n\n                    tecnol\u00f3gica y normativa del sector p\u00fablico con una orientaci\u00f3n\n                    pr\u00e1ctica para administraciones, responsables p\u00fablicos,\n                    profesionales y proveedores especializados.\n                <\/p>\n\n                <p>\n                    Priorizamos fuentes oficiales, documentaci\u00f3n p\u00fablica y contexto\n                    verificable para explicar no solo qu\u00e9 ocurre, sino qu\u00e9 implica\n                    para la modernizaci\u00f3n de las Administraciones P\u00fablicas.\n                <\/p>\n\n                <div class=\"dp-about-points\">\n\n                    <div class=\"dp-about-point\">\n                        <strong>Fuentes verificables<\/strong>\n                        <span>Organismos, normativa y documentaci\u00f3n oficial.<\/span>\n                    <\/div>\n\n                    <div class=\"dp-about-point\">\n                        <strong>Aplicaci\u00f3n pr\u00e1ctica<\/strong>\n                        <span>Impacto real para entidades y proyectos p\u00fablicos.<\/span>\n                    <\/div>\n\n                    <div class=\"dp-about-point\">\n                        <strong>Especializaci\u00f3n<\/strong>\n                        <span>Administraci\u00f3n, contrataci\u00f3n y tecnolog\u00eda p\u00fablica.<\/span>\n                    <\/div>\n\n                    <div class=\"dp-about-point\">\n                        <strong>Actualizaci\u00f3n continua<\/strong>\n                        <span>Actualidad y conocimiento evergreen.<\/span>\n                    <\/div>\n\n                <\/div>\n\n            <\/div>\n\n        <\/div>\n\n    <\/section>\n\n\n    <!-- CTA -->\n    <section class=\"dp-cta\">\n\n        <div class=\"dp-container dp-cta-inner\">\n\n            <div>\n\n                <div class=\"dp-cta-kicker\">\n                    Proyectos de digitalizaci\u00f3n\n                <\/div>\n\n                <h2>\n                    \u00bfEst\u00e1s preparando un proyecto tecnol\u00f3gico en una entidad p\u00fablica?\n                <\/h2>\n\n                <p>\n                    Podemos ayudarte a definir alcance, requisitos, documentaci\u00f3n\n                    t\u00e9cnica y una hoja de ruta clara antes de iniciar la ejecuci\u00f3n\n                    o contrataci\u00f3n.\n                <\/p>\n\n            <\/div>\n\n            <a href=\"\/contacto\/\"\n               class=\"dp-btn\">\n                Solicitar diagn\u00f3stico \u2192\n            <\/a>\n\n        <\/div>\n\n    <\/section>\n\n\n    <!-- PROJECT NOTE -->\n    <div class=\"dp-observer-footer\">\n\n        <div class=\"dp-container dp-observer-footer-inner\">\n\n            <span>\n                DigitalizacionPublica.es forma parte del ecosistema\n                de proyectos de BlackHold Consulting.\n            <\/span>\n\n            <span>\n                <a href=\"\/\">Digitalizaci\u00f3n P\u00fablica<\/a>\n                \u00b7\n                <a href=\"\/contacto\/\">Contacto<\/a>\n            <\/span>\n\n        <\/div>\n\n    <\/div>\n\n<\/div>\n\n\n<script>\n(function () {\n\n    \"use strict\";\n\n    \/* =====================================================\n       CONFIG\n    ===================================================== *\/\n\n    const API =\n        window.location.origin +\n        \"\/wp-json\/wp\/v2\/posts?per_page=40&_embed=1&status=publish\";\n\n    const FALLBACK_IMAGE =\n        \"data:image\/svg+xml;charset=UTF-8,\" +\n        encodeURIComponent(\n            '<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"1200\" height=\"675\">' +\n            '<rect width=\"100%\" height=\"100%\" fill=\"#e9ebee\"\/>' +\n            '<text x=\"50%\" y=\"50%\" dominant-baseline=\"middle\" text-anchor=\"middle\" ' +\n            'font-family=\"Arial\" font-size=\"34\" fill=\"#69707a\">Digitalizaci\u00f3n P\u00fablica<\/text>' +\n            '<\/svg>'\n        );\n\n\n    \/* =====================================================\n       HELPERS\n    ===================================================== *\/\n\n    const stripHTML = (html) => {\n        const el = document.createElement(\"div\");\n        el.innerHTML = html || \"\";\n        return el.textContent || el.innerText || \"\";\n    };\n\n\n    const esc = (value) => {\n        return String(value || \"\")\n            .replace(\/&\/g, \"&amp;\")\n            .replace(\/<\/g, \"&lt;\")\n            .replace(\/>\/g, \"&gt;\")\n            .replace(\/\"\/g, \"&quot;\")\n            .replace(\/'\/g, \"&#039;\");\n    };\n\n\n    const formatDate = (date) => {\n        if (!date) return \"\";\n\n        return new Intl.DateTimeFormat(\n            \"es-ES\",\n            {\n                day: \"numeric\",\n                month: \"long\",\n                year: \"numeric\"\n            }\n        ).format(new Date(date));\n    };\n\n\n    const shortDate = (date) => {\n        if (!date) return \"\";\n\n        return new Intl.DateTimeFormat(\n            \"es-ES\",\n            {\n                day: \"numeric\",\n                month: \"short\"\n            }\n        ).format(new Date(date));\n    };\n\n\n    const imageOf = (post) => {\n        try {\n            return (\n                post._embedded[\"wp:featuredmedia\"][0]\n                    .media_details.sizes.large.source_url\n                ||\n                post._embedded[\"wp:featuredmedia\"][0].source_url\n            );\n        } catch (e) {\n            try {\n                return post._embedded[\"wp:featuredmedia\"][0].source_url;\n            } catch (e2) {\n                return FALLBACK_IMAGE;\n            }\n        }\n    };\n\n\n    const categoriesOf = (post) => {\n        try {\n            const termGroups = post._embedded[\"wp:term\"] || [];\n            return termGroups.flat().filter(term => term.taxonomy === \"category\");\n        } catch (e) {\n            return [];\n        }\n    };\n\n\n    const mainCategory = (post) => {\n        const categories = categoriesOf(post);\n\n        if (!categories.length) {\n            return \"Digitalizaci\u00f3n p\u00fablica\";\n        }\n\n        const useful = categories.find(cat =>\n            cat.slug !== \"uncategorized\"\n        );\n\n        return useful ? useful.name : \"Digitalizaci\u00f3n p\u00fablica\";\n    };\n\n\n    const hasCategory = (post, slugs) => {\n        const categories = categoriesOf(post).map(c => c.slug);\n        return slugs.some(slug => categories.includes(slug));\n    };\n\n\n    const matchesText = (post, words) => {\n        const haystack =\n            (\n                stripHTML(post.title.rendered) +\n                \" \" +\n                stripHTML(post.excerpt.rendered) +\n                \" \" +\n                categoriesOf(post).map(c => c.name).join(\" \")\n            ).toLowerCase();\n\n        return words.some(word =>\n            haystack.includes(word.toLowerCase())\n        );\n    };\n\n\n    const uniquePosts = (posts) => {\n        const seen = new Set();\n\n        return posts.filter(post => {\n            if (seen.has(post.id)) return false;\n            seen.add(post.id);\n            return true;\n        });\n    };\n\n\n    \/* =====================================================\n       HTML BUILDERS\n    ===================================================== *\/\n\n    const cardHTML = (post) => {\n\n        const title = esc(stripHTML(post.title.rendered));\n        const url = esc(post.link);\n        const image = esc(imageOf(post));\n        const category = esc(mainCategory(post));\n\n        return `\n            <article class=\"dp-card\">\n                <a class=\"dp-card-image\"\n                   href=\"${url}\">\n                    <img decoding=\"async\" src=\"${image}\"\n                         alt=\"${title}\"\n                         loading=\"lazy\">\n                <\/a>\n\n                <div>\n                    <a class=\"dp-category\"\n                       href=\"${url}\">\n                        ${category}\n                    <\/a>\n\n                    <h3 class=\"dp-card-title\">\n                        <a href=\"${url}\">\n                            ${title}\n                        <\/a>\n                    <\/h3>\n\n                    <div class=\"dp-card-date\">\n                        ${formatDate(post.date)}\n                    <\/div>\n                <\/div>\n            <\/article>\n        `;\n    };\n\n\n    const sideHTML = (post) => {\n\n        const title = esc(stripHTML(post.title.rendered));\n        const url = esc(post.link);\n        const image = esc(imageOf(post));\n        const category = esc(mainCategory(post));\n\n        return `\n            <article class=\"dp-side-story\">\n\n                <div>\n                    <a class=\"dp-category\"\n                       href=\"${url}\">\n                        ${category}\n                    <\/a>\n\n                    <h3 class=\"dp-side-title\">\n                        <a href=\"${url}\">\n                            ${title}\n                        <\/a>\n                    <\/h3>\n\n                    <div class=\"dp-card-date\">\n                        ${shortDate(post.date)}\n                    <\/div>\n                <\/div>\n\n                <a class=\"dp-side-story-image\"\n                   href=\"${url}\">\n                    <img decoding=\"async\" src=\"${image}\"\n                         alt=\"${title}\"\n                         loading=\"lazy\">\n                <\/a>\n\n            <\/article>\n        `;\n    };\n\n\n    const featureListHTML = (post) => {\n\n        const title = esc(stripHTML(post.title.rendered));\n        const url = esc(post.link);\n        const category = esc(mainCategory(post));\n\n        return `\n            <a href=\"${url}\">\n                <span class=\"dp-category\">\n                    ${category}\n                <\/span>\n\n                <h3 class=\"dp-feature-list-title\">\n                    ${title}\n                <\/h3>\n            <\/a>\n        `;\n    };\n\n\n    const renderGrid = (id, posts, limit = 4) => {\n\n        const el = document.getElementById(id);\n\n        if (!el) return;\n\n        if (!posts.length) {\n            el.innerHTML =\n                '<div class=\"dp-empty\">' +\n                'Todav\u00eda no hay publicaciones suficientes en esta secci\u00f3n.' +\n                '<\/div>';\n            return;\n        }\n\n        el.innerHTML = posts\n            .slice(0, limit)\n            .map(cardHTML)\n            .join(\"\");\n    };\n\n\n    \/* =====================================================\n       MAIN RENDER\n    ===================================================== *\/\n\n    const render = (posts) => {\n\n        if (!posts || !posts.length) return;\n\n\n        \/* Latest strip *\/\n        const latest = posts[0];\n\n        const breakingLink =\n            document.getElementById(\"dp-breaking-link\");\n\n        breakingLink.textContent =\n            stripHTML(latest.title.rendered);\n\n        breakingLink.href = latest.link;\n\n        document.getElementById(\"dp-breaking-date\")\n            .textContent = shortDate(latest.date);\n\n\n        \/* Main story *\/\n        const main = posts[0];\n\n        document.getElementById(\"dp-main-story\").innerHTML = `\n            <a class=\"dp-main-story-image\"\n               href=\"${esc(main.link)}\">\n                <img decoding=\"async\" src=\"${esc(imageOf(main))}\"\n                     alt=\"${esc(stripHTML(main.title.rendered))}\">\n            <\/a>\n\n            <a class=\"dp-category\"\n               href=\"${esc(main.link)}\">\n                ${esc(mainCategory(main))}\n            <\/a>\n\n            <h2 class=\"dp-main-title\">\n                <a href=\"${esc(main.link)}\">\n                    ${esc(stripHTML(main.title.rendered))}\n                <\/a>\n            <\/h2>\n\n            <p class=\"dp-main-excerpt\">\n                ${esc(\n                    stripHTML(main.excerpt.rendered)\n                        .replace(\/\\s+\/g, \" \")\n                        .trim()\n                        .slice(0, 300)\n                )}\n            <\/p>\n\n            <div class=\"dp-meta\">\n                <span>${formatDate(main.date)}<\/span>\n                <span>\u00b7<\/span>\n                <span>Digitalizaci\u00f3n P\u00fablica<\/span>\n            <\/div>\n        `;\n\n\n        \/* Side stories *\/\n        document.getElementById(\"dp-side-stories\")\n            .innerHTML =\n                posts\n                    .slice(1, 5)\n                    .map(sideHTML)\n                    .join(\"\");\n\n\n        \/* Latest *\/\n        renderGrid(\n            \"dp-latest-grid\",\n            posts.slice(5, 9)\n        );\n\n\n        \/* Public procurement *\/\n        const procurement = uniquePosts(\n            posts.filter(post =>\n                hasCategory(\n                    post,\n                    [\"contratacion-publica\"]\n                )\n                ||\n                matchesText(\n                    post,\n                    [\n                        \"licitaci\u00f3n\",\n                        \"licitaciones\",\n                        \"contrataci\u00f3n p\u00fablica\",\n                        \"pliego\",\n                        \"adjudicaci\u00f3n\"\n                    ]\n                )\n            )\n        );\n\n        renderGrid(\n            \"dp-contract-grid\",\n            procurement,\n            4\n        );\n\n\n        \/* Local administration *\/\n        const local = uniquePosts(\n            posts.filter(post =>\n                hasCategory(\n                    post,\n                    [\n                        \"administracion-local\",\n                        \"ayuntamientos\"\n                    ]\n                )\n                ||\n                matchesText(\n                    post,\n                    [\n                        \"ayuntamiento\",\n                        \"diputaci\u00f3n\",\n                        \"administraci\u00f3n local\",\n                        \"municipal\"\n                    ]\n                )\n            )\n        );\n\n        renderGrid(\n            \"dp-local-grid\",\n            local,\n            4\n        );\n\n\n        \/* Artificial intelligence *\/\n        const ai = uniquePosts(\n            posts.filter(post =>\n                matchesText(\n                    post,\n                    [\n                        \"inteligencia artificial\",\n                        \" ia \",\n                        \"automatizaci\u00f3n\",\n                        \"chatbot\",\n                        \"agente\"\n                    ]\n                )\n            )\n        );\n\n\n        const aiMain =\n            ai.length\n                ? ai[0]\n                : posts.find(post =>\n                    hasCategory(\n                        post,\n                        [\"digitalizacion-del-sector-publico\"]\n                    )\n                ) || posts[1];\n\n\n        if (aiMain) {\n\n            document.getElementById(\"dp-ai-main\").innerHTML = `\n                <article class=\"dp-feature-main\">\n\n                    <a class=\"dp-feature-image\"\n                       href=\"${esc(aiMain.link)}\">\n                        <img decoding=\"async\" src=\"${esc(imageOf(aiMain))}\"\n                             alt=\"${esc(stripHTML(aiMain.title.rendered))}\"\n                             loading=\"lazy\">\n                    <\/a>\n\n                    <div class=\"dp-feature-copy\">\n\n                        <a class=\"dp-category\"\n                           href=\"${esc(aiMain.link)}\">\n                            ${esc(mainCategory(aiMain))}\n                        <\/a>\n\n                        <h3 class=\"dp-feature-title\">\n                            <a href=\"${esc(aiMain.link)}\">\n                                ${esc(stripHTML(aiMain.title.rendered))}\n                            <\/a>\n                        <\/h3>\n\n                        <div class=\"dp-meta\">\n                            ${formatDate(aiMain.date)}\n                        <\/div>\n\n                    <\/div>\n\n                <\/article>\n            `;\n\n        }\n\n\n        const aiSecondary =\n            ai\n                .filter(post =>\n                    !aiMain || post.id !== aiMain.id\n                )\n                .slice(0, 4);\n\n        document.getElementById(\"dp-ai-list\")\n            .innerHTML =\n                aiSecondary.length\n                    ? aiSecondary.map(featureListHTML).join(\"\")\n                    : posts.slice(6, 10)\n                        .map(featureListHTML)\n                        .join(\"\");\n\n    };\n\n\n    \/* =====================================================\n       CURRENT DATE\n    ===================================================== *\/\n\n    const now = new Date();\n\n    const fullDate = new Intl.DateTimeFormat(\n        \"es-ES\",\n        {\n            weekday: \"long\",\n            day: \"numeric\",\n            month: \"long\",\n            year: \"numeric\"\n        }\n    ).format(now);\n\n    const currentDate =\n        document.getElementById(\"dp-current-date\");\n\n    if (currentDate) {\n        currentDate.textContent =\n            fullDate.charAt(0).toUpperCase() +\n            fullDate.slice(1);\n    }\n\n\n    \/* =====================================================\n       FETCH WORDPRESS POSTS\n    ===================================================== *\/\n\n    fetch(API, {\n        credentials: \"same-origin\"\n    })\n        .then(response => {\n\n            if (!response.ok) {\n                throw new Error(\n                    \"WordPress REST API: \" +\n                    response.status\n                );\n            }\n\n            return response.json();\n\n        })\n        .then(posts => {\n            render(posts);\n        })\n        .catch(error => {\n\n            console.error(\n                \"Digitalizaci\u00f3n P\u00fablica Observatorio:\",\n                error\n            );\n\n            const breaking =\n                document.getElementById(\"dp-breaking-link\");\n\n            if (breaking) {\n                breaking.textContent =\n                    \"Consulta las \u00faltimas publicaciones de Digitalizaci\u00f3n P\u00fablica\";\n                breaking.href = \"\/blog\/\";\n            }\n\n        });\n\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Observatorio de Digitalizaci\u00f3n P\u00fablica \u00b7 DigitalizacionPublica.es Administraci\u00f3n \u00b7 Tecnolog\u00eda \u00b7 Contrataci\u00f3n Observatorio Digitalizaci\u00f3n P\u00fablica Administraci\u00f3n \u00b7 Innovaci\u00f3n \u00b7 Sector p\u00fablico [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":13,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","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":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-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-opacity":"","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-opacity":"","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-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-8","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Observatorio de Digitalizaci\u00f3n P\u00fablica | Actualidad y an\u00e1lisis<\/title>\n<meta name=\"description\" content=\"Actualidad, an\u00e1lisis y recursos sobre digitalizaci\u00f3n p\u00fablica, contrataci\u00f3n, inteligencia artificial, ciberseguridad, normativa y administraci\u00f3n electr\u00f3nica.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/news.digitalizacionpublica.es\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Observatorio de Digitalizaci\u00f3n P\u00fablica | Actualidad y an\u00e1lisis\" \/>\n<meta property=\"og:description\" content=\"Actualidad, an\u00e1lisis y recursos sobre digitalizaci\u00f3n p\u00fablica, contrataci\u00f3n, inteligencia artificial, ciberseguridad, normativa y administraci\u00f3n electr\u00f3nica.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/news.digitalizacionpublica.es\/\" \/>\n<meta property=\"og:site_name\" content=\"Digitalizaci\u00f3n P\u00fablica News\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-20T16:03:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/news.digitalizacionpublica.es\/wp-content\/uploads\/2026\/09\/Monograma-News-Digitalizacion-Publica.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1254\" \/>\n\t<meta property=\"og:image:height\" content=\"1254\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\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:\\\/\\\/news.digitalizacionpublica.es\\\/\",\"url\":\"https:\\\/\\\/news.digitalizacionpublica.es\\\/\",\"name\":\"Observatorio de Digitalizaci\u00f3n P\u00fablica | Actualidad y an\u00e1lisis\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/news.digitalizacionpublica.es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/news.digitalizacionpublica.es\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/news.digitalizacionpublica.es\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/news.digitalizacionpublica.es\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Monograma-News-Digitalizacion-Publica.png\",\"datePublished\":\"2026-09-20T15:38:06+00:00\",\"dateModified\":\"2026-09-20T16:03:29+00:00\",\"description\":\"Actualidad, an\u00e1lisis y recursos sobre digitalizaci\u00f3n p\u00fablica, contrataci\u00f3n, inteligencia artificial, ciberseguridad, normativa y administraci\u00f3n electr\u00f3nica.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/news.digitalizacionpublica.es\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/news.digitalizacionpublica.es\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/news.digitalizacionpublica.es\\\/#primaryimage\",\"url\":\"https:\\\/\\\/news.digitalizacionpublica.es\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Monograma-News-Digitalizacion-Publica.png\",\"contentUrl\":\"https:\\\/\\\/news.digitalizacionpublica.es\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Monograma-News-Digitalizacion-Publica.png\",\"width\":1254,\"height\":1254},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/news.digitalizacionpublica.es\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/news.digitalizacionpublica.es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Inicio\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/news.digitalizacionpublica.es\\\/#website\",\"url\":\"https:\\\/\\\/news.digitalizacionpublica.es\\\/\",\"name\":\"Digitalizaci\u00f3n P\u00fablica News\",\"description\":\"Actualidad, tecnolog\u00eda y contrataci\u00f3n en el sector p\u00fablico\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/news.digitalizacionpublica.es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Observatorio de Digitalizaci\u00f3n P\u00fablica | Actualidad y an\u00e1lisis","description":"Actualidad, an\u00e1lisis y recursos sobre digitalizaci\u00f3n p\u00fablica, contrataci\u00f3n, inteligencia artificial, ciberseguridad, normativa y administraci\u00f3n electr\u00f3nica.","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:\/\/news.digitalizacionpublica.es\/","og_locale":"es_ES","og_type":"article","og_title":"Observatorio de Digitalizaci\u00f3n P\u00fablica | Actualidad y an\u00e1lisis","og_description":"Actualidad, an\u00e1lisis y recursos sobre digitalizaci\u00f3n p\u00fablica, contrataci\u00f3n, inteligencia artificial, ciberseguridad, normativa y administraci\u00f3n electr\u00f3nica.","og_url":"https:\/\/news.digitalizacionpublica.es\/","og_site_name":"Digitalizaci\u00f3n P\u00fablica News","article_modified_time":"2026-09-20T16:03:29+00:00","og_image":[{"width":1254,"height":1254,"url":"https:\/\/news.digitalizacionpublica.es\/wp-content\/uploads\/2026\/09\/Monograma-News-Digitalizacion-Publica.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/news.digitalizacionpublica.es\/","url":"https:\/\/news.digitalizacionpublica.es\/","name":"Observatorio de Digitalizaci\u00f3n P\u00fablica | Actualidad y an\u00e1lisis","isPartOf":{"@id":"https:\/\/news.digitalizacionpublica.es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/news.digitalizacionpublica.es\/#primaryimage"},"image":{"@id":"https:\/\/news.digitalizacionpublica.es\/#primaryimage"},"thumbnailUrl":"https:\/\/news.digitalizacionpublica.es\/wp-content\/uploads\/2026\/09\/Monograma-News-Digitalizacion-Publica.png","datePublished":"2026-09-20T15:38:06+00:00","dateModified":"2026-09-20T16:03:29+00:00","description":"Actualidad, an\u00e1lisis y recursos sobre digitalizaci\u00f3n p\u00fablica, contrataci\u00f3n, inteligencia artificial, ciberseguridad, normativa y administraci\u00f3n electr\u00f3nica.","breadcrumb":{"@id":"https:\/\/news.digitalizacionpublica.es\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/news.digitalizacionpublica.es\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/news.digitalizacionpublica.es\/#primaryimage","url":"https:\/\/news.digitalizacionpublica.es\/wp-content\/uploads\/2026\/09\/Monograma-News-Digitalizacion-Publica.png","contentUrl":"https:\/\/news.digitalizacionpublica.es\/wp-content\/uploads\/2026\/09\/Monograma-News-Digitalizacion-Publica.png","width":1254,"height":1254},{"@type":"BreadcrumbList","@id":"https:\/\/news.digitalizacionpublica.es\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/news.digitalizacionpublica.es\/"},{"@type":"ListItem","position":2,"name":"Inicio"}]},{"@type":"WebSite","@id":"https:\/\/news.digitalizacionpublica.es\/#website","url":"https:\/\/news.digitalizacionpublica.es\/","name":"Digitalizaci\u00f3n P\u00fablica News","description":"Actualidad, tecnolog\u00eda y contrataci\u00f3n en el sector p\u00fablico","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/news.digitalizacionpublica.es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"}]}},"_links":{"self":[{"href":"https:\/\/news.digitalizacionpublica.es\/index.php\/wp-json\/wp\/v2\/pages\/8","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/news.digitalizacionpublica.es\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/news.digitalizacionpublica.es\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/news.digitalizacionpublica.es\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/news.digitalizacionpublica.es\/index.php\/wp-json\/wp\/v2\/comments?post=8"}],"version-history":[{"count":1,"href":"https:\/\/news.digitalizacionpublica.es\/index.php\/wp-json\/wp\/v2\/pages\/8\/revisions"}],"predecessor-version":[{"id":10,"href":"https:\/\/news.digitalizacionpublica.es\/index.php\/wp-json\/wp\/v2\/pages\/8\/revisions\/10"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/news.digitalizacionpublica.es\/index.php\/wp-json\/wp\/v2\/media\/13"}],"wp:attachment":[{"href":"https:\/\/news.digitalizacionpublica.es\/index.php\/wp-json\/wp\/v2\/media?parent=8"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}