{"id":2,"date":"2026-02-04T08:35:17","date_gmt":"2026-02-04T08:35:17","guid":{"rendered":"https:\/\/aipalmieri.w3d.it\/?page_id=2"},"modified":"2026-02-12T11:32:10","modified_gmt":"2026-02-12T11:32:10","slug":"sample-page","status":"publish","type":"page","link":"https:\/\/aipalmieri.w3d.it\/","title":{"rendered":""},"content":{"rendered":"        <div id=\"atp-14-69d29ae631dd3\" \n             class=\"atp-container atp-theme-custom atp-effect-typing atp-bg-transparent atp-has-particles\"\n             data-phrases='[&quot;Benvenuto in Fonderie Palmieri&quot;,&quot;Produzione certificata e attenzione concreta all\\u2019ambiente.&quot;,&quot;Hai un progetto o ti serve un preventivo?&quot;]'\n             data-settings='{&quot;effect&quot;:&quot;typing&quot;,&quot;speed&quot;:100,&quot;pause&quot;:2000,&quot;loop&quot;:&quot;yes&quot;,&quot;keep_last&quot;:&quot;yes&quot;,&quot;cursor&quot;:&quot;yes&quot;,&quot;cursor_char&quot;:&quot;|&quot;,&quot;particles&quot;:&quot;yes&quot;,&quot;particles_type&quot;:&quot;dots&quot;,&quot;particle_color&quot;:&quot;#e24307&quot;}'\n             data-colors='{&quot;primary&quot;:&quot;#000000&quot;,&quot;secondary&quot;:&quot;#7c3aed&quot;,&quot;accent&quot;:&quot;#ff006e&quot;}'\n             data-text-color='{&quot;type&quot;:&quot;solid&quot;,&quot;color&quot;:&quot;#000000&quot;}'\n             style=\"--atp-font-size:22px;--atp-font-weight:600;--atp-text-align:center;--atp-color-primary:#000000;--atp-color-secondary:#7c3aed;--atp-color-accent:#ff006e;\">\n                        <canvas class=\"atp-particles-canvas\" data-type=\"dots\" data-color=\"#e24307\"><\/canvas>\n                        <div class=\"atp-text-wrapper\">\n                <span class=\"atp-text \"><\/span>\n                                <span class=\"atp-cursor\" style=\"opacity:0;\">|<\/span>\n                            <\/div>\n        <\/div>\n                \n\n\n\n<div class=\"ai-searchbar-container\" \n     data-hide-floating=\"true\"\n     data-theme=\"light\"\n     data-layout=\"input-bottom\"\n     data-scroll-offset=\"120\"\n     data-privacy-enabled=\"true\"\n     style=\"--ai-primary-color: #e24307; --searchbar-width: calc(100% - 20px); --searchbar-max-width: 700px;\">\n    \n    <!-- Privacy Notice -->\n        <div class=\"ai-searchbar-privacy\" style=\"display: none;\">\n        <div class=\"ai-searchbar-privacy-content\">\n            <p>\n                Questa chat utilizza intelligenza artificiale. I messaggi vengono elaborati da servizi esterni (Google Gemini) e potrebbero essere salvati per migliorare il servizio. Non inserire dati personali sensibili. Continuando, accetti la nostra                            <\/p>\n            <button type=\"button\" class=\"ai-searchbar-privacy-accept\">\n                Accetto e continuo            <\/button>\n        <\/div>\n    <\/div>\n        \n    <!-- Particles Background -->\n    <div class=\"ai-searchbar-particles\">\n        <div class=\"particle\"><\/div>\n        <div class=\"particle\"><\/div>\n        <div class=\"particle\"><\/div>\n        <div class=\"particle\"><\/div>\n        <div class=\"particle\"><\/div>\n        <div class=\"particle\"><\/div>\n        <div class=\"particle\"><\/div>\n        <div class=\"particle\"><\/div>\n    <\/div>\n    \n    <!-- Main Searchbar -->\n    <div class=\"ai-searchbar-wrapper\">\n        <div class=\"ai-searchbar\">\n            <div class=\"ai-searchbar-icon\">\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                    <path d=\"M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2z\"><\/path>\n                    <path d=\"M12 8v4M12 16h.01\"><\/path>\n                <\/svg>\n                <div class=\"ai-searchbar-icon-glow\"><\/div>\n            <\/div>\n            <input type=\"text\" \n                   class=\"ai-searchbar-input\" \n                   placeholder=\"Come posso aiutarti oggi?\"\n                   autocomplete=\"off\">\n            <button type=\"button\" class=\"ai-searchbar-submit\">\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                    <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"><\/line>\n                    <polygon points=\"22 2 15 22 11 13 2 9 22 2\"><\/polygon>\n                <\/svg>\n            <\/button>\n        <\/div>\n        \n        <!-- Typing indicator -->\n        <div class=\"ai-searchbar-typing\" style=\"display: none;\">\n            <div class=\"typing-dots\">\n                <span><\/span><span><\/span><span><\/span>\n            <\/div>\n            <span class=\"typing-text\">Sto pensando...<\/span>\n        <\/div>\n        \n        <!-- Suggerimenti -->\n                <div class=\"ai-searchbar-suggestions\">\n                                            <button type=\"button\" class=\"ai-searchbar-suggestion\" data-question=\"Voglio sapere quali materiali in ghisa potete fornirmi.\">\n                    Voglio sapere quali materiali in ghisa potete fornirmi.                <\/button>\n                                                            <button type=\"button\" class=\"ai-searchbar-suggestion\" data-question=\"Voglio un preventivo per il mio progetto.\">\n                    Voglio un preventivo per il mio progetto.                <\/button>\n                                    <\/div>\n            <\/div>\n    \n    <!-- Response Area -->\n    <div class=\"ai-searchbar-response\" style=\"display: none;\">\n        <div class=\"ai-searchbar-question-display\">\n            <div class=\"ai-searchbar-question-label\">Hai chiesto:<\/div>\n            <div class=\"ai-searchbar-question-text\"><\/div>\n        <\/div>\n        <div class=\"ai-searchbar-response-header\">\n            <div class=\"ai-searchbar-response-avatar\">\n                <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n                    <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z\"\/>\n                <\/svg>\n            <\/div>\n            <span class=\"ai-searchbar-response-title\">Risposta<\/span>\n            <button type=\"button\" class=\"ai-searchbar-close\" title=\"Chiudi\">\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n                    <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"><\/line>\n                    <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"><\/line>\n                <\/svg>\n            <\/button>\n        <\/div>\n        <div class=\"ai-searchbar-response-content\"><\/div>\n        <div class=\"ai-searchbar-response-footer\">\n            <button type=\"button\" class=\"ai-searchbar-restart\">\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n                    <polyline points=\"1 4 1 10 7 10\"><\/polyline>\n                    <path d=\"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\"><\/path>\n                <\/svg>\n                Ricomincia da capo            <\/button>\n            <button type=\"button\" class=\"ai-searchbar-history\">\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n                    <path d=\"M12 8v4l3 3\"><\/path>\n                    <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n                <\/svg>\n                Cronologia            <\/button>\n            <button type=\"button\" class=\"ai-searchbar-download\">\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n                    <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"><\/path>\n                    <polyline points=\"7 10 12 15 17 10\"><\/polyline>\n                    <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"><\/line>\n                <\/svg>\n                Scarica            <\/button>\n        <\/div>\n    <\/div>\n    \n    <!-- History Modal -->\n    <div class=\"ai-searchbar-history-modal\" style=\"display: none;\">\n        <div class=\"ai-searchbar-history-header\">\n            <h4>Cronologia conversazione<\/h4>\n            <button type=\"button\" class=\"ai-searchbar-history-close\">&times;<\/button>\n        <\/div>\n        <div class=\"ai-searchbar-history-content\"><\/div>\n    <\/div>\n<\/div>\n\n<style>\n\/* Searchbar Container *\/\n\/* Searchbar Container *\/\n.ai-searchbar-container {\n    position: relative;\n    width: var(--searchbar-width, calc(100% - 40px));\n    max-width: var(--searchbar-max-width, 700px);\n    margin: 0 auto;\n    padding: 40px 20px;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n}\n\n\/* Layout: Input Bottom (risposta sopra, input sotto) *\/\n.ai-searchbar-container[data-layout=\"input-bottom\"] {\n    display: flex !important;\n    flex-direction: column !important;\n}\n\n.ai-searchbar-container[data-layout=\"input-bottom\"] > .ai-searchbar-particles {\n    position: absolute !important;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    pointer-events: none;\n    order: 0 !important;\n}\n\n.ai-searchbar-container[data-layout=\"input-bottom\"] > .ai-searchbar-privacy {\n    order: 1 !important;\n    margin-bottom: 20px;\n}\n\n.ai-searchbar-container[data-layout=\"input-bottom\"] > .ai-searchbar-response {\n    order: 2 !important;\n    margin-top: 0 !important;\n    margin-bottom: 20px !important;\n}\n\n.ai-searchbar-container[data-layout=\"input-bottom\"] > .ai-searchbar-wrapper {\n    order: 3 !important;\n    position: relative;\n    z-index: 2;\n}\n\n.ai-searchbar-container[data-layout=\"input-bottom\"] > .ai-searchbar-history-modal {\n    order: 4 !important;\n}\n\n\/* Privacy Notice *\/\n.ai-searchbar-privacy {\n    position: relative;\n    z-index: 2;\n    margin-bottom: 20px;\n}\n\n.ai-searchbar-privacy-content {\n    background: #fff;\n    border-radius: 16px;\n    padding: 20px;\n    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);\n    text-align: center;\n}\n\n.ai-searchbar-privacy-content p {\n    font-size: 14px;\n    color: #666;\n    line-height: 1.6;\n    margin: 0 0 15px 0;\n}\n\n.ai-searchbar-privacy-content a {\n    color: var(--ai-primary-color);\n    text-decoration: underline;\n}\n\n.ai-searchbar-privacy-accept {\n    background: linear-gradient(135deg, var(--ai-primary-color), color-mix(in srgb, var(--ai-primary-color) 70%, #000));\n    color: #fff;\n    border: none;\n    padding: 12px 30px;\n    border-radius: 25px;\n    font-size: 14px;\n    font-weight: 600;\n    cursor: pointer;\n    transition: all 0.3s ease;\n}\n\n.ai-searchbar-privacy-accept:hover {\n    transform: scale(1.05);\n    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);\n}\n\n.ai-searchbar-container[data-theme=\"dark\"] .ai-searchbar-privacy-content {\n    background: #1a1a2e;\n}\n\n.ai-searchbar-container[data-theme=\"dark\"] .ai-searchbar-privacy-content p {\n    color: #aaa;\n}\n\n\/* Particles *\/\n.ai-searchbar-particles {\n    position: absolute;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    overflow: hidden;\n    pointer-events: none;\n    z-index: 0;\n}\n\n.ai-searchbar-particles .particle {\n    position: absolute;\n    width: 6px;\n    height: 6px;\n    background: var(--ai-primary-color);\n    border-radius: 50%;\n    opacity: 0;\n    animation: particle-float 4s ease-in-out infinite;\n}\n\n.ai-searchbar-particles .particle:nth-child(1) { left: 10%; top: 20%; animation-delay: 0s; }\n.ai-searchbar-particles .particle:nth-child(2) { left: 20%; top: 80%; animation-delay: 0.5s; }\n.ai-searchbar-particles .particle:nth-child(3) { left: 40%; top: 10%; animation-delay: 1s; }\n.ai-searchbar-particles .particle:nth-child(4) { left: 60%; top: 90%; animation-delay: 1.5s; }\n.ai-searchbar-particles .particle:nth-child(5) { left: 80%; top: 30%; animation-delay: 2s; }\n.ai-searchbar-particles .particle:nth-child(6) { left: 90%; top: 70%; animation-delay: 2.5s; }\n.ai-searchbar-particles .particle:nth-child(7) { left: 30%; top: 50%; animation-delay: 3s; }\n.ai-searchbar-particles .particle:nth-child(8) { left: 70%; top: 50%; animation-delay: 3.5s; }\n\n@keyframes particle-float {\n    0%, 100% { opacity: 0; transform: translateY(0) scale(0.5); }\n    25% { opacity: 0.4; }\n    50% { opacity: 0.2; transform: translateY(-20px) scale(1); }\n    75% { opacity: 0.4; }\n}\n\n\/* Searchbar Wrapper *\/\n.ai-searchbar-wrapper {\n    position: relative;\n    z-index: 1;\n}\n\n\/* Main Searchbar *\/\n.ai-searchbar {\n    display: flex;\n    align-items: center;\n    background: #fff;\n    border-radius: 50px;\n    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(0, 0, 0, 0.05);\n    padding: 8px 8px 8px 20px;\n    transition: all 0.3s ease;\n}\n\n.ai-searchbar:hover {\n    box-shadow: 0 6px 30px rgba(0, 0, 0, 0.15), 0 0 0 1px var(--ai-primary-color);\n}\n\n.ai-searchbar:focus-within {\n    box-shadow: 0 6px 30px rgba(0, 0, 0, 0.15), 0 0 0 2px var(--ai-primary-color);\n}\n\n\/* Icon *\/\n.ai-searchbar-icon {\n    position: relative;\n    flex-shrink: 0;\n    width: 28px;\n    height: 28px;\n    margin-right: 15px;\n    color: var(--ai-primary-color);\n}\n\n.ai-searchbar-icon svg {\n    width: 100%;\n    height: 100%;\n}\n\n.ai-searchbar-icon-glow {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    width: 40px;\n    height: 40px;\n    background: var(--ai-primary-color);\n    border-radius: 50%;\n    transform: translate(-50%, -50%);\n    opacity: 0;\n    filter: blur(10px);\n    animation: icon-pulse 2s ease-in-out infinite;\n}\n\n@keyframes icon-pulse {\n    0%, 100% { opacity: 0; transform: translate(-50%, -50%) scale(0.8); }\n    50% { opacity: 0.3; transform: translate(-50%, -50%) scale(1.2); }\n}\n\n\/* Input *\/\n.ai-searchbar-input {\n    flex: 1;\n    border: none;\n    background: transparent;\n    font-size: 16px;\n    padding: 12px 20px 12px 0;\n    outline: none;\n    color: #333;\n}\n\n.ai-searchbar-input::placeholder {\n    color: #999;\n}\n\n\/* Submit Button *\/\n.ai-searchbar-submit {\n    flex-shrink: 0;\n    width: 48px;\n    height: 48px;\n    border: none;\n    border-radius: 50%;\n    background: linear-gradient(135deg, var(--ai-primary-color), color-mix(in srgb, var(--ai-primary-color) 70%, #000));\n    color: #fff;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: all 0.3s ease;\n}\n\n.ai-searchbar-submit svg {\n    width: 20px;\n    height: 20px;\n}\n\n.ai-searchbar-submit:hover {\n    transform: scale(1.05);\n    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);\n}\n\n.ai-searchbar-submit:active {\n    transform: scale(0.95);\n}\n\n.ai-searchbar-submit:disabled {\n    opacity: 0.5;\n    cursor: not-allowed;\n    transform: none;\n}\n\n\/* Typing Indicator *\/\n.ai-searchbar-typing {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 15px;\n    color: #666;\n    font-size: 14px;\n}\n\n.typing-dots {\n    display: flex;\n    gap: 4px;\n    margin-right: 10px;\n}\n\n.typing-dots span {\n    width: 8px;\n    height: 8px;\n    background: var(--ai-primary-color);\n    border-radius: 50%;\n    animation: typing-bounce 1.4s ease-in-out infinite;\n}\n\n.typing-dots span:nth-child(2) { animation-delay: 0.2s; }\n.typing-dots span:nth-child(3) { animation-delay: 0.4s; }\n\n@keyframes typing-bounce {\n    0%, 60%, 100% { transform: translateY(0); opacity: 0.4; }\n    30% { transform: translateY(-8px); opacity: 1; }\n}\n\n\/* Suggerimenti *\/\n.ai-searchbar-suggestions {\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: center;\n    gap: 8px;\n    margin-top: 15px;\n    padding: 0 10px;\n}\n\n.ai-searchbar-suggestion {\n    background: rgba(255, 255, 255, 0.9);\n    border: 1px solid rgba(0, 0, 0, 0.1);\n    padding: 8px 16px;\n    border-radius: 20px;\n    font-size: 13px;\n    color: #333;\n    cursor: pointer;\n    transition: all 0.2s ease;\n    backdrop-filter: blur(10px);\n    white-space: nowrap;\n    max-width: 100%;\n    overflow: hidden;\n    text-overflow: ellipsis;\n}\n\n.ai-searchbar-suggestion:hover {\n    background: var(--ai-primary-color);\n    color: #fff;\n    border-color: var(--ai-primary-color);\n    transform: translateY(-2px);\n    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n}\n\n.ai-searchbar-container[data-theme=\"dark\"] .ai-searchbar-suggestion {\n    background: rgba(255, 255, 255, 0.1);\n    border-color: rgba(255, 255, 255, 0.2);\n    color: #fff;\n}\n\n.ai-searchbar-container[data-theme=\"dark\"] .ai-searchbar-suggestion:hover {\n    background: var(--ai-primary-color);\n    border-color: var(--ai-primary-color);\n}\n\n\/* Nascondi suggerimenti quando c'\u00e8 una risposta *\/\n.ai-searchbar-container.has-response .ai-searchbar-suggestions {\n    display: none;\n}\n\n\/* Response Area *\/\n.ai-searchbar-response {\n    position: relative;\n    z-index: 1;\n    margin-top: 20px;\n    background: #fff;\n    border-radius: 20px;\n    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);\n    overflow: hidden;\n    animation: response-slide-in 0.4s ease;\n    transition: opacity 0.3s ease, transform 0.3s ease;\n}\n\n.ai-searchbar-response.fade-out {\n    opacity: 0;\n    transform: translateY(-10px) scale(0.98);\n}\n\n@keyframes response-slide-in {\n    from { opacity: 0; transform: translateY(-10px); }\n    to { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes response-slide-in-bottom {\n    from { opacity: 0; transform: translateY(10px); }\n    to { opacity: 1; transform: translateY(0); }\n}\n\n.ai-searchbar-container[data-layout=\"input-bottom\"] > .ai-searchbar-response {\n    animation: response-slide-in-bottom 0.4s ease !important;\n}\n\n.ai-searchbar-container[data-layout=\"input-bottom\"] .ai-searchbar-response.fade-out {\n    opacity: 0;\n    transform: translateY(10px) scale(0.98);\n}\n\n\/* Question Display *\/\n.ai-searchbar-question-display {\n    padding: 15px 20px;\n    background: linear-gradient(135deg, #f8f9fa, #e9ecef);\n    border-bottom: 1px solid #dee2e6;\n}\n\n.ai-searchbar-question-label {\n    font-size: 11px;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    color: #6c757d;\n    margin-bottom: 6px;\n    font-weight: 600;\n}\n\n.ai-searchbar-question-text {\n    font-size: 15px;\n    color: #333;\n    line-height: 1.5;\n    font-style: italic;\n}\n\n.ai-searchbar-response-header {\n    display: flex;\n    align-items: center;\n    padding: 15px 20px;\n    background: linear-gradient(135deg, var(--ai-primary-color), color-mix(in srgb, var(--ai-primary-color) 70%, #000));\n    color: #fff;\n}\n\n.ai-searchbar-response-avatar {\n    width: 32px;\n    height: 32px;\n    background: rgba(255, 255, 255, 0.2);\n    border-radius: 50%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    margin-right: 12px;\n}\n\n.ai-searchbar-response-avatar svg {\n    width: 20px;\n    height: 20px;\n}\n\n.ai-searchbar-response-title {\n    flex: 1;\n    font-weight: 600;\n    font-size: 14px;\n}\n\n.ai-searchbar-close {\n    background: rgba(255, 255, 255, 0.2);\n    border: none;\n    border-radius: 50%;\n    width: 32px;\n    height: 32px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    cursor: pointer;\n    color: #fff;\n    transition: background 0.2s;\n}\n\n.ai-searchbar-close:hover {\n    background: rgba(255, 255, 255, 0.3);\n}\n\n.ai-searchbar-close svg {\n    width: 16px;\n    height: 16px;\n}\n\n.ai-searchbar-response-content {\n    padding: 20px;\n    font-size: 15px;\n    line-height: 1.7;\n    color: #333;\n    max-height: 400px;\n    overflow-y: auto;\n}\n\n.ai-searchbar-response-content p {\n    margin: 0 0 10px 0;\n}\n\n.ai-searchbar-response-content p:last-child {\n    margin-bottom: 0;\n}\n\n.ai-searchbar-response-footer {\n    padding: 15px 20px;\n    border-top: 1px solid #eee;\n    display: flex;\n    justify-content: center;\n    gap: 10px;\n    flex-wrap: wrap;\n}\n\n.ai-searchbar-restart,\n.ai-searchbar-history,\n.ai-searchbar-download {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    padding: 10px 16px;\n    background: #f5f5f5;\n    border: none;\n    border-radius: 25px;\n    color: #666;\n    font-size: 13px;\n    cursor: pointer;\n    transition: all 0.2s;\n}\n\n.ai-searchbar-restart:hover,\n.ai-searchbar-history:hover,\n.ai-searchbar-download:hover {\n    background: #eee;\n    color: var(--ai-primary-color);\n}\n\n.ai-searchbar-restart svg,\n.ai-searchbar-history svg,\n.ai-searchbar-download svg {\n    width: 16px;\n    height: 16px;\n}\n\n\/* History Modal *\/\n.ai-searchbar-history-modal {\n    position: fixed;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n    width: 90%;\n    max-width: 500px;\n    max-height: 80vh;\n    background: #fff;\n    border-radius: 16px;\n    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);\n    z-index: 100001;\n    overflow: hidden;\n    display: flex;\n    flex-direction: column;\n}\n\n.ai-searchbar-history-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    padding: 15px 20px;\n    background: #f5f5f5;\n    border-bottom: 1px solid #eee;\n}\n\n.ai-searchbar-history-header h4 {\n    margin: 0;\n    font-size: 16px;\n    color: #333;\n}\n\n.ai-searchbar-history-close {\n    background: none;\n    border: none;\n    font-size: 24px;\n    color: #999;\n    cursor: pointer;\n    padding: 0;\n    line-height: 1;\n}\n\n.ai-searchbar-history-close:hover {\n    color: #333;\n}\n\n.ai-searchbar-history-content {\n    padding: 20px;\n    overflow-y: auto;\n    flex: 1;\n}\n\n.ai-searchbar-history-item {\n    margin-bottom: 20px;\n    padding-bottom: 20px;\n    border-bottom: 1px solid #eee;\n}\n\n.ai-searchbar-history-item:last-child {\n    margin-bottom: 0;\n    padding-bottom: 0;\n    border-bottom: none;\n}\n\n.ai-searchbar-history-question {\n    background: var(--ai-primary-color);\n    color: #fff;\n    padding: 10px 15px;\n    border-radius: 12px 12px 12px 0;\n    margin-bottom: 10px;\n    font-size: 14px;\n}\n\n.ai-searchbar-history-answer {\n    background: #f5f5f5;\n    color: #333;\n    padding: 10px 15px;\n    border-radius: 12px 12px 0 12px;\n    font-size: 14px;\n    line-height: 1.5;\n}\n\n.ai-searchbar-history-empty {\n    text-align: center;\n    color: #999;\n    padding: 40px 20px;\n}\n\n\/* History Modal Backdrop *\/\n.ai-searchbar-backdrop {\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    background: rgba(0, 0, 0, 0.5);\n    z-index: 100000;\n}\n\n\/* Dark Theme *\/\n.ai-searchbar-container[data-theme=\"dark\"] .ai-searchbar {\n    background: #1a1a2e;\n    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);\n}\n\n.ai-searchbar-container[data-theme=\"dark\"] .ai-searchbar-input {\n    color: #fff;\n}\n\n.ai-searchbar-container[data-theme=\"dark\"] .ai-searchbar-input::placeholder {\n    color: #888;\n}\n\n.ai-searchbar-container[data-theme=\"dark\"] .ai-searchbar-response {\n    background: #1a1a2e;\n}\n\n.ai-searchbar-container[data-theme=\"dark\"] .ai-searchbar-response-content {\n    color: #ddd;\n}\n\n.ai-searchbar-container[data-theme=\"dark\"] .ai-searchbar-response-footer {\n    border-top-color: #333;\n}\n\n.ai-searchbar-container[data-theme=\"dark\"] .ai-searchbar-restart,\n.ai-searchbar-container[data-theme=\"dark\"] .ai-searchbar-history,\n.ai-searchbar-container[data-theme=\"dark\"] .ai-searchbar-download {\n    background: #2a2a3e;\n    color: #aaa;\n}\n\n\/* Responsive *\/\n@media (max-width: 600px) {\n    .ai-searchbar-container {\n        padding: 20px 15px;\n    }\n    \n    .ai-searchbar {\n        padding: 6px 6px 6px 15px;\n    }\n    \n    .ai-searchbar-input {\n        font-size: 14px;\n        padding: 10px 0;\n    }\n    \n    .ai-searchbar-submit {\n        width: 42px;\n        height: 42px;\n    }\n    \n    .ai-searchbar-icon {\n        width: 22px;\n        height: 22px;\n        margin-right: 10px;\n    }\n    \n    .ai-searchbar-response-footer {\n        gap: 8px;\n    }\n    \n    .ai-searchbar-restart,\n    .ai-searchbar-history,\n    .ai-searchbar-download {\n        padding: 8px 12px;\n        font-size: 12px;\n    }\n}\n\n\/* Pulsante Continua - Risposta Troncata *\/\n.ai-searchbar-continue-btn {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    margin-top: 15px;\n    padding: 10px 20px;\n    background: linear-gradient(135deg, var(--ai-primary-color), color-mix(in srgb, var(--ai-primary-color) 80%, black));\n    color: #fff;\n    border: none;\n    border-radius: 25px;\n    font-size: 14px;\n    font-weight: 500;\n    cursor: pointer;\n    transition: all 0.2s ease;\n    box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);\n}\n\n.ai-searchbar-continue-btn:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);\n}\n\n.ai-searchbar-continue-btn:disabled {\n    opacity: 0.7;\n    cursor: wait;\n    transform: none;\n}\n\n.ai-searchbar-continue-btn::before {\n    content: '\u2192';\n    font-size: 16px;\n}\n\n.ai-searchbar-continue-btn:disabled::before {\n    content: '';\n    width: 14px;\n    height: 14px;\n    border: 2px solid #fff;\n    border-top-color: transparent;\n    border-radius: 50%;\n    animation: searchbarContinueSpin 0.8s linear infinite;\n}\n\n@keyframes searchbarContinueSpin {\n    to {\n        transform: rotate(360deg);\n    }\n}\n<\/style>\n\n<script>\n(function($) {\n    'use strict';\n    \n    \/\/ Fetch nonce fresco (evita problemi con pagine cachate)\n    function fetchFreshNonce() {\n        return $.ajax({\n            url: aiAssistant.ajaxUrl,\n            method: 'POST',\n            data: { action: 'ai_assistant_refresh_nonce' }\n        }).then(function(response) {\n            if (response.success && response.data.nonce) {\n                aiAssistant.nonce = response.data.nonce;\n                return true;\n            }\n            return false;\n        }).catch(function() {\n            return false;\n        });\n    }\n    \n    $(document).ready(function() {\n        var container = $('.ai-searchbar-container');\n        var input = container.find('.ai-searchbar-input');\n        var submitBtn = container.find('.ai-searchbar-submit');\n        var typing = container.find('.ai-searchbar-typing');\n        var response = container.find('.ai-searchbar-response');\n        var responseContent = container.find('.ai-searchbar-response-content');\n        var closeBtn = container.find('.ai-searchbar-close');\n        var restartBtn = container.find('.ai-searchbar-restart');\n        var historyBtn = container.find('.ai-searchbar-history');\n        var downloadBtn = container.find('.ai-searchbar-download');\n        var historyModal = container.find('.ai-searchbar-history-modal');\n        var historyContent = container.find('.ai-searchbar-history-content');\n        var historyCloseBtn = container.find('.ai-searchbar-history-close');\n        var privacyNotice = container.find('.ai-searchbar-privacy');\n        var privacyAcceptBtn = container.find('.ai-searchbar-privacy-accept');\n        \n        var isProcessing = false;\n        var sessionId = '';\n        var chatHistory = [];\n        var pendingQuestion = null;\n        var privacyAccepted = false;\n        var isInputBottom = container.data('layout') === 'input-bottom';\n        var scrollOffset = parseInt(container.data('scroll-offset')) || 20;\n        \n        \/\/ Funzione per smooth scroll (per layout input-bottom)\n        function scrollToTop() {\n            if (isInputBottom) {\n                \/\/ Scrolla all'inizio del container (dove appare la risposta)\n                var targetOffset = container.offset().top - scrollOffset;\n                $('html, body').animate({\n                    scrollTop: Math.max(0, targetOffset)\n                }, 400);\n            }\n        }\n        \n        \/\/ Check privacy consent\n        var privacyEnabled = container.data('privacy-enabled') === true || container.data('privacy-enabled') === 'true';\n        \n        if (privacyEnabled) {\n            var consentData = localStorage.getItem('ai_assistant_privacy_consent');\n            if (consentData) {\n                try {\n                    var data = JSON.parse(consentData);\n                    if (data.accepted && data.timestamp && (Date.now() - data.timestamp) < 30 * 24 * 60 * 60 * 1000) {\n                        privacyAccepted = true;\n                    }\n                } catch (e) {}\n            }\n            \n            if (!privacyAccepted) {\n                privacyNotice.show();\n                input.prop('disabled', true);\n                submitBtn.prop('disabled', true);\n            }\n        } else {\n            privacyAccepted = true;\n        }\n        \n        \/\/ Privacy accept handler\n        privacyAcceptBtn.on('click', function() {\n            localStorage.setItem('ai_assistant_privacy_consent', JSON.stringify({\n                accepted: true,\n                timestamp: Date.now()\n            }));\n            privacyAccepted = true;\n            privacyNotice.slideUp(300);\n            input.prop('disabled', false);\n            submitBtn.prop('disabled', false);\n            input.focus();\n        });\n        \n        \/\/ Fetch nonce fresco all'avvio\n        fetchFreshNonce();\n        \n        \/\/ Hide floating chat if configured\n        if (container.data('hide-floating') === true || container.data('hide-floating') === 'true') {\n            \/\/ Hide with CSS important to override any styles\n            $('<style>.ai-assistant-widget.floating, .ai-assistant-widget[class*=\"floating\"] { display: none !important; }<\/style>').appendTo('head');\n        }\n        \n        \/\/ Submit on button click\n        submitBtn.on('click', function() {\n            if (!privacyAccepted) return;\n            submitQuestion();\n        });\n        \n        \/\/ Submit on Enter key\n        input.on('keydown', function(e) {\n            if (e.key === 'Enter' && !e.shiftKey) {\n                e.preventDefault();\n                if (!privacyAccepted) return;\n                submitQuestion();\n            }\n        });\n        \n        \/\/ Click on suggestion\n        container.on('click', '.ai-searchbar-suggestion', function() {\n            if (!privacyAccepted) return;\n            var question = $(this).data('question');\n            input.val(question);\n            submitQuestion();\n        });\n        \n        \/\/ Close response\n        closeBtn.on('click', function() {\n            response.slideUp(300);\n        });\n        \n        \/\/ Restart\n        restartBtn.on('click', function() {\n            chatHistory = [];\n            sessionId = '';\n            response.slideUp(300);\n            container.removeClass('has-response'); \/\/ Mostra di nuovo i suggerimenti\n            input.val('').focus();\n        });\n        \n        \/\/ Show history\n        historyBtn.on('click', function() {\n            showHistory();\n        });\n        \n        \/\/ Close history\n        historyCloseBtn.on('click', function() {\n            closeHistory();\n        });\n        \n        \/\/ Download chat\n        downloadBtn.on('click', function() {\n            downloadChat();\n        });\n        \n        \/\/ Detect mobile device\n        var isMobile = \/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\/i.test(navigator.userAgent);\n        \n        function submitQuestion(isRetry) {\n            var question = isRetry ? pendingQuestion : input.val().trim();\n            \n            if (!question || isProcessing) return;\n            \n            \/\/ Nascondi i suggerimenti\n            container.addClass('has-response');\n            \n            \/\/ Se il nonce non \u00e8 ancora pronto, richiediamolo prima\n            if (!aiAssistant.nonce) {\n                pendingQuestion = question;\n                input.val('');\n                isProcessing = true;\n                submitBtn.prop('disabled', true);\n                typing.show();\n                \n                fetchFreshNonce().then(function(success) {\n                    if (success) {\n                        typing.hide();\n                        isProcessing = false;\n                        submitQuestion(true);\n                    } else {\n                        typing.hide();\n                        isProcessing = false;\n                        submitBtn.prop('disabled', false);\n                        responseContent.html('<p style=\"color: #d63638;\">' + aiAssistant.i18n.error + '<\/p>');\n                        response.slideDown(300);\n                    }\n                });\n                return;\n            }\n            \n            isProcessing = true;\n            submitBtn.prop('disabled', true);\n            pendingQuestion = question;\n            \n            \/\/ Svuota l'input subito\n            if (!isRetry) {\n                input.val('');\n            }\n            \n            \/\/ Su mobile, rimuovi il focus per nascondere la tastiera\n            if (isMobile) {\n                input.blur();\n            }\n            \n            \/\/ Se c'\u00e8 gi\u00e0 una risposta visibile, fai fade-out fluido prima di mostrare typing\n            if (response.is(':visible')) {\n                response.addClass('fade-out');\n                setTimeout(function() {\n                    response.hide().removeClass('fade-out');\n                    typing.show();\n                    scrollToTop();\n                    sendRequest(question);\n                }, 300);\n            } else {\n                typing.show();\n                scrollToTop();\n                sendRequest(question);\n            }\n        }\n        \n        function sendRequest(question) {\n            \/\/ Mostra la domanda nell'area dedicata\n            container.find('.ai-searchbar-question-text').text(question);\n            \n            $.ajax({\n                url: aiAssistant.ajaxUrl,\n                method: 'POST',\n                data: {\n                    action: 'ai_assistant_chat',\n                    nonce: aiAssistant.nonce,\n                    message: question,\n                    session_id: sessionId\n                },\n                success: function(res) {\n                    typing.hide();\n                    isProcessing = false;\n                    submitBtn.prop('disabled', false);\n                    pendingQuestion = null;\n                    \n                    \/\/ Rimetti il focus sull'input solo su desktop\n                    if (!isMobile) {\n                        input.focus();\n                    }\n                    \n                    if (res.success) {\n                        sessionId = res.data.session_id;\n                        \n                        \/\/ Save to history\n                        chatHistory.push({\n                            question: question,\n                            answer: res.data.message,\n                            time: new Date().toLocaleString()\n                        });\n                        \n                        var formattedResponse = formatResponse(res.data.message);\n                        \n                        \/\/ Controlla se la risposta \u00e8 stata troncata\n                        if (res.data.is_truncated) {\n                            formattedResponse += '<button type=\"button\" class=\"ai-searchbar-continue-btn\" data-partial=\"' + escapeHtml(res.data.message).replace(\/\"\/g, '&quot;') + '\">' + (aiAssistant.i18n.continue || 'Continua...') + '<\/button>';\n                        }\n                        \n                        responseContent.html(formattedResponse);\n                        \n                        \/\/ Bind evento per il pulsante Continua\n                        responseContent.find('.ai-searchbar-continue-btn').on('click', function() {\n                            continueResponse($(this));\n                        });\n                        \n                        \/\/ Mostra la risposta e scrolla all'inizio del contenuto\n                        response.slideDown(300, function() {\n                            responseContent.scrollTop(0);\n                            scrollToTop();\n                        });\n                    } else {\n                        \/\/ Controlla se \u00e8 un errore di nonce scaduto\n                        if (res.data?.message && res.data.message.toLowerCase().includes('nonce')) {\n                            refreshNonceAndRetry(question);\n                        } else {\n                            var errorMsg = res.data?.message || aiAssistant.i18n.error;\n                            responseContent.html('<p style=\"color: #d63638;\">' + escapeHtml(errorMsg) + '<\/p>');\n                            response.slideDown(300, function() {\n                                responseContent.scrollTop(0);\n                                scrollToTop();\n                            });\n                        }\n                    }\n                },\n                error: function(xhr) {\n                    \/\/ Se errore 403, potrebbe essere nonce scaduto\n                    if (xhr.status === 403 || xhr.status === 400) {\n                        refreshNonceAndRetry(question);\n                    } else {\n                        typing.hide();\n                        isProcessing = false;\n                        submitBtn.prop('disabled', false);\n                        pendingQuestion = null;\n                        if (!isMobile) {\n                            input.focus();\n                        }\n                        responseContent.html('<p style=\"color: #d63638;\">' + aiAssistant.i18n.error + '<\/p>');\n                        response.slideDown(300, function() {\n                            responseContent.scrollTop(0);\n                        });\n                    }\n                }\n            });\n        }\n        \n        function refreshNonceAndRetry(question) {\n            fetchFreshNonce().then(function(success) {\n                if (success) {\n                    sendRequest(question);\n                } else {\n                    typing.hide();\n                    isProcessing = false;\n                    submitBtn.prop('disabled', false);\n                    pendingQuestion = null;\n                    responseContent.html('<p style=\"color: #d63638;\">' + aiAssistant.i18n.error + '<\/p>');\n                    response.slideDown(300, function() {\n                        responseContent.scrollTop(0);\n                    });\n                }\n            });\n        }\n        \n        function showHistory() {\n            if (chatHistory.length === 0) {\n                historyContent.html('<div class=\"ai-searchbar-history-empty\">Nessuna conversazione ancora.<\/div>');\n            } else {\n                var html = '';\n                chatHistory.forEach(function(item) {\n                    html += '<div class=\"ai-searchbar-history-item\">';\n                    html += '<div class=\"ai-searchbar-history-question\">' + escapeHtml(item.question) + '<\/div>';\n                    html += '<div class=\"ai-searchbar-history-answer\">' + escapeHtml(item.answer) + '<\/div>';\n                    html += '<\/div>';\n                });\n                historyContent.html(html);\n            }\n            \n            \/\/ Add backdrop\n            $('<div class=\"ai-searchbar-backdrop\"><\/div>').appendTo('body').on('click', closeHistory);\n            historyModal.show();\n        }\n        \n        function closeHistory() {\n            historyModal.hide();\n            $('.ai-searchbar-backdrop').remove();\n        }\n        \n        function downloadChat() {\n            if (chatHistory.length === 0) {\n                alert('Nessuna conversazione da scaricare.');\n                return;\n            }\n            \n            var text = 'Conversazione AI Assistant\\n';\n            text += 'Data: ' + new Date().toLocaleString() + '\\n';\n            text += '========================================\\n\\n';\n            \n            chatHistory.forEach(function(item, index) {\n                text += '--- Domanda ' + (index + 1) + ' ---\\n';\n                text += item.question + '\\n\\n';\n                text += '--- Risposta ---\\n';\n                text += item.answer + '\\n\\n';\n                text += '----------------------------------------\\n\\n';\n            });\n            \n            var blob = new Blob([text], { type: 'text\/plain;charset=utf-8' });\n            var url = URL.createObjectURL(blob);\n            var a = document.createElement('a');\n            a.href = url;\n            a.download = 'chat-ai-assistant-' + new Date().toISOString().slice(0,10) + '.txt';\n            document.body.appendChild(a);\n            a.click();\n            document.body.removeChild(a);\n            URL.revokeObjectURL(url);\n        }\n        \n        function formatResponse(text) {\n            text = escapeHtml(text);\n            \n            \/\/ Prima converti i link Markdown [testo](url) in HTML\n            text = text.replace(\/\\[([^\\]]+)\\]\\(([^)]+)\\)\/g, '<a href=\"$2\" target=\"_blank\" rel=\"noopener noreferrer\">$1<\/a>');\n            \n            var paragraphs = text.split(\/\\n\\n+\/);\n            if (paragraphs.length > 1) {\n                text = paragraphs.map(function(p) {\n                    return '<p>' + p.replace(\/\\n\/g, '<br>') + '<\/p>';\n                }).join('');\n            } else {\n                text = '<p>' + text.replace(\/\\n\/g, '<br>') + '<\/p>';\n            }\n            \n            text = text.replace(\/\\*\\*(.*?)\\*\\*\/g, '<strong>$1<\/strong>');\n            text = text.replace(\/\\*(.*?)\\*\/g, '<em>$1<\/em>');\n            \n            \/\/ Converti URL semplici che non sono gi\u00e0 dentro un tag <a>\n            \/\/ Proteggi i link esistenti, converti, poi ripristina\n            var placeholder = '___LINK___';\n            var existingLinks = [];\n            text = text.replace(\/<a [^>]*>.*?<\\\/a>\/g, function(match) {\n                existingLinks.push(match);\n                return placeholder + (existingLinks.length - 1) + '___';\n            });\n            \n            text = text.replace(\/(https?:\\\/\\\/[^\\s<]+)\/g, '<a href=\"$1\" target=\"_blank\" rel=\"noopener noreferrer\">$1<\/a>');\n            \n            existingLinks.forEach(function(link, i) {\n                text = text.replace(placeholder + i + '___', link);\n            });\n            \n            return text;\n        }\n        \n        function continueResponse($button) {\n            if (isProcessing) return;\n            \n            var partialResponse = $button.data('partial');\n            \n            \/\/ Disabilita il pulsante e mostra stato di caricamento\n            $button.prop('disabled', true).text(aiAssistant.i18n.continuing || 'Sto continuando...');\n            isProcessing = true;\n            \n            $.ajax({\n                url: aiAssistant.ajaxUrl,\n                method: 'POST',\n                data: {\n                    action: 'ai_assistant_continue',\n                    nonce: aiAssistant.nonce,\n                    session_id: sessionId,\n                    partial_response: partialResponse\n                },\n                success: function(res) {\n                    isProcessing = false;\n                    \n                    if (res.success) {\n                        \/\/ Aggiorna il contenuto con la continuazione\n                        var currentContent = chatHistory[chatHistory.length - 1].answer;\n                        var fullContent = currentContent + ' ' + res.data.message;\n                        \n                        \/\/ Aggiorna la cronologia\n                        chatHistory[chatHistory.length - 1].answer = fullContent;\n                        \n                        \/\/ Aggiorna il DOM\n                        var formattedResponse = formatResponse(fullContent);\n                        \n                        \/\/ Se ancora troncata, aggiungi nuovo pulsante\n                        if (res.data.is_truncated) {\n                            formattedResponse += '<button type=\"button\" class=\"ai-searchbar-continue-btn\" data-partial=\"' + escapeHtml(fullContent).replace(\/\"\/g, '&quot;') + '\">' + (aiAssistant.i18n.continue || 'Continua...') + '<\/button>';\n                        }\n                        \n                        responseContent.html(formattedResponse);\n                        \n                        \/\/ Bind evento per il nuovo pulsante Continua (se presente)\n                        responseContent.find('.ai-searchbar-continue-btn').on('click', function() {\n                            continueResponse($(this));\n                        });\n                        \n                        \/\/ Scrolla in basso per mostrare il nuovo contenuto\n                        responseContent.scrollTop(responseContent[0].scrollHeight);\n                    } else {\n                        $button.prop('disabled', false).text(aiAssistant.i18n.continue || 'Continua...');\n                        \n                        \/\/ Se errore nonce, riprova\n                        if (res.data?.message && res.data.message.toLowerCase().includes('nonce')) {\n                            refreshNonceAndRetryContinue($button);\n                        } else {\n                            alert(res.data?.message || aiAssistant.i18n.error);\n                        }\n                    }\n                },\n                error: function() {\n                    isProcessing = false;\n                    $button.prop('disabled', false).text(aiAssistant.i18n.continue || 'Continua...');\n                    alert(aiAssistant.i18n.error);\n                }\n            });\n        }\n        \n        function refreshNonceAndRetryContinue($button) {\n            fetchFreshNonce().then(function(success) {\n                if (success) {\n                    continueResponse($button);\n                } else {\n                    alert(aiAssistant.i18n.error);\n                }\n            });\n        }\n        \n        function escapeHtml(text) {\n            var div = document.createElement('div');\n            div.textContent = text;\n            return div.innerHTML;\n        }\n    });\n})(jQuery);\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-2","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/aipalmieri.w3d.it\/index.php?rest_route=\/wp\/v2\/pages\/2","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aipalmieri.w3d.it\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aipalmieri.w3d.it\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aipalmieri.w3d.it\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aipalmieri.w3d.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2"}],"version-history":[{"count":3,"href":"https:\/\/aipalmieri.w3d.it\/index.php?rest_route=\/wp\/v2\/pages\/2\/revisions"}],"predecessor-version":[{"id":16,"href":"https:\/\/aipalmieri.w3d.it\/index.php?rest_route=\/wp\/v2\/pages\/2\/revisions\/16"}],"wp:attachment":[{"href":"https:\/\/aipalmieri.w3d.it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}