.elementor-2351 .elementor-element.elementor-element-5e40b781{--display:flex;--min-height:35px;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--justify-content:space-between;--align-items:center;--gap:0px 0px;--row-gap:0px;--column-gap:0px;box-shadow:15px 15px 30px 5px rgba(0, 0, 0, 0.04);--padding-top:0%;--padding-bottom:0%;--padding-left:8%;--padding-right:8%;--z-index:96;}.elementor-2351 .elementor-element.elementor-element-5e40b781:not(.elementor-motion-effects-element-type-background), .elementor-2351 .elementor-element.elementor-element-5e40b781 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#FFFFFF;}.elementor-2351 .elementor-element.elementor-element-4f36d691{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--gap:0px 10px;--row-gap:0px;--column-gap:10px;}.elementor-2351 .elementor-element.elementor-element-427b927b .elementor-icon-box-wrapper{align-items:center;gap:4px;}.elementor-2351 .elementor-element.elementor-element-427b927b .elementor-icon-box-title{margin-block-end:9px;color:#54595F;}.elementor-2351 .elementor-element.elementor-element-427b927b.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-427b927b.elementor-view-framed .elementor-icon, .elementor-2351 .elementor-element.elementor-element-427b927b.elementor-view-default .elementor-icon{fill:var( --e-global-color-accent );color:var( --e-global-color-accent );border-color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-427b927b.elementor-view-stacked:has(:hover) .elementor-icon,
					 .elementor-2351 .elementor-element.elementor-element-427b927b.elementor-view-stacked:has(:focus) .elementor-icon{background-color:var( --e-global-color-ac81705 );}.elementor-2351 .elementor-element.elementor-element-427b927b.elementor-view-framed:has(:hover) .elementor-icon,
					 .elementor-2351 .elementor-element.elementor-element-427b927b.elementor-view-default:has(:hover) .elementor-icon,
					 .elementor-2351 .elementor-element.elementor-element-427b927b.elementor-view-framed:has(:focus) .elementor-icon,
					 .elementor-2351 .elementor-element.elementor-element-427b927b.elementor-view-default:has(:focus) .elementor-icon{fill:var( --e-global-color-ac81705 );color:var( --e-global-color-ac81705 );border-color:var( --e-global-color-ac81705 );}.elementor-2351 .elementor-element.elementor-element-427b927b .elementor-icon{font-size:18px;}.elementor-2351 .elementor-element.elementor-element-427b927b .elementor-icon-box-title, .elementor-2351 .elementor-element.elementor-element-427b927b .elementor-icon-box-title a{font-family:"Montserrat", Sans-serif;font-size:14px;font-weight:500;}.elementor-2351 .elementor-element.elementor-element-427b927b:has(:hover) .elementor-icon-box-title,
					 .elementor-2351 .elementor-element.elementor-element-427b927b:has(:focus) .elementor-icon-box-title{color:var( --e-global-color-text );}.elementor-2351 .elementor-element.elementor-element-427b927b .elementor-icon-box-description{font-family:"Roboto", Sans-serif;font-size:1px;font-weight:400;}.elementor-2351 .elementor-element.elementor-element-3f6b5b77 > .elementor-widget-container{padding:0px 0px 0px 0px;border-style:none;}.elementor-2351 .elementor-element.elementor-element-3f6b5b77 .elementor-icon-box-wrapper{align-items:center;gap:4px;}.elementor-2351 .elementor-element.elementor-element-3f6b5b77 .elementor-icon-box-title{margin-block-end:9px;color:#54595F;}.elementor-2351 .elementor-element.elementor-element-3f6b5b77.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-3f6b5b77.elementor-view-framed .elementor-icon, .elementor-2351 .elementor-element.elementor-element-3f6b5b77.elementor-view-default .elementor-icon{fill:var( --e-global-color-accent );color:var( --e-global-color-accent );border-color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-3f6b5b77.elementor-view-stacked:has(:hover) .elementor-icon,
					 .elementor-2351 .elementor-element.elementor-element-3f6b5b77.elementor-view-stacked:has(:focus) .elementor-icon{background-color:var( --e-global-color-ac81705 );}.elementor-2351 .elementor-element.elementor-element-3f6b5b77.elementor-view-framed:has(:hover) .elementor-icon,
					 .elementor-2351 .elementor-element.elementor-element-3f6b5b77.elementor-view-default:has(:hover) .elementor-icon,
					 .elementor-2351 .elementor-element.elementor-element-3f6b5b77.elementor-view-framed:has(:focus) .elementor-icon,
					 .elementor-2351 .elementor-element.elementor-element-3f6b5b77.elementor-view-default:has(:focus) .elementor-icon{fill:var( --e-global-color-ac81705 );color:var( --e-global-color-ac81705 );border-color:var( --e-global-color-ac81705 );}.elementor-2351 .elementor-element.elementor-element-3f6b5b77 .elementor-icon{font-size:18px;}.elementor-2351 .elementor-element.elementor-element-3f6b5b77 .elementor-icon-box-title, .elementor-2351 .elementor-element.elementor-element-3f6b5b77 .elementor-icon-box-title a{font-family:"Montserrat", Sans-serif;font-size:14px;font-weight:500;}.elementor-2351 .elementor-element.elementor-element-3f6b5b77:has(:hover) .elementor-icon-box-title,
					 .elementor-2351 .elementor-element.elementor-element-3f6b5b77:has(:focus) .elementor-icon-box-title{color:var( --e-global-color-text );}.elementor-2351 .elementor-element.elementor-element-3f6b5b77 .elementor-icon-box-description{font-family:"Roboto", Sans-serif;font-size:1px;font-weight:400;}.elementor-2351 .elementor-element.elementor-element-3d229144{--grid-template-columns:repeat(0, auto);--icon-size:13px;--grid-column-gap:14px;--grid-row-gap:0px;}.elementor-2351 .elementor-element.elementor-element-3d229144 .elementor-widget-container{text-align:right;}.elementor-2351 .elementor-element.elementor-element-3d229144 .elementor-social-icon{background-color:#FFFFFF00;}.elementor-2351 .elementor-element.elementor-element-3d229144 .elementor-social-icon i{color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-3d229144 .elementor-social-icon svg{fill:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-3d229144 .elementor-social-icon:hover i{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-3d229144 .elementor-social-icon:hover svg{fill:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-202e472a{--display:grid;--min-height:82px;--e-con-grid-template-columns:3fr 6fr;--e-con-grid-template-rows:repeat(1, 1fr);--grid-auto-flow:row;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0.5%;--padding-bottom:0.5%;--padding-left:8%;--padding-right:8%;--z-index:95;}.elementor-2351 .elementor-element.elementor-element-202e472a:not(.elementor-motion-effects-element-type-background), .elementor-2351 .elementor-element.elementor-element-202e472a > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#FFFFFF;}.elementor-2351 .elementor-element.elementor-element-2cd17526{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--gap:0px 0px;--row-gap:0px;--column-gap:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-2cd17526.e-con{--align-self:center;}.elementor-2351 .elementor-element.elementor-element-179297b5 > .elementor-widget-container{margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-179297b5.elementor-element{--align-self:center;}.elementor-2351 .elementor-element.elementor-element-179297b5 img{width:100%;height:67px;object-fit:contain;object-position:center center;}.elementor-2351 .elementor-element.elementor-element-546f56f2{--display:flex;--justify-content:space-between;--gap:0px 0px;--row-gap:0px;--column-gap:0px;border-style:solid;--border-style:solid;border-width:0px 0px 0px 4px;--border-top-width:0px;--border-right-width:0px;--border-bottom-width:0px;--border-left-width:4px;border-color:var( --e-global-color-accent );--border-color:var( --e-global-color-accent );--margin-top:11px;--margin-bottom:11px;--margin-left:11px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-1074dac6 > .elementor-widget-container{margin:10px 0px 7px 7px;padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-1074dac6 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:16px;font-weight:400;line-height:17px;color:var( --e-global-color-primary );}.elementor-2351 .elementor-element.elementor-element-2ff91caf > .elementor-widget-container{background-color:var( --e-global-color-accent );margin:0px 0px 0px 0px;padding:2px 0px 2px 7px;}.elementor-2351 .elementor-element.elementor-element-2ff91caf .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:14px;font-weight:700;color:var( --e-global-color-93a1caf );}.elementor-2351 .elementor-element.elementor-element-43ae7130{--display:flex;--justify-content:flex-end;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-510a8f9{--display:flex;--overflow:hidden;}.elementor-2351 .elementor-element.elementor-element-606fe7c7{--display:grid;--e-con-grid-template-columns:repeat(3, 1fr);--e-con-grid-template-rows:repeat(1, 1fr);--grid-auto-flow:row;}.elementor-2351 .elementor-element.elementor-element-606fe7c7.e-con{--align-self:flex-end;}.elementor-2351 .elementor-element.elementor-element-2ebc05b5{--display:flex;}.elementor-2351 .elementor-element.elementor-element-668acb6a{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-210509bf > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-210509bf .elementor-heading-title{font-size:12px;font-weight:700;text-transform:uppercase;color:var( --e-global-color-primary );}.elementor-2351 .elementor-element.elementor-element-71f09d63{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-23b0f4b8 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-23b0f4b8 .elementor-heading-title{font-size:12px;font-weight:700;text-transform:capitalize;color:var( --e-global-color-text );}.elementor-2351 .elementor-element.elementor-element-23b0f4b8 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-23b0f4b8 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-53336184 .elementor-heading-title{font-size:14px;font-weight:500;color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-53336184 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-53336184 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-53336184 .elementor-heading-title a{transition-duration:200ms;}.elementor-2351 .elementor-element.elementor-element-3ee04cee{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-f570a91 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-f570a91 .elementor-heading-title{font-size:12px;font-weight:700;text-transform:capitalize;color:var( --e-global-color-text );}.elementor-2351 .elementor-element.elementor-element-f570a91 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-f570a91 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-518c40f9 .elementor-heading-title{font-size:14px;font-weight:500;color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-518c40f9 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-518c40f9 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-518c40f9 .elementor-heading-title a{transition-duration:200ms;}.elementor-2351 .elementor-element.elementor-element-e6a738{--display:flex;}.elementor-2351 .elementor-element.elementor-element-4ff1f1fe .elementor-heading-title{font-size:12px;font-weight:700;text-transform:uppercase;color:var( --e-global-color-primary );}.elementor-2351 .elementor-element.elementor-element-46792df9{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-5ff3ff4 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-5ff3ff4 .elementor-heading-title{font-size:12px;font-weight:700;text-transform:capitalize;color:var( --e-global-color-text );}.elementor-2351 .elementor-element.elementor-element-5ff3ff4 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-5ff3ff4 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-ff6cc06{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-7c6bee18 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-7c6bee18 .elementor-heading-title{font-size:14px;font-weight:500;color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-7c6bee18 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-7c6bee18 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-7c6bee18 .elementor-heading-title a{transition-duration:200ms;}.elementor-2351 .elementor-element.elementor-element-19cdb15d{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-59b69626 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-59b69626 .elementor-heading-title{font-size:14px;font-weight:500;color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-59b69626 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-59b69626 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-59b69626 .elementor-heading-title a{transition-duration:200ms;}.elementor-2351 .elementor-element.elementor-element-447e8e19{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-7e240893 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-7e240893 .elementor-heading-title{font-size:14px;font-weight:500;color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-7e240893 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-7e240893 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-7e240893 .elementor-heading-title a{transition-duration:200ms;}.elementor-2351 .elementor-element.elementor-element-299c36d0{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-33977e3d > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-33977e3d .elementor-heading-title{font-size:12px;font-weight:700;text-transform:capitalize;color:var( --e-global-color-text );}.elementor-2351 .elementor-element.elementor-element-33977e3d .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-33977e3d .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-24a6fdf9{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-45b0be16 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-45b0be16 .elementor-heading-title{font-size:14px;font-weight:500;color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-45b0be16 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-45b0be16 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-45b0be16 .elementor-heading-title a{transition-duration:200ms;}.elementor-2351 .elementor-element.elementor-element-741ddcce{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-5ab2c8f7 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-5ab2c8f7 .elementor-heading-title{font-size:14px;font-weight:500;color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-5ab2c8f7 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-5ab2c8f7 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-5ab2c8f7 .elementor-heading-title a{transition-duration:200ms;}.elementor-2351 .elementor-element.elementor-element-31d22e52{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-2cad6124 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-2cad6124 .elementor-heading-title{font-size:14px;font-weight:500;color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-2cad6124 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-2cad6124 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-2cad6124 .elementor-heading-title a{transition-duration:200ms;}.elementor-2351 .elementor-element.elementor-element-6e8b34b0{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-25cd8b03 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-25cd8b03 .elementor-heading-title{font-size:14px;font-weight:500;color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-25cd8b03 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-25cd8b03 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-25cd8b03 .elementor-heading-title a{transition-duration:200ms;}.elementor-2351 .elementor-element.elementor-element-1ed74ebf{--display:flex;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-6ca88c1 .elementor-heading-title{font-size:12px;font-weight:700;text-transform:uppercase;color:var( --e-global-color-primary );}.elementor-2351 .elementor-element.elementor-element-162aa27e{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-69fe8df5 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-69fe8df5 .elementor-heading-title{font-size:12px;font-weight:700;text-transform:capitalize;color:var( --e-global-color-text );}.elementor-2351 .elementor-element.elementor-element-69fe8df5 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-69fe8df5 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-6266463c{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-4d794d0 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-4d794d0 .elementor-heading-title{font-size:14px;font-weight:500;color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-4d794d0 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-4d794d0 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-4d794d0 .elementor-heading-title a{transition-duration:200ms;}.elementor-2351 .elementor-element.elementor-element-7a601083{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-ae173d1 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-ae173d1 .elementor-heading-title{font-size:14px;font-weight:500;color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-ae173d1 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-ae173d1 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-ae173d1 .elementor-heading-title a{transition-duration:200ms;}.elementor-2351 .elementor-element.elementor-element-7f8f0ee5{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-11224c72 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-11224c72 .elementor-heading-title{font-size:12px;font-weight:700;text-transform:capitalize;color:var( --e-global-color-text );}.elementor-2351 .elementor-element.elementor-element-11224c72 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-11224c72 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-64ab250a{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-9347991 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-9347991 .elementor-heading-title{font-size:14px;font-weight:500;color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-9347991 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-9347991 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-9347991 .elementor-heading-title a{transition-duration:200ms;}.elementor-2351 .elementor-element.elementor-element-3ffa1fea{--display:flex;--overflow:hidden;}.elementor-2351 .elementor-element.elementor-element-4a14ef81{--display:grid;--e-con-grid-template-columns:repeat(3, 1fr);--e-con-grid-template-rows:repeat(1, 1fr);--grid-auto-flow:row;}.elementor-2351 .elementor-element.elementor-element-4a14ef81.e-con{--align-self:flex-end;}.elementor-2351 .elementor-element.elementor-element-661fd320{--display:flex;}.elementor-2351 .elementor-element.elementor-element-449b9533 .elementor-heading-title{font-size:12px;font-weight:700;text-transform:uppercase;color:var( --e-global-color-primary );}.elementor-2351 .elementor-element.elementor-element-50a1f6df{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-7b08da0e > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-7b08da0e .elementor-heading-title{font-size:12px;font-weight:700;text-transform:capitalize;color:var( --e-global-color-text );}.elementor-2351 .elementor-element.elementor-element-7b08da0e .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-7b08da0e .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-7bf8b404 .elementor-heading-title{font-size:14px;font-weight:500;color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-7bf8b404 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-7bf8b404 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-7bf8b404 .elementor-heading-title a{transition-duration:200ms;}.elementor-2351 .elementor-element.elementor-element-106603fd{--display:flex;}.elementor-2351 .elementor-element.elementor-element-2072c2c1 .elementor-heading-title{font-size:12px;font-weight:700;text-transform:uppercase;color:var( --e-global-color-primary );}.elementor-2351 .elementor-element.elementor-element-1555d8c9{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-5b12e569 > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-5b12e569 .elementor-heading-title{font-size:12px;font-weight:700;text-transform:capitalize;color:var( --e-global-color-text );}.elementor-2351 .elementor-element.elementor-element-5b12e569 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-5b12e569 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-1ff963a0 .elementor-heading-title{font-size:14px;font-weight:500;color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-1ff963a0 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-1ff963a0 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-1ff963a0 .elementor-heading-title a{transition-duration:200ms;}.elementor-2351 .elementor-element.elementor-element-177166aa{--display:flex;}.elementor-2351 .elementor-element.elementor-element-6c6b0fa1 .elementor-heading-title{font-size:12px;font-weight:700;text-transform:uppercase;color:var( --e-global-color-primary );}.elementor-2351 .elementor-element.elementor-element-48db94b1{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-45d913ca > .elementor-widget-container{padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-45d913ca .elementor-heading-title{font-size:12px;font-weight:700;text-transform:capitalize;color:var( --e-global-color-text );}.elementor-2351 .elementor-element.elementor-element-45d913ca .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-45d913ca .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-6dfbc8aa .elementor-heading-title{font-size:14px;font-weight:500;color:var( --e-global-color-secondary );}.elementor-2351 .elementor-element.elementor-element-6dfbc8aa .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-6dfbc8aa .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-6dfbc8aa .elementor-heading-title a{transition-duration:200ms;}.elementor-2351 .elementor-element.elementor-element-4d8508b7{--display:flex;--overflow:hidden;}.elementor-2351 .elementor-element.elementor-element-32f601d3{--display:grid;--e-con-grid-template-columns:repeat(3, 1fr);--e-con-grid-template-rows:repeat(1, 1fr);--grid-auto-flow:row;}.elementor-2351 .elementor-element.elementor-element-32f601d3.e-con{--align-self:flex-end;}.elementor-2351 .elementor-element.elementor-element-5d5ad392{--display:flex;}.elementor-2351 .elementor-element.elementor-element-152e6516 .elementor-heading-title{font-size:12px;font-weight:700;text-transform:uppercase;color:var( --e-global-color-c792de8 );}.elementor-2351 .elementor-element.elementor-element-2f5060bd{--display:flex;--gap:7px 7px;--row-gap:7px;--column-gap:7px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-524514e2 > .elementor-widget-container{padding:2px 2px 2px 2px;}.elementor-2351 .elementor-element.elementor-element-524514e2 .elementor-heading-title{font-size:12px;font-weight:700;text-transform:capitalize;color:var( --e-global-color-text );}.elementor-2351 .elementor-element.elementor-element-524514e2 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-524514e2 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-51fd3417 > .elementor-widget-container{padding:2px 2px 2px 2px;}.elementor-2351 .elementor-element.elementor-element-51fd3417 .elementor-heading-title{font-size:12px;font-weight:700;text-transform:capitalize;color:var( --e-global-color-text );}.elementor-2351 .elementor-element.elementor-element-51fd3417 .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-51fd3417 .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-707d86d > .elementor-widget-container{padding:2px 2px 2px 2px;}.elementor-2351 .elementor-element.elementor-element-707d86d .elementor-heading-title{font-size:12px;font-weight:700;text-transform:capitalize;color:var( --e-global-color-text );}.elementor-2351 .elementor-element.elementor-element-707d86d .elementor-heading-title a:hover, .elementor-2351 .elementor-element.elementor-element-707d86d .elementor-heading-title a:focus{color:var( --e-global-color-accent );}.elementor-2351 .elementor-element.elementor-element-1e994cf1{--display:flex;}.elementor-2351 .elementor-element.elementor-element-63d1e277 .elementor-heading-title{font-size:12px;font-weight:700;text-transform:uppercase;color:var( --e-global-color-c792de8 );}.elementor-2351 .elementor-element.elementor-element-6b6d037b{--display:flex;}.elementor-2351 .elementor-element.elementor-element-4d13f765 .elementor-heading-title{font-size:12px;font-weight:700;text-transform:uppercase;color:var( --e-global-color-c792de8 );}.elementor-2351 .elementor-element.elementor-element-569826c4{--display:flex;--overflow:hidden;}.elementor-2351 .elementor-element.elementor-element-569826c4:not(.elementor-motion-effects-element-type-background), .elementor-2351 .elementor-element.elementor-element-569826c4 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:var( --e-global-color-ac81705 );}.elementor-2351 .elementor-element.elementor-element-1ca3dc0{--n-menu-dropdown-content-max-width:fit-content;--n-menu-heading-justify-content:flex-end;--n-menu-title-flex-grow:initial;--n-menu-title-justify-content:initial;--n-menu-title-justify-content-mobile:flex-end;--n-menu-heading-wrap:wrap;--n-menu-heading-overflow-x:initial;--n-menu-title-distance-from-content:0px;--n-menu-open-animation-duration:500ms;--n-menu-toggle-icon-wrapper-animation-duration:500ms;--n-menu-title-space-between:0px;--n-menu-title-color-normal:var( --e-global-color-text );--n-menu-title-transition:300ms;--n-menu-icon-size:16px;--n-menu-dropdown-indicator-color-normal:var( --e-global-color-c792de8 );--n-menu-dropdown-indicator-color-hover:var( --e-global-color-accent );--n-menu-toggle-icon-size:20px;--n-menu-toggle-icon-color:var( --e-global-color-secondary );--n-menu-toggle-icon-hover-duration:500ms;--n-menu-toggle-icon-color-active:var( --e-global-color-secondary );--n-menu-toggle-icon-distance-from-dropdown:0px;}:where( .elementor-2351 .elementor-element.elementor-element-1ca3dc0 > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-content ) > .e-con{background-color:#FAFAFA;}.elementor-2351 .elementor-element.elementor-element-1ca3dc0 > .elementor-widget-container{margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;}.elementor-2351 .elementor-element.elementor-element-1ca3dc0 > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-title, .elementor-2351 .elementor-element.elementor-element-1ca3dc0 > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-title > .e-n-menu-title-container, .elementor-2351 .elementor-element.elementor-element-1ca3dc0 > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-title > .e-n-menu-title-container > span{font-family:"Figtree", Sans-serif;}.elementor-2351 .elementor-element.elementor-element-4a56e4d5{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}.elementor-2351 .elementor-element.elementor-element-37df5a59{width:var( --container-widget-width, 0% );max-width:0%;--container-widget-width:0%;--container-widget-flex-grow:0;bottom:0px;}.elementor-2351 .elementor-element.elementor-element-37df5a59 > .elementor-widget-container{margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;}body:not(.rtl) .elementor-2351 .elementor-element.elementor-element-37df5a59{right:0px;}body.rtl .elementor-2351 .elementor-element.elementor-element-37df5a59{left:0px;}.elementor-theme-builder-content-area{height:400px;}.elementor-location-header:before, .elementor-location-footer:before{content:"";display:table;clear:both;}@media(max-width:1024px){.elementor-2351 .elementor-element.elementor-element-5e40b781{--padding-top:0%;--padding-bottom:0%;--padding-left:5%;--padding-right:5%;}.elementor-2351 .elementor-element.elementor-element-202e472a{--min-height:0px;--e-con-grid-template-columns:2fr 8fr;--gap:0px 0px;--row-gap:0px;--column-gap:0px;--grid-auto-flow:row;--padding-top:0%;--padding-bottom:0%;--padding-left:5%;--padding-right:5%;}.elementor-2351 .elementor-element.elementor-element-179297b5 img{width:80%;}.elementor-2351 .elementor-element.elementor-element-1074dac6 .elementor-heading-title{font-size:14px;}.elementor-2351 .elementor-element.elementor-element-2ff91caf .elementor-heading-title{font-size:13px;}.elementor-2351 .elementor-element.elementor-element-43ae7130{--justify-content:flex-end;}.elementor-2351 .elementor-element.elementor-element-606fe7c7{--e-con-grid-template-columns:repeat(3, 1fr);--e-con-grid-template-rows:repeat(1, 1fr);--grid-auto-flow:row;}.elementor-2351 .elementor-element.elementor-element-2ebc05b5{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-210509bf .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-23b0f4b8 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-53336184 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-f570a91 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-518c40f9 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-e6a738{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-4ff1f1fe .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-5ff3ff4 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-7c6bee18 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-59b69626 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-7e240893 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-33977e3d .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-45b0be16 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-5ab2c8f7 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-2cad6124 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-25cd8b03 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-1ed74ebf{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-6ca88c1 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-69fe8df5 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-4d794d0 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-ae173d1 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-11224c72 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-9347991 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-4a14ef81{--e-con-grid-template-columns:repeat(3, 1fr);--e-con-grid-template-rows:repeat(1, 1fr);--grid-auto-flow:row;}.elementor-2351 .elementor-element.elementor-element-661fd320{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-449b9533 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-7b08da0e .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-7bf8b404 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-106603fd{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-2072c2c1 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-5b12e569 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-1ff963a0 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-177166aa{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-6c6b0fa1 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-45d913ca .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-6dfbc8aa .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-32f601d3{--e-con-grid-template-columns:repeat(3, 1fr);--e-con-grid-template-rows:repeat(1, 1fr);--grid-auto-flow:row;}.elementor-2351 .elementor-element.elementor-element-5d5ad392{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-152e6516 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-524514e2 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-51fd3417 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-707d86d .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-1e994cf1{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-63d1e277 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-6b6d037b{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-4d13f765 .elementor-heading-title{font-size:12px;}.elementor-2351 .elementor-element.elementor-element-1ca3dc0{--n-menu-title-space-between:0px;--n-menu-title-font-size:12px;}:where( .elementor-2351 .elementor-element.elementor-element-1ca3dc0 > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-content ) > .e-con{--padding-top:0px;--padding-right:0px;--padding-bottom:0px;--padding-left:0px;}:where( [data-core-v316-plus='true'] .elementor-element.elementor-widget-n-menu > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-content ) > .e-con{--padding-block-start:0px;--padding-inline-end:0px;--padding-block-end:0px;--padding-inline-start:0px;}}@media(max-width:767px){.elementor-2351 .elementor-element.elementor-element-5e40b781{--min-height:50px;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--justify-content:center;}.elementor-2351 .elementor-element.elementor-element-202e472a{--min-height:50px;--e-con-grid-template-columns:2;--e-con-grid-template-rows:repeat(1, 1fr);--grid-auto-flow:column;--align-items:center;--grid-justify-content:space-between;--padding-top:2%;--padding-bottom:2%;--padding-left:5%;--padding-right:5%;}.elementor-2351 .elementor-element.elementor-element-179297b5 img{height:46px;}.elementor-2351 .elementor-element.elementor-element-606fe7c7{--e-con-grid-template-columns:repeat(1, 1fr);--e-con-grid-template-rows:repeat(1, 1fr);--grid-auto-flow:row;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-2351 .elementor-element.elementor-element-4a14ef81{--e-con-grid-template-columns:repeat(1, 1fr);--e-con-grid-template-rows:repeat(1, 1fr);--grid-auto-flow:row;}.elementor-2351 .elementor-element.elementor-element-32f601d3{--e-con-grid-template-columns:repeat(1, 1fr);--e-con-grid-template-rows:repeat(1, 1fr);--grid-auto-flow:row;}.elementor-2351 .elementor-element.elementor-element-1ca3dc0{--n-menu-heading-justify-content:initial;--n-menu-title-flex-grow:initial;--n-menu-title-justify-content:initial;--n-menu-title-justify-content-mobile:initial;--n-menu-heading-wrap:wrap;--n-menu-heading-overflow-x:initial;--n-menu-title-distance-from-content:0px;--n-menu-toggle-align:flex-end;--n-menu-title-font-size:17px;--n-menu-title-padding:21px 21px 14px 21px;--n-menu-dropdown-indicator-size:13px;--n-menu-dropdown-indicator-space:5px;--n-menu-toggle-icon-size:21px;--n-menu-toggle-icon-border-radius:4px 4px 4px 4px;--n-menu-toggle-icon-padding:9px 9px 9px 9px;}:where( .elementor-2351 .elementor-element.elementor-element-1ca3dc0 > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-content ) > .e-con{--padding-top:14px;--padding-right:14px;--padding-bottom:14px;--padding-left:14px;}:where( [data-core-v316-plus='true'] .elementor-element.elementor-widget-n-menu > .elementor-widget-container > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-content ) > .e-con{--padding-block-start:14px;--padding-inline-end:14px;--padding-block-end:14px;--padding-inline-start:14px;}}@media(min-width:768px){.elementor-2351 .elementor-element.elementor-element-4f36d691{--width:30%;}.elementor-2351 .elementor-element.elementor-element-546f56f2{--width:240px;}.elementor-2351 .elementor-element.elementor-element-43ae7130{--content-width:100%;}.elementor-2351 .elementor-element.elementor-element-606fe7c7{--width:100%;}.elementor-2351 .elementor-element.elementor-element-4a14ef81{--width:100%;}.elementor-2351 .elementor-element.elementor-element-32f601d3{--width:100%;}.elementor-2351 .elementor-element.elementor-element-4a56e4d5{--content-width:0px;}}@media(max-width:1024px) and (min-width:768px){.elementor-2351 .elementor-element.elementor-element-4f36d691{--width:50%;}.elementor-2351 .elementor-element.elementor-element-546f56f2{--width:210px;}}/* Start custom CSS for mega-menu, class: .elementor-element-1ca3dc0 */#deals-discounts {
    display: none;
}
@media screen and (max-width:768px) {
#menu-inner .e-n-menu-content .e-child {
  width: 100vw;
}
#nav-cart-link {
    display: none;
}
}/* End custom CSS */
/* Start custom CSS *//* RSP navigation — paste-ready skin for the live Elementor Nested Menu.
   Scoped to the .rsp-nav__* hook classes; adds no behaviour.
   Companion doc: RSP Navigation IA.dc.html  ·  Breakpoint: 1024px
   ------------------------------------------------------------ */

/* ============================================================
   RSP navigation skin — attaches to hook classes only.
   Elementor keeps ownership of open/close behaviour.
   ============================================================ */
.rsp-nav {
  --rsp-navy: #04213E;  --rsp-ink: #17213D;  --rsp-body: #3B4A63;
  --rsp-muted: #5C6B80; --rsp-soft: #94A3B8; --rsp-line: #E3E8EF;
  --rsp-hair: #F1F4F8;  --rsp-teal: #3D9A96; --rsp-teal-d: #2F7C79;
  --rsp-teal-t: #EAF6F5; --rsp-amber: #F5A623; --rsp-amber-d: #E0940F;
  --rsp-ease: cubic-bezier(.4, 0, .2, 1);
  font-family: Manrope, sans-serif;
}
.rsp-nav *, .rsp-nav *::before, .rsp-nav *::after { box-sizing: border-box; }

/* --- top-level row ------------------------------------------
   .rsp-nav__item / .rsp-nav__link / .rsp-nav__caret have no class
   field in Elementor's Nested Menu widget — target its own stable
   native classes as descendants of .rsp-nav instead. Confirmed live
   2026-08-17 against theme_template_id 2184/2185. -------------- */
.rsp-nav .e-n-menu-title-container {
  font: 600 16px/1.2 Manrope, sans-serif;
  color: var(--rsp-ink); text-decoration: none;
  transition: color .18s var(--rsp-ease), transform .18s var(--rsp-ease);
  /* mobile browsers' own default tap-highlight (a gray box matching this
     link's tap target) was flashing on every L1 selection — confirmed live
     2026-09-25. Not one of our own rules; :active above already gives this
     its own intentional color/transform feedback, so the native highlight
     is pure redundant visual noise on top of it. */
  -webkit-tap-highlight-color: transparent;
}
.rsp-nav .e-n-menu-title-container:hover     { color: var(--rsp-teal); transform: translateY(-1px); }
.rsp-nav .e-n-menu-title-container:active    { color: var(--rsp-teal-d); transform: none; }
.rsp-nav .e-n-menu-title-container[aria-current="page"],
.rsp-nav .current-menu-item .e-n-menu-title-container { color: var(--rsp-teal); }
.rsp-nav :is(a, button):focus-visible {
  outline: 2px solid var(--rsp-teal); outline-offset: 3px; border-radius: 8px;
}

/* --- caret: hide Elementor's SVG, draw ours (blocker B1) --- */
.rsp-nav .e-n-menu-dropdown-icon       { background: none; border: 0; padding: 6px; cursor: pointer;
                        color: inherit; line-height: 0; }
.rsp-nav .e-n-menu-dropdown-icon svg,
.rsp-nav .e-n-menu-dropdown-icon i     { display: none !important; }   /* !important #1 */
.rsp-nav .e-n-menu-dropdown-icon::after {
  content: ""; display: block; width: 7px; height: 7px;
  border-right: 1.6px solid currentColor; border-bottom: 1.6px solid currentColor;
  transform: rotate(45deg) translateY(-1px);
  transition: transform .18s var(--rsp-ease);
}
.rsp-nav .e-n-menu-dropdown-icon[aria-expanded="true"]::after { transform: rotate(225deg) translateY(-1px); }
.rsp-nav .e-n-menu-dropdown-icon[aria-expanded="true"]        { color: var(--rsp-teal); }

/* ============================================================
   DESKTOP + LANDSCAPE — mega-panel. Drill-in is portrait-only (see the
   mobile block below); this now also covers landscape phones/tablets
   ≤1024px so nothing falls into an unstyled gap between the two rules.
   The currently-approved panel itself is unchanged — same rules as
   before, just a wider trigger. Confirmed 2026-08-19.
   ============================================================ */
@media (min-width: 1025px), (max-width: 1024px) and (orientation: landscape) {
  /* was also width:100vw + margin-left:calc(50% - 50vw) — a full-bleed
     trick for escaping a centered container. But .rsp-nav__panel is already
     nested inside .e-n-menu-content, which Elementor's own JS pins full-
     viewport-width via --stretch-left/--stretch-width custom properties —
     so this element had FOUR horizontal constraints at once (left, right,
     width, margin-left), one more than the box model has room for. The
     browser's over-constraint resolution kept width/margin-left/right and
     recomputed left to a large positive value instead of the intended 0,
     pushing the whole panel — and 1-2 of its columns — off the right edge
     of the viewport. Confirmed independently via two live methods
     (edit-mode + the editor's own Preview mode) 2026-09-18. The ancestor's
     stretch positioning already provides a correct full-width containing
     block; left:0; right:0 alone is enough. */
  .rsp-nav__panel {
    /* position:absolute alone lost to Elementor's own inline
       "position: var(--position)" (native dropdown-layout styling, not
       something toggled specially on open — it resolves to "relative"
       whether the panel is open or closed) every time, since an inline
       style beats a plain stylesheet rule regardless of .elementor-2351
       specificity. Confirmed live 2026-09-21: computed position stayed
       "relative" with the panel rendering in normal flex flow, sized to
       its own content, instead of the full-bleed mega-panel this rule
       intends. !important is the only way to beat an inline value that
       isn't itself !important. */
    position: absolute !important;   /* !important #4 */
    /* same inline-style fight as position above — Elementor also writes a
       literal inline "left: 424px" (its own computed dropdown-panel offset,
       not a custom property this time) alongside position/display/width.
       left:0 alone lost to it the same way. Confirmed live 2026-09-21. */
    left: 0 !important; right: 0;   /* !important #5 */
    /* and a third: inline "width: var(--width)" (resolves to fit-content)
       is an explicit, non-auto width, which wins over the left:0/right:0
       derived width on an absolutely positioned box — panel's right edge
       fell ~424px short of the viewport instead of reaching it. auto lets
       left/right do the sizing again. Confirmed live 2026-09-21. */
    width: auto !important;   /* !important #6 */
    /* no rule here ever set `top` at all — computed value was "auto", and
       with none of the other inline/native positioning fights above
       constraining it either, the panel rendered flush with its own
       offsetParent's top edge instead of below the header, overlapping the
       logo/Upper Nav row. Confirmed live 2026-09-28 — Joi: "make sure the
       top of the dropdown touches the header and doesn't overlap the
       logo." First attempt used 117px, reasoning (wrongly) that the
       containing block sat at the page's own top edge and 117px was the
       header's full height (Logo+Upper Nav+Main Nav) — that overshot
       badly. The real containing block is .e-n-menu-content, a sibling of
       .e-n-menu-title INSIDE the Main Nav row itself (i.e. already
       positioned near the BOTTOM of the header, not the page top) —
       measured live at the same page position as the header's own bottom
       edge minus ~26px, so the header's full 117px height was never the
       right number to begin with. 26px is the gap that actually needs
       closing.
       26px went stale too, same as the mobile 97px below — re-measured
       2026-10-09 at ~6px against the current header. Replaced with
       --rsp-panel-top (header's bottom edge minus the active
       .e-n-menu-content's own top,
       set live by rsp-nav-drill-in.js's syncHeaderOffsets()) so the next
       header-content edit doesn't silently reopen this same gap again. */
    top: var(--rsp-panel-top, 26px);
    background: #fff; border-top: 1px solid var(--rsp-line);
    box-shadow: 0 18px 40px rgba(4, 33, 62, .10);
    padding: 32px max(24px, calc(50vw - 590px)) 36px !important;   /* !important #2 */
  }
  /* Hover dead-zone, take 2 (2026-10-01) — REVERTED same day. Gave
     .e-n-menu-item position:relative + an ::after bridge below it, on the
     theory that Elementor's close-on-leave JS tracked .e-n-menu-item's own
     hover state (confirmed via real stepped mouse movement: aria-expanded
     flipped false the instant the cursor crossed .e-n-menu-item's bottom
     edge). That theory was only half right — per-descendant event tracing
     (mouseenter/leave bound to item, title, title-container, caret,
     content, all instrumented separately, timestamps correlated against
     aria-expanded) showed the close fires off .e-n-menu-title's own
     mouseleave, not .e-n-menu-item's — .e-n-menu-item doesn't actually
     leave until ~300ms later. So the ::after on .e-n-menu-item never
     closed the real gap at all.
     Worse, .e-n-menu-item position:relative is a live regression on its
     own: .e-n-menu-item is an ANCESTOR of .e-n-menu-content (sibling of
     .e-n-menu-title inside the LI), so giving it position:relative made
     it .e-n-menu-content's offsetParent, which it wasn't before. The
     panel's left offset — tuned against whatever ancestor was previously
     the containing block — shifted with it: confirmed live, panel
     rendered at x=329.7 to x=1769.7 against a 1440px viewport, ~329px
     hanging off the right edge. Joi: "put the dropdown container back
     where it was, its off canvas." Reverted in full same session.
     Next attempt should target .e-n-menu-title specifically (a SIBLING,
     not ancestor, of .e-n-menu-content — safe from the offsetParent
     issue) — validate against both the hover transit AND panel position
     in an isolated browser before publishing again. */
  /* Hover dead-zone, take 3 (2026-10-01) — targets .e-n-menu-title, the
     actual element Elementor's close-on-leave JS is bound to (per the
     event trace above), not .e-n-menu-item. Same width/position as
     .e-n-menu-item (fills it completely) so the extended zone is still
     scoped to just this item's own column, but .e-n-menu-title is a
     SIBLING of .e-n-menu-content inside the LI, not its ancestor, so
     giving it position:relative cannot change .e-n-menu-content's
     offsetParent the way take 2 did. Validated in an isolated headless
     browser before publishing: full hover transit stays open for both
     Products and Resources with zero cross-item bleed, .e-n-menu-item
     stays position:static, .e-n-menu-content's offsetParent stays
     nav.e-n-menu, and the panel renders at x:0–1440 with no overflow.
     Caught live in tab 1 AND tab 3 right after publishing: thin black
     vertical lines under every item. Cause: Elementor Pro's own
     widget-mega-menu.min.css already targets this exact .elementor-2351
     (.e-n-menu-item:not(:last-of-type) .e-n-menu-title::after) as a
     built-in item divider, normally invisible via
     content:var(--n-menu-divider-content,none) — "none" suppresses the
     pseudo-element entirely. Our content:"" (needed to create the
     hit-area box at all) unconditionally overrides that to a real empty
     string, and since cascade applies per-property, Elementor's own
     border-color:#000 / border-inline-start-style:solid from that same
     rule rendered onto our new, taller box since we never touched
     border ourselves. Fixed by explicitly resetting it below. */
  #menu-inner .e-n-menu-item .e-n-menu-title { position: relative; }
  #menu-inner .e-n-menu-item .e-n-menu-title::after {
    content: ""; position: absolute; left: 0; right: 0; top: 100%; height: 30px;
    border: none;
  }
  /* Artboard 1 QA (2026-09-23) — was unprefixed plain-class .rsp-nav__panel
     > * / #rsp-panel-products.rsp-nav__panel > * .elementor-2351s. Neither actually
     worked, and for a THIRD reason beyond the two already chased down below:
     .rsp-nav__panel (a "boxed" Elementor container, e-con-boxed) wraps its
     real content in its own extra .e-con-inner div — the grid element
     (23ae8fae/104a4558) is a GRANDCHILD of the panel, not a direct child, so
     "> *" was landing on .e-con-inner instead and never reaching the grid at
     all. Confirmed live 2026-09-23: max-width/gap computed as "none"/20px on
     the actual grid element while .e-con-inner quietly absorbed the 1180px/
     40px meant for it — this is what made columns render narrow and
     off-center on both Products and Resources despite the rule appearing to
     apply. Also: the base rule, unprefixed, was losing to Elementor's own
     native gap regardless; and #rsp-panel-products was never reachable to
     begin with — this specific element is Elementor's Nested Menu dropdown-
     content box, which the widget's own JS/PHP stamps with its own auto id
     ("e-n-menu-content-NNNN") regardless of any custom _element_id set on
     the panel (confirmed live: setting one via the Advanced tab had zero
     effect on the rendered id). Re-scoped past all three problems at once by
     targeting .rsp-nav__item--products / .rsp-nav__item--resources directly
     — real, already-present classes on the grid element itself, no
     intermediate wrapper or custom id involved. */
  #menu-inner .rsp-nav__item--products,
  #menu-inner .rsp-nav__item--resources {
    display: grid; gap: 40px; max-width: 1180px; margin: 0 auto;
    grid-template-columns: 1fr 1fr 1fr .95fr;
  }
  #menu-inner .rsp-nav__col { display: grid; gap: 4px; align-content: start; }
  /* Products: four equal columns, promo as a full-width strip beneath them. */
  #menu-inner .rsp-nav__item--products {
    grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 36px;
  }
  #menu-inner .rsp-nav__item--products .rsp-nav__promo {
    grid-column: 1 / -1; margin-top: 8px;
    grid-template-columns: 148px 1fr auto; gap: 22px; align-items: center;
  }
  /* Artboard 1 QA (2026-09-23) — the reference spec's own IA table is
     explicit: "Postcards / one column per sub-group" (Real Estate Postcards,
     Promotional Postcards each get their OWN column), giving Products four
     equal columns total. The live content instead nests both sub-groups
     inside one "Postcards" wrapper (data-id 4d7a0a82) alongside its own
     hidden-desktop collabel — moving/deleting that wrapper in Elementor would
     also change what rsp-nav-drill-in.js's findCardBoundary() sees, since it
     walks this exact tree to decide where one mobile L2 card ends: doing so
     would split "Postcards" into two separate mobile cards too, when mobile
     should keep showing ONE "Postcards" card exactly as it does today. Instead,
     collapsing the wrapper with display:contents (desktop-only, same technique
     already used for .rsp-nav__sub above) promotes its two sub-group children
     to be direct grid items here — visually four columns — while leaving the
     Elementor tree, and everything rsp-nav-drill-in.js reads from it, untouched.
     Targeted by data-id, not a class, since it's a one-off structural fix, not
     a reusable hook. */
  #menu-inner :is([data-id="4d7a0a82"], [data-id="e6a738"]) { display: contents; }
  /* The four sub-group wrappers (two now-promoted Postcards columns, plus
     Digital Marketing Tools/Print Material inside the untouched Promotional
     Tools column) switch from Elementor's own flex_gap:7px to the spec's
     col-level treatment — display:grid;gap:4px, matching .rsp-nav__col above
     exactly — so label-to-leaf and leaf-to-leaf spacing comes from the same
     4px-gap-plus-margin model as every other column, instead of a locally
     different 7px flex gap. */
  #menu-inner :is([data-id="4df7ab85"], [data-id="46792df9"]), #menu-inner :is([data-id="2cb14938"], [data-id="299c36d0"]),
  #menu-inner :is([data-id="4723a2a2"], [data-id="162aa27e"]), #menu-inner :is([data-id="51068cee"], [data-id="7f8f0ee5"]) {
    display: grid; gap: 4px; align-content: start;
  }
  /* mobile-only furniture — desktop/landscape flattens the hierarchy into columns */
  .rsp-nav__back, .rsp-nav__count, .rsp-nav__foot { display: none; }
  /* .rsp-nav__cat, in a REAL future content build (heading+text widget
     pair), wraps the column's existing collabel PLUS a new description —
     display:contents lets the collabel keep showing exactly as before,
     with :last-child hiding just the new description. But
     rsp-nav-drill-in.js currently synthesizes .rsp-nav__cat as a plain
     title+count button at runtime, unconditionally, on every device
     (buildCategoryCards() has no MQ gate — gating a one-time DOM mutation
     by viewport was fragile across device-mode switches, confirmed live
     2026-09-18). display:contents unwrapped that button and only hid its
     LAST child (count), so its title text rendered as an untouched,
     unstyled duplicate of the real collabel heading, directly in the
     desktop column ("mobile only menus are displaying when they
     shouldn't"). Hide the whole synthetic card outright instead — the
     :has() match keeps a real future content build (matching the comment
     above) on the display:contents path, unaffected. */
  .rsp-nav__cat:not(:has(.rsp-nav__cat-title)) { display: contents; }
  .rsp-nav__cat:not(:has(.rsp-nav__cat-title)) > :last-child { display: none; }
  .rsp-nav__cat:has(.rsp-nav__cat-title) { display: none; }
  /* .rsp-nav__sub, likewise, is now ALSO applied by buildCategoryCards() —
     but NOT to a separate future L3 container, to the column's OWN
     .rsp-nav__col element itself (findCardBoundary walks up to the nearest
     ancestor shared by multiple collabels, which for every column with a
     heading IS the .rsp-nav__col grid item — confirmed live 2026-09-18).
     classList.add() only ADDS .rsp-nav__sub, it doesn't remove .rsp-nav__col,
     so the mutated element carries both classes. Both .rsp-nav__col
     {display:grid} and .rsp-nav__sub {display:contents} are (0,1,0) in this
     same media block — display:contents came later in source and won,
     which doesn't just "unwrap harmlessly": it deletes the column's own
     grid-item box, so ITS children (collabel, groups, every leaf) get
     auto-placed as individual items directly into the PANEL's outer grid
     instead of staying nested inside their own column — with 3 columns
     doing this at once, their content interleaves across the outer grid in
     DOM order. This is what "desktop menu is broken, audit every parent
     and child" actually was. :not(.rsp-nav__col) keeps the unwrap for a
     genuine future hand-built L3 container (which would never also carry
     .rsp-nav__col) while leaving our synthesized columns' own grid boxes
     intact. */
  .rsp-nav__sub:not(.rsp-nav__col) { display: contents; }
  /* Was display:none here (Joi's call 2026-08-19) — reversed 2026-09-21:
     Joi's own reference snapshot of the target layout shows every leaf's
     supporting line visible on desktop ("Dominate Your Local Farm" under
     "Target Farming Report", etc.) — confirmed live these were rendering
     display:none, matching nothing on screen where the reference shows a
     second line under every leaf title. */
  /* !important — some Resources leaf descriptions ("Insights, Tips and
     Strategies", etc.) sit nested under an ancestor that also carries
     .rsp-nav__group somewhere above them in the tree (a content mislabel,
     not this file's doing), so the DESCENDANT .elementor-2351 below
     (.rsp-nav__group .elementor-heading-title) also matches them —
     same specificity as this rule, later in source, so it was winning and
     rendering these three descriptions bold/11px instead of the correct
     400/14px every other leaf description uses. Confirmed live 2026-09-21
     — Joi: "the children should not be bold. h5's need to be the same." */
  /* .elementor-text-editor only exists in the EDITOR's own DOM (it's the
     inline-editing wrapper div Elementor adds around a Text Editor widget's
     <p> while you're actively editing it) — the real, published front-end
     markup for the same widget is just .elementor-widget-container > p,
     no wrapper class at all. Every rule in this file that only reached
     .elementor-text-editor, tested and confirmed correct in the editor's
     own preview iframe, was therefore silently matching NOTHING on the
     actual live site — this is what was really behind every "teal/16px on
     the front end, fine in the editor" report for every leaf-d built as a
     Text Editor widget (all of Products' leaves; Resources' three use
     Heading widgets instead, whose .elementor-heading-title class DOES
     survive to the front end, which is why those tested fine everywhere).
     Confirmed live 2026-09-28 by diffing the two DOMs directly. Added
     .elementor-widget-container > p to reach the real front-end shape. */
  #menu-inner .rsp-nav__leaf-d .elementor-heading-title,
  #menu-inner .rsp-nav__leaf-d .elementor-text-editor,
  #menu-inner .rsp-nav__leaf-d .elementor-widget-container > p {
    font: 400 14px/1.45 Manrope, sans-serif !important;
    /* same collision as the bold fix above, this time for text-transform —
       the colliding .rsp-nav__group ancestor rule sets uppercase, and
       leaf-d/leaf-t never declared their own value to contend with it, so
       it just applied. "News"/"Insights, Tips and Strategies" etc. were
       rendering ALL CAPS despite title-case raw content ("News", not
       "NEWS") — confirmed live 2026-09-21 — Joi: "the children should not
       be caps." */
    text-transform: none !important;
    /* same collision again, third property — the colliding .rsp-nav__group
       ancestor also sets letter-spacing:.12em, and this rule never declared
       its own value either, so the same three Resources leaf-d's
       ("Insights, Tips and Strategies", "Real-World Product Analysis",
       "Guides, Templates and Tools") were still inheriting 1.68px of
       tracking despite the bold/caps fix above — confirmed live 2026-09-28,
       Joi: "seeing incorrect letter spacing on the h5 and leaf d".
       font/color/text-transform being !important never covered this
       separate property. */
    letter-spacing: normal !important;
    /* and a FOURTH property from the same collision, still not caught: the
       colliding .rsp-nav__group rule also sets color: var(--rsp-soft), and
       THIS rule's own color was never !important — so even after the three
       fixes above, those same three Resources leaf-d's rendered var(
       --rsp-soft) (#94A3B8) instead of var(--rsp-muted) (#5C6B80), reading
       as a visibly different, lighter grey than every other leaf-d on the
       site — confirmed live 2026-09-28, Joi: "rsp-nav__leaf-d is not the
       same color on resources desktop". Every property this ancestor rule
       sets (font shorthand, text-transform, letter-spacing, color) now has
       its own !important override here — nothing left for it to leak. */
    color: var(--rsp-muted) !important;
  }
  /* Artboard 1 QA (2026-09-23) — supersedes the padding-top:16px leaf-
     spacing hack below (2026-09-21): that value matched the live/published
     header, but Joi's call this round is to match the reference spec's own
     embedded CSS instead (rsp-nav-ia-static.html §05), which gives leaves a
     self-contained hover-pill treatment — 9px/10px padding, a matching
     -10px left margin so the pill's left edge still lines up with the
     column's own text (10px padding minus 10px margin = 0 net inset), a
     10px border-radius for the hover/active highlight, and a tight 2px
     title-to-description gap (down from the live site's 7px). Leaf-to-leaf
     and label-to-leaf spacing now comes from each leaf's own 9px vertical
     padding plus the parent's 4px grid gap (see the .rsp-nav__col-equivalent
     rule added near the panel grid above), not a manual top-padding value
     here. */
  #menu-inner .rsp-nav__leaf {
    padding: 9px 10px; margin-left: -10px; border-radius: 10px; gap: 2px;
  }
  /* Elementor's newer "Atomic" Div Block element type (e-div-block-base,
     used for "Lead Gen Campaigns" per Joi's 2026-09-21 div-block test)
     ships a native site-wide default of 10px padding on all sides
     (.elementor .e-div-block-base — confirmed live, this is Elementor's
     own base style, not anything in this file). Atomic elements don't use
     the classic per-widget Advanced > Padding control at all (confirmed
     live: their settings model has no _padding key, and the widget's own
     "Padding" field in the panel visibly does nothing, since it's editing
     a control that has no effect on this element type) — so the fix has
     to be a CSS override, not a per-element setting. #menu-inner's ID
     specificity beats the native class rule the same way it does
     everywhere else in this file. */
  #menu-inner .e-div-block-base { padding: 0; }
  /* Artboard 1 QA (2026-09-23) — supersedes the padding-top:16px hack below
     (2026-09-21, which matched the live/published header's spacing instead
     of the spec). Switched to margin, matching the reference spec's own
     rule exactly: .rsp-nav__collabel, .rsp-nav__group { margin: 0 0 8px }
     plus .rsp-nav__group { margin-top: 16px } — margin (not padding) is
     what lets this stack correctly with the parent's own 4px grid gap,
     same model the spec uses throughout. */
  #menu-inner .rsp-nav__collabel,
  #menu-inner .rsp-nav__group { margin: 0 0 8px; }
  #menu-inner .rsp-nav__group { margin-top: 16px; }
  /* Desktop type was reading small — collabel, group, and leaf-title were
     all stuck at 12px, Elementor's own native heading-widget default,
     since desktop never had its own explicit typography rule the way
     mobile does. Porting mobile's already-correct, spec sizes over rather
     than inventing new ones: 16px/700 for leaf titles (the primary
     readable content — 12px there was the main problem) and 11px/800
     uppercase for collabel/group (deliberately small micro-labels by
     design, not part of what read as "small" here). Confirmed live
     2026-09-21. */
  #menu-inner .rsp-nav__collabel .elementor-heading-title,
  #menu-inner .rsp-nav__group .elementor-heading-title {
    font: 800 11px/1.2 Manrope, sans-serif;
    letter-spacing: .12em; text-transform: uppercase;
    color: var(--rsp-soft);
  }
  #menu-inner .rsp-nav__leaf-t .elementor-heading-title {
    font: 700 16px/1.35 Manrope, sans-serif !important; color: var(--rsp-ink) !important;
    text-transform: none !important;
    /* same .rsp-nav__group collision as .rsp-nav__leaf-d above, hitting
       leaf-t this time — never checked for it here since the original
       bold/caps reports only ever named leaf-d. "News"/"Analysis"/"Free
       Downloads" (Resources' leaf-t's) were rendering 1.92px of tracking
       (.12em of their own 16px) despite correct color/weight — confirmed
       live 2026-09-28. */
    letter-spacing: normal !important;
  }
  /* Pixel-perfect audit (2026-09-28) — desktop never had its own
     .rsp-nav__leaf:hover rule at all; the equivalent rule a few hundred
     lines down (color:var(--rsp-teal); transform:translateX(2px), plus its
     own leaf-d override to var(--rsp-body)) only ever existed inside the
     MOBILE media query. Resources' leaves ("News", "Analysis", "Free
     Downloads") still showed a hover effect on desktop despite this,
     because they're original, pre-project widgets carrying their own
     leftover per-widget hover-color setting from before this file existed
     — every leaf built during this project (all of Products' Postcards/
     Promotional Tools/Digital Marketing/Print Material leaves, 10 of them)
     never got that same per-widget setting, so with no CSS rule to fall
     back on they had literally no hover feedback at all. Ported the
     mobile rule's exact values here rather than depending on any more
     leftover per-widget settings existing. */
  #menu-inner .rsp-nav__leaf:hover { color: var(--rsp-teal); transform: translateX(2px); }
  /* both need !important here, unlike mobile's version of this same rule —
     leaf-t/leaf-d's OWN color is !important now (added for the
     .rsp-nav__group collision fixes above), so plain inheritance from the
     container's :hover color never reaches the text at all: !important
     always wins over specificity regardless of how specific a
     non-important rule is, so without matching !important here, hovering a
     leaf correctly shifted color/transform on the leaf ITSELF but the
     title/description text inside just sat locked to their rest-state
     colors — confirmed live 2026-09-28. */
  #menu-inner .rsp-nav__leaf:hover .rsp-nav__leaf-t .elementor-heading-title { color: var(--rsp-teal) !important; }
  #menu-inner .rsp-nav__leaf:hover .rsp-nav__leaf-d .elementor-heading-title,
  #menu-inner .rsp-nav__leaf:hover .rsp-nav__leaf-d .elementor-text-editor,
  #menu-inner .rsp-nav__leaf:hover .rsp-nav__leaf-d .elementor-widget-container > p { color: var(--rsp-body) !important; }
}
/* --- tablet landscape only (768–1024px) ---------------------------
   Joi, viewing the Elementor editor's own "Tablet" device preview
   (768×675 — landscape aspect, since the preview iframe is wider than
   tall): "Postcards header likely needs to be hidden and lead gen
   campaigns lost its styling." Root-caused, not guessed — two separate
   issues, confirmed live at genuine tablet-landscape widths (not just
   the editor iframe) at both 768px and 1024px on rspusa.com/blog:
   1) The "Postcards" heading (data-id 500cef50) is a group-level label
      Elementor hides via its own native "Hide on Desktop" visibility
      toggle — but Elementor's own breakpoint classifies anything
      ≤1024px as non-desktop, so that toggle doesn't cover this range.
      Meanwhile OUR desktop media query above (deliberately orientation-
      based, not Elementor's breakpoint-based) still applies the
      4-column desktop grid treatment to this same ≤1024px-landscape
      range. The gap between those two systems is what let this label
      surface as an empty, orphaned grid cell with nothing under it —
      confirmed by checking the flattened grid item list at 1440px
      (hidden, width 0) vs 1024px landscape (visible, its own column).
      It needs hiding specifically in this gap, not at real desktop or
      in mobile/portrait, both of which already handle it correctly.
   2) "Lead gen campaigns lost its styling" turned out not to be a
      missing-class/content bug — Target Farming Report/Listing Launch
      both carry correct .rsp-nav__leaf styling identically at 1024px
      and 1440px. The real cause was the SAME 4-equal-column desktop
      grid (.rsp-nav__item--products, repeat(4, minmax(0,1fr)) — sized
      for its ≥1025px/1180px-max-width design target) simply not having
      room to breathe at 768–1024px: confirmed live, text from adjacent
      columns visibly overlapped at 768px width (e.g. "Multi-Property
      Postcards"/"Holiday Postcards" running into each other). Resources
      had the same failure via a different mechanism — its base
      grid-template (1fr 1fr 1fr .95fr, lines ~198-201) has no
      minmax(0,...) floor, so content-driven track sizing blew its
      columns out to the full container width each, stacking Blog/Case
      Studies/Downloads completely on top of one another past 768px.
   Fix: drop both panels to 2 columns in this range (plenty of width per
   column at both 768px and 1024px, confirmed live via screenshot — no
   overlap, no orphaned cell), and hide the stray Postcards label.
   Scoped to min-width:768px so it can't touch any narrower landscape
   width currently getting the (untouched) desktop treatment, and to
   max-width:1024px/orientation:landscape so it can't touch the
   orientation:portrait mobile block below. Desktop (≥1025px) and
   mobile (≤1024px portrait) are both completely unchanged — confirmed
   2026-10-01. */
@media (min-width: 768px) and (max-width: 1024px) and (orientation: landscape) {
  #menu-inner :is([data-id="500cef50"], [data-id="4ff1f1fe"]) { display: none; }
  #menu-inner .rsp-nav__item--products,
  #menu-inner .rsp-nav__item--resources {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  /* Same gap as 500cef50 above, same column (Lead Gen Campaigns,
     6e951496): data-id 7d5ebe9 (a second "Lead Gen Campaigns" heading)
     and e9860e3 (its "Target farming reports and listing launch"
     description) are both elementor-hidden-desktop — a mobile-only
     accordion-summary pair that Elementor's native breakpoint correctly
     hides at real desktop, but which isn't covered at ≤1024px, so it
     rendered as a duplicate heading + stray description sitting under
     the real "LEAD GEN CAMPAIGNS" column label. Joi: "Lead Gen Campaigns
     and the space under it is wrong." Confirmed live 2026-10-01. */
  #menu-inner :is([data-id="7d5ebe9"], [data-id="643dc51"]),
  #menu-inner :is([data-id="e9860e3"], [data-id="204a380d"]) { display: none; }
  /* Joi: "remove Promotional Tools from tablet portrait." */
  #menu-inner :is([data-id="4d4d9fe3"], [data-id="1ed74ebf"]) { display: none; }
}

/* --- column labels + leaves + promo + CTA -----------------------
   Moved inside the mobile-portrait media query below (was unscoped) —
   desktop's approved look must stay untouched, and an unscoped rule here
   would start overriding it the moment any widget's own Style-tab
   settings get cleared to Default. Joi's call 2026-08-19. See that block
   for the actual rules and the .rsp-nav__group cascade-bug note. --- */

/* ============================================================
   MOBILE — drill-in sheet, ≤1024px AND portrait only. Landscape at any
   width ≤1024px gets the desktop/landscape mega-panel above instead —
   Joi's call 2026-08-19, so nothing falls into an unstyled gap between
   the two rules and the drill-in doesn't show sideways-held phones.
   ============================================================ */
@media (max-width: 1024px) and (orientation: portrait) {
  /* Elementor's own native rule — .elementor-widget-n-menu
     .e-n-menu[data-layout="dropdown"] .e-n-menu-wrapper { position: absolute }
     — is (0,4,0) specificity and was silently beating our (0,3,0) rule below,
     so the sheet never actually went fixed/full-screen no matter what
     data-open said. Matching Elementor's own ancestor class (already present
     on our widget's outer wrapper) to exceed it, rather than reaching for a
     3rd !important. Confirmed live 2026-09-14. */
  #menu-inner[data-open="true"] .e-n-menu-wrapper {
    /* top:97px, not inset:0 — the toggle/logo row lives outside this wrapper
       (a sibling in .e-n-menu, not a child of it), so inset:0 put the fixed
       sheet flush with the viewport top and buried that header row underneath
       it. First pass used 62px (the inner .e-n-menu row's own height), but
       that row sits inside a taller header container with its own vertical
       padding. That container measured 112.95px top-to-bottom when this was
       first written (2026-09-16), giving the 113px used since — but the
       header's own height has changed since (Upper Nav/Support row content),
       and re-measuring live 2026-09-28 found it now at 96px (border sits at
       97). The stale 113px left a 16-17px gap between the header's real
       bottom edge and where this fixed sheet started, showing the page's
       own background color through it — Joi: "gray gap on L1" / "gray and
       then beige gap above L2". Whatever this number is, it has to track
       the header's actual current height, not a one-time measurement. */
    /* 97px re-measured yet again stale 2026-10-09 (real header now 75.5px,
       not the 96px this was tuned against) — the THIRD time this exact
       number has gone stale from unrelated header-content edits. Replaced
       with --rsp-header-bottom, set live by rsp-nav-drill-in.js's
       syncHeaderOffsets() (on load, resize, orientation change, and right
       before the sheet opens) instead of another one-off pixel patch. */
    position: fixed; top: var(--rsp-header-bottom, 97px); right: 0; bottom: 0; left: 0; z-index: 9990; background: #fff;
    display: grid; grid-template-rows: 1fr auto; overflow: hidden;
    animation: rsp-sheet-in .18s var(--rsp-ease) both;
    /* Elementor sets its own max-height on this element (a --n-menu-dropdown-
       content-box-height calc left over from the accordion layout) — overriding
       position/inset alone isn't enough, that cap still applies and crops the
       sheet short of the real viewport height. Confirmed live 2026-09-14:
       measured 660px actual vs 736px real viewport. */
    max-height: none !important;   /* !important #3 — no other way to beat a calc()-based inline custom property */
  }
  /* Closed-state visibility — never declared before. Native's own rule,
     .elementor-widget-n-menu .e-n-menu-wrapper { display: var(--n-menu-
     wrapper-display); }, is the ONLY rule that controls display when
     data-open isn't "true" (the rule above only ever applied to the OPEN
     state). That custom property is driven by Elementor's own internal
     aria-expanded tracking on the toggle — and its own click handler fires
     on the SAME click event as ours, reading/toggling aria-expanded AFTER
     we do, so trying to keep our two attributes in sync by racing to set
     aria-expanded ourselves is fundamentally unreliable (confirmed live
     2026-09-18: observed flipping our just-set value in both directions,
     open and close). Don't depend on native's state for this at all —
     #menu-inner's ID specificity (1,0,0) beats native's (0,2,0) var()-based
     rule outright, so this closed-state rule wins regardless of whatever
     aria-expanded/custom-property Elementor is internally tracking. This is
     what "mobile header stays visibly open on the page, doesn't collapse
     behind the hamburger" actually was. */
  #menu-inner:not([data-open="true"]) .e-n-menu-wrapper { display: none; }
  /* the two levels ride one track */
  #menu-inner .e-n-menu-heading,
  #menu-inner .rsp-nav__panel {
    transition: transform .22s var(--rsp-ease);
    will-change: transform;
  }
  /* translateX(0) here isn't a no-op — every .rsp-nav__panel transform value
     below was derived assuming .e-n-menu-heading is ALWAYS the panel's
     containing block (it's the panel's ancestor, and per spec an element
     only becomes a containing block for position:absolute descendants once
     its own computed transform is something other than "none"). Without
     this, heading had NO transform at all at level 1 (only the
     [data-level="2"]/[data-level="3"] rules below ever set one), so the
     containing block silently switched between level 1 and levels 2/3 —
     the panel's compensation math was only ever correct on whichever side
     of that switch you happened to test. Kept as ITS OWN rule, not merged
     into the shared transition rule above — merging it into a .elementor-2351
     list that also matches .rsp-nav__panel gave both the SAME transform
     declaration at equal (0,1,0) specificity, so it collided with (and
     sometimes lost to, sometimes won against) .rsp-nav__panel's own
     transform rules depending on source order alone. Confirmed live
     2026-09-18. */
  #menu-inner .e-n-menu-heading { transform: translateX(0); }
  /* .e-n-menu-heading is flex-wrap:wrap (native) with each 360px-wide item
     forced onto its own line, inside a wrapper sized via grid-template-rows:
     1fr auto above — that gives heading a real, non-auto height. Neither
     side ever declared align-content, so the flexbox default (stretch)
     divided that height EVENLY across all 4 wrapped lines regardless of
     each item's own content — every row measured ~100px (402px / 4 items),
     not the ~56-61px min-height/content actually calls for. Confirmed live
     2026-09-16 during the caret-wrap follow-up. */
  #menu-inner .e-n-menu-heading { align-content: flex-start; }
  #menu-inner[data-level="2"] .e-n-menu-heading { transform: translateX(-100%); }
  #menu-inner[data-level="3"] .e-n-menu-heading { transform: translateX(-200%); }
  #menu-inner .rsp-nav__panel {
    /* was inset:0; top:62px — a leftover attempt to keep the L1 header row
       clear of the panel that never actually worked, since the wrapper's own
       opaque background covered the header regardless of this offset. Now
       that the wrapper itself starts below the header (top:97 fix above),
       the panel should fill the wrapper's content row exactly, flush with
       .e-n-menu-heading, not leave a second redundant 62px gap. */
    position: absolute; inset: 0;
    transform: translateX(100%); overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    /* was 14px — .rsp-nav__sub (L3's own scrolling container) uses 18px for
       this same top padding, and since .rsp-nav__back is position:sticky in
       both, that padding is what determines how much room shows above the
       sticky header box at each level. The 4px mismatch read as L2's header
       sitting measurably tighter to the top than L3's — Joi: "the headers on
       L2 and L3 should match. L3 is right!!!!" Matched to L3's value.
       Confirmed live 2026-09-28. */
    /* 0 top (2026-10-10): back row sits flush under the header, matching .rsp-nav__sub */
    padding: 0 0 32px;
  }
  /* Elementor's native .elementor-widget-n-menu .e-n-menu-content > .e-con:not(.e-active)
     rule sets display:none at specificity (0,4,0) — our plain .rsp-nav__panel
     rule (0,1,0) never had a chance, so the panel stayed hidden any time
     Elementor's own accordion toggle didn't add .e-active (which, per the
     aria-expanded desync we kept hitting, is unreliable once our JS is also
     handling the same click). We don't need Elementor's e-active at all —
     our own data-active attribute already drives the slide transform below —
     so just force display on regardless of it, matching native's .elementor-2351
     shape to win the specificity tie via source order. Confirmed live
     2026-09-16. */
  #menu-inner .e-n-menu-content > .e-con.rsp-nav__panel { display: block; }
  /* .rsp-nav__panel is a DESCENDANT of .e-n-menu-heading (li > .e-n-menu-content
     > panel), not a sibling riding "the same track" as the comment above once
     assumed. A CSS transform on an ancestor becomes the containing block for
     absolutely-positioned descendants, so heading's own translateX(-100%/-200%)
     shift applies to the panel's inset:0 position TOO, on top of whatever the
     panel's own transform says. translateX(0) landed the panel at the heading's
     shifted origin (real screenX -360), not at 0 — that's why L1->L2 never
     visually drilled in even once display/position were fixed. The panel's own
     transform has to CANCEL the ancestor's current shift, so each (level ×
     active-state) combination needs its own explicit compensating value —
     there are only 4, since the DS caps this at 3 levels. Confirmed live
     2026-09-16: this is what actually got L1->L2 opening correctly. */
  #menu-inner[data-level="2"] .rsp-nav__panel[data-active="true"] {
    transform: translateX(100%); transition-duration: .22s;   /* cancels heading's -100% */
  }
  #menu-inner[data-level="2"] .rsp-nav__panel:not([data-active="true"]) {
    transform: translateX(200%);   /* stays off-screen once heading has already shifted -100% */
  }
  /* level 3: was translateX(200%), landing this panel back at screen
     position 0 (cancelling heading's -200% exactly, the same visible slot
     it held at level 2) — Joi's report "L3 is struggling on position, the
     drill in is not actually pushing L2 left" (2026-09-18) is exactly this:
     the panel snapped back into place instead of continuing to slide left
     as the drill got deeper. Keeping this at the SAME value as level 2's
     active rule (100%) means the panel's screen position is now driven
     purely by heading's own -100%→-200% transition (0 → -100%), so it
     visibly keeps sliding left when L3 opens, instead of un-sliding. */
  #menu-inner[data-level="3"] .rsp-nav__panel[data-active="true"] {
    transform: translateX(100%); transition-duration: .22s;
  }
  #menu-inner[data-level="3"] .rsp-nav__panel:not([data-active="true"]) {
    transform: translateX(300%);   /* stays off-screen once heading has already shifted -200% */
  }
  /* .rsp-nav__sub is relocated by the JS shim (relocateSub(), see
     rsp-nav-drill-in.js) to be a direct child of .e-n-menu-wrapper instead
     of staying nested inside .rsp-nav__panel where it's authored — panel
     needs overflow-y:auto for its own vertical scroll, and per the CSS
     Overflow spec that forces overflow-x to also become non-visible, which
     clips any descendant (sub included) to panel's own box. Panel sits
     off-screen at level 3 by design, so sub was being clipped into
     invisibility right along with it regardless of its own position.
     Wrapper is already position:fixed and never transformed, so once sub
     is its direct child this needs no heading/panel compensation at all —
     translateX(0) genuinely means "visible," not a value that has to
     cancel anything. Confirmed live 2026-09-21 after the previous
     panel-relative and item--products-relative compensation attempts both
     produced clipped-invisible or mispositioned results. */
  #menu-inner .rsp-nav__sub {
    position: absolute; inset: 0; transform: translateX(100%);
    background: #fff; overflow-y: auto; padding: 0 0 32px;
    transition: transform .22s var(--rsp-ease);
  }
  #menu-inner .rsp-nav__sub[data-active="true"] { transform: translateX(0); }
  #menu-inner .rsp-nav__panel[data-active="true"] > *,
  #menu-inner .rsp-nav__sub[data-active="true"] > * {
    animation: rsp-level-in .14s ease-out .06s both;
  }

  /* level 2 = categories with counts, not leaves (DS caps a level at 8 rows).
     Built as a Div block (e-atomic-element) wrapping a Heading + Text Editor
     widget — both render as wrapped divs, not bare <span>s, so :first-child/
     :last-child must not require the span tag. Confirmed live 2026-08-19. */
  #menu-inner .rsp-nav__cat {
    display: grid; gap: 5px; margin: 0 20px 10px; padding: 16px 18px;
    border: 1px solid var(--rsp-line); border-radius: 16px; background: #fff;
    color: var(--rsp-ink); text-decoration: none;
    transition: border-color .18s var(--rsp-ease), background .18s var(--rsp-ease);
    /* L2 padding QA (2026-09-23) — this card is a direct grid item of
       Elementor's own native Grid container (data-id 23ae8fae/104a4558,
       single 1fr column), and Elementor stretches grid children to
       width:100% of the track BEFORE this rule's own margin is applied —
       confirmed live, computed width was the full 360px track width despite
       the declared 20px side margins, so every card rendered 20px past the
       sheet's right edge (and the same amount short on the left) instead of
       the intended 320px-wide, 20px-gutter card. width:auto alone doesn't
       beat Elementor's own explicit width here; sizing it directly off the
       same margin this rule already declares does. !important confirmed
       necessary by direct test (a plain calc() override, no !important, had
       zero effect despite #menu-inner's usual ID-specificity margin — some
       other equal/higher-specificity native rule still won); injecting the
       same calc() with !important via a throwaway <style> tag DID take
       effect (360px -> 320px), isolating !important as the actual fix rather
       than a .elementor-2351/specificity problem. !important #7. */
    width: calc(100% - 40px) !important;
  }
  #menu-inner .rsp-nav__cat > :first-child .elementor-heading-title {
    display: flex; align-items: center; justify-content: space-between;
    font: 700 16px/1.35 Manrope, sans-serif;
  }
  #menu-inner .rsp-nav__cat > :last-child .elementor-text-editor { font: 400 14px/1.5 Manrope, sans-serif;
                                    color: var(--rsp-muted); }
  /* Neither Products nor Resources has real .rsp-nav__cat content built in
     Elementor (confirmed live 2026-09-18) — the rules above assumed a future
     heading+text-widget pair that doesn't exist yet. rsp-nav-drill-in.js
     synthesizes a card (title+count row, then a summary line) instead at
     runtime; :has() targets that shape specifically so a real future
     content build (matching the rules above) wouldn't be affected by this
     override. Stays a grid (the base .rsp-nav__cat rule above), not flex —
     the card now stacks two children (the row, then the summary line), not
     one flat row of spans. */
  #menu-inner .rsp-nav__cat:has(.rsp-nav__cat-title) {
    text-align: left; width: 100%; cursor: pointer; font-family: inherit;
  }
  #menu-inner .rsp-nav__cat-row { display: flex; align-items: center; justify-content: space-between; }
  /* color explicit, not inherited from .rsp-nav__cat's own color:var(--rsp-ink)
     — Elementor widgets carry their own per-element default text color
     (observed as rgb(109,110,113), #6D6E71) that wins over plain
     inheritance the same way its padding/width resets do elsewhere in this
     file. Confirmed live 2026-09-18 on the equivalent .rsp-nav__leaf-t case
     below; fixed here proactively rather than waiting to find it broken. */
  #menu-inner .rsp-nav__cat-title { font: 700 16px/1.35 Manrope, sans-serif; color: var(--rsp-ink); }
  /* supporting line — see buildCategoryCards()'s comment on why this is a
     joined-leaf-titles stand-in rather than hand-authored copy. Same size/
     color as the "real content" .elementor-text-editor summary rule above,
     so the two paths read identically once real copy replaces this.
     white-space:normal is load-bearing, not decorative — <button> carries
     an inherited white-space:nowrap (browser/Elementor button default,
     confirmed live 2026-09-18) that every descendant text node inherits.
     With it unset, this line's full unwrapped text forced the whole card
     (a shrink-to-fit <button>) out to ~1161px in a 360px sheet — the card
     rendered its own text off past the right edge of the viewport, which
     is also why clicking it did nothing: the click landed past the visible
     canvas, off both the card and the sheet entirely. */
  #menu-inner .rsp-nav__cat-desc {
    font: 400 14px/1.5 Manrope, sans-serif; color: var(--rsp-muted);
    white-space: normal;
  }
  /* the collabel that became a card's title (see buildCategoryCards in
     rsp-nav-drill-in.js) stays in the DOM inside the new .rsp-nav__sub —
     redundant once there, since the L3 back row already shows that same
     title. .rsp-nav__collabel only ever marks a top-level (now-a-card)
     label; nested .rsp-nav__group labels (e.g. "Real Estate Postcards"
     inside "Postcards") are a different class and stay visible. Confirmed
     live 2026-09-18. */
  #menu-inner .rsp-nav__sub > .rsp-nav__collabel { display: none; }
  /* Mobile L2/L3 padding audit (2026-09-23) — "Lead Gen Campaigns" is the
     one collabel with a SEPARATE mobile-only heading (data-id 7d5ebe9,
     built alongside the desktop heading 630d7f34 when that column was
     rebuilt as a classic Flexbox Container earlier this session), unlike
     Postcards/Promotional Tools, which reuse one shared heading for both
     breakpoints. 7d5ebe9 never carried the .rsp-nav__collabel class, so the
     rule above never caught it — confirmed live, it was rendering redundant
     at L3 above its own leaves, directly under the identical "Lead Gen
     Campaigns" back-row title. Its own text-editor sibling (data-id
     e9860e3, "Target farming reports and listing launch") rendered right
     under it for the same reason — same fix. Targeted by data-id rather
     than adding .rsp-nav__collabel to 7d5ebe9 directly: that class is also
     what buildCategoryCards()/findCardBoundary() (rsp-nav-drill-in.js)
     counts to find each card's boundary, and giving e527e54 two
     .rsp-nav__collabel children instead of one would trip that ">1 collabel"
     heuristic one level too early, breaking the boundary for BOTH headings
     instead of fixing either. A pure CSS, JS-invisible fix avoids that. */
  #menu-inner .rsp-nav__sub :is([data-id="7d5ebe9"], [data-id="643dc51"]),
  #menu-inner .rsp-nav__sub :is([data-id="e9860e3"], [data-id="204a380d"]) { display: none; }
  #menu-inner .rsp-nav__count { font: 800 11px/1 Manrope, sans-serif; letter-spacing: .08em;
                    color: var(--rsp-soft); }
  #menu-inner .rsp-nav__cat:active { border: 1.5px solid #54B4B0; background: #F5FBFA; }
  #menu-inner .rsp-nav__cat:active .rsp-nav__count { color: var(--rsp-teal); }

  /* panel footer — account chrome and support sit at the BOTTOM of level 1.
     Injected by the JS shim (see ensureFoot in rsp-nav-drill-in.js) — the
     Nested Menu widget's own wrapper markup has no editable slot to build
     this as real Elementor widgets. Level 1 only: it's a sibling of
     .e-n-menu-heading, not a child, so it doesn't slide away with the
     heading track and has to be hidden explicitly at levels 2/3. Cart and
     Login stay as ordinary menu items too — Joi's call 2026-09-14 was to
     add the footer, not remove them from the list. */
  #menu-inner:is([data-level="2"], [data-level="3"]) .rsp-nav__foot { display: none; }
  #menu-inner .rsp-nav__foot { padding: 16px 20px 22px; border-top: 1px solid var(--rsp-hair);
                   display: grid; gap: 14px; }
  #menu-inner .rsp-nav__foot > div { display: flex; align-items: center; justify-content: space-between; }
  #menu-inner .rsp-nav__foot a { font: 700 15px/1 Manrope, sans-serif; color: var(--rsp-teal);
                     text-decoration: none; }
  #menu-inner .rsp-nav__foot span[aria-hidden] { color: var(--rsp-line); margin: 0 2px; }

  #menu-inner .e-n-menu-item {
    display: flex; align-items: center; justify-content: space-between;
    min-height: 56px; padding: 0 20px; border-top: 1px solid var(--rsp-hair);
  }
  /* Everything below targets Elementor's own native .e-n-menu-* elements,
     which ship compound, attribute-qualified rules at (0,4,0) specificity
     for this exact "dropdown" mobile layout — .e-n-menu-item's own
     flex-direction:column, .e-n-menu-title's flex-wrap:wrap/width:auto/
     flex-grow:0, .e-n-menu-content's width:var(--stretch-width), all fought
     and initially WON against plain .rsp-nav-prefixed class .elementor-2351s,
     across several rounds (2026-09-16 through 2026-09-18) of finding one,
     "fixing" it by re-matching native's exact compound shape, then finding
     the next one the same way. #menu-inner is this widget's own unique
     element ID (confirmed live 2026-09-18, single match) — ID specificity
     (1,0,0) beats ANY class-based .elementor-2351 outright, so every rule below
     uses it instead of chasing native's shape one property at a time. */
  #menu-inner .e-n-menu-item { flex-direction: row; }
  #menu-inner .e-n-menu-title { flex-wrap: nowrap; flex: 1 1 auto; padding: 0; }
  #menu-inner .e-n-menu-title-container { min-width: 0; font-size: 17px; flex: 1; }
  #menu-inner .e-n-menu-dropdown-icon { flex: none; }
  /* the tap-highlight fix on .e-n-menu-title-container (top of this file)
     only ever covered that inner link — the gray flash Joi kept seeing on
     L1 selection (e.g. "Products") was the WHOLE ROW's own native tap
     target, .e-n-menu-item itself, not just the text inside it. Confirmed
     live 2026-09-28. #menu-inner .e-n-menu-item:active already gives this
     row its own intentional --rsp-hair background, so the native highlight
     on top of it is redundant here too. */
  #menu-inner .e-n-menu-item { -webkit-tap-highlight-color: transparent; }
  /* .e-n-menu-content is the OUTER wrapper the dropdown panel lives inside —
     a separate flex sibling of .e-n-menu-title in the row. Making the panel
     itself position:absolute (elsewhere in this file) takes IT out of flow,
     but does nothing for this wrapper, which otherwise keeps native's own
     width:var(--stretch-width) (100%) and caps how far title can grow.
     Confirmed live 2026-09-18: this exact mechanism was still squeezing
     "Why Us" (no caret, 2-word label) onto two lines even after the
     flex-wrap/flex-grow fixes above, because THIS element, not the title,
     was the one still claiming the full row. */
  #menu-inner .e-n-menu-content { flex: none; width: 0; }
  #menu-inner .e-n-menu-item:first-child { border-top: 0; }
  /* Login duplicates the new .rsp-nav__foot link on mobile — hide the
     top-level menu row here only; Cart and the menu item itself stay put
     everywhere else (desktop, and in the item list in the DOM/Navigator).
     Joi's call 2026-09-14. */
  #menu-inner .e-n-menu-item:has(> .e-n-menu-title > a[href*="wp/login.php"]),
  #menu-inner .e-n-menu-item:has(> .e-n-menu-title > a[href*="account/index.php"]) { display: none; }

  /* L1 header row — the toggle sits outside .e-n-menu-wrapper as a sibling,
     so once the wrapper goes fixed/full-screen this row collapses back to
     its own intrinsic (toggle-only) height. Give it the same 62px/border
     treatment as the injected .rsp-nav__back rows so L1 and L2/L3 read as
     one consistent header pattern. */
  /* was border-bottom directly on .e-n-menu — but that element is only as
     wide as its own content (~60px: the 40px toggle circle + its 10px
     margins), NOT the full header row (Logo sits in a sibling widget, off
     to the side, outside .e-n-menu entirely). The border rendered as a
     short 60px line tucked under the toggle icon instead of separating the
     whole header from the sheet below it. Confirmed live 2026-09-18: "L1
     looks clean, should be a border under the close icon on default mobile
     state" — meaning it wasn't visually reading as a header-wide separator
     at all. #menu-inner itself is also only as wide as its own content, so
     a plain border-bottom on it wouldn't fix this either — using the same
     full-bleed ::after trick as the desktop mega-panel elsewhere in this
     file (100vw + centering transform) to draw the line edge-to-edge
     regardless of how narrow this specific widget's own box is. */
  /* Anchored to #menu-inner's OWN box originally — same narrowness problem
     as the width fix above, just on the vertical axis instead: #menu-inner
     (the Nested Menu widget's own wrapper) is only 62px tall, but the real
     visual header row is taller (Logo is a sibling widget positioned
     independently, extending well past #menu-inner's own bottom edge).
     bottom:-1px drew the line at #menu-inner's own ~62px mark instead of the
     header's true bottom — confirmed live 2026-09-25: the border rendered
     partway down the header, cutting across the logo, not underneath it.
     Moved to data-id 4da22932 (the actual Header container — the shared
     ancestor of Logo and Main Nav) via Elementor's own always-present
     .elementor-element-{id} class, so the line anchors to that container's
     real bottom edge regardless of what #menu-inner's own box measures. */
  :is(.elementor-element-4da22932, .elementor-element-202e472a)::after {
    /* !important confirmed necessary by direct test (2026-09-28): without
       it, computed `content` resolved to "none" (the pseudo-element wasn't
       generating a box at all, hence "border not displaying" — not a wrong
       position, no border whatsoever) despite this exact rule being present
       in the live stylesheet at what should be more than enough specificity.
       This container has since picked up Elementor's own sticky-header
       classes (elementor-sticky/elementor-sticky--effects) — not present
       when this rule was first written — and something tied to that is
       winning the tie. Injecting the same declarations with !important via
       a throwaway <style> tag fixed it (content "none" -> "\"\""), isolating
       !important as the actual fix, same diagnostic pattern as the
       .rsp-nav__cat width fix above. !important #8. */
    content: "" !important; position: absolute !important; left: 50% !important;
    transform: translateX(-50%) !important;
    /* bottom:0 + z-index above the open sheet (9990), which covered the line at -1px (2026-10-10) */
    width: 100vw !important; bottom: 0 !important; z-index: 9991 !important;
    /* border-bottom, then box-shadow, both silently failed even with
       !important — turned out to have nothing to do with !important or
       specificity at all. --rsp-line is defined on .rsp-nav (see top of
       file) and only cascades to ITS descendants; 4da22932 is the Header
       container, an ANCESTOR of .rsp-nav/#menu-inner, not a descendant —
       confirmed live 2026-09-28, getComputedStyle(...).getPropertyValue(
       '--rsp-line') on this element returned "" (unset). Every property
       that referenced var(--rsp-line) here was an invalid value, and an
       invalid value drops the WHOLE declaration regardless of !important —
       that's why content/position/width (no var() involved) worked
       immediately while every border/shadow/background attempt using the
       variable silently did nothing. Literal hex, confirmed by direct test
       to actually apply, is the fix — not a workaround, this is simply the
       one rule in the file that targets an element outside .rsp-nav's own
       subtree, so it's the one place a variable defined there can't reach. */
    height: 1px !important; background-color: #E3E8EF !important;
  }
  :is(.elementor-element-4da22932, .elementor-element-202e472a) { position: relative; }
  #menu-inner .e-n-menu-toggle {
    width: 40px; height: 40px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    margin: 11px 10px; transition: background .18s var(--rsp-ease);
  }
  #menu-inner .e-n-menu-toggle .e-font-icon-svg { width: 18px; height: 18px; }
  #menu-inner[data-open="true"] .e-n-menu-toggle { background: var(--rsp-hair); }
  /* .e-n-menu-title-container/.e-n-menu-title font-size/flex/padding are
     already set once, above, on #menu-inner .e-n-menu-title-container and
     #menu-inner .e-n-menu-title — this used to be a second, duplicate
     .rsp-nav-scoped declaration of the same properties; removed rather than
     kept as a redundant re-statement. */
  /* Removed (was background: var(--rsp-hair)) — Joi kept reporting an
     unwanted "gray background on tap" on L1 rows after two rounds of
     tap-highlight-suppression fixes that were each confirmed working; this
     full-width --rsp-hair fill was the only remaining candidate once
     native tap-highlight was ruled out on a real mobile viewport (390px,
     not the editor's device-mode emulation, which doesn't reflect actual
     browser width). Desktop's own L1 items never get a background on
     hover/active at all — just a text color shift (.e-n-menu-title-
     container:hover/:active, top of file) — dropping this brings mobile
     L1 in line with that same, simpler pattern instead of inventing a
     rounded-pill variant that would fight this row's own border-top
     separator. Confirmed live 2026-09-28. */
  #menu-inner .e-n-menu-item:active { background: none; }
  /* row caret points right — this is a drill, not an expand */
  #menu-inner .e-n-menu-dropdown-icon::after { transform: rotate(-45deg); border-color: var(--rsp-soft); }
  #menu-inner .e-n-menu-dropdown-icon[aria-expanded="true"]::after { transform: rotate(-45deg); }
  /* circle around each L1 row's caret, matching the toggle/close icon's
     own 40px circle treatment (Joi's call 2026-09-21). */
  #menu-inner .e-n-menu-dropdown-icon {
    width: 40px; height: 40px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: var(--rsp-hair);
  }

  #menu-inner .rsp-nav__back {
    position: sticky; top: 0; z-index: 2;
    display: flex; align-items: center; gap: 6px;
    height: 62px; padding: 0 8px; background: #fff;
    border-bottom: 1px solid var(--rsp-line); width: 100%;
    border-width: 0 0 1px; cursor: pointer;
    font: 700 18px/1.2 "DM Sans", sans-serif; letter-spacing: -.015em;
    color: var(--rsp-navy); text-align: left;
  }
  #menu-inner .rsp-nav__back::before {
    content: ""; width: 9px; height: 9px; margin: 0 12px 0 18px; flex: none;
    border-left: 1.6px solid currentColor; border-bottom: 1.6px solid currentColor;
    transform: rotate(45deg);
  }
  #menu-inner .rsp-nav__back:active { color: var(--rsp-teal-d); }

  /* --- column labels + leaves -------------------------------
     .rsp-nav__collabel / .rsp-nav__group / .rsp-nav__leaf-t / .rsp-nav__leaf-d
     are Heading WIDGETS, not Containers — Elementor puts the custom class
     on the outer .elementor-element wrapper, not the real <h4>/<h5>/<div>
     inside .elementor-widget-container. Confirmed live 2026-08-17. Reach
     through via .elementor-heading-title. .rsp-nav__leaf stays a plain
     .elementor-2351 — it's the per-leaf Container itself (see B3), no such split.
     KNOWN BUG, not yet fixed: some leaf-wrapping containers still carry a
     leftover .rsp-nav__group from before this project (should be
     .rsp-nav__leaf) — since this is a descendant .elementor-2351, that mislabel
     cascades this uppercase micro-label styling onto every heading nested
     inside them, including leaf titles/descriptions. Confirmed live
     2026-09-14. Needs fixing in Elementor, not fixable from CSS alone. -- */
  #menu-inner .rsp-nav__collabel .elementor-heading-title,
  #menu-inner .rsp-nav__group .elementor-heading-title {
    font: 800 11px/1.2 Manrope, sans-serif;
    letter-spacing: .12em; text-transform: uppercase;
    color: var(--rsp-soft); margin: 0 0 8px;
  }
  #menu-inner .rsp-nav__group .elementor-heading-title { margin-top: 16px; }
  /* padding/margin/border-radius for rest state are set once, below, next
     to the :hover/:active/[aria-current] treatment they need to coordinate
     with — this used to ALSO set padding:9px 10px / margin-left:-10px /
     border-radius:10px here, a second, conflicting declaration of the same
     three properties that the later one (later in source, same 0,1,0
     specificity) silently overrode every time. Kept here only what doesn't
     conflict. Confirmed live 2026-09-18. */
  #menu-inner .rsp-nav__leaf {
    display: grid; gap: 2px; color: var(--rsp-ink); text-decoration: none;
    transition: color .18s var(--rsp-ease), transform .18s var(--rsp-ease);
  }
  /* descriptions get built as either a Heading widget (.elementor-heading-title)
     or a Text Editor widget (.elementor-text-editor) depending on who built the
     leaf — cover both, or whichever one isn't in use just never matches.
     Confirmed live 2026-09-14: "Target farming reports..." is Text Editor. */
  /* color explicit, not inherited from .rsp-nav__leaf's own color:var(--rsp-ink)
     — confirmed live 2026-09-18: the leaf's Heading WIDGET carries its own
     Elementor-generated default text color (rgb(109,110,113), #6D6E71) that
     wins over plain CSS inheritance, the same mechanism as the padding/
     width resets fought elsewhere in this file, just manifesting as a wrong
     computed color instead of a wrong size. .rsp-nav__leaf-d already
     declares color explicitly (var(--rsp-muted)) and was correct; leaf-t
     never did, and was wrong. */
  /* Mobile L3 audit (2026-09-28) — Resources' "News"/"Analysis"/"Free
     Downloads" (leaf-t) and their descriptions (leaf-d) sit under the same
     mislabeled .rsp-nav__group ancestor documented in the desktop block
     above, and this mobile copy of the rule never got the matching
     !important treatment — only desktop did, since the original bold/caps/
     letter-spacing/color reports were all checked on desktop at the time.
     Same four properties, same fix, ported here — Joi: "Product font looks
     great at all 3 tiers, but resources is [rendering] in caps with
     incorrect spacing." */
  #menu-inner .rsp-nav__leaf-t .elementor-heading-title {
    font: 700 16px/1.35 Manrope, sans-serif !important; color: var(--rsp-ink) !important;
    text-transform: none !important; letter-spacing: normal !important;
  }
  /* .elementor-widget-container > p added alongside .elementor-text-editor
     for the same reason as the desktop block above: .elementor-text-editor
     is an editor-only inline-editing wrapper, absent from the real,
     published front-end markup (which is just a bare <p> in
     .elementor-widget-container) — confirmed live 2026-09-28. Every rule
     below that only ever named .elementor-text-editor was untested dead
     weight on mobile's actual front end too, same as its desktop
     counterpart. */
  #menu-inner .rsp-nav__leaf-d .elementor-heading-title,
  #menu-inner .rsp-nav__leaf-d .elementor-text-editor,
  #menu-inner .rsp-nav__leaf-d .elementor-widget-container > p {
    font: 400 14px/1.45 Manrope, sans-serif !important; color: var(--rsp-muted) !important;
    text-transform: none !important; letter-spacing: normal !important;
    transition: color .18s var(--rsp-ease);
  }
  #menu-inner .rsp-nav__leaf-d .elementor-heading-title a,
  #menu-inner .rsp-nav__leaf-d .elementor-text-editor a,
  #menu-inner .rsp-nav__leaf-d .elementor-widget-container > p a { color: inherit; text-decoration: none; }
  #menu-inner .rsp-nav__leaf:hover                                        { color: var(--rsp-teal); transform: translateX(2px); }
  #menu-inner .rsp-nav__leaf:hover .rsp-nav__leaf-d .elementor-heading-title,
  #menu-inner .rsp-nav__leaf:hover .rsp-nav__leaf-d .elementor-widget-container > p    { color: var(--rsp-body); }
  #menu-inner .rsp-nav__leaf:active                    { color: var(--rsp-teal-d); transform: none; }
  #menu-inner .rsp-nav__leaf[aria-current="page"]      { color: var(--rsp-teal); }

  /* --- promoted card, mobile only (desktop's promo styling, if any,
     stays entirely inline/untouched by us) ---------------------- */
  #menu-inner .rsp-nav__promo {
    background: var(--rsp-teal-t); border-radius: 16px; padding: 22px;
    display: grid; gap: 10px; align-content: start;
    color: var(--rsp-ink); text-decoration: none;
    transition: transform .18s var(--rsp-ease), box-shadow .18s var(--rsp-ease);
  }
  #menu-inner .rsp-nav__promo:hover { transform: translateY(-2px);
                          box-shadow: 0 12px 28px rgba(4, 33, 62, .14); }

  /* --- the one amber CTA, mobile only. Button widget, same wrapper
     split as collabel/group/leaf-t/-d above. --------------------- */
  #menu-inner .rsp-nav__cta .elementor-button {
    /* display:inline-block sizes to the label text ("Get Started" etc.),
       not the container — the button read as a narrow pill instead of the
       full-width bar the mock shows. Confirmed live 2026-09-14. */
    background: var(--rsp-amber); color: var(--rsp-navy);
    font: 700 14px/1 Manrope, sans-serif; padding: 13px 20px;
    border-radius: 999px; text-decoration: none; display: block; width: 100%;
    text-align: center;
    transition: background .18s var(--rsp-ease), transform .18s var(--rsp-ease);
  }
  #menu-inner .rsp-nav__cta .elementor-button:hover { background: var(--rsp-amber-d); transform: translateY(-1px); }
  #menu-inner .rsp-nav__panel .rsp-nav__cta { display: none; }

  #menu-inner .rsp-nav__collabel, #menu-inner .rsp-nav__group { padding: 0 20px; margin: 0 0 8px; }
  #menu-inner .rsp-nav__group  { margin-top: 18px; }
  /* Elementor auto-generates a per-element reset rule that references the
     element's OWN class list, e.g. ".elementor .rsp-nav__leaf { padding: 0
     }" — at the SAME (0,2,0) specificity as a plain .rsp-nav__leaf rule,
     winning on source order roughly half the time depending on where in the
     combined stylesheet it happens to land. Confirmed live 2026-09-18: two
     real leaves ("Target Farming Report", "Listing Launch") were rendering
     with 0 padding despite this rule, invisible until checked via
     getComputedStyle + a matched-rules scan — not visible as a "wrong
     value", just as no spacing at all. #menu-inner's ID specificity beats
     it outright, unconditionally, same fix pattern as the native .e-n-menu-*
     fights above. */
  #menu-inner .rsp-nav__leaf   { padding: 8px 20px; margin: 0; border-radius: 0; min-height: 52px;
                     align-content: center; }
  #menu-inner .rsp-nav__leaf-d { font-size: 13px; }
  #menu-inner .rsp-nav__leaf:hover  { transform: none; }
  /* Rest-state leaves are flush/flat (no visible box) — confirmed against
     reference/assets/mobile-l3-lead-gen-campaigns.png. But the highlighted
     row in mobile-l3-postcards.png ("Multi-Property") shows a rounded,
     inset pill, not a full-bleed flat bar — that needs its OWN margin/
     padding/border-radius, not just a background color, since the row's
     rest-state values (margin:0, border-radius:0, padding:8px 20px above)
     otherwise apply here unchanged. margin:0 8px + padding:8px 12px keeps
     the text at the same 20px total offset from the list edge as rest
     state (8+12=20, same as 0+20) — only the background/radius box shrinks
     inward by 8px per side, so highlighting a row doesn't shift its text.
     Extended to :hover and [aria-current="page"] too for visual
     consistency, not just :active. Confirmed live 2026-09-18. */
  #menu-inner .rsp-nav__leaf:is(:hover, :active, [aria-current="page"]) {
    background: var(--rsp-hair); border-radius: 12px;
    margin: 0 8px; padding: 8px 12px;
  }
  #menu-inner .rsp-nav__promo  { display: none; }          /* products beat adverts on a phone */

  #menu-inner .rsp-nav__cta    { display: block; text-align: center; padding: 15px;
                     font: 800 13px/1 Manrope, sans-serif;
                     letter-spacing: .08em; text-transform: uppercase; }
  #menu-inner .rsp-nav__panel .rsp-nav__cta { display: none; }
}

/* element-ID .elementor-2351s are :is(2184 id, 2351 id) — the v1.3 duplicate header got new Elementor IDs (2026-10-10) */
/* L2/L3 tightening to the Figma prototype (2026-10-10) — fits all 7 Postcards leaves under the back row */
.rsp-nav__all { display: none; }
@media (max-width: 1024px) and (orientation: portrait) {
  /* subs keep Elementor's desktop row layout otherwise, pushing the second group off-canvas */
  #menu-inner .rsp-nav__sub { flex-direction: column !important; flex-wrap: nowrap !important; }
  #menu-inner .rsp-nav__sub, #menu-inner .rsp-nav__sub > .e-con:not(.rsp-nav__leaf) { row-gap: 4px !important; }
  #menu-inner .rsp-nav__group { margin: 12px 0 2px !important; }
  #menu-inner .rsp-nav__group .elementor-heading-title { margin: 0 !important; }
  #menu-inner .rsp-nav__leaf { padding-top: 7px; padding-bottom: 7px; min-height: 0; row-gap: 2px; }
  #menu-inner .rsp-nav__leaf:is(:hover, :active, [aria-current="page"]) { padding-top: 7px; padding-bottom: 7px; }
  #menu-inner .rsp-nav__leaf-t .elementor-heading-title { line-height: 20px; }
  #menu-inner .rsp-nav__leaf-d, #menu-inner .rsp-nav__leaf-d :is(p, .elementor-heading-title) {
    font-size: 13px; line-height: 18px; margin: 0;
  }
  #menu-inner .rsp-nav__leaf:is(:hover, :active, [aria-current="page"]) { width: calc(100% - 16px) !important; }
  #menu-inner .e-con:has(> .rsp-nav__cat) { row-gap: 0 !important; }
  #menu-inner .rsp-nav__panel > .e-con-inner { height: auto !important; }
  #menu-inner .rsp-nav__cat { padding: 14px 18px; gap: 4px; }
  #menu-inner .rsp-nav__cat-desc { font-size: 13px; line-height: 1.45; }
  #menu-inner .rsp-nav__all {
    display: inline-flex; align-items: center; gap: 8px; margin: 0 20px; min-height: 48px;
    font: 700 15px/1 Manrope, sans-serif; color: var(--rsp-teal); text-decoration: none;
  }
  #menu-inner .rsp-nav__all-chev {
    width: 40px; height: 40px; border-radius: 50%; background: var(--rsp-hair); position: relative;
  }
  #menu-inner .rsp-nav__all-chev::after {
    content: ""; position: absolute; top: 50%; left: 50%; width: 8px; height: 8px;
    border-right: 1.6px solid var(--rsp-ink); border-bottom: 1.6px solid var(--rsp-ink);
    transform: translate(-65%, -50%) rotate(-45deg);
  }
}

@keyframes rsp-sheet-in  { from { opacity: 0; transform: translateY(8px); }
                           to   { opacity: 1; transform: none; } }
@keyframes rsp-level-in  { from { opacity: 0; } to { opacity: 1; } }

@media (prefers-reduced-motion: reduce) {
  .rsp-nav *, .rsp-nav *::before, .rsp-nav *::after {
    transition-duration: .01ms !important; animation-duration: .01ms !important;
  }
}/* End custom CSS */