/* Alpine passes hub: the catalog. One card markup, two renderings:
   under 600 px a roadbook row (thumb, name, height, month strip),
   from 600 px the data card B (photo 3:2 on top), 2 columns, 3 from 900. */

/* ── Filter bar: a chip rail on phones, sticky under the fixed header from 900 ── */
.ap-fb {
    display: flex; flex-wrap: nowrap; align-items: center; gap: 8px;
    margin: 0 0 20px; padding: 10px;
    overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch;
    background: #fff; border: 1px solid var(--ap-line); border-radius: 6px;
}
.ap-fb::-webkit-scrollbar { display: none; }
.ap-fb[hidden] { display: none; }
.ap-fb__lbl {
    flex: 0 0 auto; margin: 0 2px 0 6px;
    font-size: 10px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--ap-muted);
}
.ap-fb__chip, .ap-fb__sortbtn {
    flex: 0 0 auto; min-height: 44px; padding: 0 14px;
    font: 500 13px Roboto, sans-serif; color: var(--ap-ink); white-space: nowrap; cursor: pointer;
    background: #fff; border: 1px solid var(--ap-line2); border-radius: 999px;
    touch-action: manipulation; transition: background .15s, color .15s, border-color .15s;
}
.ap-fb__chip:hover, .ap-fb__sortbtn:hover { border-color: var(--ap-ink); }
.ap-fb__chip[aria-pressed="true"] { background: var(--ap-ink); border-color: var(--ap-ink); color: #fff; }
.ap-fb__sep { flex: 0 0 auto; width: 1px; height: 26px; margin: 0 4px; background: var(--ap-line); }
.ap-fb__sort { display: flex; flex: 0 0 auto; align-items: center; gap: 4px; margin-left: auto; }
.ap-fb__sortbtn { border-color: transparent; padding: 0 10px; color: var(--ap-text); }
.ap-fb__sortbtn[aria-pressed="true"] { color: var(--ap-ink); font-weight: 700; text-decoration: underline; text-decoration-color: var(--ap-or); text-underline-offset: 4px; }

.ap-count { margin: 0 0 14px; font-size: 13px; font-weight: 500; color: var(--ap-text); }

/* ── Cards: the roadbook row first ── */
.ap-cards {
    list-style: none; margin: 0; padding: 0;
    background: #fff; border: 1px solid var(--ap-line); border-radius: 6px;
}
.ap-card {
    position: relative;
    display: grid;
    grid-template-columns: 72px minmax(0, 1fr) auto;
    grid-template-areas:
        "media cc    elev"
        "media name  elev"
        "media alt   elev"
        "strip strip strip"
        "chips chips chips";
    column-gap: 12px;
    align-items: start;
    padding: 12px;
}
.ap-card[hidden] { display: none; }
.ap-card + .ap-card { border-top: 1px solid var(--ap-line); }

.ap-card__media {
    grid-area: media; position: relative; display: block;
    width: 72px; height: 56px; overflow: hidden; border-radius: 4px; background: var(--ap-closed);
}
.ap-card__media picture { display: block; width: 100%; height: 100%; }
.ap-card__img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ap-card__tour {
    position: absolute; left: 4px; bottom: 4px;
    padding: 2px 5px; border-radius: 2px;
    font-size: 9px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
    color: #fff; background: var(--ap-or);
}
.ap-card__tour-long { display: none; }

.ap-card__cc { grid-area: cc; font-size: 10.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--ap-muted); }
.ap-card__elev { grid-area: elev; font-size: 15px; font-weight: 800; letter-spacing: -.01em; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ap-card__name { grid-area: name; margin: 2px 0 0; font-size: 17px; font-weight: 800; line-height: 1.2; letter-spacing: -.01em; }
.ap-card__name a::after { content: ""; position: absolute; inset: 0; }
.ap-card__name a:hover { text-decoration: underline; text-decoration-color: var(--ap-or); text-underline-offset: 3px; }
.ap-card__alt { grid-area: alt; margin: 2px 0 0; font-size: 12.5px; color: var(--ap-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ap-card .ap-strip { grid-area: strip; margin-top: 10px; }
.ap-card__chips { grid-area: chips; display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 0; }

.ap-chip {
    display: inline-block; padding: 4px 8px;
    font-size: 11px; font-weight: 600; letter-spacing: .04em; color: var(--ap-text);
    border: 1px solid var(--ap-line); border-radius: 2px;
}

/* ── Month strip ── */
.ap-strip { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 2px; margin: 0; padding: 0; list-style: none; }
.ap-strip__c {
    position: relative; display: flex; align-items: center; justify-content: center; height: 22px;
    font-size: 9.5px; font-weight: 700; border-radius: 2px; color: rgba(17, 18, 20, .55);
}
.ap-strip__c--open { background: var(--ap-open); color: #fff; }
.ap-strip__c--weather { background: var(--ap-weather); color: rgba(17, 18, 20, .7); }
.ap-strip__c--closed { background: var(--ap-closed); color: rgba(17, 18, 20, .45); }
.ap-strip__c.is-now { outline: 2px solid var(--ap-or); outline-offset: 1px; z-index: 1; }

.ap-empty { margin: 16px 0 0; font-size: 15px; color: var(--ap-text); }
.ap-empty[hidden] { display: none; }
.ap-empty__reset {
    margin-left: 6px; padding: 0; min-height: 44px; font: 700 14px Roboto, sans-serif; color: var(--ap-ink); cursor: pointer;
    background: none; border: 0; border-bottom: 2px solid var(--ap-or);
}

.ap-legend { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 16px 0 0; font-size: 12px; font-weight: 500; color: var(--ap-text); }
.ap-legend__sw { display: inline-block; width: 14px; height: 10px; margin-right: 6px; vertical-align: -1px; border-radius: 2px; }
.ap-legend__sw--open { background: var(--ap-open); }
.ap-legend__sw--weather { background: var(--ap-weather); }
.ap-legend__sw--closed { background: var(--ap-closed); }
.ap-legend__sw--now { outline: 2px solid var(--ap-or); outline-offset: -2px; }

/* ── The ladder: from 600 the data card ── */
@media (min-width: 600px) {
    .ap-cards {
        display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px;
        background: none; border: 0; border-radius: 0;
    }
    .ap-card {
        grid-template-columns: minmax(0, 1fr) auto;
        grid-template-areas:
            "media media"
            "cc    elev"
            "name  name"
            "alt   alt"
            "strip strip"
            "chips chips";
        /* The alt-name row takes the spare height, so strip and chips sit on the same line in
           every card of a row however long the name is. */
        grid-template-rows: auto auto auto 1fr auto auto;
        align-items: baseline;
        padding: 0 18px 12px;
        background: #fff; border: 1px solid var(--ap-line); border-radius: 6px; overflow: hidden;
        transition: box-shadow .2s;
    }
    .ap-card + .ap-card { border-top: 1px solid var(--ap-line); }
    .ap-card:hover { box-shadow: 0 12px 28px rgba(17, 18, 20, .14); }
    .ap-card__media { width: auto; height: auto; aspect-ratio: 3 / 2; margin: 0 -18px 16px; border-radius: 0; }
    .ap-card__img { transition: transform .45s ease; }
    .ap-card:hover .ap-card__img { transform: scale(1.04); }
    .ap-card__tour { left: 12px; bottom: 12px; padding: 6px 8px; font-size: 10.5px; }
    .ap-card__tour-long { display: inline; }
    .ap-card__tour-short { display: none; }
    .ap-card__elev { font-size: 20px; font-weight: 800; letter-spacing: -.02em; }
    .ap-card__name { margin: 6px 0 2px; font-size: 21px; line-height: 1.15; letter-spacing: -.015em; }
    .ap-card__alt { margin: 0; font-size: 13px; align-self: start; }
    .ap-card .ap-strip { margin-top: 14px; }
    .ap-card__chips { margin-top: 14px; }
}

@media (min-width: 900px) {
    .ap-fb { position: sticky; top: 88px; z-index: 5; flex-wrap: wrap; overflow: visible; padding: 12px; }
    .ap-fb__chip, .ap-fb__sortbtn { min-height: 38px; }
    .ap-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (prefers-reduced-motion: reduce) {
    .ap-card__img, .ap-card:hover .ap-card__img { transition: none; transform: none; }
}
