/* IRORUN — motion and pointer effects.
   Everything here is switched off for visitors who ask for reduced motion, and inside
   the Elementor editor, so nothing ever stays hidden or moves while a page is edited.
   Pointer effects (tilt, glow, magnetic buttons, hero parallax) only run with a mouse;
   motion.js sets the CSS variables they read. */

:root { --ir-ease-out: cubic-bezier(.2, .7, .2, 1); }

/* ---- Hover and tap feedback that is fine for everyone ---------------- */
.ir-btn .elementor-button,
.ir-button { transition: background-color .2s, color .2s, border-color .2s, box-shadow .25s, transform .25s var(--ir-ease-out); }
.ir-btn .elementor-button:active,
.ir-button:active { transform: scale(.97); }
.ir-btn--primary .elementor-button:hover,
.ir-button--primary:hover { box-shadow: 0 12px 24px -12px rgba(47, 129, 46, .7); }

/* Nav: underline grows in from the centre on hover. */
.ir-nav__list a::after {
	content: ""; position: absolute; left: 12px; right: 12px; bottom: 2px; height: 2px; border-radius: 2px;
	background: var(--ir-green-logo); transform: scaleX(0); transition: transform .3s var(--ir-ease-out);
}
.ir-nav__list a:hover::after,
.ir-nav__list .current-menu-item > a::after,
.ir-nav__list .current_page_item > a::after,
.ir-nav__list .current_page_parent > a::after { transform: scaleX(1); }

/* Cards lift; their icon nudges up. */
.ir-card > .elementor-widget-wrap,
.ir-card > .elementor-column-wrap { position: relative; transition: transform .35s var(--ir-ease-out), box-shadow .35s var(--ir-ease-out), border-color .35s; }
.ir-card:hover > .elementor-widget-wrap,
.ir-card:hover > .elementor-column-wrap { box-shadow: var(--ir-shadow-lg); border-color: #cfe3cd; }
.ir-card--dark:hover > .elementor-widget-wrap,
.ir-card--dark:hover > .elementor-column-wrap { border-color: rgba(132, 199, 129, .35); }
.ir-iconbox .elementor-icon { transition: transform .35s var(--ir-ease-out), background-color .25s, color .25s; }
.ir-card:hover .ir-iconbox .elementor-icon { transform: translateY(-3px) rotate(-6deg); }

/* Photos and blog images zoom gently inside their frame. */
.ir-photo .elementor-widget-container { overflow: hidden; border-radius: 18px; }
.ir-photo img,
.ir-post-card__media img { transition: transform .8s var(--ir-ease-out); }
.ir-photo:hover img,
.ir-post-card:hover .ir-post-card__media img { transform: scale(1.05); }
.ir-post-card__media { overflow: hidden; }
.ir-post-card { transition: transform .35s var(--ir-ease-out), box-shadow .35s var(--ir-ease-out); }

/* Scroll progress bar (element added by motion.js). */
.ir-progress {
	position: fixed; inset: 0 0 auto 0; z-index: 1000; height: 3px; pointer-events: none;
	background: linear-gradient(90deg, var(--ir-green-logo), var(--ir-orange));
	transform-origin: 0 50%; transform: scaleX(var(--ir-progress, 0));
}
.admin-bar .ir-progress { top: 32px; }
@media (max-width: 782px) { .admin-bar .ir-progress { top: 46px; } }

@media (prefers-reduced-motion: no-preference) {
	/* ---- Hero entrance: copy rises in, one line after another ---------- */
	body:not(.elementor-editor-active) .ir-hero .ir-hero-copy .elementor-widget { animation: ir-rise .9s var(--ir-ease-out) both; }
	body:not(.elementor-editor-active) .ir-hero .ir-hero-copy .elementor-widget:nth-child(2) { animation-delay: .08s; }
	body:not(.elementor-editor-active) .ir-hero .ir-hero-copy .elementor-widget:nth-child(3) { animation-delay: .16s; }
	body:not(.elementor-editor-active) .ir-hero .ir-hero-copy .elementor-widget:nth-child(4) { animation-delay: .26s; }
	body:not(.elementor-editor-active) .ir-hero .ir-hero-copy .elementor-widget:nth-child(5) { animation-delay: .34s; }
	body:not(.elementor-editor-active) .ir-hero .ir-hero-copy .elementor-widget:nth-child(n+6) { animation-delay: .42s; }

	/* Slow zoom on the home slideshow photo that is showing. */
	body:not(.elementor-editor-active) .ir-hero--home .elementor-background-slideshow__slide__image { transition: transform 7s linear; }
	body:not(.elementor-editor-active) .ir-hero--home .swiper-slide-active .elementor-background-slideshow__slide__image { transform: scale(1.1); }

	/* ---- Scroll reveal. motion.js adds .ir-reveal to content below the fold, then
	   .is-in as it scrolls into view, and removes both once the animation is done. */
	body:not(.elementor-editor-active) .ir-reveal {
		opacity: 0; translate: 0 28px;
		transition: opacity .8s var(--ir-ease-out), translate .8s var(--ir-ease-out), scale .8s var(--ir-ease-out);
		transition-delay: var(--ir-delay, 0s);
	}
	body:not(.elementor-editor-active) .ir-reveal.ir-photo { scale: .97; }
	body:not(.elementor-editor-active) .ir-reveal.is-in { opacity: 1; translate: none; scale: none; }

	/* ---- WhatsApp button: a soft ring every few seconds ----------------- */
	body:not(.elementor-editor-active) .ir-whatsapp-float::before {
		content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
		box-shadow: 0 0 0 0 rgba(18, 140, 74, .55); animation: ir-ring 3.2s 2s infinite;
	}
}
.ir-whatsapp-float { isolation: isolate; }

@keyframes ir-rise { from { opacity: 0; transform: translate3d(0, 26px, 0); } to { opacity: 1; transform: none; } }
@keyframes ir-ring { 0% { box-shadow: 0 0 0 0 rgba(18, 140, 74, .55); } 70%, 100% { box-shadow: 0 0 0 16px rgba(18, 140, 74, 0); } }

/* ---- Pointer effects (html.ir-pointer is set by motion.js for mouse users) ---- */

/* Cards tilt towards the cursor and a soft light follows it. */
.ir-pointer .ir-card > .elementor-widget-wrap,
.ir-pointer .ir-card > .elementor-column-wrap,
.ir-pointer .ir-post-card { transform: perspective(900px) rotateX(var(--ir-rx, 0deg)) rotateY(var(--ir-ry, 0deg)) translateY(var(--ir-lift, 0px)); will-change: transform; }
.ir-pointer .ir-card:hover > .elementor-widget-wrap,
.ir-pointer .ir-card:hover > .elementor-column-wrap,
.ir-pointer .ir-post-card:hover { --ir-lift: -6px; }
.ir-pointer .ir-tilting { transition-duration: .12s, .35s, .35s; }

.ir-pointer .ir-card > .elementor-widget-wrap::before,
.ir-pointer .ir-card > .elementor-column-wrap::before,
.ir-pointer .ir-post-card::before {
	content: ""; position: absolute; inset: 0; z-index: 0; border-radius: inherit; pointer-events: none;
	background: radial-gradient(360px circle at var(--ir-mx, 50%) var(--ir-my, 50%), rgba(56, 152, 55, .12), transparent 60%);
	opacity: 0; transition: opacity .35s;
}
.ir-pointer .ir-card--dark > .elementor-widget-wrap::before,
.ir-pointer .ir-card--dark > .elementor-column-wrap::before,
.ir-pointer .ir-card--navy > .elementor-widget-wrap::before { background: radial-gradient(360px circle at var(--ir-mx, 50%) var(--ir-my, 50%), rgba(132, 199, 129, .16), transparent 60%); }
.ir-pointer .ir-card:hover > .elementor-widget-wrap::before,
.ir-pointer .ir-card:hover > .elementor-column-wrap::before,
.ir-pointer .ir-post-card:hover::before { opacity: 1; }
.ir-pointer .ir-post-card { position: relative; }
.ir-pointer .ir-post-card > * { position: relative; z-index: 1; }
.ir-pointer .ir-card > .elementor-widget-wrap > .elementor-element { position: relative; z-index: 1; }

/* Buttons are drawn a few pixels towards the cursor; primary buttons get a light sweep. */
.ir-pointer .ir-magnetic { translate: var(--ir-tx, 0) var(--ir-ty, 0); transition: translate .25s var(--ir-ease-out), background-color .2s, color .2s, border-color .2s, box-shadow .25s, transform .25s var(--ir-ease-out); }
.ir-pointer .ir-btn--primary .elementor-button,
.ir-pointer .ir-button--primary { position: relative; overflow: hidden; isolation: isolate; }
.ir-pointer .ir-btn--primary .elementor-button::after,
.ir-pointer .ir-button--primary::after {
	content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
	background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, .28) 50%, transparent 70%);
	transform: translateX(-120%); transition: transform .7s var(--ir-ease-out);
}
.ir-pointer .ir-btn--primary .elementor-button:hover::after,
.ir-pointer .ir-button--primary:hover::after { transform: translateX(120%); }

/* Hero: the copy and photo drift slightly against the cursor, and a soft light follows it. */
.ir-pointer .ir-hero > .elementor-container { z-index: 2; }
.ir-pointer .ir-hero::after {
	content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
	background: radial-gradient(520px circle at var(--ir-hx, 50%) var(--ir-hy, 50%), rgba(132, 199, 129, .16), transparent 65%);
	opacity: var(--ir-hglow, 0); transition: opacity .5s;
}
.ir-pointer .ir-hero .ir-hero-copy > .elementor-widget-wrap,
.ir-pointer .ir-hero .ir-hero-copy > .elementor-column-wrap {
	translate: calc(var(--ir-px, 0) * -10px) calc(var(--ir-py, 0) * -8px);
	transition: translate .6s var(--ir-ease-out);
}
.ir-pointer .ir-hero--home .elementor-background-slideshow {
	translate: calc(var(--ir-px, 0) * 14px) calc(var(--ir-py, 0) * 10px); scale: 1.04;
	transition: translate .8s var(--ir-ease-out);
}

@media (prefers-reduced-motion: reduce) {
	.ir-btn .elementor-button, .ir-button, .ir-card > .elementor-widget-wrap, .ir-card > .elementor-column-wrap,
	.ir-iconbox .elementor-icon, .ir-photo img, .ir-post-card, .ir-post-card__media img, .ir-nav__list a::after { transition: none; }
	.ir-card:hover .ir-iconbox .elementor-icon, .ir-photo:hover img, .ir-post-card:hover .ir-post-card__media img { transform: none; }
	.ir-progress { display: none; }
}
