| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- // 팝업 모달 오버레이
- .popup-modal-overlay {
- position: fixed;
- inset: 0;
- z-index: 9999;
- display: flex;
- align-items: center;
- justify-content: center;
- background: rgba(0, 0, 0, 0.5);
- backdrop-filter: blur(4px);
- -webkit-backdrop-filter: blur(4px);
- animation: popupFadeIn 0.2s ease-out;
- }
- // 팝업 컨테이너
- .popup-modal-container {
- position: relative;
- width: 90%;
- max-width: 500px;
- max-height: 80vh;
- background: #fff;
- border-radius: 12px;
- overflow: hidden;
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
- animation: popupSlideUp 0.25s ease-out;
- }
- // 팝업 본문
- .popup-modal-body {
- max-height: calc(80vh - 50px);
- overflow-y: auto;
- // Swiper 커스텀 스타일
- .swiper {
- width: 100%;
- }
- .swiper-button-prev,
- .swiper-button-next {
- color: #fff;
- background: rgba(0, 0, 0, 0.3);
- width: 36px;
- height: 36px;
- border-radius: 50%;
- transition: background 0.2s;
- &:hover {
- background: rgba(0, 0, 0, 0.5);
- }
- &::after {
- font-size: 14px;
- font-weight: bold;
- }
- }
- .swiper-pagination-bullet {
- background: #fff;
- opacity: 0.5;
- &-active {
- opacity: 1;
- background: var(--color-primary-600, #2563eb);
- }
- }
- }
- // 팝업 슬라이드
- .popup-slide {
- padding: 24px;
- }
- .popup-slide-subject {
- font-size: 1.15rem;
- font-weight: 700;
- margin-bottom: 12px;
- color: #111;
- line-height: 1.4;
- }
- .popup-slide-content {
- font-size: 0.95rem;
- line-height: 1.7;
- color: #333;
- word-break: keep-all;
- img {
- max-width: 100%;
- height: auto;
- border-radius: 8px;
- }
- a {
- color: var(--color-primary-600, #2563eb);
- text-decoration: underline;
- }
- }
- .popup-slide-link {
- display: block;
- text-decoration: none;
- color: inherit;
- cursor: pointer;
- &:hover .popup-slide-content {
- opacity: 0.85;
- }
- }
- // 하단 - 하루동안 보지않기 + 닫기
- .popup-modal-footer {
- display: flex;
- align-items: center;
- justify-content: space-between;
- padding: 10px 16px;
- border-top: 1px solid #eee;
- background: #f9f9f9;
- }
- .popup-modal-dismiss {
- display: flex;
- align-items: center;
- gap: 6px;
- cursor: pointer;
- 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: #666;
- }
- }
- .popup-modal-close {
- padding: 6px 16px;
- font-size: 0.85rem;
- font-weight: 600;
- color: #555;
- background: #e5e5e5;
- border: none;
- border-radius: 6px;
- cursor: pointer;
- transition: background 0.15s;
- &:hover {
- background: #d4d4d4;
- }
- }
- // 애니메이션
- @keyframes popupFadeIn {
- from {
- opacity: 0;
- }
- to {
- opacity: 1;
- }
- }
- @keyframes popupSlideUp {
- from {
- opacity: 0;
- transform: translateY(20px);
- }
- to {
- opacity: 1;
- transform: translateY(0);
- }
- }
- // 반응형
- @media (max-width: 480px) {
- .popup-modal-container {
- width: 95%;
- max-height: 85vh;
- border-radius: 10px;
- }
- .popup-slide {
- padding: 16px;
- }
- .popup-slide-subject {
- font-size: 1.05rem;
- }
- .popup-modal-body {
- .swiper-button-prev,
- .swiper-button-next {
- width: 30px;
- height: 30px;
- &::after {
- font-size: 12px;
- }
- }
- }
- }
|