/*
 * 구독 관련 페이지 전용 스타일
 * 페이지: /WEB-INF/jsp/vasanta/mber/subscribe/*.jsp
 */

/* ===== 구독상품 페이지 ===== */
.product-card {
    height: 100%;
    transition: transform 0.2s, box-shadow 0.2s;
}
.product-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 8px 24px rgba(0,0,0,0.12);
}
.product-price {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--sfn-action);
}
.product-price-estimate {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--sfn-cyan);
}
.product-btn-estimate {
    background-color: var(--sfn-cyan);
    color: var(--sfn-text-on-primary);
    border: none;
}
.product-btn-estimate:hover {
    background-color: var(--sfn-cyan);
    opacity: 0.85;
    color: var(--sfn-text-on-primary);
}
.product-desc {
    color: var(--sfn-text);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.product-features {
    list-style: none;
    padding: 0;
    color: var(--sfn-text);
}
.product-features li {
    padding: 0.4rem 0;
}
.card h3,
.card h5 {
    color: var(--sfn-text);
}
.inquiry-form {
    background: var(--sfn-bg-card);
    border-radius: 8px;
    padding: 2rem;
}
.inquiry-form .form-control,
.inquiry-form .form-select {
    background-color: var(--sfn-bg-card);
}
.inquiry-form .form-control:not(textarea),
.inquiry-form .form-select {
    height: 48px;
}
#btnSubmitInquiry {
    height: 48px;
}
.inquiry-form .form-label {
    font-size: 16px !important;
}
.inquiry-form .form-control::placeholder {
    color: var(--sfn-neutral-500);
}
.inquiry-form .form-control:focus,
.inquiry-form .form-select:focus {
    box-shadow: none;
}

/* ===== 첨부파일 커스텀 인풋 ===== */
.file-input-display {
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    height: 48px;
}
.file-input-text {
    flex: 1;
    display: flex;
    align-items: center;
    height: 48px;
    padding: 0 12px;
    border: 1px solid var(--sfn-border-input);
    border-radius: 6px;
    background: var(--sfn-bg-card);
    color: var(--sfn-neutral-500);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.file-input-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 48px;
    padding: 0 16px;
    background: var(--sfn-secondary-6);
    border: 1px solid var(--sfn-secondary-5);
    border-radius: 6px;
    color: var(--sfn-text-muted);
    cursor: pointer;
    white-space: nowrap;
    margin: 0;
    flex-shrink: 0;
}
.file-input-btn:hover {
    background: var(--sfn-secondary-5);
}
.file-form-text {
    color: var(--sfn-neutral-500) !important;
}


/* ===== 필수 표시 & 체크박스 ===== */
.inquiry-form .form-label .text-danger {
    color: var(--sfn-required) !important;
}
.inquiry-form .form-check-input[type="checkbox"] {
    border-radius: 6px;
    border-color: var(--sfn-border-light);
}
.inquiry-form .form-check-input[type="checkbox"]:checked {
    background-color: var(--sfn-primary);
    border-color: var(--sfn-primary);
}
.inquiry-form .form-check-input:focus,
.inquiry-form .form-check-input:checked {
    box-shadow: none;
}

/* ===== 전체 카드 그림자 제거 ===== */
.card {
    box-shadow: none !important;
}
@media (max-width: 768px) {
    .inquiry-form {
        padding: 1rem;
    }
}

/* ===== 구독상품 페이지 배너 오버라이드 ===== */
#productsInfoBanner .sfn-info-title {
    font-size: 20px;
}

/* ===== 가이드 박스 인라인 콜랩스 (공통 스타일은 vasanta-components.css) ===== */

/* ===== 공통 유틸리티 ===== */
/* 아이콘 크기 변형 */
.sub-icon-hero {
    font-size: 72px;
    color: var(--sfn-action);
}
.sub-icon-3x {
    font-size: 3rem;
}
.sub-icon-md {
    font-size: 1.2rem;
}

/* 텍스트 영역 변형 */
.sub-textarea-fixed {
    resize: none;
    font-size: 15px;
}

/* MinglePay 결제 모듈 컨테이너 */
.sub-minglepay-container {
    min-height: 400px;
}

/* 가격 변경 알림 배너 */
.sub-price-alert {
    padding: 8px 12px;
    background-color: #fff8e1;
    border-left: 3px solid #ffb300;
    border-radius: 4px;
}

/* 결제 약관 모달 본문 */
.sub-terms-body {
    padding: 1.5rem;
    line-height: 1.8;
}

/* 최종 결제금액 */
.sub-final-amount {
    font-size: 1.5rem;
    font-weight: bold;
    color: var(--sfn-action);
}
@media (max-width: 768px) {
    .sub-final-amount {
        font-size: 1.25rem;
    }
}

/* PG 처리 페이지 */
.sub-processing-center {
    text-align: center;
    margin-top: 100px;
}
.sub-confirm-btn {
    padding: 10px 20px;
    background: #007bff;
    color: white;
    border: none;
    border-radius: 4px;
    cursor: pointer;
}

/* ===== 구독관리 페이지 ===== */
/* 구독 액션 버튼 영역 고정 너비 (PC에서만) */
@media (min-width: 768px) {
    .subscription-actions {
        min-width: 280px;
        justify-content: flex-end;
    }
}

/* 상태 뱃지 스타일 */
.sfn-badge-sub-status {
    padding: 0.35rem 0.75rem;
    font-size: 0.875rem;
    font-weight: 600;
    border-radius: 0.25rem;
    display: inline-block;
}
.sfn-badge-sub-status.active {
    background-color: #d1ecf1;
    color: #0c5460;
}
.sfn-badge-sub-status.scheduled-cancellation {
    background-color: #fff3cd;
    color: #856404;
}
.sfn-badge-sub-status.paused {
    background-color: #f8d7da;
    color: #721c24;
}
.sfn-badge-sub-status.cancelled {
    background-color: #e2e3e5;
    color: #383d41;
}
.sfn-badge-sub-status.overdue {
    background-color: #f8d7da;
    color: #721c24;
}

/* 구독 목록 아이템 z-index (hover 시 transform으로 인한 스태킹 컨텍스트 문제 해결) */
.subscription-list-item {
    position: relative;
    z-index: 1;
}

.subscription-list-item:hover {
    z-index: 1040 !important;
}

/* 구독 관리 드롭다운 메뉴 z-index (푸터보다 높게) */
.subscription-actions .dropdown-menu {
    z-index: 1050 !important;
}

/* ========================================
   모바일 모달 표준 스타일 (390px 이하)
   문서: /docs/hr/03_MOBILE_MODAL.md
   ======================================== */

/* PC (390px 초과): 상단 X버튼 숨김 */
#paymentHistoryModal .modal-header .modal-close-btn-mobile,
#subscribeGuideModal .modal-header .modal-close-btn-mobile,
#privacyModal .modal-header .modal-close-btn-mobile,
#modalRefundConfirm .modal-header .modal-close-btn-mobile,
#modalRefundDetail .modal-header .modal-close-btn-mobile,
#cardChangeModal .modal-header .modal-close-btn-mobile {
    display: none !important;
}


/* customAlert 모달 버튼 순서 - PC (모든 화면) */
.modal-type-alert .modal-footer {
    display: flex !important;
    flex-direction: row !important;
    justify-content: center !important;
}

.modal-type-alert .modal-footer .btn-label-secondary {
    order: 1 !important;
}

.modal-type-alert .modal-footer .btn-primary {
    order: 2 !important;
}

/* 모바일 (390px 이하): 모달 표준 스타일 */
@media (max-width: 430px) {
    /* 모달 정중앙 배치 */
    #paymentHistoryModal.modal.show,
    #subscribeGuideModal.modal.show,
    #privacyModal.modal.show,
    #modalRefundConfirm.modal.show,
    #modalRefundDetail.modal.show,
    #cardChangeModal.modal.show {
        display: flex !important;
        align-items: center;
        justify-content: center;
    }

    #paymentHistoryModal .modal-dialog,
    #subscribeGuideModal .modal-dialog,
    #privacyModal .modal-dialog,
    #modalRefundConfirm .modal-dialog,
    #modalRefundDetail .modal-dialog,
    #cardChangeModal .modal-dialog {
        margin: 0;
        width: 90% !important;
        max-width: 100% !important;
    }

    /* 모달 컨텐츠 스타일 */
    #paymentHistoryModal .modal-content,
    #privacyModal .modal-content,
    #modalRefundConfirm .modal-content,
    #modalRefundDetail .modal-content,
    #cardChangeModal .modal-content {
        border-radius: 11px;
        height: 55vh !important;
        max-height: 85vh !important;
    }

    /* 구독관리 가이드 모달 - 70vh */
    #subscribeGuideModal .modal-content {
        border-radius: 11px;
        height: 70vh !important;
    }

    /* 모달 헤더 스타일 */
    #paymentHistoryModal .modal-header,
    #subscribeGuideModal .modal-header,
    #privacyModal .modal-header,
    #modalRefundConfirm .modal-header,
    #modalRefundDetail .modal-header,
    #cardChangeModal .modal-header {
        border-bottom: 1px solid var(--sfn-border-light);
        padding: 14px 16px;
        display: flex;
        justify-content: space-between;
        align-items: center;
    }

    /* 상단 X버튼 표시 */
    #paymentHistoryModal .modal-header .modal-close-btn-mobile,
    #subscribeGuideModal .modal-header .modal-close-btn-mobile,
    #privacyModal .modal-header .modal-close-btn-mobile,
    #modalRefundConfirm .modal-header .modal-close-btn-mobile,
    #modalRefundDetail .modal-header .modal-close-btn-mobile,
    #cardChangeModal .modal-header .modal-close-btn-mobile {
        display: block !important;
        background: none;
        border: none;
        font-size: 24px;
        color: #6c757d;
        cursor: pointer;
        padding: 0;
        line-height: 1;
    }

    #paymentHistoryModal .modal-header .modal-close-btn-mobile:hover,
    #subscribeGuideModal .modal-header .modal-close-btn-mobile:hover,
    #privacyModal .modal-header .modal-close-btn-mobile:hover,
    #modalRefundConfirm .modal-header .modal-close-btn-mobile:hover,
    #modalRefundDetail .modal-header .modal-close-btn-mobile:hover,
    #cardChangeModal .modal-header .modal-close-btn-mobile:hover {
        color: var(--sfn-text);
    }

    /* 하단 닫기버튼 숨김 */
    #paymentHistoryModal .modal-footer .modal-close-btn-pc,
    #subscribeGuideModal .modal-footer .modal-close-btn-pc,
    #privacyModal .modal-footer .modal-close-btn-pc,
    #modalRefundConfirm .modal-footer .modal-close-btn-pc,
    #modalRefundDetail .modal-footer .modal-close-btn-pc,
    #cardChangeModal .modal-footer .modal-close-btn-pc {
        display: none !important;
    }

    /* 모달 타이틀 스타일 */
    #paymentHistoryModal .modal-title,
    #subscribeGuideModal .modal-title,
    #privacyModal .modal-title,
    #modalRefundConfirm .modal-title,
    #modalRefundDetail .modal-title,
    #cardChangeModal .modal-title {
        font-weight: 600;
        font-size: 1.1rem;
    }

    /* 모달 푸터 스타일 */
    #paymentHistoryModal .modal-footer,
    #privacyModal .modal-footer,
    #modalRefundConfirm .modal-footer,
    #modalRefundDetail .modal-footer,
    #cardChangeModal .modal-footer {
        display: flex;
        flex-direction: row-reverse;
        gap: 8px;
        padding: 1rem;
    }

    #paymentHistoryModal .modal-footer .btn,
    #privacyModal .modal-footer .btn,
    #modalRefundConfirm .modal-footer .btn,
    #modalRefundDetail .modal-footer .btn,
    #cardChangeModal .modal-footer .btn {
        flex: 1;
        margin: 0;
    }

    /* 닫기 버튼만 있는 모달은 footer 구분선 제거 */
    #paymentHistoryModal .modal-footer,
    #privacyModal .modal-footer,
    #modalRefundDetail .modal-footer {
        border-top: none !important;
    }

    /* 가이드 모달 - footer 전체 숨김 */
    #subscribeGuideModal .modal-footer {
        display: none !important;
    }

    /* 딤 영역 드래그 방지 + iOS 대응 */
    #paymentHistoryModal.modal,
    #subscribeGuideModal.modal,
    #privacyModal.modal,
    #modalRefundConfirm.modal,
    #modalRefundDetail.modal,
    #cardChangeModal.modal {
        overflow: hidden;
        touch-action: none;
        position: fixed !important;
        width: 100% !important;
        height: 100% !important;
        top: 0 !important;
        left: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
    }

    /* ========================================
       customAlert 모달 (동적 생성) 스타일
       ======================================== */

    /* customAlert 모달 - 모바일 */
    .modal-type-alert.modal.show {
        display: flex !important;
        align-items: center;
        justify-content: center;
    }

    .modal-type-alert .modal-dialog {
        margin: 0;
        width: 90%;
        max-width: 320px;
    }

    .modal-type-alert .modal-content {
        border-radius: 11px;
        height: auto !important;
    }

    /* 모바일에서도 헤더 숨김 */
    .modal-type-alert .modal-header {
        display: none !important;
    }

    .modal-type-alert .modal-body {
        text-align: center;
        padding: 24px 20px 12px;
    }

    .modal-type-alert .modal-body p {
        margin: 0;
        font-size: 15px;
        line-height: 1.6;
        color: var(--sfn-text);
    }

    /* 버튼 순서: 회색(왼쪽) - 파랑(오른쪽) */
    .modal-type-alert .modal-footer {
        display: flex;
        flex-direction: row;
        justify-content: center;
        gap: 8px;
        padding: 12px 20px 20px;
        border-top: none !important;
        margin-top: 0 !important;
    }

    .modal-type-alert .modal-footer .btn {
        flex: 1;
        margin: 0;
        max-width: 120px;
    }

    .modal-type-alert.modal {
        overflow: hidden;
        touch-action: none;
        position: fixed !important;
        width: 100% !important;
        height: 100% !important;
        top: 0 !important;
        left: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
    }

    /* ----- 구독 아이템 레이아웃 ----- */
    .subscription-list-item > .d-flex.align-items-center.justify-content-between {
        flex-direction: column !important;
        align-items: flex-start !important;
    }

    /* 제목과 구독중 태그 가로 정렬 유지 */
    .subscription-list-item .flex-grow-1 > .d-flex.align-items-center.mb-2 {
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        flex-wrap: nowrap !important;
    }

    .subscription-list-item .flex-grow-1 > .d-flex.align-items-center.mb-2 h6 {
        margin-right: 8px !important;
        margin-bottom: 0 !important;
    }

    .subscription-list-item .flex-grow-1 > .d-flex.align-items-center.mb-2 .badge {
        flex-shrink: 0 !important;
    }

    /* 관리 버튼 오른쪽 정렬 */
    .subscription-actions {
        width: 100% !important;
        display: flex !important;
        justify-content: flex-end !important;
        margin-top: 12px !important;
    }

    /* ----- 관리 버튼 (white-bt 스타일) ----- */
    .subscription-actions .dropdown .btn-outline-primary {
        background-color: var(--sfn-bg-card) !important;
        border: 1px solid #d0d0d0 !important;
        color: var(--sfn-text) !important;
        border-radius: 8px !important;
        display: inline-flex !important;
        align-items: center !important;
        gap: 4px !important;
        padding: 6px 10px !important;
        font-size: 13px !important;
        font-weight: 500 !important;
    }

    .subscription-actions .dropdown .btn-outline-primary:hover,
    .subscription-actions .dropdown .btn-outline-primary:focus {
        background-color: #f8f9fa !important;
        border-color: #c0c0c0 !important;
    }

    /* 아이콘에 파란색 원 배경 */
    .subscription-actions .dropdown .btn-outline-primary i.bx-cog {
        background-color: var(--sfn-action) !important;
        color: var(--sfn-text-on-primary) !important;
        width: 20px !important;
        height: 20px !important;
        border-radius: 50% !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        font-size: 12px !important;
        flex-shrink: 0 !important;
        margin: 0 !important;
    }

    /* ----- 환불 상세 정보 모달 레이아웃 ----- */
    #modalRefundDetail .modal-body {
        overflow-y: scroll !important;
        -webkit-overflow-scrolling: touch !important;
        max-height: calc(55vh - 120px) !important;
        padding: 16px !important;
        box-sizing: border-box !important;
    }

    #modalRefundDetail .row {
        width: 100% !important;
        margin: 0 !important;
        display: flex !important;
        flex-wrap: wrap !important;
    }

    #modalRefundDetail .col-md-6 {
        flex: 0 0 100% !important;
        max-width: 100% !important;
        margin-bottom: 12px !important;
        padding: 0 !important;
    }

    #modalRefundDetail .col-12 {
        flex: 0 0 100% !important;
        max-width: 100% !important;
        padding: 0 !important;
        margin-bottom: 12px !important;
    }

    #modalRefundDetail .card {
        margin: 0 !important;
        width: 100% !important;
    }

    #modalRefundDetail .card-body {
        padding: 12px !important;
    }

    #modalRefundDetail h6.card-title {
        font-size: 14px !important;
        margin-bottom: 12px !important;
    }

    #modalRefundDetail .card-body > div {
        margin-bottom: 8px !important;
        font-size: 13px !important;
    }

    #modalRefundDetail .card-body > div:last-child {
        margin-bottom: 0 !important;
    }

    #modalRefundDetail .fw-semibold {
        word-break: break-all !important;
    }

    /* ----- 결제 히스토리 모달 테이블 카드 스타일 ----- */
    #paymentHistoryModal .table-responsive {
        overflow: visible !important;
    }

    #paymentHistoryModal .table thead {
        display: none !important;
    }

    #paymentHistoryModal .table tbody {
        display: flex !important;
        flex-direction: column !important;
        gap: 12px !important;
    }

    #paymentHistoryModal .table tbody tr {
        display: block !important;
        background: #f8f9fa !important;
        border: 1px solid var(--sfn-border-light) !important;
        border-radius: 8px !important;
        padding: 12px !important;
    }

    #paymentHistoryModal .table tbody tr td {
        display: flex !important;
        justify-content: space-between !important;
        align-items: center !important;
        padding: 6px 0 !important;
        border: none !important;
    }

    #paymentHistoryModal .table tbody tr td::before {
        font-weight: 600 !important;
        color: var(--sfn-text) !important;
        font-size: 13px !important;
        margin-right: 12px !important;
    }

    #paymentHistoryModal .table tbody tr td:nth-child(1)::before {
        content: '결제일시' !important;
    }

    #paymentHistoryModal .table tbody tr td:nth-child(2)::before {
        content: '금액' !important;
    }

    #paymentHistoryModal .table tbody tr td:nth-child(3)::before {
        content: '상태' !important;
    }

    #paymentHistoryModal .table tbody tr td:nth-child(4)::before {
        content: '결제타입' !important;
    }

    #paymentHistoryModal .table tbody tr td:nth-child(5)::before {
        content: '상품명' !important;
    }

    /* ----- 상품보기 버튼 (white-bt 스타일) ----- */
    .card-header #productListBtn {
        background-color: var(--sfn-bg-card) !important;
        border: 1px solid #d0d0d0 !important;
        color: var(--sfn-text) !important;
        border-radius: 8px !important;
        display: inline-flex !important;
        align-items: center !important;
        gap: 4px !important;
        padding: 6px 10px !important;
        font-size: 13px !important;
        font-weight: 500 !important;
    }

    .card-header #productListBtn:hover,
    .card-header #productListBtn:focus {
        background-color: #f8f9fa !important;
        border-color: #c0c0c0 !important;
    }

    /* 아이콘에 파란색 원 배경 */
    .card-header #productListBtn i.bx-store {
        background-color: var(--sfn-action) !important;
        color: var(--sfn-text-on-primary) !important;
        width: 20px !important;
        height: 20px !important;
        border-radius: 50% !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        font-size: 12px !important;
        flex-shrink: 0 !important;
        margin: 0 !important;
    }
}
