/*
 * Lux hero — the approved hero composition, reusable on any page.
 *
 * Self-contained by design: every rule is scoped to .plab-lux, and the block
 * declares its own tokens rather than reading the page's. That is what lets the
 * same hero drop onto templates whose surrounding sheets (home-polish.css, the
 * per-page sales/rental sheets, WooDmart, Elementor) disagree about colour,
 * type scale and spacing — none of them can reach inside.
 *
 * Enqueued after every page-level sheet (see Assets::enqueueLuxHero), so it
 * wins the cascade without needing !important on layout properties.
 *
 * Markup: template-parts/components/lux-hero.php
 */

.plab-icon-sprite {
    position: absolute;
    width: 0;
    height: 0;
    overflow: hidden;
    pointer-events: none;
}

.plab-lux {
    --lux-dark-900: var(--pharma-950);
    --lux-dark-800: var(--pharma-900);
    --lux-dark-700: var(--pharma-800);
    --lux-accent: var(--mint-500);
    --lux-accent-bright: var(--mint-400);
    --lux-accent-deep: var(--mint-500);
    --lux-mint: var(--mint-400);
    --lux-text: var(--white);
    --lux-muted: var(--text-secondary-dark);
    --lux-line: rgba(50, 172, 145, .34);
    --lux-mo: .32s cubic-bezier(.22, .61, .36, 1);
    position: relative;
    isolation: isolate;
    overflow: hidden;
    padding: clamp(48px, 6vw, 84px) 0 clamp(40px, 5vw, 64px);
    background:
    radial-gradient(120% 90% at 78% 34%, rgba(8, 58, 52, .55) 0%, transparent 62%),
    linear-gradient(168deg, var(--lux-dark-900) 0%, var(--lux-dark-800) 46%, var(--pharma-850) 100%);
    background-color: var(--lux-dark-900);
    color: var(--lux-text);
}

.plab-lux .plab-lux__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background:
    radial-gradient(58% 44% at 74% 74%, rgba(88, 212, 184, .16) 0%, transparent 70%),
    radial-gradient(46% 38% at 20% 12%, rgba(50, 172, 145, .1) 0%, transparent 72%);
}

.plab-lux .plab-lux__floor {
    position: absolute;
    left: 0;
    right: 0;
    bottom: clamp(150px, 17vw, 232px);
    height: 1px;
    z-index: 0;
    pointer-events: none;
    background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(50, 172, 145, .28) 26%,
    rgba(88, 212, 184, .5) 58%,
    rgba(50, 172, 145, .18) 84%,
    transparent 100%
    );
}

.plab-lux .plab-lux__shell {
    width: min(100% - 48px, 1320px);
    margin-inline: auto;
}

@media (max-width: 640px) {
    .plab-lux .plab-lux__shell {
        width: min(100% - 32px, 1320px);
    }

}

.plab-lux .plab-lux__inner {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1.18fr) minmax(252px, .6fr) minmax(0, 1.08fr);
    align-items: center;
    column-gap: clamp(24px, 3vw, 48px);
}

@media (min-width: 1181px) {
    body.home .plab-lux .plab-lux__inner {
        grid-template-columns: minmax(0, 1.16fr) minmax(272px, .66fr) minmax(0, 1.05fr);
    }

}

body.home .plab-lux .plab-lux__rail {
    --lux-rail-icon-size: 60px;
    --lux-rail-gap: clamp(30px, 3.2vw, 44px);
    width: min(100%, 312px);
    max-width: 100%;
    justify-self: center;
    transform: translateX(clamp(18px, 2vw, 30px));
}

.plab-lux .plab-lux__inner--no-rail {
    grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
}

.plab-lux .plab-lux__inner--reverse {
    grid-template-columns: minmax(0, 1.08fr) minmax(246px, .6fr) minmax(0, 1.18fr);
}

.plab-lux .plab-lux__inner--reverse.plab-lux__inner--no-rail {
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
}

.plab-lux .plab-lux__inner--reverse .plab-lux__stage {
    order: -1;
}

.plab-lux .plab-lux__inner--reverse .plab-lux__rail {
    order: 0;
}

.plab-lux .plab-lux__inner--reverse .plab-lux__copy {
    order: 1;
}

.plab-lux .plab-lux__eyebrow {
    display: inline-block;
    margin: 0 0 clamp(20px, 2.4vw, 30px);
    padding: 11px 22px;
    border: 1px solid var(--lux-accent);
    border-radius: 6px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--lux-accent-bright);
}

.plab-lux .plab-lux__title {
    margin: 0;
    font-family: var(--plab-font, var(--font-sans));
    font-weight: 600;
    font-size: clamp(30px, 3.35vw, var(--lux-title-fit, 50px));
    line-height: 1.1;
    letter-spacing: .005em;
    text-transform: uppercase;
    color: var(--lux-text);
}

.plab-lux .plab-lux__title-line {
    display: block;
    white-space: nowrap;
    hyphens: none;
}

.plab-lux .plab-lux__title-line--accent {
    color: var(--lux-accent-bright);
    background: linear-gradient(96deg, var(--mint-400) 0%, var(--mint-500) 52%, var(--mint-400) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

.plab-lux .plab-lux__ornament {
    display: flex;
    align-items: center;
    gap: 12px;
    width: min(280px, 100%);
    margin: clamp(20px, 2.4vw, 30px) 0 clamp(22px, 2.6vw, 32px);
}

.plab-lux .plab-lux__ornament-rule {
    flex: 1;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--lux-accent), transparent);
}

.plab-lux .plab-lux__ornament-mark {
    position: relative;
    width: 7px;
    height: 7px;
    flex: none;
    transform: rotate(45deg);
    border: 1px solid var(--lux-accent);
}

.plab-lux .plab-lux__ornament-mark::before,
.plab-lux .plab-lux__ornament-mark::after {
    content: "";
    position: absolute;
    top: 50%;
    width: 4px;
    height: 4px;
    margin-top: -2px;
    border: 1px solid var(--lux-accent);
}

.plab-lux .plab-lux__ornament-mark::before {
    left: -11px;
}

.plab-lux .plab-lux__ornament-mark::after {
    right: -11px;
}

.plab-lux .plab-lux__lead {
    max-width: 46ch;
    margin: 0 0 clamp(26px, 3vw, 38px);
    font-size: clamp(15px, 1.05vw, 16.5px);
    line-height: 1.72;
    color: var(--lux-muted);
}

.plab-lux .plab-lux__notice {
    margin: 0 0 clamp(22px, 2.6vw, 32px);
    padding: 16px 20px;
    max-width: 52ch;
    border-left: 2px solid var(--lux-accent);
    border-radius: 0 6px 6px 0;
    background: rgba(50, 172, 145, .07);
    font-size: 13.5px;
    line-height: 1.62;
    color: var(--text-soft-dark);
}

.plab-lux .plab-lux__notice strong {
    display: block;
    margin-bottom: 6px;
    color: var(--lux-accent-bright);
}

.plab-lux .plab-lux__notice p {
    margin: 0;
}

.plab-lux .plab-lux__notice a {
    color: var(--lux-accent-bright);
    text-decoration: underline;
    text-underline-offset: 3px;
}

.plab-lux .plab-lux__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
}

body.home .plab-lux .plab-lux__actions {
    margin-top: clamp(22px, 2.4vw, 34px);
}

.plab-lux .plab-lux__btn {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    min-height: 58px;
    padding: 0 26px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    text-decoration: none;
    transition:
    transform var(--lux-mo),
    box-shadow var(--lux-mo),
    background-color var(--lux-mo),
    border-color var(--lux-mo);
}

@media (min-width: 821px) {
    body.home .plab-lux .plab-lux__copy {
        padding-inline-start: 14px;
    }

    body.home .plab-lux .plab-lux__actions {
        flex-wrap: nowrap;
        gap: 12px;
        margin-inline-start: -14px;
    }

    body.home .plab-lux .plab-lux__btn {
        min-height: 48px;
        padding-inline: 30px;
        font-size: 12px;
        letter-spacing: .07em;
    }

}

.plab-lux .plab-lux__btn:hover,
.plab-lux .plab-lux__btn:focus-visible {
    transform: translateY(-2px);
}

.plab-lux .plab-lux__btn-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    flex: none;
}

.plab-lux .plab-lux__btn-icon svg {
    width: 100%;
    height: 100%;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.6;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.plab-lux .plab-lux__btn-icon--ring {
    width: 26px;
    height: 26px;
    border: 1px solid currentColor;
    border-radius: 50%;
}

.plab-lux .plab-lux__btn-icon--ring svg {
    width: 14px;
    height: 14px;
    stroke: none;
    fill: currentColor;
}

.plab-lux .plab-lux__btn--primary {
    color: var(--text-primary-light);
    border: 1px solid var(--lux-accent-bright);
    background: linear-gradient(135deg, var(--mint-300) 0%, var(--mint-400) 58%, var(--mint-500) 100%);
    box-shadow: 0 14px 34px -18px rgba(50, 172, 145, .9);
}

.plab-lux .plab-lux__btn--primary:hover,
.plab-lux .plab-lux__btn--primary:focus-visible {
    box-shadow: 0 20px 42px -18px rgba(50, 172, 145, 1);
}

.plab-lux .plab-lux__btn--ghost {
    color: var(--lux-accent-bright);
    border: 1px solid var(--lux-line);
    background: rgba(0, 27, 25, .55);
}

.plab-lux .plab-lux__btn--ghost:hover,
.plab-lux .plab-lux__btn--ghost:focus-visible {
    border-color: var(--lux-accent);
    background: rgba(50, 172, 145, .1);
}

.plab-lux .plab-lux__rail {
    --lux-rail-icon-size: 56px;
    --lux-rail-gap: clamp(26px, 3vw, 40px);
    position: relative;
    isolation: isolate;
    display: grid;
    gap: var(--lux-rail-gap);
    margin: 0;
    padding: 0;
    list-style: none;
}

.plab-lux .plab-lux__rail::after {
    content: "";
    position: absolute;
    z-index: 0;
    left: calc(var(--lux-rail-icon-size) / 2);
    top: calc(var(--lux-rail-icon-size) / 2);
    width: 6px;
    height: 13px;
    transform: translate(-50%, -50%);
    border-radius: 999px;
    background: linear-gradient(180deg, transparent 0%, var(--mint-300) 48%, transparent 100%);
    box-shadow: 0 0 12px 2px rgba(154, 234, 210, .62);
    opacity: 0;
    animation: plabLuxRailSpark 4.8s cubic-bezier(.45, 0, .2, 1) infinite;
    pointer-events: none;
}

@keyframes plabLuxRailSpark {
    0%, 6% {
        top: calc(var(--lux-rail-icon-size) / 2);
        opacity: 0;
    }
    12% {
        opacity: .95;
    }
    88% {
        top: calc(100% - (var(--lux-rail-icon-size) / 2));
        opacity: .95;
    }
    94%, 100% {
        top: calc(100% - (var(--lux-rail-icon-size) / 2));
        opacity: 0;
    }
}

.plab-lux .plab-lux__rail-item {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: 16px;
}

.plab-lux .plab-lux__rail-icon {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--lux-rail-icon-size);
    height: var(--lux-rail-icon-size);
    flex: none;
    border: 1px solid rgba(50, 172, 145, .5);
    border-radius: 50%;
    background:
    radial-gradient(circle at 50% 38%, rgba(50, 172, 145, .16) 0%, var(--pharma-900) 68%);
    background-color: var(--lux-dark-800);
    color: var(--lux-accent-bright);
    box-shadow:
    0 0 0 5px rgba(50, 172, 145, .07),
    0 12px 26px -12px rgba(0, 0, 0, .65);
    transition: border-color 220ms ease, box-shadow 220ms ease, transform 220ms ease;
}

@media (hover: hover) and (pointer: fine) {
    .plab-lux .plab-lux__rail-item:hover .plab-lux__rail-icon {
        transform: scale(1.05);
        border-color: rgba(154, 234, 210, .85);
        box-shadow:
        0 0 0 5px rgba(50, 172, 145, .14),
        0 0 24px rgba(154, 234, 210, .35),
        0 12px 26px -12px rgba(0, 0, 0, .65);
    }

}

.plab-lux .plab-lux__rail-icon svg {
    width: 25px;
    height: 25px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.5;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.plab-lux .plab-lux__rail-body {
    display: block;
    min-width: 0;
}

.plab-lux .plab-lux__rail-body strong {
    display: block;
    margin-bottom: 6px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    white-space: nowrap;
    color: var(--lux-accent-bright);
}

.plab-lux .plab-lux__rail-body small {
    display: block;
    font-size: 13px;
    line-height: 1.5;
    color: var(--lux-muted);
}

.plab-lux .plab-lux__stage {
    position: relative;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    min-width: 0;
}

.plab-lux .plab-lux__halo {
    position: absolute;
    left: 50%;
    bottom: 4%;
    width: 88%;
    height: 62%;
    transform: translateX(-50%);
    pointer-events: none;
    background: radial-gradient(
    50% 50% at 50% 62%,
    rgba(88, 212, 184, .3) 0%,
    rgba(50, 172, 145, 0.071) 46%,
    transparent 74%
    );
    filter: blur(6px);
}

.plab-lux .plab-lux__machine {
    position: relative;
    display: block;
    width: 100%;
    max-width: 600px;
    height: auto;
    filter:
    drop-shadow(0 34px 46px rgba(0, 0, 0, .62))
    drop-shadow(0 0 34px rgba(88, 212, 184, .18));
}

.plab-lux .plab-lux__stage--slider {
    align-self: stretch;
    min-height: clamp(420px, 38vw, 560px);
    aspect-ratio: 3 / 4;
    overflow: hidden;
}

.plab-lux .plab-lux__stage--slider .plab-lux__halo {
    z-index: 0;
}

.plab-lux .plab-lux__stage--slider .plab-lux__machine {
    position: absolute;
    inset: 0;
    z-index: 1;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    object-position: center;
    opacity: 0;
    visibility: hidden;
    transform: translateY(10px) scale(.985);
    filter:
    drop-shadow(0 34px 44px rgba(0, 0, 0, .56))
    drop-shadow(0 0 28px rgba(88, 212, 184, .12));
    -webkit-mask-image: none;
    mask-image: none;
    transition:
    opacity .72s ease,
    transform .9s cubic-bezier(.22, .61, .36, 1),
    visibility 0s linear .9s;
    pointer-events: none;
}

.plab-lux .plab-lux__stage--slider .plab-lux__machine.is-active {
    opacity: 1;
    visibility: visible;
    transform: translateY(0) scale(1);
    transition-delay: 0s;
}

.plab-lux .plab-lux__stage--cutout .plab-lux__machine {
    -webkit-mask-image: linear-gradient(to bottom, #000000 86%, transparent 99%);
    mask-image: linear-gradient(to bottom, #000000 86%, transparent 99%);
}

.plab-lux .plab-lux__stage--frame .plab-lux__machine {
    border-radius: 18px;
    border: 1px solid var(--lux-line);
    filter: none;
    box-shadow:
    0 30px 60px -24px rgba(0, 0, 0, .8),
    0 0 0 1px rgba(0, 21, 20, .6);
}

.plab-lux .plab-lux__stage--frame .plab-lux__halo {
    opacity: .5;
}

.plab-lux .plab-lux__pillars {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: clamp(14px, 1.4vw, 22px);
    margin: clamp(40px, 4.4vw, 64px) 0 0;
    padding: 0;
    list-style: none;
}

.plab-lux .plab-lux__pillar {
    display: flex;
    align-items: flex-start;
    gap: 18px;
    padding: 22px 22px 24px;
    border: 1px solid rgba(50, 172, 145, .22);
    border-radius: 16px;
    background: linear-gradient(155deg, rgba(0, 46, 40, .82) 0%, rgba(0, 21, 20, .82) 100%);
    transition: border-color var(--lux-mo), transform var(--lux-mo);
}

.plab-lux .plab-lux__pillar:hover {
    transform: translateY(-3px);
    border-color: rgba(50, 172, 145, .5);
}

.plab-lux .plab-lux__pillar-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    flex: none;
    border: 1px solid var(--lux-line);
    border-radius: 12px;
    background: rgba(0, 21, 20, .7);
    color: var(--lux-accent-bright);
}

.plab-lux .plab-lux__pillar-icon svg {
    width: 26px;
    height: 26px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.5;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.plab-lux .plab-lux__pillar-body {
    display: block;
    min-width: 0;
}

.plab-lux .plab-lux__pillar-body strong {
    display: block;
    margin-bottom: 8px;
    font-size: 12.5px;
    font-weight: 700;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--lux-accent-bright);
}

.plab-lux .plab-lux__pillar-body small {
    display: block;
    font-size: 13px;
    line-height: 1.58;
    color: var(--lux-muted);
}

@media (max-width: 1180px) {
    .plab-lux .plab-lux__inner {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        row-gap: clamp(28px, 4vw, 44px);
    }

    .plab-lux .plab-lux__copy {
        grid-column: 1 / -1;
    }

    body.home .plab-lux .plab-lux__rail {
        --lux-rail-icon-size: 56px;
        --lux-rail-gap: clamp(26px, 3vw, 40px);
        width: auto;
        justify-self: stretch;
        transform: none;
    }

    .plab-lux .plab-lux__pillars {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

}

@media (max-width: 820px) {
    .plab-lux--hide-actions-mobile .plab-lux__actions {
        display: none;
    }

    .plab-lux .plab-lux__inner {
        grid-template-columns: minmax(0, 1fr);
    }

    .plab-lux .plab-lux__rail {
        order: 3;
    }

    .plab-lux .plab-lux__stage {
        order: 2;
    }

    .plab-lux .plab-lux__machine {
        max-width: 420px;
        margin-inline: auto;
    }

    .plab-lux .plab-lux__stage--slider {
        width: min(100%, 420px);
        min-height: auto;
        margin-inline: auto;
    }

    .plab-lux .plab-lux__floor {
        display: none;
    }

    .plab-lux--center-rail-mobile .plab-lux__rail {
        justify-items: center;
    }

    .plab-lux--center-rail-mobile .plab-lux__rail::after {
        display: none;
    }

    .plab-lux--center-rail-mobile .plab-lux__rail-item {
        width: min(100%, 280px);
        flex-direction: column;
        align-items: center;
        justify-content: center;
        text-align: center;
    }

    .plab-lux--center-rail-mobile .plab-lux__rail-body {
        text-align: center;
    }

}

@media (max-width: 560px) {
    .plab-lux .plab-lux__pillars {
        grid-template-columns: minmax(0, 1fr);
    }

    .plab-lux .plab-lux__btn {
        width: 100%;
        justify-content: center;
    }

}

@media (prefers-reduced-motion: reduce) {
    .plab-lux .plab-lux__btn,
.plab-lux .plab-lux__pillar,
.plab-lux .plab-lux__rail-icon {
        transition: none;
    }

    .plab-lux .plab-lux__btn:hover,
.plab-lux .plab-lux__pillar:hover,
.plab-lux .plab-lux__rail-item:hover .plab-lux__rail-icon {
        transform: none;
    }

    .plab-lux .plab-lux__rail::after {
        animation: none;
        opacity: 0;
    }

    .plab-lux .plab-lux__stage--slider .plab-lux__machine {
        transition: none;
    }

}

.plab-lux .plab-lux__notice--after {
    margin: clamp(26px, 3vw, 36px) 0 0;
}

@media (max-width: 700px) {
    body.home .plab-lux .plab-lux__title {
        text-align: center;
    }

    body.home .plab-lux .plab-lux__ornament {
        display: block;
        width: 76px;
        margin-inline: auto;
    }

    body.home .plab-lux .plab-lux__ornament-rule {
        display: block;
        width: 76px;
        height: 1px;
        background: linear-gradient(90deg, transparent, var(--lux-accent) 18%, var(--lux-accent) 82%, transparent);
    }

    body.home .plab-lux .plab-lux__ornament-rule:last-child,
body.home .plab-lux .plab-lux__ornament-mark {
        display: none;
    }

    .plab-lux .plab-lux__title-line {
        white-space: normal;
        overflow-wrap: break-word;
    }

    .plab-lux .plab-lux__title {
        font-size: clamp(26px, 7.4vw, 38px);
        line-height: 1.14;
    }

}
