@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-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-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);
        position: sticky;
        top: calc(64px + var(--space-4));
    }

    .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);
    }

    .filter-rail {
        position: sticky;
        top: calc(64px + var(--space-4));
    }

    .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);
    }
}
