/*
Theme Name:   Hello Elementor Child
Theme URI:    https://elementor.com/hello-theme/
Description:  Child theme of Hello Elementor for the Nova Vance portfolio. Layout, colours and fonts are managed in Elementor (Site Settings and Theme Builder); this stylesheet only adds effects Elementor has no control for.
Author:       Nova Vance
Template:     hello-elementor
Version:      1.3.0
Requires at least: 6.0
Requires PHP: 7.4
License:      GNU General Public License v3 or later
License URI:  https://www.gnu.org/licenses/gpl-3.0.html
Text Domain:  hello-elementor-child
*/

/* Every colour below is an Elementor global colour (Site Settings → Global Colors):
   primary = ink, secondary = magenta, accent = lime, nv* = custom colours. */

html { scroll-behavior: smooth; }
.e-con[id] { scroll-margin-top: 90px; }
:focus-visible { outline: 2px solid var(--e-global-color-secondary); outline-offset: 3px; }
.elementor-widget-text-editor p:last-child { margin-bottom: 0; }
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { transition: none !important; animation: none !important; }
}

/* ---------- Header ---------- */
.nv-header { -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
.nv-dot {
	display: inline-block; width: 8px; height: 8px; margin-right: 8px; border-radius: 50%;
	background: currentColor; box-shadow: 0 0 8px currentColor; vertical-align: 1px;
	animation: nv-pulse 2s infinite;
}
@keyframes nv-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }

/* Mega menu: categorised Work dropdown */
.nv-mega .e-n-menu-content > .e-con { box-shadow: 0 24px 50px rgba(0, 0, 0, .12); }
@media (max-width: 1024px) {
	.nv-mega { --n-menu-title-justify-content: initial !important; --n-menu-title-justify-content-mobile: initial !important; }
	.nv-mega .e-n-menu-content > .e-con {
		border-width: 0 0 0 2px !important; border-color: var(--e-global-color-secondary) !important;
		border-radius: 0 !important; background: var(--e-global-color-nvbg) !important; box-shadow: none;
		margin: 0 32px; width: auto !important;
	}
}
@media (max-width: 767px) { .nv-mega .e-n-menu-content > .e-con { margin: 0 16px; } }

/* ---------- Hero ---------- */
.nv-hero {
	background:
		radial-gradient(circle at 80% 20%, var(--e-global-color-nvglow) 0%, transparent 55%),
		linear-gradient(var(--nv-grid) 1px, transparent 1px),
		linear-gradient(90deg, var(--nv-grid) 1px, transparent 1px);
	background-size: 100% 100%, 60px 60px, 60px 60px;
}
/* Accent line of the hero title: coloured text, or (Acid Cream) a highlighter stroke */
.nv-highlight { color: var(--e-global-color-secondary); }
.nv-has-highlight .nv-highlight {
	color: inherit;
	background: linear-gradient(transparent 58%, var(--e-global-color-accent) 58%, var(--e-global-color-accent) 92%, transparent 92%);
	padding: 0 .08em;
}
/* Dark schemes: soft neon glow (transparent on light schemes) */
.nv-logo .elementor-heading-title { text-shadow: 0 0 15px var(--nv-glow, transparent); }
.nv-giant .elementor-heading-title { text-shadow: 0 10px 30px var(--nv-glow, transparent); }
.elementor-button:hover, .elementor-button:focus-visible { box-shadow: 0 0 20px var(--nv-glow-strong, transparent); }
.nv-loc { color: var(--e-global-color-primary); margin-left: 6px; }
.nv-lead { max-width: 680px; }
.nv-star { color: var(--e-global-color-secondary); }
.nv-kicker p { display: flex; flex-wrap: wrap; gap: 8px 16px; }
.nv-kicker p > span { opacity: .8; }
.nv-portrait img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: 50% 30%; }

/* ---------- Marquee ---------- */
.nv-marquee-section { --nv-marquee-space: 48px; }
.nv-marquee { width: 104% !important; max-width: none !important; margin-left: -2% !important; }
.nv-marquee--tilt-left { transform: rotate(-1.5deg); position: relative; box-shadow: 0 18px 40px color-mix(in srgb, var(--e-global-color-accent) 18%, transparent); }
.nv-marquee--tilt-right { transform: rotate(1deg); margin-top: 26px !important; }
.nv-marquee__track { width: max-content !important; max-width: none !important; flex-wrap: nowrap !important; }
.nv-marquee__track > .elementor-element { flex: 0 0 auto; white-space: nowrap; padding-inline-end: var(--nv-marquee-space); }
.nv-marquee__star { display: inline-block; margin-inline-start: var(--nv-marquee-space); font-size: .6em; vertical-align: .25em; }
.nv-marquee--reverse .nv-marquee__star { color: var(--e-global-color-secondary); font-size: 1em; vertical-align: 0; }
.nv-marquee__track.is-running { animation: nv-marquee var(--nv-marquee-duration, 40s) linear infinite; will-change: transform; }
.nv-marquee--reverse .nv-marquee__track.is-running { animation-direction: reverse; }
.nv-marquee:hover .nv-marquee__track { animation-play-state: paused; }
@keyframes nv-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (max-width: 767px) {
	.nv-marquee-section { --nv-marquee-space: 28px; }
	.nv-marquee--tilt-right { margin-top: 10px !important; }
}

/* ---------- Work grid (loop item) ---------- */
.nv-card-img { overflow: hidden; transition: border-color .3s, box-shadow .3s; }
.nv-card-img img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; transition: transform .7s cubic-bezier(.16, 1, .3, 1); }
.nv-card:hover .nv-card-img { border-color: var(--e-global-color-secondary) !important; box-shadow: 0 12px 30px color-mix(in srgb, var(--e-global-color-accent) 10%, transparent); }
.nv-card:hover .nv-card-img img { transform: scale(1.03); }
.nv-card .nv-card-title .elementor-heading-title { transition: color .2s; }
.nv-card:hover .nv-card-title .elementor-heading-title { color: var(--e-global-color-secondary); }
.nv-menu-link:hover .elementor-heading-title { color: var(--e-global-color-secondary); }

/* ---------- Services (Nested Carousel) ---------- */
.nv-service-card { transition: border-color .3s ease, transform .3s ease, box-shadow .3s ease; height: 100%; }
.nv-service-card:hover { transform: translateY(-4px); border-color: var(--e-global-color-accent) !important; box-shadow: 0 16px 40px color-mix(in srgb, var(--e-global-color-accent) 14%, transparent); }
.nv-service-card .nv-service-tags { margin-top: auto !important; }
/* Controls row under the cards: progress bar on the left, arrows on the right */
.nv-services-carousel { position: relative; padding-bottom: 76px; }
.nv-services-carousel .elementor-swiper-button { position: absolute !important; top: auto !important; bottom: 0 !important; transform: none !important; }
.nv-services-carousel .elementor-swiper-button-prev { left: auto !important; right: 58px !important; }
.nv-services-carousel .elementor-swiper-button-next { right: 0 !important; }
.nv-services-carousel .elementor-swiper-button {
	width: 46px; height: 46px; display: flex; align-items: center; justify-content: center;
	background: var(--e-global-color-nvsurface); border: 1px solid var(--e-global-color-nvhair2); border-radius: 50%;
	color: var(--e-global-color-primary); transition: background .2s, color .2s, border-color .2s;
}
.nv-services-carousel .elementor-swiper-button svg { fill: currentColor; width: 16px; height: 16px; }
.nv-services-carousel .elementor-swiper-button:hover { background: var(--e-global-color-accent); border-color: var(--e-global-color-accent); color: var(--e-global-color-nvonaccent); }
.nv-services-carousel .swiper-pagination-progressbar { position: absolute !important; top: auto !important; bottom: 22px !important; left: 0 !important; width: calc(100% - 140px) !important; height: 3px !important; background: var(--e-global-color-nvhair2); border-radius: 3px; overflow: hidden; }
.nv-services-carousel .swiper-pagination-progressbar-fill { background: var(--e-global-color-accent) !important; }
/* ---------- About ---------- */
.nv-award .elementor-heading-title { transition: color .2s; }
.nv-award:hover .nv-award-name .elementor-heading-title { color: var(--e-global-color-secondary); }
.nv-statement .elementor-heading-title { max-width: 18ch; }
.nv-measure { max-width: 60ch; }

/* ---------- Contact ---------- */
.nv-email .elementor-heading-title a { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 8px; transition: color .3s; }
.nv-email .elementor-heading-title a:hover { color: var(--e-global-color-primary); }

/* Inquiry form (Elementor Pro Form widget) */
.nv-form .elementor-field-group .elementor-field-textual { padding: 12px 14px; transition: border-color .2s, box-shadow .2s; }
.nv-form .elementor-field-group .elementor-field-textual:focus {
	border-color: var(--e-global-color-secondary);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--e-global-color-secondary) 15%, transparent);
	outline: 0;
}
.nv-form .elementor-field-group .elementor-select-wrapper .select-caret-down-wrapper { color: var(--e-global-color-secondary); }
/* Native dropdown list: follow the scheme instead of the browser's white popup */
.nv-form select.elementor-field-textual { color-scheme: inherit; }
.nv-form select.elementor-field-textual option {
	background-color: var(--e-global-color-nvsurface);
	color: var(--e-global-color-primary);
}
.nv-form select.elementor-field-textual option:checked {
	background-color: var(--e-global-color-accent);
	color: var(--e-global-color-nvonaccent);
}
.nv-form .elementor-field-textual::placeholder { color: var(--e-global-color-nvfaint); opacity: .8; }
.nv-form .elementor-message { font-family: var(--e-global-typography-secondary-font-family), monospace; font-size: 13px; }

/* ---------- Single project ---------- */
.nv-case-hero img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.nv-figure img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.nv-case-nav .post-navigation__arrow-wrapper { display: none; }
.nv-case-nav .elementor-post-navigation__link a { display: block; padding: 32px 0; }
.nv-case-nav .elementor-post-navigation__next { text-align: right; }
.nv-case-nav .post-navigation__prev--title,
.nv-case-nav .post-navigation__next--title { display: block; margin-top: 6px; transition: color .2s; }
.nv-case-nav a:hover .post-navigation__prev--title,
.nv-case-nav a:hover .post-navigation__next--title { color: var(--e-global-color-secondary); }

/* ---------- Footer ---------- */
.nv-foot-links a { transition: color .2s, opacity .2s; }
