/* ============================================================
   기본 리셋 및 넷플릭스 스타일 변수
   ============================================================ */
:root {
    --bg-color:    #141414;
    --text-color:  #e5e5e5;
    --brand-color: #E50914;
    --sub-color:   #54b9c5;
    --muted-color: #888;
    --border-color:#333;
}

* { box-sizing: border-box; margin: 0; padding: 0; }

body {
    background-color: var(--bg-color);
    color: var(--text-color);
    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
    line-height: 1.5;
    overflow-x: hidden;
}

a { color: inherit; text-decoration: none; }

/* ── 헤더 ────────────────────────────────────────────────── */
header {
    padding: 20px 4%;
    background: linear-gradient(to bottom, rgba(0,0,0,.8) 0%, rgba(0,0,0,0) 100%);
    position: sticky;
    top: 0;
    z-index: 100;
    display: flex;
    align-items: center;
    gap: 30px;
}

header h1 a {
    color: var(--brand-color);
    font-size: 1.8rem;
    font-weight: 900;
    letter-spacing: 1px;
}
.page-breadcrumb {
    color: #fff;
    font-size: 1.8rem;
    font-weight: 900;
    letter-spacing: 1px;
}
a.crumb-link {
    text-decoration: none;
}
a.crumb-link:hover {
    text-decoration: underline;
    opacity: .75;
}

@media (max-width: 767px) {
    h1.has-crumb > a,
    .page-breadcrumb { font-size: 1.2rem; }
}


/* ── 데스크탑 가로 메뉴 ─────────────────────────────────── */
#desktop-menu {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-left: auto;
}
#desktop-menu > a,
#desktop-menu .dmenu-item-has-sub > a {
    color: #ccc;
    font-size: .88rem;
    padding: 6px 12px;
    border-radius: 4px;
    transition: background .2s, color .2s;
    white-space: nowrap;
    cursor: pointer;
    text-align: right;
}
#desktop-menu > a:hover,
#desktop-menu .dmenu-item-has-sub > a:hover { background: rgba(229,9,20,.75); color: #fff; }

/* show 버튼 배경 */
@keyframes show-btn-pulse {
    0%, 100% { background: rgba(229,9,20,.10); }
    50%       { background: rgba(229,9,20,.40); }
}
#desktop-menu > a.show-btn,
#hamburger-menu a.show-btn {
    animation: show-btn-pulse 2s ease-in-out infinite;
}
#desktop-menu > a.show-btn:hover,
#hamburger-menu a.show-btn:hover {
    background: rgba(229,9,20,.75);
    color: #fff;
}

/* 데스크탑 서브메뉴 */
.dmenu-item-has-sub {
    position: relative;
}
.dmenu-item-has-sub > a { display: flex; align-items: center; gap: 4px; }
.dmenu-item-has-sub .sub-arrow { font-size: .75rem; transition: transform .2s; }
.dmenu-item-has-sub:hover .sub-arrow { transform: rotate(90deg); }

.dmenu-sub {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    padding-top: 8px; /* hover 끊김 방지 브릿지 */
    background: transparent;
    min-width: 130px;
    z-index: 400;
}
.dmenu-sub-inner {
    background: rgba(20,20,20,.96);
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 6px;
    backdrop-filter: blur(10px);
    overflow: hidden;
    animation: fadeInOverlay .2s ease;
}
.dmenu-item-has-sub:hover .dmenu-sub { display: block; }
.dmenu-sub a {
    display: block;
    padding: 10px 16px;
    color: #ccc;
    font-size: .85rem;
    transition: background .2s, color .2s;
    white-space: nowrap;
}
.dmenu-sub a:hover { background: rgba(229,9,20,.75); color: #fff; }

/* 반응형: 1024px 미만 → 데스크탑 메뉴 숨김 / 햄버거 표시 */
@media (max-width: 1023px) {
    #desktop-menu { display: none; }
    #hamburger    { display: flex; }
}
/* 1024px 이상 → 햄버거 완전 제거 / 데스크탑 메뉴 표시 */
@media (min-width: 1024px) {
    #hamburger       { display: none !important; }
    #hamburger-menu  { display: none !important; }
    #desktop-menu    { display: flex; }
}

.about-link {
    color: var(--muted-color);
    font-size: .9rem;
    transition: color .3s;
}
.about-link:hover { color: #fff; }

/* ── 사진 없음 안내 ─────────────────────────────────────── */
.no-photos {
    text-align: center;
    color: var(--muted-color);
    font-size: 1rem;
    padding: 80px 0;
}
main { padding: 0 4% 50px; }

/* ── 연도 행 (메인 가로 슬라이더) ───────────────────────── */
.year-row { margin-bottom: 3vw; }

.year-title {
    font-size: 1.5rem;
    margin-bottom: .5em;
    font-weight: bold;
}
.year-title a {
    display: inline-flex;
    align-items: center;
    transition: color .3s;
}
.year-title a:hover { color: #fff; }

.more-text {
    font-size: .6em;
    margin-left: 10px;
    color: var(--sub-color);
    opacity: 0;
    transition: opacity .3s, transform .3s;
    transform: translateX(-10px);
}
.year-title a:hover .more-text { opacity: 1; transform: translateX(0); }

/* ── 슬라이더 화살표 ────────────────────────────────────── */
.slider-wrapper {
    position: relative;
    display: flex;
    align-items: center;
}

.slider-btn {
    position: absolute;
    z-index: 20;
    top: 10px;
    bottom: 20px;
    width: 4vw;
    min-width: 40px;
    background: rgba(0,0,0,.5);
    color: #fff;
    border: none;
    font-size: 2rem;
    cursor: pointer;
    opacity: 0;
    transition: opacity .3s, background .3s;
    display: flex;
    align-items: center;
    justify-content: center;
}
.slider-btn:hover { background: rgba(0,0,0,.8); }
.slider-wrapper:hover .slider-btn { opacity: 1; }
.left-btn  { left:  0; border-top-right-radius: 4px; border-bottom-right-radius: 4px; }
.right-btn { right: 0; border-top-left-radius:  4px; border-bottom-left-radius:  4px; }

/* ── 가로 스크롤 컨테이너 ───────────────────────────────── */
.row-container {
    display: flex;
    overflow-x: auto;
    gap: 10px;
    padding: 10px 0 20px;
    scroll-behavior: smooth;
    -ms-overflow-style: none;
    scrollbar-width: none;
    width: 100%;
}
.row-container::-webkit-scrollbar { display: none; }

.row-item {
    flex: 0 0 calc(100% / 5 - 10px);
    aspect-ratio: 16 / 9;
    border-radius: 4px;
    overflow: hidden;
    transition: transform .3s ease, box-shadow .3s ease;
    cursor: pointer;
}
.row-item img { width: 100%; height: 100%; object-fit: cover; }
.row-item:hover {
    transform: scale(1.05);
    box-shadow: 0 4px 15px rgba(0,0,0,.5);
    z-index: 10;
}

/* ── 연도별 상세 페이지 ─────────────────────────────────── */
.view-header {
    display: flex;
    align-items: baseline;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.view-header h2 { font-size: 2rem; }

.photo-count {
    color: var(--muted-color);
    font-size: .9rem;
}

.back-link {
    display: inline-block;
    color: #aaa;
    font-size: .9rem;
    transition: color .2s;
}
.back-link:hover { color: #fff; }

/* ── 사진 그리드 ────────────────────────────────────────── */
.photo-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 10px;
}

.photo-item {
    aspect-ratio: 16 / 9;
    border-radius: 4px;
    overflow: hidden;
    transition: transform .3s;
    cursor: pointer;
}
.photo-item img { width: 100%; height: 100%; object-fit: cover; }
.photo-item:hover { transform: scale(1.03); }

/* ── 페이지네이션 ───────────────────────────────────────── */
.pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 8px;
    margin-top: 40px;
    flex-wrap: wrap;
}

.pagination a,
.pagination .pg-ellipsis {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 36px;
    height: 36px;
    padding: 0 10px;
    border-radius: 4px;
    font-size: .9rem;
    color: var(--text-color);
    background: rgba(255,255,255,.08);
    transition: background .2s, color .2s;
}
.pagination a:hover { background: rgba(255,255,255,.2); }
.pagination .pg-active {
    background: var(--brand-color);
    color: #fff;
    font-weight: bold;
    pointer-events: none;
}
.pagination .pg-ellipsis {
    background: transparent;
    color: var(--muted-color);
    pointer-events: none;
}

/* ── 반응형 ─────────────────────────────────────────────── */
@media (max-width: 1024px) {
    .row-item          { flex: 0 0 calc(100% / 4 - 10px); }
    .year-title        { font-size: 1.5rem; }
}
@media (max-width: 768px) {
    .row-item          { flex: 0 0 calc(100% / 3 - 10px); }
    .year-title        { font-size: 1.3rem; }
    .slider-btn        { display: none; }
}
@media (max-width: 480px) {
    .row-item          { flex: 0 0 calc(100% / 2 - 10px); }
    .year-title        { font-size: 1.1rem; }
    .photo-grid        { grid-template-columns: repeat(2, 1fr); gap: 10px; }
    .view-header h2    { font-size: 1.5rem; }
}

/* ── 모달 공통 ──────────────────────────────────────────── */
.modal {
    display: none;
    position: fixed;
    z-index: 1000;
    inset: 0;
    background: rgba(0,0,0,.9);
    align-items: center;
    justify-content: center;
    cursor: pointer;
}

/* ── 원본 사진 모달 ─────────────────────────────────────── */
#photoModal .modal-content {
    max-width: 85%;
    max-height: 90vh;
    border-radius: 4px;
    box-shadow: 0 10px 25px rgba(0,0,0,.8);
    animation: zoomIn .3s ease;
    cursor: default;
    user-select: none;
    transition: opacity .15s ease;
}

/* ── About 모달 ─────────────────────────────────────────── */
.about-content {
    background: rgba(20,20,20,.96); /* 기본: 이미지 없음 / 이미지는 inline style로 주입 */
    color: #e5e5e5;
    padding: 40px;
    border-radius: 8px;
    max-width: 800px;
    width: 90%;
    max-height: 80vh;
    overflow-y: auto;
    position: relative;
    box-shadow: 0 10px 25px rgba(0,0,0,.8);
    animation: zoomIn .3s ease;
    cursor: default;
}

@media (max-width: 1023px) {
    .about-content {
        max-width: 100%;
        width: 100%;
        max-height: 100dvh;
        border-radius: 0;
        margin: 0;
    }
}
.about-content p { margin-bottom: 15px; line-height: 1.6; font-size: 1rem; }

@keyframes zoomIn {
    from { transform: scale(.9); opacity: 0; }
    to   { transform: scale(1);  opacity: 1; }
}

/* ── 닫기 버튼 ──────────────────────────────────────────── */
.close-btn {
    position: absolute;
    top: 20px; right: 30px;
    color: #f1f1f1;
    font-size: 40px;
    font-weight: bold;
    transition: color .3s;
    cursor: pointer;
    z-index: 1001;
}
.about-close { top: 10px; right: 20px; font-size: 30px; }
.close-btn:hover, .close-btn:focus { color: var(--brand-color); }

/* ── 원본사진 모달 컨트롤 ───────────────────────────────── */
#modal-close {
    position: absolute;
    top: 18px; right: 20px;
    z-index: 1010;
    background: rgba(0,0,0,.45);
    border: 1px solid rgba(255,255,255,.2);
    color: #fff;
    width: 36px; height: 36px;
    border-radius: 50%;
    font-size: 1rem;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .2s, color .2s;
}
#modal-close:hover { background: rgba(229,9,20,.8); }
#modal-controls {
    position: absolute;
    bottom: 16px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 1010;
    display: flex;
    gap: 16px;
    align-items: center;
}
#modal-controls button {
    background: rgba(255,255,255,.12);
    border: 1px solid rgba(255,255,255,.2);
    color: #fff;
    width: 40px; height: 40px;
    border-radius: 50%;
    font-size: 1rem;
    cursor: pointer;
    transition: background .2s;
    display: flex;
    align-items: center;
    justify-content: center;
}
#modal-controls button:hover { background: rgba(229,9,20,.8); }
#modal-counter {
    color: rgba(255,255,255,.7);
    font-size: .85rem;
    white-space: nowrap;
    min-width: 56px;
    text-align: center;
}
#modalImg { touch-action: none; }

/* ── 푸터 ────────────────────────────────────────────────── */
footer {
    text-align: center;
    padding: 20px 4%;
    color: var(--muted-color);
    font-size: .9rem;
    margin-top: 20px;
    border-top: 1px solid var(--border-color);
}

/* ── 전체화면 최적화 ────────────────────────────────────── */
.modal:fullscreen,
.modal:-webkit-full-screen {
    background: #000;
}
.modal:fullscreen .modal-content,
.modal:-webkit-full-screen .modal-content {
    max-width: 100%;
    max-height: 100vh;
    border-radius: 0;
    box-shadow: none;
}
/* ============================================================
   유튜브 배경 음악 플레이어
   ============================================================ */
#yt-bg-player {
    position: fixed;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
    z-index: -1;
}

/* 메인 오디오 버튼 및 힌트 숨김 */
#audio-toggle,
#audio-hint { display: none !important; }
#audio-toggle {
    position: fixed;
    bottom: 24px;
    right: 24px;
    z-index: 200;
    background: rgba(0,0,0,.75);
    border: 1px solid rgba(255,255,255,.18);
    width: 48px;
    height: 48px;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .25s, box-shadow .25s;
    backdrop-filter: blur(6px);
    padding: 0;
}
#audio-toggle:hover { background: rgba(229,9,20,.85); box-shadow: 0 0 12px rgba(229,9,20,.5); }
#audio-toggle svg { width: 28px; height: 28px; }

/* 음파 막대 애니메이션 */
@keyframes wave1 { 0%,100%{transform:scaleY(.4)} 50%{transform:scaleY(1)} }
@keyframes wave2 { 0%,100%{transform:scaleY(1)}  50%{transform:scaleY(.3)} }
@keyframes wave3 { 0%,100%{transform:scaleY(.6)} 50%{transform:scaleY(1)} }
@keyframes wave4 { 0%,100%{transform:scaleY(1)}  50%{transform:scaleY(.5)} }

.wave-bar { transform-origin: center; }
#audio-toggle.playing .wave-bar:nth-child(1),
#ss-audio.playing .wave-bar:nth-child(1) { animation: wave1 .9s ease-in-out infinite; }
#audio-toggle.playing .wave-bar:nth-child(2),
#ss-audio.playing .wave-bar:nth-child(2) { animation: wave2 .7s ease-in-out infinite .1s; }
#audio-toggle.playing .wave-bar:nth-child(3),
#ss-audio.playing .wave-bar:nth-child(3) { animation: wave3 .8s ease-in-out infinite .2s; }
#audio-toggle.playing .wave-bar:nth-child(4),
#ss-audio.playing .wave-bar:nth-child(4) { animation: wave4 .6s ease-in-out infinite .05s; }

/* 음소거 상태: X 사선 */
#mute-line { transition: opacity .2s; opacity: 1; }
#audio-toggle.playing #mute-line { opacity: 0; }
/* 음소거 상태: 음파 막대 흐리게 */
#audio-toggle:not(.playing) .wave-bar { opacity: .25; }

/* ── 오디오 힌트 툴팁 ───────────────────────────────────── */
#audio-hint {
    position: fixed;
    bottom: 72px;
    right: 24px;
    z-index: 200;
    background: rgba(0,0,0,.72);
    color: #e5e5e5;
    font-size: .78rem;
    padding: 7px 12px;
    border-radius: 8px;
    border: 1px solid rgba(255,255,255,.15);
    backdrop-filter: blur(6px);
    white-space: nowrap;
    pointer-events: none;
    opacity: 1;
    transition: opacity .6s ease;
}
#audio-hint::after {
    content: '';
    position: absolute;
    bottom: -6px;
    right: 14px;
    width: 10px;
    height: 10px;
    background: rgba(0,0,0,.72);
    border-right: 1px solid rgba(255,255,255,.15);
    border-bottom: 1px solid rgba(255,255,255,.15);
    transform: rotate(45deg);
}

/* ── 햄버거 버튼 ────────────────────────────────────────── */
#hamburger {
    position: fixed;
    top: 18px;
    right: 20px;
    z-index: 300;
    background: transparent;
    border: none;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    width: 36px;
    height: 36px;
    padding: 4px;
}
#hamburger span {
    display: block;
    width: 100%;
    height: 2px;
    background: #fff;
    border-radius: 2px;
    transition: transform .3s ease, opacity .3s ease;
    transform-origin: center;
}
/* X 애니메이션 */
#hamburger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
#hamburger.open span:nth-child(2) { opacity: 0; transform: scaleX(0); }
#hamburger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ── 드롭다운 메뉴 ──────────────────────────────────────── */
#hamburger-menu {
    position: fixed;
    top: 60px;
    right: 20px;
    z-index: 290;
    background: rgba(20,20,20,.92);
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 8px;
    backdrop-filter: blur(10px);
    overflow: hidden;
    min-width: 130px;
    max-height: 0;
    opacity: 0;
    pointer-events: none;
    transition: max-height .35s ease, opacity .25s ease;
}
#hamburger-menu.open {
    max-height: 500px; /* 서브메뉴 펼쳐져도 충분한 높이 */
    opacity: 1;
    pointer-events: auto;
}
#hamburger-menu a {
    display: block;
    padding: 12px 20px;
    color: #e5e5e5;
    font-size: .92rem;
    letter-spacing: .5px;
    transition: background .2s, color .2s;
}
#hamburger-menu a:hover { background: rgba(229,9,20,.75); color: #fff; }

/* ── 서브메뉴 ── */
.menu-item-has-sub { position: relative; }
.menu-item-has-sub > a { display: flex; justify-content: space-between; align-items: center; }
.sub-arrow {
    font-size: 1rem;
    transition: transform .25s ease;
    display: inline-block;
    margin-left: 6px;
}
.menu-item-has-sub.open .sub-arrow { transform: rotate(90deg); }

.sub-menu {
    max-height: 0;
    overflow: hidden;
    transition: max-height .3s ease;
    background: rgba(10,10,10,.95);
}
.menu-item-has-sub.open .sub-menu { max-height: 200px; }
.sub-menu a {
    padding: 10px 20px 10px 32px;
    font-size: .85rem;
    color: #bbb;
    display: block;
    transition: background .2s, color .2s;
}
.sub-menu a:hover { background: rgba(229,9,20,.75); color: #fff; }

/* ── Notice 모달 배경 이미지 제거 ──────────────────────── */
.notice-content { background: rgba(20,20,20,.95); }

/* ── 사진 모달 로딩 스피너 ──────────────────────────────── */
#modal-spinner {
    display: none;
    position: absolute;
    z-index: 1002;
    inset: 0;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}
#modal-spinner svg {
    width: 52px;
    height: 52px;
    filter: drop-shadow(0 0 6px rgba(0,0,0,.6));
}

/* 슬라이드쇼 오디오 힌트 말풍선 */
#ss-audio-hint {
    position: absolute;
    bottom: 72px;
    right: 20px;
    z-index: 30;
    background: rgba(0,0,0,.72);
    color: #e5e5e5;
    font-size: .78rem;
    padding: 7px 12px;
    border-radius: 8px;
    border: 1px solid rgba(255,255,255,.15);
    backdrop-filter: blur(6px);
    white-space: nowrap;
    pointer-events: none;
    opacity: 0;
    transition: opacity .6s ease;
}
#ss-audio-hint::after {
    content: '';
    position: absolute;
    bottom: -6px;
    right: 14px;
    width: 10px;
    height: 10px;
    background: rgba(0,0,0,.72);
    border-right: 1px solid rgba(255,255,255,.15);
    border-bottom: 1px solid rgba(255,255,255,.15);
    transform: rotate(45deg);
}

/* 슬라이드쇼 오디오 버튼 */
#ss-audio {
    position: absolute;
    bottom: 18px;
    right: 20px;
    z-index: 30;
    background: rgba(0,0,0,.45);
    border: 1px solid rgba(255,255,255,.18);
    width: 42px;
    height: 42px;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    transition: background .25s, box-shadow .25s;
    backdrop-filter: blur(6px);
}
#ss-audio:hover { background: rgba(229,9,20,.85); box-shadow: 0 0 12px rgba(229,9,20,.5); }
#ss-audio svg { width: 24px; height: 24px; }
#ss-audio .ss-mute-line { transition: opacity .2s; opacity: 1; }
#ss-audio.playing .ss-mute-line { opacity: 0; }
#ss-audio:not(.playing) .wave-bar { opacity: .25; }
#slideshowModal {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 2000;
    background: #000;
    align-items: center;
    justify-content: center;
    flex-direction: column;
}

#ss-img,
#ss-img-b {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    max-width: 100%;
    max-height: calc(100% - 100px); /* 상하 컨트롤 영역 여백 확보 */
    width: auto;
    height: auto;
    object-fit: contain;
    transition: opacity .8s ease;
    opacity: 0;
}
#ss-img   { z-index: 2; }
#ss-img-b { z-index: 1; }

#ss-spinner {
    display: none;
    position: absolute;
    inset: 0;
    align-items: center;
    justify-content: center;
    z-index: 10;
}
#ss-spinner svg { width: 52px; height: 52px; }

/* 하단 그라디언트 오버레이 */
#ss-overlay {
    position: absolute;
    bottom: 0; left: 0; right: 0;
    height: 140px;
    background: linear-gradient(to top, rgba(0,0,0,.7) 0%, transparent 100%);
    pointer-events: none;
    z-index: 5;
}

/* 연도 + 카운터 */
#ss-info {
    position: absolute;
    bottom: 60px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 20;
    display: flex;
    align-items: center;
    gap: 16px;
    color: rgba(255,255,255,.85);
    font-size: .9rem;
    letter-spacing: 1px;
    pointer-events: none;
}
#ss-year {
    font-size: 1.1rem;
    font-weight: bold;
    color: #fff;
}

/* 컨트롤 버튼 */
#ss-controls {
    position: absolute;
    bottom: 16px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 20;
    display: flex;
    gap: 16px;
    align-items: center;
}
#ss-controls button {
    background: rgba(255,255,255,.12);
    border: 1px solid rgba(255,255,255,.2);
    color: #fff;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    font-size: 1rem;
    cursor: pointer;
    transition: background .2s;
    display: flex;
    align-items: center;
    justify-content: center;
}
#ss-controls button:hover { background: rgba(229,9,20,.8); }

/* 닫기 버튼 */
#ss-close {
    position: absolute;
    top: 18px;
    right: 20px;
    z-index: 30;
    background: rgba(0,0,0,.45);
    border: none;
    color: rgba(255,255,255,.8);
    font-size: 1.2rem;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .2s, color .2s;
}
#ss-close:hover { background: rgba(229,9,20,.8); color: #fff; }

/* 프로그레스 바 */
#ss-progress {
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: rgba(255,255,255,.15);
    z-index: 30;
}
#ss-progress-bar {
    height: 100%;
    width: 0%;
    background: var(--brand-color);
}

/* ── Top 버튼 ───────────────────────────────────────────── */
#top-btn {
    position: fixed;
    bottom: 30px;
    right: 24px;
    z-index: 500;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: rgba(229,9,20,.85);
    color: #fff;
    border: none;
    font-size: 1.6rem;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity .3s ease, background .2s;
    box-shadow: 0 2px 10px rgba(0,0,0,.5);
}
#top-btn.visible { opacity: 1; pointer-events: auto; }
#top-btn:hover { background: var(--brand-color); }

/* ============================================================
   영화(movie) 그리드
   ============================================================ */
.movie-count {
    font-size: 1.5rem;
    font-weight: bold;
    color: var(--text-color);
    margin: 20px 0 .5em;
    text-align: center;
}

.movie-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, 300px);
    gap: 12px;
    justify-content: center;
    padding: 20px 0 50px;
}

.movie-item {
    width: 300px;
    border-radius: 4px;
    overflow: hidden;
    display: block;
    transition: transform .3s ease, box-shadow .3s ease;
    cursor: pointer;
}

.movie-item img {
    width: 100%;
    height: auto;
    display: block;
}

.movie-item:hover {
    transform: scale(1.03);
    box-shadow: 0 4px 20px rgba(0,0,0,.6);
}

/* 반응형: 화면이 300px 미만이면 단일 컬럼 + 전체 너비 */
@media (max-width: 319px) {
    .movie-grid {
        grid-template-columns: 1fr;
    }
    .movie-item {
        width: 100%;
    }
}

/* ============================================================
   메인 허브 (index.php 랜딩 페이지)
   ============================================================ */
.hub-wrap {
    display: flex;
    justify-content: center;
    gap: 50px;
    padding: 50px 4%;
    flex-wrap: wrap;
}

.hub-group {
    display: flex;
    align-items: stretch;
    gap: 10px;
}

.hub-label {
    width: 160px;
    display: flex;
    align-items: flex-start;
    justify-content: flex-start;
    color: var(--muted-color);
    font-size: .75rem;
    text-align: left;
    word-break: keep-all;
    line-height: 1.5;
}

.hub-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    text-decoration: none;
    color: var(--text-color);
    transition: transform .25s, color .25s;
}

.hub-btn:hover {
    transform: scale(1.06);
    color: #fff;
}

.hub-btn img {
    width: 150px;
    height: 170px;
    object-fit: cover;
    border-radius: 6px;
    display: block;
    box-shadow: 0 4px 20px rgba(0,0,0,.6);
    transition: box-shadow .25s;
}

.hub-btn:hover img {
    box-shadow: 0 8px 30px rgba(0,0,0,.8);
}

.hub-btn span {
    font-size: 1.1rem;
    font-weight: bold;
    letter-spacing: 1px;
}
.special-video-wrap {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    padding: 30px 4% 60px;
}
.special-video-label {
    font-size: .95rem;
    color: var(--muted-color);
    letter-spacing: 2px;
    text-transform: lowercase;
}
.special-video-frame {
    width: 100%;
    max-width: 640px;
    aspect-ratio: 16 / 9;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 4px 24px rgba(0,0,0,.6);
}
.special-video-frame iframe {
    width: 100%;
    height: 100%;
    border: none;
    display: block;
}

/* ============================================================
   oh~il 전국지도
   ============================================================ */
.korea-map-wrap {
    display: flex;
    justify-content: center;
    padding: 10px 0 40px;
}

#korea-map {
    width: 100%;
    max-width: 380px;
    height: auto;
    display: block;
}

.korea-outline {
    fill: rgba(255,255,255,.04);
    stroke: rgba(255,255,255,.70);
    stroke-width: 4;
    stroke-linejoin: round;
    stroke-linecap: round;
    pointer-events: none;
}

.map-region {
    cursor: pointer;
}

.map-region polygon {
    fill: rgba(255,255,255,.06);
    stroke: rgba(255,255,255,.28);
    stroke-width: 1.5;
    transition: fill .2s, stroke .2s;
}

.map-region:hover polygon {
    fill: rgba(255,255,255,.18);
    stroke: rgba(255,255,255,.55);
}

.map-region.has-photos polygon {
    fill: rgba(229,9,20,.22);
    stroke: rgba(229,9,20,.6);
}

.map-region.has-photos:hover polygon {
    fill: rgba(229,9,20,.42);
    stroke: rgba(229,9,20,.9);
}

/* 서울 — 폴리곤이 작아서 획 더 가늘게 */
.map-seoul polygon {
    stroke-width: 1;
}

.map-label {
    fill: rgba(255,255,255,.88);
    font-size: 36px;
    font-family: inherit;
    text-anchor: middle;
    dominant-baseline: auto;
    pointer-events: none;
    user-select: none;
}

.map-label-sm {
    font-size: 24px;
}

.map-count {
    fill: rgba(255,160,160,.95);
    font-size: 24px;
    font-family: inherit;
    text-anchor: middle;
    dominant-baseline: auto;
    pointer-events: none;
    user-select: none;
}

/* ============================================================
   시/도 상세 지도 공통 (ohil/seoul, ohil/gangwon 등)
   ============================================================ */
#seoul-map {
    width: 100%;
    max-width: 560px;
    height: auto;
    display: block;
    margin: 0 auto;
    overflow: visible;
}

#gangwon-map {
    width: 100%;
    max-width: 560px;
    height: auto;
    display: block;
    margin: 0 auto;
    overflow: visible;
}

#gyeonggi-map {
    width: 100%;
    max-width: 560px;
    height: auto;
    display: block;
    margin: 0 auto;
    overflow: visible;
}

#incheon-map {
    width: 100%;
    max-width: 560px;
    height: auto;
    display: block;
    margin: 0 auto;
    overflow: visible;
}

#gyeongnam-map {
    width: 100%;
    max-width: 560px;
    height: auto;
    display: block;
    margin: 0 auto;
    overflow: visible;
}

.seoul-gu polygon,
.gangwon-gu polygon,
.gyeonggi-gu polygon,
.incheon-gu polygon,
.gyeongnam-gu polygon {
    fill: rgba(255,255,255,.06);
    stroke: rgba(255,255,255,.28);
    stroke-width: 1.5;
    pointer-events: none;
}

.seoul-gu text,
.gangwon-gu text,
.gyeonggi-gu text,
.incheon-gu text,
.gyeongnam-gu text {
    fill: rgba(255,255,255,.88);
    font-size: 13px;
    pointer-events: none;
    text-anchor: middle;
    dominant-baseline: middle;
    font-family: inherit;
    user-select: none;
}

#seoul-map .map-label,
#seoul-map .map-label-sm,
#seoul-map .map-count,
#gangwon-map .map-label,
#gangwon-map .map-label-sm,
#gangwon-map .map-count,
#gyeonggi-map .map-label,
#gyeonggi-map .map-label-sm,
#gyeonggi-map .map-count,
#incheon-map .map-label,
#incheon-map .map-label-sm,
#incheon-map .map-count,
#gyeongnam-map .map-label,
#gyeongnam-map .map-label-sm,
#gyeongnam-map .map-count {
    font-size: 13px;
}

/* ── 지역 지도 선 굵기 (전국지도 시각 기준 통일) ────────── */
/* 목표: 가장자리 2.11px · 경계선 0.79px (전국지도와 동일) */

/* ── 지역 지도 선 굵기 및 사진 수 텍스트 크기 (전국지도 시각 기준 통일) ── */
/* 목표: 가장자리 2.11px · 경계선 0.79px · map-count 12.7px (전국지도와 동일) */

/* 서울 (viewBox 470 / max 560px → scale 1.191) */
#seoul-map .korea-outline            { stroke-width: 1.8; }
#seoul-map .seoul-gu polygon         { stroke-width: 0.7; }
#seoul-map .map-region polygon       { stroke-width: 0.7; }
#seoul-map .map-count                { font-size: 10.7px; }

/* 강원 (viewBox 400 / max 560px → scale 1.4) */
#gangwon-map .korea-outline          { stroke-width: 1.5; }
#gangwon-map .gangwon-gu polygon     { stroke-width: 0.6; }
#gangwon-map .map-region polygon     { stroke-width: 0.6; }
#gangwon-map .map-count              { font-size: 9.1px; }

/* 경기 (viewBox 395 / max 560px → scale 1.418) */
#gyeonggi-map .korea-outline         { stroke-width: 1.5; }
#gyeonggi-map .gyeonggi-gu polygon   { stroke-width: 0.6; }
#gyeonggi-map .map-region polygon    { stroke-width: 0.6; }
#gyeonggi-map .map-count             { font-size: 9.0px; }

/* 인천 (viewBox 260 / max 560px → scale 2.154) */
#incheon-map .korea-outline          { stroke-width: 1.0; }
#incheon-map .incheon-gu polygon     { stroke-width: 0.4; }
#incheon-map .map-region polygon     { stroke-width: 0.4; }
#incheon-map .map-count              { font-size: 5.9px; }

/* 경남 (viewBox 420 / max 560px → scale 1.333) */
#gyeongnam-map .korea-outline        { stroke-width: 1.6; }
#gyeongnam-map .gyeongnam-gu polygon { stroke-width: 0.6; }
#gyeongnam-map .map-region polygon   { stroke-width: 0.6; }
#gyeongnam-map .map-count            { font-size: 9.5px; }
