/* Site screenshot preview module. */
.vivo li.site-preview-row,
.death li.site-preview-row {
    margin-top: 4px;
    margin-bottom: 4px;
    padding: 0;
    overflow: visible;
    text-overflow: clip;
    white-space: normal;
}

.site-preview-summary {
    display: grid;
    grid-template-columns: auto auto minmax(0, 1fr) auto 32px;
    align-items: center;
    min-height: 38px;
    padding: 3px 5px;
    column-gap: 2px;
}

.site-preview-row.has-screenshots .site-preview-summary {
    cursor: pointer;
}

/* Offline rows omit the favorite checkbox, so their columns start at the number. */
.death .site-preview-summary {
    grid-template-columns: auto minmax(0, 1fr) auto;
}

.death .site-preview-row.has-screenshots .site-preview-summary {
    grid-template-columns: auto minmax(0, 1fr) auto 32px;
}

.site-preview-copy {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.site-preview-copy .site-main-link,
.site-preview-copy .site-tags {
    white-space: nowrap;
}

.site-preview-rating {
    white-space: nowrap;
}

.site-preview-rating .rating-link-wrap {
    display: inline;
    margin: 0;
}

.site-screenshot-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    padding: 0;
    border: 0;
    background: transparent;
    color: #555;
    cursor: pointer;
    font: inherit;
    font-size: 20px;
    line-height: 1;
}

.site-screenshot-toggle:hover {
    color: #111;
}

.site-screenshot-toggle:focus-visible {
    color: #111;
    outline: 1px solid #aaa;
}

.site-screenshot-panel {
    padding: 8px;
    border-top: 2px solid var(--border-color-panel, #c2c2c2);
    background: #fafafa;
}

.site-screenshot-panel[hidden] {
    display: none !important;
}

.site-screenshot-gallery {
    position: relative;
    max-width: 100%;
    padding: 0 26px;
}

.site-screenshot-viewport {
    overflow: hidden;
    scroll-behavior: smooth;
}

.site-screenshot-track {
    display: flex;
    gap: 6px;
}

.site-screenshot-thumb {
    position: relative;
    flex: 0 0 40%;
    min-width: 0;
    padding: 0;
    overflow: hidden;
    border: 1px solid #aaa;
    background: #ececec;
    cursor: zoom-in;
    aspect-ratio: 360 / 203;
}

.site-screenshot-thumb.is-loading::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 1;
    width: 20px;
    height: 20px;
    margin: -13px 0 0 -13px;
    border: 3px solid rgba(80, 80, 80, 0.25);
    border-top-color: #666;
    border-radius: 50%;
    pointer-events: none;
    animation: site-screenshot-spin 0.75s linear infinite;
}

.site-screenshot-thumb.is-loading img {
    opacity: 0;
}

.site-screenshot-thumb:hover,
.site-screenshot-thumb:focus-visible {
    border-color: #ff5f5f;
    outline: 2px solid rgba(255, 95, 95, 0.22);
}

.site-screenshot-thumb img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.site-screenshot-nav {
    position: absolute;
    top: 50%;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 44px;
    padding: 0;
    transform: translateY(-50%);
    border: 1px solid #bbb;
    background: rgba(255, 255, 255, 0.96);
    color: #444;
    cursor: pointer;
    font-size: 22px;
    line-height: 1;
}

.site-screenshot-prev {
    left: 0;
}

.site-screenshot-next {
    right: 0;
}

.site-screenshot-detail {
    margin: 10px 0;
    padding: 10px;
    border: var(--border-panel, 2px solid #c2c2c2);
    background: #fff;
}

.site-screenshot-detail-title {
    margin-bottom: 8px;
    font-size: 14px;
    font-weight: bold;
}

.site-screenshot-lightbox {
    position: fixed;
    inset: 0;
    z-index: 20000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 52px 54px;
    background: rgba(0, 0, 0, 0.9);
}

.site-screenshot-lightbox[hidden] {
    display: none !important;
}

.site-screenshot-lightbox-image {
    display: block;
    max-width: min(1200px, 92vw);
    max-height: 82vh;
    width: auto;
    height: auto;
    object-fit: contain;
    box-shadow: 0 2px 18px rgba(0, 0, 0, 0.45);
}

.site-screenshot-lightbox-status {
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 1;
    display: none;
    align-items: center;
    gap: 8px;
    padding: 9px 12px;
    transform: translate(-50%, -50%);
    border: 1px solid rgba(255, 255, 255, 0.45);
    background: rgba(0, 0, 0, 0.78);
    color: #fff;
    pointer-events: none;
    font-size: 14px;
    white-space: nowrap;
}

.site-screenshot-lightbox.is-loading .site-screenshot-lightbox-status,
.site-screenshot-lightbox.is-error .site-screenshot-lightbox-status {
    display: inline-flex;
}

.site-screenshot-lightbox.is-loading .site-screenshot-lightbox-status {
    gap: 0;
    padding: 0;
    border: 0;
    background: transparent;
}

.site-screenshot-lightbox.is-loading .site-screenshot-lightbox-status-text {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
}

.site-screenshot-lightbox-spinner {
    width: 20px;
    height: 20px;
    border: 3px solid rgba(255, 255, 255, 0.35);
    border-top-color: #fff;
    border-radius: 50%;
    animation: site-screenshot-spin 0.75s linear infinite;
}

.site-screenshot-lightbox.is-error .site-screenshot-lightbox-spinner {
    display: none;
}

@keyframes site-screenshot-spin {
    to {
        transform: rotate(360deg);
    }
}

.site-screenshot-lightbox-close,
.site-screenshot-lightbox-step {
    position: absolute;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(255, 255, 255, 0.5);
    background: rgba(0, 0, 0, 0.5);
    color: #fff;
    cursor: pointer;
}

.site-screenshot-lightbox-close {
    top: 12px;
    right: 14px;
    width: 38px;
    height: 38px;
    font-size: 26px;
}

.site-screenshot-lightbox-step {
    top: 50%;
    width: 42px;
    height: 58px;
    transform: translateY(-50%);
    font-size: 34px;
}

.site-screenshot-lightbox-prev {
    left: 8px;
}

.site-screenshot-lightbox-next {
    right: 8px;
}

.site-screenshot-lightbox-counter {
    position: absolute;
    bottom: 15px;
    left: 50%;
    transform: translateX(-50%);
    color: #fff;
    font-size: 14px;
}

body.site-screenshot-lightbox-open {
    overflow: hidden;
}

@media (max-width: 480px) {
    .site-preview-summary {
        grid-template-columns: auto auto minmax(0, 1fr) 34px;
        grid-template-rows: auto auto;
        align-items: start;
        min-height: 0;
        padding: 5px 4px;
    }

    .death .site-preview-summary {
        grid-template-columns: auto minmax(0, 1fr);
    }

    .death .site-preview-row.has-screenshots .site-preview-summary {
        grid-template-columns: auto minmax(0, 1fr) 34px;
    }

    .site-preview-summary .favorite-checkbox-hitbox,
    .site-preview-summary .site-num,
    .site-preview-summary .site-num-offline {
        grid-row: 1 / span 2;
    }

    .site-preview-copy {
        grid-column: 3;
        grid-row: 1;
        overflow: visible;
        white-space: normal;
    }

    .death .site-preview-copy {
        grid-column: 2;
    }

    .site-preview-copy .site-main-link {
        display: inline-flex;
        max-width: 100%;
        vertical-align: top;
    }

    .site-preview-copy .site-name-status,
    .site-preview-copy .site-name {
        min-width: 0;
        max-width: 100%;
    }

    .site-preview-copy .site-name {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .site-preview-copy .site-desc {
        display: block;
        margin-top: 2px;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .site-preview-copy .site-tags {
        display: flex;
        margin: 2px 0 0;
        overflow: hidden;
        flex-wrap: nowrap;
    }

    .site-preview-rating {
        grid-column: 3;
        grid-row: 2;
        margin-top: 3px;
    }

    .death .site-preview-rating {
        grid-column: 2;
    }

    .site-preview-rating .rating-link-wrap {
        display: inline;
        margin: 0;
    }

    .site-preview-rating a.rating-link {
        min-height: 24px;
        padding: 1px 5px;
    }

    .site-screenshot-toggle {
        grid-column: 4;
        grid-row: 1 / span 2;
    }

    .death .site-screenshot-toggle {
        grid-column: 3;
    }

    .site-screenshot-panel {
        padding: 7px 5px;
    }

    .site-screenshot-gallery {
        padding: 0;
    }

    .site-screenshot-viewport {
        overflow-x: auto;
        overscroll-behavior-inline: contain;
        scroll-snap-type: x proximity;
        scrollbar-width: thin;
    }

    .site-screenshot-thumb {
        flex: 0 0 68%;
        scroll-snap-align: start;
    }

    .site-screenshot-nav {
        display: none;
    }

    .site-screenshot-detail {
        padding: 8px 5px;
    }

    .site-screenshot-lightbox {
        padding: 48px 8px;
    }

    .site-screenshot-lightbox-image {
        max-width: 96vw;
        max-height: 80vh;
    }

    .site-screenshot-lightbox-step {
        width: 36px;
        height: 52px;
    }
}
