/* 왼쪽 '쪽' 패널(viewer-sidebar-pages.js): 쪽 썸네일을 세로 한 줄로 둔다.
   흰 종이 + 아주 옅은 그림자 + 1px 경계(모서리 3px), 아래에 쪽 번호. 지금 쪽은 주황 2px 테두리와 accent-ink 번호.
   칸의 hover·포커스는 공통 행(.vs-row)과 같은 톤이고, 하이라이트가 있는 쪽은 종이 오른쪽 위에 색 점을 찍는다. */

.vsp-list {
    --vsp-ratio: 1.294;
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 2px 0 6px;
}

.vsp-thumb {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 7px;
    width: calc(100% - 12px);
    margin: 0 6px;
    padding: 12px 18px 7px;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: inherit;
    font: inherit;
    cursor: pointer;
    transition: background-color 0.12s;
}

.vsp-thumb:hover {
    background: var(--app-hover);
}

.pdf-viewer .vsp-thumb:focus-visible {
    outline: 2px solid var(--app-accent);
    outline-offset: -2px;
}

.vsp-paper {
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: 1 / var(--vsp-ratio);
    overflow: hidden;
    border-radius: 3px;
    background: #fff;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08), 0 0 0 1px var(--app-edge);
    transition: box-shadow 0.12s;
}

.vsp-canvas {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    animation: vsp-in 0.16s ease-out;
}

/* 아직 그리지 않은 종이: 은은하게 반짝인다 */
.vsp-paper:not(.is-ready)::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(100deg, transparent 25%, rgba(39, 38, 30, 0.035) 50%, transparent 75%);
    background-size: 220% 100%;
    animation: vsp-shimmer 1.2s ease-in-out infinite;
}

.vsp-num {
    color: var(--app-fg-4);
    font-size: 11.5px;
    line-height: 16px;
    font-variant-numeric: tabular-nums;
    transition: color 0.12s;
}

.vsp-thumb.is-current .vsp-paper {
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08), 0 0 0 2px var(--app-accent);
}

.vsp-thumb.is-current .vsp-num {
    color: var(--app-accent-ink, #94512f);
}

/* 그 쪽 하이라이트 색(위에서부터 최대 3개). 옅은 색도 흰 종이 위에서 보이게 흰 테두리 밖에 옅은 선을 한 겹 더 둔다 */
.vsp-dots {
    position: absolute;
    top: 6px;
    right: 6px;
    z-index: 1;
    display: flex;
    gap: 3px;
}

.vsp-dots[hidden] {
    display: none;
}

.vsp-dot {
    display: block;
    width: 6px;
    height: 6px;
    border: 1px solid #fff;
    border-radius: 50%;
    box-shadow: 0 0 0 0.5px rgba(39, 38, 30, 0.24), 0 1px 2px rgba(30, 28, 18, 0.12);
}

/* PDF를 읽는 동안의 자리 */
.vsp-thumb.is-skeleton {
    cursor: default;
}

.vsp-thumb.is-skeleton:hover {
    background: transparent;
}

.vsp-num-skeleton {
    width: 18px;
    height: 8px;
    margin: 4px 0;
}

@keyframes vsp-in {
    from {
        opacity: 0;
    }
}

@keyframes vsp-shimmer {
    from {
        background-position: 100% 0;
    }

    to {
        background-position: -120% 0;
    }
}

/* 휴대폰 서랍: 종이를 조금 좁혀 한 화면에 두세 쪽이 보이게 한다 */
@media (max-width: 759px) {
    .vsp-thumb {
        padding: 12px 44px 8px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .vsp-thumb,
    .vsp-paper,
    .vsp-num {
        transition: none;
    }

    .vsp-canvas,
    .vsp-paper:not(.is-ready)::after {
        animation: none;
    }
}
