/*
 * Falc-Lion Component Composer 3.0
 * Loaded after the legacy visual engine. In Full mode these rules refine
 * components. In Selective mode they are the only active component rules.
 */

@keyframes flads-comp-liquid {
    0%,100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}

/* Selective mode: global palette is genuinely optional. */
body.flads-selective.flads-part-palette {
    background: var(--flads-body-bg) !important;
    color: var(--flads-text) !important;
    accent-color: var(--flads-accent);
}
body.flads-selective.flads-part-palette .nr-label,
body.flads-selective.flads-part-palette main [style*="color:#d97706"],
body.flads-selective.flads-part-palette main [style*="color:#fbbf24"] {
    color: var(--flads-accent) !important;
}
body.flads-selective.flads-part-palette .nr-label::before {
    background: linear-gradient(90deg,var(--flads-accent),var(--flads-accent-2)) !important;
    box-shadow: 0 0 14px rgba(var(--flads-accent-rgb),.42);
}
body.flads-selective.flads-part-palette main .nr-display,
body.flads-selective.flads-part-palette main [style*="color:#0f1117"] {
    color: var(--flads-heading) !important;
}
body.flads-selective.flads-part-palette main [style*="color:#6b7280"] {
    color: var(--flads-muted) !important;
}
body.flads-selective.flads-part-palette main :is(#process,#areas) .nr-display,
body.flads-selective.flads-part-palette main :is(#process,#areas) h3,
body.flads-selective.flads-part-palette main :is(#process,#areas) [style*="color:#fff"] {
    color: var(--flads-on-dark) !important;
}
body.flads-selective.flads-part-palette main :is(#process,#areas) p,
body.flads-selective.flads-part-palette main :is(#process,#areas) [style*="rgba(255,255,255"] {
    color: var(--flads-on-dark-muted) !important;
}

/* Selective header/navigation module. */
body.flads-selective.flads-part-header #nr-topbar {
    background: var(--flads-topbar) !important;
    color: var(--flads-on-dark-muted) !important;
    border-bottom: 1px solid var(--flads-border) !important;
}
body.flads-selective.flads-part-header #nr-header,
body.flads-selective.flads-part-header #nr-header.scrolled,
body.flads-selective.flads-part-header #nr-header.light-bg {
    background: linear-gradient(90deg,rgba(var(--flads-accent-rgb),.04),transparent 38%,rgba(var(--flads-accent-rgb),.025)),var(--flads-header) !important;
    border-bottom: 1px solid var(--flads-border) !important;
    box-shadow: 0 16px 50px rgba(0,0,0,.12) !important;
    backdrop-filter: blur(22px) saturate(1.35) !important;
    -webkit-backdrop-filter: blur(22px) saturate(1.35) !important;
}
body.flads-selective.flads-part-header #nr-header::after {
    content:'';position:absolute;left:4%;right:4%;bottom:-1px;height:1px;pointer-events:none;
    background:linear-gradient(90deg,transparent,var(--flads-accent),var(--flads-accent-2),transparent);
    opacity:.42;
    box-shadow:0 0 18px rgba(var(--flads-accent-rgb),.24);
}
body.flads-selective.flads-part-header #nr-header :is(#nr-logo-text,.nr-header-phone,nav a),
body.flads-selective.flads-part-header #nr-menu-toggle {
    color:var(--flads-header-text) !important;
}
body.flads-selective.flads-part-header #nr-header nav a {
    border:1px solid transparent;border-radius:999px !important;padding-inline:.9rem !important;
}
body.flads-selective.flads-part-header #nr-header nav a:hover,
body.flads-selective.flads-part-header #nr-header nav .current-menu-item>a {
    background:rgba(var(--flads-accent-rgb),.1) !important;
    border-color:rgba(var(--flads-accent-rgb),.24) !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 10px 30px rgba(var(--flads-accent-rgb),.08);
}
body.flads-selective.flads-part-header #nr-mobile-menu {
    background:var(--flads-surface-strong) !important;border-color:var(--flads-border) !important;
    backdrop-filter:blur(24px) saturate(1.25);-webkit-backdrop-filter:blur(24px) saturate(1.25);
}

/* Ambient module kill switch. The layers are rendered by the base controller. */
body.flads-composer-active.flads-part-effects-off .flads-ambient-layer,
body.flads-composer-active.flads-part-effects-off .flads-pointer-light { display:none !important; }

/* Premium Button Studio — applies in both Full and Selective modes when the part is enabled. */
body.flads-composer-active.flads-part-buttons :is(.nr-btn,.nr-filter-btn,#fl-backtotop,#fl-back-top,.fl-mcb-book,.fl-mb-cta,.fl-mobile-bar a) {
    --flads-mx:0px;--flads-my:0px;--flads-hover-lift:0px;
    position:relative !important;isolation:isolate;overflow:hidden !important;
    color:var(--flads-comp-btn-text) !important;
    background:var(--flads-comp-btn-bg) !important;
    border:var(--flads-comp-btn-border-width) solid var(--flads-comp-btn-border) !important;
    border-radius:var(--flads-comp-btn-radius) !important;
    box-shadow:
        var(--flads-comp-btn-outer-shadow-x) var(--flads-comp-btn-outer-shadow-y) var(--flads-comp-btn-outer-shadow-blur) var(--flads-comp-btn-outer-shadow-spread) var(--flads-comp-btn-outer-shadow-color),
        0 var(--flads-comp-btn-depth-shadow-y) var(--flads-comp-btn-depth-shadow-blur) var(--flads-comp-btn-depth-shadow-color),
        0 0 var(--flads-comp-btn-edge-glow-blur) var(--flads-comp-btn-edge-glow-color),
        0 0 var(--flads-comp-btn-legacy-glow-blur) var(--flads-comp-btn-legacy-glow),
        inset var(--flads-comp-btn-inner-shadow-x) var(--flads-comp-btn-inner-shadow-y) var(--flads-comp-btn-inner-shadow-blur) var(--flads-comp-btn-inner-shadow-spread) var(--flads-comp-btn-inner-shadow-color),
        inset 0 0 var(--flads-comp-btn-inner-glow-blur) var(--flads-comp-btn-inner-glow-spread) var(--flads-comp-btn-inner-glow-color) !important;
    backdrop-filter:blur(var(--flads-comp-btn-blur)) saturate(var(--flads-comp-btn-backdrop-sat)) brightness(var(--flads-comp-btn-backdrop-bright)) contrast(var(--flads-comp-btn-backdrop-contrast)) !important;
    -webkit-backdrop-filter:blur(var(--flads-comp-btn-blur)) saturate(var(--flads-comp-btn-backdrop-sat)) brightness(var(--flads-comp-btn-backdrop-bright)) contrast(var(--flads-comp-btn-backdrop-contrast)) !important;
    transform:translate3d(var(--flads-mx),calc(var(--flads-my) - var(--flads-hover-lift)),0) !important;
    transition:transform .28s cubic-bezier(.22,1,.36,1),box-shadow .32s ease,filter .32s ease,border-color .32s ease !important;
}
body.flads-composer-active.flads-part-buttons :is(.nr-btn,.nr-filter-btn,#fl-backtotop,#fl-back-top,.fl-mcb-book,.fl-mb-cta,.fl-mobile-bar a)::before {
    content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;
    background:
        radial-gradient(115% 100% at 22% -5%,rgba(255,255,255,calc(var(--flads-comp-btn-highlight) * .82)),transparent 46%),
        repeating-radial-gradient(circle at 20% 20%,rgba(255,255,255,.22) 0 1px,transparent 1px 4px);
    opacity:calc(var(--flads-comp-btn-highlight) * .92 + var(--flads-comp-btn-noise) * 1.6);
    mix-blend-mode:screen;
}
body.flads-composer-active.flads-part-buttons :is(.nr-btn,.nr-filter-btn,#fl-backtotop,#fl-back-top,.fl-mcb-book,.fl-mb-cta,.fl-mobile-bar a)::after {
    content:'' !important;display:block;position:absolute;top:-60%;bottom:-60%;left:-85%;width:var(--flads-comp-btn-shine-width);z-index:2;pointer-events:none;
    background:linear-gradient(var(--flads-comp-btn-shine-angle),transparent 0,var(--flads-comp-btn-shine-color) 48%,transparent 100%);
    filter:blur(var(--flads-comp-btn-shine-blur));transform:translateX(-120%);opacity:.92;
    transition:transform var(--flads-comp-btn-shine-speed) cubic-bezier(.22,1,.36,1) !important;
}
body.flads-composer-active.flads-part-buttons :is(.nr-btn,.nr-filter-btn,#fl-backtotop,#fl-back-top,.fl-mcb-book,.fl-mb-cta,.fl-mobile-bar a):hover {
    --flads-hover-lift:var(--flads-comp-btn-lift);
    filter:saturate(1.08) brightness(1.04);
    box-shadow:
        var(--flads-comp-btn-outer-shadow-x) calc(var(--flads-comp-btn-outer-shadow-y) + 4px) calc(var(--flads-comp-btn-outer-shadow-blur) + 12px) var(--flads-comp-btn-outer-shadow-spread) var(--flads-comp-btn-outer-shadow-color),
        0 calc(var(--flads-comp-btn-depth-shadow-y) + 3px) calc(var(--flads-comp-btn-depth-shadow-blur) + 12px) var(--flads-comp-btn-depth-shadow-color),
        0 0 calc(var(--flads-comp-btn-edge-glow-blur) + 12px) var(--flads-comp-btn-edge-glow-color),
        0 0 calc(var(--flads-comp-btn-legacy-glow-blur) + 14px) var(--flads-comp-btn-legacy-glow),
        inset var(--flads-comp-btn-inner-shadow-x) var(--flads-comp-btn-inner-shadow-y) var(--flads-comp-btn-inner-shadow-blur) var(--flads-comp-btn-inner-shadow-spread) var(--flads-comp-btn-inner-shadow-color),
        inset 0 0 calc(var(--flads-comp-btn-inner-glow-blur) + 5px) var(--flads-comp-btn-inner-glow-spread) var(--flads-comp-btn-inner-glow-color) !important;
}
body.flads-composer-active.flads-part-buttons :is(.nr-btn,.nr-filter-btn,#fl-backtotop,#fl-back-top,.fl-mcb-book,.fl-mb-cta,.fl-mobile-bar a):hover::after { transform:translateX(760%); }

/* Card Surface Studio — optical Glass Lab surfaces. */
body.flads-composer-active.flads-part-cards :is(.flads-card,#services [data-tilt],#services .fl-svc-card,.nr-portfolio-item,.fl-project-card,#areas-grid>div,.fl-area-card,#cta-grid>div,.fl-cta-card,#testimonials blockquote,.fl-testimonial-card,.fl-review-summary,.fl-process-step,.fl-why-item,.fl-trust-item) {
    position:relative;isolation:isolate;overflow:hidden;
    border-radius:var(--flads-comp-card-radius) !important;
    background:var(--flads-comp-card-bg) !important;
    border:var(--flads-comp-card-border-width) solid var(--flads-comp-card-border) !important;
    box-shadow:
        var(--flads-comp-card-outer-shadow-x) var(--flads-comp-card-outer-shadow-y) var(--flads-comp-card-outer-shadow-blur) var(--flads-comp-card-outer-shadow-spread) var(--flads-comp-card-outer-shadow-color),
        0 var(--flads-comp-card-depth-shadow-y) var(--flads-comp-card-depth-shadow-blur) var(--flads-comp-card-depth-shadow-color),
        0 0 var(--flads-comp-card-edge-glow-blur) var(--flads-comp-card-edge-glow-color),
        0 0 var(--flads-comp-card-legacy-glow-blur) var(--flads-comp-card-legacy-glow),
        inset var(--flads-comp-card-inner-shadow-x) var(--flads-comp-card-inner-shadow-y) var(--flads-comp-card-inner-shadow-blur) var(--flads-comp-card-inner-shadow-spread) var(--flads-comp-card-inner-shadow-color),
        inset 0 0 var(--flads-comp-card-inner-glow-blur) var(--flads-comp-card-inner-glow-spread) var(--flads-comp-card-inner-glow-color) !important;
    backdrop-filter:blur(var(--flads-comp-card-blur)) saturate(var(--flads-comp-card-backdrop-sat)) brightness(var(--flads-comp-card-backdrop-bright)) contrast(var(--flads-comp-card-backdrop-contrast)) !important;
    -webkit-backdrop-filter:blur(var(--flads-comp-card-blur)) saturate(var(--flads-comp-card-backdrop-sat)) brightness(var(--flads-comp-card-backdrop-bright)) contrast(var(--flads-comp-card-backdrop-contrast)) !important;
    transition:transform .46s cubic-bezier(.22,1,.36,1),box-shadow .36s ease,border-color .36s ease !important;
}
body.flads-composer-active.flads-part-cards :is(.flads-card,#services [data-tilt],#services .fl-svc-card,.nr-portfolio-item,.fl-project-card,#areas-grid>div,.fl-area-card,#cta-grid>div,.fl-cta-card,#testimonials blockquote,.fl-testimonial-card,.fl-review-summary,.fl-process-step,.fl-why-item,.fl-trust-item)::before {
    content:'';position:absolute;inset:-1px;z-index:3;pointer-events:none;border-radius:inherit;
    background:
        radial-gradient(420px circle at var(--flads-card-x,20%) var(--flads-card-y,0%),var(--flads-comp-card-shine-color),transparent 62%),
        repeating-radial-gradient(circle at 12% 18%,rgba(255,255,255,.14) 0 1px,transparent 1px 4px);
    opacity:calc(var(--flads-comp-card-highlight) * .92 + var(--flads-comp-card-noise) * 1.45);
    filter:blur(var(--flads-comp-card-shine-blur));transition:opacity .3s ease;mix-blend-mode:screen;
}
body.flads-composer-active.flads-part-cards :is(.flads-card,#services [data-tilt],#services .fl-svc-card,.nr-portfolio-item,.fl-project-card,#areas-grid>div,.fl-area-card,#cta-grid>div,.fl-cta-card,#testimonials blockquote,.fl-testimonial-card,.fl-review-summary,.fl-process-step,.fl-why-item,.fl-trust-item)::after {
    content:'';position:absolute;inset:0;z-index:4;pointer-events:none;border-radius:inherit;padding:1px;
    background:linear-gradient(var(--flads-comp-card-shine-angle),var(--flads-comp-card-border),var(--flads-comp-card-shine-color),transparent 48%,var(--flads-comp-card-edge-glow-color));
    -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.78;
}
body.flads-composer-active.flads-part-cards :is(.flads-card,#services [data-tilt],#services .fl-svc-card,.nr-portfolio-item,.fl-project-card,#areas-grid>div,.fl-area-card,#cta-grid>div,.fl-cta-card,#testimonials blockquote,.fl-testimonial-card,.fl-review-summary,.fl-process-step,.fl-why-item,.fl-trust-item):hover {
    transform:translateY(var(--flads-comp-card-lift-neg)) !important;
    box-shadow:
        var(--flads-comp-card-outer-shadow-x) calc(var(--flads-comp-card-outer-shadow-y) + 7px) calc(var(--flads-comp-card-outer-shadow-blur) + 16px) var(--flads-comp-card-outer-shadow-spread) var(--flads-comp-card-outer-shadow-color),
        0 calc(var(--flads-comp-card-depth-shadow-y) + 4px) calc(var(--flads-comp-card-depth-shadow-blur) + 16px) var(--flads-comp-card-depth-shadow-color),
        0 0 calc(var(--flads-comp-card-edge-glow-blur) + 14px) var(--flads-comp-card-edge-glow-color),
        0 0 calc(var(--flads-comp-card-legacy-glow-blur) + 16px) var(--flads-comp-card-legacy-glow),
        inset var(--flads-comp-card-inner-shadow-x) var(--flads-comp-card-inner-shadow-y) var(--flads-comp-card-inner-shadow-blur) var(--flads-comp-card-inner-shadow-spread) var(--flads-comp-card-inner-shadow-color),
        inset 0 0 calc(var(--flads-comp-card-inner-glow-blur) + 7px) var(--flads-comp-card-inner-glow-spread) var(--flads-comp-card-inner-glow-color) !important;
}
body.flads-composer-active.flads-part-cards :is(.flads-card,#services [data-tilt],#services .fl-svc-card,.nr-portfolio-item,.fl-project-card,#areas-grid>div,.fl-area-card,#cta-grid>div,.fl-cta-card,#testimonials blockquote,.fl-testimonial-card,.fl-review-summary,.fl-process-step,.fl-why-item,.fl-trust-item) :is(h2,h3,h4,strong,.nr-display) { color:var(--flads-comp-card-text) !important; }
body.flads-composer-active.flads-part-cards :is(.flads-card,#services [data-tilt],#services .fl-svc-card,.nr-portfolio-item,.fl-project-card,#areas-grid>div,.fl-area-card,#cta-grid>div,.fl-cta-card,#testimonials blockquote,.fl-testimonial-card,.fl-review-summary,.fl-process-step,.fl-why-item,.fl-trust-item) :is(p,li,small) { color:var(--flads-comp-card-muted) !important; }

/* Independent section backgrounds. Image and overlay are separate optical layers. */
body.flads-composer-active.flads-part-backgrounds .flads-section-bg-applied,
body.flads-composer-active.flads-part-backgrounds [data-flads-section-bg] {
    position:relative !important;isolation:isolate;
}
body.flads-composer-active.flads-part-backgrounds :is(#services,#why-us,#process,#portfolio,#testimonials,#areas,#cta).flads-section-bg-applied::before {
    display:none !important;
}
body.flads-composer-active.flads-part-backgrounds .flads-section-image-layer,
body.flads-composer-active.flads-part-backgrounds .flads-section-overlay-layer {
    position:absolute;inset:0;pointer-events:none;border-radius:inherit;transform-origin:center center;
}
body.flads-composer-active.flads-part-backgrounds .flads-section-image-layer { z-index:0; }
body.flads-composer-active.flads-part-backgrounds .flads-section-overlay-layer { z-index:1; }
body.flads-composer-active.flads-part-backgrounds [data-flads-section-bg] > :not(.flads-section-image-layer):not(.flads-section-overlay-layer) {
    position:relative;z-index:2;
}
body.flads-composer-active.flads-part-backgrounds .flads-composer-hero-media { overflow:hidden;isolation:isolate; }
body.flads-composer-active.flads-part-backgrounds .flads-composer-hero-media > :not(.flads-section-image-layer):not(.flads-section-overlay-layer):not(.flads-hero-veil):not(.flads-hero-theme-art) { z-index:0; }
body.flads-composer-active.flads-part-backgrounds .flads-composer-hero-media > .flads-hero-theme-art { z-index:1; }
body.flads-composer-active.flads-part-backgrounds .flads-composer-hero-media > .flads-section-image-layer { z-index:2; }
body.flads-composer-active.flads-part-backgrounds .flads-composer-hero-media > .flads-section-overlay-layer { z-index:3; }
body.flads-composer-active.flads-part-backgrounds .flads-composer-hero-media > .flads-hero-veil { z-index:4; }

/* Full mode custom surfaces must win over the original theme-specific card refinements. */
body.flads-composer-full.flads-part-cards .flads-card { --flads-radius:var(--flads-comp-card-radius); }

/* Accessible focus remains visible regardless of preset. */
body.flads-composer-active.flads-part-buttons :is(a,button):focus-visible {
    outline:3px solid rgba(var(--flads-accent-rgb),.38) !important;outline-offset:3px !important;
}

@media (max-width: 720px) {
    body.flads-composer-active.flads-part-buttons .nr-btn { --flads-comp-btn-lift:2px; }
    body.flads-composer-active.flads-part-cards .flads-card { --flads-comp-card-lift:3px; }
}

@media (prefers-reduced-motion: reduce) {
    body.flads-composer-active.flads-part-buttons .nr-btn,
    body.flads-composer-active.flads-part-cards .flads-card { animation:none !important;transition:none !important; }
    body.flads-composer-active.flads-part-buttons .nr-btn::after { display:none !important; }
}

/* In Selective mode the base JS still discovers hero nodes for editor compatibility.
   Keep its injected layers inert unless the Hero module is actually enabled. */
body.flads-selective.flads-part-hero-off .flads-hero-card,
body.flads-selective.flads-part-hero-off .flads-hero-veil { display:none !important; }

/* When Background Director is enabled, OFF means no automatic section art.
   Hero is deliberately excluded: #hero::before belongs to the independent
   "Theme art blended into hero" control and must never be killed here. */
body.flads-composer-active.flads-part-backgrounds :is(#trust,#services,#why-us,#process,#portfolio,#testimonials,#areas,#cta,.flads-trustbar).flads-section-bg-disabled::before {
    background-image:none !important;
    opacity:0 !important;
}
