@edx/frontend-app-subscription-manage 1.3.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/dist/app.js +2 -2
  2. package/dist/app.js.map +1 -1
  3. package/dist/components/ActiveSubscription/ActiveSubscription.d.ts +7 -0
  4. package/dist/components/ActiveSubscription/ActiveSubscription.js +24 -0
  5. package/dist/components/ActiveSubscription/ActiveSubscription.js.map +1 -0
  6. package/dist/components/BecomeSubscriber/BecomeSubscriber.d.ts +7 -0
  7. package/dist/components/BecomeSubscriber/BecomeSubscriber.js +19 -0
  8. package/dist/components/BecomeSubscriber/BecomeSubscriber.js.map +1 -0
  9. package/dist/components/CancelConfirmation/CancelConfirmation.d.ts +12 -0
  10. package/dist/components/CancelConfirmation/CancelConfirmation.js +21 -0
  11. package/dist/components/CancelConfirmation/CancelConfirmation.js.map +1 -0
  12. package/dist/components/CancelSuccess/CancelSuccess.d.ts +7 -0
  13. package/dist/components/CancelSuccess/CancelSuccess.js +17 -0
  14. package/dist/components/CancelSuccess/CancelSuccess.js.map +1 -0
  15. package/dist/components/CanceledSubscription/CanceledSubscription.d.ts +13 -0
  16. package/dist/components/CanceledSubscription/CanceledSubscription.js +27 -0
  17. package/dist/components/CanceledSubscription/CanceledSubscription.js.map +1 -0
  18. package/dist/components/EnrolledCoursesList/EnrolledCoursesList.d.ts +8 -0
  19. package/dist/components/EnrolledCoursesList/EnrolledCoursesList.js +20 -0
  20. package/dist/components/EnrolledCoursesList/EnrolledCoursesList.js.map +1 -0
  21. package/dist/components/HelpFooter/HelpFooter.d.ts +3 -0
  22. package/dist/components/HelpFooter/HelpFooter.js +12 -0
  23. package/dist/components/HelpFooter/HelpFooter.js.map +1 -0
  24. package/dist/components/OrderHistoryHeader/OrderHistoryHeader.d.ts +3 -0
  25. package/dist/components/OrderHistoryHeader/OrderHistoryHeader.js +9 -0
  26. package/dist/components/OrderHistoryHeader/OrderHistoryHeader.js.map +1 -0
  27. package/dist/components/PaymentHistory/PaymentHistory.d.ts +10 -0
  28. package/dist/components/PaymentHistory/PaymentHistory.js +23 -0
  29. package/dist/components/PaymentHistory/PaymentHistory.js.map +1 -0
  30. package/dist/components/RenewSubscriptionModal/RenewSubscriptionModal.d.ts +17 -0
  31. package/dist/components/RenewSubscriptionModal/RenewSubscriptionModal.js +63 -0
  32. package/dist/components/RenewSubscriptionModal/RenewSubscriptionModal.js.map +1 -0
  33. package/dist/components/ResubscribeCard/ResubscribeCard.d.ts +9 -0
  34. package/dist/components/ResubscribeCard/ResubscribeCard.js +25 -0
  35. package/dist/components/ResubscribeCard/ResubscribeCard.js.map +1 -0
  36. package/dist/components/SubscriptionTabs/SubscriptionTabs.d.ts +8 -0
  37. package/dist/components/SubscriptionTabs/SubscriptionTabs.js +9 -0
  38. package/dist/components/SubscriptionTabs/SubscriptionTabs.js.map +1 -0
  39. package/dist/components/UpdatePaymentMethodModal/UpdatePaymentMethodModal.d.ts +9 -0
  40. package/dist/components/UpdatePaymentMethodModal/UpdatePaymentMethodModal.js +135 -0
  41. package/dist/components/UpdatePaymentMethodModal/UpdatePaymentMethodModal.js.map +1 -0
  42. package/dist/components/messages.d.ts +473 -0
  43. package/dist/components/messages.js +482 -0
  44. package/dist/components/messages.js.map +1 -0
  45. package/dist/constants.d.ts +14 -56
  46. package/dist/constants.js +23 -272
  47. package/dist/constants.js.map +1 -1
  48. package/dist/data/hooks/keys.d.ts +8 -13
  49. package/dist/data/hooks/keys.js +8 -13
  50. package/dist/data/hooks/keys.js.map +1 -1
  51. package/dist/data/hooks/useManageQueries.d.ts +37 -0
  52. package/dist/data/hooks/useManageQueries.js +206 -0
  53. package/dist/data/hooks/useManageQueries.js.map +1 -0
  54. package/dist/data/services/subs/urls.d.ts +2 -2
  55. package/dist/data/services/subs/urls.js.map +1 -1
  56. package/dist/data/services/subscription/cancelSubscription.d.ts +6 -0
  57. package/dist/data/services/subscription/cancelSubscription.js +31 -0
  58. package/dist/data/services/subscription/cancelSubscription.js.map +1 -0
  59. package/dist/data/services/subscription/getBillingPlans.d.ts +3 -0
  60. package/dist/{utils/fetchBillingPlans.js → data/services/subscription/getBillingPlans.js} +10 -21
  61. package/dist/data/services/subscription/getBillingPlans.js.map +1 -0
  62. package/dist/data/services/subscription/getIsCurrentUserSubscriber.d.ts +3 -0
  63. package/dist/data/services/subscription/getIsCurrentUserSubscriber.js +35 -0
  64. package/dist/data/services/subscription/getIsCurrentUserSubscriber.js.map +1 -0
  65. package/dist/data/services/subscription/getPaymentHistory.d.ts +6 -0
  66. package/dist/data/services/subscription/getPaymentHistory.js +65 -0
  67. package/dist/data/services/subscription/getPaymentHistory.js.map +1 -0
  68. package/dist/data/services/subscription/getSubscriptionEnrollments.d.ts +7 -0
  69. package/dist/data/services/subscription/getSubscriptionEnrollments.js +98 -0
  70. package/dist/data/services/subscription/getSubscriptionEnrollments.js.map +1 -0
  71. package/dist/data/services/subscription/getSubscriptionPaymentMethod.d.ts +8 -0
  72. package/dist/data/services/subscription/getSubscriptionPaymentMethod.js +42 -0
  73. package/dist/data/services/subscription/getSubscriptionPaymentMethod.js.map +1 -0
  74. package/dist/data/services/subscription/reactivateSubscription.d.ts +6 -0
  75. package/dist/data/services/subscription/reactivateSubscription.js +30 -0
  76. package/dist/data/services/subscription/reactivateSubscription.js.map +1 -0
  77. package/dist/data/services/subscription/updateSubscriptionPaymentMethod.d.ts +10 -0
  78. package/dist/data/services/subscription/updateSubscriptionPaymentMethod.js +31 -0
  79. package/dist/data/services/subscription/updateSubscriptionPaymentMethod.js.map +1 -0
  80. package/dist/icons/ExternalLinkIcon.d.ts +6 -0
  81. package/dist/icons/ExternalLinkIcon.js +18 -0
  82. package/dist/icons/ExternalLinkIcon.js.map +1 -0
  83. package/dist/icons/index.d.ts +1 -0
  84. package/dist/icons/index.js +2 -0
  85. package/dist/icons/index.js.map +1 -0
  86. package/dist/manageSubscriptionPage/CancelSubscriptionPage.d.ts +3 -0
  87. package/dist/manageSubscriptionPage/CancelSubscriptionPage.js +53 -0
  88. package/dist/manageSubscriptionPage/CancelSubscriptionPage.js.map +1 -0
  89. package/dist/manageSubscriptionPage/CancelSuccessPage.d.ts +3 -0
  90. package/dist/manageSubscriptionPage/CancelSuccessPage.js +24 -0
  91. package/dist/manageSubscriptionPage/CancelSuccessPage.js.map +1 -0
  92. package/dist/manageSubscriptionPage/ManageSubscriptionPage.d.ts +3 -0
  93. package/dist/manageSubscriptionPage/ManageSubscriptionPage.js +87 -0
  94. package/dist/manageSubscriptionPage/ManageSubscriptionPage.js.map +1 -0
  95. package/dist/messages.js +2 -2
  96. package/dist/messages.js.map +1 -1
  97. package/dist/routes.d.ts +9 -2
  98. package/dist/routes.js +26 -6
  99. package/dist/routes.js.map +1 -1
  100. package/dist/style.scss +1 -14
  101. package/dist/styles/components/manageSubscription.scss +454 -0
  102. package/dist/types.d.ts +57 -201
  103. package/dist/types.js +3 -0
  104. package/dist/types.js.map +1 -1
  105. package/dist/utils/billingDetails.d.ts +3 -20
  106. package/dist/utils/billingDetails.js +4 -25
  107. package/dist/utils/billingDetails.js.map +1 -1
  108. package/dist/utils/edxSession.d.ts +18 -0
  109. package/dist/utils/edxSession.js +72 -0
  110. package/dist/utils/edxSession.js.map +1 -0
  111. package/dist/utils/formatDate.d.ts +16 -0
  112. package/dist/utils/formatDate.js +69 -0
  113. package/dist/utils/formatDate.js.map +1 -0
  114. package/dist/utils/graphqlClient.d.ts +9 -10
  115. package/dist/utils/graphqlClient.js +22 -11
  116. package/dist/utils/graphqlClient.js.map +1 -1
  117. package/dist/utils/invoiceAmount.d.ts +22 -0
  118. package/dist/utils/invoiceAmount.js +59 -0
  119. package/dist/utils/invoiceAmount.js.map +1 -0
  120. package/dist/utils/queries.d.ts +38 -33
  121. package/dist/utils/queries.js +83 -123
  122. package/dist/utils/queries.js.map +1 -1
  123. package/dist/utils/subscriptionView.d.ts +15 -0
  124. package/dist/utils/subscriptionView.js +50 -0
  125. package/dist/utils/subscriptionView.js.map +1 -0
  126. package/dist/utils/urls.d.ts +13 -0
  127. package/dist/utils/urls.js +52 -0
  128. package/dist/utils/urls.js.map +1 -0
  129. package/package.json +7 -2
  130. package/dist/checkoutPage/CheckoutPage.d.ts +0 -3
  131. package/dist/checkoutPage/CheckoutPage.js +0 -30
  132. package/dist/checkoutPage/CheckoutPage.js.map +0 -1
  133. package/dist/components/BrandMarks/BrandMarks.d.ts +0 -3
  134. package/dist/components/BrandMarks/BrandMarks.js +0 -9
  135. package/dist/components/BrandMarks/BrandMarks.js.map +0 -1
  136. package/dist/components/CartSummary/CartSummary.d.ts +0 -21
  137. package/dist/components/CartSummary/CartSummary.js +0 -30
  138. package/dist/components/CartSummary/CartSummary.js.map +0 -1
  139. package/dist/components/CartSummary/Messages.d.ts +0 -73
  140. package/dist/components/CartSummary/Messages.js +0 -76
  141. package/dist/components/CartSummary/Messages.js.map +0 -1
  142. package/dist/components/Checkout/Checkout.d.ts +0 -4
  143. package/dist/components/Checkout/Checkout.js +0 -40
  144. package/dist/components/Checkout/Checkout.js.map +0 -1
  145. package/dist/components/CheckoutGate/CheckoutGate.d.ts +0 -7
  146. package/dist/components/CheckoutGate/CheckoutGate.js +0 -35
  147. package/dist/components/CheckoutGate/CheckoutGate.js.map +0 -1
  148. package/dist/components/CourseEnrollmentCard/CourseEnrollmentCard.d.ts +0 -9
  149. package/dist/components/CourseEnrollmentCard/CourseEnrollmentCard.js +0 -31
  150. package/dist/components/CourseEnrollmentCard/CourseEnrollmentCard.js.map +0 -1
  151. package/dist/components/CourseEnrollmentCard/Messages.d.ts +0 -33
  152. package/dist/components/CourseEnrollmentCard/Messages.js +0 -35
  153. package/dist/components/CourseEnrollmentCard/Messages.js.map +0 -1
  154. package/dist/components/EdxUnlimitedBanner/EdxUnlimitedBanner.d.ts +0 -13
  155. package/dist/components/EdxUnlimitedBanner/EdxUnlimitedBanner.js +0 -11
  156. package/dist/components/EdxUnlimitedBanner/EdxUnlimitedBanner.js.map +0 -1
  157. package/dist/components/EnrollmentSummary/EnrollmentSummary.d.ts +0 -15
  158. package/dist/components/EnrollmentSummary/EnrollmentSummary.js +0 -21
  159. package/dist/components/EnrollmentSummary/EnrollmentSummary.js.map +0 -1
  160. package/dist/components/EnrollmentSummary/Messages.d.ts +0 -33
  161. package/dist/components/EnrollmentSummary/Messages.js +0 -35
  162. package/dist/components/EnrollmentSummary/Messages.js.map +0 -1
  163. package/dist/components/PaymentFields/PaymentFields.d.ts +0 -9
  164. package/dist/components/PaymentFields/PaymentFields.js +0 -7
  165. package/dist/components/PaymentFields/PaymentFields.js.map +0 -1
  166. package/dist/components/PaymentForm/Messages.d.ts +0 -88
  167. package/dist/components/PaymentForm/Messages.js +0 -95
  168. package/dist/components/PaymentForm/Messages.js.map +0 -1
  169. package/dist/components/PaymentForm/PaymentForm.d.ts +0 -21
  170. package/dist/components/PaymentForm/PaymentForm.js +0 -69
  171. package/dist/components/PaymentForm/PaymentForm.js.map +0 -1
  172. package/dist/components/StatusScreens/Messages.d.ts +0 -103
  173. package/dist/components/StatusScreens/Messages.js +0 -108
  174. package/dist/components/StatusScreens/Messages.js.map +0 -1
  175. package/dist/components/StatusScreens/StatusScreens.d.ts +0 -23
  176. package/dist/components/StatusScreens/StatusScreens.js +0 -25
  177. package/dist/components/StatusScreens/StatusScreens.js.map +0 -1
  178. package/dist/data/hooks/useCheckout.d.ts +0 -57
  179. package/dist/data/hooks/useCheckout.js +0 -249
  180. package/dist/data/hooks/useCheckout.js.map +0 -1
  181. package/dist/data/hooks/useCheckoutGate.d.ts +0 -15
  182. package/dist/data/hooks/useCheckoutGate.js +0 -39
  183. package/dist/data/hooks/useCheckoutGate.js.map +0 -1
  184. package/dist/data/hooks/useCheckoutMutations.d.ts +0 -16
  185. package/dist/data/hooks/useCheckoutMutations.js +0 -131
  186. package/dist/data/hooks/useCheckoutMutations.js.map +0 -1
  187. package/dist/data/hooks/useCheckoutQueries.d.ts +0 -30
  188. package/dist/data/hooks/useCheckoutQueries.js +0 -97
  189. package/dist/data/hooks/useCheckoutQueries.js.map +0 -1
  190. package/dist/styles/components/brandMarks.scss +0 -54
  191. package/dist/styles/components/cartSummary.scss +0 -18
  192. package/dist/styles/components/checkout.scss +0 -29
  193. package/dist/styles/components/checkoutStepper.scss +0 -9
  194. package/dist/styles/components/courseEnrollmentCard.scss +0 -38
  195. package/dist/styles/components/edxUnlimitedBanner.scss +0 -138
  196. package/dist/styles/components/enrollmentSummary.scss +0 -13
  197. package/dist/styles/components/paymentFields.scss +0 -15
  198. package/dist/styles/components/paymentForm.scss +0 -105
  199. package/dist/styles/components/statusScreens.scss +0 -29
  200. package/dist/styles/components/successScreen.scss +0 -0
  201. package/dist/utils/auth.d.ts +0 -7
  202. package/dist/utils/auth.js +0 -28
  203. package/dist/utils/auth.js.map +0 -1
  204. package/dist/utils/bootstrapApi.d.ts +0 -20
  205. package/dist/utils/bootstrapApi.js +0 -142
  206. package/dist/utils/bootstrapApi.js.map +0 -1
  207. package/dist/utils/cartApi.d.ts +0 -16
  208. package/dist/utils/cartApi.js +0 -118
  209. package/dist/utils/cartApi.js.map +0 -1
  210. package/dist/utils/checkout.d.ts +0 -6
  211. package/dist/utils/checkout.js +0 -28
  212. package/dist/utils/checkout.js.map +0 -1
  213. package/dist/utils/fetchActiveSubscriptions.d.ts +0 -4
  214. package/dist/utils/fetchActiveSubscriptions.js +0 -36
  215. package/dist/utils/fetchActiveSubscriptions.js.map +0 -1
  216. package/dist/utils/fetchBillingPlans.d.ts +0 -2
  217. package/dist/utils/fetchBillingPlans.js.map +0 -1
  218. package/dist/utils/index.d.ts +0 -3
  219. package/dist/utils/index.js +0 -17
  220. package/dist/utils/index.js.map +0 -1
  221. package/dist/utils/provision.d.ts +0 -25
  222. package/dist/utils/provision.js +0 -95
  223. package/dist/utils/provision.js.map +0 -1
  224. package/dist/utils/stripe.d.ts +0 -7
  225. package/dist/utils/stripe.js +0 -43
  226. package/dist/utils/stripe.js.map +0 -1
@@ -0,0 +1,454 @@
1
+ /* Manage Subscription — only styles without a Paragon utility equivalent. */
2
+
3
+ .manage-page {
4
+ --manage-title: var(--pgn-color-primary-500, #00262b);
5
+ --manage-muted: var(--pgn-color-gray-700, #454545);
6
+ --manage-border: var(--pgn-color-light-300, #e0e0e0);
7
+ --manage-brand: var(--pgn-color-brand-500, #d23228);
8
+ --manage-brand-hover: var(--pgn-color-brand-700, #b02a22);
9
+ --manage-bg: #f8f8f8;
10
+ --manage-banner-bg: #f5f2e9;
11
+ --manage-btn-radius: 999px;
12
+
13
+ color: var(--manage-title);
14
+ background: var(--manage-bg);
15
+ flex: 1;
16
+ }
17
+
18
+ .manage-page--loading {
19
+ min-height: 50vh;
20
+ }
21
+
22
+ /* Tabs — custom 3px underline active state */
23
+ .manage-tabs {
24
+ gap: 1.5rem;
25
+ }
26
+
27
+ .manage-tabs__tab {
28
+ appearance: none;
29
+ background: none;
30
+ border: 0;
31
+ border-bottom: 3px solid transparent;
32
+ color: var(--manage-muted);
33
+ cursor: pointer;
34
+ font-size: 1rem;
35
+ font-weight: 500;
36
+ margin-bottom: -1px;
37
+ padding: 0.75rem 0;
38
+ }
39
+
40
+ .manage-tabs__tab--active {
41
+ color: var(--manage-title);
42
+ font-weight: 700;
43
+ border-bottom-color: var(--manage-title);
44
+ }
45
+
46
+ /* Cards — gap only (no gap utility) */
47
+ .manage-card,
48
+ .manage-card__actions,
49
+ .manage-card__status-row,
50
+ .manage-renew-banner__inner,
51
+ .manage-cancel__actions,
52
+ .manage-cancel-success,
53
+ .manage-renew-modal__card-row,
54
+ .manage-update-payment__actions {
55
+ gap: 1rem;
56
+ }
57
+
58
+ .manage-card {
59
+ gap: 1.25rem;
60
+ }
61
+
62
+ .manage-renew-banner__inner {
63
+ gap: 1.25rem;
64
+ }
65
+
66
+ .manage-cancel__actions {
67
+ gap: 0.75rem;
68
+ }
69
+
70
+ .manage-cancel-success {
71
+ gap: 2rem;
72
+ }
73
+
74
+ .manage-renew-modal__card-row {
75
+ gap: 0.5rem;
76
+ cursor: default;
77
+ }
78
+
79
+ .manage-card__status-row {
80
+ gap: 0.5rem;
81
+ }
82
+
83
+ /* Status badges */
84
+ .manage-card__status-badge {
85
+ display: inline-flex;
86
+ align-items: center;
87
+ justify-content: center;
88
+ width: 1.25rem;
89
+ height: 1.25rem;
90
+ color: var(--manage-title);
91
+ }
92
+
93
+ .manage-card__status-badge--sync svg {
94
+ width: 1.25rem;
95
+ height: 1.25rem;
96
+ }
97
+
98
+ .manage-card__status-badge--cancel {
99
+ border-radius: 50%;
100
+ background: var(--manage-title);
101
+ color: #fff;
102
+ position: relative;
103
+ }
104
+
105
+ .manage-card__status-badge--cancel::before,
106
+ .manage-card__status-badge--cancel::after {
107
+ content: '';
108
+ position: absolute;
109
+ width: 0.65rem;
110
+ height: 2px;
111
+ background: #fff;
112
+ border-radius: 1px;
113
+ }
114
+
115
+ .manage-card__status-badge--cancel::before {
116
+ transform: rotate(45deg);
117
+ }
118
+
119
+ .manage-card__status-badge--cancel::after {
120
+ transform: rotate(-45deg);
121
+ }
122
+
123
+ .manage-card__link {
124
+ text-decoration: underline;
125
+ }
126
+
127
+ .manage-card__link:hover {
128
+ color: var(--manage-title);
129
+ }
130
+
131
+ /* Pill brand buttons */
132
+ .manage-btn {
133
+ border-radius: var(--manage-btn-radius) !important;
134
+ font-weight: 500 !important;
135
+ padding-left: 1.25rem !important;
136
+ padding-right: 1.25rem !important;
137
+ white-space: nowrap;
138
+ }
139
+
140
+ .manage-btn--brand {
141
+ background-color: var(--manage-brand) !important;
142
+ border-color: var(--manage-brand) !important;
143
+ color: #fff !important;
144
+ }
145
+
146
+ .manage-btn--brand:hover,
147
+ .manage-btn--brand:focus {
148
+ background-color: var(--manage-brand-hover) !important;
149
+ border-color: var(--manage-brand-hover) !important;
150
+ color: #fff !important;
151
+ }
152
+
153
+ .manage-btn--outline-brand {
154
+ background: transparent !important;
155
+ border-color: var(--manage-brand) !important;
156
+ color: var(--manage-brand) !important;
157
+ }
158
+
159
+ .manage-btn--outline-brand:hover,
160
+ .manage-btn--outline-brand:focus {
161
+ background: rgba(210, 50, 40, 0.06) !important;
162
+ border-color: var(--manage-brand-hover) !important;
163
+ color: var(--manage-brand-hover) !important;
164
+ }
165
+
166
+ .manage-btn--dark {
167
+ background-color: var(--manage-title, #00262b) !important;
168
+ border-color: var(--manage-title, #00262b) !important;
169
+ color: #fff !important;
170
+ }
171
+
172
+ .manage-btn--dark:hover,
173
+ .manage-btn--dark:focus,
174
+ .manage-btn--dark:active {
175
+ background-color: #001a1e !important;
176
+ border-color: #001a1e !important;
177
+ color: #fff !important;
178
+ }
179
+
180
+ .manage-btn--outline-dark {
181
+ background: #fff !important;
182
+ border-color: var(--manage-title) !important;
183
+ color: var(--manage-title) !important;
184
+ }
185
+
186
+ /* Help external-link icon */
187
+ .manage-help__link {
188
+ text-decoration: underline;
189
+ }
190
+
191
+ .manage-help__icon {
192
+ display: inline-block;
193
+ flex-shrink: 0;
194
+ vertical-align: middle;
195
+ }
196
+
197
+ /* Renew banner cream background */
198
+ .manage-renew-banner {
199
+ background: var(--manage-banner-bg);
200
+ }
201
+
202
+ .manage-renew-banner__body {
203
+ max-width: 42rem;
204
+ }
205
+
206
+ /* Cancel flow max-widths */
207
+ .manage-cancel {
208
+ max-width: 40rem;
209
+ }
210
+
211
+ @media (min-width: 768px) {
212
+ .manage-cancel {
213
+ max-width: none;
214
+ }
215
+
216
+ .manage-cancel-success {
217
+ min-height: 40vh;
218
+ }
219
+ }
220
+
221
+ .manage-cancel-success__title {
222
+ max-width: 32rem;
223
+ }
224
+
225
+ .manage-cancel-success__body {
226
+ max-width: 36rem;
227
+ }
228
+
229
+ /* Course enrollment image size */
230
+ .manage-courses__item:last-child {
231
+ border-bottom: 0;
232
+ }
233
+
234
+ .manage-courses__logo {
235
+ width: 4.5rem;
236
+ height: 3.75rem;
237
+ object-fit: cover;
238
+ }
239
+
240
+ .manage-courses__logo--placeholder {
241
+ background: var(--manage-bg);
242
+ }
243
+
244
+ .manage-courses__meta {
245
+ min-width: 0;
246
+ }
247
+
248
+ .manage-courses__title:not(.manage-courses__title--static) {
249
+ text-decoration: underline;
250
+ }
251
+
252
+ /* Payment history tiles */
253
+ .manage-payment-history__tiles {
254
+ display: flex;
255
+ flex-direction: column;
256
+ gap: 1rem;
257
+ }
258
+
259
+ .manage-payment-history__tile {
260
+ padding: 1.25rem 1.5rem;
261
+ border-color: var(--manage-border, #e0e0e0) !important;
262
+ border-radius: 0.5rem !important;
263
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
264
+ }
265
+
266
+ .manage-payment-history__meta {
267
+ display: grid;
268
+ gap: 0.35rem;
269
+ }
270
+
271
+ .manage-payment-history__meta-row {
272
+ display: grid;
273
+ grid-template-columns: max-content 1fr;
274
+ column-gap: 1.25rem;
275
+ align-items: baseline;
276
+ }
277
+
278
+ .manage-payment-history__value {
279
+ min-width: 0;
280
+ }
281
+
282
+ /* Update payment — Stripe field chrome (no utility equivalent) */
283
+ .manage-update-payment-modal {
284
+ --manage-title: var(--pgn-color-primary-500, #00262b);
285
+ --manage-muted: var(--pgn-color-gray-700, #454545);
286
+ --manage-border: var(--pgn-color-light-300, #e0e0e0);
287
+ --manage-brand: var(--pgn-color-brand-500, #d23228);
288
+ --manage-brand-hover: var(--pgn-color-brand-700, #b02a22);
289
+ --manage-btn-radius: 999px;
290
+
291
+ .pgn__modal-content-container,
292
+ .modal-content {
293
+ background: #f8f7f4;
294
+ border-radius: 0.75rem;
295
+ }
296
+
297
+ .pgn__modal-header {
298
+ border-bottom: 0;
299
+ padding-bottom: 0;
300
+ }
301
+
302
+ .pgn__modal-title {
303
+ font-size: 1.75rem;
304
+ font-weight: 700;
305
+ color: var(--manage-title, #00262b);
306
+ line-height: 1.25;
307
+ }
308
+
309
+ .pgn__modal-body {
310
+ padding-top: 0.75rem;
311
+ }
312
+
313
+ .manage-btn--dark {
314
+ background-color: #00262b !important;
315
+ border-color: #00262b !important;
316
+ color: #fff !important;
317
+ }
318
+ }
319
+
320
+ .manage-update-payment__element {
321
+ border: 1px solid #c7c7c7;
322
+ border-radius: 0.375rem;
323
+ box-shadow: none;
324
+ min-height: 3rem;
325
+ padding: 0.75rem 0.9rem;
326
+ position: relative;
327
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
328
+ }
329
+
330
+ .manage-update-payment__element:focus-within {
331
+ border-color: var(--manage-title);
332
+ box-shadow: 0 0 0 1px var(--manage-title);
333
+ outline: none;
334
+ }
335
+
336
+ .manage-update-payment__element .StripeElement {
337
+ width: 100%;
338
+ flex: 1;
339
+ }
340
+
341
+ .manage-update-payment__element--cvc {
342
+ padding-right: 2.5rem;
343
+ }
344
+
345
+ .manage-update-payment__cvc-icon {
346
+ position: absolute;
347
+ right: 0.75rem;
348
+ top: 50%;
349
+ transform: translateY(-50%);
350
+ width: 1.25rem;
351
+ height: 1.25rem;
352
+ color: #000;
353
+ pointer-events: none;
354
+ }
355
+
356
+ .manage-update-payment__cvc-icon svg {
357
+ width: 1.25rem;
358
+ height: 1.25rem;
359
+ }
360
+
361
+ .manage-update-payment__control {
362
+ appearance: none;
363
+ outline: none;
364
+ box-shadow: none;
365
+ font-size: 1rem;
366
+ line-height: 24px;
367
+ color: var(--manage-title);
368
+ font-family: inherit;
369
+ }
370
+
371
+ .manage-update-payment__control:focus {
372
+ outline: none;
373
+ box-shadow: none;
374
+ border: 0;
375
+ }
376
+
377
+ .manage-update-payment__row {
378
+ display: grid;
379
+ gap: 0 1rem;
380
+ }
381
+
382
+ @media (min-width: 768px) {
383
+ .manage-update-payment__row--card,
384
+ .manage-update-payment__row--postal {
385
+ grid-template-columns: 2fr 1fr 1fr;
386
+ gap: 0 1.25rem;
387
+ align-items: end;
388
+ }
389
+ }
390
+
391
+ .manage-update-payment__actions {
392
+ gap: 0.75rem 1.25rem;
393
+ }
394
+
395
+ .manage-update-payment__actions .btn-tertiary {
396
+ color: var(--manage-title);
397
+ font-weight: 600;
398
+ text-decoration: none;
399
+ padding-left: 0.5rem;
400
+ padding-right: 0.5rem;
401
+ }
402
+
403
+ /* Renew modal portal shell — match update-payment modal width/chrome */
404
+ .manage-renew-modal {
405
+ --manage-title: var(--pgn-color-primary-500, #00262b);
406
+ --manage-muted: var(--pgn-color-gray-700, #454545);
407
+ --manage-border: var(--pgn-color-light-300, #e0e0e0);
408
+ --manage-brand: var(--pgn-color-brand-500, #d23228);
409
+ --manage-brand-hover: var(--pgn-color-brand-700, #b02a22);
410
+ --manage-btn-radius: 999px;
411
+
412
+ .pgn__modal-content-container,
413
+ .modal-content {
414
+ background: #f8f7f4;
415
+ border-radius: 0.75rem;
416
+ }
417
+
418
+ .pgn__modal-header {
419
+ border-bottom: 0;
420
+ padding-bottom: 0;
421
+ }
422
+
423
+ .pgn__modal-title {
424
+ font-size: 1.75rem;
425
+ font-weight: 700;
426
+ color: var(--manage-title, #00262b);
427
+ line-height: 1.25;
428
+ padding-right: 2rem;
429
+ }
430
+
431
+ .pgn__modal-body {
432
+ padding-top: 0.75rem;
433
+ }
434
+ }
435
+
436
+ .manage-renew-modal__intro {
437
+ line-height: 1.5;
438
+
439
+ a {
440
+ color: inherit;
441
+ text-decoration: underline;
442
+ }
443
+ }
444
+
445
+ .manage-renew-modal__card-label {
446
+ margin-left: 0.35rem;
447
+ }
448
+
449
+ .manage-renew-modal__radio {
450
+ accent-color: var(--manage-title, #00262b);
451
+ width: 1.125rem;
452
+ height: 1.125rem;
453
+ flex-shrink: 0;
454
+ }