/* Joe Lumi extras for native Elementor pages.
   Everything here is attached with a CSS class in Elementor (Advanced > CSS Classes),
   so removing the class from an element turns the effect off. */

/* Cards lift on hover */
.jl-lift{transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
.jl-lift:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,.09)!important}
.jl-lift:hover .elementor-icon{background-color:var(--e-global-color-accent,#D71920)!important;color:#fff!important;fill:#fff!important;transform:rotate(-6deg)}
.jl-lift .elementor-icon{transition:background-color .25s,transform .25s,color .25s}
a.e-con.jl-lift:hover{border-color:var(--e-global-color-accent,#D71920)!important}

/* Hero: dotted texture */
.jl-hero{position:relative;overflow:hidden}
.jl-hero::before{content:"";position:absolute;inset:0;background-image:radial-gradient(#d6d6d2 1.2px,transparent 1.2px);background-size:22px 22px;-webkit-mask-image:linear-gradient(100deg,transparent 35%,#000 75%);mask-image:linear-gradient(100deg,transparent 35%,#000 75%);pointer-events:none}
.jl-hero>.e-con-inner{position:relative}

/* Growth pipeline panel: floating notification chips */
.jl-panel{position:relative;overflow:visible!important}
.jl-chip{position:absolute!important;z-index:3;box-shadow:0 12px 28px rgba(0,0,0,.14);white-space:nowrap;animation:jlBob 4.5s ease-in-out infinite}
.jl-chip-a{top:-18px;right:24px}
.jl-chip-b{bottom:-18px;left:-14px;animation-delay:-2.2s}
@keyframes jlBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@media (max-width:767px){.jl-chip-b{left:8px}.jl-chip-a{right:8px}}

/* Ticks that light up in turn */
.jl-seq .elementor-icon-list-item{animation:jlSeq 7.5s ease-in-out infinite}
.jl-seq .elementor-icon-list-item:nth-child(2){animation-delay:1.5s}
.jl-seq .elementor-icon-list-item:nth-child(3){animation-delay:3s}
@keyframes jlSeq{0%,100%{opacity:.45}12%,60%{opacity:1}}

/* Scrolling ticker (the list is repeated automatically so it loops smoothly) */
.jl-ticker-band{border-bottom:1px solid #E4E4E4}
.jl-ticker{width:max-content!important;max-width:none!important}
.jl-ticker .elementor-icon-list-items{flex-wrap:nowrap!important;width:max-content;animation:jlTick 38s linear infinite}
.jl-ticker:hover .elementor-icon-list-items{animation-play-state:paused}
.jl-ticker .elementor-icon-list-item{white-space:nowrap}
@keyframes jlTick{to{transform:translateX(-50%)}}
.elementor-editor-active .jl-ticker .elementor-icon-list-items{animation:none}

/* Automation flow: each step lights up in turn */
.jl-flow .elementor-icon-list-item{padding:14px 16px!important;border:1px solid #3F3F3F;border-radius:14px;background:#262626;animation:jlFlow 8s ease infinite}
.jl-flow .elementor-icon-list-item:nth-child(2){animation-delay:2s}
.jl-flow .elementor-icon-list-item:nth-child(3){animation-delay:4s}
.jl-flow .elementor-icon-list-item:nth-child(4){animation-delay:6s}
@keyframes jlFlow{0%,30%,100%{border-color:#3F3F3F;box-shadow:none}8%,22%{border-color:#D71920;box-shadow:0 0 0 4px rgba(215,25,32,.18)}}
.jl-live{position:relative}
.jl-live::before{content:"";position:absolute;left:10px;top:50%;width:7px;height:7px;margin-top:-3.5px;border-radius:50%;background:#2ecc71;animation:jlBlink 1.6s ease infinite}
@keyframes jlBlink{50%{opacity:.25}}

/* Location art (pin, county map, nationwide map) */
.jl-art .reach-art{height:250px;border-radius:14px;background:#F5F5F5;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:14px}

/* Videos */
.jl-video .elementor-wrapper{border-radius:16px;overflow:hidden}
.jl-video .elementor-custom-embed-play i,.jl-video .elementor-custom-embed-play svg{background:#D71920;border-radius:50%;padding:18px;box-shadow:0 0 0 0 rgba(215,25,32,.6);animation:jlHalo 2.4s ease-out infinite;opacity:1!important}
@keyframes jlHalo{0%{box-shadow:0 0 0 0 rgba(215,25,32,.55)}100%{box-shadow:0 0 0 22px rgba(215,25,32,0)}}

/* Google "G" */
.jl-g svg{width:40px;height:40px}

/* Contact band decorative rings */
.jl-contact{position:relative;overflow:hidden}
.jl-contact::before{content:"";position:absolute;width:560px;height:560px;right:-180px;top:-220px;border-radius:50%;border:1px solid rgba(255,255,255,.18);box-shadow:0 0 0 70px rgba(255,255,255,.04),0 0 0 140px rgba(255,255,255,.03);pointer-events:none}
.jl-contact>.e-con-inner{position:relative}

/* Gravity Forms inside the contact card */
.jl-gf .gform_wrapper{margin:0!important}
.jl-gf .gform_wrapper .gform_fields{display:grid!important;grid-template-columns:1fr 1fr;gap:14px!important}
.jl-gf .gform_wrapper .gfield--width-full,.jl-gf .gform_wrapper .gfield--type-textarea,.jl-gf .gform_wrapper .gfield--type-select,.jl-gf .gform_wrapper .gfield--type-name{grid-column:1/-1}
.jl-gf .gform_wrapper label,.jl-gf .gform_wrapper .gfield_label,.jl-gf .gform_wrapper legend{font-weight:700!important;font-size:14px!important;color:#000}
.jl-gf .gform_wrapper input:not([type=submit]):not([type=checkbox]):not([type=radio]),.jl-gf .gform_wrapper select,.jl-gf .gform_wrapper textarea{font:inherit;font-size:16px;padding:13px 14px!important;border:1px solid #8A8A8A!important;border-radius:10px!important;background:#fff;width:100%!important;max-width:100%!important}
.jl-gf .gform_wrapper .ginput_container{width:100%!important}
.jl-gf .gform_wrapper .gform_footer{margin:16px 0 0!important;padding:0!important}
.jl-gf .gform_wrapper .gform_button,.jl-gf .gform_wrapper input[type=submit]{background:#000!important;color:#fff!important;border:0!important;border-radius:999px!important;padding:15px 24px!important;font-weight:700!important;font-size:16px!important;cursor:pointer}
.jl-gf .gform_wrapper .gform_button:hover{background:#2B2B2B!important}
@media (max-width:640px){.jl-gf .gform_wrapper .gform_fields{grid-template-columns:1fr}}

/* Accordion lines like the design */
.elementor-widget-accordion .elementor-accordion-item{border-left:0!important;border-right:0!important}
.elementor-widget-accordion .elementor-tab-content{border-top:0!important}

@media (prefers-reduced-motion:reduce){.jl-ticker .elementor-icon-list-items,.jl-chip{animation:none}}

/* Paragraph spacing inside Text Editor widgets */
.elementor-widget-text-editor p+p{margin-top:16px}
.elementor-widget-text-editor p{margin-bottom:0}
