@monetize.software/sdk 3.0.0-alpha.5 → 3.0.0-alpha.6

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 (203) hide show
  1. package/dist/chunks/{PaywallUI-D7lp-bC5.js → PaywallUI-BYquPomD.js} +897 -848
  2. package/dist/chunks/PaywallUI-BYquPomD.js.map +1 -0
  3. package/dist/chunks/PaywallUI-Cl9sz_xA.js +26 -0
  4. package/dist/chunks/PaywallUI-Cl9sz_xA.js.map +1 -0
  5. package/dist/chunks/ar-BUQInJ5a.js +2 -0
  6. package/dist/chunks/ar-BUQInJ5a.js.map +1 -0
  7. package/dist/chunks/{ar-BCHXVoE2.js → ar-nh4l4WDE.js} +16 -5
  8. package/dist/chunks/ar-nh4l4WDE.js.map +1 -0
  9. package/dist/chunks/{cs-B5NqpTW_.js → cs-2UYO2rWf.js} +14 -3
  10. package/dist/chunks/cs-2UYO2rWf.js.map +1 -0
  11. package/dist/chunks/cs-i5K4KTFV.js +2 -0
  12. package/dist/chunks/cs-i5K4KTFV.js.map +1 -0
  13. package/dist/chunks/{da-BJrGZ3LD.js → da-BD0O_HfV.js} +14 -3
  14. package/dist/chunks/da-BD0O_HfV.js.map +1 -0
  15. package/dist/chunks/da-CZbhtVJO.js +2 -0
  16. package/dist/chunks/da-CZbhtVJO.js.map +1 -0
  17. package/dist/chunks/de-Bc-GoLgC.js +2 -0
  18. package/dist/chunks/de-Bc-GoLgC.js.map +1 -0
  19. package/dist/chunks/{de-aepBKwsb.js → de-BkCiXPsn.js} +12 -3
  20. package/dist/chunks/de-BkCiXPsn.js.map +1 -0
  21. package/dist/chunks/el-CcMEbl_F.js +2 -0
  22. package/dist/chunks/el-CcMEbl_F.js.map +1 -0
  23. package/dist/chunks/{el-DTLQoX2D.js → el-cIcxTp07.js} +14 -3
  24. package/dist/chunks/el-cIcxTp07.js.map +1 -0
  25. package/dist/chunks/es-BvYmomAz.js +2 -0
  26. package/dist/chunks/es-BvYmomAz.js.map +1 -0
  27. package/dist/chunks/{es-CLutF-D_.js → es-CJBC_jrV.js} +12 -3
  28. package/dist/chunks/es-CJBC_jrV.js.map +1 -0
  29. package/dist/chunks/{fi-DZ4csxqk.js → fi-DyV7ynBf.js} +14 -3
  30. package/dist/chunks/fi-DyV7ynBf.js.map +1 -0
  31. package/dist/chunks/fi-aZR-qmZN.js +2 -0
  32. package/dist/chunks/fi-aZR-qmZN.js.map +1 -0
  33. package/dist/chunks/{fr-jJU1SSpj.js → fr-BLQ4AIu7.js} +12 -3
  34. package/dist/chunks/fr-BLQ4AIu7.js.map +1 -0
  35. package/dist/chunks/fr-BgbFAgHx.js +2 -0
  36. package/dist/chunks/fr-BgbFAgHx.js.map +1 -0
  37. package/dist/chunks/{he-D9obGPNj.js → he-Bg-Bqi7r.js} +16 -5
  38. package/dist/chunks/he-Bg-Bqi7r.js.map +1 -0
  39. package/dist/chunks/he-CQ4yCuja.js +2 -0
  40. package/dist/chunks/he-CQ4yCuja.js.map +1 -0
  41. package/dist/chunks/hi-DtUsj1c-.js +2 -0
  42. package/dist/chunks/hi-DtUsj1c-.js.map +1 -0
  43. package/dist/chunks/{hi-pM8SQwZ3.js → hi-wQeE43oY.js} +16 -5
  44. package/dist/chunks/hi-wQeE43oY.js.map +1 -0
  45. package/dist/chunks/{hu-E0m9WgbD.js → hu-D9qxzu0r.js} +14 -3
  46. package/dist/chunks/hu-D9qxzu0r.js.map +1 -0
  47. package/dist/chunks/hu-DXtscQ8_.js +2 -0
  48. package/dist/chunks/hu-DXtscQ8_.js.map +1 -0
  49. package/dist/chunks/id-BByOYpeo.js +2 -0
  50. package/dist/chunks/id-BByOYpeo.js.map +1 -0
  51. package/dist/chunks/{id-C6poPvby.js → id-Rx_wYvqy.js} +14 -3
  52. package/dist/chunks/id-Rx_wYvqy.js.map +1 -0
  53. package/dist/chunks/it-52Ip42pa.js +2 -0
  54. package/dist/chunks/it-52Ip42pa.js.map +1 -0
  55. package/dist/chunks/{it-B2RSFyVd.js → it-B1SRPZ3e.js} +12 -3
  56. package/dist/chunks/it-B1SRPZ3e.js.map +1 -0
  57. package/dist/chunks/ja-CMC3Parn.js +2 -0
  58. package/dist/chunks/ja-CMC3Parn.js.map +1 -0
  59. package/dist/chunks/{ja-CM-VgVG6.js → ja-DiItm8te.js} +12 -3
  60. package/dist/chunks/ja-DiItm8te.js.map +1 -0
  61. package/dist/chunks/ko-3qY21q40.js +2 -0
  62. package/dist/chunks/ko-3qY21q40.js.map +1 -0
  63. package/dist/chunks/{ko-C451fA21.js → ko-CdGFWAKX.js} +12 -3
  64. package/dist/chunks/ko-CdGFWAKX.js.map +1 -0
  65. package/dist/chunks/nl-Borc5nw1.js +2 -0
  66. package/dist/chunks/nl-Borc5nw1.js.map +1 -0
  67. package/dist/chunks/{nl-DzQfJPo2.js → nl-CmZ3vEvj.js} +12 -3
  68. package/dist/chunks/nl-CmZ3vEvj.js.map +1 -0
  69. package/dist/chunks/{no-B51be8KT.js → no-BuxByZpq.js} +14 -3
  70. package/dist/chunks/no-BuxByZpq.js.map +1 -0
  71. package/dist/chunks/no-Do2iGedg.js +2 -0
  72. package/dist/chunks/no-Do2iGedg.js.map +1 -0
  73. package/dist/chunks/{pl-5rTEkvfY.js → pl-jZFCnDb8.js} +14 -3
  74. package/dist/chunks/pl-jZFCnDb8.js.map +1 -0
  75. package/dist/chunks/pl-mRaky_7k.js +2 -0
  76. package/dist/chunks/pl-mRaky_7k.js.map +1 -0
  77. package/dist/chunks/{pt-JwqffZ9u.js → pt-Cld7MwIW.js} +12 -3
  78. package/dist/chunks/pt-Cld7MwIW.js.map +1 -0
  79. package/dist/chunks/pt-DilDTXfs.js +2 -0
  80. package/dist/chunks/pt-DilDTXfs.js.map +1 -0
  81. package/dist/chunks/{ro-BE_wJ1td.js → ro-CuKDqj3C.js} +14 -3
  82. package/dist/chunks/ro-CuKDqj3C.js.map +1 -0
  83. package/dist/chunks/ro-DF2uzPIB.js +2 -0
  84. package/dist/chunks/ro-DF2uzPIB.js.map +1 -0
  85. package/dist/chunks/{ru-BviATvLb.js → ru-B7cjqJUm.js} +14 -3
  86. package/dist/chunks/ru-B7cjqJUm.js.map +1 -0
  87. package/dist/chunks/ru-YeaXnTO-.js +2 -0
  88. package/dist/chunks/ru-YeaXnTO-.js.map +1 -0
  89. package/dist/chunks/sv-2pHEvuSe.js +2 -0
  90. package/dist/chunks/sv-2pHEvuSe.js.map +1 -0
  91. package/dist/chunks/{sv-DabGF9WL.js → sv-D9y-M1Fo.js} +14 -3
  92. package/dist/chunks/sv-D9y-M1Fo.js.map +1 -0
  93. package/dist/chunks/{th-BiF-bNo0.js → th-D9umBjEy.js} +14 -3
  94. package/dist/chunks/th-D9umBjEy.js.map +1 -0
  95. package/dist/chunks/th-u2QSDF0G.js +2 -0
  96. package/dist/chunks/th-u2QSDF0G.js.map +1 -0
  97. package/dist/chunks/{tr-xZuly8X8.js → tr-BddMywiw.js} +14 -3
  98. package/dist/chunks/tr-BddMywiw.js.map +1 -0
  99. package/dist/chunks/tr-Bhgm6_ti.js +2 -0
  100. package/dist/chunks/tr-Bhgm6_ti.js.map +1 -0
  101. package/dist/chunks/uk-7vwqsaVK.js +2 -0
  102. package/dist/chunks/uk-7vwqsaVK.js.map +1 -0
  103. package/dist/chunks/{uk-KlkAaHuy.js → uk-Dbd31hFt.js} +14 -3
  104. package/dist/chunks/uk-Dbd31hFt.js.map +1 -0
  105. package/dist/chunks/vi-CJefLP_g.js +2 -0
  106. package/dist/chunks/vi-CJefLP_g.js.map +1 -0
  107. package/dist/chunks/{vi-BVCeumNE.js → vi-Do3BMOdh.js} +14 -3
  108. package/dist/chunks/vi-Do3BMOdh.js.map +1 -0
  109. package/dist/chunks/zh-D5C3BzYL.js +2 -0
  110. package/dist/chunks/zh-D5C3BzYL.js.map +1 -0
  111. package/dist/chunks/{zh-C_ghwmqi.js → zh-gQSYLZI3.js} +12 -3
  112. package/dist/chunks/zh-gQSYLZI3.js.map +1 -0
  113. package/dist/index.cjs +1 -1
  114. package/dist/index.d.ts +12 -0
  115. package/dist/index.js +1 -1
  116. package/dist/ui.cjs +1 -1
  117. package/dist/ui.d.ts +12 -0
  118. package/dist/ui.js +1 -1
  119. package/package.json +1 -1
  120. package/dist/chunks/PaywallUI-BD5hRY2P.js +0 -26
  121. package/dist/chunks/PaywallUI-BD5hRY2P.js.map +0 -1
  122. package/dist/chunks/PaywallUI-D7lp-bC5.js.map +0 -1
  123. package/dist/chunks/ar-BCHXVoE2.js.map +0 -1
  124. package/dist/chunks/ar-CsJNZJSr.js +0 -2
  125. package/dist/chunks/ar-CsJNZJSr.js.map +0 -1
  126. package/dist/chunks/cs-B5NqpTW_.js.map +0 -1
  127. package/dist/chunks/cs-BydWUC0e.js +0 -2
  128. package/dist/chunks/cs-BydWUC0e.js.map +0 -1
  129. package/dist/chunks/da-BJrGZ3LD.js.map +0 -1
  130. package/dist/chunks/da-DNhiAQnh.js +0 -2
  131. package/dist/chunks/da-DNhiAQnh.js.map +0 -1
  132. package/dist/chunks/de-H8ztFOie.js +0 -2
  133. package/dist/chunks/de-H8ztFOie.js.map +0 -1
  134. package/dist/chunks/de-aepBKwsb.js.map +0 -1
  135. package/dist/chunks/el-DRfoadtI.js +0 -2
  136. package/dist/chunks/el-DRfoadtI.js.map +0 -1
  137. package/dist/chunks/el-DTLQoX2D.js.map +0 -1
  138. package/dist/chunks/es-CLutF-D_.js.map +0 -1
  139. package/dist/chunks/es-GlaYesNR.js +0 -2
  140. package/dist/chunks/es-GlaYesNR.js.map +0 -1
  141. package/dist/chunks/fi-BIHFyScH.js +0 -2
  142. package/dist/chunks/fi-BIHFyScH.js.map +0 -1
  143. package/dist/chunks/fi-DZ4csxqk.js.map +0 -1
  144. package/dist/chunks/fr-BtZILUNZ.js +0 -2
  145. package/dist/chunks/fr-BtZILUNZ.js.map +0 -1
  146. package/dist/chunks/fr-jJU1SSpj.js.map +0 -1
  147. package/dist/chunks/he-D9obGPNj.js.map +0 -1
  148. package/dist/chunks/he-vSDRE4Nn.js +0 -2
  149. package/dist/chunks/he-vSDRE4Nn.js.map +0 -1
  150. package/dist/chunks/hi-B90FsnP6.js +0 -2
  151. package/dist/chunks/hi-B90FsnP6.js.map +0 -1
  152. package/dist/chunks/hi-pM8SQwZ3.js.map +0 -1
  153. package/dist/chunks/hu-DWVFODsS.js +0 -2
  154. package/dist/chunks/hu-DWVFODsS.js.map +0 -1
  155. package/dist/chunks/hu-E0m9WgbD.js.map +0 -1
  156. package/dist/chunks/id-C6poPvby.js.map +0 -1
  157. package/dist/chunks/id-Ce2gzMVT.js +0 -2
  158. package/dist/chunks/id-Ce2gzMVT.js.map +0 -1
  159. package/dist/chunks/it-B2RSFyVd.js.map +0 -1
  160. package/dist/chunks/it-u-Gu44bl.js +0 -2
  161. package/dist/chunks/it-u-Gu44bl.js.map +0 -1
  162. package/dist/chunks/ja-CM-VgVG6.js.map +0 -1
  163. package/dist/chunks/ja-CQy8RaRa.js +0 -2
  164. package/dist/chunks/ja-CQy8RaRa.js.map +0 -1
  165. package/dist/chunks/ko-BRnb7vJ7.js +0 -2
  166. package/dist/chunks/ko-BRnb7vJ7.js.map +0 -1
  167. package/dist/chunks/ko-C451fA21.js.map +0 -1
  168. package/dist/chunks/nl-CJelco6J.js +0 -2
  169. package/dist/chunks/nl-CJelco6J.js.map +0 -1
  170. package/dist/chunks/nl-DzQfJPo2.js.map +0 -1
  171. package/dist/chunks/no-B51be8KT.js.map +0 -1
  172. package/dist/chunks/no-BwTjSZ4K.js +0 -2
  173. package/dist/chunks/no-BwTjSZ4K.js.map +0 -1
  174. package/dist/chunks/pl-5rTEkvfY.js.map +0 -1
  175. package/dist/chunks/pl-kO82vcjb.js +0 -2
  176. package/dist/chunks/pl-kO82vcjb.js.map +0 -1
  177. package/dist/chunks/pt-CsJzaSjg.js +0 -2
  178. package/dist/chunks/pt-CsJzaSjg.js.map +0 -1
  179. package/dist/chunks/pt-JwqffZ9u.js.map +0 -1
  180. package/dist/chunks/ro-BE_wJ1td.js.map +0 -1
  181. package/dist/chunks/ro-ue15Ina4.js +0 -2
  182. package/dist/chunks/ro-ue15Ina4.js.map +0 -1
  183. package/dist/chunks/ru-B1iMOhX0.js +0 -2
  184. package/dist/chunks/ru-B1iMOhX0.js.map +0 -1
  185. package/dist/chunks/ru-BviATvLb.js.map +0 -1
  186. package/dist/chunks/sv-CkNYpUVy.js +0 -2
  187. package/dist/chunks/sv-CkNYpUVy.js.map +0 -1
  188. package/dist/chunks/sv-DabGF9WL.js.map +0 -1
  189. package/dist/chunks/th-BiF-bNo0.js.map +0 -1
  190. package/dist/chunks/th-Cu80HK4y.js +0 -2
  191. package/dist/chunks/th-Cu80HK4y.js.map +0 -1
  192. package/dist/chunks/tr-B7c0afXV.js +0 -2
  193. package/dist/chunks/tr-B7c0afXV.js.map +0 -1
  194. package/dist/chunks/tr-xZuly8X8.js.map +0 -1
  195. package/dist/chunks/uk-BO106B0H.js +0 -2
  196. package/dist/chunks/uk-BO106B0H.js.map +0 -1
  197. package/dist/chunks/uk-KlkAaHuy.js.map +0 -1
  198. package/dist/chunks/vi-BVCeumNE.js.map +0 -1
  199. package/dist/chunks/vi-CZ6ow40D.js +0 -2
  200. package/dist/chunks/vi-CZ6ow40D.js.map +0 -1
  201. package/dist/chunks/zh-BhP80WI1.js +0 -2
  202. package/dist/chunks/zh-BhP80WI1.js.map +0 -1
  203. package/dist/chunks/zh-C_ghwmqi.js.map +0 -1
@@ -1,15 +1,15 @@
1
- import { PaywallError as R, BillingClient as Rt, EventTracker as Ut, AuthClient as dt } from "../core.js";
2
- import { render as Z, h as ut, createContext as Dt } from "preact";
3
- import { jsx as i, jsxs as c, Fragment as q } from "preact/jsx-runtime";
4
- import { useContext as Nt, useState as b, useEffect as T, useRef as O, useMemo as St, useLayoutEffect as Vt } from "preact/hooks";
1
+ import { PaywallError as U, BillingClient as Dt, EventTracker as Nt, AuthClient as dt } from "../core.js";
2
+ import { render as K, h as ut, createContext as Ht } from "preact";
3
+ import { jsx as n, jsxs as c, Fragment as Z } from "preact/jsx-runtime";
4
+ import { useContext as Vt, useState as b, useEffect as T, useRef as F, useMemo as Ct, useLayoutEffect as $t } from "preact/hooks";
5
5
  const pt = 3600 * 1e3;
6
- function K(e) {
6
+ function Y(e) {
7
7
  return `paywall-${e}-trial-time-first-open`;
8
8
  }
9
- function Y(e) {
9
+ function X(e) {
10
10
  return `paywall-${e}-skip-times`;
11
11
  }
12
- class Ct {
12
+ class It {
13
13
  constructor(t, r, a) {
14
14
  this.storage = t, this.paywallId = r, this.config = a;
15
15
  }
@@ -20,10 +20,10 @@ class Ct {
20
20
  return this.config.mode === "time" ? this.recordTime() : this.recordOpens();
21
21
  }
22
22
  async reset() {
23
- await this.storage.removeItem(this.config.mode === "time" ? K(this.paywallId) : Y(this.paywallId));
23
+ await this.storage.removeItem(this.config.mode === "time" ? Y(this.paywallId) : X(this.paywallId));
24
24
  }
25
25
  async checkTime() {
26
- const t = this.config.payload * pt, r = await this.storage.getItem(K(this.paywallId)), a = r ? Number(r) : null;
26
+ const t = this.config.payload * pt, r = await this.storage.getItem(Y(this.paywallId)), a = r ? Number(r) : null;
27
27
  if (!a || !Number.isFinite(a))
28
28
  return {
29
29
  mode: "time",
@@ -33,18 +33,18 @@ class Ct {
33
33
  remainingMs: t,
34
34
  totalMs: t
35
35
  };
36
- const n = a + t, o = Math.max(0, n - Date.now());
36
+ const i = a + t, o = Math.max(0, i - Date.now());
37
37
  return {
38
38
  mode: "time",
39
39
  blocked: o > 0,
40
40
  startedAt: a,
41
- expiresAt: n,
41
+ expiresAt: i,
42
42
  remainingMs: o,
43
43
  totalMs: t
44
44
  };
45
45
  }
46
46
  async checkOpens() {
47
- const t = this.config.payload, r = await this.storage.getItem(Y(this.paywallId)), a = r ? Number(r) : 0, n = Number.isFinite(a) ? a : 0, o = n < t, s = Math.max(0, t - n);
47
+ const t = this.config.payload, r = await this.storage.getItem(X(this.paywallId)), a = r ? Number(r) : 0, i = Number.isFinite(a) ? a : 0, o = i < t, s = Math.max(0, t - i);
48
48
  return {
49
49
  mode: "opens",
50
50
  blocked: o,
@@ -53,21 +53,21 @@ class Ct {
53
53
  };
54
54
  }
55
55
  async recordTime() {
56
- const t = this.config.payload * pt, r = K(this.paywallId), a = await this.storage.getItem(r);
57
- let n = a ? Number(a) : null;
58
- (!n || !Number.isFinite(n)) && (n = Date.now(), await this.storage.setItem(r, String(n)));
59
- const o = n + t, s = Math.max(0, o - Date.now());
56
+ const t = this.config.payload * pt, r = Y(this.paywallId), a = await this.storage.getItem(r);
57
+ let i = a ? Number(a) : null;
58
+ (!i || !Number.isFinite(i)) && (i = Date.now(), await this.storage.setItem(r, String(i)));
59
+ const o = i + t, s = Math.max(0, o - Date.now());
60
60
  return {
61
61
  mode: "time",
62
62
  blocked: s > 0,
63
- startedAt: n,
63
+ startedAt: i,
64
64
  expiresAt: o,
65
65
  remainingMs: s,
66
66
  totalMs: t
67
67
  };
68
68
  }
69
69
  async recordOpens() {
70
- const t = this.config.payload, r = Y(this.paywallId), a = await this.storage.getItem(r), n = a ? Number(a) : 0, o = Number.isFinite(n) ? n : 0, s = Math.min(t, o + 1);
70
+ const t = this.config.payload, r = X(this.paywallId), a = await this.storage.getItem(r), i = a ? Number(a) : 0, o = Number.isFinite(i) ? i : 0, s = Math.min(t, o + 1);
71
71
  await this.storage.setItem(r, String(s));
72
72
  const l = Math.max(0, t - s);
73
73
  return {
@@ -79,11 +79,11 @@ class Ct {
79
79
  }
80
80
  }
81
81
  let ht = !1;
82
- class $t {
82
+ class Gt {
83
83
  constructor(t, r, a) {
84
84
  ht || (ht = !0, console.warn(
85
85
  '[paywall] trial.storage="server" is not implemented yet — falling back to client storage. State lives in localStorage; users can reset trial by clearing site data.'
86
- )), this.fallback = new Ct(t, r, a);
86
+ )), this.fallback = new It(t, r, a);
87
87
  }
88
88
  check() {
89
89
  return this.fallback.check();
@@ -95,17 +95,17 @@ class $t {
95
95
  return this.fallback.reset();
96
96
  }
97
97
  }
98
- function Ht(e, t, r) {
99
- return r.storage === "server" ? new $t(e, t, r) : new Ct(e, t, r);
98
+ function qt(e, t, r) {
99
+ return r.storage === "server" ? new Gt(e, t, r) : new It(e, t, r);
100
100
  }
101
- const It = '/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-700:oklch(50.8% .118 165.612);--color-slate-950:oklch(12.9% .042 264.695);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--blur-sm:8px;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:host{all:initial;color-scheme:light;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*,:before,:after{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}button{cursor:pointer;font-family:inherit}button:disabled{cursor:not-allowed}[role=button],[role=radio]{cursor:pointer}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.-top-2{top:calc(var(--spacing) * -2)}.-top-\\[9px\\]{top:-9px}.-top-\\[10px\\]{top:-10px}.top-1\\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.-right-\\[6px\\]{right:-6px}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.left-1\\/2{left:50%}.z-10{z-index:10}.z-\\[1\\]{z-index:1}.z-\\[2147483647\\]{z-index:2147483647}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.-mt-3{margin-top:calc(var(--spacing) * -3)}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.-mb-2{margin-bottom:calc(var(--spacing) * -2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-1{height:calc(var(--spacing) * 1)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-6\\.5{height:calc(var(--spacing) * 6.5)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-\\[22px\\]{height:22px}.h-full{height:100%}.h-px{height:1px}.max-h-\\[calc\\(100dvh-1rem\\)\\]{max-height:calc(100dvh - 1rem)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-\\[2\\.4em\\]{min-height:2.4em}.min-h-\\[120px\\]{min-height:120px}.w-1{width:calc(var(--spacing) * 1)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-6\\.5{width:calc(var(--spacing) * 6.5)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-full{width:100%}.max-w-\\[18rem\\]{max-width:18rem}.max-w-\\[20rem\\]{max-width:20rem}.max-w-\\[75\\%\\]{max-width:75%}.max-w-\\[320px\\]{max-width:320px}.max-w-\\[360px\\]{max-width:360px}.max-w-\\[400px\\]{max-width:400px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\\[pw-fade-in_180ms_ease-out\\]{animation:.18s ease-out pw-fade-in}.animate-\\[pw-scale-in_220ms_cubic-bezier\\(0\\.16\\,1\\,0\\.3\\,1\\)\\]{animation:.22s cubic-bezier(.16,1,.3,1) pw-scale-in}.animate-ping{animation:var(--animate-ping)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-row-reverse{flex-direction:row-reverse}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-x-1\\.5{column-gap:calc(var(--spacing) * 1.5)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\\[9px\\]{border-radius:9px}.rounded-\\[11px\\]{border-radius:11px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-tl-xl{border-top-left-radius:var(--radius-xl)}.rounded-tr-xl{border-top-right-radius:var(--radius-xl)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border,.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\\[2\\.5px\\]{border-style:var(--tw-border-style);border-width:2.5px}.border-\\[3px\\]{border-style:var(--tw-border-style);border-width:3px}.border-\\[5px\\]{border-style:var(--tw-border-style);border-width:5px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b,.border-b-1{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\\[var\\(--pw-accent\\)\\]{border-color:var(--pw-accent)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-white{border-color:var(--color-white)}.border-white\\/40{border-color:#fff6}@supports (color:color-mix(in lab,red,red)){.border-white\\/40{border-color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.border-t-\\[var\\(--pw-accent\\)\\]{border-top-color:var(--pw-accent)}.border-t-gray-700{border-top-color:var(--color-gray-700)}.border-t-white{border-top-color:var(--color-white)}.bg-\\[color-mix\\(in_srgb\\,var\\(--pw-accent\\)_6\\%\\,white\\)\\]{background-color:var(--pw-accent)}@supports (color:color-mix(in lab,red,red)){.bg-\\[color-mix\\(in_srgb\\,var\\(--pw-accent\\)_6\\%\\,white\\)\\]{background-color:color-mix(in srgb,var(--pw-accent) 6%,white)}}.bg-\\[var\\(--pw-accent\\)\\]{background-color:var(--pw-accent)}.bg-black\\/20{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.bg-black\\/20{background-color:color-mix(in oklab,var(--color-black) 20%,transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-50\\/60{background-color:#f9fafb99}@supports (color:color-mix(in lab,red,red)){.bg-gray-50\\/60{background-color:color-mix(in oklab,var(--color-gray-50) 60%,transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-red-50{background-color:var(--color-red-50)}.bg-slate-950\\/50{background-color:#02061880}@supports (color:color-mix(in lab,red,red)){.bg-slate-950\\/50{background-color:color-mix(in oklab,var(--color-slate-950) 50%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\\/80{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.bg-white\\/80{background-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.p-2{padding:calc(var(--spacing) * 2)}.p-3\\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\\.5{padding-block:calc(var(--spacing) * 3.5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-3\\.5{padding-top:calc(var(--spacing) * 3.5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-3\\.5{padding-bottom:calc(var(--spacing) * 3.5)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[0\\.9375rem\\]{font-size:.9375rem}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[12px\\]{font-size:12px}.text-\\[13px\\]{font-size:13px}.text-\\[15px\\]{font-size:15px}.text-\\[22px\\]{font-size:22px}.text-\\[26px\\]{font-size:26px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-balance{text-wrap:balance}.whitespace-nowrap{white-space:nowrap}.text-\\[var\\(--pw-accent\\)\\]{color:var(--pw-accent)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-700{color:var(--color-emerald-700)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-800\\/70{color:#1e2939b3}@supports (color:color-mix(in lab,red,red)){.text-gray-800\\/70{color:color-mix(in oklab,var(--color-gray-800) 70%,transparent)}}.text-gray-900{color:var(--color-gray-900)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.decoration-gray-400{-webkit-text-decoration-color:var(--color-gray-400);text-decoration-color:var(--color-gray-400)}.decoration-\\[1\\.5px\\]{text-decoration-thickness:1.5px}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-60{opacity:.6}.opacity-90{opacity:.9}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_0_2px_rgba\\(239\\,68\\,68\\,0\\.5\\)\\]{--tw-shadow:0 0 0 2px var(--tw-shadow-color,#ef444480);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-8{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(8px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.\\!filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.outline-none{--tw-outline-style:none;outline-style:none}.placeholder\\:text-gray-500::placeholder{color:var(--color-gray-500)}@media(hover:hover){.hover\\:-translate-y-px:hover{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\\:border-gray-300:hover{border-color:var(--color-gray-300)}.hover\\:border-gray-400:hover{border-color:var(--color-gray-400)}.hover\\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\\:bg-gray-50\\/60:hover{background-color:#f9fafb99}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-gray-50\\/60:hover{background-color:color-mix(in oklab,var(--color-gray-50) 60%,transparent)}}.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:bg-gray-200\\/60:hover{background-color:#e5e7eb99}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-gray-200\\/60:hover{background-color:color-mix(in oklab,var(--color-gray-200) 60%,transparent)}}.hover\\:bg-white:hover{background-color:var(--color-white)}.hover\\:text-gray-700:hover{color:var(--color-gray-700)}.hover\\:text-gray-900:hover{color:var(--color-gray-900)}.hover\\:text-red-600:hover{color:var(--color-red-600)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-80:hover{opacity:.8}.hover\\:opacity-90:hover{opacity:.9}.hover\\:brightness-105:hover{--tw-brightness:brightness(105%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}.focus\\:bg-gray-200\\/60:focus{background-color:#e5e7eb99}@supports (color:color-mix(in lab,red,red)){.focus\\:bg-gray-200\\/60:focus{background-color:color-mix(in oklab,var(--color-gray-200) 60%,transparent)}}.focus\\:shadow-\\[0_0_0_2px_color-mix\\(in_srgb\\,var\\(--pw-accent\\)_30\\%\\,transparent\\)\\]:focus{--tw-shadow:0 0 0 2px var(--tw-shadow-color,var(--pw-accent))}@supports (color:color-mix(in lab,red,red)){.focus\\:shadow-\\[0_0_0_2px_color-mix\\(in_srgb\\,var\\(--pw-accent\\)_30\\%\\,transparent\\)\\]:focus{--tw-shadow:0 0 0 2px var(--tw-shadow-color,color-mix(in srgb,var(--pw-accent) 30%,transparent))}}.focus\\:shadow-\\[0_0_0_2px_color-mix\\(in_srgb\\,var\\(--pw-accent\\)_30\\%\\,transparent\\)\\]:focus{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:opacity-80:focus-visible{opacity:.8}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-\\[var\\(--pw-accent\\)\\]:focus-visible{--tw-ring-color:var(--pw-accent)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\\:ring-inset:focus-visible{--tw-ring-inset:inset}.active\\:scale-\\[0\\.98\\]:active{scale:.98}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-60:disabled{opacity:.6}@media(hover:hover){.disabled\\:hover\\:translate-y-0:disabled:hover{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\\:hover\\:brightness-100:disabled:hover{--tw-brightness:brightness(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}@media(min-width:40rem){.sm\\:max-h-\\[calc\\(100dvh-2rem\\)\\]{max-height:calc(100dvh - 2rem)}.sm\\:p-4{padding:calc(var(--spacing) * 4)}.sm\\:p-8{padding:calc(var(--spacing) * 8)}.sm\\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\\:pt-8{padding-top:calc(var(--spacing) * 8)}.sm\\:pb-4{padding-bottom:calc(var(--spacing) * 4)}.sm\\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}}}.pw-cta-shimmer:before{content:"";z-index:1;background:linear-gradient(90deg,#0000,#ffffff59 50%,#0000);width:100%;height:100%;animation:3s infinite pw-cta-shimmer;position:absolute;top:0;left:-100%}@keyframes pw-cta-shimmer{0%{left:-100%}to{left:100%}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}';
101
+ const At = '/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-700:oklch(50.8% .118 165.612);--color-slate-950:oklch(12.9% .042 264.695);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--blur-sm:8px;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:host{all:initial;color-scheme:light;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*,:before,:after{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}button{cursor:pointer;font-family:inherit}button:disabled{cursor:not-allowed}[role=button],[role=radio]{cursor:pointer}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.-top-2{top:calc(var(--spacing) * -2)}.-top-\\[9px\\]{top:-9px}.-top-\\[10px\\]{top:-10px}.top-1\\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.-right-\\[6px\\]{right:-6px}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.left-1\\/2{left:50%}.z-10{z-index:10}.z-\\[1\\]{z-index:1}.z-\\[2147483647\\]{z-index:2147483647}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.-mt-3{margin-top:calc(var(--spacing) * -3)}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.-mb-2{margin-bottom:calc(var(--spacing) * -2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-1{height:calc(var(--spacing) * 1)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-6\\.5{height:calc(var(--spacing) * 6.5)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-\\[22px\\]{height:22px}.h-full{height:100%}.h-px{height:1px}.max-h-\\[calc\\(100dvh-1rem\\)\\]{max-height:calc(100dvh - 1rem)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-\\[2\\.4em\\]{min-height:2.4em}.min-h-\\[120px\\]{min-height:120px}.w-1{width:calc(var(--spacing) * 1)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-6\\.5{width:calc(var(--spacing) * 6.5)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-full{width:100%}.max-w-\\[18rem\\]{max-width:18rem}.max-w-\\[20rem\\]{max-width:20rem}.max-w-\\[75\\%\\]{max-width:75%}.max-w-\\[320px\\]{max-width:320px}.max-w-\\[360px\\]{max-width:360px}.max-w-\\[400px\\]{max-width:400px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\\[pw-fade-in_180ms_ease-out\\]{animation:.18s ease-out pw-fade-in}.animate-\\[pw-scale-in_220ms_cubic-bezier\\(0\\.16\\,1\\,0\\.3\\,1\\)\\]{animation:.22s cubic-bezier(.16,1,.3,1) pw-scale-in}.animate-ping{animation:var(--animate-ping)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-row-reverse{flex-direction:row-reverse}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-x-1\\.5{column-gap:calc(var(--spacing) * 1.5)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\\[9px\\]{border-radius:9px}.rounded-\\[11px\\]{border-radius:11px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-tl-xl{border-top-left-radius:var(--radius-xl)}.rounded-tr-xl{border-top-right-radius:var(--radius-xl)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border,.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\\[2\\.5px\\]{border-style:var(--tw-border-style);border-width:2.5px}.border-\\[3px\\]{border-style:var(--tw-border-style);border-width:3px}.border-\\[5px\\]{border-style:var(--tw-border-style);border-width:5px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b,.border-b-1{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\\[var\\(--pw-accent\\)\\]{border-color:var(--pw-accent)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-white{border-color:var(--color-white)}.border-white\\/40{border-color:#fff6}@supports (color:color-mix(in lab,red,red)){.border-white\\/40{border-color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.border-t-\\[var\\(--pw-accent\\)\\]{border-top-color:var(--pw-accent)}.border-t-gray-700{border-top-color:var(--color-gray-700)}.border-t-white{border-top-color:var(--color-white)}.bg-\\[color-mix\\(in_srgb\\,var\\(--pw-accent\\)_6\\%\\,white\\)\\]{background-color:var(--pw-accent)}@supports (color:color-mix(in lab,red,red)){.bg-\\[color-mix\\(in_srgb\\,var\\(--pw-accent\\)_6\\%\\,white\\)\\]{background-color:color-mix(in srgb,var(--pw-accent) 6%,white)}}.bg-\\[var\\(--pw-accent\\)\\]{background-color:var(--pw-accent)}.bg-black\\/20{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.bg-black\\/20{background-color:color-mix(in oklab,var(--color-black) 20%,transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-50\\/60{background-color:#f9fafb99}@supports (color:color-mix(in lab,red,red)){.bg-gray-50\\/60{background-color:color-mix(in oklab,var(--color-gray-50) 60%,transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-red-50{background-color:var(--color-red-50)}.bg-slate-950\\/50{background-color:#02061880}@supports (color:color-mix(in lab,red,red)){.bg-slate-950\\/50{background-color:color-mix(in oklab,var(--color-slate-950) 50%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\\/80{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.bg-white\\/80{background-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.p-2{padding:calc(var(--spacing) * 2)}.p-3\\.5{padding:calc(var(--spacing) * 3.5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\\.5{padding-block:calc(var(--spacing) * 3.5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-3\\.5{padding-top:calc(var(--spacing) * 3.5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-3\\.5{padding-bottom:calc(var(--spacing) * 3.5)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[0\\.9375rem\\]{font-size:.9375rem}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[12px\\]{font-size:12px}.text-\\[13px\\]{font-size:13px}.text-\\[15px\\]{font-size:15px}.text-\\[22px\\]{font-size:22px}.text-\\[26px\\]{font-size:26px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-balance{text-wrap:balance}.whitespace-nowrap{white-space:nowrap}.text-\\[var\\(--pw-accent\\)\\]{color:var(--pw-accent)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-700{color:var(--color-emerald-700)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-800\\/70{color:#1e2939b3}@supports (color:color-mix(in lab,red,red)){.text-gray-800\\/70{color:color-mix(in oklab,var(--color-gray-800) 70%,transparent)}}.text-gray-900{color:var(--color-gray-900)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.decoration-gray-400{-webkit-text-decoration-color:var(--color-gray-400);text-decoration-color:var(--color-gray-400)}.decoration-\\[1\\.5px\\]{text-decoration-thickness:1.5px}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-60{opacity:.6}.opacity-90{opacity:.9}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_0_2px_rgba\\(239\\,68\\,68\\,0\\.5\\)\\]{--tw-shadow:0 0 0 2px var(--tw-shadow-color,#ef444480);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-8{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(8px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.\\!filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.outline-none{--tw-outline-style:none;outline-style:none}.placeholder\\:text-gray-500::placeholder{color:var(--color-gray-500)}@media(hover:hover){.hover\\:-translate-y-px:hover{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\\:border-gray-300:hover{border-color:var(--color-gray-300)}.hover\\:border-gray-400:hover{border-color:var(--color-gray-400)}.hover\\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\\:bg-gray-50\\/60:hover{background-color:#f9fafb99}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-gray-50\\/60:hover{background-color:color-mix(in oklab,var(--color-gray-50) 60%,transparent)}}.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:bg-gray-200\\/60:hover{background-color:#e5e7eb99}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-gray-200\\/60:hover{background-color:color-mix(in oklab,var(--color-gray-200) 60%,transparent)}}.hover\\:bg-white:hover{background-color:var(--color-white)}.hover\\:text-gray-700:hover{color:var(--color-gray-700)}.hover\\:text-gray-900:hover{color:var(--color-gray-900)}.hover\\:text-red-600:hover{color:var(--color-red-600)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-80:hover{opacity:.8}.hover\\:opacity-90:hover{opacity:.9}.hover\\:brightness-105:hover{--tw-brightness:brightness(105%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}.focus\\:bg-gray-200\\/60:focus{background-color:#e5e7eb99}@supports (color:color-mix(in lab,red,red)){.focus\\:bg-gray-200\\/60:focus{background-color:color-mix(in oklab,var(--color-gray-200) 60%,transparent)}}.focus\\:shadow-\\[0_0_0_2px_color-mix\\(in_srgb\\,var\\(--pw-accent\\)_30\\%\\,transparent\\)\\]:focus{--tw-shadow:0 0 0 2px var(--tw-shadow-color,var(--pw-accent))}@supports (color:color-mix(in lab,red,red)){.focus\\:shadow-\\[0_0_0_2px_color-mix\\(in_srgb\\,var\\(--pw-accent\\)_30\\%\\,transparent\\)\\]:focus{--tw-shadow:0 0 0 2px var(--tw-shadow-color,color-mix(in srgb,var(--pw-accent) 30%,transparent))}}.focus\\:shadow-\\[0_0_0_2px_color-mix\\(in_srgb\\,var\\(--pw-accent\\)_30\\%\\,transparent\\)\\]:focus{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:opacity-80:focus-visible{opacity:.8}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-\\[var\\(--pw-accent\\)\\]:focus-visible{--tw-ring-color:var(--pw-accent)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\\:ring-inset:focus-visible{--tw-ring-inset:inset}.active\\:scale-\\[0\\.98\\]:active{scale:.98}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-60:disabled{opacity:.6}@media(hover:hover){.disabled\\:hover\\:translate-y-0:disabled:hover{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\\:hover\\:brightness-100:disabled:hover{--tw-brightness:brightness(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}@media(min-width:40rem){.sm\\:max-h-\\[calc\\(100dvh-2rem\\)\\]{max-height:calc(100dvh - 2rem)}.sm\\:p-4{padding:calc(var(--spacing) * 4)}.sm\\:p-8{padding:calc(var(--spacing) * 8)}.sm\\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\\:pt-8{padding-top:calc(var(--spacing) * 8)}.sm\\:pb-4{padding-bottom:calc(var(--spacing) * 4)}.sm\\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}}}.pw-cta-shimmer:before{content:"";z-index:1;background:linear-gradient(90deg,#0000,#ffffff59 50%,#0000);width:100%;height:100%;animation:3s infinite pw-cta-shimmer;position:absolute;top:0;left:-100%}@keyframes pw-cta-shimmer{0%{left:-100%}to{left:100%}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}';
102
102
  let gt = !1;
103
- function Gt() {
103
+ function Wt() {
104
104
  if (gt || (gt = !0, typeof CSS > "u" || typeof CSS.registerProperty != "function")) return;
105
105
  let e;
106
106
  try {
107
107
  const t = new CSSStyleSheet();
108
- t.replaceSync(It), e = t.cssRules;
108
+ t.replaceSync(At), e = t.cssRules;
109
109
  } catch {
110
110
  return;
111
111
  }
@@ -123,13 +123,13 @@ function Gt() {
123
123
  }
124
124
  }
125
125
  }
126
- function qt(e, t, r = {}) {
126
+ function Zt(e, t, r = {}) {
127
127
  if (typeof document > "u")
128
128
  throw new Error("mountShadow called in non-DOM environment");
129
- Gt();
129
+ Wt();
130
130
  const a = r.host ?? document.createElement("div");
131
131
  a.setAttribute("data-paywall-host", ""), a.style.cssText = r.inline ? "all: initial; position: absolute; inset: 0; z-index: 1; pointer-events: none;" : "all: initial; position: fixed; inset: 0; z-index: 2147483647; pointer-events: none;", !a.isConnected && !r.inline && document.body.appendChild(a);
132
- const n = a.attachShadow({ mode: r.shadowMode ?? "closed" }), o = `
132
+ const i = a.attachShadow({ mode: r.shadowMode ?? "closed" }), o = `
133
133
  :host {
134
134
  all: initial !important;
135
135
  display: block !important;
@@ -148,23 +148,23 @@ function qt(e, t, r = {}) {
148
148
  visibility: visible !important;
149
149
  }
150
150
  `, s = document.createElement("style");
151
- s.textContent = o + It + (r.injectCss ?? ""), n.appendChild(s);
151
+ s.textContent = o + At + (r.injectCss ?? ""), i.appendChild(s);
152
152
  const l = document.createElement("div");
153
- l.style.pointerEvents = "auto", n.appendChild(l);
154
- let p = t;
155
- return Z(ut(e, p), l), {
156
- shadowRoot: n,
157
- update(d) {
158
- p = { ...p, ...d }, Z(ut(e, p), l);
153
+ l.style.pointerEvents = "auto", i.appendChild(l);
154
+ let u = t;
155
+ return K(ut(e, u), l), {
156
+ shadowRoot: i,
157
+ update(h) {
158
+ u = { ...u, ...h }, K(ut(e, u), l);
159
159
  },
160
160
  unmount() {
161
- Z(null, l), a.remove();
161
+ K(null, l), a.remove();
162
162
  }
163
163
  };
164
164
  }
165
- const Wt = (e, t, r) => {
165
+ const Kt = (e, t, r) => {
166
166
  const a = e[t];
167
- return a ? typeof a == "function" ? a() : Promise.resolve(a) : new Promise((n, o) => {
167
+ return a ? typeof a == "function" ? a() : Promise.resolve(a) : new Promise((i, o) => {
168
168
  (typeof queueMicrotask == "function" ? queueMicrotask : setTimeout)(
169
169
  o.bind(
170
170
  null,
@@ -174,7 +174,7 @@ const Wt = (e, t, r) => {
174
174
  )
175
175
  );
176
176
  });
177
- }, Zt = [
177
+ }, Yt = [
178
178
  "ru",
179
179
  "uk",
180
180
  "de",
@@ -202,19 +202,19 @@ const Wt = (e, t, r) => {
202
202
  "th",
203
203
  "vi",
204
204
  "he"
205
- ], At = (e, t, r) => Lt(t, r), Mt = Dt({ t: At, locale: "en" });
206
- function Lt(e, t) {
205
+ ], Mt = (e, t, r) => Pt(t, r), Lt = Ht({ t: Mt, locale: "en" });
206
+ function Pt(e, t) {
207
207
  if (!t) return e;
208
208
  let r = e;
209
- for (const [a, n] of Object.entries(t))
210
- r = r.split(`{${a}}`).join(String(n));
209
+ for (const [a, i] of Object.entries(t))
210
+ r = r.split(`{${a}}`).join(String(i));
211
211
  return r;
212
212
  }
213
- const X = /* @__PURE__ */ new Map(), J = /* @__PURE__ */ new Map();
214
- function Kt(e) {
215
- return Zt.includes(e);
213
+ const J = /* @__PURE__ */ new Map(), Q = /* @__PURE__ */ new Map();
214
+ function Tt(e) {
215
+ return Yt.includes(e);
216
216
  }
217
- function Yt(e) {
217
+ function Xt(e) {
218
218
  const t = [];
219
219
  if (typeof navigator < "u" && navigator.language) {
220
220
  t.push(navigator.language);
@@ -228,97 +228,100 @@ function Yt(e) {
228
228
  a && a !== r && t.push(a);
229
229
  }
230
230
  for (const a of t)
231
- if (Kt(a)) return a;
231
+ if (Tt(a)) return a;
232
232
  return null;
233
233
  }
234
- function Xt(e) {
234
+ function Jt(e) {
235
235
  return !!e.locales && Object.keys(e.locales).length > 0;
236
236
  }
237
- async function Jt(e) {
238
- const t = X.get(e);
237
+ async function Qt(e) {
238
+ const t = J.get(e);
239
239
  if (t) return t;
240
- const r = J.get(e);
240
+ const r = Q.get(e);
241
241
  if (r) return r;
242
- const a = Wt(/* @__PURE__ */ Object.assign({ "./locales/ar.ts": () => import("./ar-BCHXVoE2.js"), "./locales/cs.ts": () => import("./cs-B5NqpTW_.js"), "./locales/da.ts": () => import("./da-BJrGZ3LD.js"), "./locales/de.ts": () => import("./de-aepBKwsb.js"), "./locales/el.ts": () => import("./el-DTLQoX2D.js"), "./locales/es.ts": () => import("./es-CLutF-D_.js"), "./locales/fi.ts": () => import("./fi-DZ4csxqk.js"), "./locales/fr.ts": () => import("./fr-jJU1SSpj.js"), "./locales/he.ts": () => import("./he-D9obGPNj.js"), "./locales/hi.ts": () => import("./hi-pM8SQwZ3.js"), "./locales/hu.ts": () => import("./hu-E0m9WgbD.js"), "./locales/id.ts": () => import("./id-C6poPvby.js"), "./locales/it.ts": () => import("./it-B2RSFyVd.js"), "./locales/ja.ts": () => import("./ja-CM-VgVG6.js"), "./locales/ko.ts": () => import("./ko-C451fA21.js"), "./locales/nl.ts": () => import("./nl-DzQfJPo2.js"), "./locales/no.ts": () => import("./no-B51be8KT.js"), "./locales/pl.ts": () => import("./pl-5rTEkvfY.js"), "./locales/pt.ts": () => import("./pt-JwqffZ9u.js"), "./locales/ro.ts": () => import("./ro-BE_wJ1td.js"), "./locales/ru.ts": () => import("./ru-BviATvLb.js"), "./locales/sv.ts": () => import("./sv-DabGF9WL.js"), "./locales/th.ts": () => import("./th-BiF-bNo0.js"), "./locales/tr.ts": () => import("./tr-xZuly8X8.js"), "./locales/uk.ts": () => import("./uk-KlkAaHuy.js"), "./locales/vi.ts": () => import("./vi-BVCeumNE.js"), "./locales/zh.ts": () => import("./zh-C_ghwmqi.js") }), `./locales/${e}.ts`, 3).then((n) => {
243
- const o = n.default ?? {};
244
- return X.set(e, o), o;
245
- }).catch((n) => {
246
- console.warn(`[paywall] failed to load locale chunk "${e}"`, n);
242
+ const a = Kt(/* @__PURE__ */ Object.assign({ "./locales/ar.ts": () => import("./ar-nh4l4WDE.js"), "./locales/cs.ts": () => import("./cs-2UYO2rWf.js"), "./locales/da.ts": () => import("./da-BD0O_HfV.js"), "./locales/de.ts": () => import("./de-BkCiXPsn.js"), "./locales/el.ts": () => import("./el-cIcxTp07.js"), "./locales/es.ts": () => import("./es-CJBC_jrV.js"), "./locales/fi.ts": () => import("./fi-DyV7ynBf.js"), "./locales/fr.ts": () => import("./fr-BLQ4AIu7.js"), "./locales/he.ts": () => import("./he-Bg-Bqi7r.js"), "./locales/hi.ts": () => import("./hi-wQeE43oY.js"), "./locales/hu.ts": () => import("./hu-D9qxzu0r.js"), "./locales/id.ts": () => import("./id-Rx_wYvqy.js"), "./locales/it.ts": () => import("./it-B1SRPZ3e.js"), "./locales/ja.ts": () => import("./ja-DiItm8te.js"), "./locales/ko.ts": () => import("./ko-CdGFWAKX.js"), "./locales/nl.ts": () => import("./nl-CmZ3vEvj.js"), "./locales/no.ts": () => import("./no-BuxByZpq.js"), "./locales/pl.ts": () => import("./pl-jZFCnDb8.js"), "./locales/pt.ts": () => import("./pt-Cld7MwIW.js"), "./locales/ro.ts": () => import("./ro-CuKDqj3C.js"), "./locales/ru.ts": () => import("./ru-B7cjqJUm.js"), "./locales/sv.ts": () => import("./sv-D9y-M1Fo.js"), "./locales/th.ts": () => import("./th-D9umBjEy.js"), "./locales/tr.ts": () => import("./tr-BddMywiw.js"), "./locales/uk.ts": () => import("./uk-Dbd31hFt.js"), "./locales/vi.ts": () => import("./vi-Do3BMOdh.js"), "./locales/zh.ts": () => import("./zh-gQSYLZI3.js") }), `./locales/${e}.ts`, 3).then((i) => {
243
+ const o = i.default ?? {};
244
+ return J.set(e, o), o;
245
+ }).catch((i) => {
246
+ console.warn(`[paywall] failed to load locale chunk "${e}"`, i);
247
247
  const o = {};
248
- return X.set(e, o), o;
248
+ return J.set(e, o), o;
249
249
  }).finally(() => {
250
- J.delete(e);
250
+ Q.delete(e);
251
251
  });
252
- return J.set(e, a), a;
252
+ return Q.set(e, a), a;
253
253
  }
254
- function Qt({ bootstrap: e, children: t }) {
255
- const [r, a] = b("en"), [n, o] = b(null);
254
+ function te({ bootstrap: e, forceLocale: t, children: r }) {
255
+ const [a, i] = b("en"), [o, s] = b(null);
256
256
  T(() => {
257
- if (!e || !Xt(e)) return;
258
- const l = Yt(e);
259
- if (!l || l === r && n) return;
260
- let p = !1;
261
- return Jt(l).then((d) => {
262
- p || (a(l), o(d));
257
+ const h = (t && Tt(t) ? t : null) ?? (!e || !Jt(e) ? null : Xt(e));
258
+ if (!h) {
259
+ (o !== null || a !== "en") && (i("en"), s(null));
260
+ return;
261
+ }
262
+ if (h === a && o) return;
263
+ let d = !1;
264
+ return Qt(h).then((p) => {
265
+ d || (i(h), s(p));
263
266
  }), () => {
264
- p = !0;
267
+ d = !0;
265
268
  };
266
- }, [e]);
267
- const s = {
268
- locale: r,
269
- t: n ? (l, p, d) => Lt(n[l] ?? p, d) : At
269
+ }, [e, t]);
270
+ const l = {
271
+ locale: a,
272
+ t: o ? (u, h, d) => Pt(o[u] ?? h, d) : Mt
270
273
  };
271
- return /* @__PURE__ */ i(Mt.Provider, { value: s, children: t });
274
+ return /* @__PURE__ */ n(Lt.Provider, { value: l, children: r });
272
275
  }
273
276
  function v() {
274
- return Nt(Mt);
277
+ return Vt(Lt);
275
278
  }
276
279
  const ft = 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';
277
- function te({
280
+ function ee({
278
281
  open: e,
279
282
  onClose: t,
280
283
  labelledBy: r,
281
284
  brandColor: a,
282
- topBanner: n,
285
+ topBanner: i,
283
286
  allowClose: o = !0,
284
287
  hideCloseButton: s = !1,
285
288
  inline: l = !1,
286
- children: p
289
+ children: u
287
290
  }) {
288
- const { t: d } = v(), g = O(null), h = O(null);
291
+ const { t: h } = v(), d = F(null), p = F(null);
289
292
  return T(() => {
290
293
  if (!e) return;
291
- h.current = document.activeElement ?? null;
292
- const y = g.current;
293
- y && (y.querySelector(ft) ?? y).focus({ preventScroll: !0 });
294
- const B = (k) => {
295
- if (k.key === "Escape") {
294
+ p.current = document.activeElement ?? null;
295
+ const f = d.current;
296
+ f && (f.querySelector(ft) ?? f).focus({ preventScroll: !0 });
297
+ const M = (y) => {
298
+ if (y.key === "Escape") {
296
299
  if (!o) return;
297
- k.stopPropagation(), t();
300
+ y.stopPropagation(), t();
298
301
  return;
299
302
  }
300
- if (k.key !== "Tab" || !g.current) return;
301
- const A = Array.from(
302
- g.current.querySelectorAll(ft)
303
- ).filter((E) => !E.hasAttribute("disabled") && E.tabIndex !== -1);
304
- if (A.length === 0) {
305
- k.preventDefault();
303
+ if (y.key !== "Tab" || !d.current) return;
304
+ const L = Array.from(
305
+ d.current.querySelectorAll(ft)
306
+ ).filter((O) => !O.hasAttribute("disabled") && O.tabIndex !== -1);
307
+ if (L.length === 0) {
308
+ y.preventDefault();
306
309
  return;
307
310
  }
308
- const C = A[0], j = A[A.length - 1], z = document.activeElement;
309
- k.shiftKey && z === C ? (k.preventDefault(), j.focus()) : !k.shiftKey && z === j && (k.preventDefault(), C.focus());
311
+ const I = L[0], z = L[L.length - 1], j = document.activeElement;
312
+ y.shiftKey && j === I ? (y.preventDefault(), z.focus()) : !y.shiftKey && j === z && (y.preventDefault(), I.focus());
310
313
  };
311
- document.addEventListener("keydown", B, !0);
312
- const P = document.body.style.overflow;
314
+ document.addEventListener("keydown", M, !0);
315
+ const E = document.body.style.overflow;
313
316
  return l || (document.body.style.overflow = "hidden"), () => {
314
- document.removeEventListener("keydown", B, !0), l || (document.body.style.overflow = P), h.current?.focus?.({ preventScroll: !0 });
317
+ document.removeEventListener("keydown", M, !0), l || (document.body.style.overflow = E), p.current?.focus?.({ preventScroll: !0 });
315
318
  };
316
319
  }, [e, t, o, l]), e ? /* @__PURE__ */ c(
317
320
  "div",
318
321
  {
319
322
  class: `${l ? "absolute z-[1]" : "fixed z-[2147483647]"} inset-0 flex items-center justify-center bg-slate-950/50 p-2 sm:p-4 backdrop-blur-md animate-[pw-fade-in_180ms_ease-out]`,
320
- onClick: (y) => {
321
- o && y.target === y.currentTarget && t();
323
+ onClick: (f) => {
324
+ o && f.target === f.currentTarget && t();
322
325
  },
323
326
  "data-pw-root": !0,
324
327
  children: [
@@ -328,11 +331,11 @@ function te({
328
331
  class: "relative flex w-full max-w-[400px] flex-col animate-[pw-scale-in_220ms_cubic-bezier(0.16,1,0.3,1)]",
329
332
  style: { "--pw-accent": a ?? "#3b82f6" },
330
333
  children: [
331
- n,
334
+ i,
332
335
  /* @__PURE__ */ c(
333
336
  "div",
334
337
  {
335
- ref: g,
338
+ ref: d,
336
339
  role: "dialog",
337
340
  "aria-modal": "true",
338
341
  "aria-labelledby": r,
@@ -342,15 +345,15 @@ function te({
342
345
  boxShadow: "0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1)"
343
346
  },
344
347
  children: [
345
- p,
346
- o && !s ? /* @__PURE__ */ i(
348
+ u,
349
+ o && !s ? /* @__PURE__ */ n(
347
350
  "button",
348
351
  {
349
352
  type: "button",
350
353
  onClick: t,
351
- "aria-label": d("modal.close_aria", "Close"),
354
+ "aria-label": h("modal.close_aria", "Close"),
352
355
  class: "absolute right-3 top-3 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-white/80 text-gray-500 backdrop-blur-sm transition-colors hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--pw-accent)]",
353
- children: /* @__PURE__ */ i("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ i(
356
+ children: /* @__PURE__ */ n("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ n(
354
357
  "path",
355
358
  {
356
359
  d: "M3 3l10 10M13 3L3 13",
@@ -367,7 +370,7 @@ function te({
367
370
  ]
368
371
  }
369
372
  ),
370
- /* @__PURE__ */ i("style", { children: `
373
+ /* @__PURE__ */ n("style", { children: `
371
374
  @keyframes pw-fade-in { from { opacity: 0 } to { opacity: 1 } }
372
375
  @keyframes pw-scale-in {
373
376
  from { opacity: 0; transform: translateY(12px) scale(0.96) }
@@ -378,7 +381,7 @@ function te({
378
381
  }
379
382
  ) : null;
380
383
  }
381
- function ee(e, t) {
384
+ function re(e, t) {
382
385
  switch (e) {
383
386
  case "google":
384
387
  return t("auth.continue_with_google", "Continue with Google");
@@ -390,30 +393,64 @@ function ee(e, t) {
390
393
  return t("auth.continue_with_facebook", "Continue with Facebook");
391
394
  }
392
395
  }
393
- function Pt({ block: e, ctx: t }) {
394
- const r = t.auth, a = t.authSession, n = e.allow_signup !== !1, o = e.allow_password_reset !== !1, s = e.hide_when_authenticated !== !1;
396
+ function wt(e, t, r) {
397
+ const a = t === "signup" ? r("auth.signup_failed", "Sign-up failed") : r("auth.signin_failed", "Sign-in failed");
398
+ if (!(e instanceof U)) return a;
399
+ switch (e.code) {
400
+ case "invalid_credentials":
401
+ return r("auth.invalid_credentials", "Invalid email or password");
402
+ case "email_not_confirmed":
403
+ return r("auth.email_not_confirmed", "Please confirm your email before signing in.");
404
+ case "email_exists":
405
+ case "user_already_exists":
406
+ return r("auth.email_exists", "An account with this email already exists.");
407
+ case "weak_password":
408
+ return r("auth.weak_password", "Password is too weak.");
409
+ case "invalid_otp":
410
+ case "otp_expired":
411
+ case "token_expired":
412
+ return r("auth.invalid_otp", "The code is invalid or has expired.");
413
+ case "over_email_send_rate_limit":
414
+ case "over_request_rate_limit":
415
+ case "rate_limited":
416
+ case "http_429":
417
+ return r("auth.rate_limited", "Too many requests. Please try again in a moment.");
418
+ case "network_error":
419
+ return r("auth.network_error", "Network error. Please check your connection and try again.");
420
+ case "upstream":
421
+ case "upstream_error":
422
+ case "http_502":
423
+ case "http_503":
424
+ case "http_504":
425
+ return r("auth.service_unavailable", "Service is temporarily unavailable. Please try again.");
426
+ default:
427
+ return a;
428
+ }
429
+ }
430
+ function Et({ block: e, ctx: t }) {
431
+ const r = t.auth, a = t.authSession, i = e.allow_signup !== !1, o = e.allow_password_reset !== !1, s = e.hide_when_authenticated !== !1;
395
432
  if (!r)
396
433
  return typeof console < "u" && console.warn("[paywall] auth_panel rendered without AuthClient — pass `auth: true` to PaywallUI"), null;
397
434
  const l = a && !a.user.is_anonymous ? a : null;
398
- return l && s ? null : l ? /* @__PURE__ */ i(re, { email: l.user.email ?? "", onSignOut: () => r.signOut().catch(() => {
399
- }) }) : /* @__PURE__ */ i(
400
- ie,
435
+ return l && s ? null : l ? /* @__PURE__ */ n(ie, { email: l.user.email ?? "", onSignOut: () => r.signOut().catch(() => {
436
+ }) }) : /* @__PURE__ */ n(
437
+ ne,
401
438
  {
402
439
  block: e,
403
- allowSignup: n,
440
+ allowSignup: i,
404
441
  allowReset: o,
405
442
  ctx: t
406
443
  }
407
444
  );
408
445
  }
409
- function re({ email: e, onSignOut: t }) {
446
+ function ie({ email: e, onSignOut: t }) {
410
447
  const { t: r } = v();
411
448
  return /* @__PURE__ */ c("div", { class: "flex items-center justify-between gap-3 rounded-2xl bg-gray-100 px-4 py-3", children: [
412
449
  /* @__PURE__ */ c("div", { class: "flex flex-col", children: [
413
- /* @__PURE__ */ i("span", { class: "text-[10px] font-semibold uppercase tracking-wider text-gray-500", children: r("auth.signed_in", "Signed in") }),
414
- /* @__PURE__ */ i("span", { class: "text-sm font-medium text-gray-900", children: e })
450
+ /* @__PURE__ */ n("span", { class: "text-[10px] font-semibold uppercase tracking-wider text-gray-500", children: r("auth.signed_in", "Signed in") }),
451
+ /* @__PURE__ */ n("span", { class: "text-sm font-medium text-gray-900", children: e })
415
452
  ] }),
416
- /* @__PURE__ */ i(
453
+ /* @__PURE__ */ n(
417
454
  "button",
418
455
  {
419
456
  type: "button",
@@ -424,14 +461,14 @@ function re({ email: e, onSignOut: t }) {
424
461
  )
425
462
  ] });
426
463
  }
427
- function ie({ block: e, allowSignup: t, allowReset: r, ctx: a }) {
428
- const { t: n } = v(), o = a.auth, s = e.providers ?? [], [l, p] = b("signin"), [d, g] = b(""), [h, x] = b(""), [u, m] = b(""), [y, B] = b(""), [P, k] = b(null), [A, C] = b(null), [j, z] = b(null), [E, D] = b(!1), [F, U] = b(null);
464
+ function ne({ block: e, allowSignup: t, allowReset: r, ctx: a }) {
465
+ const { t: i } = v(), o = a.auth, s = e.providers ?? [], [l, u] = b("signin"), [h, d] = b(""), [p, x] = b(""), [_, g] = b(""), [f, M] = b(""), [E, y] = b(null), [L, I] = b(null), [z, j] = b(null), [O, D] = b(!1), [R, N] = b(null);
429
466
  T(() => {
430
467
  if (typeof o.getLastLogin != "function") return;
431
468
  let S = !1;
432
469
  return o.getLastLogin().then(
433
- (L) => {
434
- S || !L || (U(L), L.email && g((V) => V === "" ? L.email : V));
470
+ (P) => {
471
+ S || !P || (N(P), P.email && d((V) => V === "" ? P.email : V));
435
472
  },
436
473
  () => {
437
474
  }
@@ -439,170 +476,167 @@ function ie({ block: e, allowSignup: t, allowReset: r, ctx: a }) {
439
476
  S = !0;
440
477
  };
441
478
  }, [o]);
442
- const M = (S) => {
443
- p(S), C(null), z(null), D(!1);
444
- }, I = async (S) => {
445
- if (S.preventDefault(), !P) {
446
- if (C(null), z(null), l === "signup" && !E) {
447
- if (!d.trim()) return;
479
+ const A = (S) => {
480
+ u(S), I(null), j(null), D(!1);
481
+ }, C = async (S) => {
482
+ if (S.preventDefault(), !E) {
483
+ if (I(null), j(null), l === "signup" && !O) {
484
+ if (!h.trim()) return;
448
485
  D(!0);
449
486
  return;
450
487
  }
451
- if (l === "signup" && h !== u) {
452
- C(n("auth.passwords_mismatch", "Passwords don't match"));
488
+ if (l === "signup" && p !== _) {
489
+ I(i("auth.passwords_mismatch", "Passwords don't match"));
453
490
  return;
454
491
  }
455
- k("email");
492
+ y("email");
456
493
  try {
457
- l === "signin" ? await o.signInWithEmail({ email: d, password: h }) : l === "signup" ? (await o.signUp({ email: d, password: h })).kind === "confirmation_required" && (p("reset_verify"), z(n("auth.check_email_message", "Check your email for a confirmation code."))) : l === "forgot" ? (await o.requestPasswordReset({ email: d }), p("reset_sent"), z(
458
- n("auth.reset_sent_message", "If that email exists, a reset code has been sent.")
494
+ l === "signin" ? await o.signInWithEmail({ email: h, password: p }) : l === "signup" ? (await o.signUp({ email: h, password: p })).kind === "confirmation_required" && (u("reset_verify"), j(i("auth.check_email_message", "Check your email for a confirmation code."))) : l === "forgot" ? (await o.requestPasswordReset({ email: h }), u("reset_sent"), j(
495
+ i("auth.reset_sent_message", "If that email exists, a reset code has been sent.")
459
496
  )) : l === "reset_verify" && (await o.verifyOtp({
460
- email: d,
461
- token: y,
462
- type: h ? "recovery" : "email"
463
- }), h && await o.updatePassword({ password: h }));
464
- } catch (L) {
465
- const V = L instanceof R ? L.message : n("auth.generic_error", "Something went wrong");
466
- C(V);
497
+ email: h,
498
+ token: f,
499
+ type: p ? "recovery" : "email"
500
+ }), p && await o.updatePassword({ password: p }));
501
+ } catch (P) {
502
+ I(wt(P, l === "signup" ? "signup" : l === "reset_verify" ? "otp" : l === "forgot" ? "reset" : "signin", i));
467
503
  } finally {
468
- k(null);
504
+ y(null);
469
505
  }
470
506
  }
471
- }, w = async (S) => {
472
- if (!P) {
473
- k(S), C(null), z(null);
507
+ }, B = async (S) => {
508
+ if (!E) {
509
+ y(S), I(null), j(null);
474
510
  try {
475
511
  await o.signInWithOAuth({
476
512
  provider: S,
477
- onPopupOpened: () => k(null)
513
+ onPopupOpened: () => y(null)
478
514
  });
479
- } catch (L) {
480
- if (L instanceof R) {
481
- if (L.code === "oauth_cancelled" || L.code === "oauth_timeout") return;
482
- C(L.message);
483
- } else
484
- C(n("auth.signin_failed", "Sign-in failed"));
515
+ } catch (P) {
516
+ if (P instanceof U && (P.code === "oauth_cancelled" || P.code === "oauth_timeout"))
517
+ return;
518
+ I(wt(P, "signin", i));
485
519
  } finally {
486
- k(null);
520
+ y(null);
487
521
  }
488
522
  }
489
- }, f = s.length > 0 && (l === "signin" || l === "signup"), _ = l === "signin" || l === "signup" || l === "forgot", W = l === "signin" || l === "signup" && E;
523
+ }, w = s.length > 0 && (l === "signin" || l === "signup"), m = l === "signin" || l === "signup" || l === "forgot", k = l === "signin" || l === "signup" && O;
490
524
  return /* @__PURE__ */ c("div", { class: "flex flex-col gap-5", children: [
491
- /* @__PURE__ */ i(ne, { mode: l, customHeading: e.heading, customSubheading: e.subheading }),
492
- f ? /* @__PURE__ */ c("div", { class: "flex flex-col gap-2.5", children: [
525
+ /* @__PURE__ */ n(ae, { mode: l, customHeading: e.heading, customSubheading: e.subheading }),
526
+ w ? /* @__PURE__ */ c("div", { class: "flex flex-col gap-2.5", children: [
493
527
  s.map((S) => /* @__PURE__ */ c("div", { class: "relative", children: [
494
528
  /* @__PURE__ */ c(
495
529
  "button",
496
530
  {
497
531
  type: "button",
498
- onClick: () => w(S),
499
- disabled: P !== null,
532
+ onClick: () => B(S),
533
+ disabled: E !== null,
500
534
  class: "flex h-12 w-full items-center justify-center gap-2.5 rounded-full border-1 border-gray-200 bg-white px-5 text-base font-medium text-gray-900 transition-all hover:border-gray-300 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-60 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--pw-accent)]",
501
535
  children: [
502
- P === S ? /* @__PURE__ */ i("span", { class: "inline-block h-4 w-4 animate-spin rounded-full border-2 border-gray-300 border-t-gray-700" }) : /* @__PURE__ */ i(he, { provider: S }),
503
- /* @__PURE__ */ i("span", { children: ee(S, n) })
536
+ E === S ? /* @__PURE__ */ n("span", { class: "inline-block h-4 w-4 animate-spin rounded-full border-2 border-gray-300 border-t-gray-700" }) : /* @__PURE__ */ n(ge, { provider: S }),
537
+ /* @__PURE__ */ n("span", { children: re(S, i) })
504
538
  ]
505
539
  }
506
540
  ),
507
- F?.method === S ? /* @__PURE__ */ i(mt, { email: F.email }) : null
541
+ R?.method === S ? /* @__PURE__ */ n(bt, { email: R.email }) : null
508
542
  ] }, S)),
509
- /* @__PURE__ */ i(pe, {})
543
+ /* @__PURE__ */ n(he, {})
510
544
  ] }) : null,
511
- /* @__PURE__ */ c("form", { onSubmit: I, class: "flex flex-col gap-3", children: [
512
- _ && /* @__PURE__ */ i(
513
- wt,
545
+ /* @__PURE__ */ c("form", { onSubmit: C, class: "flex flex-col gap-3", children: [
546
+ m && /* @__PURE__ */ n(
547
+ mt,
514
548
  {
515
549
  type: "email",
516
- placeholder: n("auth.email", "Email address"),
517
- value: d,
518
- onInput: g,
550
+ placeholder: i("auth.email", "Email address"),
551
+ value: h,
552
+ onInput: d,
519
553
  autocomplete: "email",
520
554
  required: !0
521
555
  }
522
556
  ),
523
- W && /* @__PURE__ */ i(
524
- Q,
557
+ k && /* @__PURE__ */ n(
558
+ tt,
525
559
  {
526
- placeholder: n("auth.password", "Password"),
527
- value: h,
560
+ placeholder: i("auth.password", "Password"),
561
+ value: p,
528
562
  onInput: x,
529
563
  autocomplete: l === "signin" ? "current-password" : "new-password",
530
564
  required: !0
531
565
  }
532
566
  ),
533
- l === "signup" && E && /* @__PURE__ */ i(
534
- Q,
567
+ l === "signup" && O && /* @__PURE__ */ n(
568
+ tt,
535
569
  {
536
- placeholder: n("auth.repeat_password", "Repeat password"),
537
- value: u,
538
- onInput: m,
570
+ placeholder: i("auth.repeat_password", "Repeat password"),
571
+ value: _,
572
+ onInput: g,
539
573
  autocomplete: "new-password",
540
574
  required: !0
541
575
  }
542
576
  ),
543
- l === "reset_verify" && /* @__PURE__ */ c(q, { children: [
544
- /* @__PURE__ */ i(
545
- wt,
577
+ l === "reset_verify" && /* @__PURE__ */ c(Z, { children: [
578
+ /* @__PURE__ */ n(
579
+ mt,
546
580
  {
547
581
  type: "text",
548
- placeholder: n("auth.confirmation_code", "Confirmation code"),
549
- value: y,
550
- onInput: B,
582
+ placeholder: i("auth.confirmation_code", "Confirmation code"),
583
+ value: f,
584
+ onInput: M,
551
585
  autocomplete: "one-time-code",
552
586
  inputMode: "numeric",
553
587
  required: !0
554
588
  }
555
589
  ),
556
- /* @__PURE__ */ i(
557
- Q,
590
+ /* @__PURE__ */ n(
591
+ tt,
558
592
  {
559
- placeholder: n(
593
+ placeholder: i(
560
594
  "auth.new_password_optional",
561
595
  "New password (optional — only for password reset)"
562
596
  ),
563
- value: h,
597
+ value: p,
564
598
  onInput: x,
565
599
  autocomplete: "new-password"
566
600
  }
567
601
  )
568
602
  ] }),
569
- l === "reset_sent" && j && /* @__PURE__ */ i("p", { class: "rounded-2xl bg-gray-100 px-4 py-3 text-sm text-gray-600", children: j }),
570
- l === "signin" && r && /* @__PURE__ */ i("div", { class: "flex justify-end text-sm", children: /* @__PURE__ */ i(G, { onClick: () => M("forgot"), children: n("auth.forgot_password", "Forgot password?") }) }),
571
- A && /* @__PURE__ */ i("p", { class: "text-sm text-red-600", children: A }),
572
- j && l !== "reset_sent" && /* @__PURE__ */ i("p", { class: "text-sm text-gray-500", children: j }),
603
+ l === "reset_sent" && z && /* @__PURE__ */ n("p", { class: "rounded-2xl bg-gray-100 px-4 py-3 text-sm text-gray-600", children: z }),
604
+ l === "signin" && r && /* @__PURE__ */ n("div", { class: "flex justify-end text-sm", children: /* @__PURE__ */ n(W, { onClick: () => A("forgot"), children: i("auth.forgot_password", "Forgot password?") }) }),
605
+ L && /* @__PURE__ */ n("p", { class: "text-sm text-red-600", children: L }),
606
+ z && l !== "reset_sent" && /* @__PURE__ */ n("p", { class: "text-sm text-gray-500", children: z }),
573
607
  l !== "reset_sent" && /* @__PURE__ */ c("div", { class: "relative", children: [
574
- /* @__PURE__ */ i(
575
- le,
608
+ /* @__PURE__ */ n(
609
+ ce,
576
610
  {
577
- busy: P === "email",
578
- label: oe(l, E, e.submit_label ?? e.heading, n)
611
+ busy: E === "email",
612
+ label: se(l, O, e.submit_label ?? e.heading, i)
579
613
  }
580
614
  ),
581
- l === "signin" && F?.method === "email" ? /* @__PURE__ */ i(mt, { email: F.email }) : null
615
+ l === "signin" && R?.method === "email" ? /* @__PURE__ */ n(bt, { email: R.email }) : null
582
616
  ] })
583
617
  ] }),
584
- /* @__PURE__ */ i(
585
- se,
618
+ /* @__PURE__ */ n(
619
+ le,
586
620
  {
587
621
  mode: l,
588
622
  allowSignup: t,
589
- onSwitch: M
623
+ onSwitch: A
590
624
  }
591
625
  )
592
626
  ] });
593
627
  }
594
- function ne({
628
+ function ae({
595
629
  mode: e,
596
630
  customHeading: t,
597
631
  customSubheading: r
598
632
  }) {
599
- const { t: a } = v(), n = ae(e, a), o = e === "signin" || e === "signup", s = o && t ? t : n.title, l = o && r !== void 0 ? r || null : n.subtitle;
633
+ const { t: a } = v(), i = oe(e, a), o = e === "signin" || e === "signup", s = o && t ? t : i.title, l = o && r !== void 0 ? r || null : i.subtitle;
600
634
  return /* @__PURE__ */ c("div", { class: "flex flex-col gap-2", children: [
601
- /* @__PURE__ */ i("h2", { class: "text-3xl font-bold tracking-tight text-gray-900", children: s }),
602
- l ? /* @__PURE__ */ i("p", { class: "text-base leading-relaxed text-gray-600", children: l }) : null
635
+ /* @__PURE__ */ n("h2", { class: "text-3xl font-bold tracking-tight text-gray-900", children: s }),
636
+ l ? /* @__PURE__ */ n("p", { class: "text-base leading-relaxed text-gray-600", children: l }) : null
603
637
  ] });
604
638
  }
605
- function ae(e, t) {
639
+ function oe(e, t) {
606
640
  switch (e) {
607
641
  case "signin":
608
642
  return {
@@ -637,7 +671,7 @@ function ae(e, t) {
637
671
  };
638
672
  }
639
673
  }
640
- function oe(e, t, r, a) {
674
+ function se(e, t, r, a) {
641
675
  if (e === "signin" && r) return r;
642
676
  switch (e) {
643
677
  case "signin":
@@ -652,7 +686,7 @@ function oe(e, t, r, a) {
652
686
  return a("cta.continue", "Continue");
653
687
  }
654
688
  }
655
- function se({
689
+ function le({
656
690
  mode: e,
657
691
  allowSignup: t,
658
692
  onSwitch: r
@@ -661,22 +695,22 @@ function se({
661
695
  return e === "signin" && t ? /* @__PURE__ */ c("p", { class: "text-center text-sm text-gray-600", children: [
662
696
  a("auth.no_account", "Don't have an account?"),
663
697
  " ",
664
- /* @__PURE__ */ i(G, { onClick: () => r("signup"), children: a("auth.sign_up_link", "Sign Up") })
698
+ /* @__PURE__ */ n(W, { onClick: () => r("signup"), children: a("auth.sign_up_link", "Sign Up") })
665
699
  ] }) : e === "signup" ? /* @__PURE__ */ c("p", { class: "text-center text-sm text-gray-600", children: [
666
700
  a("auth.have_account", "Already have an account?"),
667
701
  " ",
668
- /* @__PURE__ */ i(G, { onClick: () => r("signin"), children: a("auth.log_in_link", "Log In") })
702
+ /* @__PURE__ */ n(W, { onClick: () => r("signin"), children: a("auth.log_in_link", "Log In") })
669
703
  ] }) : e === "forgot" || e === "reset_sent" || e === "reset_verify" ? /* @__PURE__ */ c("p", { class: "text-center text-sm text-gray-600", children: [
670
704
  a("auth.no_account", "Don't have an account?"),
671
705
  " ",
672
- /* @__PURE__ */ i(G, { onClick: () => r("signup"), children: a("auth.sign_up_link", "Sign Up") })
706
+ /* @__PURE__ */ n(W, { onClick: () => r("signup"), children: a("auth.sign_up_link", "Sign Up") })
673
707
  ] }) : null;
674
708
  }
675
- function G({
709
+ function W({
676
710
  onClick: e,
677
711
  children: t
678
712
  }) {
679
- return /* @__PURE__ */ i(
713
+ return /* @__PURE__ */ n(
680
714
  "button",
681
715
  {
682
716
  type: "button",
@@ -687,8 +721,8 @@ function G({
687
721
  }
688
722
  );
689
723
  }
690
- function le({ busy: e, label: t }) {
691
- return /* @__PURE__ */ i(
724
+ function ce({ busy: e, label: t }) {
725
+ return /* @__PURE__ */ n(
692
726
  "button",
693
727
  {
694
728
  type: "submit",
@@ -698,62 +732,62 @@ function le({ busy: e, label: t }) {
698
732
  background: "linear-gradient(135deg, color-mix(in srgb, var(--pw-accent) 55%, white) 0%, var(--pw-accent) 55%, color-mix(in srgb, var(--pw-accent) 90%, black) 100%)",
699
733
  boxShadow: "0 0 20px 0 color-mix(in srgb, var(--pw-accent) 25%, transparent), inset 0 0 8px 0 color-mix(in srgb, white 25%, transparent)"
700
734
  },
701
- children: e ? /* @__PURE__ */ i("span", { class: "relative z-10 inline-block h-4 w-4 animate-spin rounded-full border-2 border-white/40 border-t-white" }) : /* @__PURE__ */ i("span", { class: "relative z-10", children: t })
735
+ children: e ? /* @__PURE__ */ n("span", { class: "relative z-10 inline-block h-4 w-4 animate-spin rounded-full border-2 border-white/40 border-t-white" }) : /* @__PURE__ */ n("span", { class: "relative z-10", children: t })
702
736
  }
703
737
  );
704
738
  }
705
- function wt({ type: e, placeholder: t, value: r, onInput: a, autocomplete: n, inputMode: o, required: s }) {
706
- return /* @__PURE__ */ i(
739
+ function mt({ type: e, placeholder: t, value: r, onInput: a, autocomplete: i, inputMode: o, required: s }) {
740
+ return /* @__PURE__ */ n(
707
741
  "input",
708
742
  {
709
743
  type: e,
710
744
  value: r,
711
745
  placeholder: t,
712
746
  onInput: (l) => a(l.target.value),
713
- autocomplete: n,
747
+ autocomplete: i,
714
748
  inputMode: o,
715
749
  required: s,
716
750
  class: "h-14 w-full rounded-2xl bg-gray-100 px-5 text-base text-gray-900 outline-none transition-all placeholder:text-gray-500 hover:bg-gray-200/60 focus:bg-gray-200/60 focus:shadow-[0_0_0_2px_color-mix(in_srgb,var(--pw-accent)_30%,transparent)]"
717
751
  }
718
752
  );
719
753
  }
720
- function Q({ placeholder: e, value: t, onInput: r, autocomplete: a, required: n }) {
721
- const { t: o } = v(), [s, l] = b(!1), p = O(null);
754
+ function tt({ placeholder: e, value: t, onInput: r, autocomplete: a, required: i }) {
755
+ const { t: o } = v(), [s, l] = b(!1), u = F(null);
722
756
  T(() => {
723
- const h = p.current;
724
- h && h.value !== t && (h.value = t);
757
+ const p = u.current;
758
+ p && p.value !== t && (p.value = t);
725
759
  }, [s, t]);
726
- const d = o("auth.show_password", "Show password"), g = o("auth.hide_password", "Hide password");
760
+ const h = o("auth.show_password", "Show password"), d = o("auth.hide_password", "Hide password");
727
761
  return /* @__PURE__ */ c("div", { class: "relative", children: [
728
- /* @__PURE__ */ i(
762
+ /* @__PURE__ */ n(
729
763
  "input",
730
764
  {
731
- ref: p,
765
+ ref: u,
732
766
  type: s ? "text" : "password",
733
767
  value: t,
734
768
  placeholder: e,
735
- onInput: (h) => r(h.target.value),
769
+ onInput: (p) => r(p.target.value),
736
770
  autocomplete: a,
737
- required: n,
771
+ required: i,
738
772
  class: "h-14 w-full rounded-2xl bg-gray-100 pl-5 pr-12 text-base text-gray-900 outline-none transition-all placeholder:text-gray-500 hover:bg-gray-200/60 focus:bg-gray-200/60 focus:shadow-[0_0_0_2px_color-mix(in_srgb,var(--pw-accent)_30%,transparent)]"
739
773
  }
740
774
  ),
741
- /* @__PURE__ */ i(
775
+ /* @__PURE__ */ n(
742
776
  "button",
743
777
  {
744
778
  type: "button",
745
- onClick: () => l((h) => !h),
746
- "aria-label": s ? g : d,
779
+ onClick: () => l((p) => !p),
780
+ "aria-label": s ? d : h,
747
781
  tabIndex: -1,
748
782
  class: "absolute right-4 top-1/2 -translate-y-1/2 flex h-6 w-6 items-center justify-center rounded text-gray-500 transition-colors hover:text-gray-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--pw-accent)]",
749
- children: s ? /* @__PURE__ */ i(de, {}) : /* @__PURE__ */ i(ce, {})
783
+ children: s ? /* @__PURE__ */ n(ue, {}) : /* @__PURE__ */ n(de, {})
750
784
  }
751
785
  )
752
786
  ] });
753
787
  }
754
- function ce() {
788
+ function de() {
755
789
  return /* @__PURE__ */ c("svg", { width: "18", height: "18", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [
756
- /* @__PURE__ */ i(
790
+ /* @__PURE__ */ n(
757
791
  "path",
758
792
  {
759
793
  d: "M1.667 10S4.583 4.167 10 4.167 18.333 10 18.333 10 15.417 15.833 10 15.833 1.667 10 1.667 10Z",
@@ -763,12 +797,12 @@ function ce() {
763
797
  "stroke-linejoin": "round"
764
798
  }
765
799
  ),
766
- /* @__PURE__ */ i("circle", { cx: "10", cy: "10", r: "2.5", stroke: "currentColor", "stroke-width": "1.5" })
800
+ /* @__PURE__ */ n("circle", { cx: "10", cy: "10", r: "2.5", stroke: "currentColor", "stroke-width": "1.5" })
767
801
  ] });
768
802
  }
769
- function de() {
803
+ function ue() {
770
804
  return /* @__PURE__ */ c("svg", { width: "18", height: "18", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [
771
- /* @__PURE__ */ i(
805
+ /* @__PURE__ */ n(
772
806
  "path",
773
807
  {
774
808
  d: "M8.236 4.293A6.96 6.96 0 0 1 10 4.167C15.417 4.167 18.333 10 18.333 10a13.5 13.5 0 0 1-1.92 2.755M11.768 11.768A2.5 2.5 0 0 1 8.233 8.233",
@@ -778,7 +812,7 @@ function de() {
778
812
  "stroke-linejoin": "round"
779
813
  }
780
814
  ),
781
- /* @__PURE__ */ i(
815
+ /* @__PURE__ */ n(
782
816
  "path",
783
817
  {
784
818
  d: "M14.953 14.953A8.84 8.84 0 0 1 10 15.833C4.583 15.833 1.667 10 1.667 10a13.5 13.5 0 0 1 3.38-3.953M1.667 1.667l16.666 16.666",
@@ -790,45 +824,45 @@ function de() {
790
824
  )
791
825
  ] });
792
826
  }
793
- function mt({ email: e }) {
794
- const { t } = v(), r = e ? t("auth.last_used", "Last · {email}", { email: ue(e) }) : t("auth.last_used_no_email", "Last");
795
- return /* @__PURE__ */ i("span", { class: "pointer-events-none absolute -top-2 right-3 max-w-[75%] truncate rounded-full bg-gray-900 px-2 py-0.5 text-[10px] font-semibold tracking-wide text-white shadow-sm", children: r });
827
+ function bt({ email: e }) {
828
+ const { t } = v(), r = e ? t("auth.last_used", "Last · {email}", { email: pe(e) }) : t("auth.last_used_no_email", "Last");
829
+ return /* @__PURE__ */ n("span", { class: "pointer-events-none absolute -top-2 right-3 max-w-[75%] truncate rounded-full bg-gray-900 px-2 py-0.5 text-[10px] font-semibold tracking-wide text-white shadow-sm", children: r });
796
830
  }
797
- function ue(e) {
831
+ function pe(e) {
798
832
  const [t, r] = e.split("@");
799
833
  return r ? `${t.slice(0, 3)}*****@${r}` : e;
800
834
  }
801
- function pe() {
835
+ function he() {
802
836
  const { t: e } = v();
803
837
  return /* @__PURE__ */ c("div", { class: "flex items-center gap-3 py-1 text-sm text-gray-400", children: [
804
- /* @__PURE__ */ i("div", { class: "h-px flex-1 bg-gray-200" }),
805
- /* @__PURE__ */ i("span", { children: e("auth.or", "or") }),
806
- /* @__PURE__ */ i("div", { class: "h-px flex-1 bg-gray-200" })
838
+ /* @__PURE__ */ n("div", { class: "h-px flex-1 bg-gray-200" }),
839
+ /* @__PURE__ */ n("span", { children: e("auth.or", "or") }),
840
+ /* @__PURE__ */ n("div", { class: "h-px flex-1 bg-gray-200" })
807
841
  ] });
808
842
  }
809
- function he({ provider: e }) {
843
+ function ge({ provider: e }) {
810
844
  return e === "google" ? /* @__PURE__ */ c("svg", { width: "20", height: "20", viewBox: "0 0 18 18", "aria-hidden": "true", children: [
811
- /* @__PURE__ */ i("path", { fill: "#4285F4", d: "M17.64 9.2c0-.64-.06-1.25-.16-1.84H9v3.49h4.84a4.14 4.14 0 0 1-1.79 2.71v2.26h2.9c1.7-1.56 2.69-3.87 2.69-6.62Z" }),
812
- /* @__PURE__ */ i("path", { fill: "#34A853", d: "M9 18c2.43 0 4.47-.8 5.96-2.18l-2.9-2.26c-.8.54-1.83.86-3.06.86-2.36 0-4.36-1.59-5.07-3.74H.92v2.33A9 9 0 0 0 9 18Z" }),
813
- /* @__PURE__ */ i("path", { fill: "#FBBC05", d: "M3.93 10.68a5.4 5.4 0 0 1 0-3.36V4.99H.92a9 9 0 0 0 0 8.02l3-2.33Z" }),
814
- /* @__PURE__ */ i("path", { fill: "#EA4335", d: "M9 3.58c1.32 0 2.5.45 3.44 1.34l2.58-2.58A9 9 0 0 0 .92 4.99l3.01 2.33C4.64 5.17 6.64 3.58 9 3.58Z" })
845
+ /* @__PURE__ */ n("path", { fill: "#4285F4", d: "M17.64 9.2c0-.64-.06-1.25-.16-1.84H9v3.49h4.84a4.14 4.14 0 0 1-1.79 2.71v2.26h2.9c1.7-1.56 2.69-3.87 2.69-6.62Z" }),
846
+ /* @__PURE__ */ n("path", { fill: "#34A853", d: "M9 18c2.43 0 4.47-.8 5.96-2.18l-2.9-2.26c-.8.54-1.83.86-3.06.86-2.36 0-4.36-1.59-5.07-3.74H.92v2.33A9 9 0 0 0 9 18Z" }),
847
+ /* @__PURE__ */ n("path", { fill: "#FBBC05", d: "M3.93 10.68a5.4 5.4 0 0 1 0-3.36V4.99H.92a9 9 0 0 0 0 8.02l3-2.33Z" }),
848
+ /* @__PURE__ */ n("path", { fill: "#EA4335", d: "M9 3.58c1.32 0 2.5.45 3.44 1.34l2.58-2.58A9 9 0 0 0 .92 4.99l3.01 2.33C4.64 5.17 6.64 3.58 9 3.58Z" })
815
849
  ] }) : e === "apple" ? (
816
850
  // viewBox 0 0 24 24 даёт воздух сверху/снизу пути, поэтому визуально
817
851
  // Apple-яблоко выглядит меньше Google. Компенсируем увеличенным
818
852
  // width/height — 26×26 даёт примерно equal optical size с Google 20×20.
819
- /* @__PURE__ */ i("svg", { width: "26", height: "26", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ i("path", { d: "M17.05 20.28c-.98.95-2.05.8-3.08.35-1.09-.46-2.09-.48-3.24 0-1.44.62-2.2.44-3.06-.35C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09zM12 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z" }) })
820
- ) : e === "github" ? /* @__PURE__ */ i("svg", { width: "20", height: "20", viewBox: "0 0 16 16", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ i("path", { d: "M8 0C3.6 0 0 3.6 0 8a8 8 0 0 0 5.5 7.6c.4.1.5-.2.5-.4v-1.5c-2.2.5-2.7-1-2.7-1-.4-.9-.9-1.2-.9-1.2-.7-.5.1-.5.1-.5.8.1 1.2.8 1.2.8.7 1.2 1.9.9 2.4.7 0-.5.3-.9.5-1.1-1.8-.2-3.6-.9-3.6-4 0-.9.3-1.6.8-2.1-.1-.2-.4-1 .1-2.1 0 0 .7-.2 2.2.8a7.6 7.6 0 0 1 4 0c1.5-1 2.2-.8 2.2-.8.4 1.1.2 1.9.1 2.1.5.5.8 1.2.8 2.1 0 3.1-1.9 3.7-3.6 3.9.3.3.6.8.6 1.6V15c0 .2.1.5.6.4A8 8 0 0 0 16 8c0-4.4-3.6-8-8-8Z" }) }) : /* @__PURE__ */ i("svg", { width: "18", height: "20", viewBox: "0 0 14 16", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ i("path", { d: "M14 2.7C14 1.2 12.8 0 11.3 0H2.7C1.2 0 0 1.2 0 2.7v10.6C0 14.8 1.2 16 2.7 16h4V9.8H4.7v-2H6.7V6.4c0-2 1.2-3.1 3-3.1.9 0 1.7.1 2 .2V5h-1.4c-.8 0-1 .4-1 1v1.5h2.4l-.3 2H9.3V16h2c1.5 0 2.7-1.2 2.7-2.7V2.7Z" }) });
853
+ /* @__PURE__ */ n("svg", { width: "26", height: "26", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ n("path", { d: "M17.05 20.28c-.98.95-2.05.8-3.08.35-1.09-.46-2.09-.48-3.24 0-1.44.62-2.2.44-3.06-.35C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09zM12 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z" }) })
854
+ ) : e === "github" ? /* @__PURE__ */ n("svg", { width: "20", height: "20", viewBox: "0 0 16 16", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ n("path", { d: "M8 0C3.6 0 0 3.6 0 8a8 8 0 0 0 5.5 7.6c.4.1.5-.2.5-.4v-1.5c-2.2.5-2.7-1-2.7-1-.4-.9-.9-1.2-.9-1.2-.7-.5.1-.5.1-.5.8.1 1.2.8 1.2.8.7 1.2 1.9.9 2.4.7 0-.5.3-.9.5-1.1-1.8-.2-3.6-.9-3.6-4 0-.9.3-1.6.8-2.1-.1-.2-.4-1 .1-2.1 0 0 .7-.2 2.2.8a7.6 7.6 0 0 1 4 0c1.5-1 2.2-.8 2.2-.8.4 1.1.2 1.9.1 2.1.5.5.8 1.2.8 2.1 0 3.1-1.9 3.7-3.6 3.9.3.3.6.8.6 1.6V15c0 .2.1.5.6.4A8 8 0 0 0 16 8c0-4.4-3.6-8-8-8Z" }) }) : /* @__PURE__ */ n("svg", { width: "18", height: "20", viewBox: "0 0 14 16", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ n("path", { d: "M14 2.7C14 1.2 12.8 0 11.3 0H2.7C1.2 0 0 1.2 0 2.7v10.6C0 14.8 1.2 16 2.7 16h4V9.8H4.7v-2H6.7V6.4c0-2 1.2-3.1 3-3.1.9 0 1.7.1 2 .2V5h-1.4c-.8 0-1 .4-1 1v1.5h2.4l-.3 2H9.3V16h2c1.5 0 2.7-1.2 2.7-2.7V2.7Z" }) });
821
855
  }
822
- function ge({
856
+ function fe({
823
857
  block: e,
824
858
  bootstrap: t,
825
859
  auth: r,
826
860
  authSession: a,
827
- onBack: n,
861
+ onBack: i,
828
862
  showBack: o = !0,
829
863
  intent: s = "preauth"
830
864
  }) {
831
- const { t: l } = v(), p = {
865
+ const { t: l } = v(), u = {
832
866
  bootstrap: t,
833
867
  selectedPriceId: null,
834
868
  setSelectedPriceId: () => {
@@ -837,7 +871,7 @@ function ge({
837
871
  },
838
872
  auth: r,
839
873
  authSession: a
840
- }, d = s === "restore" ? {
874
+ }, h = s === "restore" ? {
841
875
  ...e,
842
876
  heading: l("auth.restore_purchases_heading", "Restore Purchases"),
843
877
  subheading: l(
@@ -858,12 +892,12 @@ function ge({
858
892
  submit_label: l("auth.log_in", "Sign In")
859
893
  } : e;
860
894
  return /* @__PURE__ */ c("div", { class: "relative flex-1 min-h-0 overflow-y-auto p-6 sm:p-8", children: [
861
- o ? /* @__PURE__ */ i(fe, { onClick: n, ariaLabel: l("nav.back_aria", "Back") }) : null,
862
- /* @__PURE__ */ i(Pt, { block: d, ctx: p })
895
+ o ? /* @__PURE__ */ n(we, { onClick: i, ariaLabel: l("nav.back_aria", "Back") }) : null,
896
+ /* @__PURE__ */ n(Et, { block: h, ctx: u })
863
897
  ] });
864
898
  }
865
- function fe({ onClick: e, ariaLabel: t }) {
866
- return /* @__PURE__ */ i(
899
+ function we({ onClick: e, ariaLabel: t }) {
900
+ return /* @__PURE__ */ n(
867
901
  "button",
868
902
  {
869
903
  type: "button",
@@ -871,7 +905,7 @@ function fe({ onClick: e, ariaLabel: t }) {
871
905
  "aria-label": t,
872
906
  class: "absolute right-4 top-4 z-10 flex h-8 w-8 items-center justify-center rounded-full text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--pw-accent)]",
873
907
  children: /* @__PURE__ */ c("svg", { width: "18", height: "18", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [
874
- /* @__PURE__ */ i(
908
+ /* @__PURE__ */ n(
875
909
  "path",
876
910
  {
877
911
  d: "M5 8h8a4 4 0 0 1 0 8H9",
@@ -881,7 +915,7 @@ function fe({ onClick: e, ariaLabel: t }) {
881
915
  "stroke-linejoin": "round"
882
916
  }
883
917
  ),
884
- /* @__PURE__ */ i(
918
+ /* @__PURE__ */ n(
885
919
  "path",
886
920
  {
887
921
  d: "M8 4 4 8l4 4",
@@ -895,26 +929,26 @@ function fe({ onClick: e, ariaLabel: t }) {
895
929
  }
896
930
  );
897
931
  }
898
- function we({
932
+ function me({
899
933
  auth: e,
900
934
  onSuccess: t,
901
935
  onBack: r,
902
936
  heading: a,
903
- description: n
937
+ description: i
904
938
  }) {
905
- const { t: o } = v(), s = a ?? o("anon.heading_default", "Continue as guest"), l = n ?? o("anon.description_default", "Setting up your guest session…"), [p, d] = b({ kind: "signing-in" }), g = O(!0);
939
+ const { t: o } = v(), s = a ?? o("anon.heading_default", "Continue as guest"), l = i ?? o("anon.description_default", "Setting up your guest session…"), [u, h] = b({ kind: "signing-in" }), d = F(!0);
906
940
  T(() => () => {
907
- g.current = !1;
941
+ d.current = !1;
908
942
  }, []);
909
- const h = () => {
910
- d({ kind: "signing-in" }), (async () => {
943
+ const p = () => {
944
+ h({ kind: "signing-in" }), (async () => {
911
945
  try {
912
946
  const x = await e.signInAnonymously();
913
- if (!g.current) return;
947
+ if (!d.current) return;
914
948
  t(x);
915
949
  } catch (x) {
916
- if (!g.current) return;
917
- d({
950
+ if (!d.current) return;
951
+ h({
918
952
  kind: "error",
919
953
  message: x instanceof Error ? x.message : "Anonymous sign-in failed"
920
954
  });
@@ -922,9 +956,9 @@ function we({
922
956
  })();
923
957
  };
924
958
  return T(() => {
925
- h();
959
+ p();
926
960
  }, []), /* @__PURE__ */ c("div", { class: "flex flex-col gap-3", children: [
927
- r ? /* @__PURE__ */ i(
961
+ r ? /* @__PURE__ */ n(
928
962
  "button",
929
963
  {
930
964
  type: "button",
@@ -934,17 +968,17 @@ function we({
934
968
  }
935
969
  ) : null,
936
970
  /* @__PURE__ */ c("div", { class: "flex flex-col gap-1", children: [
937
- /* @__PURE__ */ i("h2", { class: "text-xl font-semibold text-gray-900", children: s }),
938
- /* @__PURE__ */ i("p", { class: "text-sm text-gray-500", children: l })
971
+ /* @__PURE__ */ n("h2", { class: "text-xl font-semibold text-gray-900", children: s }),
972
+ /* @__PURE__ */ n("p", { class: "text-sm text-gray-500", children: l })
939
973
  ] }),
940
- p.kind === "signing-in" ? /* @__PURE__ */ i("div", { class: "flex items-center justify-center py-6", children: /* @__PURE__ */ i(me, {}) }) : null,
941
- p.kind === "error" ? /* @__PURE__ */ c("div", { class: "flex flex-col gap-3", children: [
942
- /* @__PURE__ */ i("div", { class: "rounded-lg bg-red-50 px-3 py-2 text-sm text-red-700", children: p.message }),
943
- /* @__PURE__ */ i(
974
+ u.kind === "signing-in" ? /* @__PURE__ */ n("div", { class: "flex items-center justify-center py-6", children: /* @__PURE__ */ n(be, {}) }) : null,
975
+ u.kind === "error" ? /* @__PURE__ */ c("div", { class: "flex flex-col gap-3", children: [
976
+ /* @__PURE__ */ n("div", { class: "rounded-lg bg-red-50 px-3 py-2 text-sm text-red-700", children: u.message }),
977
+ /* @__PURE__ */ n(
944
978
  "button",
945
979
  {
946
980
  type: "button",
947
- onClick: h,
981
+ onClick: p,
948
982
  class: "self-start rounded-md bg-[var(--pw-accent)] px-3 py-1.5 text-sm font-medium text-white hover:opacity-90 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--pw-accent)] focus-visible:ring-offset-2",
949
983
  children: o("anon.try_again", "Try again")
950
984
  }
@@ -952,14 +986,14 @@ function we({
952
986
  ] }) : null
953
987
  ] });
954
988
  }
955
- function me() {
989
+ function be() {
956
990
  return /* @__PURE__ */ c("svg", { class: "h-5 w-5 animate-spin text-[var(--pw-accent)]", viewBox: "0 0 24 24", fill: "none", children: [
957
- /* @__PURE__ */ i("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", "stroke-width": "3", "stroke-opacity": "0.2" }),
958
- /* @__PURE__ */ i("path", { d: "M22 12a10 10 0 0 0-10-10", stroke: "currentColor", "stroke-width": "3", "stroke-linecap": "round" })
991
+ /* @__PURE__ */ n("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", "stroke-width": "3", "stroke-opacity": "0.2" }),
992
+ /* @__PURE__ */ n("path", { d: "M22 12a10 10 0 0 0-10-10", stroke: "currentColor", "stroke-width": "3", "stroke-linecap": "round" })
959
993
  ] });
960
994
  }
961
- const Tt = (e) => `pw-offer-${e}-start`;
962
- function tt(e) {
995
+ const jt = (e) => `pw-offer-${e}-start`;
996
+ function et(e) {
963
997
  const t = e - Date.now();
964
998
  return t <= 0 ? { days: 0, hours: 0, minutes: 0, seconds: 0, expired: !0 } : {
965
999
  days: Math.floor(t / (1e3 * 60 * 60 * 24)),
@@ -969,7 +1003,7 @@ function tt(e) {
969
1003
  expired: !1
970
1004
  };
971
1005
  }
972
- function be(e) {
1006
+ function xe(e) {
973
1007
  if (e.expires_at) {
974
1008
  const t = Date.parse(e.expires_at);
975
1009
  return Number.isFinite(t) ? t : null;
@@ -977,7 +1011,7 @@ function be(e) {
977
1011
  if (e.duration_minutes && e.duration_minutes > 0) {
978
1012
  if (typeof window > "u") return null;
979
1013
  try {
980
- const t = Tt(e.id);
1014
+ const t = jt(e.id);
981
1015
  let r = window.localStorage.getItem(t);
982
1016
  return r || (r = (/* @__PURE__ */ new Date()).toISOString(), window.localStorage.setItem(t, r)), Date.parse(r) + e.duration_minutes * 6e4;
983
1017
  } catch {
@@ -986,7 +1020,7 @@ function be(e) {
986
1020
  }
987
1021
  return null;
988
1022
  }
989
- function Et(e, t) {
1023
+ function zt(e, t) {
990
1024
  if (!e || e.length === 0) return null;
991
1025
  if (t) {
992
1026
  const r = e.find((a) => a.id === t);
@@ -994,30 +1028,30 @@ function Et(e, t) {
994
1028
  }
995
1029
  return e.find((r) => r.expires_at || r.duration_minutes) ?? null;
996
1030
  }
997
- function jt(e) {
998
- const t = e ? be(e) : null, [r, a] = b(
999
- () => t !== null ? tt(t) : null
1000
- ), n = O(t);
1001
- return n.current = t, T(() => {
1031
+ function Bt(e) {
1032
+ const t = e ? xe(e) : null, [r, a] = b(
1033
+ () => t !== null ? et(t) : null
1034
+ ), i = F(t);
1035
+ return i.current = t, T(() => {
1002
1036
  if (t === null) {
1003
1037
  a(null);
1004
1038
  return;
1005
1039
  }
1006
- a(tt(t));
1040
+ a(et(t));
1007
1041
  const o = setInterval(() => {
1008
- const s = tt(n.current ?? 0);
1042
+ const s = et(i.current ?? 0);
1009
1043
  if (a(s), s.expired && (clearInterval(o), e?.duration_minutes && typeof window < "u"))
1010
1044
  try {
1011
- window.localStorage.removeItem(Tt(e.id));
1045
+ window.localStorage.removeItem(jt(e.id));
1012
1046
  } catch {
1013
1047
  }
1014
1048
  }, 1e3);
1015
1049
  return () => clearInterval(o);
1016
1050
  }, [t, e?.duration_minutes, e?.id]), r;
1017
1051
  }
1018
- function xe({ block: e, ctx: t }) {
1019
- const { t: r } = v(), a = Et(t.bootstrap.offers, e.offer_id), n = jt(a);
1020
- if (!a || n === null || n.expired && !e.force) return null;
1052
+ function ve({ block: e, ctx: t }) {
1053
+ const { t: r } = v(), a = zt(t.bootstrap.offers, e.offer_id), i = Bt(a);
1054
+ if (!a || i === null || i.expired && !e.force) return null;
1021
1055
  const o = e.title ?? a.label ?? r("offer.limited_time", "Limited-time offer"), s = a.discount_percent ? `${o} ${a.discount_percent}%` : o;
1022
1056
  return /* @__PURE__ */ c(
1023
1057
  "div",
@@ -1029,34 +1063,34 @@ function xe({ block: e, ctx: t }) {
1029
1063
  },
1030
1064
  role: "status",
1031
1065
  children: [
1032
- /* @__PURE__ */ i(Bt, {}),
1033
- /* @__PURE__ */ i("span", { children: s }),
1034
- /* @__PURE__ */ i(zt, { value: n, t: r })
1066
+ /* @__PURE__ */ n(Ft, {}),
1067
+ /* @__PURE__ */ n("span", { children: s }),
1068
+ /* @__PURE__ */ n(Ot, { value: i, t: r })
1035
1069
  ]
1036
1070
  }
1037
1071
  );
1038
1072
  }
1039
- function zt({ value: e, t }) {
1073
+ function Ot({ value: e, t }) {
1040
1074
  return /* @__PURE__ */ c("div", { class: "flex items-center gap-1 font-mono text-sm", children: [
1041
- e.days > 0 ? /* @__PURE__ */ c(q, { children: [
1042
- /* @__PURE__ */ i($, { children: String(e.days) }),
1043
- /* @__PURE__ */ i("span", { class: "text-xs", children: t("countdown.d", "d") })
1075
+ e.days > 0 ? /* @__PURE__ */ c(Z, { children: [
1076
+ /* @__PURE__ */ n($, { children: String(e.days) }),
1077
+ /* @__PURE__ */ n("span", { class: "text-xs", children: t("countdown.d", "d") })
1044
1078
  ] }) : null,
1045
- /* @__PURE__ */ i($, { children: String(e.hours).padStart(2, "0") }),
1046
- /* @__PURE__ */ i("span", { class: "text-xs", children: t("countdown.h", "h") }),
1047
- /* @__PURE__ */ i($, { children: String(e.minutes).padStart(2, "0") }),
1048
- /* @__PURE__ */ i("span", { class: "text-xs", children: t("countdown.m", "m") }),
1049
- /* @__PURE__ */ i($, { children: String(e.seconds).padStart(2, "0") }),
1050
- /* @__PURE__ */ i("span", { class: "text-xs", children: t("countdown.s", "s") })
1079
+ /* @__PURE__ */ n($, { children: String(e.hours).padStart(2, "0") }),
1080
+ /* @__PURE__ */ n("span", { class: "text-xs", children: t("countdown.h", "h") }),
1081
+ /* @__PURE__ */ n($, { children: String(e.minutes).padStart(2, "0") }),
1082
+ /* @__PURE__ */ n("span", { class: "text-xs", children: t("countdown.m", "m") }),
1083
+ /* @__PURE__ */ n($, { children: String(e.seconds).padStart(2, "0") }),
1084
+ /* @__PURE__ */ n("span", { class: "text-xs", children: t("countdown.s", "s") })
1051
1085
  ] });
1052
1086
  }
1053
1087
  function $({ children: e }) {
1054
- return /* @__PURE__ */ i("span", { class: "rounded bg-black/20 px-1.5 py-0.5 text-xs font-bold", children: e });
1088
+ return /* @__PURE__ */ n("span", { class: "rounded bg-black/20 px-1.5 py-0.5 text-xs font-bold", children: e });
1055
1089
  }
1056
- function ve({ offer: e }) {
1057
- const { t } = v(), r = jt(e);
1090
+ function ye({ offer: e }) {
1091
+ const { t } = v(), r = Bt(e);
1058
1092
  if (r === null || r.expired) return null;
1059
- const a = e.label ?? t("offer.limited_time", "Limited-time offer"), n = e.discount_percent ? `${a} ${e.discount_percent}%` : a;
1093
+ const a = e.label ?? t("offer.limited_time", "Limited-time offer"), i = e.discount_percent ? `${a} ${e.discount_percent}%` : a;
1060
1094
  return /* @__PURE__ */ c(
1061
1095
  "div",
1062
1096
  {
@@ -1067,15 +1101,15 @@ function ve({ offer: e }) {
1067
1101
  },
1068
1102
  role: "status",
1069
1103
  children: [
1070
- /* @__PURE__ */ i(Bt, {}),
1071
- /* @__PURE__ */ i("span", { children: n }),
1072
- /* @__PURE__ */ i(zt, { value: r, t })
1104
+ /* @__PURE__ */ n(Ft, {}),
1105
+ /* @__PURE__ */ n("span", { children: i }),
1106
+ /* @__PURE__ */ n(Ot, { value: r, t })
1073
1107
  ]
1074
1108
  }
1075
1109
  );
1076
1110
  }
1077
- function Bt() {
1078
- return /* @__PURE__ */ i(
1111
+ function Ft() {
1112
+ return /* @__PURE__ */ n(
1079
1113
  "svg",
1080
1114
  {
1081
1115
  width: "16",
@@ -1083,7 +1117,7 @@ function Bt() {
1083
1117
  viewBox: "0 0 12 12",
1084
1118
  fill: "none",
1085
1119
  "aria-hidden": "true",
1086
- children: /* @__PURE__ */ i(
1120
+ children: /* @__PURE__ */ n(
1087
1121
  "path",
1088
1122
  {
1089
1123
  fill: "currentColor",
@@ -1093,44 +1127,44 @@ function Bt() {
1093
1127
  }
1094
1128
  );
1095
1129
  }
1096
- const et = 3, rt = 200, it = 5e3, nt = 5, ye = 10 * 1024 * 1024, bt = ["image/jpeg", "image/png", "image/webp"], xt = /.+@.+\..+/;
1097
- function ke({ client: e, authSession: t, origin: r, onBack: a }) {
1098
- const { t: n } = v(), o = t?.user.email ?? "", s = o || null, [l, p] = b(o), [d, g] = b(""), [h, x] = b(""), [u, m] = b([]), [y, B] = b(!1), [P, k] = b(null), [A, C] = b({}), j = St(() => {
1099
- const M = (s ?? l).trim().toLowerCase(), I = d.trim(), w = h.trim();
1100
- return xt.test(M) && I.length >= et && I.length <= rt && w.length >= 1 && w.length <= it;
1101
- }, [s, l, d, h]), z = () => {
1102
- const M = {}, I = (s ?? l).trim(), w = d.trim(), f = h.trim();
1103
- return I ? xt.test(I.toLowerCase()) || (M.email = n("support.invalid_email", "Invalid email")) : M.email = n("support.required", "Required"), (w.length < et || w.length > rt) && (M.subject = n("support.subject_length", "{min}–{max} characters", {
1104
- min: et,
1105
- max: rt
1106
- })), (f.length < 1 || f.length > it) && (M.message = n("support.message_length", "{min}–{max} characters", {
1107
- min: 1,
1130
+ const rt = 3, it = 200, nt = 5e3, at = 5, ke = 10 * 1024 * 1024, xt = ["image/jpeg", "image/png", "image/webp"], vt = /.+@.+\..+/;
1131
+ function _e({ client: e, authSession: t, origin: r, onBack: a }) {
1132
+ const { t: i } = v(), o = t?.user.email ?? "", s = o || null, [l, u] = b(o), [h, d] = b(""), [p, x] = b(""), [_, g] = b([]), [f, M] = b(!1), [E, y] = b(null), [L, I] = b({}), z = Ct(() => {
1133
+ const A = (s ?? l).trim().toLowerCase(), C = h.trim(), B = p.trim();
1134
+ return vt.test(A) && C.length >= rt && C.length <= it && B.length >= 1 && B.length <= nt;
1135
+ }, [s, l, h, p]), j = () => {
1136
+ const A = {}, C = (s ?? l).trim(), B = h.trim(), w = p.trim();
1137
+ return C ? vt.test(C.toLowerCase()) || (A.email = i("support.invalid_email", "Invalid email")) : A.email = i("support.required", "Required"), (B.length < rt || B.length > it) && (A.subject = i("support.subject_length", "{min}–{max} characters", {
1138
+ min: rt,
1108
1139
  max: it
1109
- })), C(M), Object.keys(M).length === 0;
1110
- }, E = async (M) => {
1111
- if (M.preventDefault(), !y && z()) {
1112
- B(!0), C((I) => ({ ...I, submit: void 0 }));
1140
+ })), (w.length < 1 || w.length > nt) && (A.message = i("support.message_length", "{min}–{max} characters", {
1141
+ min: 1,
1142
+ max: nt
1143
+ })), I(A), Object.keys(A).length === 0;
1144
+ }, O = async (A) => {
1145
+ if (A.preventDefault(), !f && j()) {
1146
+ M(!0), I((C) => ({ ...C, submit: void 0 }));
1113
1147
  try {
1114
- const I = (s ?? l).trim();
1148
+ const C = (s ?? l).trim();
1115
1149
  await e.createSupportTicket({
1116
- subject: d.trim(),
1117
- content: h.trim(),
1118
- email: I || void 0,
1119
- files: u.length > 0 ? u : void 0
1120
- }), k(I);
1121
- } catch (I) {
1122
- const w = I instanceof R && I.message || "Failed to send. Please try again.";
1123
- C((f) => ({ ...f, submit: w }));
1150
+ subject: h.trim(),
1151
+ content: p.trim(),
1152
+ email: C || void 0,
1153
+ files: _.length > 0 ? _ : void 0
1154
+ }), y(C);
1155
+ } catch (C) {
1156
+ const B = C instanceof U && C.message || "Failed to send. Please try again.";
1157
+ I((w) => ({ ...w, submit: B }));
1124
1158
  } finally {
1125
- B(!1);
1159
+ M(!1);
1126
1160
  }
1127
1161
  }
1128
1162
  }, D = () => {
1129
- g(""), x(""), m([]), C({}), k(null);
1130
- }, F = "flex flex-col gap-3 bg-white px-6 pb-6 pt-3 sm:px-8", U = { boxShadow: "0 -4px 12px -4px rgba(15,23,42,0.06)" };
1131
- return P ? /* @__PURE__ */ c("div", { class: "relative flex-1 min-h-0 flex flex-col", children: [
1163
+ d(""), x(""), g([]), I({}), y(null);
1164
+ }, R = "flex flex-col gap-3 bg-white px-6 pb-6 pt-3 sm:px-8", N = { boxShadow: "0 -4px 12px -4px rgba(15,23,42,0.06)" };
1165
+ return E ? /* @__PURE__ */ c("div", { class: "relative flex-1 min-h-0 flex flex-col", children: [
1132
1166
  /* @__PURE__ */ c("div", { class: "flex-1 min-h-0 overflow-y-auto flex flex-col items-center gap-4 px-6 pb-3 pt-6 sm:px-8 sm:pb-4 sm:pt-8 text-center", children: [
1133
- /* @__PURE__ */ i(
1167
+ /* @__PURE__ */ n(
1134
1168
  "div",
1135
1169
  {
1136
1170
  class: "flex h-14 w-14 items-center justify-center rounded-full",
@@ -1140,7 +1174,7 @@ function ke({ client: e, authSession: t, origin: r, onBack: a }) {
1140
1174
  boxShadow: "0 0 0 8px color-mix(in srgb, var(--pw-accent) 12%, transparent), 0 8px 20px -6px color-mix(in srgb, var(--pw-accent) 45%, transparent)"
1141
1175
  },
1142
1176
  "aria-hidden": "true",
1143
- children: /* @__PURE__ */ i("svg", { viewBox: "0 0 24 24", class: "h-7 w-7", children: /* @__PURE__ */ i(
1177
+ children: /* @__PURE__ */ n("svg", { viewBox: "0 0 24 24", class: "h-7 w-7", children: /* @__PURE__ */ n(
1144
1178
  "path",
1145
1179
  {
1146
1180
  fill: "currentColor",
@@ -1149,28 +1183,28 @@ function ke({ client: e, authSession: t, origin: r, onBack: a }) {
1149
1183
  ) })
1150
1184
  }
1151
1185
  ),
1152
- /* @__PURE__ */ i("div", { class: "text-lg font-semibold tracking-tight text-gray-900", children: n("support.success_heading", "Request submitted") }),
1186
+ /* @__PURE__ */ n("div", { class: "text-lg font-semibold tracking-tight text-gray-900", children: i("support.success_heading", "Request submitted") }),
1153
1187
  /* @__PURE__ */ c("div", { class: "max-w-[320px] text-sm leading-relaxed text-gray-500", children: [
1154
- n(
1188
+ i(
1155
1189
  "support.success_message_prefix",
1156
1190
  "We've received your message and will respond to"
1157
1191
  ),
1158
1192
  " ",
1159
- /* @__PURE__ */ i("b", { class: "text-gray-700", children: P }),
1193
+ /* @__PURE__ */ n("b", { class: "text-gray-700", children: E }),
1160
1194
  "."
1161
1195
  ] })
1162
1196
  ] }),
1163
- /* @__PURE__ */ i("div", { class: F, style: U, children: /* @__PURE__ */ c("div", { class: "flex items-center justify-center gap-3", children: [
1164
- /* @__PURE__ */ i(
1197
+ /* @__PURE__ */ n("div", { class: R, style: N, children: /* @__PURE__ */ c("div", { class: "flex items-center justify-center gap-3", children: [
1198
+ /* @__PURE__ */ n(
1165
1199
  "button",
1166
1200
  {
1167
1201
  type: "button",
1168
1202
  onClick: a,
1169
1203
  class: "rounded-xl px-3 py-2 text-sm font-medium text-gray-600 transition-colors hover:bg-gray-100 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--pw-accent)]",
1170
- children: r === "standalone" ? n("support.done_button", "Done") : n("nav.back_aria", "Back")
1204
+ children: r === "standalone" ? i("support.done_button", "Done") : i("nav.back_aria", "Back")
1171
1205
  }
1172
1206
  ),
1173
- /* @__PURE__ */ i(
1207
+ /* @__PURE__ */ n(
1174
1208
  "button",
1175
1209
  {
1176
1210
  type: "button",
@@ -1180,90 +1214,90 @@ function ke({ client: e, authSession: t, origin: r, onBack: a }) {
1180
1214
  background: "linear-gradient(180deg, color-mix(in srgb, var(--pw-accent) 92%, white), var(--pw-accent))",
1181
1215
  boxShadow: "0 1px 2px rgba(15,23,42,0.08), 0 6px 14px -4px color-mix(in srgb, var(--pw-accent) 50%, transparent)"
1182
1216
  },
1183
- children: n("support.send_another", "Send another request")
1217
+ children: i("support.send_another", "Send another request")
1184
1218
  }
1185
1219
  )
1186
1220
  ] }) })
1187
- ] }) : /* @__PURE__ */ c("form", { onSubmit: E, class: "relative flex-1 min-h-0 flex flex-col", children: [
1188
- /* @__PURE__ */ i(_e, { onClick: a, ariaLabel: n("nav.back_aria", "Back") }),
1189
- /* @__PURE__ */ i("div", { class: "flex-1 min-h-0 overflow-y-auto px-6 pb-3 pt-6 sm:px-8 sm:pb-4 sm:pt-8", children: /* @__PURE__ */ c("div", { class: "flex flex-col gap-5", children: [
1221
+ ] }) : /* @__PURE__ */ c("form", { onSubmit: O, class: "relative flex-1 min-h-0 flex flex-col", children: [
1222
+ /* @__PURE__ */ n(Se, { onClick: a, ariaLabel: i("nav.back_aria", "Back") }),
1223
+ /* @__PURE__ */ n("div", { class: "flex-1 min-h-0 overflow-y-auto px-6 pb-3 pt-6 sm:px-8 sm:pb-4 sm:pt-8", children: /* @__PURE__ */ c("div", { class: "flex flex-col gap-5", children: [
1190
1224
  /* @__PURE__ */ c("div", { class: "flex flex-col gap-2 pr-10", children: [
1191
- /* @__PURE__ */ i("h2", { class: "text-3xl font-bold tracking-tight text-gray-900", children: n("support.heading", "Support") }),
1192
- /* @__PURE__ */ i("p", { class: "text-base leading-relaxed text-gray-600", children: n("support.instruction", "Please fill out the form below to submit your support request.") })
1225
+ /* @__PURE__ */ n("h2", { class: "text-3xl font-bold tracking-tight text-gray-900", children: i("support.heading", "Support") }),
1226
+ /* @__PURE__ */ n("p", { class: "text-base leading-relaxed text-gray-600", children: i("support.instruction", "Please fill out the form below to submit your support request.") })
1193
1227
  ] }),
1194
1228
  /* @__PURE__ */ c("div", { class: "flex flex-col gap-3", children: [
1195
1229
  s ? /* @__PURE__ */ c("div", { class: "rounded-2xl bg-gray-100 px-5 py-3 text-sm text-gray-600", children: [
1196
- n("support.sending_as", "Sending as"),
1230
+ i("support.sending_as", "Sending as"),
1197
1231
  " ",
1198
- /* @__PURE__ */ i("b", { class: "font-medium text-gray-900", children: s })
1199
- ] }) : /* @__PURE__ */ i(
1200
- vt,
1232
+ /* @__PURE__ */ n("b", { class: "font-medium text-gray-900", children: s })
1233
+ ] }) : /* @__PURE__ */ n(
1234
+ yt,
1201
1235
  {
1202
1236
  type: "email",
1203
- placeholder: n("support.email_placeholder", "Enter your email *"),
1237
+ placeholder: i("support.email_placeholder", "Enter your email *"),
1204
1238
  value: l,
1205
- onInput: p,
1206
- error: A.email,
1239
+ onInput: u,
1240
+ error: L.email,
1207
1241
  autocomplete: "email",
1208
1242
  required: !0
1209
1243
  }
1210
1244
  ),
1211
- /* @__PURE__ */ i(
1212
- vt,
1245
+ /* @__PURE__ */ n(
1246
+ yt,
1213
1247
  {
1214
1248
  type: "text",
1215
- placeholder: n("support.subject_placeholder", "Enter your subject *"),
1216
- value: d,
1217
- onInput: g,
1218
- error: A.subject,
1249
+ placeholder: i("support.subject_placeholder", "Enter your subject *"),
1250
+ value: h,
1251
+ onInput: d,
1252
+ error: L.subject,
1219
1253
  required: !0
1220
1254
  }
1221
1255
  ),
1222
- /* @__PURE__ */ i(
1223
- Se,
1256
+ /* @__PURE__ */ n(
1257
+ Ce,
1224
1258
  {
1225
- placeholder: n("support.message_placeholder", "Enter your message *"),
1226
- value: h,
1259
+ placeholder: i("support.message_placeholder", "Enter your message *"),
1260
+ value: p,
1227
1261
  onInput: x,
1228
- error: A.message,
1262
+ error: L.message,
1229
1263
  required: !0
1230
1264
  }
1231
1265
  ),
1232
- /* @__PURE__ */ i(Ce, { files: u, onChange: m, disabled: y })
1266
+ /* @__PURE__ */ n(Ie, { files: _, onChange: g, disabled: f })
1233
1267
  ] })
1234
1268
  ] }) }),
1235
- /* @__PURE__ */ c("div", { class: F, style: U, children: [
1236
- A.submit && /* @__PURE__ */ i("p", { class: "text-sm text-red-600", children: A.submit }),
1269
+ /* @__PURE__ */ c("div", { class: R, style: N, children: [
1270
+ L.submit && /* @__PURE__ */ n("p", { class: "text-sm text-red-600", children: L.submit }),
1237
1271
  /* @__PURE__ */ c("div", { class: "flex items-center justify-end gap-3", children: [
1238
- /* @__PURE__ */ i(
1272
+ /* @__PURE__ */ n(
1239
1273
  "button",
1240
1274
  {
1241
1275
  type: "button",
1242
1276
  onClick: a,
1243
- disabled: y,
1277
+ disabled: f,
1244
1278
  class: "rounded-full px-4 py-2 text-base font-medium text-gray-700 transition-colors hover:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-60 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--pw-accent)]",
1245
- children: r === "standalone" ? n("support.close_button", "Close") : n("nav.back_aria", "Back")
1279
+ children: r === "standalone" ? i("support.close_button", "Close") : i("nav.back_aria", "Back")
1246
1280
  }
1247
1281
  ),
1248
- /* @__PURE__ */ i(
1282
+ /* @__PURE__ */ n(
1249
1283
  "button",
1250
1284
  {
1251
1285
  type: "submit",
1252
- disabled: !j || y,
1286
+ disabled: !z || f,
1253
1287
  class: "pw-cta-shimmer relative flex h-12 items-center justify-center overflow-hidden rounded-full px-8 text-base font-semibold text-white transition-transform duration-150 active:scale-[0.98] disabled:cursor-not-allowed disabled:opacity-60 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--pw-accent)]",
1254
1288
  style: {
1255
1289
  background: "linear-gradient(135deg, color-mix(in srgb, var(--pw-accent) 55%, white) 0%, var(--pw-accent) 55%, color-mix(in srgb, var(--pw-accent) 90%, black) 100%)",
1256
1290
  boxShadow: "0 0 20px 0 color-mix(in srgb, var(--pw-accent) 25%, transparent), inset 0 0 8px 0 color-mix(in srgb, white 25%, transparent)"
1257
1291
  },
1258
- children: y ? /* @__PURE__ */ i("span", { class: "relative z-10 inline-block h-4 w-4 animate-spin rounded-full border-2 border-white/40 border-t-white" }) : /* @__PURE__ */ i("span", { class: "relative z-10", children: n("support.send_button", "Send") })
1292
+ children: f ? /* @__PURE__ */ n("span", { class: "relative z-10 inline-block h-4 w-4 animate-spin rounded-full border-2 border-white/40 border-t-white" }) : /* @__PURE__ */ n("span", { class: "relative z-10", children: i("support.send_button", "Send") })
1259
1293
  }
1260
1294
  )
1261
1295
  ] })
1262
1296
  ] })
1263
1297
  ] });
1264
1298
  }
1265
- function _e({ onClick: e, ariaLabel: t }) {
1266
- return /* @__PURE__ */ i(
1299
+ function Se({ onClick: e, ariaLabel: t }) {
1300
+ return /* @__PURE__ */ n(
1267
1301
  "button",
1268
1302
  {
1269
1303
  type: "button",
@@ -1271,7 +1305,7 @@ function _e({ onClick: e, ariaLabel: t }) {
1271
1305
  "aria-label": t,
1272
1306
  class: "absolute right-4 top-4 z-10 flex h-8 w-8 items-center justify-center rounded-full text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--pw-accent)]",
1273
1307
  children: /* @__PURE__ */ c("svg", { width: "18", height: "18", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [
1274
- /* @__PURE__ */ i(
1308
+ /* @__PURE__ */ n(
1275
1309
  "path",
1276
1310
  {
1277
1311
  d: "M5 8h8a4 4 0 0 1 0 8H9",
@@ -1281,7 +1315,7 @@ function _e({ onClick: e, ariaLabel: t }) {
1281
1315
  "stroke-linejoin": "round"
1282
1316
  }
1283
1317
  ),
1284
- /* @__PURE__ */ i(
1318
+ /* @__PURE__ */ n(
1285
1319
  "path",
1286
1320
  {
1287
1321
  d: "M8 4 4 8l4 4",
@@ -1295,17 +1329,17 @@ function _e({ onClick: e, ariaLabel: t }) {
1295
1329
  }
1296
1330
  );
1297
1331
  }
1298
- function vt({
1332
+ function yt({
1299
1333
  type: e,
1300
1334
  placeholder: t,
1301
1335
  value: r,
1302
1336
  onInput: a,
1303
- error: n,
1337
+ error: i,
1304
1338
  autocomplete: o,
1305
1339
  required: s
1306
1340
  }) {
1307
1341
  return /* @__PURE__ */ c("div", { children: [
1308
- /* @__PURE__ */ i(
1342
+ /* @__PURE__ */ n(
1309
1343
  "input",
1310
1344
  {
1311
1345
  type: e,
@@ -1314,145 +1348,145 @@ function vt({
1314
1348
  onInput: (l) => a(l.target.value),
1315
1349
  autocomplete: o,
1316
1350
  required: s,
1317
- class: `h-14 w-full rounded-2xl bg-gray-100 px-5 text-base text-gray-900 outline-none transition-all placeholder:text-gray-500 hover:bg-gray-200/60 focus:bg-gray-200/60 ${n ? "shadow-[0_0_0_2px_rgba(239,68,68,0.5)]" : "focus:shadow-[0_0_0_2px_color-mix(in_srgb,var(--pw-accent)_30%,transparent)]"}`
1351
+ class: `h-14 w-full rounded-2xl bg-gray-100 px-5 text-base text-gray-900 outline-none transition-all placeholder:text-gray-500 hover:bg-gray-200/60 focus:bg-gray-200/60 ${i ? "shadow-[0_0_0_2px_rgba(239,68,68,0.5)]" : "focus:shadow-[0_0_0_2px_color-mix(in_srgb,var(--pw-accent)_30%,transparent)]"}`
1318
1352
  }
1319
1353
  ),
1320
- n && /* @__PURE__ */ i("span", { class: "mt-1 ml-2 block text-sm text-red-600", children: n })
1354
+ i && /* @__PURE__ */ n("span", { class: "mt-1 ml-2 block text-sm text-red-600", children: i })
1321
1355
  ] });
1322
1356
  }
1323
- function Se({
1357
+ function Ce({
1324
1358
  placeholder: e,
1325
1359
  value: t,
1326
1360
  onInput: r,
1327
1361
  error: a,
1328
- required: n
1362
+ required: i
1329
1363
  }) {
1330
1364
  return /* @__PURE__ */ c("div", { children: [
1331
- /* @__PURE__ */ i(
1365
+ /* @__PURE__ */ n(
1332
1366
  "textarea",
1333
1367
  {
1334
1368
  value: t,
1335
1369
  placeholder: e,
1336
1370
  onInput: (o) => r(o.target.value),
1337
- required: n,
1371
+ required: i,
1338
1372
  rows: 5,
1339
1373
  class: `min-h-[120px] w-full rounded-2xl bg-gray-100 px-5 py-3.5 text-base leading-relaxed text-gray-900 outline-none transition-all placeholder:text-gray-500 hover:bg-gray-200/60 focus:bg-gray-200/60 ${a ? "shadow-[0_0_0_2px_rgba(239,68,68,0.5)]" : "focus:shadow-[0_0_0_2px_color-mix(in_srgb,var(--pw-accent)_30%,transparent)]"}`
1340
1374
  }
1341
1375
  ),
1342
- a && /* @__PURE__ */ i("span", { class: "mt-1 ml-2 block text-sm text-red-600", children: a })
1376
+ a && /* @__PURE__ */ n("span", { class: "mt-1 ml-2 block text-sm text-red-600", children: a })
1343
1377
  ] });
1344
1378
  }
1345
- function Ce({ files: e, onChange: t, disabled: r }) {
1346
- const { t: a } = v(), n = O(null), [o, s] = b(!1), [l, p] = b(null), d = (g) => {
1347
- if (!g || r) return;
1348
- p(null);
1349
- const h = Array.from(g);
1350
- if (e.length + h.length > nt) {
1351
- p(a("support.too_many_files", "Up to {max} files", { max: nt }));
1379
+ function Ie({ files: e, onChange: t, disabled: r }) {
1380
+ const { t: a } = v(), i = F(null), [o, s] = b(!1), [l, u] = b(null), h = (d) => {
1381
+ if (!d || r) return;
1382
+ u(null);
1383
+ const p = Array.from(d);
1384
+ if (e.length + p.length > at) {
1385
+ u(a("support.too_many_files", "Up to {max} files", { max: at }));
1352
1386
  return;
1353
1387
  }
1354
- const x = h.filter(
1355
- (u) => bt.includes(u.type) && u.size <= ye
1388
+ const x = p.filter(
1389
+ (_) => xt.includes(_.type) && _.size <= ke
1356
1390
  );
1357
- if (x.length !== h.length) {
1358
- p(a("support.invalid_file", "Only JPEG/PNG/WebP, ≤ 10MB each"));
1391
+ if (x.length !== p.length) {
1392
+ u(a("support.invalid_file", "Only JPEG/PNG/WebP, ≤ 10MB each"));
1359
1393
  return;
1360
1394
  }
1361
1395
  t([...e, ...x]);
1362
1396
  };
1363
1397
  return /* @__PURE__ */ c("div", { children: [
1364
- /* @__PURE__ */ i("span", { class: "text-xs font-medium text-gray-700", children: a("support.attachments_label", "Attachments (optional)") }),
1398
+ /* @__PURE__ */ n("span", { class: "text-xs font-medium text-gray-700", children: a("support.attachments_label", "Attachments (optional)") }),
1365
1399
  /* @__PURE__ */ c(
1366
1400
  "div",
1367
1401
  {
1368
1402
  role: "button",
1369
1403
  tabIndex: 0,
1370
1404
  "aria-label": a("support.attachments_aria", "Attachments upload"),
1371
- onClick: () => !r && n.current?.click(),
1372
- onDragOver: (g) => {
1373
- g.preventDefault(), r || s(!0);
1405
+ onClick: () => !r && i.current?.click(),
1406
+ onDragOver: (d) => {
1407
+ d.preventDefault(), r || s(!0);
1374
1408
  },
1375
1409
  onDragLeave: () => s(!1),
1376
- onDrop: (g) => {
1377
- g.preventDefault(), s(!1), d(g.dataTransfer?.files ?? null);
1410
+ onDrop: (d) => {
1411
+ d.preventDefault(), s(!1), h(d.dataTransfer?.files ?? null);
1378
1412
  },
1379
1413
  class: `mt-1.5 cursor-pointer rounded-2xl border border-dashed p-3.5 text-center transition-all ${o ? "border-[var(--pw-accent)] bg-[color-mix(in_srgb,var(--pw-accent)_6%,white)]" : "border-gray-300 hover:border-gray-400 hover:bg-gray-50/60"} ${r ? "cursor-not-allowed opacity-60" : ""}`,
1380
1414
  children: [
1381
- /* @__PURE__ */ i("div", { class: "text-xs text-gray-500", children: a("support.dropzone_text", "Drop images here or click to select") }),
1382
- /* @__PURE__ */ i("div", { class: "mt-0.5 text-[11px] text-gray-400", children: a("support.file_requirements", "JPEG/PNG/WebP, up to {max} files, ≤ 10MB each", {
1383
- max: nt
1415
+ /* @__PURE__ */ n("div", { class: "text-xs text-gray-500", children: a("support.dropzone_text", "Drop images here or click to select") }),
1416
+ /* @__PURE__ */ n("div", { class: "mt-0.5 text-[11px] text-gray-400", children: a("support.file_requirements", "JPEG/PNG/WebP, up to {max} files, ≤ 10MB each", {
1417
+ max: at
1384
1418
  }) })
1385
1419
  ]
1386
1420
  }
1387
1421
  ),
1388
- /* @__PURE__ */ i(
1422
+ /* @__PURE__ */ n(
1389
1423
  "input",
1390
1424
  {
1391
- ref: n,
1425
+ ref: i,
1392
1426
  type: "file",
1393
1427
  multiple: !0,
1394
- accept: bt.join(","),
1428
+ accept: xt.join(","),
1395
1429
  class: "hidden",
1396
- onChange: (g) => {
1397
- d(g.target.files), g.currentTarget.value = "";
1430
+ onChange: (d) => {
1431
+ h(d.target.files), d.currentTarget.value = "";
1398
1432
  }
1399
1433
  }
1400
1434
  ),
1401
- l && /* @__PURE__ */ i("p", { class: "mt-1 text-xs text-red-600", children: l }),
1402
- e.length > 0 && /* @__PURE__ */ i("ul", { class: "mt-2 flex flex-col gap-1", children: e.map((g, h) => /* @__PURE__ */ c(
1435
+ l && /* @__PURE__ */ n("p", { class: "mt-1 text-xs text-red-600", children: l }),
1436
+ e.length > 0 && /* @__PURE__ */ n("ul", { class: "mt-2 flex flex-col gap-1", children: e.map((d, p) => /* @__PURE__ */ c(
1403
1437
  "li",
1404
1438
  {
1405
1439
  class: "flex items-center justify-between gap-2 rounded bg-gray-50 px-2 py-1 text-xs",
1406
1440
  children: [
1407
- /* @__PURE__ */ i("span", { class: "truncate text-gray-700", children: g.name }),
1408
- /* @__PURE__ */ i(
1441
+ /* @__PURE__ */ n("span", { class: "truncate text-gray-700", children: d.name }),
1442
+ /* @__PURE__ */ n(
1409
1443
  "button",
1410
1444
  {
1411
1445
  type: "button",
1412
1446
  onClick: () => {
1413
1447
  const x = [...e];
1414
- x.splice(h, 1), t(x);
1448
+ x.splice(p, 1), t(x);
1415
1449
  },
1416
1450
  disabled: r,
1417
1451
  class: "text-gray-500 hover:text-red-600 disabled:cursor-not-allowed disabled:opacity-60",
1418
- "aria-label": a("support.remove_file_aria", "Remove {filename}", { filename: g.name }),
1452
+ "aria-label": a("support.remove_file_aria", "Remove {filename}", { filename: d.name }),
1419
1453
  children: "✕"
1420
1454
  }
1421
1455
  )
1422
1456
  ]
1423
1457
  },
1424
- `${g.name}-${g.size}-${h}`
1458
+ `${d.name}-${d.size}-${p}`
1425
1459
  )) })
1426
1460
  ] });
1427
1461
  }
1428
- const Ie = {
1462
+ const Ae = {
1429
1463
  day: "cta.get_plan_daily",
1430
1464
  week: "cta.get_plan_weekly",
1431
1465
  month: "cta.get_plan_monthly",
1432
1466
  year: "cta.get_plan_yearly"
1433
- }, Ae = {
1467
+ }, Me = {
1434
1468
  day: "Get Daily Plan",
1435
1469
  week: "Get Weekly Plan",
1436
1470
  month: "Get Monthly Plan",
1437
1471
  year: "Get Yearly Plan"
1438
1472
  };
1439
- function Me(e, t, r, a) {
1473
+ function Le(e, t, r, a) {
1440
1474
  if (t === "close") return a("cta.close", "Close");
1441
1475
  if (!e) return a("cta.continue", "Continue");
1442
1476
  if (!r && e.trial_days && e.interval && e.interval !== "lifetime")
1443
1477
  return a("cta.start_trial", "Start {days}-Day Free Trial", { days: e.trial_days });
1444
1478
  if (!e.interval || e.interval === "lifetime")
1445
1479
  return a("cta.get_lifetime_access", "Get Lifetime Access");
1446
- const n = Ie[e.interval];
1447
- return n ? a(n, Ae[e.interval]) : a("cta.get_plan_generic", "Get {interval} Plan", {
1448
- interval: Le(e.interval)
1480
+ const i = Ae[e.interval];
1481
+ return i ? a(i, Me[e.interval]) : a("cta.get_plan_generic", "Get {interval} Plan", {
1482
+ interval: Pe(e.interval)
1449
1483
  });
1450
1484
  }
1451
- function Le(e) {
1485
+ function Pe(e) {
1452
1486
  return e.length ? e[0].toUpperCase() + e.slice(1) : e;
1453
1487
  }
1454
- function Pe({ block: e, ctx: t }) {
1455
- const { t: r } = v(), [a, n] = b(!1), o = e.priceId ?? t.selectedPriceId, s = a || e.action === "checkout" && !o, l = o ? t.bootstrap.prices.find((h) => h.id === o) ?? null : null, p = t.bootstrap.user?.had_previous_trial ?? !1, d = e.label ?? Me(l, e.action, p, r);
1488
+ function Te({ block: e, ctx: t }) {
1489
+ const { t: r } = v(), [a, i] = b(!1), o = e.priceId ?? t.selectedPriceId, s = a || e.action === "checkout" && !o, l = o ? t.bootstrap.prices.find((p) => p.id === o) ?? null : null, u = t.bootstrap.user?.had_previous_trial ?? !1, h = e.label ?? Le(l, e.action, u, r);
1456
1490
  return /* @__PURE__ */ c(
1457
1491
  "button",
1458
1492
  {
@@ -1460,11 +1494,11 @@ function Pe({ block: e, ctx: t }) {
1460
1494
  disabled: s,
1461
1495
  onClick: async () => {
1462
1496
  if (!s) {
1463
- n(!0);
1497
+ i(!0);
1464
1498
  try {
1465
1499
  await t.onAction(e.action, { priceId: o });
1466
1500
  } finally {
1467
- n(!1);
1501
+ i(!1);
1468
1502
  }
1469
1503
  }
1470
1504
  },
@@ -1474,7 +1508,7 @@ function Pe({ block: e, ctx: t }) {
1474
1508
  boxShadow: "0 0 20px 0 color-mix(in srgb, var(--pw-accent) 25%, transparent), inset 0 0 8px 0 color-mix(in srgb, white 25%, transparent)"
1475
1509
  },
1476
1510
  children: [
1477
- /* @__PURE__ */ i(
1511
+ /* @__PURE__ */ n(
1478
1512
  "span",
1479
1513
  {
1480
1514
  class: "absolute inset-0 opacity-40",
@@ -1484,16 +1518,16 @@ function Pe({ block: e, ctx: t }) {
1484
1518
  "aria-hidden": "true"
1485
1519
  }
1486
1520
  ),
1487
- a ? /* @__PURE__ */ i("span", { class: "relative z-10 inline-block h-4 w-4 animate-spin rounded-full border-2 border-white/40 border-t-white" }) : /* @__PURE__ */ i("span", { class: "relative z-10", children: d })
1521
+ a ? /* @__PURE__ */ n("span", { class: "relative z-10 inline-block h-4 w-4 animate-spin rounded-full border-2 border-white/40 border-t-white" }) : /* @__PURE__ */ n("span", { class: "relative z-10", children: h })
1488
1522
  ]
1489
1523
  }
1490
1524
  );
1491
1525
  }
1492
- function Te({ ctx: e }) {
1493
- const { t } = v(), r = e.authSession, a = e.auth, [n, o] = b(!1), s = () => e.onAction("support");
1526
+ function Ee({ ctx: e }) {
1527
+ const { t } = v(), r = e.authSession, a = e.auth, [i, o] = b(!1), s = () => e.onAction("support");
1494
1528
  if (r && !r.user.is_anonymous) {
1495
1529
  const l = async () => {
1496
- if (!(!a || n)) {
1530
+ if (!(!a || i)) {
1497
1531
  o(!0);
1498
1532
  try {
1499
1533
  await a.signOut();
@@ -1507,27 +1541,27 @@ function Te({ ctx: e }) {
1507
1541
  /* @__PURE__ */ c("span", { children: [
1508
1542
  t("session.signed_in_as_prefix", "Signed in as"),
1509
1543
  " ",
1510
- /* @__PURE__ */ i("b", { class: "font-medium text-gray-700", children: r.user.email })
1544
+ /* @__PURE__ */ n("b", { class: "font-medium text-gray-700", children: r.user.email })
1511
1545
  ] }),
1512
1546
  /* @__PURE__ */ c("div", { class: "flex items-center justify-center gap-3", children: [
1513
- /* @__PURE__ */ i(H, { onClick: l, disabled: !a || n, children: n ? t("session.signing_out", "Signing out…") : t("session.sign_out", "Sign Out") }),
1514
- /* @__PURE__ */ i(yt, {}),
1515
- /* @__PURE__ */ i(H, { onClick: s, children: t("session.contact_support", "Contact Support") })
1547
+ /* @__PURE__ */ n(G, { onClick: l, disabled: !a || i, children: i ? t("session.signing_out", "Signing out…") : t("session.sign_out", "Sign Out") }),
1548
+ /* @__PURE__ */ n(kt, {}),
1549
+ /* @__PURE__ */ n(G, { onClick: s, children: t("session.contact_support", "Contact Support") })
1516
1550
  ] })
1517
1551
  ] });
1518
1552
  }
1519
1553
  return /* @__PURE__ */ c("div", { class: "-mt-3 flex items-center justify-center gap-3 pt-1 text-center text-[13px]", children: [
1520
- /* @__PURE__ */ i(H, { onClick: () => e.onAction("restore"), children: t("session.restore_purchases", "Restore purchases") }),
1521
- /* @__PURE__ */ i(yt, {}),
1522
- /* @__PURE__ */ i(H, { onClick: s, children: t("session.contact_support", "Contact Support") })
1554
+ /* @__PURE__ */ n(G, { onClick: () => e.onAction("restore"), children: t("session.restore_purchases", "Restore purchases") }),
1555
+ /* @__PURE__ */ n(kt, {}),
1556
+ /* @__PURE__ */ n(G, { onClick: s, children: t("session.contact_support", "Contact Support") })
1523
1557
  ] });
1524
1558
  }
1525
- function H({
1559
+ function G({
1526
1560
  onClick: e,
1527
1561
  disabled: t,
1528
1562
  children: r
1529
1563
  }) {
1530
- return /* @__PURE__ */ i(
1564
+ return /* @__PURE__ */ n(
1531
1565
  "button",
1532
1566
  {
1533
1567
  type: "button",
@@ -1539,12 +1573,12 @@ function H({
1539
1573
  }
1540
1574
  );
1541
1575
  }
1542
- function yt() {
1543
- return /* @__PURE__ */ i("span", { class: "h-1 w-1 rounded-full bg-gray-300", "aria-hidden": "true" });
1576
+ function kt() {
1577
+ return /* @__PURE__ */ n("span", { class: "h-1 w-1 rounded-full bg-gray-300", "aria-hidden": "true" });
1544
1578
  }
1545
- function Ee({ block: e }) {
1546
- return e.items.length ? /* @__PURE__ */ i("ul", { class: "flex flex-col gap-2.5", role: "list", children: e.items.map((t) => /* @__PURE__ */ c("li", { class: "flex items-start gap-3 text-sm text-gray-700", children: [
1547
- /* @__PURE__ */ i(
1579
+ function je({ block: e }) {
1580
+ return e.items.length ? /* @__PURE__ */ n("ul", { class: "flex flex-col gap-2.5", role: "list", children: e.items.map((t) => /* @__PURE__ */ c("li", { class: "flex items-start gap-3 text-sm text-gray-700", children: [
1581
+ /* @__PURE__ */ n(
1548
1582
  "svg",
1549
1583
  {
1550
1584
  width: "18",
@@ -1553,7 +1587,7 @@ function Ee({ block: e }) {
1553
1587
  fill: "none",
1554
1588
  class: "mt-0.5 flex-shrink-0 text-emerald-500",
1555
1589
  "aria-hidden": "true",
1556
- children: /* @__PURE__ */ i(
1590
+ children: /* @__PURE__ */ n(
1557
1591
  "path",
1558
1592
  {
1559
1593
  d: "M4 10.5l3.5 3.5 8.5-8.5",
@@ -1566,30 +1600,30 @@ function Ee({ block: e }) {
1566
1600
  }
1567
1601
  ),
1568
1602
  /* @__PURE__ */ c("div", { class: "flex flex-col gap-0.5", children: [
1569
- /* @__PURE__ */ i("span", { class: "font-medium leading-snug text-gray-900", children: t.name }),
1570
- t.desc ? /* @__PURE__ */ i("span", { class: "text-xs leading-relaxed text-gray-400", children: t.desc }) : null
1603
+ /* @__PURE__ */ n("span", { class: "font-medium leading-snug text-gray-900", children: t.name }),
1604
+ t.desc ? /* @__PURE__ */ n("span", { class: "text-xs leading-relaxed text-gray-400", children: t.desc }) : null
1571
1605
  ] })
1572
1606
  ] }, t.id)) }) : null;
1573
1607
  }
1574
- function je({ block: e }) {
1575
- const { t } = v(), r = e.title ?? t("pricing.money_back", "30-day money-back guarantee"), a = e.subtitle, n = (e.icon ?? "dollar_shield") !== "none", o = ze(r);
1608
+ function ze({ block: e }) {
1609
+ const { t } = v(), r = e.title ?? t("pricing.money_back", "30-day money-back guarantee"), a = e.subtitle, i = (e.icon ?? "dollar_shield") !== "none", o = Be(r);
1576
1610
  return /* @__PURE__ */ c("div", { class: "flex flex-col items-center gap-1.5 border-b-1 pb-4 mb-1 border-gray-100", children: [
1577
1611
  /* @__PURE__ */ c("div", { class: "inline-flex items-center gap-2 text-[12px] text-gray-700", children: [
1578
- n ? /* @__PURE__ */ i(Be, {}) : null,
1612
+ i ? /* @__PURE__ */ n(Oe, {}) : null,
1579
1613
  o ? /* @__PURE__ */ c("span", { children: [
1580
- /* @__PURE__ */ i("b", { class: "font-bold text-gray-900", children: o.bold }),
1614
+ /* @__PURE__ */ n("b", { class: "font-bold text-gray-900", children: o.bold }),
1581
1615
  " ",
1582
- /* @__PURE__ */ i("span", { class: "font-medium", children: o.rest })
1583
- ] }) : /* @__PURE__ */ i("span", { class: "font-medium", children: r })
1616
+ /* @__PURE__ */ n("span", { class: "font-medium", children: o.rest })
1617
+ ] }) : /* @__PURE__ */ n("span", { class: "font-medium", children: r })
1584
1618
  ] }),
1585
- a ? /* @__PURE__ */ i("span", { class: "text-center text-xs leading-relaxed text-gray-500", children: a }) : null
1619
+ a ? /* @__PURE__ */ n("span", { class: "text-center text-xs leading-relaxed text-gray-500", children: a }) : null
1586
1620
  ] });
1587
1621
  }
1588
- function ze(e) {
1622
+ function Be(e) {
1589
1623
  const t = e.match(/^(\d+[-\s]?days?)\s+(.+)$/i);
1590
1624
  return t ? { bold: t[1], rest: t[2] } : null;
1591
1625
  }
1592
- function Be() {
1626
+ function Oe() {
1593
1627
  return /* @__PURE__ */ c(
1594
1628
  "svg",
1595
1629
  {
@@ -1601,7 +1635,7 @@ function Be() {
1601
1635
  class: "flex-shrink-0 text-emerald-500",
1602
1636
  "aria-hidden": "true",
1603
1637
  children: [
1604
- /* @__PURE__ */ i(
1638
+ /* @__PURE__ */ n(
1605
1639
  "path",
1606
1640
  {
1607
1641
  d: "M12 2 4 5v6c0 5.25 3.5 9.5 8 11 4.5-1.5 8-5.75 8-11V5l-8-3Z",
@@ -1610,7 +1644,7 @@ function Be() {
1610
1644
  "stroke-linejoin": "round"
1611
1645
  }
1612
1646
  ),
1613
- /* @__PURE__ */ i(
1647
+ /* @__PURE__ */ n(
1614
1648
  "path",
1615
1649
  {
1616
1650
  d: "m9 12 2 2 4-4",
@@ -1624,22 +1658,22 @@ function Be() {
1624
1658
  }
1625
1659
  );
1626
1660
  }
1627
- const Ot = 24, Oe = 16, Fe = 2;
1628
- function Re(e, t) {
1629
- const r = t * Fe;
1630
- let a = Ot;
1631
- for (e.style.fontSize = `${a}px`; e.scrollHeight > r && a > Oe; )
1661
+ const Rt = 24, Fe = 16, Re = 2;
1662
+ function Ue(e, t) {
1663
+ const r = t * Re;
1664
+ let a = Rt;
1665
+ for (e.style.fontSize = `${a}px`; e.scrollHeight > r && a > Fe; )
1632
1666
  a -= 1, e.style.fontSize = `${a}px`;
1633
1667
  }
1634
- function Ue({ block: e, ctx: t }) {
1635
- const r = e.level ?? 1, a = `h${r}`, n = r === 1 ? "text-[22px] sm:text-2xl font-semibold leading-tight text-center text-balance text-gray-800" : r === 2 ? "text-xl font-semibold leading-snug text-gray-900 tracking-tight" : "text-base font-medium text-gray-900", o = O(null), s = r === 1 && !!t.bootstrap.settings.title_auto_fit;
1668
+ function De({ block: e, ctx: t }) {
1669
+ const r = e.level ?? 1, a = `h${r}`, i = r === 1 ? "text-[22px] sm:text-2xl font-semibold leading-tight text-center text-balance text-gray-800" : r === 2 ? "text-xl font-semibold leading-snug text-gray-900 tracking-tight" : "text-base font-medium text-gray-900", o = F(null), s = r === 1 && !!t.bootstrap.settings.title_auto_fit;
1636
1670
  return T(() => {
1637
1671
  if (!s || !o.current) return;
1638
- const l = getComputedStyle(o.current), p = parseFloat(l.lineHeight) || Ot * 1.5;
1639
- Re(o.current, p);
1640
- }, [s, e.text]), /* @__PURE__ */ i(a, { ref: o, class: n, children: e.text });
1672
+ const l = getComputedStyle(o.current), u = parseFloat(l.lineHeight) || Rt * 1.5;
1673
+ Ue(o.current, u);
1674
+ }, [s, e.text]), /* @__PURE__ */ n(a, { ref: o, class: i, children: e.text });
1641
1675
  }
1642
- function De(e) {
1676
+ function Ne(e) {
1643
1677
  const t = e.local ?? { currency: e.currency, amount: e.amount };
1644
1678
  if (e.interval === "year") {
1645
1679
  const r = (e.interval_count ?? 1) * 12;
@@ -1647,7 +1681,7 @@ function De(e) {
1647
1681
  }
1648
1682
  return { amount: t.amount, currency: t.currency };
1649
1683
  }
1650
- function at(e, t) {
1684
+ function ot(e, t) {
1651
1685
  const r = e % 1 !== 0 ? 2 : 0;
1652
1686
  try {
1653
1687
  const a = new Intl.NumberFormat(void 0, {
@@ -1657,37 +1691,37 @@ function at(e, t) {
1657
1691
  maximumFractionDigits: r,
1658
1692
  minimumFractionDigits: r
1659
1693
  }).formatToParts(e);
1660
- let n = "", o = "";
1694
+ let i = "", o = "";
1661
1695
  for (const s of a)
1662
- s.type === "currency" ? n = s.value : s.type !== "literal" && (o += s.value);
1663
- return { currency: n || t, amount: o.trim() };
1696
+ s.type === "currency" ? i = s.value : s.type !== "literal" && (o += s.value);
1697
+ return { currency: i || t, amount: o.trim() };
1664
1698
  } catch {
1665
1699
  return { currency: t, amount: String(e) };
1666
1700
  }
1667
1701
  }
1668
1702
  function lt(e, t) {
1669
- const { amount: r, currency: a } = De(e);
1703
+ const { amount: r, currency: a } = Ne(e);
1670
1704
  if (!t) {
1671
- const { currency: l, amount: p } = at(r, a);
1672
- return { currency: l, amount: p, originalAmount: null };
1705
+ const { currency: l, amount: u } = ot(r, a);
1706
+ return { currency: l, amount: u, originalAmount: null };
1673
1707
  }
1674
- const n = r * (1 - t / 100), o = at(n, a), s = at(r, a);
1708
+ const i = r * (1 - t / 100), o = ot(i, a), s = ot(r, a);
1675
1709
  return {
1676
1710
  currency: o.currency,
1677
1711
  amount: o.amount,
1678
1712
  originalAmount: `${s.currency}${s.amount}`
1679
1713
  };
1680
1714
  }
1681
- function ot(e, t) {
1715
+ function q(e, t) {
1682
1716
  if (!e || e.length === 0) return null;
1683
1717
  const r = e.find(
1684
- (n) => n.price_id === t && n.discount_percent && n.discount_percent > 0
1718
+ (i) => i.price_id === t && i.discount_percent && i.discount_percent > 0
1685
1719
  );
1686
1720
  return r || (e.find(
1687
- (n) => n.price_id == null && n.discount_percent && n.discount_percent > 0
1721
+ (i) => i.price_id == null && i.discount_percent && i.discount_percent > 0
1688
1722
  ) ?? null);
1689
1723
  }
1690
- function Ft(e, t) {
1724
+ function Ut(e, t) {
1691
1725
  if (e.label) return e.label.toUpperCase();
1692
1726
  if (!e.interval || e.interval === "lifetime")
1693
1727
  return t("pricing.plan_label.lifetime", "LIFETIME");
@@ -1706,26 +1740,26 @@ function ct(e, t) {
1706
1740
  const r = e.interval_count ?? 1;
1707
1741
  return r === 1 ? t(`pricing.interval.${e.interval}`, e.interval) : `${r} ${e.interval}s`;
1708
1742
  }
1709
- function Ne({ block: e, ctx: t }) {
1710
- const { t: r } = v(), a = e.priceIds && e.priceIds.length > 0 ? new Set(e.priceIds) : null, n = t.bootstrap.prices.filter((s) => !a || a.has(s.id));
1711
- if (n.length === 0)
1712
- return /* @__PURE__ */ i("p", { class: "text-sm text-gray-500", children: r("pricing.no_prices", "No prices available.") });
1743
+ function He({ block: e, ctx: t }) {
1744
+ const { t: r } = v(), a = e.priceIds && e.priceIds.length > 0 ? new Set(e.priceIds) : null, i = t.bootstrap.prices.filter((s) => !a || a.has(s.id));
1745
+ if (i.length === 0)
1746
+ return /* @__PURE__ */ n("p", { class: "text-sm text-gray-500", children: r("pricing.no_prices", "No prices available.") });
1713
1747
  const o = e.popular_label ?? r("pricing.most_popular", "Most popular");
1714
1748
  if (e.view === "compact")
1715
- return /* @__PURE__ */ i(
1749
+ return /* @__PURE__ */ n(
1716
1750
  "div",
1717
1751
  {
1718
- class: "flex w-full flex-col",
1752
+ class: "flex w-full flex-col rounded-xl border border-gray-200 bg-gray-50",
1719
1753
  role: "radiogroup",
1720
1754
  "aria-label": r("pricing.plans_aria", "Plans"),
1721
- children: n.map((s, l) => /* @__PURE__ */ i(
1755
+ children: i.map((s, l) => /* @__PURE__ */ n(
1722
1756
  $e,
1723
1757
  {
1724
1758
  price: s,
1725
- isLast: l === n.length - 1,
1759
+ isLast: l === i.length - 1,
1726
1760
  isPopular: e.popular_price_id === s.id,
1727
1761
  popularLabel: o,
1728
- offer: ot(t.bootstrap.offers, s.id),
1762
+ offer: q(t.bootstrap.offers, s.id),
1729
1763
  selected: t.selectedPriceId === s.id,
1730
1764
  onSelect: () => {
1731
1765
  t.setSelectedPriceId(s.id), t.onAction("price_selected", { priceId: s.id, price: s });
@@ -1737,40 +1771,43 @@ function Ne({ block: e, ctx: t }) {
1737
1771
  }
1738
1772
  );
1739
1773
  if (e.view === "horizontal") {
1740
- const s = Math.min(n.length, 3);
1741
- return /* @__PURE__ */ i(
1774
+ const s = Math.min(i.length, 3), l = i.some(
1775
+ (u) => (q(t.bootstrap.offers, u.id)?.discount_percent ?? 0) > 0
1776
+ );
1777
+ return /* @__PURE__ */ n(
1742
1778
  "div",
1743
1779
  {
1744
1780
  class: "grid items-stretch gap-2",
1745
1781
  style: { gridTemplateColumns: `repeat(${s}, minmax(0, 1fr))` },
1746
1782
  role: "radiogroup",
1747
1783
  "aria-label": r("pricing.plans_aria", "Plans"),
1748
- children: n.map((l) => /* @__PURE__ */ i(
1749
- He,
1784
+ children: i.map((u) => /* @__PURE__ */ n(
1785
+ Ge,
1750
1786
  {
1751
- price: l,
1752
- isPopular: e.popular_price_id === l.id,
1787
+ price: u,
1788
+ isPopular: e.popular_price_id === u.id,
1753
1789
  popularLabel: o,
1754
- offer: ot(t.bootstrap.offers, l.id),
1755
- selected: t.selectedPriceId === l.id,
1790
+ offer: q(t.bootstrap.offers, u.id),
1791
+ reserveStrikeRow: l,
1792
+ selected: t.selectedPriceId === u.id,
1756
1793
  onSelect: () => {
1757
- t.setSelectedPriceId(l.id), t.onAction("price_selected", { priceId: l.id, price: l });
1794
+ t.setSelectedPriceId(u.id), t.onAction("price_selected", { priceId: u.id, price: u });
1758
1795
  },
1759
1796
  t: r
1760
1797
  },
1761
- l.id
1798
+ u.id
1762
1799
  ))
1763
1800
  }
1764
1801
  );
1765
1802
  }
1766
- return /* @__PURE__ */ i(
1803
+ return /* @__PURE__ */ n(
1767
1804
  "div",
1768
1805
  {
1769
1806
  class: "flex flex-col gap-2",
1770
1807
  role: "radiogroup",
1771
1808
  "aria-label": r("pricing.plans_aria", "Plans"),
1772
- children: n.map((s) => {
1773
- const l = t.selectedPriceId === s.id, p = e.popular_price_id === s.id, g = ot(t.bootstrap.offers, s.id)?.discount_percent ?? null, { currency: h, amount: x, originalAmount: u } = lt(s, g);
1809
+ children: i.map((s) => {
1810
+ const l = t.selectedPriceId === s.id, u = e.popular_price_id === s.id, d = q(t.bootstrap.offers, s.id)?.discount_percent ?? null, { currency: p, amount: x, originalAmount: _ } = lt(s, d);
1774
1811
  return /* @__PURE__ */ c(
1775
1812
  "button",
1776
1813
  {
@@ -1781,14 +1818,14 @@ function Ne({ block: e, ctx: t }) {
1781
1818
  t.setSelectedPriceId(s.id), t.onAction("price_selected", { priceId: s.id, price: s });
1782
1819
  },
1783
1820
  class: [
1784
- "group relative inline-flex w-full mx-auto items-center justify-between flex-row-reverse gap-4 rounded-2xl border-2 p-4 text-left transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--pw-accent)]",
1821
+ "group relative inline-flex w-full mx-auto items-center justify-between flex-row-reverse gap-4 rounded-2xl border-2 px-4 py-3.5 text-left transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--pw-accent)]",
1785
1822
  // Везде border 2px — selection выражается только цветом, layout
1786
1823
  // не прыгает (равная толщина у selected/unselected). Цветовая
1787
1824
  // разница accent vs gray достаточно сильная для visual hierarchy.
1788
1825
  l ? "border-[var(--pw-accent)] bg-transparent" : "border-gray-200 bg-transparent hover:bg-gray-50"
1789
1826
  ].join(" "),
1790
1827
  children: [
1791
- /* @__PURE__ */ i(
1828
+ /* @__PURE__ */ n(
1792
1829
  "span",
1793
1830
  {
1794
1831
  class: [
@@ -1798,13 +1835,13 @@ function Ne({ block: e, ctx: t }) {
1798
1835
  // визуально сдвигает центр content'а вниз. flex items-center
1799
1836
  // на карточке держит галочку по геометрическому центру, что
1800
1837
  // делает её визуально выше — компенсируем небольшим mt'ом.
1801
- p ? "mt-3" : ""
1838
+ u ? "mt-3" : ""
1802
1839
  ].join(" "),
1803
1840
  style: l ? {
1804
1841
  background: "linear-gradient(135deg, color-mix(in srgb, var(--pw-accent) 70%, white) 0%, var(--pw-accent) 50%, color-mix(in srgb, var(--pw-accent) 85%, black) 100%)"
1805
1842
  } : void 0,
1806
1843
  "aria-hidden": "true",
1807
- children: /* @__PURE__ */ i(
1844
+ children: /* @__PURE__ */ n(
1808
1845
  "svg",
1809
1846
  {
1810
1847
  width: "14",
@@ -1813,7 +1850,7 @@ function Ne({ block: e, ctx: t }) {
1813
1850
  fill: "none",
1814
1851
  xmlns: "http://www.w3.org/2000/svg",
1815
1852
  class: l ? "opacity-100" : "opacity-0",
1816
- children: /* @__PURE__ */ i(
1853
+ children: /* @__PURE__ */ n(
1817
1854
  "path",
1818
1855
  {
1819
1856
  d: "M16.5234 0.476562C16.9805 0.898438 16.9805 1.63672 16.5234 2.05859L7.52344 11.0586C7.10156 11.5156 6.36328 11.5156 5.94141 11.0586L1.44141 6.55859C0.984375 6.13672 0.984375 5.39844 1.44141 4.97656C1.86328 4.51953 2.60156 4.51953 3.02344 4.97656L6.75 8.66797L14.9414 0.476562C15.3633 0.0195312 16.1016 0.0195312 16.5234 0.476562Z",
@@ -1826,26 +1863,25 @@ function Ne({ block: e, ctx: t }) {
1826
1863
  ),
1827
1864
  /* @__PURE__ */ c("div", { class: "flex flex-1 flex-col gap-0.5", children: [
1828
1865
  /* @__PURE__ */ c("div", { class: "flex flex-wrap items-center gap-x-2 gap-y-1", children: [
1829
- /* @__PURE__ */ i("span", { class: "text-xs font-normal uppercase tracking-normal text-gray-800/70", children: Ft(s, r) }),
1830
- u ? (
1866
+ /* @__PURE__ */ n("span", { class: "text-xs font-normal uppercase tracking-normal text-gray-800/70", children: Ut(s, r) }),
1867
+ _ ? (
1831
1868
  // opacity-60 приглушает strike: глаз сначала ловит label
1832
1869
  // и discount-badge, потом main price; original «бывшая цена»
1833
1870
  // — третичная информация, не должна конкурировать с label.
1834
- /* @__PURE__ */ i("span", { class: "text-[15px] font-normal text-gray-400 opacity-60 line-through decoration-gray-400 decoration-[1.5px]", children: u })
1871
+ /* @__PURE__ */ n("span", { class: "text-[15px] font-normal text-gray-400 opacity-60 line-through decoration-gray-400 decoration-[1.5px]", children: _ })
1835
1872
  ) : null,
1836
- g ? (
1873
+ d ? (
1837
1874
  // Emerald pill — фиксированный «успех/выгода», не зависит от
1838
1875
  // brand_color. Читается даже на тёмных бренд-акцентах.
1839
1876
  /* @__PURE__ */ c("span", { class: "rounded-full bg-emerald-100 px-2.5 py-1 text-xs font-bold leading-none text-emerald-700", children: [
1840
1877
  "-",
1841
- g,
1878
+ d,
1842
1879
  "%"
1843
1880
  ] })
1844
1881
  ) : null
1845
1882
  ] }),
1846
- /* @__PURE__ */ i("div", { class: "flex items-baseline gap-2 flex-wrap", children: /* @__PURE__ */ c("span", { class: "text-[26px] leading-tight whitespace-nowrap text-gray-800 font-medium", children: [
1847
- /* @__PURE__ */ i("span", { class: "opacity-90", children: h }),
1848
- " ",
1883
+ /* @__PURE__ */ n("div", { class: "flex items-baseline gap-2 flex-wrap", children: /* @__PURE__ */ c("span", { class: "text-[26px] leading-tight whitespace-nowrap text-gray-800 font-medium", children: [
1884
+ /* @__PURE__ */ n("span", { class: "opacity-90", children: p }),
1849
1885
  x,
1850
1886
  /* @__PURE__ */ c("span", { class: "text-sm font-normal text-gray-500", children: [
1851
1887
  " ",
@@ -1853,10 +1889,9 @@ function Ne({ block: e, ctx: t }) {
1853
1889
  ct(s, r)
1854
1890
  ] })
1855
1891
  ] }) }),
1856
- s.description ? /* @__PURE__ */ i("span", { class: "mt-1 text-xs leading-relaxed text-gray-500", children: s.description }) : null,
1857
- s.trial_days ? /* @__PURE__ */ i("span", { class: "mt-1 text-xs font-medium text-[var(--pw-accent)]", children: r("pricing.free_trial_days", "{days}-day free trial", { days: s.trial_days }) }) : null
1892
+ s.description ? /* @__PURE__ */ n("span", { class: "mt-1 text-xs leading-relaxed text-gray-500", children: s.description }) : null
1858
1893
  ] }),
1859
- p ? /* @__PURE__ */ i(
1894
+ u ? /* @__PURE__ */ n(
1860
1895
  "span",
1861
1896
  {
1862
1897
  class: "absolute -top-[9px] -right-[6px] rounded-[11px] border-[5px] border-white px-2 py-1 text-[12px] font-semibold text-white",
@@ -1880,12 +1915,12 @@ function $e({
1880
1915
  isLast: t,
1881
1916
  isPopular: r,
1882
1917
  popularLabel: a,
1883
- offer: n,
1918
+ offer: i,
1884
1919
  selected: o,
1885
1920
  onSelect: s,
1886
1921
  t: l
1887
1922
  }) {
1888
- const p = n?.discount_percent ?? null, { currency: d, amount: g, originalAmount: h } = lt(e, p);
1923
+ const u = i?.discount_percent ?? null, { currency: h, amount: d, originalAmount: p } = lt(e, u);
1889
1924
  return /* @__PURE__ */ c(
1890
1925
  "button",
1891
1926
  {
@@ -1895,7 +1930,7 @@ function $e({
1895
1930
  onClick: s,
1896
1931
  class: "group relative inline-flex w-full max-w-[360px] mx-auto items-center justify-between gap-4 px-4 pt-3.5 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--pw-accent)]",
1897
1932
  children: [
1898
- /* @__PURE__ */ i(
1933
+ /* @__PURE__ */ n(
1899
1934
  "span",
1900
1935
  {
1901
1936
  class: [
@@ -1906,7 +1941,7 @@ function $e({
1906
1941
  background: "linear-gradient(135deg, color-mix(in srgb, var(--pw-accent) 70%, white) 0%, var(--pw-accent) 50%, color-mix(in srgb, var(--pw-accent) 85%, black) 100%)"
1907
1942
  } : void 0,
1908
1943
  "aria-hidden": "true",
1909
- children: /* @__PURE__ */ i(
1944
+ children: /* @__PURE__ */ n(
1910
1945
  "svg",
1911
1946
  {
1912
1947
  width: "14",
@@ -1915,7 +1950,7 @@ function $e({
1915
1950
  fill: "none",
1916
1951
  xmlns: "http://www.w3.org/2000/svg",
1917
1952
  class: o ? "opacity-100" : "opacity-0",
1918
- children: /* @__PURE__ */ i(
1953
+ children: /* @__PURE__ */ n(
1919
1954
  "path",
1920
1955
  {
1921
1956
  d: "M16.5234 0.476562C16.9805 0.898438 16.9805 1.63672 16.5234 2.05859L7.52344 11.0586C7.10156 11.5156 6.36328 11.5156 5.94141 11.0586L1.44141 6.55859C0.984375 6.13672 0.984375 5.39844 1.44141 4.97656C1.86328 4.51953 2.60156 4.51953 3.02344 4.97656L6.75 8.66797L14.9414 0.476562C15.3633 0.0195312 16.1016 0.0195312 16.5234 0.476562Z",
@@ -1935,12 +1970,12 @@ function $e({
1935
1970
  ].join(" "),
1936
1971
  children: [
1937
1972
  /* @__PURE__ */ c("div", { class: "flex flex-wrap items-center gap-1 gap-x-1.5", children: [
1938
- /* @__PURE__ */ i("span", { class: "text-base font-normal capitalize text-gray-800", children: Ve(e, l) }),
1973
+ /* @__PURE__ */ n("span", { class: "text-base font-normal capitalize text-gray-800", children: Ve(e, l) }),
1939
1974
  r ? (
1940
1975
  // Pastel brand-mix pill — точно как `badge` в TelegramPricingRadio.
1941
1976
  // Низкий visual weight: pill про "имя плана" (most popular), а не
1942
1977
  // про savings — не должна конкурировать с -X% discount-pill.
1943
- /* @__PURE__ */ i(
1978
+ /* @__PURE__ */ n(
1944
1979
  "span",
1945
1980
  {
1946
1981
  class: "rounded-[9px] px-2 py-1 text-[10px] font-bold",
@@ -1952,18 +1987,18 @@ function $e({
1952
1987
  }
1953
1988
  )
1954
1989
  ) : null,
1955
- p ? /* @__PURE__ */ c("span", { class: "rounded-md bg-emerald-100 px-1.5 py-0.5 text-[10px] font-bold leading-none text-emerald-700", children: [
1990
+ u ? /* @__PURE__ */ c("span", { class: "rounded-md bg-emerald-100 px-1.5 py-0.5 text-[10px] font-bold leading-none text-emerald-700", children: [
1956
1991
  "-",
1957
- p,
1992
+ u,
1958
1993
  "%"
1959
1994
  ] }) : null
1960
1995
  ] }),
1961
- /* @__PURE__ */ i("div", { class: "flex-1" }),
1996
+ /* @__PURE__ */ n("div", { class: "flex-1" }),
1962
1997
  /* @__PURE__ */ c("span", { class: "flex items-baseline gap-1.5 text-base font-normal text-gray-600", children: [
1963
- h ? /* @__PURE__ */ i("span", { class: "text-xs text-gray-400 line-through decoration-gray-400 decoration-[1.5px]", children: h }) : null,
1998
+ p ? /* @__PURE__ */ n("span", { class: "text-xs text-gray-400 line-through decoration-gray-400 decoration-[1.5px]", children: p }) : null,
1964
1999
  /* @__PURE__ */ c("span", { class: "whitespace-nowrap", children: [
1965
- /* @__PURE__ */ i("span", { class: "opacity-90", children: d }),
1966
- g,
2000
+ /* @__PURE__ */ n("span", { class: "opacity-90", children: h }),
2001
+ d,
1967
2002
  /* @__PURE__ */ c("span", { class: "text-xs text-gray-400", children: [
1968
2003
  " ",
1969
2004
  "/ ",
@@ -1978,48 +2013,48 @@ function $e({
1978
2013
  }
1979
2014
  );
1980
2015
  }
1981
- function He({
2016
+ function Ge({
1982
2017
  price: e,
1983
2018
  isPopular: t,
1984
2019
  popularLabel: r,
1985
2020
  offer: a,
1986
- selected: n,
1987
- onSelect: o,
1988
- t: s
2021
+ reserveStrikeRow: i,
2022
+ selected: o,
2023
+ onSelect: s,
2024
+ t: l
1989
2025
  }) {
1990
- const l = a?.discount_percent ?? null, { currency: p, amount: d, originalAmount: g } = lt(e, l);
2026
+ const u = a?.discount_percent ?? null, { currency: h, amount: d, originalAmount: p } = lt(e, u);
1991
2027
  return /* @__PURE__ */ c(
1992
2028
  "button",
1993
2029
  {
1994
2030
  type: "button",
1995
2031
  role: "radio",
1996
- "aria-checked": n,
1997
- onClick: o,
2032
+ "aria-checked": o,
2033
+ onClick: s,
1998
2034
  class: [
1999
2035
  "group relative flex h-full flex-col items-center justify-start gap-1 rounded-2xl border-2 px-3 pb-4 pt-3.5 text-center transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--pw-accent)]",
2000
- n ? "border-[var(--pw-accent)]" : "border-gray-200 hover:bg-gray-50"
2036
+ o ? "border-[var(--pw-accent)]" : "border-gray-200 hover:bg-gray-50"
2001
2037
  ].join(" "),
2002
- style: n ? { background: "color-mix(in srgb, var(--pw-accent) 6%, transparent)" } : void 0,
2038
+ style: o ? { background: "color-mix(in srgb, var(--pw-accent) 6%, transparent)" } : void 0,
2003
2039
  children: [
2004
- /* @__PURE__ */ i("span", { class: "flex min-h-[2.4em] items-center text-[11px] font-normal uppercase leading-tight text-gray-800/70", children: Ft(e, s) }),
2005
- /* @__PURE__ */ c("div", { class: "flex h-[22px] items-center justify-center gap-1.5", children: [
2006
- g ? /* @__PURE__ */ i("span", { class: "text-[12px] text-gray-400 line-through decoration-gray-400 decoration-[1.5px]", children: g }) : null,
2007
- l ? /* @__PURE__ */ c("span", { class: "rounded-md bg-emerald-100 px-1.5 py-0.5 text-[10px] font-bold leading-none text-emerald-700", children: [
2040
+ /* @__PURE__ */ n("span", { class: "flex min-h-[2.4em] items-center text-[10px] font-normal uppercase leading-tight text-gray-800/70", children: Ut(e, l) }),
2041
+ i ? /* @__PURE__ */ c("div", { class: "flex h-[22px] items-center justify-center gap-1.5", children: [
2042
+ p ? /* @__PURE__ */ n("span", { class: "text-[12px] text-gray-400 line-through decoration-gray-400 decoration-[1.5px]", children: p }) : null,
2043
+ u ? /* @__PURE__ */ c("span", { class: "rounded-md bg-emerald-100 px-1.5 py-0.5 text-[10px] font-bold leading-none text-emerald-700", children: [
2008
2044
  "-",
2009
- l,
2045
+ u,
2010
2046
  "%"
2011
2047
  ] }) : null
2012
- ] }),
2048
+ ] }) : null,
2013
2049
  /* @__PURE__ */ c("span", { class: "text-[26px] leading-none whitespace-nowrap text-gray-800 font-medium", children: [
2014
- /* @__PURE__ */ i("span", { class: "opacity-90", children: p }),
2050
+ /* @__PURE__ */ n("span", { class: "opacity-90", children: h }),
2015
2051
  d
2016
2052
  ] }),
2017
2053
  /* @__PURE__ */ c("span", { class: "text-xs font-normal text-gray-500", children: [
2018
2054
  "/ ",
2019
- ct(e, s)
2055
+ ct(e, l)
2020
2056
  ] }),
2021
- e.trial_days ? /* @__PURE__ */ i("span", { class: "mt-1 text-[11px] font-medium text-[var(--pw-accent)]", children: s("pricing.free_trial_days", "{days}-day free trial", { days: e.trial_days }) }) : null,
2022
- t ? /* @__PURE__ */ i(
2057
+ t ? /* @__PURE__ */ n(
2023
2058
  "span",
2024
2059
  {
2025
2060
  class: "absolute -top-[10px] left-1/2 -translate-x-1/2 whitespace-nowrap rounded-[11px] border-[3px] border-white px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-white",
@@ -2031,29 +2066,29 @@ function He({
2031
2066
  }
2032
2067
  );
2033
2068
  }
2034
- function Ge({ block: e }) {
2035
- return /* @__PURE__ */ i("p", { class: "text-[0.9375rem] leading-relaxed text-gray-600", children: e.text });
2069
+ function qe({ block: e }) {
2070
+ return /* @__PURE__ */ n("p", { class: "text-[0.9375rem] leading-relaxed text-gray-600", children: e.text });
2036
2071
  }
2037
- const qe = {
2072
+ const We = {
2038
2073
  week: 0.25,
2039
2074
  month: 1,
2040
2075
  year: 12
2041
2076
  };
2042
- function We(e, t) {
2077
+ function Ze(e, t) {
2043
2078
  return e ? t(`pricing.interval.${e}`, e) : t("pricing.interval.period", "period");
2044
2079
  }
2045
- function Ze({ block: e, ctx: t }) {
2080
+ function Ke({ block: e, ctx: t }) {
2046
2081
  const { t: r } = v();
2047
2082
  if (!e.queries.length) return null;
2048
- const n = t.bootstrap.prices.find((s) => s.id === t.selectedPriceId)?.interval ?? null, o = n ? qe[n] : void 0;
2083
+ const i = t.bootstrap.prices.find((s) => s.id === t.selectedPriceId)?.interval ?? null, o = i ? We[i] : void 0;
2049
2084
  return /* @__PURE__ */ c("div", { class: "flex flex-col gap-2", children: [
2050
- /* @__PURE__ */ i("div", { class: "text-sm font-semibold text-gray-800", children: r("pricing.included_per", "Included per {interval}:", {
2051
- interval: We(n, r)
2085
+ /* @__PURE__ */ n("div", { class: "text-sm font-semibold text-gray-800", children: !i || i === "lifetime" ? r("pricing.included_total", "Included for lifetime:") : r("pricing.included_per", "Included per {interval}:", {
2086
+ interval: Ze(i, r)
2052
2087
  }) }),
2053
- /* @__PURE__ */ i("ul", { class: "flex flex-col gap-2", role: "list", children: e.queries.map((s) => {
2054
- const l = Number.isFinite(s.count) ? s.count : 0, p = o !== void 0 ? Math.round(l * o) : l;
2088
+ /* @__PURE__ */ n("ul", { class: "flex flex-col gap-2", role: "list", children: e.queries.map((s) => {
2089
+ const l = Number.isFinite(s.count) ? s.count : 0, u = o !== void 0 ? Math.round(l * o) : l;
2055
2090
  return /* @__PURE__ */ c("li", { class: `flex gap-3 ${s.desc ? "items-start" : "items-center"}`, children: [
2056
- /* @__PURE__ */ i(
2091
+ /* @__PURE__ */ n(
2057
2092
  "svg",
2058
2093
  {
2059
2094
  width: "18",
@@ -2062,7 +2097,7 @@ function Ze({ block: e, ctx: t }) {
2062
2097
  fill: "none",
2063
2098
  class: `flex-shrink-0 text-emerald-500 ${s.desc ? "mt-0.5" : ""}`,
2064
2099
  "aria-hidden": "true",
2065
- children: /* @__PURE__ */ i(
2100
+ children: /* @__PURE__ */ n(
2066
2101
  "path",
2067
2102
  {
2068
2103
  d: "M4 10.5l3.5 3.5 8.5-8.5",
@@ -2075,165 +2110,166 @@ function Ze({ block: e, ctx: t }) {
2075
2110
  }
2076
2111
  ),
2077
2112
  /* @__PURE__ */ c("div", { children: [
2078
- /* @__PURE__ */ i("span", { class: "font-semibold text-gray-900 text-sm", children: p }),
2113
+ /* @__PURE__ */ n("span", { class: "font-semibold text-gray-900 text-sm", children: u }),
2079
2114
  " ",
2080
- /* @__PURE__ */ i("span", { class: "text-sm text-gray-800", children: s.name }),
2081
- s.desc ? /* @__PURE__ */ c(q, { children: [
2082
- /* @__PURE__ */ i("br", {}),
2083
- /* @__PURE__ */ i("span", { class: "text-xs text-gray-400", children: s.desc })
2115
+ /* @__PURE__ */ n("span", { class: "text-sm text-gray-800", children: s.name }),
2116
+ s.desc ? /* @__PURE__ */ c(Z, { children: [
2117
+ /* @__PURE__ */ n("br", {}),
2118
+ /* @__PURE__ */ n("span", { class: "text-xs text-gray-400", children: s.desc })
2084
2119
  ] }) : null
2085
2120
  ] })
2086
2121
  ] }, s.id);
2087
2122
  }) })
2088
2123
  ] });
2089
2124
  }
2090
- const Ke = {
2091
- heading: Ue,
2092
- text: Ge,
2093
- price_grid: Ne,
2094
- cta_button: Pe,
2095
- auth_panel: Pt,
2096
- current_session: Te,
2097
- features_list: Ee,
2098
- tokenization_gate: Ze,
2099
- guarantee_badge: je,
2100
- offer_banner: xe
2125
+ const Ye = {
2126
+ heading: De,
2127
+ text: qe,
2128
+ price_grid: He,
2129
+ cta_button: Te,
2130
+ auth_panel: Et,
2131
+ current_session: Ee,
2132
+ features_list: je,
2133
+ tokenization_gate: Ke,
2134
+ guarantee_badge: ze,
2135
+ offer_banner: ve
2101
2136
  };
2102
- function Ye({ layout: e, bootstrap: t, onAction: r, auth: a, authSession: n }) {
2103
- const o = St(() => {
2104
- for (const u of e.blocks)
2105
- if (u.type === "price_grid" && u.popular_price_id && t.prices.some((m) => m.id === u.popular_price_id))
2106
- return u.popular_price_id;
2137
+ function Xe({ layout: e, bootstrap: t, onAction: r, auth: a, authSession: i, hasTopBanner: o }) {
2138
+ const s = Ct(() => {
2139
+ for (const g of e.blocks)
2140
+ if (g.type === "price_grid" && g.popular_price_id && t.prices.some((f) => f.id === g.popular_price_id))
2141
+ return g.popular_price_id;
2107
2142
  return t.prices[0]?.id ?? null;
2108
- }, [e.blocks, t.prices]), [s, l] = b(o), p = {
2143
+ }, [e.blocks, t.prices]), [l, u] = b(s), h = {
2109
2144
  bootstrap: t,
2110
- selectedPriceId: s,
2111
- setSelectedPriceId: l,
2145
+ selectedPriceId: l,
2146
+ setSelectedPriceId: u,
2112
2147
  onAction: r,
2113
2148
  auth: a,
2114
- authSession: n
2115
- }, d = e.blocks.findIndex((u) => u.type === "cta_button"), g = d === -1 ? e.blocks : e.blocks.slice(0, d), h = d === -1 ? [] : e.blocks.slice(d), x = (u, m) => {
2116
- const y = Ke[u.type];
2117
- return y ? /* @__PURE__ */ i(y, { block: u, ctx: p }, `${u.type}-${m}`) : (typeof console < "u" && console.warn(`[paywall] unknown block type: ${u.type}`), null);
2149
+ authSession: i
2150
+ }, d = e.blocks.findIndex((g) => g.type === "cta_button"), p = d === -1 ? e.blocks : e.blocks.slice(0, d), x = d === -1 ? [] : e.blocks.slice(d), _ = (g, f) => {
2151
+ const M = Ye[g.type];
2152
+ return M ? /* @__PURE__ */ n(M, { block: g, ctx: h }, `${g.type}-${f}`) : (typeof console < "u" && console.warn(`[paywall] unknown block type: ${g.type}`), null);
2118
2153
  };
2119
- return /* @__PURE__ */ c(q, { children: [
2120
- /* @__PURE__ */ i("div", { class: "flex-1 min-h-0 overflow-y-auto px-6 pb-3 pt-6 sm:px-8 sm:pb-4 sm:pt-8", children: /* @__PURE__ */ i("div", { class: "flex flex-col gap-6", children: g.map(x) }) }),
2121
- h.length > 0 ? (
2154
+ return /* @__PURE__ */ c(Z, { children: [
2155
+ /* @__PURE__ */ n("div", { class: "flex-1 min-h-0 overflow-y-auto px-6 pb-3 pt-6 sm:px-8 sm:pb-4 sm:pt-8", children: /* @__PURE__ */ n("div", { class: "flex flex-col gap-6", children: p.map(_) }) }),
2156
+ x.length > 0 ? (
2122
2157
  // Тонкий shadow-top вместо border-t — создаёт depth, читается как
2123
2158
  // «footer закреплён к низу dialog'а». Линия выглядела как divider
2124
2159
  // в обычном flow, не передавала sticky-character.
2125
- /* @__PURE__ */ i(
2160
+ /* @__PURE__ */ n(
2126
2161
  "div",
2127
2162
  {
2128
2163
  class: "flex flex-col gap-4 bg-white px-6 pb-6 pt-3 sm:px-8",
2129
2164
  style: { boxShadow: "0 -4px 12px -4px rgba(15,23,42,0.06)" },
2130
- children: h.map((u, m) => x(u, g.length + m))
2165
+ children: x.map((g, f) => _(g, p.length + f))
2131
2166
  }
2132
2167
  )
2133
2168
  ) : null
2134
2169
  ] });
2135
2170
  }
2136
- function Xe(e, t, r, a) {
2171
+ function Je(e, t, r, a) {
2137
2172
  return e ? a ? { open: !0, view: "purchased", error: null } : t.status === "idle" || t.status === "loading" ? { open: !0, view: "loading", error: null } : t.status === "error" ? { open: !0, view: "error", error: t.error } : r.kind === "support" ? { open: !0, view: "support", error: null } : r.kind === "auth_gate" ? { open: !0, view: "auth", error: null } : r.kind === "anon_gate" ? { open: !0, view: "anon", error: null } : r.kind === "awaiting_payment" ? { open: !0, view: "awaiting_payment", error: null } : r.kind === "popup_blocked" ? { open: !0, view: "popup_blocked", error: null } : r.kind === "purchase_success" ? { open: !0, view: "purchased", error: null } : r.kind === "verifying" ? { open: !0, view: "loading", error: null } : { open: !0, view: "layout", error: null } : { open: !1, view: null, error: null };
2138
2173
  }
2139
- function Je(e, t) {
2174
+ function Qe(e, t) {
2140
2175
  return e.open === t.open && e.view === t.view && e.error === t.error;
2141
2176
  }
2142
- function Qe({
2177
+ function tr({
2143
2178
  client: e,
2144
2179
  open: t,
2145
2180
  onClose: r,
2146
2181
  onEvent: a,
2147
- initialView: n,
2182
+ initialView: i,
2148
2183
  purchased: o,
2149
2184
  renew: s,
2150
2185
  onState: l,
2151
- inline: p
2186
+ inline: u,
2187
+ locale: h
2152
2188
  }) {
2153
- const [d, g] = b({ status: "idle" }), [h, x] = b(
2189
+ const [d, p] = b({ status: "idle" }), [x, _] = b(
2154
2190
  () => e.auth?.getCachedSession() ?? null
2155
- ), [u, m] = b(() => n === "support" ? { kind: "support", origin: "standalone" } : n === "auth" ? { kind: "auth_gate", origin: "standalone" } : n === "anon" ? { kind: "anon_gate", origin: "standalone" } : { kind: "layout" }), y = O(!1), B = O(null);
2191
+ ), [g, f] = b(() => i === "support" ? { kind: "support", origin: "standalone" } : i === "auth" ? { kind: "auth_gate", origin: "standalone" } : i === "anon" ? { kind: "anon_gate", origin: "standalone" } : { kind: "layout" }), M = F(!1), E = F(null);
2156
2192
  T(() => {
2157
2193
  if (!l) return;
2158
- const w = Xe(t, d, u, o), f = B.current;
2159
- f && Je(f, w) || (B.current = w, l(w));
2160
- }, [t, d, u, o, l]), T(() => {
2194
+ const w = Je(t, d, g, o), m = E.current;
2195
+ m && Qe(m, w) || (E.current = w, l(w));
2196
+ }, [t, d, g, o, l]), T(() => {
2161
2197
  if (e.auth)
2162
- return e.auth.onAuthChange((w, f) => x(f));
2198
+ return e.auth.onAuthChange((w, m) => _(m));
2163
2199
  }, [e.auth]), T(() => {
2164
2200
  if (typeof e.onBootstrapChange == "function")
2165
2201
  return e.onBootstrapChange((w) => {
2166
- g(
2167
- (f) => f.status === "ready" ? { status: "ready", data: w } : f
2202
+ p(
2203
+ (m) => m.status === "ready" ? { status: "ready", data: w } : m
2168
2204
  );
2169
2205
  });
2170
2206
  }, [e]), T(() => {
2171
2207
  if (!t || d.status === "ready" || d.status === "loading") return;
2172
2208
  let w = !1;
2173
- return g({ status: "loading" }), e.bootstrap().then((f) => {
2174
- w || (g({ status: "ready", data: f }), a("ready", f), f.user?.has_active_subscription && !s && (a("purchase_completed", {
2209
+ return p({ status: "loading" }), e.bootstrap().then((m) => {
2210
+ w || (p({ status: "ready", data: m }), a("ready", m), m.user?.has_active_subscription && !s && (a("purchase_completed", {
2175
2211
  priceId: null,
2176
2212
  sessionId: null,
2177
2213
  restored: !0
2178
- }), m({ kind: "purchase_success", restored: !0 })));
2179
- }).catch((f) => {
2214
+ }), f({ kind: "purchase_success", restored: !0 })));
2215
+ }).catch((m) => {
2180
2216
  if (w) return;
2181
- const _ = f instanceof R ? f : new R("unknown", "Failed to load paywall", { cause: f });
2182
- g({ status: "error", error: _ }), a("error", _);
2217
+ const k = m instanceof U ? m : new U("unknown", "Failed to load paywall", { cause: m });
2218
+ p({ status: "error", error: k }), a("error", k);
2183
2219
  }), () => {
2184
2220
  w = !0;
2185
2221
  };
2186
- }, [t, e]), Vt(() => {
2222
+ }, [t, e]), $t(() => {
2187
2223
  if (!t) {
2188
- m({ kind: "layout" }), y.current = !1;
2224
+ f({ kind: "layout" }), M.current = !1;
2189
2225
  return;
2190
2226
  }
2191
- n === "support" ? m({ kind: "support", origin: "standalone" }) : n === "auth" ? m({ kind: "auth_gate", origin: "standalone" }) : n === "anon" && m({ kind: "anon_gate", origin: "standalone" });
2192
- }, [t, n]);
2193
- const P = async (w) => {
2227
+ i === "support" ? f({ kind: "support", origin: "standalone" }) : i === "auth" ? f({ kind: "auth_gate", origin: "standalone" }) : i === "anon" && f({ kind: "anon_gate", origin: "standalone" });
2228
+ }, [t, i]);
2229
+ const y = async (w) => {
2194
2230
  try {
2195
- const f = await e.createCheckout({
2231
+ const m = await e.createCheckout({
2196
2232
  priceId: w,
2197
2233
  ignoreActivePurchase: s === !0
2198
2234
  });
2199
- if (a("checkout_started", { priceId: w, url: f.url, acquiring: f.acquiring }), typeof window > "u" || !f.url) return;
2200
- const _ = window.open(f.url, "_blank");
2201
- if (_) {
2235
+ if (a("checkout_started", { priceId: w, url: m.url, acquiring: m.acquiring }), typeof window > "u" || !m.url) return;
2236
+ const k = window.open(m.url, "_blank");
2237
+ if (k) {
2202
2238
  try {
2203
- _.opener = null;
2239
+ k.opener = null;
2204
2240
  } catch {
2205
2241
  }
2206
- m({ kind: "awaiting_payment", priceId: w, url: f.url });
2242
+ f({ kind: "awaiting_payment", priceId: w, url: m.url });
2207
2243
  } else
2208
- m({ kind: "popup_blocked", priceId: w, url: f.url });
2209
- } catch (f) {
2210
- if (f instanceof R && f.code === "already_purchased") {
2244
+ f({ kind: "popup_blocked", priceId: w, url: m.url });
2245
+ } catch (m) {
2246
+ if (m instanceof U && m.code === "already_purchased") {
2211
2247
  try {
2212
2248
  await e.getUser({ force: !0 });
2213
2249
  } catch {
2214
2250
  }
2215
- a("purchase_completed", { priceId: w, sessionId: null, restored: !0 }), m({ kind: "purchase_success", restored: !0 });
2251
+ a("purchase_completed", { priceId: w, sessionId: null, restored: !0 }), f({ kind: "purchase_success", restored: !0 });
2216
2252
  return;
2217
2253
  }
2218
- const _ = f instanceof R ? f : new R("checkout_failed", "Checkout failed", { cause: f });
2219
- a("error", _), m({ kind: "layout" });
2254
+ const k = m instanceof U ? m : new U("checkout_failed", "Checkout failed", { cause: m });
2255
+ a("error", k), f({ kind: "layout" });
2220
2256
  }
2221
- }, k = (w, f) => {
2257
+ }, L = (w, m) => {
2222
2258
  if (typeof window > "u") return;
2223
- const _ = window.open(f, "_blank");
2224
- if (_) {
2259
+ const k = window.open(m, "_blank");
2260
+ if (k) {
2225
2261
  try {
2226
- _.opener = null;
2262
+ k.opener = null;
2227
2263
  } catch {
2228
2264
  }
2229
- m({ kind: "awaiting_payment", priceId: w, url: f });
2265
+ f({ kind: "awaiting_payment", priceId: w, url: m });
2230
2266
  }
2231
2267
  };
2232
2268
  T(() => {
2233
- if (u.kind !== "auth_gate" || !h || h.user.is_anonymous || y.current) return;
2234
- y.current = !0;
2235
- const w = u.pendingCheckout, f = u.origin;
2236
- m({ kind: "verifying" }), (async () => {
2269
+ if (g.kind !== "auth_gate" || !x || x.user.is_anonymous || M.current) return;
2270
+ M.current = !0;
2271
+ const w = g.pendingCheckout, m = g.origin;
2272
+ f({ kind: "verifying" }), (async () => {
2237
2273
  if (!s)
2238
2274
  try {
2239
2275
  if ((await e.getUser({ force: !0 })).has_active_subscription) {
@@ -2241,54 +2277,54 @@ function Qe({
2241
2277
  priceId: w?.priceId ?? null,
2242
2278
  sessionId: null,
2243
2279
  restored: !0
2244
- }), m({ kind: "purchase_success", restored: !0 });
2280
+ }), f({ kind: "purchase_success", restored: !0 });
2245
2281
  return;
2246
2282
  }
2247
2283
  } catch {
2248
2284
  }
2249
2285
  if (!w) {
2250
- f === "standalone" ? r() : m({ kind: "layout" });
2286
+ m === "standalone" ? r() : f({ kind: "layout" });
2251
2287
  return;
2252
2288
  }
2253
- await P(w.priceId);
2289
+ await y(w.priceId);
2254
2290
  })().finally(() => {
2255
- y.current = !1;
2291
+ M.current = !1;
2256
2292
  });
2257
- }, [h, u]);
2258
- const A = async (w, f) => {
2293
+ }, [x, g]);
2294
+ const I = async (w, m) => {
2259
2295
  if (w === "close") {
2260
2296
  r();
2261
2297
  return;
2262
2298
  }
2263
2299
  if (w === "price_selected") {
2264
- a("price_selected", f);
2300
+ a("price_selected", m);
2265
2301
  return;
2266
2302
  }
2267
2303
  if (w === "restore") {
2268
2304
  if (!e.auth) return;
2269
- const _ = e.auth.getCachedSession();
2270
- if (_ && !_.user.is_anonymous) return;
2271
- m({ kind: "auth_gate", intent: "restore" });
2305
+ const k = e.auth.getCachedSession();
2306
+ if (k && !k.user.is_anonymous) return;
2307
+ f({ kind: "auth_gate", intent: "restore" });
2272
2308
  return;
2273
2309
  }
2274
2310
  if (w === "support") {
2275
- m({ kind: "support", origin: "layout" });
2311
+ f({ kind: "support", origin: "layout" });
2276
2312
  return;
2277
2313
  }
2278
2314
  if (w === "checkout" && d.status === "ready") {
2279
- const _ = f?.priceId;
2280
- if (!_) {
2281
- a("error", new R("no_price", "No price selected"));
2315
+ const k = m?.priceId;
2316
+ if (!k) {
2317
+ a("error", new U("no_price", "No price selected"));
2282
2318
  return;
2283
2319
  }
2284
- const W = d.data.settings.checkout_mode ?? "guest", S = e.auth?.getCachedSession() ?? null, L = !!S && !S.user.is_anonymous;
2285
- if (W === "preauth" && !!e.auth && !L) {
2286
- m({ kind: "auth_gate", pendingCheckout: { priceId: _ } });
2320
+ const S = d.data.settings.checkout_mode ?? "guest", P = e.auth?.getCachedSession() ?? null, V = !!P && !P.user.is_anonymous;
2321
+ if (S === "preauth" && !!e.auth && !V) {
2322
+ f({ kind: "auth_gate", pendingCheckout: { priceId: k } });
2287
2323
  return;
2288
2324
  }
2289
- await P(_);
2325
+ await y(k);
2290
2326
  }
2291
- }, C = d.status === "ready" ? d.data.settings.brand_color : null, j = d.status === "ready" ? d.data.settings.allow_close !== !1 : !0, E = u.kind === "layout" && d.status === "ready" ? Et(d.data.offers) : null, D = E ? /* @__PURE__ */ i(ve, { offer: E }) : null, F = {
2327
+ }, z = d.status === "ready" ? d.data.settings.brand_color : null, j = d.status === "ready" ? d.data.settings.allow_close !== !1 : !0, D = g.kind === "layout" && d.status === "ready" ? zt(d.data.offers) : null, R = D ? /* @__PURE__ */ n(ye, { offer: D }) : null, N = {
2292
2328
  type: "auth_panel",
2293
2329
  // Заголовок не задаём — AuthGate сам решит по intent'у (restore →
2294
2330
  // "Restore Purchases", остальные → дефолтный "Welcome back!").
@@ -2298,115 +2334,115 @@ function Qe({
2298
2334
  // чем хотим показывать "Signed in as ..." промежуточным экраном.
2299
2335
  hide_when_authenticated: !1,
2300
2336
  providers: d.status === "ready" ? d.data.settings.auth_providers : void 0
2301
- }, U = u.kind === "support" ? /* @__PURE__ */ i(
2302
- ke,
2337
+ }, A = g.kind === "support" ? /* @__PURE__ */ n(
2338
+ _e,
2303
2339
  {
2304
2340
  client: e,
2305
- authSession: h,
2306
- origin: u.origin,
2341
+ authSession: x,
2342
+ origin: g.origin,
2307
2343
  onBack: () => {
2308
- u.origin === "standalone" ? r() : m({ kind: "layout" });
2344
+ g.origin === "standalone" ? r() : f({ kind: "layout" });
2309
2345
  }
2310
2346
  }
2311
- ) : null, M = u.kind === "auth_gate" && u.origin !== "standalone" || u.kind === "support", I = d.status === "ready" ? d.data : null;
2312
- return /* @__PURE__ */ i(Qt, { bootstrap: I, children: /* @__PURE__ */ i(
2313
- te,
2347
+ ) : null, C = g.kind === "auth_gate" && g.origin !== "standalone" || g.kind === "support", B = d.status === "ready" ? d.data : null;
2348
+ return /* @__PURE__ */ n(te, { bootstrap: B, forceLocale: h, children: /* @__PURE__ */ n(
2349
+ ee,
2314
2350
  {
2315
2351
  open: t,
2316
2352
  onClose: r,
2317
- brandColor: C,
2318
- topBanner: D,
2353
+ brandColor: z,
2354
+ topBanner: R,
2319
2355
  allowClose: j,
2320
- hideCloseButton: M,
2321
- inline: p,
2356
+ hideCloseButton: C,
2357
+ inline: u,
2322
2358
  labelledBy: "pw-title",
2323
- children: o ? /* @__PURE__ */ i(kt, { onContinue: r }) : u.kind === "purchase_success" ? /* @__PURE__ */ i(kt, { restored: u.restored, onContinue: r }) : U || (d.status === "loading" || d.status === "idle" || u.kind === "verifying" ? /* @__PURE__ */ i(tr, { verifying: u.kind === "verifying" }) : d.status === "error" ? /* @__PURE__ */ i(er, { message: d.error.message }) : u.kind === "auth_gate" && e.auth ? /* @__PURE__ */ i(
2324
- ge,
2359
+ children: o ? /* @__PURE__ */ n(_t, { onContinue: r }) : g.kind === "purchase_success" ? /* @__PURE__ */ n(_t, { restored: g.restored, onContinue: r }) : A || (d.status === "loading" || d.status === "idle" || g.kind === "verifying" ? /* @__PURE__ */ n(er, { verifying: g.kind === "verifying" }) : d.status === "error" ? /* @__PURE__ */ n(rr, { message: d.error.message }) : g.kind === "auth_gate" && e.auth ? /* @__PURE__ */ n(
2360
+ fe,
2325
2361
  {
2326
- block: F,
2362
+ block: N,
2327
2363
  bootstrap: d.data,
2328
2364
  auth: e.auth,
2329
- authSession: h,
2330
- showBack: u.origin !== "standalone",
2331
- intent: u.intent ?? (u.origin === "standalone" ? "standalone" : "preauth"),
2365
+ authSession: x,
2366
+ showBack: g.origin !== "standalone",
2367
+ intent: g.intent ?? (g.origin === "standalone" ? "standalone" : "preauth"),
2332
2368
  onBack: () => {
2333
- u.origin === "standalone" ? r() : m({ kind: "layout" });
2369
+ g.origin === "standalone" ? r() : f({ kind: "layout" });
2334
2370
  }
2335
2371
  }
2336
- ) : u.kind === "anon_gate" && e.auth ? /* @__PURE__ */ i(
2337
- we,
2372
+ ) : g.kind === "anon_gate" && e.auth ? /* @__PURE__ */ n(
2373
+ me,
2338
2374
  {
2339
2375
  auth: e.auth,
2340
2376
  onSuccess: () => {
2341
- u.origin === "standalone" ? r() : m({ kind: "layout" });
2377
+ g.origin === "standalone" ? r() : f({ kind: "layout" });
2342
2378
  },
2343
- onBack: u.origin === "standalone" ? void 0 : () => m({ kind: "layout" })
2379
+ onBack: g.origin === "standalone" ? void 0 : () => f({ kind: "layout" })
2344
2380
  }
2345
- ) : u.kind === "awaiting_payment" ? /* @__PURE__ */ i(
2346
- ir,
2381
+ ) : g.kind === "awaiting_payment" ? /* @__PURE__ */ n(
2382
+ nr,
2347
2383
  {
2348
2384
  client: e,
2349
- onBack: () => m({ kind: "layout" }),
2385
+ onBack: () => f({ kind: "layout" }),
2350
2386
  onReopen: () => {
2351
2387
  if (typeof window > "u") return;
2352
- const w = window.open(u.url, "_blank");
2388
+ const w = window.open(g.url, "_blank");
2353
2389
  if (w)
2354
2390
  try {
2355
2391
  w.opener = null;
2356
2392
  } catch {
2357
2393
  }
2358
2394
  },
2359
- onRetry: () => P(u.priceId)
2395
+ onRetry: () => y(g.priceId)
2360
2396
  }
2361
- ) : u.kind === "popup_blocked" ? /* @__PURE__ */ i(rr, { onReopen: () => k(u.priceId, u.url) }) : /* @__PURE__ */ i(
2362
- Ye,
2397
+ ) : g.kind === "popup_blocked" ? /* @__PURE__ */ n(ir, { onReopen: () => L(g.priceId, g.url) }) : /* @__PURE__ */ n(
2398
+ Xe,
2363
2399
  {
2364
2400
  layout: d.data.layout,
2365
2401
  bootstrap: d.data,
2366
- onAction: A,
2402
+ onAction: I,
2367
2403
  auth: e.auth,
2368
- authSession: h
2404
+ authSession: x
2369
2405
  }
2370
2406
  ))
2371
2407
  }
2372
2408
  ) });
2373
2409
  }
2374
- function tr({ verifying: e }) {
2410
+ function er({ verifying: e }) {
2375
2411
  const { t } = v();
2376
2412
  return /* @__PURE__ */ c("div", { class: "flex flex-col items-center justify-center gap-3 py-12", children: [
2377
- /* @__PURE__ */ i("span", { class: "inline-block h-7 w-7 animate-spin rounded-full border-[2.5px] border-gray-200 border-t-[var(--pw-accent)]" }),
2378
- /* @__PURE__ */ i("span", { class: "text-xs font-medium tracking-wide text-gray-500", children: e ? t("modal.verifying_subscription", "Checking your subscription…") : t("modal.loading", "Loading…") })
2413
+ /* @__PURE__ */ n("span", { class: "inline-block h-7 w-7 animate-spin rounded-full border-[2.5px] border-gray-200 border-t-[var(--pw-accent)]" }),
2414
+ /* @__PURE__ */ n("span", { class: "text-xs font-medium tracking-wide text-gray-500", children: e ? t("modal.verifying_subscription", "Checking your subscription…") : t("modal.loading", "Loading…") })
2379
2415
  ] });
2380
2416
  }
2381
- function er({ message: e }) {
2417
+ function rr({ message: e }) {
2382
2418
  const { t } = v();
2383
2419
  return /* @__PURE__ */ c("div", { class: "flex flex-col items-center gap-2 py-8 text-center", children: [
2384
- /* @__PURE__ */ i("div", { class: "flex h-11 w-11 items-center justify-center rounded-full bg-red-50", children: /* @__PURE__ */ c("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [
2385
- /* @__PURE__ */ i("path", { d: "M10 6v5M10 14h.01", stroke: "#dc2626", "stroke-width": "2", "stroke-linecap": "round" }),
2386
- /* @__PURE__ */ i("circle", { cx: "10", cy: "10", r: "8", stroke: "#dc2626", "stroke-width": "1.75" })
2420
+ /* @__PURE__ */ n("div", { class: "flex h-11 w-11 items-center justify-center rounded-full bg-red-50", children: /* @__PURE__ */ c("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [
2421
+ /* @__PURE__ */ n("path", { d: "M10 6v5M10 14h.01", stroke: "#dc2626", "stroke-width": "2", "stroke-linecap": "round" }),
2422
+ /* @__PURE__ */ n("circle", { cx: "10", cy: "10", r: "8", stroke: "#dc2626", "stroke-width": "1.75" })
2387
2423
  ] }) }),
2388
- /* @__PURE__ */ i("p", { class: "text-sm font-semibold tracking-tight text-gray-900", children: t("modal.error_generic", "Something went wrong") }),
2389
- /* @__PURE__ */ i("p", { class: "text-xs leading-relaxed text-gray-500", children: e })
2424
+ /* @__PURE__ */ n("p", { class: "text-sm font-semibold tracking-tight text-gray-900", children: t("modal.error_generic", "Something went wrong") }),
2425
+ /* @__PURE__ */ n("p", { class: "text-xs leading-relaxed text-gray-500", children: e })
2390
2426
  ] });
2391
2427
  }
2392
- function rr({ onReopen: e }) {
2428
+ function ir({ onReopen: e }) {
2393
2429
  const { t } = v();
2394
2430
  return /* @__PURE__ */ c("div", { class: "flex flex-col items-center gap-3 py-8 text-center", children: [
2395
- /* @__PURE__ */ i(
2431
+ /* @__PURE__ */ n(
2396
2432
  "div",
2397
2433
  {
2398
2434
  class: "flex h-11 w-11 items-center justify-center rounded-full",
2399
2435
  style: { background: "color-mix(in srgb, var(--pw-accent) 12%, white)", color: "var(--pw-accent)" },
2400
2436
  "aria-hidden": "true",
2401
2437
  children: /* @__PURE__ */ c("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", children: [
2402
- /* @__PURE__ */ i("path", { d: "M4 5h12v10H4z", stroke: "currentColor", "stroke-width": "1.75", "stroke-linejoin": "round" }),
2403
- /* @__PURE__ */ i("path", { d: "M7 9l3 3 4-5", stroke: "currentColor", "stroke-width": "1.75", "stroke-linecap": "round", "stroke-linejoin": "round" })
2438
+ /* @__PURE__ */ n("path", { d: "M4 5h12v10H4z", stroke: "currentColor", "stroke-width": "1.75", "stroke-linejoin": "round" }),
2439
+ /* @__PURE__ */ n("path", { d: "M7 9l3 3 4-5", stroke: "currentColor", "stroke-width": "1.75", "stroke-linecap": "round", "stroke-linejoin": "round" })
2404
2440
  ] })
2405
2441
  }
2406
2442
  ),
2407
- /* @__PURE__ */ i("p", { class: "text-sm font-semibold tracking-tight text-gray-900", children: t("payment.popup_blocked_title", "Allow popups to continue") }),
2408
- /* @__PURE__ */ i("p", { class: "max-w-[18rem] text-xs leading-relaxed text-gray-500", children: t("payment.popup_blocked_message", "Your browser blocked the checkout tab. Click below to open it.") }),
2409
- /* @__PURE__ */ i(
2443
+ /* @__PURE__ */ n("p", { class: "text-sm font-semibold tracking-tight text-gray-900", children: t("payment.popup_blocked_title", "Allow popups to continue") }),
2444
+ /* @__PURE__ */ n("p", { class: "max-w-[18rem] text-xs leading-relaxed text-gray-500", children: t("payment.popup_blocked_message", "Your browser blocked the checkout tab. Click below to open it.") }),
2445
+ /* @__PURE__ */ n(
2410
2446
  "button",
2411
2447
  {
2412
2448
  type: "button",
@@ -2421,47 +2457,47 @@ function rr({ onReopen: e }) {
2421
2457
  )
2422
2458
  ] });
2423
2459
  }
2424
- function ir({
2460
+ function nr({
2425
2461
  client: e,
2426
2462
  onBack: t,
2427
2463
  onReopen: r,
2428
2464
  onRetry: a
2429
2465
  }) {
2430
- const { t: n } = v(), [o, s] = b(!1), [l, p] = b(!1), d = O(null);
2466
+ const { t: i } = v(), [o, s] = b(!1), [l, u] = b(!1), h = F(null);
2431
2467
  T(() => () => {
2432
- d.current !== null && clearTimeout(d.current);
2468
+ h.current !== null && clearTimeout(h.current);
2433
2469
  }, []);
2434
- const g = async () => {
2470
+ const d = async () => {
2435
2471
  if (!o) {
2436
- s(!0), p(!1);
2472
+ s(!0), u(!1);
2437
2473
  try {
2438
2474
  if ((await e.getUser({ force: !0 })).has_active_subscription) {
2439
2475
  typeof window < "u" && window.postMessage({ type: "paywall_purchase" }, "*");
2440
2476
  return;
2441
2477
  }
2442
- p(!0), d.current !== null && clearTimeout(d.current), d.current = setTimeout(() => {
2443
- p(!1), d.current = null;
2478
+ u(!0), h.current !== null && clearTimeout(h.current), h.current = setTimeout(() => {
2479
+ u(!1), h.current = null;
2444
2480
  }, 5e3);
2445
2481
  } catch {
2446
- p(!0);
2482
+ u(!0);
2447
2483
  } finally {
2448
2484
  s(!1);
2449
2485
  }
2450
2486
  }
2451
2487
  };
2452
2488
  return /* @__PURE__ */ c("div", { class: "flex flex-col gap-3", children: [
2453
- /* @__PURE__ */ i(
2489
+ /* @__PURE__ */ n(
2454
2490
  "button",
2455
2491
  {
2456
2492
  type: "button",
2457
2493
  onClick: t,
2458
2494
  class: "-ml-1 self-start rounded-md px-1.5 py-0.5 text-xs font-medium text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--pw-accent)]",
2459
- children: n("nav.back", "← Back")
2495
+ children: i("nav.back", "← Back")
2460
2496
  }
2461
2497
  ),
2462
2498
  /* @__PURE__ */ c("div", { class: "flex flex-col items-center gap-3 py-6 text-center", children: [
2463
2499
  /* @__PURE__ */ c("div", { class: "relative flex h-12 w-12 items-center justify-center", children: [
2464
- /* @__PURE__ */ i(
2500
+ /* @__PURE__ */ n(
2465
2501
  "span",
2466
2502
  {
2467
2503
  class: "absolute inset-0 animate-ping rounded-full opacity-40",
@@ -2469,59 +2505,59 @@ function ir({
2469
2505
  "aria-hidden": "true"
2470
2506
  }
2471
2507
  ),
2472
- /* @__PURE__ */ i("span", { class: "relative inline-block h-7 w-7 animate-spin rounded-full border-[2.5px] border-gray-200 border-t-[var(--pw-accent)]" })
2508
+ /* @__PURE__ */ n("span", { class: "relative inline-block h-7 w-7 animate-spin rounded-full border-[2.5px] border-gray-200 border-t-[var(--pw-accent)]" })
2473
2509
  ] }),
2474
- /* @__PURE__ */ i("p", { class: "text-sm font-semibold tracking-tight text-gray-900", children: n("payment.awaiting_title", "Complete payment in the new tab") }),
2475
- /* @__PURE__ */ i("p", { class: "max-w-[20rem] text-xs leading-relaxed text-gray-500", children: n(
2510
+ /* @__PURE__ */ n("p", { class: "text-sm font-semibold tracking-tight text-gray-900", children: i("payment.awaiting_title", "Complete payment in the new tab") }),
2511
+ /* @__PURE__ */ n("p", { class: "max-w-[20rem] text-xs leading-relaxed text-gray-500", children: i(
2476
2512
  "payment.awaiting_subtitle",
2477
2513
  "We'll detect your payment automatically — or click below once you're done."
2478
2514
  ) }),
2479
- /* @__PURE__ */ i(
2515
+ /* @__PURE__ */ n(
2480
2516
  "button",
2481
2517
  {
2482
2518
  type: "button",
2483
- onClick: g,
2519
+ onClick: d,
2484
2520
  disabled: o,
2485
2521
  class: "mt-1 rounded-xl px-5 py-2.5 text-sm font-semibold text-white transition-all hover:-translate-y-px hover:brightness-105 disabled:cursor-not-allowed disabled:opacity-60 disabled:hover:translate-y-0 disabled:hover:brightness-100 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--pw-accent)]",
2486
2522
  style: {
2487
2523
  background: "linear-gradient(180deg, color-mix(in srgb, var(--pw-accent) 92%, white), var(--pw-accent))",
2488
2524
  boxShadow: "0 1px 2px rgba(15,23,42,0.08), 0 6px 14px -4px color-mix(in srgb, var(--pw-accent) 50%, transparent)"
2489
2525
  },
2490
- children: o ? n("payment.checking", "Checking…") : n("payment.ive_paid", "I've paid")
2526
+ children: o ? i("payment.checking", "Checking…") : i("payment.ive_paid", "I've paid")
2491
2527
  }
2492
2528
  ),
2493
- l ? /* @__PURE__ */ i("p", { class: "text-xs leading-relaxed text-gray-500", children: n("payment.still_processing", "Payment is still being processed. Please try again in a moment.") }) : null
2529
+ l ? /* @__PURE__ */ n("p", { class: "text-xs leading-relaxed text-gray-500", children: i("payment.still_processing", "Payment is still being processed. Please try again in a moment.") }) : null
2494
2530
  ] }),
2495
2531
  /* @__PURE__ */ c("div", { class: "rounded-2xl border border-gray-200 bg-gray-50/60 p-3.5", children: [
2496
- /* @__PURE__ */ i("p", { class: "text-xs leading-relaxed text-gray-600", children: n("payment.popup_help_text", "Checkout window didn't open or got blocked? Click here to open it again.") }),
2497
- /* @__PURE__ */ i(
2532
+ /* @__PURE__ */ n("p", { class: "text-xs leading-relaxed text-gray-600", children: i("payment.popup_help_text", "Checkout window didn't open or got blocked? Click here to open it again.") }),
2533
+ /* @__PURE__ */ n(
2498
2534
  "button",
2499
2535
  {
2500
2536
  type: "button",
2501
2537
  onClick: r,
2502
2538
  class: "mt-2.5 w-full rounded-xl border border-gray-200 bg-white px-3 py-2 text-xs font-semibold text-gray-700 transition-colors hover:border-gray-300 hover:bg-gray-50 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--pw-accent)]",
2503
- children: n("payment.open_checkout_again", "Open checkout again")
2539
+ children: i("payment.open_checkout_again", "Open checkout again")
2504
2540
  }
2505
2541
  )
2506
2542
  ] }),
2507
- /* @__PURE__ */ i(
2543
+ /* @__PURE__ */ n(
2508
2544
  "button",
2509
2545
  {
2510
2546
  type: "button",
2511
2547
  onClick: a,
2512
2548
  class: "self-center rounded-md px-2 py-1 text-xs text-gray-500 underline-offset-2 hover:text-gray-900 hover:underline focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--pw-accent)]",
2513
- children: n("payment.tab_closed_retry", "Tab closed? Try again")
2549
+ children: i("payment.tab_closed_retry", "Tab closed? Try again")
2514
2550
  }
2515
2551
  )
2516
2552
  ] });
2517
2553
  }
2518
- function kt({
2554
+ function _t({
2519
2555
  onContinue: e,
2520
2556
  restored: t = !1
2521
2557
  }) {
2522
2558
  const { t: r } = v();
2523
2559
  return /* @__PURE__ */ c("div", { class: "flex flex-col items-center gap-3 py-8 text-center", children: [
2524
- /* @__PURE__ */ i(
2560
+ /* @__PURE__ */ n(
2525
2561
  "div",
2526
2562
  {
2527
2563
  class: "flex h-14 w-14 items-center justify-center rounded-full ring-8",
@@ -2532,7 +2568,7 @@ function kt({
2532
2568
  boxShadow: "0 0 0 8px rgba(74,222,128,0.12), 0 8px 20px -6px rgba(22,163,74,0.45)"
2533
2569
  },
2534
2570
  "aria-hidden": "true",
2535
- children: /* @__PURE__ */ i("svg", { width: "28", height: "28", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ i(
2571
+ children: /* @__PURE__ */ n("svg", { width: "28", height: "28", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ n(
2536
2572
  "path",
2537
2573
  {
2538
2574
  d: "M5 13l4 4L19 7",
@@ -2544,12 +2580,12 @@ function kt({
2544
2580
  ) })
2545
2581
  }
2546
2582
  ),
2547
- /* @__PURE__ */ i("p", { id: "pw-title", class: "mt-1 text-lg font-semibold tracking-tight text-gray-900", children: t ? r("modal.purchase_restored_title", "Subscription restored") : r("modal.purchase_success_title", "Payment received") }),
2548
- /* @__PURE__ */ i("p", { class: "text-sm leading-relaxed text-gray-500", children: t ? r(
2583
+ /* @__PURE__ */ n("p", { id: "pw-title", class: "mt-1 text-lg font-semibold tracking-tight text-gray-900", children: t ? r("modal.purchase_restored_title", "Subscription restored") : r("modal.purchase_success_title", "Payment received") }),
2584
+ /* @__PURE__ */ n("p", { class: "text-sm leading-relaxed text-gray-500", children: t ? r(
2549
2585
  "modal.purchase_restored_subtitle",
2550
2586
  "Welcome back — your subscription is already active."
2551
2587
  ) : r("modal.purchase_success_subtitle", "Your subscription is now active.") }),
2552
- /* @__PURE__ */ i(
2588
+ /* @__PURE__ */ n(
2553
2589
  "button",
2554
2590
  {
2555
2591
  type: "button",
@@ -2564,17 +2600,17 @@ function kt({
2564
2600
  )
2565
2601
  ] });
2566
2602
  }
2567
- const nr = 10 * 6e4, ar = 5e3, or = 3e4;
2568
- class sr {
2603
+ const ar = 10 * 6e4, or = 5e3, sr = 3e4;
2604
+ class lr {
2569
2605
  constructor(t) {
2570
2606
  this.timer = null, this.timeoutTimer = null, this.visibilityHandler = null, this.focusHandler = null, this.messageHandler = null, this.stopped = !1, this.checking = !1, this.opts = {
2571
2607
  client: t.client,
2572
2608
  onActive: t.onActive,
2573
2609
  onTimeout: t.onTimeout ?? (() => {
2574
2610
  }),
2575
- timeoutMs: t.timeoutMs ?? nr,
2576
- visibleIntervalMs: t.visibleIntervalMs ?? ar,
2577
- hiddenIntervalMs: t.hiddenIntervalMs ?? or
2611
+ timeoutMs: t.timeoutMs ?? ar,
2612
+ visibleIntervalMs: t.visibleIntervalMs ?? or,
2613
+ hiddenIntervalMs: t.hiddenIntervalMs ?? sr
2578
2614
  };
2579
2615
  }
2580
2616
  start() {
@@ -2613,22 +2649,22 @@ class sr {
2613
2649
  !r || typeof r != "object" || r.type === "paywall_purchase" && this.check();
2614
2650
  }
2615
2651
  }
2616
- function lr() {
2652
+ function cr() {
2617
2653
  return !(typeof document > "u" || typeof window > "u" || typeof location < "u" && location.protocol === "chrome-extension:");
2618
2654
  }
2619
- const st = { open: !1, view: null, error: null }, N = {
2655
+ const st = { open: !1, view: null, error: null }, H = {
2620
2656
  status: "paywall_status",
2621
2657
  priceId: "paywall_price_id",
2622
2658
  sessionId: "paywall_session_id"
2623
2659
  };
2624
- class xr {
2660
+ class yr {
2625
2661
  constructor(t) {
2626
2662
  this.handle = null, this.isOpen = !1, this.listeners = /* @__PURE__ */ new Map(), this.userUnsub = null, this.authUnsub = null, this.watcher = null, this.tracker = null, this.purchased = !1, this.trialStore = null, this.trialStoreConfig = null, this.lastTrialStatus = null, this.trialExpiredFired = !1, this.lastVisibility = null, this.currentState = st, this.stateListeners = /* @__PURE__ */ new Set();
2627
- const { auth: r, ownsAuth: a } = cr(t);
2628
- this.auth = r, this.ownsAuth = a, this.billing = t.client ?? new Rt({ ...t, auth: this.auth }), this.host = t.host, this.shadowMode = t.shadowMode ?? "closed", this.mountThenLoad = t.mountThenLoad ?? !0, this.inline = t.inline === !0, this.userUnsub = this.billing.onUserChange((n) => {
2629
- this.emit("userChange", n);
2630
- }), this.auth && (this.authUnsub = this.auth.onAuthChange((n, o) => {
2631
- this.emit("authChange", { event: n, session: o });
2663
+ const { auth: r, ownsAuth: a } = dr(t);
2664
+ this.auth = r, this.ownsAuth = a, this.billing = t.client ?? new Dt({ ...t, auth: this.auth }), this.host = t.host, this.shadowMode = t.shadowMode ?? "closed", this.mountThenLoad = t.mountThenLoad ?? !0, this.inline = t.inline === !0, this.forceLocale = t.locale ?? null, this.userUnsub = this.billing.onUserChange((i) => {
2665
+ this.emit("userChange", i);
2666
+ }), this.auth && (this.authUnsub = this.auth.onAuthChange((i, o) => {
2667
+ this.emit("authChange", { event: i, session: o });
2632
2668
  })), this.initTracker(t.analytics), t.autoDetectReturn !== !1 && typeof window < "u" && queueMicrotask(() => this.checkReturn());
2633
2669
  }
2634
2670
  initTracker(t) {
@@ -2636,7 +2672,7 @@ class xr {
2636
2672
  const r = typeof t == "object" && t !== null ? t : {};
2637
2673
  if (r.enabled === !1) return;
2638
2674
  const a = r.endpoint ?? `${this.billing.apiOrigin}/api/v1/paywall/${this.billing.paywallId}/events`;
2639
- this.tracker = new Ut({
2675
+ this.tracker = new Nt({
2640
2676
  endpoint: a,
2641
2677
  paywallId: this.billing.paywallId,
2642
2678
  capabilities: this.billing.capabilities,
@@ -2649,45 +2685,45 @@ class xr {
2649
2685
  sendBeacon: r.sendBeacon
2650
2686
  }), this.on("open", () => this.tracker?.track("paywall_opened")), this.on(
2651
2687
  "ready",
2652
- (n) => this.tracker?.track("paywall_viewed", {
2653
- is_test_mode: n.settings.is_test_mode,
2654
- prices_count: n.prices.length,
2655
- offers_count: n.offers.length
2688
+ (i) => this.tracker?.track("paywall_viewed", {
2689
+ is_test_mode: i.settings.is_test_mode,
2690
+ prices_count: i.prices.length,
2691
+ offers_count: i.offers.length
2656
2692
  })
2657
2693
  ), this.on(
2658
2694
  "price_selected",
2659
- (n) => this.tracker?.track("price_selected", { price_id: n.priceId })
2695
+ (i) => this.tracker?.track("price_selected", { price_id: i.priceId })
2660
2696
  ), this.on(
2661
2697
  "checkout_started",
2662
- (n) => this.tracker?.track("checkout_started", {
2663
- price_id: n.priceId,
2664
- acquiring: n.acquiring
2698
+ (i) => this.tracker?.track("checkout_started", {
2699
+ price_id: i.priceId,
2700
+ acquiring: i.acquiring
2665
2701
  })
2666
2702
  ), this.on(
2667
2703
  "purchase_completed",
2668
- (n) => this.tracker?.track("purchase_completed", {
2669
- price_id: n.priceId,
2670
- session_id: n.sessionId
2704
+ (i) => this.tracker?.track("purchase_completed", {
2705
+ price_id: i.priceId,
2706
+ session_id: i.sessionId
2671
2707
  })
2672
2708
  ), this.on(
2673
2709
  "purchase_failed",
2674
- (n) => this.tracker?.track("purchase_failed", { reason: n.reason })
2710
+ (i) => this.tracker?.track("purchase_failed", { reason: i.reason })
2675
2711
  ), this.on("close", () => this.tracker?.track("paywall_closed")), this.on(
2676
2712
  "trial_blocked",
2677
- (n) => this.tracker?.track("trial_blocked", {
2678
- mode: n.mode,
2679
- ...n.mode === "time" ? { remaining_ms: n.remainingMs, total_ms: n.totalMs } : n.mode === "opens" ? { remaining_actions: n.remainingActions, total_actions: n.totalActions } : {}
2713
+ (i) => this.tracker?.track("trial_blocked", {
2714
+ mode: i.mode,
2715
+ ...i.mode === "time" ? { remaining_ms: i.remainingMs, total_ms: i.totalMs } : i.mode === "opens" ? { remaining_actions: i.remainingActions, total_actions: i.totalActions } : {}
2680
2716
  })
2681
2717
  ), this.on("trial_expired", () => this.tracker?.track("trial_expired")), this.on(
2682
2718
  "visibility_blocked",
2683
- (n) => this.tracker?.track("visibility_blocked", {
2684
- reason: n.reason,
2685
- country: n.country,
2686
- tier: n.tier
2719
+ (i) => this.tracker?.track("visibility_blocked", {
2720
+ reason: i.reason,
2721
+ country: i.country,
2722
+ tier: i.tier
2687
2723
  })
2688
2724
  ), this.on(
2689
2725
  "error",
2690
- (n) => this.tracker?.track("error", { code: n.code, message: n.message })
2726
+ (i) => this.tracker?.track("error", { code: i.code, message: i.message })
2691
2727
  );
2692
2728
  }
2693
2729
  /**
@@ -2723,6 +2759,18 @@ class xr {
2723
2759
  setBootstrap(t) {
2724
2760
  this.billing.setBootstrap(t);
2725
2761
  }
2762
+ /**
2763
+ * Сменить force-locale на лету — для live-preview редактора админки, когда
2764
+ * юзер переключает «Preview as user from <country>». Грузит соответствующий
2765
+ * static-чанк и форсит re-render через handle.update. См. PaywallUIOptions.locale.
2766
+ *
2767
+ * Передай `null`/`undefined`, чтобы вернуть автоматическую резолв-логику
2768
+ * (navigator.language → locale_default).
2769
+ */
2770
+ setLocale(t) {
2771
+ const r = t ?? null;
2772
+ r !== this.forceLocale && (this.forceLocale = r, this.handle && this.handle.update({ locale: r }));
2773
+ }
2726
2774
  on(t, r) {
2727
2775
  let a = this.listeners.get(t);
2728
2776
  return a || (a = /* @__PURE__ */ new Set(), this.listeners.set(t, a)), a.add(r), () => a.delete(r);
@@ -2733,10 +2781,10 @@ class xr {
2733
2781
  emit(t, ...r) {
2734
2782
  const a = this.listeners.get(t);
2735
2783
  if (!a) return;
2736
- const n = r[0];
2784
+ const i = r[0];
2737
2785
  for (const o of a)
2738
2786
  try {
2739
- o(n);
2787
+ o(i);
2740
2788
  } catch (s) {
2741
2789
  typeof console < "u" && console.error("[paywall] listener error", s);
2742
2790
  }
@@ -2812,22 +2860,22 @@ class xr {
2812
2860
  }
2813
2861
  openInternal(t, r) {
2814
2862
  r.identity && this.billing.setIdentity(r.identity), this.purchased = !1;
2815
- const a = r.skipTrial === !0 || t === "support", n = r.skipVisibility === !0 || t === "support" || t === "auth" || t === "anon", o = r.renew === !0;
2816
- if (a && n) {
2863
+ const a = r.skipTrial === !0 || t === "support", i = r.skipVisibility === !0 || t === "support" || t === "auth" || t === "anon", o = r.renew === !0;
2864
+ if (a && i) {
2817
2865
  this.mountAndShow(t, { renew: o });
2818
2866
  return;
2819
2867
  }
2820
2868
  const s = this.billing.getCachedBootstrap();
2821
2869
  if (s) {
2822
- this.runOpenGates(t, s, { skipTrial: a, skipVisibility: n, renew: o });
2870
+ this.runOpenGates(t, s, { skipTrial: a, skipVisibility: i, renew: o });
2823
2871
  return;
2824
2872
  }
2825
2873
  if (this.mountThenLoad) {
2826
- this.mountAndShow(t, { renew: o }), this.billing.bootstrap().then((l) => this.runDelayedGates(l, { skipTrial: a, skipVisibility: n })).catch(() => {
2874
+ this.mountAndShow(t, { renew: o }), this.billing.bootstrap().then((l) => this.runDelayedGates(l, { skipTrial: a, skipVisibility: i })).catch(() => {
2827
2875
  });
2828
2876
  return;
2829
2877
  }
2830
- this.billing.bootstrap().then((l) => this.runOpenGates(t, l, { skipTrial: a, skipVisibility: n, renew: o })).catch(() => {
2878
+ this.billing.bootstrap().then((l) => this.runOpenGates(t, l, { skipTrial: a, skipVisibility: i, renew: o })).catch(() => {
2831
2879
  this.mountAndShow(t, { renew: o });
2832
2880
  });
2833
2881
  }
@@ -2846,11 +2894,11 @@ class xr {
2846
2894
  if (r.skipTrial) return;
2847
2895
  const a = t.settings.trial;
2848
2896
  if (!a) return;
2849
- const n = this.ensureTrialStore(a);
2850
- n.check().then(async (o) => {
2897
+ const i = this.ensureTrialStore(a);
2898
+ i.check().then(async (o) => {
2851
2899
  if (this.isOpen && (this.lastTrialStatus = o, o.mode !== "none")) {
2852
2900
  if (o.blocked) {
2853
- const s = await n.recordBlock();
2901
+ const s = await i.recordBlock();
2854
2902
  if (this.lastTrialStatus = s, !this.isOpen) return;
2855
2903
  this.close(), this.emit("trial_blocked", s);
2856
2904
  return;
@@ -2867,9 +2915,9 @@ class xr {
2867
2915
  // правильную страну он окажется со «слипшимся» триал-счётчиком.
2868
2916
  runOpenGates(t, r, a) {
2869
2917
  if (!a.skipVisibility) {
2870
- const n = r.settings.visibility;
2871
- if (n && (this.lastVisibility = n, !n.visible)) {
2872
- this.emit("visibility_blocked", n);
2918
+ const i = r.settings.visibility;
2919
+ if (i && (this.lastVisibility = i, !i.visible)) {
2920
+ this.emit("visibility_blocked", i);
2873
2921
  return;
2874
2922
  }
2875
2923
  }
@@ -2880,12 +2928,12 @@ class xr {
2880
2928
  this.gateThroughTrial(t, r, a.renew);
2881
2929
  }
2882
2930
  gateThroughTrial(t, r, a) {
2883
- const n = r.settings.trial;
2884
- if (!n) {
2931
+ const i = r.settings.trial;
2932
+ if (!i) {
2885
2933
  this.mountAndShow(t, { renew: a });
2886
2934
  return;
2887
2935
  }
2888
- const o = this.ensureTrialStore(n);
2936
+ const o = this.ensureTrialStore(i);
2889
2937
  o.check().then(async (s) => {
2890
2938
  if (this.lastTrialStatus = s, s.mode === "none") {
2891
2939
  this.mountAndShow(t, { renew: a });
@@ -2902,11 +2950,11 @@ class xr {
2902
2950
  });
2903
2951
  }
2904
2952
  ensureTrialStore(t) {
2905
- if (this.trialStore && this.trialStoreConfig && pr(this.trialStoreConfig, t))
2953
+ if (this.trialStore && this.trialStoreConfig && hr(this.trialStoreConfig, t))
2906
2954
  return this.trialStore;
2907
2955
  this.trialStoreConfig = t;
2908
2956
  const r = this.billing.createTrialStore;
2909
- return this.trialStore = typeof r == "function" ? r.call(this.billing, t) : Ht(this.billing.getStorage(), this.billing.paywallId, t), this.trialStore;
2957
+ return this.trialStore = typeof r == "function" ? r.call(this.billing, t) : qt(this.billing.getStorage(), this.billing.paywallId, t), this.trialStore;
2910
2958
  }
2911
2959
  mountAndShow(t, r = {}) {
2912
2960
  const a = r.renew === !0;
@@ -2914,8 +2962,8 @@ class xr {
2914
2962
  this.isOpen = !0, this.handle.update({ open: !0, initialView: t, purchased: !1, renew: a }), this.emit("open");
2915
2963
  return;
2916
2964
  }
2917
- this.isOpen = !0, this.handle = qt(
2918
- Qe,
2965
+ this.isOpen = !0, this.handle = Zt(
2966
+ tr,
2919
2967
  {
2920
2968
  client: this.billing,
2921
2969
  open: !0,
@@ -2923,17 +2971,18 @@ class xr {
2923
2971
  purchased: !1,
2924
2972
  renew: a,
2925
2973
  onClose: () => this.close(),
2926
- onEvent: (n, o) => {
2927
- this.emit(n, o), n === "checkout_started" && this.startUserWatcher();
2974
+ onEvent: (i, o) => {
2975
+ this.emit(i, o), i === "checkout_started" && this.startUserWatcher();
2928
2976
  },
2929
- onState: (n) => this.applyState(n),
2930
- inline: this.inline
2977
+ onState: (i) => this.applyState(i),
2978
+ inline: this.inline,
2979
+ locale: this.forceLocale
2931
2980
  },
2932
2981
  { host: this.host, shadowMode: this.shadowMode, inline: this.inline }
2933
2982
  ), this.emit("open");
2934
2983
  }
2935
2984
  applyState(t) {
2936
- if (!ur(this.currentState, t)) {
2985
+ if (!pr(this.currentState, t)) {
2937
2986
  this.currentState = t;
2938
2987
  for (const r of this.stateListeners)
2939
2988
  try {
@@ -2968,16 +3017,16 @@ class xr {
2968
3017
  this.stateListeners.add(t);
2969
3018
  const a = r.immediate ?? "microtask";
2970
3019
  if (a !== "none") {
2971
- const n = this.currentState;
3020
+ const i = this.currentState;
2972
3021
  if (a === "sync")
2973
3022
  try {
2974
- t(n);
3023
+ t(i);
2975
3024
  } catch (o) {
2976
3025
  console.warn("[paywall] onStateChange initial sync threw", o);
2977
3026
  }
2978
3027
  else
2979
3028
  queueMicrotask(() => {
2980
- this.stateListeners.has(t) && t(n);
3029
+ this.stateListeners.has(t) && t(i);
2981
3030
  });
2982
3031
  }
2983
3032
  return () => {
@@ -3068,11 +3117,11 @@ class xr {
3068
3117
  trial: null,
3069
3118
  user: a
3070
3119
  };
3071
- let n = null;
3120
+ let i = null;
3072
3121
  if (!t.skipVisibility) {
3073
3122
  const s = r.settings.visibility;
3074
- if (s && (n = s, this.lastVisibility = s, !s.visible))
3075
- return { access: "granted", reason: "visibility_blocked", visibility: n, trial: null, user: a };
3123
+ if (s && (i = s, this.lastVisibility = s, !s.visible))
3124
+ return { access: "granted", reason: "visibility_blocked", visibility: i, trial: null, user: a };
3076
3125
  }
3077
3126
  let o = null;
3078
3127
  if (!t.skipTrial) {
@@ -3080,12 +3129,12 @@ class xr {
3080
3129
  if (s)
3081
3130
  try {
3082
3131
  if (o = await this.ensureTrialStore(s).check(), this.lastTrialStatus = o, o.blocked)
3083
- return { access: "granted", reason: "trial_blocked", visibility: n, trial: o, user: a };
3132
+ return { access: "granted", reason: "trial_blocked", visibility: i, trial: o, user: a };
3084
3133
  } catch (l) {
3085
3134
  typeof console < "u" && console.warn("[paywall] getAccess: trial check failed", l);
3086
3135
  }
3087
3136
  }
3088
- return { access: "blocked", reason: "no_subscription", visibility: n, trial: o, user: a };
3137
+ return { access: "blocked", reason: "no_subscription", visibility: i, trial: o, user: a };
3089
3138
  }
3090
3139
  /** Сбросить состояние триала в storage. Полезно для дев-режима / админ-кнопки
3091
3140
  * «прогнать сценарий заново». В проде хост обычно не дёргает. */
@@ -3099,7 +3148,7 @@ class xr {
3099
3148
  // В extension popup runtime — no-op (popup не доживёт). Там полагаемся на
3100
3149
  // bootstrap при следующем открытии.
3101
3150
  startUserWatcher() {
3102
- this.watcher || lr() && (this.watcher = new sr({
3151
+ this.watcher || cr() && (this.watcher = new lr({
3103
3152
  client: this.billing,
3104
3153
  onActive: (t) => {
3105
3154
  this.watcher = null, this.emit("purchase_completed", { priceId: null, sessionId: null });
@@ -3128,19 +3177,19 @@ class xr {
3128
3177
  */
3129
3178
  checkReturn() {
3130
3179
  if (typeof window > "u") return;
3131
- const t = new URL(window.location.href), r = _t(t.hash.replace(/^#/, "")), a = _t(t.search.replace(/^\?/, "")), n = r ?? a;
3132
- n && (n.status === "paid" ? (this.emit("purchase_completed", {
3133
- priceId: n.priceId,
3134
- sessionId: n.sessionId
3135
- }), hr(n)) : (n.status === "failed" || n.status === "cancelled") && this.emit("purchase_failed", { reason: n.status }), gr(t));
3180
+ const t = new URL(window.location.href), r = St(t.hash.replace(/^#/, "")), a = St(t.search.replace(/^\?/, "")), i = r ?? a;
3181
+ i && (i.status === "paid" ? (this.emit("purchase_completed", {
3182
+ priceId: i.priceId,
3183
+ sessionId: i.sessionId
3184
+ }), gr(i)) : (i.status === "failed" || i.status === "cancelled") && this.emit("purchase_failed", { reason: i.status }), fr(t));
3136
3185
  }
3137
3186
  destroy() {
3138
3187
  this.tracker?.destroy(), this.tracker = null, this.listeners.clear(), this.stateListeners.clear(), this.watcher?.stop(), this.watcher = null, this.userUnsub?.(), this.userUnsub = null, this.authUnsub?.(), this.authUnsub = null, this.ownsAuth && this.auth && this.auth.destroy?.(), this.ownsAuth = !1, this.billing.destroy?.(), this.handle?.unmount(), this.handle = null, this.isOpen = !1, this.currentState = st;
3139
3188
  }
3140
3189
  }
3141
- function cr(e) {
3190
+ function dr(e) {
3142
3191
  if (!e.auth) return { auth: void 0, ownsAuth: !1 };
3143
- if (e.auth instanceof dt || dr(e.auth))
3192
+ if (e.auth instanceof dt || ur(e.auth))
3144
3193
  return { auth: e.auth, ownsAuth: !1 };
3145
3194
  const t = e.auth === !0 ? {} : e.auth;
3146
3195
  return {
@@ -3154,27 +3203,27 @@ function cr(e) {
3154
3203
  ownsAuth: !0
3155
3204
  };
3156
3205
  }
3157
- function dr(e) {
3206
+ function ur(e) {
3158
3207
  if (typeof e != "object" || e === null) return !1;
3159
3208
  const t = e;
3160
3209
  return typeof t.onAuthChange == "function" && typeof t.getCachedSession == "function" && typeof t.signOut == "function";
3161
3210
  }
3162
- function ur(e, t) {
3211
+ function pr(e, t) {
3163
3212
  return e.open === t.open && e.view === t.view && e.error === t.error;
3164
3213
  }
3165
- function pr(e, t) {
3214
+ function hr(e, t) {
3166
3215
  return e.mode === t.mode && e.payload === t.payload && e.storage === t.storage;
3167
3216
  }
3168
- function _t(e) {
3217
+ function St(e) {
3169
3218
  if (!e) return null;
3170
- const t = new URLSearchParams(e), r = t.get(N.status);
3219
+ const t = new URLSearchParams(e), r = t.get(H.status);
3171
3220
  return r ? {
3172
3221
  status: r,
3173
- priceId: t.get(N.priceId),
3174
- sessionId: t.get(N.sessionId)
3222
+ priceId: t.get(H.priceId),
3223
+ sessionId: t.get(H.sessionId)
3175
3224
  } : null;
3176
3225
  }
3177
- function hr(e) {
3226
+ function gr(e) {
3178
3227
  if (!(typeof window > "u" || !window.opener))
3179
3228
  try {
3180
3229
  window.opener.postMessage(
@@ -3189,18 +3238,18 @@ function hr(e) {
3189
3238
  } catch {
3190
3239
  }
3191
3240
  }
3192
- function gr(e) {
3193
- const t = (a, n) => {
3241
+ function fr(e) {
3242
+ const t = (a, i) => {
3194
3243
  if (!a) return "";
3195
3244
  const o = new URLSearchParams(a.replace(/^[?#]/, ""));
3196
- o.delete(N.status), o.delete(N.priceId), o.delete(N.sessionId);
3245
+ o.delete(H.status), o.delete(H.priceId), o.delete(H.sessionId);
3197
3246
  const s = o.toString();
3198
- return s ? n + s : "";
3247
+ return s ? i + s : "";
3199
3248
  }, r = e.pathname + t(e.search, "?") + t(e.hash, "#");
3200
3249
  window.history.replaceState(null, "", r);
3201
3250
  }
3202
3251
  export {
3203
- xr as P,
3204
- Ke as b
3252
+ yr as P,
3253
+ Ye as b
3205
3254
  };
3206
- //# sourceMappingURL=PaywallUI-D7lp-bC5.js.map
3255
+ //# sourceMappingURL=PaywallUI-BYquPomD.js.map