@font-face{font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;src:url(/wp-content/fonts/inter/inter-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;src:url(/wp-content/fonts/inter/inter-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;src:url(/wp-content/fonts/jetbrains-mono/jetbrains-mono-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;src:url(/wp-content/fonts/jetbrains-mono/jetbrains-mono-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--inf-brand-50:#F9F3F9;--inf-brand-100:#F1E4F1;--inf-brand-200:#E1C8E0;--inf-brand-300:#CBA4CA;--inf-brand-400:#AC71AB;--inf-brand-500:#964494;--inf-brand-600:#763374;--inf-brand-700:#5E2A5D;--inf-brand-800:#491F48;--inf-brand-900:#331733;--inf-eco-50:#F4FBEC;--inf-eco-100:#E4F6D2;--inf-eco-300:#A7E97A;--inf-eco-400:#76D92B;--inf-eco-500:#56C000;--inf-eco-600:#449A0A;--inf-eco-700:#33710F;--inf-eco-800:#26550D;--inf-eco-text:var(--inf-eco-700);--inf-eco-surface:var(--inf-eco-50);--inf-eco-border:rgba(86,192,0,.28);--inf-0:#FFFFFF;--inf-25:#FCFBFC;--inf-50:#F7F5F8;--inf-100:#EFEBF1;--inf-200:#DFD9E3;--inf-300:#C4BCCA;--inf-400:#9B92A3;--inf-500:#756D7D;--inf-600:#57505F;--inf-700:#423C49;--inf-800:#2C2832;--inf-900:#1B181F;--inf-950:#121016;--inf-page:var(--inf-50);--inf-card:var(--inf-0);--inf-sunken:var(--inf-100);--inf-border:var(--inf-200);--inf-text:var(--inf-900);--inf-body:var(--inf-700);--inf-muted:var(--inf-500);--inf-faint:var(--inf-400);--inf-link:var(--inf-brand-700);--inf-on-brand:#FFFFFF;--inf-sans:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;--inf-mono:'JetBrains Mono',ui-monospace,monospace;--inf-r-control:10px;--inf-r-card:14px;--inf-r-feature:20px;--inf-shadow-sm:0 1px 2px rgba(27,24,31,.04), 0 8px 20px -10px rgba(27,24,31,.13);--inf-shadow-md:0 2px 4px rgba(27,24,31,.05), 0 20px 38px -14px rgba(150,68,148,.26);--inf-focus:0 0 0 3px rgba(150,68,148,.38)}html[data-theme="dark"]{--inf-page:#121016;--inf-card:#1C1922;--inf-sunken:#17141C;--inf-border:#332C3B;--inf-text:#F5F1F7;--inf-body:#CBC3D2;--inf-muted:#948B9D;--inf-faint:#968C9F;--inf-link:#CBA4CA;--inf-brand-500:#B982B7;--inf-brand-600:#C897C6;--inf-on-brand:#1B0F18;--inf-eco-text:#A7E97A;--inf-eco-surface:rgba(86,192,0,.13);--inf-eco-border:rgba(118,217,43,.32);--inf-shadow-sm:0 1px 2px rgba(0,0,0,.4), 0 12px 26px -14px rgba(0,0,0,.7);--inf-shadow-md:0 2px 6px rgba(0,0,0,.45), 0 22px 44px -16px rgba(185,130,183,.3)}body,body.elementor-page,.elementor-widget-container,button,input,select,textarea{font-family:var(--inf-sans)!important}body{color:var(--inf-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,.elementor-heading-title,.entry-title{font-family:var(--inf-sans)!important;letter-spacing:-.02em;text-wrap:pretty}h1,h2,.elementor-widget-heading h1.elementor-heading-title,.elementor-widget-heading h2.elementor-heading-title,.ce-page-header h1{text-transform:none!important}.elementor-element-7587ae7 .elementor-heading-title{text-transform:none!important;letter-spacing:0!important}h6{font-family:var(--inf-sans)!important;letter-spacing:.12em}code,kbd,samp,.inf-mono{font-family:var(--inf-mono);font-size:.92em}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:none;box-shadow:var(--inf-focus);border-radius:6px}.inf-skip-link{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}.inf-skip-link:focus{left:16px;top:16px;z-index:100000;width:auto;height:auto;background:var(--inf-card);color:var(--inf-text);padding:10px 16px;border-radius:var(--inf-r-control);box-shadow:var(--inf-shadow-md);font-size:14.5px;font-weight:600}.cpel-switcher__list{display:flex;align-items:center;gap:0;border:1px solid var(--inf-border);border-radius:999px;overflow:hidden;padding:0;margin:0;list-style:none}.cpel-switcher__lang{margin:0!important}.cpel-switcher__lang>a{display:flex;align-items:center;justify-content:center;min-width:40px;min-height:26px;padding:3px 11px;font-size:12px;font-weight:600;letter-spacing:.04em;color:var(--inf-muted)!important;text-decoration:none}.cpel-switcher__lang>a:hover{background:var(--inf-sunken);color:var(--inf-text)!important}.cpel-switcher__lang--active>a{background:var(--inf-brand-100);color:var(--inf-brand-700)!important}.cpel-switcher__flag{display:none!important}.cpel-switcher__lang>a::after{content:attr(lang);text-transform:uppercase}.cpel-switcher__lang>a[lang^="it"]::after{content:"IT"}.cpel-switcher__lang>a[lang^="en"]::after{content:"EN"}#masthead .mainmenu-infordata .ce-nav-menu a.ce-menu-item{font-family:var(--inf-sans)!important;font-size:14.5px!important;font-weight:500!important;letter-spacing:0!important;text-transform:none!important;color:var(--inf-body)!important;padding:0 11px!important;min-height:44px;display:inline-flex;align-items:center;gap:5px;border-radius:var(--inf-r-control);transition:color .18s ease,box-shadow .18s ease,background-color .18s ease}#masthead .mainmenu-infordata .ce-nav-menu a.ce-menu-item:hover{color:var(--inf-brand-700)!important;background:var(--inf-sunken)}#masthead .mainmenu-infordata .menu-item.current-menu-item a.ce-menu-item,#masthead .mainmenu-infordata .menu-item.current-menu-ancestor a.ce-menu-item,#masthead .mainmenu-infordata .menu-item.current-menu-parent a.ce-menu-item{background-color:transparent!important;color:var(--inf-text)!important;box-shadow:inset 0 -2px 0 0 var(--inf-brand-500);border-radius:0}@media (min-width:1025px){#masthead .mainmenu-infordata .ce-nav-menu ul.sub-menu{background:var(--inf-card)!important;border:1px solid var(--inf-border);border-radius:var(--inf-r-card);box-shadow:var(--inf-shadow-md);padding:10px!important;min-width:300px}#masthead .mainmenu-infordata ul.ce-nav-menu>li>ul.sub-menu:has(>li:nth-child(7)){columns:2;column-gap:20px;min-width:560px}#masthead .mainmenu-infordata ul.ce-nav-menu>li>ul.sub-menu>li{break-inside:avoid}#masthead .mainmenu-infordata ul.sub-menu li.menu-item-has-children>a.ce-sub-menu-item{font-size:11px!important;font-weight:700!important;letter-spacing:.12em;text-transform:uppercase!important;color:var(--inf-faint)!important;padding:14px 12px 4px!important;min-height:0}#masthead .mainmenu-infordata ul.sub-menu li.menu-item-has-children>a.ce-sub-menu-item:hover{background:transparent!important;color:var(--inf-muted)!important}#masthead .mainmenu-infordata ul.sub-menu .sub-arrow{display:none!important}#masthead .mainmenu-infordata .ce-nav-menu ul.sub-menu a.ce-sub-menu-item{display:block;font-family:var(--inf-sans)!important;font-size:14px!important;font-weight:500!important;text-transform:none!important;letter-spacing:0!important;color:var(--inf-text)!important;background:transparent!important;padding:9px 12px!important;border-radius:var(--inf-r-control);line-height:1.35}#masthead .mainmenu-infordata .ce-nav-menu ul.sub-menu a.ce-sub-menu-item:hover{background:var(--inf-sunken)!important;color:var(--inf-brand-700)!important}#masthead .mainmenu-infordata .ce-nav-menu ul.sub-menu .current-menu-item>a.ce-sub-menu-item{background:var(--inf-brand-50)!important;color:var(--inf-brand-700)!important}#masthead .mainmenu-infordata .ce-nav-menu ul.sub-menu .menu-item-description{display:block;margin-top:2px;font-size:12.5px;font-weight:400;line-height:1.4;color:var(--inf-muted)}#masthead .mainmenu-infordata .ce-nav-menu ul.sub-menu ul.sub-menu{position:static!important;visibility:inherit!important;opacity:1!important;height:auto!important;transition:none!important;box-shadow:none;border:0;border-left:2px solid var(--inf-brand-100);border-radius:0;margin:2px 0 6px!important;padding:0 0 0 12px!important;min-width:0;columns:1}#masthead .mainmenu-infordata .ce-nav-menu ul.sub-menu ul.sub-menu a.ce-sub-menu-item{font-size:13.5px!important;color:var(--inf-body)!important;padding:7px 10px!important}}@media (max-width:1024px){#masthead .mainmenu-infordata .ce-nav-menu a.ce-menu-item,#masthead .mainmenu-infordata .ce-nav-menu a.ce-sub-menu-item{min-height:48px;font-size:16px!important}#masthead .mainmenu-infordata .ce-nav-menu ul.sub-menu a.ce-sub-menu-item{padding-left:24px!important;text-transform:none!important;letter-spacing:0!important}#masthead .elementor-social-icon,.cpel-switcher__lang>a{position:relative}#masthead .elementor-social-icon::after,.cpel-switcher__lang>a::before{content:"";position:absolute;left:50%;top:50%;width:38px;height:38px;transform:translate(-50%,-50%)}}.ce-page-header.modern,.ce-page-header{background:var(--inf-card)!important;border-bottom:1px solid var(--inf-border);padding:30px 0 34px!important;min-height:0!important}.ce-page-header .bg-image,.ce-page-header .wrapper-layers,.ce-page-header .elementor-background-overlay{display:none!important}.ce-page-header .page-data h1,.ce-page-header h1{color:var(--inf-text)!important;font-size:clamp(28px, 3.2vw, 40px)!important;line-height:1.12!important;font-weight:700!important;letter-spacing:-.025em!important;text-transform:none!important;text-shadow:none!important;margin:0}.ce-page-header .page-data{padding-top:0!important;padding-bottom:0!important;align-items:flex-start!important;justify-content:flex-start!important;text-align:left!important}.ce-page-header .page-data h1{margin-bottom:0!important}.ce-page-header .page-data .page_parents{margin-top:10px}.archive .ce-page-header,.archive.tag .ce-page-header,.archive.category-sostenibilita .ce-page-header{background-image:none!important;padding-top:30px!important;padding-bottom:34px!important}.cl-single-blog-header-style-with_image.single-post .cl-post-header{padding-top:48px!important;padding-bottom:40px!important}.cl-single-blog-header-style-with_image.single-post .cl-post-header h1,.cl-single-blog-header-style-with_image.single-post .cl-post-header .entry-meta{text-shadow:none!important}.entry-content img:not([src*=".svg"]),.content-col .wp-block-image img{border-radius:var(--inf-r-card)}.elementor-button,.wp-block-button__link,button[type="submit"],input[type="submit"]{font-family:var(--inf-sans)!important;font-weight:600!important;letter-spacing:0!important;text-transform:none!important;border-radius:var(--inf-r-control)!important;min-height:44px}@media (prefers-reduced-motion:no-preference){.elementor-button:active,.wp-block-button__link:active{transform:translateY(.5px) scale(.992)}.blog-entries article,.elementor-widget .ce-posts-grid .ce-post-item{transition:transform .18s cubic-bezier(.2,.7,.3,1),box-shadow .18s ease,border-color .18s ease}.blog-entries article:hover,.elementor-widget .ce-posts-grid .ce-post-item:hover{transform:translateY(-3px);box-shadow:var(--inf-shadow-md)}}.elementor-post__excerpt p,.elementor-post__excerpt{color:var(--inf-muted)!important}.elementor-post-date,.elementor-post-meta .elementor-post-date{color:var(--inf-muted)!important}.inf-jobs__eyebrow{color:var(--inf-muted)!important}.feedaty_widget .fdt_txt_reviews,.feedaty_widget .fdt_txt_opinions{color:var(--inf-muted)!important}.tagcloud,.widget_tag_cloud .tagcloud{display:flex;flex-wrap:wrap;gap:6px;max-height:168px;overflow:hidden}.tagcloud.inf-tags--all{max-height:none}.tagcloud a{font-size:12.5px!important;font-weight:500;text-transform:none;padding:5px 10px;margin:0!important;border:1px solid var(--inf-border);border-radius:999px;background:var(--inf-card);color:var(--inf-body);line-height:1.4}.tagcloud a:hover{border-color:var(--inf-brand-300);color:var(--inf-brand-700)!important;text-decoration:none}#colophon .e-con-inner>a.e-con-full{border-radius:var(--inf-r-control)!important}#colophon a.e-con-full{flex:0 0 auto!important;width:auto!important;min-width:0!important;max-width:none!important;height:64px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:10px;padding:8px 18px!important}#colophon a.e-con-full img{height:40px!important;max-height:none!important;width:auto!important;max-width:none!important;object-fit:contain!important;display:block!important}#colophon a.e-con-full img[alt*="MePA"],#colophon a.e-con-full img[alt*="Agenzia"],#colophon a.e-con-full img[src*="cybersicu"]{height:44px!important}#colophon a.e-con-full .elementor-widget-image,#colophon a.e-con-full .elementor-widget-container,#colophon a.e-con-full figure,#colophon a.e-con-full picture{width:auto!important;max-width:none!important}#colophon a.e-con-full p,#colophon a.e-con-full .elementor-widget-text-editor,#colophon a.e-con-full .elementor-widget-heading{display:none!important}#colophon .e-con-inner>a.e-con-full p,#colophon .e-con-inner>a.e-con-full .elementor-widget-text-editor{font-size:11.5px!important;line-height:1.4}#colophon .e-con-inner>a.e-con-full>.elementor-element{margin-block:0!important}#colophon .elementor-element-0673c26{position:relative}#colophon .elementor-element-0673c26::after{content:"";position:absolute;inset:0;background:rgb(27 24 31 / .5);pointer-events:none;border-radius:inherit}#colophon .elementor-element-0673c26>*{position:relative;z-index:1}#colophon img[alt*="certificazione"],#colophon img[alt*="MePA"],#colophon img[alt*="Synesgy"]{max-height:44px!important;width:auto!important}#colophon img[alt="Infordata Sistemi"]{height:40px!important;max-height:40px!important;width:auto!important}#colophon img[alt="Società Benefit"]{max-height:52px!important;width:auto!important}#colophon img[alt*="Bandiera"]{max-height:20px!important;width:auto!important}@media (max-width:1024px){#colophon .ce-footer-nav a,#colophon .ce-footer-nav__item a{display:flex;align-items:center;min-height:44px}#colophon .ce-footer-nav-layout-horizontal .ce-footer-nav__item a{padding-inline:2px}}.elementor-1737 .elementor-element-1f99d3c,.elementor-5758 .elementor-element-1f99d3c,.elementor-element-0aaa680{position:relative}.elementor-element-0aaa680::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0}.elementor-element-0aaa680::after{background:rgb(255 255 255 / .7)}.elementor-1737 .elementor-element-1f99d3c>*,.elementor-5758 .elementor-element-1f99d3c>*,.elementor-element-0aaa680>*{position:relative;z-index:1}.elementor-5758 .elementor-element-1f99d3c{position:relative}.elementor-5758 .elementor-element-1f99d3c::before{content:"";position:absolute;inset:0;background:linear-gradient(96deg,#0f0b15 0%,rgb(15 11 21 / .94) 34%,rgb(15 11 21 / .62) 54%,rgb(15 11 21 / .12) 76%,#fff0 100%);pointer-events:none;z-index:0}@media (max-width:767px){.elementor-5758 .elementor-element-1f99d3c::before{background:linear-gradient(180deg,rgb(15 11 21 / .92) 30%,rgb(15 11 21 / .72) 100%)}}.inf-pill-eco{display:inline-flex;align-items:center;gap:9px;padding:7px 14px;border-radius:999px;border:1px solid var(--inf-eco-border);background:rgb(86 192 0 / .12);color:var(--inf-eco-700);font-size:12.5px;font-weight:600}.inf-pill-eco::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--inf-eco-500)}.inf-band-research .inf-pill-eco,html[data-theme="dark"] .inf-pill-eco{color:var(--inf-eco-300)}.inf-band-research .inf-pill-eco::before,html[data-theme="dark"] .inf-pill-eco::before{background:var(--inf-eco-400);box-shadow:0 0 12px var(--inf-eco-400)}.inf-band-research,.inf-band-research.e-con{background:linear-gradient(100deg,var(--inf-brand-900) 0%,var(--inf-brand-900) 38%,color-mix(in oklab,var(--inf-brand-900),var(--inf-eco-800) 62%) 78%,var(--inf-eco-800) 100%)!important;color:#fff}.inf-band-research .elementor-heading-title,.inf-band-research h2,.inf-band-research h3{color:#fff!important}.inf-band-research p,.inf-band-research li{color:rgb(255 255 255 / .82)}.inf-band-research a:not(.elementor-button){color:var(--inf-eco-300)}.elementor-button.inf-btn-eco,a.inf-btn-eco{background:var(--inf-eco-500)!important;color:#0E2404!important;font-weight:650;border-color:transparent!important}.elementor-button.inf-btn-eco:hover,a.inf-btn-eco:hover{background:var(--inf-eco-400)!important;color:#0E2404!important}.inf-benefit-badge{display:inline-block;font-size:9.5px;font-weight:700;letter-spacing:.08em;line-height:1.25;border:1px solid var(--inf-eco-border);background:rgb(86 192 0 / .12);border-radius:6px;padding:4px 6px;color:var(--inf-eco-300)}.inf-eco-link{color:var(--inf-eco-text)!important}@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.anwp-pg-wrap time.anwp-pg-published+time.anwp-pg-updated{display:none}:root{--inf-btn:#964494;--inf-btn-hover:#A85DA6;--inf-btn-active:#7E3480;--inf-btn-border:#7E3480;--inf-btn-ring:rgba(150,68,148,.30);--inf-btn-eco-hover:#E4F6D2;--inf-btn-eco-text:#33710F;--inf-btn-eco-border:rgba(86,192,0,.45);--inf-btn-shadow:0 1px 2px rgba(27,24,31,.10), 0 6px 14px -6px rgba(150,68,148,.38);--inf-btn-shadow-hover:0 2px 4px rgba(27,24,31,.10), 0 12px 22px -8px rgba(150,68,148,.46)}.elementor-button,.elementor-button-link,.wp-block-button__link,button[type="submit"],input[type="submit"]{background-color:var(--inf-btn)!important;color:#fff!important;border:1px solid var(--inf-btn-border)!important;border-radius:10px!important;box-shadow:var(--inf-btn-shadow)!important;text-transform:none!important;letter-spacing:0!important;font-weight:600!important;min-height:44px;transition:background-color .16s ease,box-shadow .16s ease,transform .16s ease}.elementor-button:hover,.elementor-button:focus-visible,.elementor-button-link:hover,.wp-block-button__link:hover,button[type="submit"]:hover,input[type="submit"]:hover{background-color:var(--inf-btn-hover)!important;color:#fff!important;border-color:var(--inf-btn-hover)!important;box-shadow:var(--inf-btn-shadow-hover)!important;transform:translateY(-1px)}.elementor-button:active,.wp-block-button__link:active{background-color:var(--inf-btn-active)!important;box-shadow:var(--inf-btn-shadow)!important;transform:translateY(.5px) scale(.994)}.elementor-button:focus-visible{outline:none;box-shadow:var(--inf-btn-shadow-hover),0 0 0 3px var(--inf-btn-ring)!important}.elementor-button .elementor-button-icon,.elementor-button .elementor-button-icon svg,.elementor-button i{color:currentColor!important;fill:currentColor!important}.elementor-button.inf-btn-outline{background-color:transparent!important;color:var(--inf-btn)!important;border:1px solid var(--inf-btn)!important;box-shadow:0 1px 2px rgb(27 24 31 / .06)!important}.elementor-button.inf-btn-outline:hover{background-color:var(--inf-btn-eco-hover)!important;color:var(--inf-btn-eco-text)!important;border-color:var(--inf-btn-eco-border)!important;box-shadow:0 2px 4px rgb(27 24 31 / .07),0 10px 20px -10px rgb(86 192 0 / .35)!important}.elementor-button.inf-btn-eco{background-color:#33710F!important;border-color:#26550D!important;box-shadow:0 1px 2px rgb(27 24 31 / .10),0 6px 14px -6px rgb(51 113 15 / .40)!important}.elementor-button.inf-btn-eco:hover{background-color:#449A0A!important;border-color:#449A0A!important}@media (prefers-reduced-motion:reduce){.elementor-button{transition:none!important}.elementor-button:hover{transform:none!important}}blockquote,.wp-block-quote,.entry-content blockquote{margin:32px 0!important;padding:24px 28px 24px 30px!important;background:linear-gradient(100deg,color-mix(in srgb,var(--inf-btn) 6%,#fff) 0%,color-mix(in srgb,var(--inf-btn) 3%,#fff) 100%);border:1px solid rgb(150 68 148 / .16);border-left:3px solid var(--inf-btn);border-radius:14px;box-shadow:0 1px 2px rgb(27 24 31 / .04);quotes:none}blockquote p,.wp-block-quote p{margin:0!important;font-size:17.5px!important;line-height:1.65!important;font-weight:500!important;color:#2C2832!important;max-width:68ch}blockquote p strong,.wp-block-quote p strong{font-weight:700!important;color:#1B181F!important}blockquote>*:last-child{margin-bottom:0!important}blockquote.inf-quote-eco,.wp-block-quote.inf-quote-eco{background:linear-gradient(100deg,#F4FBEC 0%,#FBFEF7 100%);border-color:rgb(86 192 0 / .24);border-left-color:#56C000}html[data-theme="dark"] blockquote,html[data-theme="dark"] .wp-block-quote{background:rgb(255 255 255 / .04);border-color:rgb(255 255 255 / .10);border-left-color:#B982B7}html[data-theme="dark"] blockquote p,html[data-theme="dark"] .wp-block-quote p{color:#CBC3D2!important}html[data-theme="dark"] blockquote p strong{color:#F5F1F7!important}html[data-theme="dark"] blockquote.inf-quote-eco{background:rgb(86 192 0 / .10);border-left-color:#76D92B}h1,.elementor-widget-heading h1.elementor-heading-title{line-height:1.08!important;letter-spacing:-.025em}h2,.elementor-widget-heading h2.elementor-heading-title{line-height:1.20!important;letter-spacing:-.02em}h3,.elementor-widget-heading h3.elementor-heading-title{line-height:1.28!important}h4,h5,h6,.elementor-widget-heading h4.elementor-heading-title{line-height:1.35!important}.elementor-widget-heading .elementor-heading-title{line-height:1.2!important;padding-bottom:.06em;text-wrap:pretty}.inf-lead,.inf-lead p{font-size:clamp(19px, 1.9vw, 25px)!important;line-height:1.45!important;font-weight:600!important;letter-spacing:-.01em;max-width:46ch;color:#2C2832}.elementor-widget-text-editor p,.entry-content p{line-height:1.65!important}.elementor-widget-text-editor p strong,.entry-content p strong{line-height:inherit}.inf-pill-eco{color:#33710F!important;background:rgb(86 192 0 / .10)!important;border-color:rgb(86 192 0 / .30)!important}.inf-pill-eco::before{background:#56C000;box-shadow:0 0 10px rgb(86 192 0 / .7)}.inf-list-eco{list-style:none;padding-left:0;display:flex;flex-direction:column;gap:9px}.inf-list-eco li{display:grid;grid-template-columns:20px 1fr;gap:11px;align-items:start;font-weight:600;color:#2C2832}.inf-list-eco li::before{content:"";width:15px;height:15px;margin-top:4px;background:#56C000;mask:var(--inf-check) center / contain no-repeat;-webkit-mask:var(--inf-check) center / contain no-repeat}:root{--inf-check:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><path d='M20 6 9 17l-5-5'/></svg>"); }

/* 4c. filetto verde sopra i blocchi di sostenibilità / ricerca */
.inf-rule-eco { border-top: 2px solid #56C000; padding-top: 16px; }

/* 4d. sezione a fondo verde chiarissimo (governance, Società 5.0) */
.inf-band-eco {
  background: #F4FBEC; border: 1px solid rgba(86,192,0,.28); border-radius: 16px;
  padding: 30px 36px;
}
.inf-band-eco h2, .inf-band-eco .elementor-heading-title { color: #33710F !important; }

/* 4e. card di un progetto di ricerca: bordo superiore verde */
.inf-card-eco { border-top: 3px solid #56C000 !important; }
/* card di un contenuto business: bordo superiore viola */
.inf-card-biz { border-top: 3px solid var(--inf-btn) !important; }

/* 4f. badge Società Benefit nel footer */
.inf-benefit-badge { color: #A7E97A !important; border-color: rgba(118,217,43,.32) !important;
  background: rgba(86,192,0,.12) !important; }

/* --- 5. Footer -----------------------------------------------------------
   PROBLEMA: cinque card bianche alte ~190px per contenere un logo da 26px;
   interlinea dei link a ~30px; loghi partner in riquadri di altezze e colori
   diversi; due sole colonne di link su otto sezioni di sito. Il footer occupa
   circa 620px di altezza per una quantità di informazione da 380px.
   SOLUZIONE: strip di certificazioni al posto delle card, ritmo verticale
   compattato, altezze dei loghi normalizzate, quattro colonne di link.
   ========================================================================== */

/* 5a. il campo. Il quasi-nero è la scelta consigliata: le cinque card bianche
   su viola sono il vero motivo per cui il footer "urla". Se il viola deve
   restare, usare la variante .inf-footer--purple più sotto. */
footer.elementor-location-footer, .site-footer {
  background: #121016 !important;
  color: rgba(255,255,255,.72);
  padding-top: 0 !important;
}
footer.elementor-location-footer .elementor-background-overlay { display: none !important; }

/* 5b. STRIP CERTIFICAZIONI — al posto delle cinque card.
   Sta su una fascia chiara sopra il campo scuro, alta ~90px invece di ~240px.
   Aggiungere la classe .inf-certs alla sezione che contiene i cinque widget. */
.inf-certs {
  display: flex !important; flex-wrap: wrap; align-items: stretch;
  justify-content: center; gap: 10px;
  background: #F7F5F8; padding: 18px 24px !important; margin: 0 !important;
}
.inf-certs > *,
.inf-certs .elementor-column,
.inf-certs .elementor-widget-wrap {
  flex: 0 1 auto !important; width: auto !important; max-width: 260px;
  padding: 0 !important; margin: 0 !important;
}
.inf-certs .elementor-widget {
  display: flex; align-items: center; gap: 11px;
  background: #fff; border: 1px solid #DFD9E3; border-radius: 10px;
  padding: 9px 13px !important; margin: 0 !important;
  min-height: 54px; box-shadow: 0 1px 2px rgba(27,24,31,.04);
}


.inf-certs img {
  max-height: 26px !important; width: auto !important; flex-shrink: 0;
  object-fit: contain;
}
.inf-certs p, .inf-certs .elementor-widget-text-editor, .inf-certs a {
  margin: 0 !important; text-align: left !important;
  font-size: 11.5px !important; line-height: 1.35 !important;
  font-weight: 500 !important; color: #57505F !important; max-width: 22ch;
}
.inf-certs strong { font-weight: 700 !important; color: #1B181F !important; }
.inf-certs .elementor-widget:hover { border-color: rgba(150,68,148,.35); }

/* 5c. RITMO VERTICALE — è il secondo problema, dopo le card.
   Oggi: interlinea dei link ~30px su testo da 13.5px (rapporto 2.2).
   Qui: 1.5, con lo spazio gestito dal gap del contenitore. */
footer .elementor-widget-container > ul,
footer .elementor-nav-menu,
.inf-footer-col ul {
  display: flex !important; flex-direction: column; gap: 9px;
  list-style: none; margin: 0 !important; padding: 0 !important;
}
footer li, .inf-footer-col li { margin: 0 !important; }
footer a, footer li a {
  font-size: 13.5px !important; line-height: 1.5 !important;
  color: rgba(255,255,255,.66) !important; text-decoration: none;
}
footer a:hover { color: #fff !important; }
footer h5, footer h4, footer .elementor-heading-title {
  font-size: 11px !important; font-weight: 700 !important;
  letter-spacing: .12em; text-transform: uppercase;
  color: #fff !important; margin: 0 0 12px !important; line-height: 1.3 !important;
}
footer p { font-size: 13.5px !important; line-height: 1.6 !important; margin: 0 !important; }
/* via i margini generosi dei widget: lo spazio lo fa la griglia */
footer .elementor-widget { margin-bottom: 0 !important; }
footer .elementor-section { padding-top: 0 !important; padding-bottom: 0 !important; }

/* 5d. GRIGLIA — logo a sinistra, quattro colonne di link, badge a destra.
   Aggiungere .inf-footer-grid alla sezione principale del footer. */
.inf-footer-grid {
  display: grid !important;
  grid-template-columns: 260px repeat(4, minmax(0,1fr)) 190px;
  gap: 40px 32px;
  max-width: 1240px; margin: 0 auto !important;
  padding: 44px 24px 32px !important;
}
@media (max-width: 1100px) {
  .inf-footer-grid { grid-template-columns: 240px repeat(2, minmax(0,1fr)); }
}
@media (max-width: 720px) {
  .inf-footer-grid { grid-template-columns: minmax(0,1fr); gap: 28px; padding: 32px 20px 24px !important; }
}

/* 5e. LOGHI — altezze normalizzate. Oggi il lockup Infordata sta in un riquadro
   bianco, il bollino SB è più alto, e i due badge partner hanno riquadri di
   colori e altezze diverse: sembrano tre sistemi grafici sovrapposti. */
.inf-footer-brand { display: flex; align-items: center; gap: 16px; margin-bottom: 16px; }
.inf-footer-brand img { width: auto !important; }
footer img[src*="logotipo"], footer img[src*="logo_infordata"], .inf-footer-brand img:first-child {
  max-height: 32px !important;          /* era ~40px dentro a un box bianco */
  background: none !important; padding: 0 !important;
}
footer img[src*="Benefit"], footer img[src*="benefit"] {
  max-height: 42px !important;          /* il bollino può stare un filo più alto del wordmark */
  opacity: .92;
}
/* badge partner: una sola riga, stessa altezza, stesso contenitore */
.inf-footer-badges { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.inf-footer-badges > *, .inf-footer-badges .elementor-widget { margin: 0 !important; }
.inf-footer-badges img {
  max-height: 38px !important; width: auto !important;
  background: #fff; border-radius: 8px; padding: 5px 8px;
  box-shadow: 0 1px 2px rgba(0,0,0,.25);
}
/* i loghi mono su fondo scuro vanno in bianco, non in un riquadro bianco */
.inf-logo-knockout { filter: brightness(0) invert(1); opacity: .9; }

/* 5f. RIGA LEGALE — filetto sottile, una riga, social a destra */
.inf-footer-legal {
  max-width: 1240px; margin: 0 auto !important;
  padding: 16px 24px 34px !important;
  border-top: 1px solid rgba(255,255,255,.10);
  display: flex; flex-wrap: wrap; align-items: center; gap: 14px;
  font-size: 12.5px !important; line-height: 1.5 !important;
  color: rgba(255,255,255,.5) !important;
}
.inf-footer-legal a { color: rgba(255,255,255,.6) !important; font-size: 12.5px !important; }
.inf-footer-legal .inf-social { margin-left: auto; display: flex; gap: 8px; }
.inf-footer-legal .inf-social a {
  width: 34px; height: 34px; border-radius: 9px;
  border: 1px solid rgba(255,255,255,.16);
  display: grid; place-items: center;
}
.inf-footer-legal .inf-social a:hover { background: rgba(255,255,255,.10); }

/* 5g. VARIANTE VIOLA — solo se il campo scuro non viene approvato.
   Il viola resta, ma le card bianche spariscono comunque: i chip diventano
   traslucidi, così il contrasto non spacca la pagina in due. */
footer.inf-footer--purple {
  background: linear-gradient(160deg, #8E3C8C 0%, #7E3480 100%) !important;
}
footer.inf-footer--purple .inf-certs {
  background: rgba(255,255,255,.08); backdrop-filter: blur(6px);
}
footer.inf-footer--purple .inf-certs .elementor-widget {
  background: rgba(255,255,255,.92); border-color: rgba(255,255,255,.5);
}

/* ===== PATCH-01 22/08/2026 — fine ====================================== */

/* --- 11. Footer certification strip -------------------------------------
   Moved here from theme_mods custom_css, where the session doing the markup
   had parked it because the client asked for the footer fix directly. Footer
   layout does not belong in theme_mods.

   Keyed to element ids, NOT to .inf-certs as patch-01 assumes, because on
   this install a container's _css_classes never reaches the DOM: the class
   is in _elementor_data for both footers (1727 node 098517b, 2539 node
   c4aaa3f) and renders zero times, while elementor-element-098517b renders
   eight. Verified, not assumed. The same is true of inf-problem-cards-section
   on the home, which only works because that class is hand-written inside an
   HTML widget. So every patch-01 rule scoped to a CONTAINER class is
   unreachable until someone adds a filter that emits them.

   Two corrections to the patch's own selectors, both needed here: the white
   card is `> .e-con`, because each certification is a container holding an
   image and a caption widget — `.inf-certs .elementor-widget` paints two
   boxes per card instead of one round the pair. And the inner widgets need
   align-self:center, because Elementor sets --container-widget-align-self:
   stretch and every card otherwise grows to the tallest in the row, which is
   the 227px boxes the client screenshotted.
   ------------------------------------------------------------------------ */

.elementor-element-098517b,
.elementor-element-c4aaa3f {
  display: flex !important;
  flex-wrap: nowrap;
  align-items: stretch;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  padding: 0 !important;
}
.elementor-element-098517b > .e-con,
.elementor-element-c4aaa3f > .e-con {
  flex: 1 1 0 !important;
  min-width: 0;
  max-width: none;
  min-height: 54px;
  display: flex !important;
  flex-direction: row !important;
  align-items: center;
  gap: 11px;
  background: #fff;
  border: 1px solid #DFD9E3;
  border-radius: 10px;
  padding: 9px 13px !important;
  margin: 0 !important;
  box-shadow: 0 1px 2px rgba(27,24,31,.06);
}
.elementor-element-098517b > .e-con:hover,
.elementor-element-c4aaa3f > .e-con:hover { border-color: rgba(150,68,148,.35); }
.elementor-element-098517b > .e-con > .elementor-widget,
.elementor-element-c4aaa3f > .e-con > .elementor-widget {
  width: auto !important;
  height: auto !important;
  align-self: center !important;
  margin: 0 !important;
  padding: 0 !important;
}
.elementor-element-098517b > .e-con img,
.elementor-element-c4aaa3f > .e-con img {
  max-height: 26px !important;
  width: auto !important;
  max-width: 74px;
  object-fit: contain;
  flex-shrink: 0;
}
.elementor-element-098517b > .e-con p,
.elementor-element-c4aaa3f > .e-con p {
  margin: 0 !important;
  text-align: left !important;
  font-size: 11.5px !important;
  line-height: 1.35 !important;
  color: #57505F !important;
}
@media (max-width: 767px) {
  .elementor-element-098517b > .e-con,
  .elementor-element-c4aaa3f > .e-con { max-width: 100%; }
}

/* The logo keeps its size; the caption is what shrinks. Without min-width:0 a
   flex item refuses to go below its content width, which is what let the longest
   caption push its chip wider than its share. */
.elementor-element-098517b > .e-con > .elementor-widget-image,
.elementor-element-c4aaa3f > .e-con > .elementor-widget-image { flex: 0 0 auto; }
.elementor-element-098517b > .e-con > .elementor-widget-text-editor,
.elementor-element-c4aaa3f > .e-con > .elementor-widget-text-editor { flex: 1 1 0; min-width: 0; }

/* Mobile: two per row rather than five stacked full-width, a bigger logo and
   less white around it — the client's words were "loghi troppo piccoli,troppo bordo bianco". */
@media (max-width: 767px) {
  /* !important on flex, because the desktop rule above carries it and would
     otherwise win inside this media query — five 69px chips, measured. */
  .elementor-element-098517b,
  .elementor-element-c4aaa3f { flex-wrap: wrap !important; gap: 8px; }
  .elementor-element-098517b > .e-con,
  .elementor-element-c4aaa3f > .e-con {
    flex: 1 1 calc(50% - 4px) !important;
    min-width: 0;
    min-height: 0;
    padding: 8px 10px !important;
  }
  .elementor-element-098517b > .e-con img,
  .elementor-element-c4aaa3f > .e-con img { max-height: 34px !important; max-width: 92px; }
  .elementor-element-098517b > .e-con p,
  .elementor-element-c4aaa3f > .e-con p { font-size: 11px !important; }
}

/* --- 12. Home hero headline clearance — lives on page 1737, not here --------
   Nothing to add in this file. Recorded because the reasoning cost three
   sessions an evening and the number looks arbitrary without it.

   The header is position:absolute and its height is not fixed: 151px at 360-767
   and at 1023, 167px at 1024, 179px at 768-834, where the nav wraps to a second
   row. The hero centres its content in a per-breakpoint min-height — 560px
   outside 768-1024, 440px inside it — so in that band the headline was clearing
   a taller header by 7px.

   Elementor applies a boxed container's vertical padding to `> .e-con-inner`,
   never to the container itself; reading padding-top on `.elementor-element-
   1f99d3c` returns 0px by design and says nothing about whether the builder
   value applies. Measuring the container instead of the inner element is what
   made this look unfixable from the builder for a while. It never was.

   Swept at 768 with padding on the inner element: 56 -> 15px clearance, 72 -> 23,
   88 -> 31, 104 -> 39, 112 -> 43, 128 -> 51, 144 -> 59, 176 -> 75. The page now
   carries padding_tablet 112 and padding_mobile 150.

   What bounds it is NOT hero height: the hero never grows and the CTA stays
   pinned 50px above its bottom at every value, so the padding eats the gap
   between the subtitle and the button. Comfortable at 112, tightening past ~144. */

/* --- 13. Right-hand menu panels must not run off the edge -------------------
   The dropdown panels are 320px and left-aligned to their item, so the ones near
   the right of the bar end outside the window: at 1440 the Contatti panel ended
   70px past it and the nested Supporto panel 81px. Closed at rest, so nothing
   looks wrong until the menu is opened — and then the panel is cut by the global
   overflow clip, with no scrollbar to recover it.

   SPECIFICITY IS THE WHOLE PROBLEM HERE. The theme has
     .ce-nav-menu .menu-item-has-children.ce-has-no-megamenu .sub-menu
       { position:absolute; left:0 }
   at 0-4-0. A first attempt at this rule used
     ul.ce-nav-menu > li:nth-last-child(-n+2) > ul.sub-menu
   which is 0-3-3 — class count decides before element count, so it lost, and the
   panel computed left:0 AND right:0 together, which for a fixed-width absolute
   box means left wins and nothing moves. It measured as working only because it
   was tested with !important injected and shipped without. Anything here has to
   carry at least five classes to beat the theme.

   Three tiers, all measured at 1440 / 1300 / 1200 / 1100 / 1025:
     - flip the last two panels above 1300;
     - flip every panel below 1300, because by then the nav is wide enough
       relative to the viewport that middle items overflow too;
     - the third level computes position:static and flows past the edge on its
       own, so it is floated to the left of its parent panel instead.

   The third-level rule is a stopgap. The handoff wants that level flattened into
   the panel's columns rather than existing as a flyout at all; when that lands,
   this rule goes with it. */
@media (min-width: 1025px) {
  .ce-nav-menu > li.menu-item-has-children.ce-has-no-megamenu:nth-last-child(-n+2) > .sub-menu {
    left: auto;
    right: 0;
  }
  /* Only the third level INSIDE a right-aligned panel flips. Flipping every
     third-level panel pushes the ones under early items (Soluzioni, Ricerca e
     innovazione) off the LEFT edge instead — measured at -56px at 1300 and -86px
     at 1200, which is the same defect mirrored. */
  .ce-nav-menu > li.menu-item-has-children.ce-has-no-megamenu:nth-last-child(-n+2) .sub-menu .sub-menu {
    position: absolute;
    top: 0;
    left: auto;
    right: 100%;
  }
}
/* Third level, outside the masthead. Section 4 already flattens it inside
   #masthead .mainmenu-infordata — position:static, indented, no flyout — which
   is what the handoff asks for. The news nav never got that treatment, so its
   third level stayed a flyout and the theme opened it to the LEFT of its parent:
   the panels under Sostenibilita sat 56px off the left edge at 1300, 86px at
   1200 and 109px at 1100, entirely off-screen and clipped by the global overflow
   rule, with no scrollbar to reach them.

   Flattening rather than repositioning, for two reasons: it is the behaviour the
   handoff specifies, and a flyout that opens sideways from a panel near either
   edge has no safe direction at narrow widths — every position rule trades one
   edge for the other, which is what the first two attempts here did. */
.ce-nav-menu:not(.mainmenu-infordata .ce-nav-menu) ul.sub-menu ul.sub-menu,
nav:not(#masthead nav) .ce-nav-menu ul.sub-menu ul.sub-menu {
  position: static !important;
  left: auto !important;
  right: auto !important;
  box-shadow: none;
  border: 0;
  border-left: 2px solid var(--inf-brand-100);
  border-radius: 0;
  margin: 2px 0 6px !important;
  padding: 0 0 0 12px !important;
  min-width: 0;
}

@media (min-width: 1025px) and (max-width: 1300px) {
  /* Below 1300 the nav is wide enough relative to the viewport that middle
     panels overflow too, so every panel right-aligns to its item. */
  .ce-nav-menu > li.menu-item-has-children.ce-has-no-megamenu:nth-last-child(-n+4) > .sub-menu {
    left: auto;
    right: 0;
  }
}

/* --- 11. Feedaty review carousel: keep it inside the page ------------------
   The merchant widget declares width:1080px under content-box, so its border
   box measures 1096 and its right edge lands past the viewport on any window
   narrower than about 1150. It was the last thing giving the site a horizontal
   scrollbar after the menu panels were fixed: 1106 against a 1100 viewport,
   1031 against 1025, 906 against 900, 774 against 768.

   Third-party markup built by the Feedaty script after load, so the class
   carries an instance id (fdt_carouselcarosello-2_widget_merchant) and has to
   be matched on a substring.

   The !important is not decoration and does not come off. box-sizing here is
   set by Feedaty's own stylesheet, served from their CDN, so it is cross-origin
   and its rules cannot be read or outranked by specificity from this sheet —
   three separate border-box declarations that DO match the element (`*`,
   `.elementor *`, and the plain-weight version of this rule) all lost to it.
   Verified with border-box forced: widget contained at 1600/1440/1200/1100/
   1025/900/768/390, keeping its height and all 24 review images.

   Unrelated but worth knowing if you touch this widget: the site's custom CSS
   carries `#fdt_carouselcarosello-2_widget_merchant { max-width:1125px
   !important }` in an inline <style> on the home page. It matches nothing — the
   element's real id is fdt_selettore1_widget_merchant, taken from data-id, not
   from the variant name. That rule is dead and has been for as long as the
   widget has derived its id that way. */
.feedaty_widget [class*="fdt_carousel"],
.feedaty_widget [class*="fdt_widget_wrapper"] {
  box-sizing: border-box !important;
  max-width: 100% !important;
}

/* --- 14. Footer, GoPlanner-style layout — 25/08/2026 -----------------------
   Client brief, holding goplanner.app's footer up as the reference: less
   interlinea and a more compact vertical rhythm; a bigger Infordata logo on the
   left carrying the address and the phone number; the MePA mark and the
   certification marks moved down to the left instead of banding across the top;
   feedaty and the Ariba badge sitting with them rather than in a column of
   their own.

   The structural half of that is a template edit, not a stylesheet one, and it
   has already been made — tools/oneoff/footer-goplanner-layout.php, which is
   idempotent and has a dry mode. It moved the credentials strip below the
   columns on both footer templates (2539 carries the CTA card and serves the
   home and /notizie/; 1727 serves everything else), moved the feedaty/Ariba
   container into that strip, inserted the address-and-phone widgets under the
   logo, and swapped the logo for the white knockout lockup, which already
   carries the Società Benefit roundel. Before-states are in
   backups-20260825-footer/.

   This section carries only the geometry, and it deliberately overrides parts
   of section 8 and section 11 rather than editing them: two other sessions work
   in this file, and appending is the rule here. Every override below is keyed to
   #colophon, which outranks the class-only selectors it supersedes, and says
   what it is superseding.
   -------------------------------------------------------------------------- */

/* 14a. VERTICAL RHYTHM — the first thing the client asked for.
   Measured before: each link sat in a 28px item with a 4px margin under it, so
   the column ran at a 32px rhythm on 13.5px text — a ratio of 2.4. The space
   now comes from padding inside the link, which is also its touch target, and
   the item's own margin goes to zero. Measured after: 26px. */
#colophon .ce-footer-nav__item { margin: 0 !important; }
#colophon .ce-footer-nav-layout-vertical { gap: 0 !important; }
#colophon .ce-footer-nav-layout-vertical .ce-footer-nav__item a {
  display: block;
  padding-block: 3px;
  font-size: 14px !important;
  line-height: 1.4 !important;
}
/* The row of policy links carried its spacing on each item's own margin, which
   the rule above zeroes for the vertical columns. It comes back as a gap on the
   row, where it belongs — without this the three links run together into one
   unreadable string. */
#colophon .ce-footer-nav-layout-horizontal {
  display: flex !important;
  flex-wrap: wrap;
  gap: 6px 20px !important;
}
#colophon .ce-footer-nav-layout-horizontal .ce-footer-nav__item a {
  font-size: 13.5px !important;
  line-height: 1.4 !important;
}
/* Section headings sat 12px off their list (patch-01 5c). Half of that reads as
   a group without the column looking gappy next to a 26px rhythm. */
#colophon .elementor-widget-heading .elementor-heading-title {
  margin: 0 0 6px !important;
  line-height: 1.25 !important;
}
/* The widgets in the left column were spaced by their own margins on top of the
   container gap, which is what made the block twice as tall as its content. */
#colophon .elementor-element-637a497 > .elementor-element,
#colophon .elementor-element-9c80586 > .elementor-element { margin-block: 0 !important; }
#colophon .elementor-element-637a497,
#colophon .elementor-element-9c80586 { gap: 12px; }
#colophon .elementor-element-856eff5 > .e-con-inner,
#colophon .elementor-element-1df5e59 > .e-con-inner { align-items: flex-start; }
/* Measured 62px of empty field between the bottom of the link columns and the
   credentials band, none of it doing any work. A boxed container carries its
   block padding on .e-con-inner and not on itself, so both have to be named —
   reading padding-top off the container returns 0px by design. */
#colophon .elementor-element-856eff5,
#colophon .elementor-element-1df5e59 { margin-bottom: 6px !important; }
#colophon .elementor-element-856eff5 > .e-con-inner,
#colophon .elementor-element-1df5e59 > .e-con-inner,
#colophon .elementor-element-d68d72e > .e-con-inner,
#colophon .elementor-element-1246fbc > .e-con-inner,
#colophon .elementor-element-4ce9e5d,
#colophon .elementor-element-2ba8a9a,
#colophon .elementor-element-cf100e9,
#colophon .elementor-element-8b9e615 { padding-block: 0 !important; }

/* 14b. THE LOGO — the knockout lockup, at a size that reads as the anchor of
   the column. It was 120x40 inside a white box; the box was the old asset's own
   background, not a container, which is why "make it bigger" made it worse.
   Keyed to the widget id rather than the alt text: attachment 9045 has no alt
   of its own, so the `img[alt="Infordata Sistemi"]` rule in section 8 no longer
   reaches it. */
/* The image widget on 2539 was sized by percent of a column that no longer
   holds two marks, so its box came out 180px wide. Forcing a height inside a
   box narrower than the lockup squeezes it: measured 180x56 against 225x56 on
   the other footer, the same file at two different aspect ratios. The box goes
   back to sizing from its contents. */
#colophon .elementor-element-da4e067,
#colophon .elementor-element-bd92d97 { width: auto !important; max-width: none !important; }
/* On 1727 the lockup sits in a two-column CSS grid that used to hold the
   separate Società Benefit mark as well. With one item left, the grid still
   gave it half the row — 225x56 for a file whose aspect is 4.35, so it was
   squeezed a second way. One column, sized to the mark. */
#colophon .elementor-element-d1980aa {
  grid-template-columns: minmax(0, max-content) !important;
}
#colophon .elementor-element-da4e067 .elementor-widget-container img,
#colophon .elementor-element-bd92d97 .elementor-widget-container img {
  height: 56px !important;
  max-height: 56px !important;
  width: auto !important;
  max-width: 100% !important;
  background: none !important;
  padding: 0 !important;
}

/* 14c. ADDRESS AND PHONE — the widget the template edit inserted. The markup is
   inside the text-editor's own HTML, so these classes do reach the DOM; a class
   set on a CONTAINER on this install does not (see section 11).
   Icons are masks rather than an icon font: nothing else in the footer pulls
   Font Awesome solid, and a missing glyph here would be a blank square on every
   page of the site. */
#colophon .inf-foot-contact {
  margin: 0 !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
  color: rgba(255, 255, 255, .88) !important;
}
#colophon .inf-foot-addr,
#colophon a.inf-foot-tel {
  position: relative;
  display: inline-block;
  padding-left: 24px;
  font-size: 14px !important;
  line-height: 1.5 !important;
}
#colophon a.inf-foot-tel {
  color: rgba(255, 255, 255, .88) !important;
  text-decoration: none;
}
#colophon a.inf-foot-tel:hover { color: #fff !important; }
#colophon .inf-foot-addr::before,
#colophon a.inf-foot-tel::before {
  content: "";
  position: absolute;
  left: 0;
  top: .18em;
  width: 16px;
  height: 16px;
  background: currentColor;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-position: center;
  mask-position: center;
  opacity: .8;
}
#colophon .inf-foot-addr::before {
  -webkit-mask-image: var(--inf-icon-pin);
  mask-image: var(--inf-icon-pin);
}
#colophon a.inf-foot-tel::before {
  -webkit-mask-image: var(--inf-icon-phone);
  mask-image: var(--inf-icon-phone);
}
#colophon {
  --inf-icon-pin: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M12 2a7 7 0 0 0-7 7c0 5.25 7 13 7 13s7-7.75 7-13a7 7 0 0 0-7-7Zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5Z'/%3E%3C/svg%3E");
  --inf-icon-phone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M6.6 10.8a15.1 15.1 0 0 0 6.6 6.6l2.2-2.2a1 1 0 0 1 1-.24c1.15.38 2.36.58 3.6.58a1 1 0 0 1 1 1V20a1 1 0 0 1-1 1A17 17 0 0 1 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1c0 1.25.2 2.45.58 3.6a1 1 0 0 1-.25 1Z'/%3E%3C/svg%3E");
}

/* 14d. THE CREDENTIALS BAND — MePA, the certification marks, the Ariba badge
   and feedaty, on one left-aligned row under the columns.

   Section 11 gave the chips `flex: 1 1 0` so five of them divided a full-width
   row. Below the columns that is wrong twice over: the row is no longer only
   theirs, and the client asked for them to sit to the left rather than span. So
   each chip sizes to its own mark again. */
#colophon .elementor-element-098517b,
#colophon .elementor-element-c4aaa3f {
  justify-content: flex-start !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  gap: 10px !important;
  /* The band is the one full-width block in the footer; everything else is
     inset by a boxed container. Measured at 1200: chips at x=30, logo at x=40.
     Ten pixels is not much, but it is a visible step in a left edge that is
     otherwise dead straight from the logo to the copyright. */
  padding-inline: 10px !important;
}
/* Below 1140 the footer's boxed inner is the viewport and stops insetting
   anything, while the link columns keep a 40px tablet padding of their own.
   Left at 10px the first chip touched the edge of the screen. */
@media (max-width: 1140px) {
  #colophon .elementor-element-098517b,
  #colophon .elementor-element-c4aaa3f { padding-inline: 50px !important; }
}
/* The :not() pairs are load-bearing: feedaty and Ariba live in a container that
   is also a direct .e-con child of the band, and without them it is painted and
   sized as a sixth chip — 592x122 of white slab on desktop, and on phones a
   60px box with feedaty's own 102px card hanging out of the bottom of it and
   over the copyright line. Measured both times. */
#colophon .elementor-element-098517b > .e-con:not(.elementor-element-6631058):not(.elementor-element-671556a),
#colophon .elementor-element-c4aaa3f > .e-con:not(.elementor-element-6631058):not(.elementor-element-671556a) {
  flex: 0 0 auto !important;
  width: auto !important;
  /* 76px, not the 64px section 8 sets, and !important because that one carries
     it too: the band is as tall as feedaty's own 100px card, so shorter chips
     centre inside it and leave a strip of empty field above and below. At 76
     they nearly fill it, and the marks get the room the client has now asked
     for three times ("loghi troppo piccoli,troppo bordo bianco"). */
  height: 76px !important;
  min-height: 0 !important;
  padding: 10px 18px !important;
}
#colophon .elementor-element-098517b > .e-con:not(.elementor-element-6631058):not(.elementor-element-671556a) img,
#colophon .elementor-element-c4aaa3f > .e-con:not(.elementor-element-6631058):not(.elementor-element-671556a) img {
  max-height: 44px !important;
  max-width: 120px;
}

/* feedaty and Ariba are a container inside that band, not one of the chips.
   Without this they inherit the white card, the border and the 1fr share —
   measured at 592x122, a white slab three times the width of any chip. */
#colophon .elementor-element-6631058,
#colophon .elementor-element-671556a {
  flex: 0 0 auto !important;
  width: auto !important;
  min-height: 0 !important;
  height: auto !important;
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 14px !important;
  margin: 0 0 0 6px !important;
  padding: 0 !important;
  background: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
#colophon .elementor-element-6631058 > .elementor-element,
#colophon .elementor-element-671556a > .elementor-element {
  width: auto !important;
  max-width: none !important;
  margin: 0 !important;
  align-self: center !important;
}
/* Section 11 caps every image under the band at 26px, which is right for a
   chip's mark and wrong for these two: the Ariba badge came out 74x26 with the
   cap winning over the height set below, because a max-height caps a height no
   matter which rule set it. Lifting the cap has to come first. */
#colophon .elementor-element-6631058 img,
#colophon .elementor-element-671556a img {
  max-height: none !important;
  max-width: none !important;
}
/* The Ariba badge is a fixed 180x55 JPEG served by SAP; it only ever needs a
   height to sit level with the chips beside it. */
#colophon .elementor-element-8e3386c img,
#colophon .elementor-element-870806f img {
  height: 52px !important;
  width: auto !important;
  border-radius: 6px;
  display: block;
}
/* feedaty draws its own 150x100 card. Capped so it cannot grow the band, and
   ordered after Ariba the way goplanner.app has it. */
#colophon .elementor-element-fe824b2,
#colophon .elementor-element-336f75e {
  order: 2;
  max-width: 160px !important;
}
#colophon .elementor-element-fe824b2 .feedaty_widget,
#colophon .elementor-element-336f75e .feedaty_widget {
  min-width: 0 !important;
  max-width: 160px !important;
}

/* 14e. TOUCH AND SMALL SCREENS.
   The strip used to be hidden below 768px because five 190px cards could not
   fit; as chips they wrap, so it now stays and has to behave. The 44px target
   from section 8 still applies to the link columns and is not undone here — the
   3px padding above is on top of a 20px line box, and the media query in
   section 8 raises it the rest of the way. */
@media (max-width: 767px) {
  /* The band is a full-width container with no inset of its own; on desktop the
     footer's boxed inner supplies the margin, on phones nothing does, so the
     chips ran to the edge of the viewport while everything above them was
     inset by 10px. */
  #colophon .elementor-element-098517b,
  #colophon .elementor-element-c4aaa3f { padding-inline: 10px !important; }
  #colophon .elementor-element-098517b > .e-con:not(.elementor-element-6631058):not(.elementor-element-671556a),
  #colophon .elementor-element-c4aaa3f > .e-con:not(.elementor-element-6631058):not(.elementor-element-671556a) {
    height: 60px !important;
    padding: 8px 12px !important;
  }
  #colophon .elementor-element-098517b > .e-con:not(.elementor-element-6631058):not(.elementor-element-671556a) img,
  #colophon .elementor-element-c4aaa3f > .e-con:not(.elementor-element-6631058):not(.elementor-element-671556a) img { max-height: 34px !important; max-width: 90px; }
  #colophon .elementor-element-6631058,
  #colophon .elementor-element-671556a { margin-left: 0 !important; }
  /* The lockup row on 2539 has no mobile alignment of its own, so it inherits
     the tablet one and centres — over an address, a tagline and a row of policy
     links that are all flush left. 1727 does not do this; the two footers
     should not differ. */
  #colophon .elementor-element-5c194c0 { justify-content: flex-start !important; }
  #colophon .elementor-element-da4e067 .elementor-widget-container img,
  #colophon .elementor-element-bd92d97 .elementor-widget-container img { height: 46px !important; max-height: 46px !important; }
}
/* Stacked, the left column's 40px tablet padding lands on top of the 30px row
   gap: 70px of empty field between the policy links and "Chi siamo", on the one
   layout with the least room to spare. */
@media (max-width: 1024px) {
  #colophon .elementor-element-637a497,
  #colophon .elementor-element-9c80586 { padding-bottom: 12px !important; }
}

/* =============================================================================
   15. THE CERTIFICATIONS BAND — 10/09/2026

   A light field inside a dark footer, and the first one there has ever been.

   §5c (line 1160) paints every `footer .elementor-heading-title` white with
   !important, because when it was written the whole footer was purple. The band
   added to template 2539 on 10/09 has a #F5F7FA background, so its heading
   rendered white on near-white — 1.05:1, invisible — and was NOT fixable from
   the builder: that !important also beats what Elementor emits for the widget,
   which is why a heading set to 16px in the editor renders at 11px on the page.
   Anyone reporting "I set the colour and nothing happened" is hitting this.

   Colour only. The size, weight, uppercase and .12em tracking stay as §5c sets
   them, so this heading matches "Chi siamo" and "Soluzioni" in the purple part
   below it rather than introducing a second footer-heading treatment. #0E2A57
   is not a new value: it is what the five cards already carry as title_color in
   their own widget settings.

   Keyed to the container's element id because a class added to a container in
   the builder never reaches the DOM — see the note in section 11.

   If the band is ever given a dark background, DELETE this rule rather than
   re-pointing it: at that moment the §5c white becomes correct again. The band
   also has no dark-theme treatment at all — infordata-dark-elementor.css is
   generated, and has not been regenerated since the footer was rebuilt, so it
   still names element ids this template no longer has.
   -------------------------------------------------------------------------- */
#colophon .elementor-element-2d9e9ce .elementor-heading-title { color: #0E2A57 !important; }

/* =============================================================================
   16. MAIN MENU: THE PANEL STAYS WHERE THE HAND IS GOING — 28/09/2026

   Reported by several people, and by some since before the redesign: hover a
   menu item, move down towards its panel, and the panel vanishes while another
   one opens in its place. Under "Chi siamo" four of the five items could not be
   reached; under "Ricerca e Innovazione" two of four.

   Measured with real pointer input (tools/checks/menu-pointer.mjs, CDP mouse
   events, transitions left running) along the paths a hand takes: straight from
   the label, diagonal from either end of it, slowly across the gap, sliding to a
   neighbour and straight down, stopping on a neighbour. At 1280 and 1600 the
   menu as it was reached its target in 158 of 228 paths on .it and 178 of 240
   on .pro. Four separate causes:

   1. Invisible lists that still caught the pointer. §5 flattens the third level
      into the panel and used to force it `visibility: visible`. That is the one
      value a child can set against a hidden parent, so every third-level list
      stayed hit-testable while its panel was closed: the panel's opacity:0 hid
      it from the eye, not from the mouse. They lie exactly where neighbouring
      panels open — Soluzioni's under Chi siamo, Supporto's under Ricerca e
      Innovazione — and touching one opened its own panel over the one in use.
      Fixed in §5 itself: `inherit`, and no transition of their own, because an
      inherited visibility change is transitioned as well — measured as the list
      staying catchable for another 300ms after its panel had closed.

   2. The 10px gap. The header template (2568, widget f56a5fd) sets the panel
      10px below the bar. Crossing it drops :hover, and the theme's 300ms fade
      was the only bridge, so a hand moving 1px every 40ms lost all five panels.
      The strip below keeps the item hovered across the gap. ITS HEIGHT IS THAT
      BUILDER VALUE: change the dropdown distance there, change this with it. It
      is as wide as the label only, so it never reaches into a neighbour.

   3. Switching. A closing panel stayed hit-testable for its whole fade and
      paints over an earlier sibling's, so sliding to the previous item and
      going down landed back in the panel being left.

   4. Diagonals. Panels are 320px under labels 90-210px wide, the last ones
      right-aligned, so a straight line from a label to its first item often
      clips the next label (News on .pro: a 92px label, a panel that opens to
      the left). :hover calls that a switch. A stylesheet cannot tell "crossing on the way down" from "moved on", so assets/infordata-menu.js owns the
      open state: it puts .inf-menu-js on the list and .inf-open on the one open
      item, closes the others at once, and keeps a panel while the pointer is
      still inside the wedge that leads into it.

   Both halves together: 228/228 on .it and 240/240 on .pro at 1280 and 1600,
   and every path at 1100, 1366 and 1920. At 1025, every path on .it and all but
   four on .pro: from 1025 to 1090 the English bar wraps Support onto a second
   row, underneath the News panel (the Italian bar wraps at 1030-1080), and no
   hover logic reaches a label that another panel covers. That needs the bar to
   fit on one row, not a rule here. If the script does not run, the rules below
   stay inert and §5 plus the strip still remove causes 1 and 2.

   The class-driven rules carry !important because style.css forces the open
   state on :hover and :focus-within with !important — to outrank the inline
   styles the theme script writes — and that must not reopen a panel the script
   has closed. The ID in the selector is what lets them win.
   -------------------------------------------------------------------------- */
@media (min-width: 1025px) {
  #masthead .mainmenu-infordata ul.ce-nav-menu > li.menu-item-has-children::after {
    content: "";
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    height: 10px;
  }
  /* Closed means closed at once: a fade that can still be hovered is cause 3. */
  #masthead .mainmenu-infordata ul.ce-nav-menu.inf-menu-js > li > ul.sub-menu {
    visibility: hidden !important;
    opacity: 0 !important;
    transition: none !important;
  }
  #masthead .mainmenu-infordata ul.ce-nav-menu.inf-menu-js > li.inf-open > ul.sub-menu {
    visibility: visible !important;
    opacity: 1 !important;
    height: auto !important;
    transition: opacity .15s ease-out !important;
  }
}

/* =============================================================================
   17. MAIN MENU: ONE ROW FROM 1025 TO 1139px — 29/09/2026

   Just above the desktop breakpoint the bar did not fit. Its last item wrapped
   onto a second row, right-aligned under the item before it, whose panel then
   opens on top of it: "Support" under "News" on .pro, "Notizie" under
   "Supporto" on .it. No hover logic reaches a label that another panel covers.
   On .pro menu-pointer.mjs lost 4 paths to it at 1025, 1050 and 1075. On .it it
   lost none, but only because Notizie has no panel of its own, so no path ever
   aims at it: it sat under the Supporto panel all the same.

   Measured with tools/checks/menu-rows.mjs every 5px from 1025 to 1300, on the
   two homes (template 1756) and on /certificazioni/ and /certifications/
   (template 2568, every other page). The bar needs 848px in Italian and 858px
   in English; at 1025 its column has 793. It wrapped at:
                   no scrollbar     17px scrollbar (Windows)
     .it           1025-1080        1025-1095
     .pro          1025-1090        1025-1105
   The second column is what most visitors get: the breakpoint reads the whole
   window, so the desktop bar applies at 1025, but the page is laid out in 1008.

   MEASURE AFTER MOVING THE MOUSE. LiteSpeed holds the theme's scripts until the
   first mouseover, and until ce-nav-menu.js has run the chevrons have no glyph:
   the English bar is 96px narrower, so a page loaded at 1025 can measure one
   row and then wrap on the first mouse move.

   Where the room went: 31px per item with a panel is the chevron. §5's 5px
   gap, the plugin's `.sub-arrow { margin-left: 10px }`, and a 16px box from
   theme.min.css. It sat 15px from its own label and 22px from the next one, so
   it read as belonging to neither. Inside the band it keeps only the 5px gap,
   and the label padding drops from 11px to 8px, the handoff's own value
   (README, "The top menu":8px horizontal padding). That is 102px in English and 92 in Italian,one chevron fewer. The font stays 14.5px. Also measured,and why not:- the handoff's type and padding (14px, 8px) without the chevron: .pro
       still wraps at 1025, and up to 1045 with a scrollbar;
     - the chevron alone: wraps up to 1045 with a scrollbar;
     - the builder. The logo column is set to 250px but renders at ~202px:
       flex-shrink against the 100%-wide menu column has already taken it down
       to the logo plus its own 10px paddings, so there is nothing left to take
       without shrinking the logo. The paddings and the row gap between logo
       and menu add up to 30px. Zeroing them AND shrinking the logo to ~130px
       fits, with 1px to spare. And only the mobile and tablet breakpoints are
       active in this install, so a builder value applies at every desktop
       width, not in a band;
     - moving the hamburger up. That breakpoint is Elementor's site-wide tablet value (every page's tablet layout moves with it), ce-nav-menu.js
       hard-codes max-width 1023px, and §5, §13, §16 and infordata-menu.js use
       1025: five places to move together, to give a hamburger to a window the
       bar fits in.

   With the band, both bars need 756px and have 21px to spare at 1025 with a
   17px scrollbar, 37 without. Why 1139: at 1140 the full-size English bar has
   30px to spare with the scrollbar, 46 without; ending the band at 1119 would
   have left it 11. The header's boxed inner stops growing at about 1140 anyway. Renaming or adding a top-level item eats into those margins,so re-run menu-rows.mjs after menu changes;it also fails if a panel would open past either edge of the window. Both templates carry the bar,2568 and 1756,and both set the dropdown distance to 10px,which is the height of §16's strip. Change it in one and
   it has to change in the other and in §16.

   Nothing here is recorded twice: the builder's own label padding (18px on both widgets) has been dead since §5 set 11px with!important,and the chevron margin is not a builder setting. The padding carries!importantto beat §5's, same selector, later in the sheet. The chevron margin is the
   plugin's 0-3-0 rule without!important,so the ID wins it without one. -------------------------------------------------------------------------- */ @media (min-width:1025px) and (max-width:1139px){#masthead .mainmenu-infordata .ce-nav-menu a.ce-menu-item{padding:0 8px!important}#masthead .mainmenu-infordata .ce-nav-menu a.ce-menu-item .sub-arrow{margin-left:0}}