/* Preserved prop shell/award adapter. Canon values live in tokens.css. */
/* The fixed public navigation reserves one shared start position for every
   migrated prop route. This deliberately outranks the legacy public-shell
   clamp until that stylesheet is retired. */
body.public-ecosystem-page:has(.lz-nav) main.tsb-design-system:is(
    .ds-research-page,
    .payouts-page,
    .challenge-page,
    .rules-page,
    .spread-page,
    .offers-page,
    .rankings-page
) {
    padding-top: var(--prop-page-nav-reserve);
}

body.public-ecosystem-page.has-top-offer:not(.is-offer-collapsed):has(.lz-nav) main.tsb-design-system:is(
    .ds-research-page,
    .payouts-page,
    .challenge-page,
    .rules-page,
    .spread-page,
    .offers-page,
    .rankings-page
) {
    padding-top: calc(var(--prop-page-nav-reserve) + var(--space-2xl));
}

/* The challenge hero is intentionally denser on tablet-sized viewports while
   preserving the shared desktop and phone navigation reserves. */
@media (min-width: 641px) and (max-width: 860px) {
    body.public-ecosystem-page:has(.lz-nav) main.tsb-design-system.challenge-page {
        padding-top: calc(var(--prop-page-nav-reserve) - var(--space-lg));
    }
}

/* Comparison pages hide breadcrumbs below desktop, so they only reserve the
   fixed navigation plus a compact breathing gap instead of a second text row. */
@media (min-width: 641px) and (max-width: 980px) {
    body.public-ecosystem-page:not(.has-top-offer):has(.lz-nav) main.tsb-design-system.comparison-page,
    body.public-ecosystem-page.has-top-offer.is-offer-collapsed:has(.lz-nav) main.tsb-design-system.comparison-page {
        padding-top: 64px;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-pressure-table th,
    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-pressure-table td {
        border: 0;
        padding: 0;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-lens {
        padding-bottom: 0;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page > .container > .comparison-pick-section {
        padding-top: 36px;
    }
}

/* Mirrors --breakpoint-small. Native media queries cannot resolve a custom
   property, so the canonical 640px primitive is declared once in this shell. */
@media (max-width: 640px) {
    body.public-ecosystem-page:has(.lz-nav) main.tsb-design-system:is(
        .ds-research-page,
    .payouts-page,
        .challenge-page,
        .rules-page,
        .spread-page,
        .offers-page,
        .rankings-page
    ) {
        padding-top: var(--prop-page-nav-reserve-small);
    }

    body.public-ecosystem-page.has-top-offer:not(.is-offer-collapsed):has(.lz-nav) main.tsb-design-system:is(
        .ds-research-page,
    .payouts-page,
        .challenge-page,
        .rules-page,
        .spread-page,
        .offers-page,
        .rankings-page
    ) {
        padding-top: calc(var(--prop-page-nav-reserve-small) + var(--space-2xl));
    }

    body.public-ecosystem-page:not(.has-top-offer):has(.lz-nav) main.tsb-design-system.comparison-page,
    body.public-ecosystem-page.has-top-offer.is-offer-collapsed:has(.lz-nav) main.tsb-design-system.comparison-page {
        padding-top: 60px;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-pressure-table tbody th {
        padding-bottom: 14px;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-pressure-table tbody td:nth-of-type(2) {
        padding-top: 14px;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-pressure-table tbody td.comparison-edge {
        padding-top: 0;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-lens {
        padding-bottom: 0;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page > .container > .comparison-pick-section {
        padding-top: 28px;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-lens-reviewed {
        width: max-content;
        max-width: 100%;
        justify-items: start;
        gap: 8px;
        margin: 22px auto 0;
        text-align: left;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-lens-reviewed a {
        margin-left: 22px;
        padding-left: 0;
        border-left: 0;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-program-switcher {
        row-gap: 64px;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-program-picker + .comparison-program-picker {
        border-top: 0;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-shortlist-axis {
        place-content: start;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-full-table tbody td {
        padding: 36px 16px 18px;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-evidence-row {
        grid-template-columns: 1fr;
    }

    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-evidence-row > th,
    body.public-ecosystem-page main.tsb-design-system.comparison-page .comparison-evidence-row > td {
        grid-column: 1;
        width: auto;
        border-right: 0;
    }

}

/* The public footer is part of the prop design system, not a page exception. */
body.public-ecosystem-page.public-prop-segment:not(:has(> main.firm-intent-page--alternatives, > main.firm-intent-page--promo)) .lz-footer {
    margin-top: var(--prop-footer-margin) !important;
}

body.public-ecosystem-page.public-prop-segment:has(> main.comparison-page) .lz-footer {
    margin-top: 0 !important;
}

body.public-ecosystem-page.public-prop-segment > main.comparison-page {
    padding-bottom: 0;
}

body.public-ecosystem-page.public-prop-segment .lz-footer-hero {
    min-height: var(--prop-footer-hero-height) !important;
    padding-top: var(--prop-footer-space-start) !important;
    padding-bottom: var(--prop-footer-space-end) !important;
}

body.public-ecosystem-page.public-prop-segment .lz-footer-title {
    max-width: 18ch;
}

body.public-ecosystem-page.public-prop-segment .lz-footer-hero .lz-footer-cta.app-action-btn-primary {
    border-color: var(--prop-footer-action-border) !important;
    background: var(--color-primary) !important;
    color: var(--prop-footer-action-text) !important;
    font-weight: var(--button-weight) !important;
}

body.public-ecosystem-page.public-prop-segment .lz-footer-hero .lz-footer-cta.app-action-btn-primary:is(:hover, :focus-visible) {
    border-color: var(--prop-footer-action-border-hover) !important;
    background: var(--color-primary-hover) !important;
    color: var(--prop-footer-action-text) !important;
}

body.public-ecosystem-page.public-prop-segment .lz-footer-hero .lz-footer-secondary.app-action-btn-primary {
    border-color: var(--prop-footer-secondary-border) !important;
    background: var(--prop-footer-secondary-bg) !important;
    color: var(--prop-footer-secondary-text) !important;
    font-weight: var(--prop-footer-secondary-weight) !important;
}

body.public-ecosystem-page.public-prop-segment .lz-footer-hero .lz-footer-secondary.app-action-btn-primary:is(:hover, :focus-visible) {
    border-color: var(--prop-footer-secondary-border-hover) !important;
    background: var(--color-accent-soft) !important;
    color: var(--color-primary-hover) !important;
}

/* Data-backed prop-firm awards. These are editorial ranking markers, never
   partner labels; the two systems intentionally use separate class contracts. */
.public-prop-segment .pf-firm-awards {
    display: inline-flex;
    min-width: 0;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--award-group-gap);
    vertical-align: middle;
}

.public-prop-segment .pf-firm-mark {
    position: relative;
    display: inline-flex;
    width: max-content;
    min-width: 0;
    flex: 0 0 auto;
    align-items: center;
    margin: 0;
    line-height: 0;
    overflow: visible;
}

.public-prop-segment .pf-firm-mark > .pf-firm-awards {
    position: absolute;
    z-index: 1;
    right: var(--award-offset-inline);
    bottom: var(--award-offset-block);
    width: max-content;
    flex-wrap: nowrap;
    gap: 0;
    margin: 0;
    isolation: isolate;
}

.public-prop-segment .pf-firm-mark > .pf-firm-awards .pf-firm-award + .pf-firm-award {
    margin-inline-start: calc(var(--space-xs) * -1);
}

.public-prop-segment .pf-firm-mark .pf-firm-award {
    --pf-award-size: var(--award-logo-size);
}

/* Selected Precision insignia artwork, shared by compact rows and the gallery. */
.public-prop-segment :is(.pf-firm-award, .pf-firm-award-tooltip) {
    --pf-award-ink: var(--award-ink);
    --pf-award-glow: rgba(189, 216, 205, .24);
}

.public-prop-segment .pf-firm-award {
    --pf-award-size: var(--primitive-size-28);
    --pf-award-rotate-x: 0deg;
    --pf-award-rotate-y: 0deg;
    --pf-award-lift: 0px;
    --pf-award-scale: 1;
    --pf-award-depth: 0px;
    display: inline-flex;
    width: var(--pf-award-size);
    height: var(--pf-award-size);
    flex: 0 0 var(--pf-award-size);
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 0;
    border-radius: var(--focus-offset);
    background: transparent;
    color: var(--pf-award-ink);
    filter: var(--award-shadow) drop-shadow(0 0 6px var(--pf-award-glow));
    text-decoration: none;
    transform: translateY(var(--pf-award-lift)) rotateX(var(--pf-award-rotate-x)) rotateY(var(--pf-award-rotate-y)) scale(var(--pf-award-scale));
    transform-style: preserve-3d;
    will-change: transform, filter;
    transition: var(--award-transition);
}

.public-prop-segment :is(.pf-firm-award--fit, .pf-firm-award--gold, .pf-firm-award-tooltip--fit, .pf-firm-award-tooltip--gold) {
    --pf-award-ink: var(--award-ink-gold);
    --pf-award-glow: rgba(210, 179, 108, .38);
}

.public-prop-segment :is(.pf-firm-award--neutral, .pf-firm-award-tooltip--neutral) {
    --pf-award-ink: var(--award-ink-neutral);
    --pf-award-glow: rgba(183, 195, 200, .26);
}

.public-prop-segment .pf-firm-award-mark {
    position: relative;
    display: block;
    width: 100%;
    height: 100%;
    flex: none;
    color: var(--pf-award-ink);
}

.public-prop-segment .pf-firm-award-mark .pf-firm-award-image {
    display: block;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: contain;
    filter: contrast(.94) saturate(.92);
    transform: translateZ(var(--pf-award-depth)) scale(var(--pf-award-optical-scale, 1));
    transform-origin: center;
    transition: transform 120ms ease-out;
}

.public-prop-segment [data-firm-award="highest-fit"] { --pf-award-optical-scale: 1.08; }
.public-prop-segment [data-firm-award="futures-fit"] {
    --pf-award-optical-scale: 1.05;
    --pf-award-glow: rgba(68, 178, 230, .34);
}
.public-prop-segment [data-firm-award="forex-fit"] {
    --pf-award-optical-scale: .96;
    --pf-award-glow: rgba(145, 126, 235, .28);
}
.public-prop-segment [data-firm-award="verified-discount"] {
    --pf-award-optical-scale: .98;
    --pf-award-glow: rgba(216, 150, 94, .28);
}
.public-prop-segment [data-firm-award="rule-flexibility"] {
    --pf-award-optical-scale: .96;
    --pf-award-glow: rgba(73, 201, 164, .28);
}
.public-prop-segment [data-firm-award="no-dll-fit"] {
    --pf-award-optical-scale: 1.05;
    --pf-award-glow: rgba(98, 196, 183, .28);
}
.public-prop-segment [data-firm-award="platform-choice"] { --pf-award-glow: rgba(220, 170, 72, .36); }
.public-prop-segment [data-firm-award="scale-leader"] {
    --pf-award-optical-scale: 1.08;
    --pf-award-glow: rgba(198, 145, 103, .28);
}

.public-prop-segment .pf-firm-award:hover {
    --pf-award-lift: -1px;
    --pf-award-scale: 1.06;
    --pf-award-depth: 4px;
    opacity: 1;
    filter: var(--award-shadow-hover) drop-shadow(0 0 10px var(--pf-award-glow));
}
.public-prop-segment .pf-firm-award:focus-visible {
    outline: var(--award-focus-outline);
    outline-offset: var(--focus-offset);
}

.public-prop-segment .pf-firm-award-tooltip {
    position: fixed;
    z-index: var(--award-layer);
    display: grid;
    width: max-content;
    max-width: var(--award-tooltip-max-width);
    grid-template-columns: var(--award-tooltip-columns);
    align-items: center;
    gap: var(--award-tooltip-gap);
    padding: var(--award-tooltip-padding);
    border: var(--award-tooltip-border);
    border-radius: var(--award-tooltip-radius);
    background: var(--award-tooltip-bg);
    box-shadow: var(--award-tooltip-shadow);
    color: var(--award-tooltip-text);
    font-family: var(--font-family);
    pointer-events: none;
    backdrop-filter: blur(14px);
    transform-origin: 50% calc(100% + 9px);
    animation: pf-award-tooltip-enter 140ms cubic-bezier(.2,.8,.2,1) both;
}

.public-prop-segment .pf-firm-award-tooltip[hidden] { display: none; }
.public-prop-segment .pf-firm-award-tooltip strong {
    color: inherit;
    font-size: var(--primitive-size-14);
    font-weight: var(--award-tooltip-weight);
    line-height: 1.4;
}

.public-prop-segment .pf-firm-award-tooltip-mark {
    display: block;
    width: var(--award-tooltip-mark-size);
    height: var(--award-tooltip-mark-size);
}

.public-prop-segment .pf-firm-award-tooltip-copy { min-width: 0; }

@keyframes pf-award-tooltip-enter {
    from { opacity: 0; transform: translateY(3px) scale(.97); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

@media (prefers-reduced-motion: reduce) {
    .public-prop-segment .pf-firm-award,
    .public-prop-segment .pf-firm-award-mark .pf-firm-award-image {
        transition: none;
    }

    .public-prop-segment .pf-firm-award-tooltip {
        animation: none;
    }
}

@media (max-width: 520px) { .public-prop-segment .pf-firm-award { --pf-award-size:var(--primitive-size-24); } .public-prop-segment .pf-firm-mark .pf-firm-award { --pf-award-size:var(--primitive-size-20); } }
