body:has(.needz-brand-index) main,
body.needz-brand-index-page main {
    overflow: visible;
}

.needz-brand-index {
    --needz-brand-border: color-mix(
        in srgb,
        var(--tp-text-body, #55585b) 20%,
        transparent
    );
    --needz-brand-muted: color-mix(
        in srgb,
        var(--tp-text-body, #55585b) 58%,
        transparent
    );
    --needz-brand-sticky-offset: 112px;
    color: var(--tp-heading-primary, #010f1c);
    width: 100%;
}

.needz-brand-index,
.needz-brand-index * {
    box-sizing: border-box;
}

.needz-brand-index__layout {
    display: grid;
    gap: clamp(64px, 7vw, 108px);
    grid-template-columns: minmax(220px, 1fr) minmax(0, 3fr);
    width: 100%;
}

.needz-brand-index__sidebar {
    min-width: 0;
}

.needz-brand-index__sidebar-inner {
    position: sticky;
    top: var(--needz-brand-sticky-offset);
}

.needz-brand-index__search {
    position: relative;
}

.needz-brand-index[data-needz-brand-index] .needz-brand-index__search-input {
    appearance: none;
    background: transparent;
    border: 1px solid var(--needz-brand-border);
    border-radius: 0;
    color: var(--tp-heading-primary, #010f1c);
    font-family: var(--primary-font);
    font-size: 14px;
    height: 44px;
    line-height: 1.4;
    outline: 0;
    padding: 0 44px 0 14px;
    transition: border-color 160ms ease;
    width: 100%;
}

.needz-brand-index[data-needz-brand-index]
    .needz-brand-index__search-input::-webkit-search-cancel-button {
    cursor: pointer;
}

.needz-brand-index[data-needz-brand-index]
    .needz-brand-index__search-input::placeholder {
    color: var(--needz-brand-muted);
    opacity: 1;
}

.needz-brand-index[data-needz-brand-index]
    .needz-brand-index__search-input:hover {
    border-color: color-mix(
        in srgb,
        var(--tp-heading-primary, #010f1c) 38%,
        transparent
    );
}

.needz-brand-index[data-needz-brand-index]
    .needz-brand-index__search-input:focus-visible {
    border-color: var(--tp-heading-primary, #010f1c);
    box-shadow: 0 0 0 1px var(--tp-heading-primary, #010f1c);
}

.needz-brand-index__search-icon {
    color: var(--tp-heading-primary, #010f1c);
    inset-inline-end: 14px;
    pointer-events: none;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
}

.needz-brand-index__alphabet {
    display: grid;
    gap: 4px 12px;
    grid-template-columns: repeat(7, minmax(22px, 1fr));
    margin-top: 28px;
}

.needz-brand-index__letter {
    align-items: center;
    appearance: none;
    background: transparent;
    border: 0;
    border-radius: 0;
    color: var(--tp-heading-primary, #010f1c);
    cursor: pointer;
    display: inline-flex;
    font-family: var(--primary-font);
    font-size: 14px;
    gap: 3px;
    height: 32px;
    justify-content: flex-start;
    line-height: 1;
    padding: 0;
    position: relative;
    text-transform: uppercase;
}

.needz-brand-index__letter-dot {
    background: currentColor;
    border-radius: 50%;
    flex: 0 0 4px;
    height: 4px;
    opacity: 0;
    pointer-events: none;
    transform: translateY(3px) scale(0.5);
    transform-origin: center;
    transition:
        transform 0.2s cubic-bezier(0.22, 1, 0.36, 1),
        opacity 0.12s ease;
    width: 4px;
    will-change: transform, opacity;
}

.needz-brand-index__letter:hover .needz-brand-index__letter-dot,
.needz-brand-index__letter.is-active .needz-brand-index__letter-dot {
    opacity: 1;
    transform: translateY(3px) scale(1);
}

.needz-brand-index__alphabet:has(.needz-brand-index__letter:hover)
    .needz-brand-index__letter.is-active:not(:hover)
    .needz-brand-index__letter-dot {
    opacity: 0;
    transform: translateY(3px) scale(0.5);
}

.needz-brand-index__letter:focus-visible {
    outline: 1px solid currentColor;
    outline-offset: 3px;
}

.needz-brand-index__letter:disabled,
.needz-brand-index__letter[aria-disabled="true"] {
    color: var(--needz-brand-muted);
    cursor: default;
    opacity: 0.52;
}

.needz-brand-index__letter:disabled .needz-brand-index__letter-dot,
.needz-brand-index__letter[aria-disabled="true"]
    .needz-brand-index__letter-dot {
    visibility: hidden;
}

.needz-brand-index__featured {
    margin-top: 42px;
}

.needz-brand-index__featured-image {
    aspect-ratio: 4 / 5;
    background: color-mix(
        in srgb,
        var(--tp-text-body, #55585b) 5%,
        transparent
    );
    display: block;
    overflow: hidden;
    width: 100%;
}

.needz-brand-index__featured-img {
    display: block;
    height: 100%;
    object-fit: cover;
    transition: opacity 180ms ease;
    width: 100%;
}

.needz-brand-index__featured-image:hover .needz-brand-index__featured-img {
    opacity: 0.9;
}

.needz-brand-index__featured-image:focus-visible,
.needz-brand-index__featured-name a:focus-visible,
.needz-brand-index__brand-link:focus-visible {
    outline: 1px solid var(--tp-heading-primary, #010f1c);
    outline-offset: 3px;
}

.needz-brand-index__featured-label {
    color: var(--needz-brand-muted);
    font-family: var(--primary-font);
    font-size: 12px;
    line-height: 1.4;
    margin: 16px 0 5px;
}

.needz-brand-index__featured-name {
    font-family: var(--primary-font);
    font-size: 17px;
    font-weight: 500;
    line-height: 1.35;
    margin: 0;
}

.needz-brand-index__featured-name a {
    color: inherit;
    text-decoration: none;
}

.needz-brand-index__directory {
    min-width: 0;
}

.needz-brand-index__group {
    border-top: 1px solid var(--needz-brand-border);
    padding: 46px 0 66px;
    scroll-margin-top: calc(var(--needz-brand-sticky-offset) + 4px);
}

.needz-brand-index__group:first-child {
    border-top: 0;
    padding-top: 0;
}

.needz-brand-index__group-title {
    color: var(--tp-heading-primary, #010f1c);
    font-family: var(--primary-font);
    font-size: clamp(52px, 4.2vw, 64px);
    font-weight: 600;
    letter-spacing: -0.035em;
    line-height: 0.95;
    margin: 0 0 34px;
    text-transform: uppercase;
}

.needz-brand-index[data-needz-brand-index] .needz-brand-index__brands {
    column-count: 3;
    column-gap: clamp(28px, 4vw, 64px);
    list-style: none;
    margin: 0;
    padding: 0;
}

.needz-brand-index[data-needz-brand-index] .needz-brand-index__brand {
    break-inside: avoid;
    line-height: 1.4;
    margin: 0 0 11px;
    padding: 0;
}

.needz-brand-index__brand-link {
    color: var(--tp-heading-primary, #010f1c);
    display: inline;
    font-family: var(--primary-font);
    font-size: 15px;
    font-weight: 400;
    line-height: 1.4;
    overflow-wrap: anywhere;
    text-decoration: none;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    transition: opacity 150ms ease;
}

.needz-brand-index__brand-link:hover {
    opacity: 0.62;
    text-decoration: underline;
}

.needz-brand-index__empty {
    border-top: 1px solid var(--needz-brand-border);
    color: var(--needz-brand-muted);
    font-family: var(--primary-font);
    font-size: 15px;
    margin: 0;
    padding: 48px 0 96px;
}

@media (min-width: 1200px) {
    .needz-brand-index__sidebar-inner {
        max-height: calc(100vh - var(--needz-brand-sticky-offset) - 24px);
        overflow-y: auto;
        overscroll-behavior: contain;
        padding-inline-end: 4px;
        scrollbar-width: thin;
    }
}

@media (max-width: 1199px) {
    .needz-brand-index__layout {
        gap: 64px;
        grid-template-columns: minmax(0, 1fr);
    }

    .needz-brand-index__sidebar-inner {
        display: grid;
        gap: 28px 44px;
        grid-template-columns: minmax(260px, 0.9fr) minmax(300px, 1.1fr);
        position: static;
    }

    .needz-brand-index__alphabet {
        margin-top: 0;
    }

    .needz-brand-index__featured {
        grid-column: 1;
        margin-top: 4px;
        max-width: 260px;
    }

    .needz-brand-index[data-needz-brand-index] .needz-brand-index__brands {
        column-count: 2;
    }

    .needz-brand-index__group-title {
        font-size: 50px;
    }
}

@media (max-width: 767px) {
    .needz-brand-index__layout {
        gap: 48px;
    }

    .needz-brand-index__sidebar-inner {
        display: block;
    }

    .needz-brand-index[data-needz-brand-index]
        .needz-brand-index__search-input {
        height: 46px;
    }

    .needz-brand-index__alphabet {
        gap: 2px 4px;
        margin-top: 24px;
    }

    .needz-brand-index__letter {
        height: 44px;
        justify-content: center;
        min-width: 40px;
    }

    .needz-brand-index__featured {
        margin-top: 34px;
        max-width: min(100%, 240px);
    }

    .needz-brand-index__group {
        padding: 34px 0 50px;
    }

    .needz-brand-index__group:first-child {
        padding-top: 0;
    }

    .needz-brand-index__group-title {
        font-size: 42px;
        margin-bottom: 28px;
    }

    .needz-brand-index[data-needz-brand-index] .needz-brand-index__brands {
        column-count: 1;
    }

    .needz-brand-index[data-needz-brand-index] .needz-brand-index__brand {
        margin-bottom: 13px;
    }

    .needz-brand-index__brand-link {
        font-size: 15px;
    }
}

@media (min-width: 576px) and (max-width: 767px) {
    .needz-brand-index[data-needz-brand-index] .needz-brand-index__brands {
        column-count: 2;
    }
}

@media (max-width: 399px) {
    .needz-brand-index__alphabet {
        grid-template-columns: repeat(6, minmax(40px, 1fr));
    }
}

@media (prefers-reduced-motion: reduce) {
    .needz-brand-index__featured-img,
    .needz-brand-index__letter-dot,
    .needz-brand-index[data-needz-brand-index]
        .needz-brand-index__search-input {
        transition: none;
    }
}
