/* Product catalog page. Loaded after shared styles to own final page presentation. */
html.catalog-page {
    color-scheme: dark;
    background: var(--home-void, #000);
}

.catalog-page body {
    position: relative;
    isolation: isolate;
    overflow-x: clip;
    background: var(--home-void, #000);
    color: var(--steel);
    font-family: var(--font-body);
}

.catalog-page body::before,
.catalog-page body::after {
    content: "";
    position: fixed;
    inset: 0;
    display: block;
    pointer-events: none;
}

.catalog-page body::before {
    z-index: 0;
    background-image:
        linear-gradient(90deg, var(--home-grid-major) 1px, transparent 1px),
        linear-gradient(var(--home-grid-major) 1px, transparent 1px),
        linear-gradient(90deg, var(--home-grid-fine) 1px, transparent 1px),
        linear-gradient(var(--home-grid-fine) 1px, transparent 1px);
    background-position: center;
    background-size: 384px 384px, 384px 384px, 96px 96px, 96px 96px;
    -webkit-mask-image:
        linear-gradient(to bottom, transparent 0, #000 10%, #000 88%, transparent 100%),
        radial-gradient(ellipse 88% 68% at 50% 48%, #000 30%, transparent 100%);
    -webkit-mask-composite: source-in;
    mask-image:
        linear-gradient(to bottom, transparent 0, #000 10%, #000 88%, transparent 100%),
        radial-gradient(ellipse 88% 68% at 50% 48%, #000 30%, transparent 100%);
    mask-composite: intersect;
    opacity: 0.54;
}

.catalog-page body::after {
    z-index: 0;
    background:
        linear-gradient(112deg, transparent 8%, var(--home-light-cold) 36%, transparent 58%),
        linear-gradient(248deg, transparent 22%, var(--home-light-red) 52%, transparent 72%),
        repeating-linear-gradient(118deg, rgba(255, 255, 255, 0.009) 0 1px, transparent 1px 7px);
    opacity: 0.58;
}

.catalog-page > body > header,
.catalog-page > body > main,
.catalog-page > body > footer {
    position: relative;
    z-index: 1;
}

.catalog-page .container,
.catalog-page main.container {
    max-width: min(1500px, 94vw);
}


.catalog-page .page-main {
    padding-top: 24px;
}

.catalog-page .page-hero {
    min-height: 24vh;
    gap: 14px;
    padding: 48px 0 34px;
    border-bottom: 0;
}

.catalog-page .page-kicker {
    color: var(--signal-red);
    font-family: Consolas, "Courier New", monospace;
    font-weight: 800;
}

.catalog-page .page-hero h2,
.catalog-page .catalog-head h3,
.catalog-page .catalog-content h4 {
    color: #f5f7f8;
    font-family: Impact, "Arial Black", Arial, Helvetica, sans-serif;
    font-weight: 900;
    text-transform: uppercase;
}

.catalog-page .page-hero h2 {
    max-width: 1000px;
    font-size: clamp(48px, 8vw, 104px);
    line-height: 0.94;
}

.catalog-page .catalog-head h3 {
    font-size: clamp(42px, 5vw, 68px);
}

.catalog-page .catalog-content h4 {
    font-size: clamp(36px, 3.5vw, 54px);
    line-height: 0.92;
}

.catalog-page .page-hero p,
.catalog-page .catalog-content p {
    color: var(--steel-muted);
}

.catalog-page .catalog-filter {
    border-color: transparent;
    background: rgba(7, 9, 11, 0.74);
    color: var(--steel);
    font-family: var(--font-body);
    font-weight: 800;
}

.catalog-page .catalog-filter:hover,
.catalog-page .catalog-filter:focus-visible {
    border-color: var(--signal-red);
    background: rgba(255, 31, 69, 0.12);
    color: #fff;
    outline: 2px solid rgba(255, 31, 69, 0.35);
    outline-offset: 3px;
}

.catalog-page .catalog-filter.is-active {
    border-color: var(--signal-red);
    background: var(--signal-red);
    color: #fff;
}

.catalog-page .catalog-card {
    scroll-margin-top: clamp(100px, 12vh, 140px);
    border: 0;
    background: rgba(5, 7, 9, 0.7);
    backdrop-filter: blur(12px);
}

.catalog-page .catalog-card a {
    color: var(--steel);
}

.catalog-page .catalog-image {
    height: clamp(360px, 42vw, 560px);
    padding: 10px;
    border-bottom: 0;
    background:
        linear-gradient(rgba(255, 255, 255, 0.045) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, 0.045) 1px, transparent 1px),
        radial-gradient(circle at 50% 60%, rgba(202, 228, 245, 0.1), transparent 52%),
        rgba(2, 3, 4, 0.88);
    background-size: 42px 42px, 42px 42px, auto, auto;
    background-position: 21px 21px, 21px 21px, center, center;
}

.catalog-page .catalog-image img {
    width: 100%;
    height: 100%;
    max-width: none;
    max-height: none;
    object-fit: contain;
    filter: saturate(0.88) contrast(1.08);
    transform: none;
}

.catalog-page .catalog-card a:hover .catalog-image img,
.catalog-page .catalog-card a:focus-visible .catalog-image img {
    filter: saturate(1) contrast(1.12);
    transform: scale(1.035);
}

.catalog-page .catalog-card a:focus-visible {
    outline-color: var(--signal-red);
}

.catalog-page .catalog-content > span:first-child {
    color: var(--signal-red);
    font-family: Consolas, "Courier New", monospace;
}

.catalog-page .catalog-content dl {
    border-top: 0;
}

.catalog-page .catalog-content dt {
    color: var(--steel-muted);
    font-family: Consolas, "Courier New", monospace;
}

.catalog-page .catalog-content dd {
    color: #fff;
    font-weight: 900;
}

.catalog-page .catalog-content .catalog-card-action {
    color: var(--steel);
    font-weight: 900;
}

.catalog-page .catalog-card a:hover .catalog-card-action,
.catalog-page .catalog-card a:focus-visible .catalog-card-action {
    color: var(--signal-red);
}

@media (min-width: 1024px) {
    .catalog-page .container,
    .catalog-page main.container {
        width: 98vw;
        max-width: 1800px;
    }

    .catalog-page .catalog-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 768px) {
    .catalog-page .container,
    .catalog-page main.container {
        max-width: 100%;
        padding-left: 18px;
        padding-right: 18px;
    }

    .catalog-page .page-main {
        padding-top: 12px;
    }

    .catalog-page .page-hero {
        min-height: 0;
        padding: 38px 0 28px;
    }

    .catalog-page .page-hero h2 {
        font-size: clamp(46px, 15vw, 72px);
    }

    .catalog-page .catalog-head h3 {
        font-size: clamp(28px, 9vw, 42px);
    }

    .catalog-page body::before,
    .catalog-page body::after {
        display: none;
    }

    .catalog-page .catalog-head {
        gap: 18px;
        align-items: flex-start;
    }

    .catalog-page .catalog-filters {
        display: grid;
        width: 100%;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: stretch;
        gap: 8px;
    }

    .catalog-page .catalog-filter {
        width: 100%;
        min-width: 0;
        padding: 0 12px;
        white-space: normal;
        line-height: 1.15;
    }

    .catalog-page .catalog-image {
        height: 340px;
        padding: 8px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .catalog-page body::after {
        background:
            linear-gradient(112deg, transparent 8%, var(--home-light-cold) 36%, transparent 58%),
            linear-gradient(248deg, transparent 22%, var(--home-light-red) 52%, transparent 72%);
    }
}
