.popup-modal { // ── 오버레이 ────────────────────────────────── &__overlay { position: fixed; inset: 0; z-index: 9999; display: flex; align-items: center; justify-content: center; background: var(--overlay-color); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); animation: popupFadeIn 0.2s ease-out; } // ── 컨테이너 ───────────────────────────────── &__container { position: relative; width: 90%; max-width: 500px; max-height: 80vh; background: var(--bg-page); border-radius: 12px; overflow: hidden; box-shadow: 0 20px 60px var(--overlay-color); animation: popupSlideUp 0.25s ease-out; } // ── 본문 ───────────────────────────────────── &__body { max-height: calc(80vh - 50px); overflow-y: auto; .swiper { width: 100%; } .swiper-button-prev, .swiper-button-next { color: #fff; background: var(--overlay-color); width: 36px; height: 36px; border-radius: 50%; transition: background 0.2s; &:hover { background: var(--overlay-color); } &::after { font-size: 14px; font-weight: bold; } } .swiper-pagination-bullet { background: #fff; opacity: 0.5; &-active { opacity: 1; background: var(--color-primary-600, #2563eb); } } } // ── 슬라이드 ───────────────────────────────── &__slide { padding: 24px; } &__slide-subject { font-size: 1.15rem; font-weight: 700; margin-bottom: 12px; color: var(--text-primary); line-height: 1.4; } &__slide-content { font-size: 0.95rem; line-height: 1.7; color: var(--text-primary); word-break: keep-all; img { max-width: 100%; height: auto; border-radius: 8px; } a { color: var(--color-primary-600, #2563eb); text-decoration: underline; } } &__slide-link { display: block; text-decoration: none; color: inherit; cursor: pointer; &:hover .popup-modal__slide-content { opacity: 0.85; } } // ── 하단 ───────────────────────────────────── &__footer { display: flex; align-items: center; justify-content: space-between; padding: 10px 16px; border-top: 1px solid var(--border-default); background: var(--bg-elevated); } &__dismiss { display: flex; align-items: center; gap: 6px; cursor: pointer; -webkit-user-select: none; user-select: none; input[type='checkbox'] { width: 16px; height: 16px; accent-color: var(--color-primary-600, #2563eb); cursor: pointer; } span { font-size: 0.85rem; color: var(--text-secondary); } } &__close { padding: 6px 16px; font-size: 0.85rem; font-weight: 600; color: var(--text-secondary); background: var(--border-default); border: none; border-radius: 6px; cursor: pointer; transition: background 0.15s; &:hover { background: var(--border-strong); } } // ── 반응형 ─────────────────────────────────── @media (max-width: 480px) { &__container { width: 95%; max-height: 85vh; border-radius: 10px; } &__slide { padding: 16px; } &__slide-subject { font-size: 1.05rem; } &__body { .swiper-button-prev, .swiper-button-next { width: 30px; height: 30px; &::after { font-size: 12px; } } } } } // ── 애니메이션 ─────────────────────────────────── @keyframes popupFadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes popupSlideUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }