/* dd_appstore 应用中心样式 — 对标目标站 */

/* ============ 列表页卡片网格 ============ */
.appcenter-card-icon {
	width: 64px; height: 64px; padding: 8px; object-fit: cover; flex-shrink: 0;
}
.appcenter-card-title {
	display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
	overflow: hidden; word-break: break-word; line-height: 1.3;
}
.appcenter-brief-2line {
	display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
	overflow: hidden; word-break: break-word;
}
.appcenter-card { transition: transform .15s ease, box-shadow .15s ease; }
.appcenter-card:hover { transform: translateY(-2px); }
.appcenter-grid { min-width: 0; }
.appcenter-card-info { overflow: hidden; text-overflow: ellipsis; min-width: 0; white-space: normal; word-break: break-all; }
.appcenter-cat-badge { color: #fff !important; font-size: .7rem; font-weight: 500; max-width: 80px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ============ 我的应用列表小图标 ============ */
.appstore-icon-wrap-sm {
	width: 40px; height: 40px; border-radius: .375rem; overflow: hidden;
	display: flex; align-items: center; justify-content: center; background: #f8f9fa;
}
.appstore-icon-wrap-sm img { width: 100%; height: 100%; object-fit: cover; }
.appstore-icon-wrap-sm .appstore-icon-fallback { width: 100%; height: 100%; border: none; border-radius: 0; }

/* ============ 详情页 ============ */
.appcenter-detail-icon { width: 96px; height: 96px; object-fit: cover; }
.appcenter-intro-content { line-height: 1.7; padding: 12px; word-break: break-word; }
.appcenter-intro-content img { max-width: 100%; height: auto; border-radius: .375rem; }
.appcenter-intro-content p { margin-bottom: .75rem; }
.appcenter-intro-content p:last-child { margin-bottom: 0; }

.appcenter-screenshots { min-width: 0; }
.appcenter-screenshot-item { overflow: hidden; border-radius: .375rem; transition: opacity .15s ease; cursor: pointer; }
.appcenter-screenshot-item:hover { opacity: .85; }
.appcenter-screenshot-item img { width: 100%; height: auto; display: block; }

.appcenter-changelog-item { min-width: 0; }
.appcenter-comment-item { min-width: 0; }
.appcenter-comment-item .small { word-break: break-word; }

/* ============ 筛选区 ============ */
.appcenter-filter-tab .nav-link { padding: .25rem .75rem; font-size: .875rem; }
.appcenter-filter-price .btn,
.appcenter-filter-orderby .btn { padding: .2rem .6rem; font-size: .8rem; }

.appcenter-filter-tag {
	flex-wrap: nowrap; overflow-x: auto; flex: 1 1 auto; min-width: 0;
	-webkit-overflow-scrolling: touch; scrollbar-width: none;
}
.appcenter-filter-tag::-webkit-scrollbar { display: none; }
.appcenter-filter-tag .btn { flex-shrink: 0; white-space: nowrap; }

.appcenter-search-form { min-width: 200px; }
.appcenter-search-form .form-control { width: auto; min-width: 150px; }

/* ============ 评分星星 ============ */
.appstore-stars { display: inline-block; position: relative; font-size: 1rem; white-space: nowrap; }
.appstore-stars::before { content: '\2605\2605\2605\2605\2605'; color: #e9ecef; letter-spacing: 2px; }
.appstore-stars-fill { position: absolute; left: 0; top: 0; overflow: hidden; color: #ffc107; }
.appstore-stars-fill::before { content: '\2605\2605\2605\2605\2605'; letter-spacing: 2px; }
.appstore-stars-lg { font-size: 1.5rem; }

/* ============ 评分按钮 ============ */
.appstore-rate-stars { display: inline-flex; gap: 2px; }
.appstore-rate-btn { background: none; border: none; padding: 2px; cursor: pointer; color: #e9ecef; font-size: 1.5rem; line-height: 1; transition: color .15s; }
.appstore-rate-btn:hover, .appstore-rate-btn.active { color: #ffc107; }

/* ============ 图标兜底 ============ */
.appstore-icon-fallback { display: flex; align-items: center; justify-content: center; background: #f8f9fa; color: #adb5bd; width: 64px; height: 64px; }
.appstore-icon-fallback i { font-size: 1.5rem; }

/* ============ 上传组件 ============ */
.appstore-upload-zone {
	border: 2px dashed #dee2e6; border-radius: .5rem; padding: 1.5rem 1rem;
	text-align: center; cursor: pointer; transition: border-color .15s, background .15s;
	position: relative; min-height: 80px; display: flex; align-items: center; justify-content: center; flex-direction: column;
}
.appstore-upload-zone:hover { border-color: var(--bs-primary, #0d6efd); background: rgba(13,110,253,.03); }
.appstore-upload-zone.dragover { border-color: var(--bs-primary, #0d6efd); background: rgba(13,110,253,.06); }
.appstore-upload-zone i { font-size: 2rem; color: #adb5bd; }
.appstore-upload-preview { position: relative; display: inline-block; }
.appstore-upload-preview img { width: 64px; height: 64px; object-fit: cover; border-radius: .375rem; border: 1px solid #dee2e6; }
.appstore-upload-preview .btn-remove {
	position: absolute; top: -8px; right: -8px; width: 22px; height: 22px;
	border-radius: 50%; padding: 0; font-size: .7rem; display: flex; align-items: center; justify-content: center;
}
.appstore-screenshot-preview { position: relative; }
.appstore-screenshot-preview img { width: 100%; height: 120px; object-fit: cover; border-radius: .375rem; border: 1px solid #dee2e6; }
.appstore-screenshot-preview .btn-remove {
	position: absolute; top: 4px; right: 4px; width: 24px; height: 24px;
	border-radius: 50%; padding: 0; font-size: .75rem; display: flex; align-items: center; justify-content: center;
}
.appstore-upload-progress { height: 3px; background: #e9ecef; border-radius: 2px; overflow: hidden; margin-top: .5rem; }
.appstore-upload-progress .progress-bar { height: 100%; width: 0; background: var(--bs-primary, #0d6efd); transition: width .2s; }

/* ============ 版本历史时间线 ============ */
.appstore-changelog { position: relative; padding-left: 20px; }
.appstore-cl-item { position: relative; padding-bottom: 1rem; }
.appstore-cl-item:last-child { padding-bottom: 0; }
.appstore-cl-dot { position: absolute; left: -20px; top: 4px; width: 10px; height: 10px; border-radius: 50%; background: var(--bs-primary, #0d6efd); border: 2px solid #fff; box-shadow: 0 0 0 2px var(--bs-primary, #0d6efd); }
.appstore-cl-body { min-width: 0; }
.appstore-cl-text { font-size: .875rem; color: #6c757d; }

/* ============ 动画 ============ */
@keyframes as-fade-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
.appcenter-card { animation: as-fade-in .3s ease-out; }
