.elementor-17401 .elementor-element.elementor-element-2d6d93f:not(.elementor-motion-effects-element-type-background), .elementor-17401 .elementor-element.elementor-element-2d6d93f > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#131313;}.elementor-17401 .elementor-element.elementor-element-2d6d93f{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;padding:60px 0px 130px 0px;}.elementor-17401 .elementor-element.elementor-element-2d6d93f > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-17401 .elementor-element.elementor-element-a893162 > .elementor-element-populated{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;margin:0% 33% 0% 0%;--e-column-margin-right:33%;--e-column-margin-left:0%;}.elementor-17401 .elementor-element.elementor-element-a893162 > .elementor-element-populated > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-widget-post-info .elementor-icon-list-item:not(:last-child):after{border-color:var( --e-global-color-text );}.elementor-widget-post-info .elementor-icon-list-icon i{color:var( --e-global-color-primary );}.elementor-widget-post-info .elementor-icon-list-icon svg{fill:var( --e-global-color-primary );}.elementor-widget-post-info .elementor-icon-list-text, .elementor-widget-post-info .elementor-icon-list-text a{color:var( --e-global-color-secondary );}.elementor-widget-post-info .elementor-icon-list-item{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-17401 .elementor-element.elementor-element-f9b63af .elementor-icon-list-icon{width:14px;}.elementor-17401 .elementor-element.elementor-element-f9b63af .elementor-icon-list-icon i{font-size:14px;}.elementor-17401 .elementor-element.elementor-element-f9b63af .elementor-icon-list-icon svg{--e-icon-list-icon-size:14px;}.elementor-17401 .elementor-element.elementor-element-f9b63af .elementor-icon-list-text, .elementor-17401 .elementor-element.elementor-element-f9b63af .elementor-icon-list-text a{color:#ffffff;}.elementor-17401 .elementor-element.elementor-element-f9b63af .elementor-icon-list-item{font-family:"Inter", Sans-serif;font-size:15px;}.elementor-widget-theme-post-title .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-17401 .elementor-element.elementor-element-41b74e2 > .elementor-widget-container{margin:-0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-41b74e2 .elementor-heading-title{font-family:"Inter", Sans-serif;line-height:1.1em;letter-spacing:0px;word-spacing:0px;color:#ffffff;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-17401 .elementor-element.elementor-element-c7f104f > .elementor-widget-container{--e-transform-translateY:-14px;margin:-0px 0px -0px 0px;}.elementor-17401 .elementor-element.elementor-element-c7f104f{text-align:start;}.elementor-17401 .elementor-element.elementor-element-c7f104f .elementor-heading-title{font-family:"Inter", Sans-serif;font-size:14px;font-weight:400;text-transform:none;font-style:normal;text-decoration:none;line-height:1.127em;letter-spacing:-1.1px;color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-2d4190b8:not(.elementor-motion-effects-element-type-background), .elementor-17401 .elementor-element.elementor-element-2d4190b8 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#131313;}.elementor-17401 .elementor-element.elementor-element-2d4190b8 > .elementor-container{max-width:1470px;}.elementor-17401 .elementor-element.elementor-element-2d4190b8{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;margin-top:154px;margin-bottom:154px;z-index:1;}.elementor-17401 .elementor-element.elementor-element-2d4190b8 > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-17401 .elementor-element.elementor-element-245777e0:not(.elementor-motion-effects-element-type-background) > .elementor-widget-wrap, .elementor-17401 .elementor-element.elementor-element-245777e0 > .elementor-widget-wrap > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#ffffff;}.elementor-17401 .elementor-element.elementor-element-245777e0 > .elementor-element-populated{box-shadow:0px 0px 20px 0px rgba(0,0,0,0.09);transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;margin:-120px 0px 0px 0px;--e-column-margin-right:0px;--e-column-margin-left:0px;padding:40px 40px 40px 40px;}.elementor-17401 .elementor-element.elementor-element-245777e0 > .elementor-element-populated > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-17401 .elementor-element.elementor-element-41712067:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-41712067 > .elementor-widget-container{margin:-60px 0px -60px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-41712067 .elementor-wrapper{--video-aspect-ratio:1.77777;}.elementor-17401 .elementor-element.elementor-element-2b8e26:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-2b8e26 > .elementor-widget-container{margin:-60px 0px -60px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-2b8e26 .elementor-wrapper{--video-aspect-ratio:1.77777;}.elementor-17401 .elementor-element.elementor-element-d3446f5:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-d3446f5 > .elementor-widget-container{margin:-60px 0px -60px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-d3446f5 .elementor-wrapper{--video-aspect-ratio:1.77777;}.elementor-17401 .elementor-element.elementor-element-68ac971:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-68ac971 > .elementor-widget-container{margin:-60px 0px -60px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-68ac971 .elementor-wrapper{--video-aspect-ratio:1.77777;}.elementor-17401 .elementor-element.elementor-element-37e98576:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-37e98576 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-37e98576 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-54de635b:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-54de635b > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-54de635b .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-5b1e06b7:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-5b1e06b7 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-5b1e06b7 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-32559526:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-32559526 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-32559526 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-1ca2c9a0:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-1ca2c9a0 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-1ca2c9a0 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-72906240:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-72906240 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-72906240 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-242abd4:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-242abd4 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-242abd4 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-b3eebea:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-b3eebea > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-b3eebea .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-a49c2eb:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-a49c2eb > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-a49c2eb .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-323f9f18:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-323f9f18 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-323f9f18 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-25b8d2dd:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-25b8d2dd > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-25b8d2dd .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-c12ccde:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-c12ccde > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-c12ccde .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-e9738a1:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-e9738a1 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-e9738a1 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-2ccb656:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-2ccb656 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-2ccb656 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-db0759d:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-db0759d > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-db0759d .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-0cc5876:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-0cc5876 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-0cc5876 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-78c78b8:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-78c78b8 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-78c78b8 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-f5fb117:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-f5fb117 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-f5fb117 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-f55dd8c:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-f55dd8c > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-f55dd8c .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-587a7bd:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-587a7bd > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-587a7bd .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-6dfacfa:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-6dfacfa > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-6dfacfa .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-14a76e2:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-14a76e2 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-14a76e2 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-864ef7c:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-864ef7c > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-864ef7c .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-827fc26:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-827fc26 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-827fc26 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-8d802b3:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-8d802b3 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-8d802b3 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-ce946bd:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-ce946bd > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-ce946bd .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-3f3d08a:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-3f3d08a > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-3f3d08a .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-155b3ac:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-155b3ac > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-155b3ac .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-b4437e5:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-b4437e5 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-b4437e5 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-e1a263a:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-e1a263a > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-e1a263a .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-853d851:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-853d851 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-853d851 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-285ab21:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-285ab21 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-285ab21 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-bf816d4:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-bf816d4 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-bf816d4 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-e3531a6:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-e3531a6 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-e3531a6 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-94b5015:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-94b5015 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-94b5015 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-efbc9a4:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-efbc9a4 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-efbc9a4 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-b57099f:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-b57099f > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-b57099f .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-abc3511:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-abc3511 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-abc3511 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-989d43e:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-989d43e > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-989d43e .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-b4f0965:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-b4f0965 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-b4f0965 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-acd991d:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-acd991d > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-acd991d .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-44b10cf:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-44b10cf > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-44b10cf .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-31584ce:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-31584ce > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-31584ce .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-092ec94:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-092ec94 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-092ec94 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-d63d65c:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-d63d65c > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-d63d65c .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-a7bac60:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-a7bac60 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-a7bac60 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-5af635b:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-5af635b > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-5af635b .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-6a5b179:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-6a5b179 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-6a5b179 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-722e174:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-722e174 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-722e174 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-e38e79a:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-e38e79a > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-e38e79a .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-784961d:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-784961d > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-784961d .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-216dbeb:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-216dbeb > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-216dbeb .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-1beedd2:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-1beedd2 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-1beedd2 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-17401 .elementor-element.elementor-element-068df86:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-068df86 > .elementor-widget-container{margin:-72px 0px -36px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-068df86 .elementor-wrapper{--video-aspect-ratio:0.5625;}.elementor-widget-gallery .elementor-gallery-item__title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );}.elementor-widget-gallery .elementor-gallery-item__description{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-widget-gallery{--galleries-title-color-normal:var( --e-global-color-primary );--galleries-title-color-hover:var( --e-global-color-secondary );--galleries-pointer-bg-color-hover:var( --e-global-color-accent );--gallery-title-color-active:var( --e-global-color-secondary );--galleries-pointer-bg-color-active:var( --e-global-color-accent );}.elementor-widget-gallery .elementor-gallery-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );}.elementor-17401 .elementor-element.elementor-element-72421ab6{--image-transition-duration:800ms;--content-text-align:center;--content-padding:20px;--content-transition-duration:800ms;--content-transition-delay:800ms;}.elementor-17401 .elementor-element.elementor-element-27b0b8bc:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-27b0b8bc > .elementor-widget-container{margin:-60px 0px -60px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-27b0b8bc .elementor-wrapper{--video-aspect-ratio:1.77777;}.elementor-17401 .elementor-element.elementor-element-73290ff:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-73290ff > .elementor-widget-container{margin:-60px 0px -60px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-73290ff .elementor-wrapper{--video-aspect-ratio:1.77777;}.elementor-17401 .elementor-element.elementor-element-a4970aa:hover .elementor-widget-container{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-a4970aa > .elementor-widget-container{margin:-60px 0px -60px 0px;padding:0px 0px 0px 0px;transition:background 0.9s;}.elementor-17401 .elementor-element.elementor-element-a4970aa .elementor-wrapper{--video-aspect-ratio:1.77777;}.elementor-17401 .elementor-element.elementor-element-4e3448a9:not(.elementor-motion-effects-element-type-background) > .elementor-widget-wrap, .elementor-17401 .elementor-element.elementor-element-4e3448a9 > .elementor-widget-wrap > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-4e3448a9 > .elementor-element-populated{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;padding:0px 45px 40px 45px;}.elementor-17401 .elementor-element.elementor-element-4e3448a9 > .elementor-element-populated > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-17401 .elementor-element.elementor-element-7a0dd52a > .elementor-widget-container{margin:40px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-7a0dd52a .elementor-heading-title{font-family:"Inter", Sans-serif;color:#000000;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-17401 .elementor-element.elementor-element-8de9673{font-family:"Inter", Sans-serif;font-size:15px;}.elementor-widget-button .elementor-button{background-color:var( --e-global-color-accent );font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-17401 .elementor-element.elementor-element-4adbe0e3 .elementor-button{background-color:#232323;font-family:"Inter", Sans-serif;font-size:14px;text-shadow:0px 0px 10px rgba(0,0,0,0.3);fill:#FFFFFF;color:#FFFFFF;border-style:solid;border-width:2px 2px 2px 2px;border-color:#FFFFFF;border-radius:0px 0px 0px 0px;padding:15px 45px 15px 45px;}.elementor-17401 .elementor-element.elementor-element-4adbe0e3 .elementor-button:hover, .elementor-17401 .elementor-element.elementor-element-4adbe0e3 .elementor-button:focus{background-color:rgba(255,255,255,0);border-color:#ffffff;}.elementor-17401 .elementor-element.elementor-element-4adbe0e3 .elementor-button-content-wrapper{flex-direction:row-reverse;}.elementor-17401 .elementor-element.elementor-element-4adbe0e3 .elementor-button .elementor-button-content-wrapper{gap:10px;}.elementor-17401 .elementor-element.elementor-element-7c37ed0e .elementor-repeater-item-18e1ef9.elementor-social-icon{background-color:#000000;}.elementor-17401 .elementor-element.elementor-element-7c37ed0e .elementor-repeater-item-18e1ef9.elementor-social-icon i{color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-7c37ed0e .elementor-repeater-item-18e1ef9.elementor-social-icon svg{fill:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-7c37ed0e .elementor-repeater-item-abcd1bd.elementor-social-icon{background-color:#000000;}.elementor-17401 .elementor-element.elementor-element-7c37ed0e .elementor-repeater-item-abcd1bd.elementor-social-icon i{color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-7c37ed0e .elementor-repeater-item-abcd1bd.elementor-social-icon svg{fill:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-7c37ed0e .elementor-repeater-item-7366477.elementor-social-icon{background-color:#000000;}.elementor-17401 .elementor-element.elementor-element-7c37ed0e{--grid-template-columns:repeat(0, auto);width:var( --container-widget-width, 100.868% );max-width:100.868%;--container-widget-width:100.868%;--container-widget-flex-grow:0;--icon-size:20px;--grid-column-gap:5px;--grid-row-gap:0px;}.elementor-17401 .elementor-element.elementor-element-7c37ed0e .elementor-widget-container{text-align:left;}.elementor-17401 .elementor-element.elementor-element-7c37ed0e .elementor-social-icon{background-color:#000000;--icon-padding:0.2em;}.elementor-17401 .elementor-element.elementor-element-7c37ed0e .elementor-social-icon i{color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-7c37ed0e .elementor-social-icon svg{fill:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-17a58431 > .elementor-widget-container{margin:40px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-17a58431 .elementor-heading-title{font-family:"Poppins", Sans-serif;color:#000000;}.elementor-widget-posts .elementor-button{background-color:var( --e-global-color-accent );font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-widget-posts .elementor-post__title, .elementor-widget-posts .elementor-post__title a{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );}.elementor-widget-posts .elementor-post__meta-data{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-posts .elementor-post__excerpt p{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-widget-posts .elementor-post__read-more{color:var( --e-global-color-accent );}.elementor-widget-posts a.elementor-post__read-more{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-widget-posts .elementor-post__card .elementor-post__badge{background-color:var( --e-global-color-accent );font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-widget-posts .elementor-pagination{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-posts .e-load-more-message{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-17401 .elementor-element.elementor-element-5031b52{--grid-row-gap:20px;--grid-column-gap:30px;}.elementor-17401 .elementor-element.elementor-element-5031b52 .elementor-posts-container .elementor-post__thumbnail{padding-bottom:calc( 1 * 100% );}.elementor-17401 .elementor-element.elementor-element-5031b52:after{content:"1";}.elementor-17401 .elementor-element.elementor-element-5031b52 .elementor-post__thumbnail__link{width:20%;}.elementor-17401 .elementor-element.elementor-element-5031b52.elementor-posts--thumbnail-left .elementor-post__thumbnail__link{margin-right:20px;}.elementor-17401 .elementor-element.elementor-element-5031b52.elementor-posts--thumbnail-right .elementor-post__thumbnail__link{margin-left:20px;}.elementor-17401 .elementor-element.elementor-element-5031b52.elementor-posts--thumbnail-top .elementor-post__thumbnail__link{margin-bottom:20px;}.elementor-17401 .elementor-element.elementor-element-5031b52 .elementor-post__title, .elementor-17401 .elementor-element.elementor-element-5031b52 .elementor-post__title a{font-family:"Inter", Sans-serif;font-size:15px;}.elementor-17401 .elementor-element.elementor-element-5031b52 .elementor-post__read-more{color:#a0a0a0;}.elementor-17401 .elementor-element.elementor-element-5031b52 a.elementor-post__read-more{font-family:"Inter", Sans-serif;font-size:10px;}.elementor-17401 .elementor-element.elementor-element-f176552:not(.elementor-motion-effects-element-type-background), .elementor-17401 .elementor-element.elementor-element-f176552 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#131313;background-position:center center;background-repeat:no-repeat;background-size:cover;}.elementor-17401 .elementor-element.elementor-element-f176552{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;padding:100px 0px 100px 0px;}.elementor-17401 .elementor-element.elementor-element-f176552 > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-17401 .elementor-element.elementor-element-2b78fe1 > .elementor-element-populated{padding:10px 30px 10px 10px;}.elementor-17401 .elementor-element.elementor-element-19b1018 > .elementor-widget-container{margin:10px 0px 0px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-19b1018 .elementor-heading-title{font-family:"Karla", Sans-serif;font-size:16px;font-weight:700;text-transform:uppercase;line-height:26px;letter-spacing:1.6px;color:#F5F5F5F5;}.elementor-17401 .elementor-element.elementor-element-0a46227 > .elementor-widget-container{margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-0a46227 .elementor-heading-title{font-family:"Inter", Sans-serif;font-weight:600;color:#FFFFFF;}.elementor-widget-divider{--divider-color:var( --e-global-color-secondary );}.elementor-widget-divider .elementor-divider__text{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-divider.elementor-view-stacked .elementor-icon{background-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon{color:var( --e-global-color-secondary );border-color:var( --e-global-color-secondary );}.elementor-widget-divider.elementor-view-framed .elementor-icon, .elementor-widget-divider.elementor-view-default .elementor-icon svg{fill:var( --e-global-color-secondary );}.elementor-17401 .elementor-element.elementor-element-47356ea{--divider-border-style:solid;--divider-color:rgba(99,115,129,0.34);--divider-border-width:1.8px;}.elementor-17401 .elementor-element.elementor-element-47356ea > .elementor-widget-container{margin:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-47356ea .elementor-divider-separator{width:70px;}.elementor-17401 .elementor-element.elementor-element-47356ea .elementor-divider{padding-block-start:7px;padding-block-end:7px;}.elementor-17401 .elementor-element.elementor-element-93665bb{font-family:"Inter", Sans-serif;font-size:15px;font-weight:400;line-height:26px;letter-spacing:0px;color:#F8F8F8D1;}.elementor-17401 .elementor-element.elementor-element-4df7273 > .elementor-element-populated{padding:10px 0px 10px 30px;}.elementor-widget-toggle .elementor-toggle-title, .elementor-widget-toggle .elementor-toggle-icon{color:var( --e-global-color-primary );}.elementor-widget-toggle .elementor-toggle-icon svg{fill:var( --e-global-color-primary );}.elementor-widget-toggle .elementor-tab-title.elementor-active a, .elementor-widget-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon{color:var( --e-global-color-accent );}.elementor-widget-toggle .elementor-toggle-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );}.elementor-widget-toggle .elementor-tab-content{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-17401 .elementor-element.elementor-element-26944bf > .elementor-widget-container{margin:05px 0px 0px 0px;border-style:solid;border-width:1px 1px 0px 1px;border-color:rgba(99,115,129,0.27);border-radius:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-26944bf .elementor-tab-content{border-block-end-color:#D9EDFF26;background-color:rgba(255,255,255,0);color:#D8DCE0;font-family:"Inter", Sans-serif;font-size:12px;font-weight:300;padding:0px 30px 30px 30px;}.elementor-17401 .elementor-element.elementor-element-26944bf .elementor-tab-title{border-color:#D9EDFF26;background-color:rgba(255,255,255,0);padding:37px 37px 37px 37px;}.elementor-17401 .elementor-element.elementor-element-26944bf .elementor-toggle-title, .elementor-17401 .elementor-element.elementor-element-26944bf .elementor-toggle-icon{color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-26944bf .elementor-toggle-icon svg{fill:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-26944bf .elementor-tab-title.elementor-active a, .elementor-17401 .elementor-element.elementor-element-26944bf .elementor-tab-title.elementor-active .elementor-toggle-icon{color:#FFFFFF;}.elementor-17401 .elementor-element.elementor-element-26944bf .elementor-toggle-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );}.elementor-17401 .elementor-element.elementor-element-26944bf .elementor-tab-title .elementor-toggle-icon i:before{color:#FFFFFFF7;}.elementor-17401 .elementor-element.elementor-element-26944bf .elementor-tab-title .elementor-toggle-icon svg{fill:#FFFFFFF7;}.elementor-17401 .elementor-element.elementor-element-26944bf .elementor-tab-title.elementor-active .elementor-toggle-icon i:before{color:#CBCBCC;}.elementor-17401 .elementor-element.elementor-element-26944bf .elementor-tab-title.elementor-active .elementor-toggle-icon svg{fill:#CBCBCC;}.elementor-17401 .elementor-element.elementor-element-26944bf .elementor-toggle-icon{margin-inline-end:12px;}.elementor-17401 .elementor-element.elementor-element-c49343d:not(.elementor-motion-effects-element-type-background), .elementor-17401 .elementor-element.elementor-element-c49343d > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#131313;}.elementor-17401 .elementor-element.elementor-element-c49343d{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;margin-top:-120px;margin-bottom:0px;padding:140px 0px 60px 0px;}.elementor-17401 .elementor-element.elementor-element-c49343d > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-17401 .elementor-element.elementor-element-04f4bff > .elementor-element-populated{margin:0% 33% 0% 0%;--e-column-margin-right:33%;--e-column-margin-left:0%;}.elementor-17401 .elementor-element.elementor-element-c014f80 .elementor-heading-title{font-family:"Inter", Sans-serif;text-transform:capitalize;line-height:1.3em;color:#ffffff;}.elementor-widget-form .elementor-field-group > label, .elementor-widget-form .elementor-field-subgroup label{color:var( --e-global-color-text );}.elementor-widget-form .elementor-field-group > label{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-widget-form .elementor-field-type-html{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-widget-form .elementor-field-group .elementor-field{color:var( --e-global-color-text );}.elementor-widget-form .elementor-field-group .elementor-field, .elementor-widget-form .elementor-field-subgroup label{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-widget-form .elementor-button{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-widget-form .e-form__buttons__wrapper__button-next{background-color:var( --e-global-color-accent );}.elementor-widget-form .elementor-button[type="submit"]{background-color:var( --e-global-color-accent );}.elementor-widget-form .e-form__buttons__wrapper__button-previous{background-color:var( --e-global-color-accent );}.elementor-widget-form .elementor-message{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-widget-form .e-form__indicators__indicator, .elementor-widget-form .e-form__indicators__indicator__label{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-widget-form{--e-form-steps-indicator-inactive-primary-color:var( --e-global-color-text );--e-form-steps-indicator-active-primary-color:var( --e-global-color-accent );--e-form-steps-indicator-completed-primary-color:var( --e-global-color-accent );--e-form-steps-indicator-progress-color:var( --e-global-color-accent );--e-form-steps-indicator-progress-background-color:var( --e-global-color-text );--e-form-steps-indicator-progress-meter-color:var( --e-global-color-text );}.elementor-widget-form .e-form__indicators__indicator__progress__meter{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-field-group{padding-right:calc( 0px/2 );padding-left:calc( 0px/2 );margin-bottom:0px;}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-form-fields-wrapper{margin-left:calc( -0px/2 );margin-right:calc( -0px/2 );margin-bottom:-0px;}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-field-group.recaptcha_v3-bottomleft, .elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-field-group.recaptcha_v3-bottomright{margin-bottom:0;}body.rtl .elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-labels-inline .elementor-field-group > label{padding-left:0px;}body:not(.rtl) .elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-labels-inline .elementor-field-group > label{padding-right:0px;}body .elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-labels-above .elementor-field-group > label{padding-bottom:0px;}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-field-type-html{padding-bottom:0px;}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-field-group .elementor-field, .elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-field-subgroup label{font-family:"Inter", Sans-serif;font-weight:400;}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-field-group .elementor-field:not(.elementor-select-wrapper){background-color:#ffffff;border-width:0px 0px 0px 0px;border-radius:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-field-group .elementor-select-wrapper select{background-color:#ffffff;border-width:0px 0px 0px 0px;border-radius:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-button{font-family:"Inter", Sans-serif;border-radius:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .e-form__buttons__wrapper__button-next{background-color:#161616C9;color:#ffffff;}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-button[type="submit"]{background-color:#161616C9;color:#ffffff;}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-button[type="submit"] svg *{fill:#ffffff;}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .e-form__buttons__wrapper__button-previous{color:#ffffff;}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .e-form__buttons__wrapper__button-next:hover{color:#ffffff;}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-button[type="submit"]:hover{color:#ffffff;}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .elementor-button[type="submit"]:hover svg *{fill:#ffffff;}.elementor-17401 .elementor-element.elementor-element-d5b7f42 .e-form__buttons__wrapper__button-previous:hover{color:#ffffff;}.elementor-17401 .elementor-element.elementor-element-d5b7f42{--e-form-steps-indicators-spacing:20px;--e-form-steps-indicator-padding:30px;--e-form-steps-indicator-inactive-secondary-color:#ffffff;--e-form-steps-indicator-active-secondary-color:#ffffff;--e-form-steps-indicator-completed-secondary-color:#ffffff;--e-form-steps-divider-width:1px;--e-form-steps-divider-gap:10px;}.elementor-17401 .elementor-element.elementor-element-476f64e:not(.elementor-motion-effects-element-type-background), .elementor-17401 .elementor-element.elementor-element-476f64e > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#333333;}.elementor-17401 .elementor-element.elementor-element-476f64e > .elementor-background-overlay{background-color:transparent;background-image:linear-gradient(185deg, rgba(34,34,34,0.6) 46%, #222222 71%);opacity:0.9;transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-17401 .elementor-element.elementor-element-476f64e, .elementor-17401 .elementor-element.elementor-element-476f64e > .elementor-background-overlay{border-radius:0px 0px 2px 0px;}.elementor-17401 .elementor-element.elementor-element-476f64e{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;margin-top:0px;margin-bottom:0px;padding:180px 0px 180px 0px;}.elementor-17401 .elementor-element.elementor-element-7e926730 > .elementor-widget-container{margin:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-7e926730{text-align:center;}.elementor-17401 .elementor-element.elementor-element-7e926730 .elementor-heading-title{font-family:"Inter", Sans-serif;font-size:36px;font-weight:700;color:#E7E7E7;}.elementor-17401 .elementor-element.elementor-element-bf5877 .elementor-button{background-color:#222222;font-family:"Poppins", Sans-serif;fill:#FFFFFF;color:#FFFFFF;border-style:solid;border-width:0px 0px 0px 0px;border-color:#DADADA;border-radius:0px 0px 0px 0px;padding:15px 45px 15px 45px;}.elementor-17401 .elementor-element.elementor-element-bf5877 .elementor-button:hover, .elementor-17401 .elementor-element.elementor-element-bf5877 .elementor-button:focus{background-color:rgba(255,255,255,0);color:#ffffff;border-color:#ffffff;}.elementor-17401 .elementor-element.elementor-element-bf5877 .elementor-button:hover svg, .elementor-17401 .elementor-element.elementor-element-bf5877 .elementor-button:focus svg{fill:#ffffff;}@media(max-width:1024px){.elementor-17401 .elementor-element.elementor-element-2d6d93f{padding:60px 0px 60px 0px;}.elementor-17401 .elementor-element.elementor-element-a893162 > .elementor-element-populated{margin:0px 0px 0px 0px;--e-column-margin-right:0px;--e-column-margin-left:0px;padding:0px 80px 0px 80px;}.elementor-17401 .elementor-element.elementor-element-41b74e2{text-align:center;}.elementor-17401 .elementor-element.elementor-element-c7f104f > .elementor-widget-container{margin:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-c7f104f{text-align:center;}.elementor-17401 .elementor-element.elementor-element-c7f104f .elementor-heading-title{font-size:12px;line-height:1.1em;}.elementor-17401 .elementor-element.elementor-element-2d4190b8{margin-top:0px;margin-bottom:0px;}.elementor-17401 .elementor-element.elementor-element-245777e0 > .elementor-element-populated{margin:0px 0px 0px 0px;--e-column-margin-right:0px;--e-column-margin-left:0px;}.elementor-17401 .elementor-element.elementor-element-41712067 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-2b8e26 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-d3446f5 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-68ac971 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-37e98576 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-54de635b > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-5b1e06b7 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-32559526 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-1ca2c9a0 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-72906240 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-242abd4 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-b3eebea > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-a49c2eb > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-323f9f18 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-25b8d2dd > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-c12ccde > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-e9738a1 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-2ccb656 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-db0759d > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-0cc5876 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-78c78b8 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-f5fb117 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-f55dd8c > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-587a7bd > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-6dfacfa > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-14a76e2 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-864ef7c > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-827fc26 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-8d802b3 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-ce946bd > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-3f3d08a > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-155b3ac > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-b4437e5 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-e1a263a > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-853d851 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-285ab21 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-bf816d4 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-e3531a6 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-94b5015 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-efbc9a4 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-b57099f > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-abc3511 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-989d43e > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-b4f0965 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-acd991d > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-44b10cf > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-31584ce > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-092ec94 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-d63d65c > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-a7bac60 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-5af635b > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-6a5b179 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-722e174 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-e38e79a > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-784961d > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-216dbeb > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-1beedd2 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-068df86 > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-27b0b8bc > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-73290ff > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-a4970aa > .elementor-widget-container{margin:-58px 0px -58px 0px;}.elementor-17401 .elementor-element.elementor-element-4e3448a9 > .elementor-element-populated{padding:40px 40px 40px 40px;}.elementor-17401 .elementor-element.elementor-element-7c37ed0e{--icon-size:10px;}.elementor-17401 .elementor-element.elementor-element-17a58431 > .elementor-widget-container{margin:25px 0px 18px 0px;}.elementor-17401 .elementor-element.elementor-element-5031b52 > .elementor-widget-container{margin:0px 0px 100px 0px;}.elementor-17401 .elementor-element.elementor-element-2b78fe1 > .elementor-element-populated{padding:20px 20px 20px 20px;}.elementor-17401 .elementor-element.elementor-element-4df7273 > .elementor-element-populated{padding:20px 20px 20px 20px;}.elementor-17401 .elementor-element.elementor-element-04f4bff > .elementor-element-populated{margin:0px 0px 0px 0px;--e-column-margin-right:0px;--e-column-margin-left:0px;padding:0px 80px 0px 80px;}.elementor-17401 .elementor-element.elementor-element-c014f80{text-align:center;}}@media(max-width:767px){.elementor-17401 .elementor-element.elementor-element-2d6d93f{padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-a893162 > .elementor-element-populated{padding:40px 40px 40px 40px;}.elementor-17401 .elementor-element.elementor-element-41b74e2 .elementor-heading-title{font-size:25px;}.elementor-17401 .elementor-element.elementor-element-c7f104f > .elementor-widget-container{margin:-0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-c7f104f .elementor-heading-title{font-size:10px;}.elementor-17401 .elementor-element.elementor-element-2d4190b8{margin-top:20px;margin-bottom:20px;padding:0px 0px 161px 0px;}.elementor-17401 .elementor-element.elementor-element-245777e0 > .elementor-element-populated{padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-41712067 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-2b8e26 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-d3446f5 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-68ac971 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-39e72072{width:33%;}.elementor-17401 .elementor-element.elementor-element-37e98576 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-1282efb6{width:33%;}.elementor-17401 .elementor-element.elementor-element-54de635b > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-57334d5f{width:33%;}.elementor-17401 .elementor-element.elementor-element-5b1e06b7 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-4f34d7ea{width:33%;}.elementor-17401 .elementor-element.elementor-element-32559526 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-780514d2{width:33%;}.elementor-17401 .elementor-element.elementor-element-1ca2c9a0 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-5b0dd829{width:33%;}.elementor-17401 .elementor-element.elementor-element-72906240 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-b100b93{width:33%;}.elementor-17401 .elementor-element.elementor-element-242abd4 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-c3e646a{width:33%;}.elementor-17401 .elementor-element.elementor-element-b3eebea > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-4f01a27{width:33%;}.elementor-17401 .elementor-element.elementor-element-a49c2eb > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-29f1016f{width:33%;}.elementor-17401 .elementor-element.elementor-element-323f9f18 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-72ae17e3{width:33%;}.elementor-17401 .elementor-element.elementor-element-25b8d2dd > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-14fd7473{width:33%;}.elementor-17401 .elementor-element.elementor-element-c12ccde > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-3d0784f{width:33%;}.elementor-17401 .elementor-element.elementor-element-e9738a1 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-75e0ad4{width:33%;}.elementor-17401 .elementor-element.elementor-element-2ccb656 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-1e53228{width:33%;}.elementor-17401 .elementor-element.elementor-element-db0759d > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-1a9f80b{width:33%;}.elementor-17401 .elementor-element.elementor-element-0cc5876 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-b181cf4{width:33%;}.elementor-17401 .elementor-element.elementor-element-78c78b8 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-31e3d1f{width:33%;}.elementor-17401 .elementor-element.elementor-element-f5fb117 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-f029551{width:33%;}.elementor-17401 .elementor-element.elementor-element-f55dd8c > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-433f048{width:33%;}.elementor-17401 .elementor-element.elementor-element-587a7bd > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-e0ddb3f{width:33%;}.elementor-17401 .elementor-element.elementor-element-6dfacfa > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-5266de2{width:33%;}.elementor-17401 .elementor-element.elementor-element-14a76e2 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-7625846{width:33%;}.elementor-17401 .elementor-element.elementor-element-864ef7c > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-3789018{width:33%;}.elementor-17401 .elementor-element.elementor-element-827fc26 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-6b31b5b{width:33%;}.elementor-17401 .elementor-element.elementor-element-8d802b3 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-a99c229{width:33%;}.elementor-17401 .elementor-element.elementor-element-ce946bd > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-a773f78{width:33%;}.elementor-17401 .elementor-element.elementor-element-3f3d08a > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-82d5d2c{width:33%;}.elementor-17401 .elementor-element.elementor-element-155b3ac > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-8afb643{width:33%;}.elementor-17401 .elementor-element.elementor-element-b4437e5 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-813e057{width:33%;}.elementor-17401 .elementor-element.elementor-element-e1a263a > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-b8e9063{width:33%;}.elementor-17401 .elementor-element.elementor-element-853d851 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-a4ff5d3{width:33%;}.elementor-17401 .elementor-element.elementor-element-285ab21 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-37891b7{width:33%;}.elementor-17401 .elementor-element.elementor-element-bf816d4 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-033fd05{width:33%;}.elementor-17401 .elementor-element.elementor-element-e3531a6 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-de4a5b9{width:33%;}.elementor-17401 .elementor-element.elementor-element-94b5015 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-5c76e62{width:33%;}.elementor-17401 .elementor-element.elementor-element-efbc9a4 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-d8445ee{width:33%;}.elementor-17401 .elementor-element.elementor-element-b57099f > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-91a1e1f{width:33%;}.elementor-17401 .elementor-element.elementor-element-abc3511 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-c0a953f{width:33%;}.elementor-17401 .elementor-element.elementor-element-989d43e > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-afd84eb{width:33%;}.elementor-17401 .elementor-element.elementor-element-b4f0965 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-f3e809d{width:33%;}.elementor-17401 .elementor-element.elementor-element-acd991d > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-9313d99{width:33%;}.elementor-17401 .elementor-element.elementor-element-44b10cf > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-e2e0225{width:33%;}.elementor-17401 .elementor-element.elementor-element-31584ce > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-9b8ed49{width:33%;}.elementor-17401 .elementor-element.elementor-element-092ec94 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-3ec8fb5{width:33%;}.elementor-17401 .elementor-element.elementor-element-d63d65c > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-c1a2451{width:33%;}.elementor-17401 .elementor-element.elementor-element-a7bac60 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-22bbda8{width:33%;}.elementor-17401 .elementor-element.elementor-element-5af635b > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-ff7cd50{width:33%;}.elementor-17401 .elementor-element.elementor-element-6a5b179 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-b529815{width:33%;}.elementor-17401 .elementor-element.elementor-element-722e174 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-4078130{width:33%;}.elementor-17401 .elementor-element.elementor-element-e38e79a > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-73e22da{width:33%;}.elementor-17401 .elementor-element.elementor-element-784961d > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-58a5f9f{width:33%;}.elementor-17401 .elementor-element.elementor-element-216dbeb > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-f7730b1{width:33%;}.elementor-17401 .elementor-element.elementor-element-1beedd2 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-2fe5616{width:33%;}.elementor-17401 .elementor-element.elementor-element-068df86 > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-1fe4fb43{padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-26a70832 > .elementor-element-populated{padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-27b0b8bc > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-73290ff > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-a4970aa > .elementor-widget-container{margin:0px 0px -1px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-4adbe0e3 .elementor-button{font-size:12px;}.elementor-17401 .elementor-element.elementor-element-7c37ed0e{--container-widget-width:164px;--container-widget-flex-grow:0;width:var( --container-widget-width, 164px );max-width:164px;--icon-size:16px;}.elementor-17401 .elementor-element.elementor-element-17a58431 > .elementor-widget-container{margin:29px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-5031b52 .elementor-posts-container .elementor-post__thumbnail{padding-bottom:calc( 1 * 100% );}.elementor-17401 .elementor-element.elementor-element-5031b52:after{content:"1";}.elementor-17401 .elementor-element.elementor-element-5031b52 .elementor-post__thumbnail__link{width:20%;}.elementor-17401 .elementor-element.elementor-element-f176552{padding:60px 0px 60px 0px;}.elementor-17401 .elementor-element.elementor-element-2b78fe1 > .elementor-element-populated{padding:20px 20px 20px 20px;}.elementor-17401 .elementor-element.elementor-element-19b1018{text-align:center;}.elementor-17401 .elementor-element.elementor-element-0a46227 > .elementor-widget-container{margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-0a46227{text-align:center;}.elementor-17401 .elementor-element.elementor-element-47356ea .elementor-divider{text-align:center;}.elementor-17401 .elementor-element.elementor-element-47356ea .elementor-divider-separator{margin:0 auto;margin-center:0;}.elementor-17401 .elementor-element.elementor-element-93665bb{text-align:center;}.elementor-17401 .elementor-element.elementor-element-4df7273 > .elementor-element-populated{padding:20px 20px 20px 20px;}.elementor-17401 .elementor-element.elementor-element-c49343d{padding:0px 0px 0px 0px;}.elementor-17401 .elementor-element.elementor-element-04f4bff > .elementor-element-populated{margin:108px 0px 0px 0px;--e-column-margin-right:0px;--e-column-margin-left:0px;padding:40px 40px 40px 40px;}.elementor-17401 .elementor-element.elementor-element-18eee785 > .elementor-element-populated{padding:20px 20px 20px 20px;}.elementor-17401 .elementor-element.elementor-element-7e926730 .elementor-heading-title{font-size:28px;}}@media(min-width:768px){.elementor-17401 .elementor-element.elementor-element-245777e0{width:78.971%;}.elementor-17401 .elementor-element.elementor-element-4e3448a9{width:20.361%;}.elementor-17401 .elementor-element.elementor-element-2b78fe1{width:31.491%;}.elementor-17401 .elementor-element.elementor-element-4df7273{width:68.509%;}}@media(max-width:1024px) and (min-width:768px){.elementor-17401 .elementor-element.elementor-element-245777e0{width:100%;}.elementor-17401 .elementor-element.elementor-element-4e3448a9{width:100%;}}/* Start custom CSS for heading, class: .elementor-element-c7f104f */.elementor-17401 .elementor-element.elementor-element-c7f104f a {
  text-decoration: none !important;
}

.elementor-17401 .elementor-element.elementor-element-c7f104f a::after {
  display: none !important;
}

.elementor-17401 .elementor-element.elementor-element-c7f104f .elementor-button a {
  border: inherit !important;
  text-decoration: inherit !important;
}/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-41712067 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-2b8e26 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-d3446f5 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-68ac971 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-37e98576 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-54de635b *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-5b1e06b7 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-32559526 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-1ca2c9a0 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-72906240 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-242abd4 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-b3eebea *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-a49c2eb *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-323f9f18 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-25b8d2dd *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-c12ccde *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-e9738a1 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-2ccb656 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-db0759d *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-0cc5876 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-78c78b8 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-f5fb117 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-f55dd8c *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-587a7bd *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-6dfacfa *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-14a76e2 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-864ef7c *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-827fc26 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-8d802b3 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-ce946bd *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-3f3d08a *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-155b3ac *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-b4437e5 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-e1a263a *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-853d851 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-285ab21 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-bf816d4 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-e3531a6 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-94b5015 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-efbc9a4 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-b57099f *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-abc3511 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-989d43e *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-b4f0965 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-acd991d *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-44b10cf *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-31584ce *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-092ec94 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-d63d65c *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-a7bac60 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-5af635b *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-6a5b179 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-722e174 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-e38e79a *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-784961d *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-216dbeb *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-1beedd2 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-068df86 *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-27b0b8bc *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-73290ff *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for video, class: .elementor-element-a4970aa *//* Only the video widget gets the overlay */
.hover-video { 
  position: relative; 
  overflow: hidden; 
}

/* Attach overlay to the widget's own container, not the whole column */
.hover-video .elementor-widget-container {
  position: relative;
}

.hover-video .elementor-widget-container::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 2;        /* above the video only */
  pointer-events: none;
}

.hover-video:hover .elementor-widget-container::after {
  opacity: 1;
}

/* keep the media under the overlay */
.hover-video iframe,
.hover-video video {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
}
<!-- Container -->
<div class="ytc-wrap">
  <!-- Cover + custom play button -->
  <button class="ytc-cover" id="ytcPlay"
          style="background-image:url('THUMB_URL');"
          aria-label="Play video">
    <span class="ytc-icon">►</span>
  </button>

  <!-- Player goes here -->
  <div id="ytcPlayer" class="ytc-player" aria-hidden="true"></div>
</div>

<!-- YouTube Iframe API -->
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  (function () {
    var player, started = false, VID = 'VIDEO_ID';

    // required by YouTube API (must be global)
    window.onYouTubeIframeAPIReady = function () {
      // we instantiate on first click to keep it lightweight
    };

    // handle click to start
    document.getElementById('ytcPlay').addEventListener('click', function () {
      if (started) return;
      started = true;

      // hide cover, show player container
      document.querySelector('.ytc-cover').classList.add('ytc-hide');
      document.getElementById('ytcPlayer').setAttribute('aria-hidden', 'false');

      player = new YT.Player('ytcPlayer', {
        videoId: VID,
        playerVars: {
          autoplay: 1,
          mute: 0,                // cámbialo a 1 si quieres arrancar silenciado
          controls: 0,
          modestbranding: 1,
          rel: 0,
          fs: 0,
          playsinline: 1,
          loop: 1,
          playlist: VID,          // necesario para loop
          iv_load_policy: 3,
          enablejsapi: 1
        },
        events: {
          onReady: function (e) { e.target.playVideo(); }
        }
      });

      // keep looping without hitting "ended" (prevents end-screen flash)
      var guard = setInterval(function () {
        if (!player || typeof player.getPlayerState !== 'function') return;
        if (player.getPlayerState() === YT.PlayerState.PLAYING) {
          var t = player.getCurrentTime();
          var d = player.getDuration() || 0;
          if (d > 0 && d - t < 0.3) { player.seekTo(0.01, true); }
        }
      }, 120);
    });
  })();
</script>

<style>
  /* Aspect ratio 16:9 */
  .ytc-wrap {
    position: relative;
    width: 100%;
    max-width: 1200px;         /* opcional */
    margin: 0 auto;
  }
  .ytc-wrap::before {
    content: "";
    display: block;
    padding-top: 56.25%;       /* 16:9 */
  }

  /* Player fills container */
  .ytc-player,
  .ytc-wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: none;
  }

  /* Cover with custom play */
  .ytc-cover {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
  }
  .ytc-cover:focus { outline: 2px solid rgba(255,255,255,.6); outline-offset: 2px; }

  .ytc-icon {
    font: 700 52px/1 system-ui, -apple-system, "Segoe UI", Roboto, Arial;
    padding: .4em .6em .4em .7em;
    background: rgba(0,0,0,.55);
    color: #fff;
    border-radius: 999px;
    user-select: none;
  }
  .ytc-hide { display: none !important; }

  /* Hide (almost) all YouTube UI */
  .ytp-chrome-top,
  .ytp-chrome-bottom,
  .ytp-gradient-top,
  .ytp-gradient-bottom,
  .ytp-watermark,
  .ytp-show-cards-title,
  .ytp-endscreen-content,
  .ytp-endscreen-previous,
  .ytp-endscreen-next,
  .ytp-endscreen-share,
  .ytp-ce-element,
  .ytp-pause-overlay,
  .ytp-title-text,
  .ytp-cards-button-icon,
  .ytp-cards-teaser,
  .ytp-chapter-container,
  .ytp-spinner,
  .ytp-upnext {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }

  /* Ensure YouTube's big play button never shows */
  .ytp-large-play-button { display: none !important; }
</style>/* End custom CSS */
/* Start custom CSS for button, class: .elementor-element-4adbe0e3 */.elementor-17401 .elementor-element.elementor-element-4adbe0e3 a {
  text-decoration: none !important;
}

.elementor-17401 .elementor-element.elementor-element-4adbe0e3 a::after {
  display: none !important;
}

.elementor-17401 .elementor-element.elementor-element-4adbe0e3 .elementor-button a {
  border: inherit !important;
  text-decoration: inherit !important;
}/* End custom CSS */
/* Start custom CSS for toggle, class: .elementor-element-26944bf *//* --- Enlaces dentro del widget actual --- */
.elementor-17401 .elementor-element.elementor-element-26944bf a,
.elementor-17401 .elementor-element.elementor-element-26944bf a:visited {
  text-decoration: none !important;
}

.elementor-17401 .elementor-element.elementor-element-26944bf a::after {
  display: none !important;
}

/* --- Botones (mantiene bordes y estilos heredados) --- */
.elementor-17401 .elementor-element.elementor-element-26944bf .elementor-button {
  border: inherit !important;
  text-decoration: inherit !important;
}

/* --- Estilos globales para enlaces (puedes ajustar colores si quieres) --- */
a {
  color: #ffffff; /* blanco brillante */
  text-decoration: none;
}

a:hover {
  color: #f2f2f2; /* tono gris claro al pasar el mouse */
  text-decoration: underline;
}

/* --- TOGGLE de Elementor --- */
/* Oculta todos los contenidos de los tabs por defecto */
.elementor-toggle .elementor-tab-content {
  display: none; /* sin !important, para no romper el toggle */
}

/* Muestra el contenido cuando el título del tab está activo */
.elementor-toggle .elementor-tab-title.elementor-active + .elementor-tab-content {
  display: block;
}/* End custom CSS */