diff --git a/miniapp/index.html b/miniapp/index.html index b1f33202..5058bea8 100644 --- a/miniapp/index.html +++ b/miniapp/index.html @@ -705,6 +705,368 @@ color: #fff; } + .purchase-card .card-header { + cursor: default; + } + + .purchase-card-subtitle { + font-size: 13px; + color: var(--text-secondary); + margin-top: 6px; + line-height: 1.5; + } + + .purchase-content { + display: flex; + flex-direction: column; + gap: 20px; + padding-top: 12px; + } + + .purchase-loading { + padding: 28px 0; + display: flex; + flex-direction: column; + align-items: center; + gap: 12px; + text-align: center; + } + + .purchase-loading .spinner { + width: 42px; + height: 42px; + } + + .purchase-loading-text { + font-size: 14px; + color: var(--text-secondary); + font-weight: 600; + } + + .purchase-error { + padding: 16px; + border-radius: var(--radius); + background: rgba(var(--danger-rgb), 0.08); + border: 1px solid rgba(var(--danger-rgb), 0.2); + display: flex; + flex-direction: column; + gap: 12px; + } + + .purchase-error-text { + font-size: 14px; + color: var(--text-primary); + line-height: 1.5; + } + + .purchase-retry-button { + align-self: flex-start; + padding: 10px 16px; + border-radius: var(--radius); + border: none; + background: var(--primary); + color: #fff; + font-weight: 600; + cursor: pointer; + box-shadow: var(--shadow-sm); + transition: transform 0.2s ease, box-shadow 0.2s ease; + } + + .purchase-retry-button:hover { + transform: translateY(-1px); + box-shadow: var(--shadow-md); + } + + .purchase-section { + display: flex; + flex-direction: column; + gap: 14px; + border-bottom: 1px solid var(--border-color); + padding-bottom: 18px; + } + + .purchase-section:last-child { + border-bottom: none; + padding-bottom: 0; + } + + .purchase-section-header { + display: flex; + justify-content: space-between; + gap: 12px; + align-items: flex-start; + } + + .purchase-section-title { + font-size: 16px; + font-weight: 700; + color: var(--text-primary); + } + + .purchase-section-description { + font-size: 13px; + color: var(--text-secondary); + margin-top: 4px; + line-height: 1.5; + } + + .purchase-section-meta { + font-size: 12px; + color: var(--text-secondary); + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.04em; + } + + .purchase-options-grid { + display: flex; + flex-wrap: wrap; + gap: 12px; + } + + .purchase-option { + flex: 1 1 calc(50% - 12px); + min-width: 140px; + padding: 14px; + border-radius: var(--radius); + border: 1px solid var(--border-color); + background: var(--bg-primary); + color: var(--text-primary); + text-align: left; + cursor: pointer; + display: flex; + flex-direction: column; + gap: 6px; + transition: all 0.2s ease; + } + + .purchase-option:hover { + border-color: rgba(var(--primary-rgb), 0.6); + box-shadow: var(--shadow-sm); + } + + .purchase-option.active { + border-color: transparent; + background: linear-gradient(135deg, rgba(var(--primary-rgb), 0.16), rgba(var(--primary-rgb), 0.08)); + box-shadow: var(--shadow-md); + } + + .purchase-option-title { + font-size: 15px; + font-weight: 700; + } + + .purchase-option-price { + display: flex; + align-items: baseline; + gap: 6px; + font-weight: 700; + } + + .purchase-option-price s { + font-size: 12px; + color: var(--text-secondary); + opacity: 0.7; + } + + .purchase-option-hint { + font-size: 12px; + color: var(--text-secondary); + line-height: 1.4; + } + + .purchase-option-badges { + display: flex; + flex-wrap: wrap; + gap: 6px; + } + + .purchase-option-badge { + display: inline-flex; + align-items: center; + padding: 4px 8px; + border-radius: 999px; + font-size: 11px; + font-weight: 600; + background: rgba(var(--primary-rgb), 0.12); + color: var(--primary); + text-transform: uppercase; + letter-spacing: 0.04em; + } + + .purchase-meta-note { + font-size: 12px; + color: var(--text-secondary); + line-height: 1.4; + } + + .purchase-servers-chips { + display: flex; + flex-wrap: wrap; + gap: 8px; + } + + .purchase-chip { + border-radius: 999px; + padding: 8px 14px; + background: var(--bg-primary); + border: 1px solid var(--border-color); + color: var(--text-primary); + font-size: 13px; + font-weight: 600; + cursor: pointer; + transition: all 0.2s ease; + } + + .purchase-chip:hover { + border-color: rgba(var(--primary-rgb), 0.6); + box-shadow: var(--shadow-sm); + } + + .purchase-chip.active { + background: var(--primary); + border-color: transparent; + color: #fff; + box-shadow: var(--shadow-md); + } + + .purchase-stepper { + display: flex; + align-items: center; + gap: 12px; + } + + .purchase-stepper button { + width: 40px; + height: 40px; + border-radius: var(--radius); + border: 1px solid var(--border-color); + background: var(--bg-primary); + color: var(--text-primary); + font-size: 20px; + font-weight: 700; + cursor: pointer; + transition: all 0.2s ease; + } + + .purchase-stepper button:hover:not(:disabled) { + border-color: rgba(var(--primary-rgb), 0.6); + box-shadow: var(--shadow-sm); + } + + .purchase-stepper button:disabled { + opacity: 0.5; + cursor: not-allowed; + } + + .purchase-stepper-value { + font-size: 20px; + font-weight: 700; + } + + .purchase-summary { + border-radius: var(--radius-lg); + background: rgba(var(--primary-rgb), 0.08); + padding: 18px; + display: flex; + flex-direction: column; + gap: 12px; + } + + .purchase-summary-header { + display: flex; + justify-content: space-between; + align-items: baseline; + gap: 12px; + } + + .purchase-summary-total { + font-size: 22px; + font-weight: 700; + color: var(--text-primary); + } + + .purchase-summary-original { + font-size: 14px; + color: var(--text-secondary); + text-decoration: line-through; + } + + .purchase-summary-discount { + font-size: 13px; + color: var(--success); + font-weight: 600; + } + + .purchase-summary-line { + display: flex; + justify-content: space-between; + gap: 8px; + font-size: 13px; + color: var(--text-secondary); + } + + .purchase-summary-line strong { + color: var(--text-primary); + } + + .purchase-discount-tags { + display: flex; + flex-wrap: wrap; + gap: 6px; + } + + .purchase-discount-tag { + font-size: 12px; + font-weight: 600; + color: var(--primary); + background: rgba(var(--primary-rgb), 0.12); + border-radius: 999px; + padding: 6px 10px; + } + + .purchase-actions { + display: flex; + flex-direction: column; + gap: 10px; + } + + .purchase-actions .btn { + width: 100%; + } + + .purchase-validation { + font-size: 13px; + color: var(--danger); + line-height: 1.5; + } + + .purchase-empty { + font-size: 13px; + color: var(--text-secondary); + } + + :root[data-theme="dark"] .purchase-option, + :root[data-theme="dark"] .purchase-chip { + background: rgba(15, 23, 42, 0.8); + border-color: rgba(148, 163, 184, 0.25); + } + + :root[data-theme="dark"] .purchase-option.active, + :root[data-theme="dark"] .purchase-chip.active { + background: rgba(var(--primary-rgb), 0.25); + color: #fff; + } + + :root[data-theme="dark"] .purchase-summary { + background: rgba(var(--primary-rgb), 0.16); + } + + :root[data-theme="dark"] .purchase-error { + background: rgba(var(--danger-rgb), 0.18); + border-color: rgba(var(--danger-rgb), 0.35); + } + .promo-offers { display: flex; flex-direction: column; @@ -3345,6 +3707,87 @@ + +