diff --git a/miniapp/index.html b/miniapp/index.html index b1f33202..327307bd 100644 --- a/miniapp/index.html +++ b/miniapp/index.html @@ -705,6 +705,298 @@ color: #fff; } + .subscription-configurator-card { + position: relative; + } + + .subscription-configurator-summary { + font-size: 13px; + color: var(--text-secondary); + padding: 12px 0; + border-bottom: 1px solid var(--border-color); + } + + .subscription-configurator-summary strong { + color: var(--text-primary); + font-weight: 700; + } + + .subscription-configurator-discount-badge { + margin-left: auto; + padding: 6px 12px; + border-radius: 999px; + background: rgba(var(--primary-rgb), 0.12); + color: var(--primary); + font-size: 12px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.05em; + } + + .subscription-configurator-content { + display: flex; + flex-direction: column; + gap: 20px; + padding-top: 12px; + } + + .subscription-configurator-section { + display: flex; + flex-direction: column; + gap: 12px; + padding-bottom: 16px; + border-bottom: 1px solid var(--border-color); + } + + .subscription-configurator-section:last-child { + border-bottom: none; + } + + .subscription-configurator-section-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: 12px; + } + + .subscription-configurator-section-title { + font-size: 16px; + font-weight: 700; + color: var(--text-primary); + } + + .subscription-configurator-section-description { + font-size: 13px; + color: var(--text-secondary); + line-height: 1.45; + } + + .subscription-configurator-section-meta { + font-size: 12px; + font-weight: 600; + color: var(--text-secondary); + text-transform: uppercase; + letter-spacing: 0.04em; + } + + .subscription-configurator-options { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); + gap: 12px; + } + + .subscription-configurator-option { + position: relative; + padding: 14px; + border-radius: var(--radius); + border: 1px solid var(--border-color); + background: var(--bg-primary); + color: var(--text-primary); + font-size: 14px; + font-weight: 600; + display: flex; + flex-direction: column; + gap: 8px; + cursor: pointer; + transition: all 0.2s ease; + } + + .subscription-configurator-option:hover:not(.disabled) { + border-color: rgba(var(--primary-rgb), 0.5); + box-shadow: var(--shadow-sm); + transform: translateY(-1px); + } + + .subscription-configurator-option.active { + border-color: var(--primary); + background: linear-gradient(135deg, rgba(var(--primary-rgb), 0.12), rgba(var(--primary-rgb), 0.04)); + box-shadow: var(--shadow-sm); + } + + .subscription-configurator-option.disabled { + opacity: 0.6; + cursor: not-allowed; + } + + .subscription-configurator-option-title { + font-weight: 700; + font-size: 15px; + color: inherit; + } + + .subscription-configurator-option-meta { + font-size: 12px; + color: var(--text-secondary); + font-weight: 500; + } + + .subscription-configurator-option-price { + font-size: 13px; + font-weight: 600; + display: flex; + flex-wrap: wrap; + align-items: baseline; + gap: 8px; + } + + .subscription-configurator-option-price .original { + text-decoration: line-through; + color: var(--text-secondary); + font-size: 12px; + font-weight: 500; + } + + .subscription-configurator-option-price .current { + color: var(--text-primary); + } + + .subscription-configurator-option-price .discount { + color: var(--success); + font-size: 12px; + font-weight: 700; + } + + .subscription-configurator-fixed-value { + font-size: 14px; + color: var(--text-secondary); + font-weight: 600; + } + + .subscription-configurator-stepper { + display: flex; + align-items: center; + gap: 12px; + } + + .subscription-configurator-stepper button { + width: 42px; + height: 42px; + 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; + } + + .subscription-configurator-stepper button:hover:not(:disabled) { + border-color: rgba(var(--primary-rgb), 0.5); + box-shadow: var(--shadow-sm); + } + + .subscription-configurator-stepper button:disabled { + opacity: 0.5; + cursor: not-allowed; + } + + .subscription-configurator-stepper-value { + font-size: 20px; + font-weight: 700; + color: var(--text-primary); + min-width: 36px; + text-align: center; + } + + .subscription-configurator-devices-note { + font-size: 12px; + color: var(--text-secondary); + font-weight: 600; + } + + .subscription-configurator-footer { + display: flex; + flex-direction: column; + gap: 12px; + padding-top: 4px; + } + + .subscription-configurator-price { + display: flex; + flex-direction: column; + gap: 6px; + } + + .subscription-configurator-price-main { + display: flex; + align-items: baseline; + gap: 10px; + } + + .subscription-configurator-price-main .original { + text-decoration: line-through; + color: var(--text-secondary); + font-size: 15px; + font-weight: 600; + } + + .subscription-configurator-price-main .current { + font-size: 24px; + font-weight: 800; + color: var(--text-primary); + } + + .subscription-configurator-price-extra { + font-size: 13px; + color: var(--text-secondary); + font-weight: 600; + } + + .subscription-configurator-balance-warning { + padding: 12px 14px; + border-radius: var(--radius); + border: 1px solid rgba(var(--danger-rgb, 239, 68, 68), 0.3); + background: rgba(var(--danger-rgb, 239, 68, 68), 0.08); + display: flex; + flex-direction: column; + gap: 10px; + } + + .subscription-configurator-balance-text { + font-size: 13px; + color: var(--danger); + font-weight: 600; + } + + .subscription-configurator-actions { + display: flex; + flex-direction: column; + gap: 8px; + } + + .subscription-configurator-status { + font-size: 13px; + font-weight: 600; + } + + .subscription-configurator-status.error { + color: var(--danger); + } + + .subscription-configurator-status.success { + color: var(--success); + } + + .subscription-configurator-status.info { + color: var(--text-secondary); + } + + :root[data-theme="dark"] .subscription-configurator-option { + background: rgba(15, 23, 42, 0.6); + border-color: rgba(148, 163, 184, 0.28); + } + + :root[data-theme="dark"] .subscription-configurator-option.active { + background: rgba(37, 99, 235, 0.12); + border-color: rgba(96, 165, 250, 0.6); + } + + :root[data-theme="dark"] .subscription-configurator-balance-warning { + background: rgba(239, 68, 68, 0.2); + border-color: rgba(239, 68, 68, 0.4); + } + .promo-offers { display: flex; flex-direction: column; @@ -3350,6 +3642,94 @@
+ + +