#cameras {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    align-items: start;      /* a card is as tall as its own image, never stretched to the row */
    gap: 10px;
    padding: 1.5rem;
    width: 100%;
    box-sizing: border-box;
}
.all_sky{
    width: 300px;
    margin: 0 auto;
}

.camera {
    margin-top: 1em;
    margin-bottom: 1em;
    display: flex;
    flex-direction: column;
    align-items: center;
    background: var(--obs-ink);   /* the card is the image's own dark; nothing pale can show under it */
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 10px 10px 5px 0px color-mix(in srgb, var(--obs-ink) 30%, transparent);
    transition: transform 0.2s;
    width: 100%; /* Let the grid determine the width */
}


.camera:hover {
    box-shadow: 0 8px 32px color-mix(in srgb, var(--obs-green-dark) 18%, transparent);
    transform: translateY(-4px) scale(1.03);
    cursor: pointer;
    transition: 0.2s;
}

/* every camera gets the same square, whatever its image's shape: the box
   is the square and the image is fitted INTO it (absolute, so a portrait
   frame like the ATLAS all-sky cannot stretch the box and the row with
   it), cropped to the square from its centre - the ATLAS circle fills the
   frame's width, so only a sliver above and below it goes */
.camera_thumbnail {
    position: relative;
    width: 100%;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    background: black;   /* the frames are transparent outside the circle: black, the sky's own tone */
}

.camera_thumbnail img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    cursor: pointer;
}

/* Adjust the title header inside the card */
.camera_title {
    background: var(--theme-bg); 
    color: var(--theme-fg);
    padding: 8px;
    font-size: 1.1rem;
    width: 100%;
    text-align: center;
    font-variant: small-caps;
}

.camera:hover .camera_title {
    background: var(--theme-bg_accent); 
    color: var(--theme-fg_accent);

}
