/*
 * ZEHNPro shared landing-page background
 * --------------------------------------
 * Source of truth for colors/angle: SaasPublicContentService ->
 * saas_public_page_settings (landing_background_gradient_*).
 *
 * Admin pages use a dedicated fixed background layer instead of late cascade
 * overrides. This keeps the first paint and final paint visually identical.
 */
:root {
    --zp-landing-bg-fallback: #ffffff;
    --zp-landing-background: linear-gradient(180deg, #ffffff 0%, #dff4ff 50%, #eef8ff 100%);
}

body.zp-public-page.zp-landing-page {
    background: var(--zp-landing-background);
    background-color: var(--zp-landing-bg-fallback);
    background-attachment: fixed;
}

body.zp-public-page.zp-landing-page::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background:
        linear-gradient(90deg, rgba(14, 165, 233, .055) 1px, transparent 1px),
        linear-gradient(180deg, rgba(14, 165, 233, .05) 1px, transparent 1px);
    background-size: 96px 96px;
    mask-image: linear-gradient(180deg, rgba(0, 0, 0, .32), rgba(0, 0, 0, .08) 38%, transparent 78%);
}

.zp-admin-landing-background-layer {
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background: var(--zp-landing-background);
    background-color: var(--zp-landing-bg-fallback);
}

.zp-admin-landing-background-layer::after {
    content: "";
    position: absolute;
    inset: 0;
    background:
        linear-gradient(90deg, rgba(14, 165, 233, .055) 1px, transparent 1px),
        linear-gradient(180deg, rgba(14, 165, 233, .05) 1px, transparent 1px);
    background-size: 96px 96px;
    mask-image: linear-gradient(180deg, rgba(0, 0, 0, .32), rgba(0, 0, 0, .08) 38%, transparent 78%);
}

body.zp-admin-body.zp-page-background-landing > .page {
    position: relative;
    z-index: 1;
}

/* Reusable opt-in wrapper. Child cards/grids keep their normal theme surfaces. */
.zp-content-transparent {
    background: transparent;
    background-color: transparent;
    background-image: none;
}
