/* ===================================================== ADO2 Contents Page Styles ===================================================== */ .ado2-contents-page { padding: 32px; min-height: 100%; background-color: var(--color-bg-darker); } .ado2-contents-header { display: flex; align-items: baseline; gap: 16px; margin-bottom: 16px; } .ado2-sort-pills { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 20px; } .ado2-sort-pill { padding: 6px 14px; border-radius: 20px; border: 1px solid rgba(155, 202, 204, 0.3); background: transparent; color: #9BCACC; font-size: 13px; cursor: pointer; transition: background 0.15s, color 0.15s, border-color 0.15s; white-space: nowrap; } .ado2-sort-pill:hover { background: rgba(155, 202, 204, 0.1); color: #fff; } .ado2-sort-pill.active { background: #1A8F93; border-color: #1A8F93; color: #fff; font-weight: 600; } .ado2-contents-title { font-size: 32px; font-weight: 700; color: var(--color-text-white); letter-spacing: -0.6%; } .ado2-contents-count { font-size: 17px; font-weight: 500; color: #9BCACC; } .ado2-contents-filters { display: flex; align-items: center; gap: 12px; margin-bottom: 24px; flex-wrap: wrap; } .ado2-filter-select { height: 38px; padding: 0 12px; border-radius: 8px; border: 1px solid rgba(255,255,255,0.15); background: rgba(255,255,255,0.07); color: var(--color-text-white); font-size: 14px; cursor: pointer; outline: none; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23aaa' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; padding-right: 30px; min-width: 110px; } .ado2-filter-select:focus { border-color: rgba(155,202,204,0.5); } .ado2-filter-select option { background: #1e2a2b; color: var(--color-text-white); } .ado2-filter-search { display: flex; gap: 8px; flex: 1; max-width: 360px; } .ado2-filter-input { flex: 1; height: 38px; padding: 0 12px; border-radius: 8px; border: 1px solid rgba(255,255,255,0.15); background: rgba(255,255,255,0.07); color: var(--color-text-white); font-size: 14px; outline: none; } .ado2-filter-input::placeholder { color: rgba(255,255,255,0.35); } .ado2-filter-input:focus { border-color: rgba(155,202,204,0.5); } .ado2-filter-btn { height: 38px; padding: 0 16px; border-radius: 8px; border: none; background: #9BCACC; color: #1a2a2b; font-size: 14px; font-weight: 600; cursor: pointer; white-space: nowrap; } .ado2-filter-btn:hover { background: #7db8bb; } .ado2-order-btn { height: 38px; width: 38px; border-radius: 8px; border: 1px solid rgba(255,255,255,0.15); background: rgba(255,255,255,0.07); color: var(--color-text-white); font-size: 18px; cursor: pointer; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .ado2-order-btn:hover { background: rgba(155,202,204,0.2); border-color: rgba(155,202,204,0.5); } .ado2-region-pill { display: inline-flex; align-items: center; gap: 6px; height: 38px; padding: 0 16px; border-radius: 999px; border: 1.5px solid rgba(255,255,255,0.25); background: transparent; color: rgba(255,255,255,0.5); font-size: 14px; cursor: pointer; white-space: nowrap; transition: border-color 0.15s, color 0.15s, background 0.15s; } .ado2-region-pill:hover { border-color: rgba(155,202,204,0.6); color: var(--color-text-white); } .ado2-region-pill.active { border-color: #9BCACC; color: #9BCACC; background: rgba(155,202,204,0.08); } .ado2-region-clear { font-size: 12px; color: rgba(155,202,204,0.7); padding: 1px 3px; border-radius: 4px; line-height: 1; } .ado2-region-clear:hover { color: #9BCACC; background: rgba(155,202,204,0.15); } .city-modal-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,0.6); z-index: 1000; display: flex; align-items: center; justify-content: center; } .city-modal { background: #1a2a2b; border: 1px solid rgba(255,255,255,0.12); border-radius: 16px; width: 375px; max-width: 92vw; display: flex; flex-direction: column; } .city-modal-header { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px 14px; border-bottom: 1px solid rgba(255,255,255,0.08); flex-shrink: 0; } .city-modal-title { font-size: 16px; font-weight: 600; color: var(--color-text-white); display: flex; align-items: center; gap: 8px; } .city-modal-back { background: none; border: none; color: rgba(255,255,255,0.6); font-size: 18px; cursor: pointer; padding: 0 4px; line-height: 1; } .city-modal-back:hover { color: var(--color-text-white); } .city-modal-close { background: none; border: none; color: rgba(255,255,255,0.5); font-size: 16px; cursor: pointer; padding: 4px 6px; border-radius: 6px; } .city-modal-close:hover { color: var(--color-text-white); background: rgba(255,255,255,0.08); } .city-modal-grid { display: flex; flex-direction: column; padding: 8px 0; } .city-modal-region-item { display: flex; align-items: center; gap: 8px; width: 100%; padding: 14px 20px; background: none; border: none; border-bottom: 1px solid rgba(255,255,255,0.05); color: var(--color-text-white); font-size: 15px; cursor: pointer; text-align: left; } .city-modal-region-item:hover { background: rgba(255,255,255,0.05); } .city-modal-region-item.has-selected { color: #9BCACC; } .city-modal-region-badge { font-size: 12px; background: rgba(155,202,204,0.2); color: #9BCACC; border-radius: 10px; padding: 2px 8px; } .city-modal-arrow { margin-left: auto; color: rgba(255,255,255,0.3); font-size: 18px; } .city-modal-item-wrap { display: flex; flex-wrap: wrap; gap: 8px; padding: 12px 16px 20px; } .city-modal-item { padding: 7px 16px; border-radius: 20px; border: 1px solid rgba(255,255,255,0.15); background: rgba(255,255,255,0.05); color: var(--color-text-white); font-size: 13px; cursor: pointer; white-space: nowrap; } .city-modal-item:hover { background: rgba(155,202,204,0.15); border-color: rgba(155,202,204,0.4); } .city-modal-item.active { background: #9BCACC; border-color: #9BCACC; color: #1a2a2b; font-weight: 600; } .city-modal-item-all { border-style: dashed; border-color: rgba(255,255,255,0.3); } .city-modal-item-all.active { border-style: solid; } .ado2-contents-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; } .ado2-content-card { display: flex; flex-direction: column; border-radius: 20px; overflow: hidden; background-color: #034A4D; } .content-card-thumbnail { width: 100%; aspect-ratio: 9 / 16; background-color: #01393B; display: flex; align-items: center; justify-content: center; overflow: hidden; } .content-video-preview { width: 100%; height: 100%; object-fit: cover; } .content-no-video { color: #6AB0B3; display: flex; align-items: center; justify-content: center; } /* ADO2 갤러리 호버 오버레이 */ .ado2-gallery-thumbnail-wrap { position: relative; } .ado2-gallery-overlay { position: absolute; inset: 0; background: rgba(0, 0, 0, 0); display: flex; align-items: center; justify-content: center; transition: background 0.2s ease; pointer-events: none; } .ado2-gallery-thumbnail-wrap:hover .ado2-gallery-overlay { background: rgba(0, 0, 0, 0.45); } .ado2-gallery-play-btn { width: 56px; height: 56px; border-radius: 50%; background: rgba(255, 255, 255, 0.9); color: #01282A; display: flex; align-items: center; justify-content: center; opacity: 0; transform: scale(0.8); transition: opacity 0.2s ease, transform 0.2s ease; padding-left: 4px; } .ado2-gallery-thumbnail-wrap:hover .ado2-gallery-play-btn { opacity: 1; transform: scale(1); } .content-card-info { padding: 16px; display: flex; flex-direction: column; gap: 16px; } .content-card-text { display: flex; flex-direction: column; gap: 2px; } .content-card-title { font-size: 18px; font-weight: 700; color: var(--color-text-white); letter-spacing: -0.6%; margin: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .content-card-social { display: inline-flex; align-items: center; justify-content: center; gap: 10px; font-size: 15px; font-weight: 500; color: #9BCACC; white-space: nowrap; flex-shrink: 0; margin-left: 8px; } .content-card-like-btn { display: inline-flex; align-items: center; gap: 4px; background: none; border: none; padding: 0; font: inherit; color: #9BCACC; cursor: pointer; transition: color 0.2s; } .content-card-like-btn:hover { color: #fff; } .content-card-like-btn.liked { color: #ff6b6b; } .content-card-comment { display: inline-flex; align-items: center; gap: 4px; } .content-card-share-btn { display: inline-flex; align-items: center; justify-content: center; background: none; border: none; padding: 0; color: #9BCACC; cursor: pointer; transition: color 0.2s; } .content-card-share-btn:hover { color: #fff; } .content-card-date { font-size: 14px; font-weight: 400; color: #6AB0B3; letter-spacing: -0.6%; margin: 0; } .content-card-actions { display: flex; gap: 6px; } .content-download-btn { flex: 1; display: flex; align-items: center; justify-content: center; gap: 4px; padding: 10px 10px 10px 8px; height: 34px; background-color: #462E64; border: none; border-radius: 8px; color: #F7F1FE; font-size: 14px; font-weight: 600; cursor: pointer; transition: background-color 0.2s; } .content-download-btn:hover:not(:disabled) { background-color: #563d7a; } .content-download-btn:disabled { opacity: 0.5; cursor: not-allowed; } .content-download-btn svg { stroke: #F7F1FE; } .content-delete-btn { width: 34px; height: 34px; display: flex; align-items: center; justify-content: center; padding: 8px; background-color: #01393B; border: none; border-radius: 8px; color: #6AB0B3; cursor: pointer; transition: background-color 0.2s; } .content-delete-btn:hover { background-color: #024648; } .content-delete-btn svg { stroke: #6AB0B3; } /* Loading, Error, Empty States */ .ado2-contents-loading, .ado2-contents-error, .ado2-contents-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px; gap: 16px; color: #9BCACC; } .ado2-contents-loading .loading-spinner { width: 40px; height: 40px; border: 3px solid #01393B; border-top-color: #6AB0B3; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .retry-btn { padding: 10px 20px; background-color: #034A4D; border: 1px solid #6AB0B3; border-radius: 8px; color: #6AB0B3; font-size: 14px; cursor: pointer; transition: background-color 0.2s; } .retry-btn:hover { background-color: #024648; } /* Pagination */ .ado2-contents-pagination { display: flex; align-items: center; justify-content: center; gap: 16px; margin-top: 32px; padding-bottom: 32px; } .pagination-btn { padding: 10px 20px; background-color: #034A4D; border: 1px solid #6AB0B3; border-radius: 8px; color: #6AB0B3; font-size: 14px; cursor: pointer; transition: background-color 0.2s; } .pagination-btn:hover:not(:disabled) { background-color: #024648; } .pagination-btn:disabled { opacity: 0.5; cursor: not-allowed; } /* ── VideoDetailPage / VideoDetailModal ─────────────────────────── */ /* 모달 내부 콘텐츠 (풀페이지의 video-detail-page와 동일 스타일, 배경 제외) */ .video-detail-modal-content { color: #fff; padding: 24px 32px; } .video-detail-page-content { color: #fff; padding: 0; flex: 1; display: flex; flex-direction: column; } /* 모달 닫기 버튼 */ .video-detail-close-btn { display: flex; align-items: center; justify-content: center; background: none; border: none; color: #9BCACC; cursor: pointer; padding-bottom: 8px; margin-left: auto; transition: color 0.2s; } .video-detail-close-btn:hover { color: #fff; } .video-detail-page { min-height: 100vh; background: #01282A; color: #fff; padding: 24px 32px; max-width: 900px; margin: 0 auto; display: flex; flex-direction: column; } .video-detail-header { /* margin-bottom: 24px; */ } .video-detail-back-btn { display: flex; align-items: center; gap: 6px; background: none; border: none; color: #9BCACC; font-size: 14px; cursor: pointer; padding: 4px 0; transition: color 0.2s; } .video-detail-back-btn:hover { color: #fff; } .video-detail-content { display: flex; gap: 32px; flex-wrap: wrap; align-items: center; flex: 1; margin: auto 0; } /* 가로 영상: 영상 위, 정보 아래 */ .video-detail-content.landscape { flex-direction: column; } .video-detail-player { display: block; width: 100%; height: auto; max-width: 360px; border-radius: 12px; flex-shrink: 0; } .video-detail-content.landscape .video-detail-player { max-width: 100%; width: 100%; } .video-detail-info { flex: 1 1 220px; display: flex; flex-direction: column; gap: 12px; padding-top: 8px; align-self: flex-start; } .video-detail-content.landscape .video-detail-info { flex: 1 1 auto; width: 100%; align-self: stretch; padding-top: 0; } .video-detail-store { font-size: 22px; font-weight: 600; margin: 0; line-height: 1.3; } .video-detail-date { font-size: 14px; color: #9BCACC; margin: 0; } .video-detail-copy-btn { display: inline-flex; align-items: center; gap: 6px; padding: 10px 16px; background: #034A4D; border: 1px solid #6AB0B3; border-radius: 8px; color: #9BCACC; font-size: 14px; cursor: pointer; transition: background 0.2s, color 0.2s; width: fit-content; } .video-detail-copy-btn:hover { background: #024648; color: #fff; } .video-detail-copy-btn.copied { background: #1A8F93; border-color: #1A8F93; color: #fff; } .video-detail-share-menu { position: absolute; top: calc(100% + 6px); left: 0; z-index: 100; background: #012023; border: 1px solid #2A6669; border-radius: 10px; padding: 6px; min-width: 160px; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5); display: flex; flex-direction: column; gap: 2px; } .video-detail-share-item { display: flex; align-items: center; gap: 10px; padding: 9px 12px; background: transparent; border: none; border-radius: 7px; color: #C5E8EA; font-size: 14px; cursor: pointer; transition: background 0.15s; width: 100%; text-align: left; } .video-detail-share-item:hover { background: #023E42; color: #fff; } /* 비로그인 플레이스홀더 */ .video-detail-placeholder { flex: 1 1 320px; max-width: 480px; aspect-ratio: 9/16; max-height: 80vh; background: #034A4D; border-radius: 12px; filter: blur(4px); opacity: 0.4; } .video-detail-placeholder-text { height: 24px; background: #034A4D; border-radius: 6px; opacity: 0.4; filter: blur(4px); } .video-detail-placeholder-text.short { width: 60%; height: 16px; } /* ── 댓글 섹션 ─────────────────────────────── */ .video-detail-comments { border-top: 1px solid rgba(155, 202, 204, 0.2); padding-top: 20px; margin-top: 8px; } .video-detail-comments-header { display: flex; align-items: center; gap: 8px; margin-bottom: 16px; } .video-detail-comments-count { font-size: 14px; color: #9BCACC; font-weight: 500; } /* 댓글 작성자 프로필 */ .video-detail-comment-profile { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; } .video-detail-comment-profile-avatar-wrap { position: relative; flex-shrink: 0; } .video-detail-avatar-change-btn { position: absolute; bottom: -4px; right: -4px; width: 18px; height: 18px; border-radius: 50%; background: #1A8F93; border: none; color: #fff; font-size: 11px; cursor: pointer; display: flex; align-items: center; justify-content: center; line-height: 1; } .video-detail-nickname-input { flex: 0 0 auto; width: 200px; background: #034A4D; border: 1px solid rgba(155, 202, 204, 0.25); border-radius: 8px; padding: 8px 12px; color: #fff; font-size: 13px; outline: none; } .video-detail-nickname-input::placeholder { color: #6B9EA0; } .video-detail-nickname-input:focus { border-color: #9BCACC; } /* 댓글 닉네임 */ .video-detail-comment-nickname { font-size: 13px; font-weight: 600; color: #9BCACC; display: block; margin-bottom: 2px; } /* 날짜 + 삭제 버튼 한 줄 */ .video-detail-comment-bottom { display: flex; align-items: center; gap: 10px; margin-top: 4px; } .video-detail-comments-title { font-size: 17px; font-weight: 600; margin: 0; } .video-detail-comment-input-wrap { display: flex; gap: 8px; margin-bottom: 24px; } .video-detail-comment-input { flex: 1; background: #034A4D; border: 1px solid rgba(155, 202, 204, 0.25); border-radius: 8px; padding: 12px 16px; color: #fff; font-size: 14px; outline: none; transition: border-color 0.2s; resize: none; overflow: hidden; line-height: 1.5; min-height: 44px; font-family: inherit; } .video-detail-comment-input::placeholder { color: #6B9EA0; } .video-detail-comment-input:focus { border-color: #9BCACC; } .video-detail-comment-input:disabled { opacity: 0.5; cursor: not-allowed; } .video-detail-comment-submit { padding: 12px 20px; background: #1A8F93; border: none; border-radius: 8px; color: #fff; font-size: 14px; font-weight: 600; cursor: pointer; transition: background 0.2s; white-space: nowrap; } .video-detail-comment-submit:hover:not(:disabled) { background: #158489; } .video-detail-comment-submit:disabled { opacity: 0.4; cursor: not-allowed; } .video-detail-comments-empty { color: #6B9EA0; font-size: 14px; margin: 0; } .video-detail-comment-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 20px; } .video-detail-comment-item { display: flex; gap: 12px; } .video-detail-comment-avatar { width: 36px; height: 36px; border-radius: 50%; object-fit: cover; flex-shrink: 0; background: #034A4D; } .video-detail-comment-avatar.small { width: 28px; height: 28px; } .video-detail-comment-body { flex: 1; } .video-detail-comment-meta { display: flex; align-items: center; gap: 10px; margin-bottom: 4px; } .video-detail-comment-name { font-size: 14px; font-weight: 600; } .video-detail-comment-date { font-size: 12px; color: #6B9EA0; } .video-detail-comment-text { font-size: 14px; color: #C8E6E8; margin: 0; line-height: 1.5; word-break: break-all; overflow-wrap: break-word; } .video-detail-comment-delete { background: none; border: none; color: #6B9EA0; font-size: 12px; cursor: pointer; padding: 0; transition: color 0.2s; } .video-detail-comment-delete:hover { color: #ff6b6b; } .video-detail-reply-list { list-style: none; padding: 0; margin: 8px 0 0 0; display: flex; flex-direction: column; gap: 12px; } .video-detail-reply-item { display: flex; gap: 10px; padding-left: 4px; border-left: 2px solid rgba(155, 202, 204, 0.2); } .video-detail-comments-more { width: 100%; margin-top: 16px; padding: 10px; background: transparent; border: 1px solid rgba(155, 202, 204, 0.25); border-radius: 8px; color: #9BCACC; font-size: 14px; cursor: pointer; transition: background 0.2s; } .video-detail-comments-more:hover:not(:disabled) { background: rgba(155, 202, 204, 0.08); } .video-detail-comments-more:disabled { opacity: 0.5; cursor: not-allowed; } /* 좋아요 버튼 */ .video-detail-like-btn { display: inline-flex; align-items: center; gap: 6px; padding: 10px 16px; background: #034A4D; border: 1px solid rgba(155, 202, 204, 0.3); border-radius: 8px; color: #9BCACC; font-size: 14px; cursor: pointer; transition: background 0.2s, color 0.2s, border-color 0.2s; } .video-detail-like-btn:hover:not(:disabled) { background: #024648; color: #fff; } .video-detail-like-btn.liked { background: rgba(255, 100, 100, 0.15); border-color: rgba(255, 100, 100, 0.4); color: #ff6b6b; } .video-detail-like-btn:disabled { opacity: 0.6; cursor: not-allowed; } @media (max-width: 600px) { .video-detail-page { padding: 16px; } .video-detail-content { flex-direction: column; } .video-detail-player { max-width: 100%; width: 100%; } .video-detail-info { flex: 0 0 auto; width: 100%; align-self: auto; padding-top: 0; } } .pagination-info { color: #9BCACC; font-size: 14px; } /* Responsive */ @media (max-width: 768px) { .ado2-contents-page { padding: 16px; } .ado2-contents-header { flex-direction: column; gap: 8px; } .ado2-contents-title { font-size: 24px; } .ado2-contents-grid { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; } } @media (max-width: 480px) { .ado2-contents-page { padding: 12px; } .ado2-contents-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; } .content-card-info { padding: 10px; gap: 8px; } .content-card-social { gap: 6px; } .content-card-actions { gap: 4px; } .content-download-btn { padding: 8px 4px; } .content-download-btn span { overflow: hidden; text-overflow: ellipsis; } } /* ===================================================== Delete Confirmation Modal ===================================================== */ .delete-modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.6); display: flex; align-items: center; justify-content: center; z-index: 1000; } .delete-modal { background: linear-gradient(180deg, #1A3A3E 0%, #0D2426 100%); border: 1px solid rgba(148, 251, 224, 0.2); border-radius: 16px; padding: 32px 40px; min-width: 360px; max-width: 90vw; text-align: center; } .delete-modal-title { font-size: 18px; font-weight: 600; color: #FFFFFF; margin: 0 0 12px 0; } .delete-modal-description { font-size: 14px; color: rgba(255, 255, 255, 0.6); margin: 0 0 28px 0; } .delete-modal-actions { display: flex; gap: 12px; justify-content: center; } .delete-modal-btn { padding: 12px 32px; border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; border: none; } .delete-modal-btn.cancel { background-color: rgba(255, 255, 255, 0.1); color: #FFFFFF; border: 1px solid rgba(255, 255, 255, 0.2); } .delete-modal-btn.cancel:hover { background-color: rgba(255, 255, 255, 0.15); } .delete-modal-btn.confirm { background-color: #EF4444; color: #FFFFFF; } .delete-modal-btn.confirm:hover { background-color: #DC2626; } .delete-modal-btn:disabled { opacity: 0.5; cursor: not-allowed; } /* ============================================ Social Connect Pages ============================================ */ .social-connect-page { min-height: 100vh; display: flex; align-items: center; justify-content: center; background-color: #002224; padding: 1rem; } .social-connect-card { background-color: #0a1a1c; border-radius: 16px; padding: 3rem; max-width: 400px; width: 100%; text-align: center; border: 1px solid rgba(255, 255, 255, 0.1); } .social-connect-card.success { border-color: rgba(148, 251, 224, 0.3); } .social-connect-card.error { border-color: rgba(248, 113, 113, 0.3); } .social-connect-icon { width: 80px; height: 80px; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 1.5rem; } .social-connect-icon.success { background-color: rgba(148, 251, 224, 0.15); color: #94FBE0; } .social-connect-icon.error { background-color: rgba(248, 113, 113, 0.15); color: #f87171; } .social-connect-profile-image { width: 80px; height: 80px; border-radius: 50%; object-fit: cover; margin: 0 auto 1.5rem; border: 3px solid #94FBE0; } .social-connect-account-info { margin-bottom: 1.5rem; } .social-connect-channel-badge { display: inline-flex; align-items: center; gap: 0.375rem; padding: 0.375rem 0.875rem; background-color: rgba(148, 251, 224, 0.15); color: #94FBE0; border-radius: 9999px; font-size: 0.875rem; font-weight: 500; } .social-connect-title { font-size: 1.5rem; font-weight: 600; color: #FFFFFF; margin-bottom: 0.75rem; } .social-connect-message { font-size: 1rem; color: rgba(255, 255, 255, 0.7); margin-bottom: 0.5rem; } .social-connect-detail { font-size: 0.875rem; color: rgba(255, 255, 255, 0.5); margin-bottom: 1.5rem; } .social-connect-countdown { font-size: 0.875rem; color: #94FBE0; margin-bottom: 1rem; } .social-connect-actions { display: flex; flex-direction: column; gap: 0.75rem; } .social-connect-button { width: 100%; padding: 0.875rem 1.5rem; border-radius: 9999px; font-size: 0.875rem; font-weight: 600; cursor: pointer; transition: all 0.2s ease; border: none; background-color: #94FBE0; color: #002224; } .social-connect-button:hover { background-color: #7fe6cb; } .social-connect-button.secondary { background-color: transparent; color: #FFFFFF; border: 1px solid rgba(255, 255, 255, 0.2); } .social-connect-button.secondary:hover { background-color: rgba(255, 255, 255, 0.1); } .social-connect-spinner { width: 64px; height: 64px; margin: 0 auto 1.5rem; } .social-spinner-svg { width: 100%; height: 100%; animation: social-spinner-rotate 1.5s linear infinite; } .social-spinner-svg circle { stroke: #2dd4bf; stroke-linecap: round; stroke-dasharray: 90, 150; stroke-dashoffset: 0; animation: social-spinner-dash 1.5s ease-in-out infinite; } @keyframes social-spinner-rotate { 100% { transform: rotate(360deg); } } @keyframes social-spinner-dash { 0% { stroke-dasharray: 1, 150; stroke-dashoffset: 0; } 50% { stroke-dasharray: 90, 150; stroke-dashoffset: -35; } 100% { stroke-dasharray: 90, 150; stroke-dashoffset: -124; } } /* ============================================ My Info Page (내 정보) ============================================ */ .myinfo-page { flex: 1; padding: 2rem; max-width: 900px; background-color: var(--color-bg-darker); } .myinfo-title { font-size: 1.75rem; font-weight: 700; color: #FFFFFF; margin-bottom: 1.5rem; } /* 탭 네비게이션 */ .myinfo-tabs { display: flex; gap: 0.5rem; border-bottom: 1px solid rgba(255, 255, 255, 0.1); margin-bottom: 2rem; } .myinfo-tab { padding: 0.75rem 1rem; background: none; border: none; color: rgba(255, 255, 255, 0.5); font-size: 0.9rem; font-weight: 500; cursor: pointer; position: relative; transition: color 0.2s ease; } .myinfo-tab:hover { color: rgba(255, 255, 255, 0.8); } .myinfo-tab.active { color: #FFFFFF; } .myinfo-tab.active::after { content: ''; position: absolute; bottom: -1px; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, #a6ffea, #a682ff); } /* 탭 컨텐츠 */ .myinfo-content { display: flex; flex-direction: column; gap: 2rem; } .myinfo-section { display: flex; flex-direction: column; gap: 1rem; } .myinfo-section-title { font-size: 0.875rem; font-weight: 500; color: rgba(255, 255, 255, 0.6); text-transform: uppercase; letter-spacing: 0.05em; } .myinfo-placeholder { color: rgba(255, 255, 255, 0.5); font-size: 0.9rem; padding: 2rem; text-align: center; background: rgba(255, 255, 255, 0.03); border-radius: 12px; border: 1px solid rgba(255, 255, 255, 0.06); } .myinfo-credits-card { background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 16px; padding: 2rem; display: flex; flex-direction: column; gap: 1rem; } .myinfo-credits-row { display: flex; align-items: center; justify-content: space-between; } .myinfo-credits-label { color: rgba(255, 255, 255, 0.6); font-size: 0.95rem; } .myinfo-credits-value { color: #a6ffea; font-size: 1.4rem; font-weight: 700; letter-spacing: 0.02em; } .myinfo-credits-desc { color: rgba(255, 255, 255, 0.4); font-size: 0.85rem; margin: 0; flex: 1; } .myinfo-credits-charge-btn { padding: 0.75rem 1.25rem; background: linear-gradient(135deg, #a6ffea 0%, #7ee8cf 100%); border: none; border-radius: 8px; color: #002224; font-size: 0.875rem; font-weight: 600; cursor: pointer; white-space: nowrap; transition: all 0.2s ease; } .myinfo-credits-charge-btn:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(166, 255, 234, 0.3); } .myinfo-popup-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.6); display: flex; align-items: center; justify-content: center; z-index: 9999; } .myinfo-popup { background: #132034; border: 1px solid rgba(78, 205, 196, 0.3); border-radius: 16px; padding: 2rem; display: flex; flex-direction: column; align-items: center; gap: 1.25rem; width: 380px; max-width: 90vw; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5); } .myinfo-popup-title { color: #fff; font-size: 1.05rem; font-weight: 700; margin: 0 0 0.5rem; align-self: flex-start; } .myinfo-popup-message { color: #fff; font-size: 1.1rem; font-weight: 600; text-align: center; margin: 0; } .myinfo-popup-field { display: flex; flex-direction: column; gap: 0.4rem; width: 100%; } .myinfo-popup-label { color: rgba(255, 255, 255, 0.6); font-size: 0.85rem; } .myinfo-popup-counter { display: flex; align-items: center; gap: 0; border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 8px; overflow: hidden; } .myinfo-popup-counter-btn { background: rgba(255, 255, 255, 0.08); border: none; color: #fff; font-size: 1.25rem; width: 48px; min-width: 48px; height: 44px; cursor: pointer; transition: background 0.15s; flex-shrink: 0; } .myinfo-popup-counter-btn:hover { background: rgba(255, 255, 255, 0.15); } .myinfo-popup-input { background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 8px; color: #fff; font-size: 0.95rem; padding: 0.6rem 0.875rem; outline: none; width: 100%; box-sizing: border-box; } .myinfo-popup-input--center { border: none; border-left: 1px solid rgba(255, 255, 255, 0.12); border-right: 1px solid rgba(255, 255, 255, 0.12); border-radius: 0; text-align: center; flex: 1; height: 44px; padding: 0; } .myinfo-popup-input--center::-webkit-inner-spin-button, .myinfo-popup-input--center::-webkit-outer-spin-button { -webkit-appearance: none; } .myinfo-popup-input:focus { border-color: rgba(78, 205, 196, 0.5); } .myinfo-popup-textarea { background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 8px; color: #fff; font-size: 0.9rem; padding: 0.6rem 0.875rem; outline: none; resize: none; width: 100%; box-sizing: border-box; font-family: inherit; } .myinfo-popup-textarea:focus { border-color: rgba(78, 205, 196, 0.5); } .myinfo-popup-actions { display: flex; gap: 0.75rem; width: 100%; justify-content: flex-end; margin-top: 0.25rem; } .myinfo-popup-cancel { background: rgba(255, 255, 255, 0.08); color: rgba(255, 255, 255, 0.7); border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 8px; padding: 0.6rem 1.25rem; font-size: 0.9rem; cursor: pointer; transition: background 0.2s; } .myinfo-popup-cancel:hover { background: rgba(255, 255, 255, 0.13); } .myinfo-popup-close { background: linear-gradient(135deg, #a6ffea 0%, #7ee8cf 100%); color: #002224; border: none; border-radius: 8px; padding: 0.6rem 1.5rem; font-size: 0.9rem; font-weight: 700; cursor: pointer; transition: opacity 0.2s; } .myinfo-popup-close:disabled { opacity: 0.4; cursor: not-allowed; } .myinfo-popup-close:not(:disabled):hover { opacity: 0.85; } /* 내 비즈니스 카드 */ .myinfo-business-card { background: rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.06); border-radius: 12px; padding: 1.5rem; } .myinfo-business-empty-title { font-size: 1.1rem; font-weight: 600; color: #FFFFFF; margin-bottom: 0.5rem; } .myinfo-business-empty-desc { font-size: 0.85rem; color: rgba(255, 255, 255, 0.5); margin-bottom: 1.25rem; } .myinfo-business-input-row { display: flex; gap: 0.75rem; align-items: center; } .myinfo-business-input { flex: 1; padding: 0.75rem 1rem; background: rgba(0, 0, 0, 0.3); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 8px; color: #FFFFFF; font-size: 0.9rem; } .myinfo-business-input::placeholder { color: rgba(255, 255, 255, 0.3); } .myinfo-business-input:focus { outline: none; border-color: #a6ffea; } .myinfo-business-submit { padding: 0.75rem 1.25rem; background: linear-gradient(135deg, #a6ffea 0%, #7ee8cf 100%); border: none; border-radius: 8px; color: #002224; font-size: 0.875rem; font-weight: 600; cursor: pointer; white-space: nowrap; transition: all 0.2s ease; } .myinfo-business-submit:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(166, 255, 234, 0.3); } /* 소셜 채널 버튼들 (가로 배치) */ .myinfo-social-buttons { display: flex; gap: 0.75rem; flex-wrap: wrap; } .myinfo-social-btn { display: flex; align-items: center; gap: 0.5rem; padding: 0.625rem 1rem; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 8px; color: #FFFFFF; font-size: 0.875rem; font-weight: 500; cursor: pointer; transition: all 0.2s ease; } .myinfo-social-btn:hover:not(:disabled) { background: rgba(255, 255, 255, 0.1); border-color: rgba(255, 255, 255, 0.25); } .myinfo-social-btn.connected { border-color: rgba(166, 255, 234, 0.4); background: rgba(166, 255, 234, 0.08); } .myinfo-social-btn:disabled, .myinfo-social-btn.disabled { opacity: 0.5; cursor: not-allowed; } .myinfo-social-btn-icon { width: 20px; height: 20px; border-radius: 4px; object-fit: cover; } /* 연결된 계정 목록 */ .myinfo-connected-accounts { display: flex; flex-direction: column; gap: 0.75rem; margin-top: 1.25rem; } .myinfo-connected-card { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.25rem; background: rgba(166, 255, 234, 0.03); border: 1px solid rgba(166, 255, 234, 0.15); border-radius: 12px; } .myinfo-connected-info { display: flex; align-items: center; gap: 0.875rem; } .myinfo-connected-avatar { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; } .myinfo-connected-icon { width: 40px; height: 40px; border-radius: 10px; display: flex; align-items: center; justify-content: center; overflow: hidden; } .myinfo-connected-icon img { width: 100%; height: 100%; object-fit: cover; } .myinfo-connected-text { display: flex; flex-direction: column; gap: 0.125rem; } .myinfo-connected-channel { font-size: 0.9rem; font-weight: 600; color: #FFFFFF; } .myinfo-connected-platform { font-size: 0.7rem; color: rgba(255, 255, 255, 0.5); text-transform: uppercase; letter-spacing: 0.05em; } .myinfo-connected-actions { display: flex; align-items: center; gap: 0.75rem; } .myinfo-connected-badge { display: flex; align-items: center; gap: 0.375rem; font-size: 0.75rem; font-weight: 500; color: #a6ffea; } .myinfo-connected-disconnect { padding: 0.375rem 0.75rem; background: transparent; border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 6px; color: rgba(255, 255, 255, 0.6); font-size: 0.75rem; cursor: pointer; transition: all 0.2s ease; } .myinfo-connected-disconnect:hover { background: rgba(248, 113, 113, 0.1); border-color: rgba(248, 113, 113, 0.3); color: #f87171; } .myinfo-loading { font-size: 0.85rem; color: rgba(255, 255, 255, 0.5); text-align: center; padding: 0.5rem; margin-top: 1rem; } /* 모바일 반응형 */ @media (max-width: 768px) { .myinfo-page { padding: 1.25rem; } .myinfo-title { font-size: 1.5rem; } .myinfo-tabs { overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; } .myinfo-tabs::-webkit-scrollbar { display: none; } .myinfo-tab { white-space: nowrap; padding: 0.625rem 0.75rem; font-size: 0.8rem; } .myinfo-business-input-row { flex-direction: column; } .myinfo-business-submit { width: 100%; } } /* ===================================================== Content Upload Button (ADO2 콘텐츠 페이지) ===================================================== */ .content-upload-btn { width: 34px; height: 34px; display: flex; align-items: center; justify-content: center; padding: 8px; background-color: #01393B; border: none; border-radius: 8px; color: #6AB0B3; cursor: pointer; transition: background-color 0.2s; } .content-upload-btn:hover:not(:disabled) { background-color: #024648; } .content-upload-btn:disabled { opacity: 0.5; cursor: not-allowed; } .content-upload-btn svg { stroke: #6AB0B3; }