@layer components {
    .listing-grid {
        display: grid;
        gap: var(--space-4);
    }

    @media (min-width: 640px) {
        .listing-grid {
            grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
        }
    }

    .listing-card {
        position: relative;
        display: grid;
        gap: var(--space-3);
        padding: var(--space-4);
        border: 1px solid var(--line);
        border-radius: var(--radius-l);
        background: var(--paper);
        text-decoration: none;
        color: var(--soil);
        transition: translate 240ms, box-shadow 240ms, border-color 240ms;
    }

    .listing-card::before {
        content: "";
        position: absolute;
        inset-block: var(--space-4);
        inset-inline-start: 0;
        width: 3px;
        border-radius: var(--radius-round);
        background: var(--sky);
        opacity: 0;
        transition: opacity 240ms;
    }

    .listing-card:hover {
        translate: 0 -2px;
        box-shadow: var(--shadow-2);
        border-color: var(--sky-tint);
    }

    .listing-card:hover::before {
        opacity: 1;
    }

    .listing-card-highlighted {
        background: var(--wheat-tint);
        border: 1px solid var(--wheat);
    }

    .promoted-notice {
        padding: var(--space-2) var(--space-3);
        border-radius: var(--radius-s);
        background: var(--haze);
        font-size: var(--size-small);
        color: var(--soil);
    }

    .promoted-notice a {
        display: inline-flex;
        align-items: center;
        min-block-size: var(--touch-target);
        margin-block: calc((1lh - var(--touch-target)) / 2);
        color: var(--sky-deep);
    }

    .listing-card-link {
        display: inline-flex;
        align-items: center;
        min-block-size: var(--touch-target);
        color: inherit;
        text-decoration: none;
    }

    .listing-card-link:hover {
        color: var(--sky-deep);
        text-decoration: underline;
    }

    .listing-card-covered {
        padding: 0;
        overflow: hidden;
    }

    .listing-card-cover {
        position: relative;
        display: block;
        aspect-ratio: 5 / 2;
        background: var(--haze);
    }

    .listing-card-cover img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: scale 320ms ease;
    }

    .listing-card-covered:hover .listing-card-cover img {
        scale: 1.04;
    }

    .listing-card-thumbed {
        display: flex;
        flex-direction: column;
        gap: var(--space-3);
        align-items: stretch;
    }

    .listing-card-thumb {
        display: block;
        flex: 0 0 auto;
        aspect-ratio: 4 / 3;
        overflow: hidden;
        border-radius: var(--radius-s);
        background: var(--haze);
    }

    .listing-card-thumb img {
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

    .listing-card-thumbed .listing-card-body {
        display: flex;
        flex-direction: column;
        gap: var(--space-2);
        min-width: 0;
        padding: 0;
    }

    .listing-card-thumbed .listing-card-title {
        display: -webkit-box;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 2;
        overflow: hidden;
        min-block-size: calc(2 * 1.3em);
        min-block-size: 2lh;
    }

    @media (min-width: 480px) {
        .listing-card-thumbed {
            flex-direction: row;
            align-items: center;
        }

        .listing-card-thumb {
            inline-size: 160px;
        }
    }

    .listing-card-badge {
        position: absolute;
        inset-block-start: var(--space-3);
        inset-inline-end: var(--space-3);
    }

    .listing-card-body {
        display: grid;
        gap: var(--space-3);
        padding: var(--space-4);
    }

    .listing-card-covered .listing-card-body {
        grid-template-rows: 2.925rem 2rem 2rem;
        align-items: start;
    }

    .listing-card-covered .listing-card-meta,
    .listing-card-covered .listing-card-footer {
        flex-wrap: nowrap;
        overflow: hidden;
        white-space: nowrap;
        align-self: center;
    }

    .listing-card-covered .listing-card-title {
        display: -webkit-box;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 2;
        overflow: hidden;
    }

    .listing-card-no-rating {
        color: var(--fog);
        font-size: var(--size-small);
    }

    .listing-card-covered::before {
        inset-block: 0;
    }

    .listing-card-title {
        font-size: 1.125rem;
        font-weight: 600;
        line-height: 1.3;
    }

    .listing-card-meta {
        display: flex;
        flex-wrap: wrap;
        gap: var(--space-2);
        align-items: center;
        color: var(--fog);
        font-size: var(--size-small);
    }

    .listing-card-excerpt {
        color: var(--soil-2);
    }

    .listing-card-footer {
        display: flex;
        flex-wrap: wrap;
        gap: var(--space-2);
        align-items: center;
        padding-block-start: var(--space-3);
        border-block-start: 1px solid var(--line);
    }

    .page-header {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        gap: var(--space-2);
        padding-block-end: var(--space-5);
        border-block-end: 2px solid var(--soil);
        margin-block-end: var(--space-6);
    }

    .page-header h1 {
        overflow-wrap: anywhere;
        hyphens: auto;
    }

    .page-header-eyebrow {
        font-family: var(--font-display);
        font-size: var(--size-micro);
        font-weight: 800;
        text-transform: uppercase;
        letter-spacing: 0.14em;
        color: var(--sky);
    }

    .page-header-lead {
        color: var(--soil-2);
        max-width: 60ch;
    }

    .form-card {
        display: grid;
        gap: var(--space-5);
        padding: var(--space-6);
        border: 1px solid var(--line);
        border-radius: var(--radius-l);
        background: var(--paper);
        box-shadow: var(--shadow-1);
        max-width: 40rem;
    }

    .form-card .field {
        max-width: none;
    }

    .form-actions {
        display: flex;
        flex-wrap: wrap;
        gap: var(--space-3);
        align-items: center;
        padding-block-start: var(--space-4);
        border-block-start: 1px solid var(--line);
    }

    .auth-shell {
        display: grid;
        gap: var(--space-6);
        max-width: 40rem;
        margin-inline: auto;
    }

    .check-email-steps {
        margin: 0;
        padding-inline-start: var(--space-5);
        display: grid;
        gap: var(--space-2);
    }

    .back-link {
        display: inline-flex;
        align-items: center;
        gap: var(--space-2);
        min-height: var(--touch-target);
        text-decoration: none;
        color: var(--sky-deep);
        font-weight: 500;
    }

    .back-link .icon {
        width: 18px;
        height: 18px;
    }

    .auth-aside {
        color: var(--fog);
        font-size: var(--size-small);
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: var(--space-1) var(--space-3);
    }

    .auth-aside a {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: var(--touch-target);
        min-width: var(--touch-target);
        padding-inline: var(--space-2);
    }

    .detail-layout {
        display: grid;
        gap: var(--space-6);
    }

    @media (min-width: 1024px) {
        .detail-layout {
            grid-template-columns: minmax(0, 1fr) 320px;
            align-items: start;
        }
    }

    .detail-aside {
        display: grid;
        gap: var(--space-4);
        padding: var(--space-5);
        border: 1px solid var(--line);
        border-radius: var(--radius-l);
        background: var(--haze);
    }

    @media (min-width: 1024px) {
        .detail-aside {
            position: sticky;
            top: calc(var(--header-height) + var(--space-4));
            max-height: calc(100vh - var(--header-height) - 2 * var(--space-4));
            max-height: calc(100dvh - var(--header-height) - 2 * var(--space-4));
            overflow-y: auto;
            scrollbar-width: thin;
            scrollbar-gutter: stable;
            scroll-padding-block-end: calc(var(--touch-target) + 2 * var(--space-2));
        }
    }

    .detail-section {
        display: grid;
        gap: var(--space-3);
        padding-block-end: var(--space-5);
    }

    .detail-section + .detail-section {
        border-block-start: 1px solid var(--line);
        padding-block-start: var(--space-5);
    }

    @media (min-width: 1024px) {
        .filter-rail {
            position: sticky;
            top: calc(var(--header-height) + var(--space-4));
            max-height: calc(100vh - var(--header-height) - 2 * var(--space-4));
            max-height: calc(100dvh - var(--header-height) - 2 * var(--space-4));
            overflow-y: auto;
            scrollbar-width: thin;
            scrollbar-gutter: stable;
            scroll-padding-block-end: calc(var(--touch-target) + 2 * var(--space-2));
        }

        .filter-rail-actions {
            position: sticky;
            bottom: 0;
            background: var(--haze);
            padding-block: var(--space-2);
            margin-block-end: calc(-1 * var(--space-2));
        }
    }

    .filter-rail-heading {
        font-family: var(--font-display);
        font-size: var(--size-micro);
        font-weight: 800;
        text-transform: uppercase;
        letter-spacing: 0.12em;
        color: var(--soil-2);
    }
}
