@monetize.software/sdk 3.0.0-alpha.7 → 3.0.0-alpha.8

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 (202) hide show
  1. package/dist/chunks/{PaywallUI-BYquPomD.js → PaywallUI-BrDiS6zg.js} +926 -962
  2. package/dist/chunks/PaywallUI-BrDiS6zg.js.map +1 -0
  3. package/dist/chunks/PaywallUI-Bvx8nRL0.js +26 -0
  4. package/dist/chunks/PaywallUI-Bvx8nRL0.js.map +1 -0
  5. package/dist/chunks/{ar-nh4l4WDE.js → ar-CHae8g-2.js} +4 -3
  6. package/dist/chunks/ar-CHae8g-2.js.map +1 -0
  7. package/dist/chunks/ar-E1mc8SO_.js +2 -0
  8. package/dist/chunks/ar-E1mc8SO_.js.map +1 -0
  9. package/dist/chunks/cs-Dccq6LAT.js +2 -0
  10. package/dist/chunks/cs-Dccq6LAT.js.map +1 -0
  11. package/dist/chunks/{cs-2UYO2rWf.js → cs-eZTedzaK.js} +2 -1
  12. package/dist/chunks/cs-eZTedzaK.js.map +1 -0
  13. package/dist/chunks/da-C_4MbEh5.js +2 -0
  14. package/dist/chunks/da-C_4MbEh5.js.map +1 -0
  15. package/dist/chunks/{da-BD0O_HfV.js → da-Dca6j8fp.js} +2 -1
  16. package/dist/chunks/da-Dca6j8fp.js.map +1 -0
  17. package/dist/chunks/{de-BkCiXPsn.js → de-BCjn3PUI.js} +3 -1
  18. package/dist/chunks/de-BCjn3PUI.js.map +1 -0
  19. package/dist/chunks/de-DulxcJj-.js +2 -0
  20. package/dist/chunks/de-DulxcJj-.js.map +1 -0
  21. package/dist/chunks/{el-cIcxTp07.js → el-BpXtDTez.js} +2 -1
  22. package/dist/chunks/el-BpXtDTez.js.map +1 -0
  23. package/dist/chunks/el-CVG_1iKB.js +2 -0
  24. package/dist/chunks/el-CVG_1iKB.js.map +1 -0
  25. package/dist/chunks/{es-CJBC_jrV.js → es-B3P4nlMw.js} +3 -1
  26. package/dist/chunks/es-B3P4nlMw.js.map +1 -0
  27. package/dist/chunks/es-ri0uKzUW.js +2 -0
  28. package/dist/chunks/es-ri0uKzUW.js.map +1 -0
  29. package/dist/chunks/{fi-DyV7ynBf.js → fi-BbQ_Bs0Z.js} +2 -1
  30. package/dist/chunks/fi-BbQ_Bs0Z.js.map +1 -0
  31. package/dist/chunks/fi-CNZqWHjw.js +2 -0
  32. package/dist/chunks/fi-CNZqWHjw.js.map +1 -0
  33. package/dist/chunks/{fr-BLQ4AIu7.js → fr-BKDUXceO.js} +3 -1
  34. package/dist/chunks/fr-BKDUXceO.js.map +1 -0
  35. package/dist/chunks/fr-CfFOw4hD.js +2 -0
  36. package/dist/chunks/fr-CfFOw4hD.js.map +1 -0
  37. package/dist/chunks/{he-Bg-Bqi7r.js → he-BVCHlTtT.js} +2 -1
  38. package/dist/chunks/he-BVCHlTtT.js.map +1 -0
  39. package/dist/chunks/he-DN2JEtQb.js +2 -0
  40. package/dist/chunks/he-DN2JEtQb.js.map +1 -0
  41. package/dist/chunks/hi-DxfOerNP.js +2 -0
  42. package/dist/chunks/hi-DxfOerNP.js.map +1 -0
  43. package/dist/chunks/{hi-wQeE43oY.js → hi-H_Hshh-7.js} +4 -3
  44. package/dist/chunks/hi-H_Hshh-7.js.map +1 -0
  45. package/dist/chunks/hu-BTImywuV.js +2 -0
  46. package/dist/chunks/{hu-DXtscQ8_.js.map → hu-BTImywuV.js.map} +1 -1
  47. package/dist/chunks/{hu-D9qxzu0r.js → hu-ZWiNfzvN.js} +2 -1
  48. package/dist/chunks/{hu-D9qxzu0r.js.map → hu-ZWiNfzvN.js.map} +1 -1
  49. package/dist/chunks/{id-Rx_wYvqy.js → id-DeiRYsJ1.js} +2 -1
  50. package/dist/chunks/id-DeiRYsJ1.js.map +1 -0
  51. package/dist/chunks/id-YFuArJA6.js +2 -0
  52. package/dist/chunks/id-YFuArJA6.js.map +1 -0
  53. package/dist/chunks/{it-B1SRPZ3e.js → it-UH9OzFhg.js} +3 -1
  54. package/dist/chunks/it-UH9OzFhg.js.map +1 -0
  55. package/dist/chunks/it-mhkzXBM9.js +2 -0
  56. package/dist/chunks/it-mhkzXBM9.js.map +1 -0
  57. package/dist/chunks/{ja-CMC3Parn.js → ja-6l_z_G9k.js} +2 -2
  58. package/dist/chunks/ja-6l_z_G9k.js.map +1 -0
  59. package/dist/chunks/{ja-DiItm8te.js → ja-BYC8FRN8.js} +3 -1
  60. package/dist/chunks/ja-BYC8FRN8.js.map +1 -0
  61. package/dist/chunks/{ko-CdGFWAKX.js → ko-Bjs2ZRcF.js} +3 -1
  62. package/dist/chunks/ko-Bjs2ZRcF.js.map +1 -0
  63. package/dist/chunks/ko-YAl4XwHu.js +2 -0
  64. package/dist/chunks/ko-YAl4XwHu.js.map +1 -0
  65. package/dist/chunks/nl-C-9zHtfb.js +2 -0
  66. package/dist/chunks/nl-C-9zHtfb.js.map +1 -0
  67. package/dist/chunks/{nl-CmZ3vEvj.js → nl-Ch5HFWQO.js} +3 -1
  68. package/dist/chunks/nl-Ch5HFWQO.js.map +1 -0
  69. package/dist/chunks/{no-BuxByZpq.js → no-CljpinWz.js} +2 -1
  70. package/dist/chunks/no-CljpinWz.js.map +1 -0
  71. package/dist/chunks/no-qzPitLlx.js +2 -0
  72. package/dist/chunks/no-qzPitLlx.js.map +1 -0
  73. package/dist/chunks/{pl-jZFCnDb8.js → pl-CUcSS0zZ.js} +2 -1
  74. package/dist/chunks/pl-CUcSS0zZ.js.map +1 -0
  75. package/dist/chunks/pl-MAIYeuhW.js +2 -0
  76. package/dist/chunks/pl-MAIYeuhW.js.map +1 -0
  77. package/dist/chunks/{pt-Cld7MwIW.js → pt-BHK0LwkC.js} +3 -1
  78. package/dist/chunks/pt-BHK0LwkC.js.map +1 -0
  79. package/dist/chunks/pt-DqDabE4v.js +2 -0
  80. package/dist/chunks/pt-DqDabE4v.js.map +1 -0
  81. package/dist/chunks/ro-BVs-lHH-.js +2 -0
  82. package/dist/chunks/ro-BVs-lHH-.js.map +1 -0
  83. package/dist/chunks/{ro-CuKDqj3C.js → ro-Bj8cwU2n.js} +2 -1
  84. package/dist/chunks/ro-Bj8cwU2n.js.map +1 -0
  85. package/dist/chunks/{ru-B7cjqJUm.js → ru-CgqNy0Gb.js} +10 -1
  86. package/dist/chunks/ru-CgqNy0Gb.js.map +1 -0
  87. package/dist/chunks/ru-DP7qDAmE.js +2 -0
  88. package/dist/chunks/ru-DP7qDAmE.js.map +1 -0
  89. package/dist/chunks/sv-B3QEYGgd.js +2 -0
  90. package/dist/chunks/sv-B3QEYGgd.js.map +1 -0
  91. package/dist/chunks/{sv-D9y-M1Fo.js → sv-H7jroOQ5.js} +2 -1
  92. package/dist/chunks/sv-H7jroOQ5.js.map +1 -0
  93. package/dist/chunks/{th-D9umBjEy.js → th-Dqm-gpGe.js} +2 -1
  94. package/dist/chunks/th-Dqm-gpGe.js.map +1 -0
  95. package/dist/chunks/th-DzQau9aW.js +2 -0
  96. package/dist/chunks/th-DzQau9aW.js.map +1 -0
  97. package/dist/chunks/{tr-BddMywiw.js → tr-D3zPcNtT.js} +2 -1
  98. package/dist/chunks/tr-D3zPcNtT.js.map +1 -0
  99. package/dist/chunks/tr-cG1YuE1E.js +2 -0
  100. package/dist/chunks/tr-cG1YuE1E.js.map +1 -0
  101. package/dist/chunks/{uk-Dbd31hFt.js → uk-CoIIs3QI.js} +10 -1
  102. package/dist/chunks/uk-CoIIs3QI.js.map +1 -0
  103. package/dist/chunks/uk-Cvbo0IBW.js +2 -0
  104. package/dist/chunks/uk-Cvbo0IBW.js.map +1 -0
  105. package/dist/chunks/vi-BRtYSBUp.js +2 -0
  106. package/dist/chunks/{vi-CJefLP_g.js.map → vi-BRtYSBUp.js.map} +1 -1
  107. package/dist/chunks/{vi-Do3BMOdh.js → vi-C_fruIbh.js} +2 -1
  108. package/dist/chunks/{vi-Do3BMOdh.js.map → vi-C_fruIbh.js.map} +1 -1
  109. package/dist/chunks/zh-CwczPMPp.js +2 -0
  110. package/dist/chunks/zh-CwczPMPp.js.map +1 -0
  111. package/dist/chunks/{zh-gQSYLZI3.js → zh-LDkEV2D9.js} +3 -1
  112. package/dist/chunks/zh-LDkEV2D9.js.map +1 -0
  113. package/dist/core.cjs +1 -1
  114. package/dist/core.cjs.map +1 -1
  115. package/dist/core.js +20 -20
  116. package/dist/core.js.map +1 -1
  117. package/dist/index.cjs +1 -1
  118. package/dist/index.d.ts +31 -16
  119. package/dist/index.js +1 -1
  120. package/dist/ui.cjs +1 -1
  121. package/dist/ui.d.ts +31 -16
  122. package/dist/ui.js +1 -1
  123. package/package.json +1 -1
  124. package/dist/chunks/PaywallUI-BYquPomD.js.map +0 -1
  125. package/dist/chunks/PaywallUI-Cl9sz_xA.js +0 -26
  126. package/dist/chunks/PaywallUI-Cl9sz_xA.js.map +0 -1
  127. package/dist/chunks/ar-BUQInJ5a.js +0 -2
  128. package/dist/chunks/ar-BUQInJ5a.js.map +0 -1
  129. package/dist/chunks/ar-nh4l4WDE.js.map +0 -1
  130. package/dist/chunks/cs-2UYO2rWf.js.map +0 -1
  131. package/dist/chunks/cs-i5K4KTFV.js +0 -2
  132. package/dist/chunks/cs-i5K4KTFV.js.map +0 -1
  133. package/dist/chunks/da-BD0O_HfV.js.map +0 -1
  134. package/dist/chunks/da-CZbhtVJO.js +0 -2
  135. package/dist/chunks/da-CZbhtVJO.js.map +0 -1
  136. package/dist/chunks/de-Bc-GoLgC.js +0 -2
  137. package/dist/chunks/de-Bc-GoLgC.js.map +0 -1
  138. package/dist/chunks/de-BkCiXPsn.js.map +0 -1
  139. package/dist/chunks/el-CcMEbl_F.js +0 -2
  140. package/dist/chunks/el-CcMEbl_F.js.map +0 -1
  141. package/dist/chunks/el-cIcxTp07.js.map +0 -1
  142. package/dist/chunks/es-BvYmomAz.js +0 -2
  143. package/dist/chunks/es-BvYmomAz.js.map +0 -1
  144. package/dist/chunks/es-CJBC_jrV.js.map +0 -1
  145. package/dist/chunks/fi-DyV7ynBf.js.map +0 -1
  146. package/dist/chunks/fi-aZR-qmZN.js +0 -2
  147. package/dist/chunks/fi-aZR-qmZN.js.map +0 -1
  148. package/dist/chunks/fr-BLQ4AIu7.js.map +0 -1
  149. package/dist/chunks/fr-BgbFAgHx.js +0 -2
  150. package/dist/chunks/fr-BgbFAgHx.js.map +0 -1
  151. package/dist/chunks/he-Bg-Bqi7r.js.map +0 -1
  152. package/dist/chunks/he-CQ4yCuja.js +0 -2
  153. package/dist/chunks/he-CQ4yCuja.js.map +0 -1
  154. package/dist/chunks/hi-DtUsj1c-.js +0 -2
  155. package/dist/chunks/hi-DtUsj1c-.js.map +0 -1
  156. package/dist/chunks/hi-wQeE43oY.js.map +0 -1
  157. package/dist/chunks/hu-DXtscQ8_.js +0 -2
  158. package/dist/chunks/id-BByOYpeo.js +0 -2
  159. package/dist/chunks/id-BByOYpeo.js.map +0 -1
  160. package/dist/chunks/id-Rx_wYvqy.js.map +0 -1
  161. package/dist/chunks/it-52Ip42pa.js +0 -2
  162. package/dist/chunks/it-52Ip42pa.js.map +0 -1
  163. package/dist/chunks/it-B1SRPZ3e.js.map +0 -1
  164. package/dist/chunks/ja-CMC3Parn.js.map +0 -1
  165. package/dist/chunks/ja-DiItm8te.js.map +0 -1
  166. package/dist/chunks/ko-3qY21q40.js +0 -2
  167. package/dist/chunks/ko-3qY21q40.js.map +0 -1
  168. package/dist/chunks/ko-CdGFWAKX.js.map +0 -1
  169. package/dist/chunks/nl-Borc5nw1.js +0 -2
  170. package/dist/chunks/nl-Borc5nw1.js.map +0 -1
  171. package/dist/chunks/nl-CmZ3vEvj.js.map +0 -1
  172. package/dist/chunks/no-BuxByZpq.js.map +0 -1
  173. package/dist/chunks/no-Do2iGedg.js +0 -2
  174. package/dist/chunks/no-Do2iGedg.js.map +0 -1
  175. package/dist/chunks/pl-jZFCnDb8.js.map +0 -1
  176. package/dist/chunks/pl-mRaky_7k.js +0 -2
  177. package/dist/chunks/pl-mRaky_7k.js.map +0 -1
  178. package/dist/chunks/pt-Cld7MwIW.js.map +0 -1
  179. package/dist/chunks/pt-DilDTXfs.js +0 -2
  180. package/dist/chunks/pt-DilDTXfs.js.map +0 -1
  181. package/dist/chunks/ro-CuKDqj3C.js.map +0 -1
  182. package/dist/chunks/ro-DF2uzPIB.js +0 -2
  183. package/dist/chunks/ro-DF2uzPIB.js.map +0 -1
  184. package/dist/chunks/ru-B7cjqJUm.js.map +0 -1
  185. package/dist/chunks/ru-YeaXnTO-.js +0 -2
  186. package/dist/chunks/ru-YeaXnTO-.js.map +0 -1
  187. package/dist/chunks/sv-2pHEvuSe.js +0 -2
  188. package/dist/chunks/sv-2pHEvuSe.js.map +0 -1
  189. package/dist/chunks/sv-D9y-M1Fo.js.map +0 -1
  190. package/dist/chunks/th-D9umBjEy.js.map +0 -1
  191. package/dist/chunks/th-u2QSDF0G.js +0 -2
  192. package/dist/chunks/th-u2QSDF0G.js.map +0 -1
  193. package/dist/chunks/tr-BddMywiw.js.map +0 -1
  194. package/dist/chunks/tr-Bhgm6_ti.js +0 -2
  195. package/dist/chunks/tr-Bhgm6_ti.js.map +0 -1
  196. package/dist/chunks/uk-7vwqsaVK.js +0 -2
  197. package/dist/chunks/uk-7vwqsaVK.js.map +0 -1
  198. package/dist/chunks/uk-Dbd31hFt.js.map +0 -1
  199. package/dist/chunks/vi-CJefLP_g.js +0 -2
  200. package/dist/chunks/zh-D5C3BzYL.js +0 -2
  201. package/dist/chunks/zh-D5C3BzYL.js.map +0 -1
  202. package/dist/chunks/zh-gQSYLZI3.js.map +0 -1
@@ -1,17 +1,17 @@
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
- const pt = 3600 * 1e3;
1
+ import { PaywallError as F, BillingClient as Rt, EventTracker as Ut, AuthClient as lt } from "../core.js";
2
+ import { render as K, h as ct, createContext as Dt } from "preact";
3
+ import { jsx as a, jsxs as c, Fragment as at } from "preact/jsx-runtime";
4
+ import { useContext as Nt, useState as b, useEffect as j, useRef as R, useMemo as $t, useLayoutEffect as Ht } from "preact/hooks";
5
+ const dt = 3600 * 1e3;
6
6
  function Y(e) {
7
7
  return `paywall-${e}-trial-time-first-open`;
8
8
  }
9
9
  function X(e) {
10
10
  return `paywall-${e}-skip-times`;
11
11
  }
12
- class It {
13
- constructor(t, r, a) {
14
- this.storage = t, this.paywallId = r, this.config = a;
12
+ class St {
13
+ constructor(t, r, n) {
14
+ this.storage = t, this.paywallId = r, this.config = n;
15
15
  }
16
16
  async check() {
17
17
  return this.config.mode === "time" ? this.checkTime() : this.checkOpens();
@@ -23,8 +23,8 @@ class It {
23
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(Y(this.paywallId)), a = r ? Number(r) : null;
27
- if (!a || !Number.isFinite(a))
26
+ const t = this.config.payload * dt, r = await this.storage.getItem(Y(this.paywallId)), n = r ? Number(r) : null;
27
+ if (!n || !Number.isFinite(n))
28
28
  return {
29
29
  mode: "time",
30
30
  blocked: !0,
@@ -33,18 +33,18 @@ class It {
33
33
  remainingMs: t,
34
34
  totalMs: t
35
35
  };
36
- const i = a + t, o = Math.max(0, i - Date.now());
36
+ const i = n + t, o = Math.max(0, i - Date.now());
37
37
  return {
38
38
  mode: "time",
39
39
  blocked: o > 0,
40
- startedAt: a,
40
+ startedAt: n,
41
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(X(this.paywallId)), a = r ? Number(r) : 0, i = Number.isFinite(a) ? a : 0, o = i < t, s = Math.max(0, t - i);
47
+ const t = this.config.payload, r = await this.storage.getItem(X(this.paywallId)), n = r ? Number(r) : 0, i = Number.isFinite(n) ? n : 0, o = i < t, s = Math.max(0, t - i);
48
48
  return {
49
49
  mode: "opens",
50
50
  blocked: o,
@@ -53,8 +53,8 @@ class It {
53
53
  };
54
54
  }
55
55
  async recordTime() {
56
- const t = this.config.payload * pt, r = Y(this.paywallId), a = await this.storage.getItem(r);
57
- let i = a ? Number(a) : null;
56
+ const t = this.config.payload * dt, r = Y(this.paywallId), n = await this.storage.getItem(r);
57
+ let i = n ? Number(n) : null;
58
58
  (!i || !Number.isFinite(i)) && (i = Date.now(), await this.storage.setItem(r, String(i)));
59
59
  const o = i + t, s = Math.max(0, o - Date.now());
60
60
  return {
@@ -67,23 +67,23 @@ class It {
67
67
  };
68
68
  }
69
69
  async recordOpens() {
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);
70
+ const t = this.config.payload, r = X(this.paywallId), n = await this.storage.getItem(r), i = n ? Number(n) : 0, o = Number.isFinite(i) ? i : 0, s = Math.min(t, o + 1);
71
71
  await this.storage.setItem(r, String(s));
72
- const l = Math.max(0, t - s);
72
+ const d = Math.max(0, t - s);
73
73
  return {
74
74
  mode: "opens",
75
75
  blocked: s < t,
76
- remainingActions: l,
76
+ remainingActions: d,
77
77
  totalActions: t
78
78
  };
79
79
  }
80
80
  }
81
- let ht = !1;
82
- class Gt {
83
- constructor(t, r, a) {
84
- ht || (ht = !0, console.warn(
81
+ let ut = !1;
82
+ class Vt {
83
+ constructor(t, r, n) {
84
+ ut || (ut = !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 It(t, r, a);
86
+ )), this.fallback = new St(t, r, n);
87
87
  }
88
88
  check() {
89
89
  return this.fallback.check();
@@ -95,17 +95,17 @@ class Gt {
95
95
  return this.fallback.reset();
96
96
  }
97
97
  }
98
- function qt(e, t, r) {
99
- return r.storage === "server" ? new Gt(e, t, r) : new It(e, t, r);
98
+ function Gt(e, t, r) {
99
+ return r.storage === "server" ? new Vt(e, t, r) : new St(e, t, r);
100
100
  }
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
- let gt = !1;
103
- function Wt() {
104
- if (gt || (gt = !0, typeof CSS > "u" || typeof CSS.registerProperty != "function")) return;
101
+ const Ct = '/*! 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-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-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-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-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-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-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-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-4{padding-top:calc(var(--spacing) * 4)}.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-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-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\\: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-5{padding-top:calc(var(--spacing) * 5)}.sm\\:pt-8{padding-top:calc(var(--spacing) * 8)}.sm\\:pb-4{padding-bottom:calc(var(--spacing) * 4)}.sm\\:pb-8{padding-bottom:calc(var(--spacing) * 8)}.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
+ let pt = !1;
103
+ function qt() {
104
+ if (pt || (pt = !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(At), e = t.cssRules;
108
+ t.replaceSync(Ct), e = t.cssRules;
109
109
  } catch {
110
110
  return;
111
111
  }
@@ -123,13 +123,13 @@ function Wt() {
123
123
  }
124
124
  }
125
125
  }
126
- function Zt(e, t, r = {}) {
126
+ function Wt(e, t, r = {}) {
127
127
  if (typeof document > "u")
128
128
  throw new Error("mountShadow called in non-DOM environment");
129
- Wt();
130
- const a = r.host ?? document.createElement("div");
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 i = a.attachShadow({ mode: r.shadowMode ?? "closed" }), o = `
129
+ qt();
130
+ const n = r.host ?? document.createElement("div");
131
+ n.setAttribute("data-paywall-host", ""), n.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;", !n.isConnected && !r.inline && document.body.appendChild(n);
132
+ const i = n.attachShadow({ mode: r.shadowMode ?? "closed" }), o = `
133
133
  :host {
134
134
  all: initial !important;
135
135
  display: block !important;
@@ -148,23 +148,23 @@ function Zt(e, t, r = {}) {
148
148
  visibility: visible !important;
149
149
  }
150
150
  `, s = document.createElement("style");
151
- s.textContent = o + At + (r.injectCss ?? ""), i.appendChild(s);
152
- const l = document.createElement("div");
153
- l.style.pointerEvents = "auto", i.appendChild(l);
154
- let u = t;
155
- return K(ut(e, u), l), {
151
+ s.textContent = o + Ct + (r.injectCss ?? ""), i.appendChild(s);
152
+ const d = document.createElement("div");
153
+ d.style.pointerEvents = "auto", i.appendChild(d);
154
+ let l = t;
155
+ return K(ct(e, l), d), {
156
156
  shadowRoot: i,
157
- update(h) {
158
- u = { ...u, ...h }, K(ut(e, u), l);
157
+ update(g) {
158
+ l = { ...l, ...g }, K(ct(e, l), d);
159
159
  },
160
160
  unmount() {
161
- K(null, l), a.remove();
161
+ K(null, d), n.remove();
162
162
  }
163
163
  };
164
164
  }
165
- const Kt = (e, t, r) => {
166
- const a = e[t];
167
- return a ? typeof a == "function" ? a() : Promise.resolve(a) : new Promise((i, o) => {
165
+ const Zt = (e, t, r) => {
166
+ const n = e[t];
167
+ return n ? typeof n == "function" ? n() : Promise.resolve(n) : new Promise((i, o) => {
168
168
  (typeof queueMicrotask == "function" ? queueMicrotask : setTimeout)(
169
169
  o.bind(
170
170
  null,
@@ -174,7 +174,7 @@ const Kt = (e, t, r) => {
174
174
  )
175
175
  );
176
176
  });
177
- }, Yt = [
177
+ }, Kt = [
178
178
  "ru",
179
179
  "uk",
180
180
  "de",
@@ -202,44 +202,44 @@ const Kt = (e, t, r) => {
202
202
  "th",
203
203
  "vi",
204
204
  "he"
205
- ], Mt = (e, t, r) => Pt(t, r), Lt = Ht({ t: Mt, locale: "en" });
206
- function Pt(e, t) {
205
+ ], It = (e, t, r) => Mt(t, r), At = Dt({ t: It, locale: "en" });
206
+ function Mt(e, t) {
207
207
  if (!t) return e;
208
208
  let r = e;
209
- for (const [a, i] of Object.entries(t))
210
- r = r.split(`{${a}}`).join(String(i));
209
+ for (const [n, i] of Object.entries(t))
210
+ r = r.split(`{${n}}`).join(String(i));
211
211
  return r;
212
212
  }
213
213
  const J = /* @__PURE__ */ new Map(), Q = /* @__PURE__ */ new Map();
214
- function Tt(e) {
215
- return Yt.includes(e);
214
+ function Lt(e) {
215
+ return Kt.includes(e);
216
216
  }
217
- function Xt(e) {
217
+ function Yt(e) {
218
218
  const t = [];
219
219
  if (typeof navigator < "u" && navigator.language) {
220
220
  t.push(navigator.language);
221
- const a = navigator.language.split("-")[0];
222
- a && a !== navigator.language && t.push(a);
221
+ const n = navigator.language.split("-")[0];
222
+ n && n !== navigator.language && t.push(n);
223
223
  }
224
224
  const r = e.settings.locale_default;
225
225
  if (r) {
226
226
  t.push(r);
227
- const a = r.split("-")[0];
228
- a && a !== r && t.push(a);
227
+ const n = r.split("-")[0];
228
+ n && n !== r && t.push(n);
229
229
  }
230
- for (const a of t)
231
- if (Tt(a)) return a;
230
+ for (const n of t)
231
+ if (Lt(n)) return n;
232
232
  return null;
233
233
  }
234
- function Jt(e) {
235
- return !!e.locales && Object.keys(e.locales).length > 0;
234
+ function Xt(e, t) {
235
+ return !!e.locales && e.locales[t] !== void 0;
236
236
  }
237
- async function Qt(e) {
237
+ async function Jt(e) {
238
238
  const t = J.get(e);
239
239
  if (t) return t;
240
240
  const r = Q.get(e);
241
241
  if (r) return r;
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) => {
242
+ const n = Zt(/* @__PURE__ */ Object.assign({ "./locales/ar.ts": () => import("./ar-CHae8g-2.js"), "./locales/cs.ts": () => import("./cs-eZTedzaK.js"), "./locales/da.ts": () => import("./da-Dca6j8fp.js"), "./locales/de.ts": () => import("./de-BCjn3PUI.js"), "./locales/el.ts": () => import("./el-BpXtDTez.js"), "./locales/es.ts": () => import("./es-B3P4nlMw.js"), "./locales/fi.ts": () => import("./fi-BbQ_Bs0Z.js"), "./locales/fr.ts": () => import("./fr-BKDUXceO.js"), "./locales/he.ts": () => import("./he-BVCHlTtT.js"), "./locales/hi.ts": () => import("./hi-H_Hshh-7.js"), "./locales/hu.ts": () => import("./hu-ZWiNfzvN.js"), "./locales/id.ts": () => import("./id-DeiRYsJ1.js"), "./locales/it.ts": () => import("./it-UH9OzFhg.js"), "./locales/ja.ts": () => import("./ja-BYC8FRN8.js"), "./locales/ko.ts": () => import("./ko-Bjs2ZRcF.js"), "./locales/nl.ts": () => import("./nl-Ch5HFWQO.js"), "./locales/no.ts": () => import("./no-CljpinWz.js"), "./locales/pl.ts": () => import("./pl-CUcSS0zZ.js"), "./locales/pt.ts": () => import("./pt-BHK0LwkC.js"), "./locales/ro.ts": () => import("./ro-Bj8cwU2n.js"), "./locales/ru.ts": () => import("./ru-CgqNy0Gb.js"), "./locales/sv.ts": () => import("./sv-H7jroOQ5.js"), "./locales/th.ts": () => import("./th-Dqm-gpGe.js"), "./locales/tr.ts": () => import("./tr-D3zPcNtT.js"), "./locales/uk.ts": () => import("./uk-CoIIs3QI.js"), "./locales/vi.ts": () => import("./vi-C_fruIbh.js"), "./locales/zh.ts": () => import("./zh-LDkEV2D9.js") }), `./locales/${e}.ts`, 3).then((i) => {
243
243
  const o = i.default ?? {};
244
244
  return J.set(e, o), o;
245
245
  }).catch((i) => {
@@ -249,79 +249,83 @@ async function Qt(e) {
249
249
  }).finally(() => {
250
250
  Q.delete(e);
251
251
  });
252
- return Q.set(e, a), a;
253
- }
254
- function te({ bootstrap: e, forceLocale: t, children: r }) {
255
- const [a, i] = b("en"), [o, s] = b(null);
256
- T(() => {
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));
252
+ return Q.set(e, n), n;
253
+ }
254
+ function Qt({ bootstrap: e, forceLocale: t, children: r }) {
255
+ const [n, i] = b("en"), [o, s] = b(null);
256
+ j(() => {
257
+ const g = (t && Lt(t) ? t : null) ?? (() => {
258
+ if (!e) return null;
259
+ const u = Yt(e);
260
+ return !u || !Xt(e, u) ? null : u;
261
+ })();
262
+ if (!g) {
263
+ (o !== null || n !== "en") && (i("en"), s(null));
260
264
  return;
261
265
  }
262
- if (h === a && o) return;
263
- let d = !1;
264
- return Qt(h).then((p) => {
265
- d || (i(h), s(p));
266
+ if (g === n && o) return;
267
+ let p = !1;
268
+ return Jt(g).then((u) => {
269
+ p || (i(g), s(u));
266
270
  }), () => {
267
- d = !0;
271
+ p = !0;
268
272
  };
269
273
  }, [e, t]);
270
- const l = {
271
- locale: a,
272
- t: o ? (u, h, d) => Pt(o[u] ?? h, d) : Mt
274
+ const d = {
275
+ locale: n,
276
+ t: o ? (l, g, p) => Mt(o[l] ?? g, p) : It
273
277
  };
274
- return /* @__PURE__ */ n(Lt.Provider, { value: l, children: r });
278
+ return /* @__PURE__ */ a(At.Provider, { value: d, children: r });
275
279
  }
276
280
  function v() {
277
- return Vt(Lt);
281
+ return Nt(At);
278
282
  }
279
- const ft = 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';
280
- function ee({
283
+ const ht = 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';
284
+ function te({
281
285
  open: e,
282
286
  onClose: t,
283
287
  labelledBy: r,
284
- brandColor: a,
288
+ brandColor: n,
285
289
  topBanner: i,
286
290
  allowClose: o = !0,
287
291
  hideCloseButton: s = !1,
288
- inline: l = !1,
289
- children: u
292
+ inline: d = !1,
293
+ children: l
290
294
  }) {
291
- const { t: h } = v(), d = F(null), p = F(null);
292
- return T(() => {
295
+ const { t: g } = v(), p = R(null), u = R(null);
296
+ return j(() => {
293
297
  if (!e) return;
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") {
298
+ u.current = document.activeElement ?? null;
299
+ const h = p.current;
300
+ h && (h.querySelector(ht) ?? h).focus({ preventScroll: !0 });
301
+ const m = (_) => {
302
+ if (_.key === "Escape") {
299
303
  if (!o) return;
300
- y.stopPropagation(), t();
304
+ _.stopPropagation(), t();
301
305
  return;
302
306
  }
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();
307
+ if (_.key !== "Tab" || !p.current) return;
308
+ const S = Array.from(
309
+ p.current.querySelectorAll(ht)
310
+ ).filter((E) => !E.hasAttribute("disabled") && E.tabIndex !== -1);
311
+ if (S.length === 0) {
312
+ _.preventDefault();
309
313
  return;
310
314
  }
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());
315
+ const T = S[0], L = S[S.length - 1], B = document.activeElement;
316
+ _.shiftKey && B === T ? (_.preventDefault(), L.focus()) : !_.shiftKey && B === L && (_.preventDefault(), T.focus());
313
317
  };
314
- document.addEventListener("keydown", M, !0);
315
- const E = document.body.style.overflow;
316
- return l || (document.body.style.overflow = "hidden"), () => {
317
- document.removeEventListener("keydown", M, !0), l || (document.body.style.overflow = E), p.current?.focus?.({ preventScroll: !0 });
318
+ document.addEventListener("keydown", m, !0);
319
+ const z = document.body.style.overflow;
320
+ return d || (document.body.style.overflow = "hidden"), () => {
321
+ document.removeEventListener("keydown", m, !0), d || (document.body.style.overflow = z), u.current?.focus?.({ preventScroll: !0 });
318
322
  };
319
- }, [e, t, o, l]), e ? /* @__PURE__ */ c(
323
+ }, [e, t, o, d]), e ? /* @__PURE__ */ c(
320
324
  "div",
321
325
  {
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]`,
323
- onClick: (f) => {
324
- o && f.target === f.currentTarget && t();
326
+ class: `${d ? "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]`,
327
+ onClick: (h) => {
328
+ o && h.target === h.currentTarget && t();
325
329
  },
326
330
  "data-pw-root": !0,
327
331
  children: [
@@ -329,13 +333,13 @@ function ee({
329
333
  "div",
330
334
  {
331
335
  class: "relative flex w-full max-w-[400px] flex-col animate-[pw-scale-in_220ms_cubic-bezier(0.16,1,0.3,1)]",
332
- style: { "--pw-accent": a ?? "#3b82f6" },
336
+ style: { "--pw-accent": n ?? "#3b82f6" },
333
337
  children: [
334
338
  i,
335
339
  /* @__PURE__ */ c(
336
340
  "div",
337
341
  {
338
- ref: d,
342
+ ref: p,
339
343
  role: "dialog",
340
344
  "aria-modal": "true",
341
345
  "aria-labelledby": r,
@@ -345,15 +349,15 @@ function ee({
345
349
  boxShadow: "0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1)"
346
350
  },
347
351
  children: [
348
- u,
349
- o && !s ? /* @__PURE__ */ n(
352
+ l,
353
+ o && !s ? /* @__PURE__ */ a(
350
354
  "button",
351
355
  {
352
356
  type: "button",
353
357
  onClick: t,
354
- "aria-label": h("modal.close_aria", "Close"),
358
+ "aria-label": g("modal.close_aria", "Close"),
355
359
  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)]",
356
- children: /* @__PURE__ */ n("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ n(
360
+ children: /* @__PURE__ */ a("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ a(
357
361
  "path",
358
362
  {
359
363
  d: "M3 3l10 10M13 3L3 13",
@@ -370,7 +374,7 @@ function ee({
370
374
  ]
371
375
  }
372
376
  ),
373
- /* @__PURE__ */ n("style", { children: `
377
+ /* @__PURE__ */ a("style", { children: `
374
378
  @keyframes pw-fade-in { from { opacity: 0 } to { opacity: 1 } }
375
379
  @keyframes pw-scale-in {
376
380
  from { opacity: 0; transform: translateY(12px) scale(0.96) }
@@ -381,7 +385,7 @@ function ee({
381
385
  }
382
386
  ) : null;
383
387
  }
384
- function re(e, t) {
388
+ function ee(e, t) {
385
389
  switch (e) {
386
390
  case "google":
387
391
  return t("auth.continue_with_google", "Continue with Google");
@@ -393,9 +397,9 @@ function re(e, t) {
393
397
  return t("auth.continue_with_facebook", "Continue with Facebook");
394
398
  }
395
399
  }
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;
400
+ function gt(e, t, r) {
401
+ const n = t === "signup" ? r("auth.signup_failed", "Sign-up failed") : r("auth.signin_failed", "Sign-in failed");
402
+ if (!(e instanceof F)) return n;
399
403
  switch (e.code) {
400
404
  case "invalid_credentials":
401
405
  return r("auth.invalid_credentials", "Invalid email or password");
@@ -424,17 +428,17 @@ function wt(e, t, r) {
424
428
  case "http_504":
425
429
  return r("auth.service_unavailable", "Service is temporarily unavailable. Please try again.");
426
430
  default:
427
- return a;
431
+ return n;
428
432
  }
429
433
  }
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;
434
+ function Pt({ block: e, ctx: t }) {
435
+ const r = t.auth, n = t.authSession, i = e.allow_signup !== !1, o = e.allow_password_reset !== !1, s = e.hide_when_authenticated !== !1;
432
436
  if (!r)
433
437
  return typeof console < "u" && console.warn("[paywall] auth_panel rendered without AuthClient — pass `auth: true` to PaywallUI"), null;
434
- const l = a && !a.user.is_anonymous ? a : null;
435
- return l && s ? null : l ? /* @__PURE__ */ n(ie, { email: l.user.email ?? "", onSignOut: () => r.signOut().catch(() => {
436
- }) }) : /* @__PURE__ */ n(
437
- ne,
438
+ const d = n && !n.user.is_anonymous ? n : null;
439
+ return d && s ? null : d ? /* @__PURE__ */ a(re, { email: d.user.email ?? "", onSignOut: () => r.signOut().catch(() => {
440
+ }) }) : /* @__PURE__ */ a(
441
+ ie,
438
442
  {
439
443
  block: e,
440
444
  allowSignup: i,
@@ -443,14 +447,14 @@ function Et({ block: e, ctx: t }) {
443
447
  }
444
448
  );
445
449
  }
446
- function ie({ email: e, onSignOut: t }) {
450
+ function re({ email: e, onSignOut: t }) {
447
451
  const { t: r } = v();
448
452
  return /* @__PURE__ */ c("div", { class: "flex items-center justify-between gap-3 rounded-2xl bg-gray-100 px-4 py-3", children: [
449
453
  /* @__PURE__ */ c("div", { class: "flex flex-col", children: [
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 })
454
+ /* @__PURE__ */ a("span", { class: "text-[10px] font-semibold uppercase tracking-wider text-gray-500", children: r("auth.signed_in", "Signed in") }),
455
+ /* @__PURE__ */ a("span", { class: "text-sm font-medium text-gray-900", children: e })
452
456
  ] }),
453
- /* @__PURE__ */ n(
457
+ /* @__PURE__ */ a(
454
458
  "button",
455
459
  {
456
460
  type: "button",
@@ -461,182 +465,177 @@ function ie({ email: e, onSignOut: t }) {
461
465
  )
462
466
  ] });
463
467
  }
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);
466
- T(() => {
468
+ function ie({ block: e, allowSignup: t, allowReset: r, ctx: n }) {
469
+ const { t: i } = v(), o = n.auth, s = e.providers ?? [], d = n.initialAuthMode === "signup" && t ? "signup" : "signin", [l, g] = b(d), [p, u] = b(""), [x, y] = b(""), [k, h] = b(""), [m, z] = b(""), [_, S] = b(null), [T, L] = b(null), [B, E] = b(null), [U, D] = b(!1), [P, M] = b(null);
470
+ j(() => {
467
471
  if (typeof o.getLastLogin != "function") return;
468
- let S = !1;
472
+ let I = !1;
469
473
  return o.getLastLogin().then(
470
- (P) => {
471
- S || !P || (N(P), P.email && d((V) => V === "" ? P.email : V));
474
+ (A) => {
475
+ I || !A || (M(A), A.email && u((H) => H === "" ? A.email : H));
472
476
  },
473
477
  () => {
474
478
  }
475
479
  ), () => {
476
- S = !0;
480
+ I = !0;
477
481
  };
478
482
  }, [o]);
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;
483
+ const O = (I) => {
484
+ g(I), L(null), E(null), D(!1);
485
+ }, N = async (I) => {
486
+ if (I.preventDefault(), !_) {
487
+ if (L(null), E(null), l === "signup" && !U) {
488
+ if (!p.trim()) return;
485
489
  D(!0);
486
490
  return;
487
491
  }
488
- if (l === "signup" && p !== _) {
489
- I(i("auth.passwords_mismatch", "Passwords don't match"));
492
+ if (l === "signup" && x !== k) {
493
+ L(i("auth.passwords_mismatch", "Passwords don't match"));
490
494
  return;
491
495
  }
492
- y("email");
496
+ S("email");
493
497
  try {
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(
498
+ l === "signin" ? await o.signInWithEmail({ email: p, password: x }) : l === "signup" ? (await o.signUp({ email: p, password: x })).kind === "confirmation_required" && (y(""), g("signup_verify"), E(i("auth.check_email_message", "Check your email for a confirmation code."))) : l === "forgot" ? (await o.requestPasswordReset({ email: p }), g("reset_sent"), E(
495
499
  i("auth.reset_sent_message", "If that email exists, a reset code has been sent.")
496
- )) : l === "reset_verify" && (await o.verifyOtp({
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));
500
+ )) : l === "signup_verify" ? await o.verifyOtp({ email: p, token: m, type: "email" }) : l === "reset_verify" && (await o.verifyOtp({
501
+ email: p,
502
+ token: m,
503
+ type: x ? "recovery" : "email"
504
+ }), x && await o.updatePassword({ password: x }));
505
+ } catch (A) {
506
+ L(gt(A, l === "signup" ? "signup" : l === "signup_verify" || l === "reset_verify" ? "otp" : l === "forgot" ? "reset" : "signin", i));
503
507
  } finally {
504
- y(null);
508
+ S(null);
505
509
  }
506
510
  }
507
- }, B = async (S) => {
508
- if (!E) {
509
- y(S), I(null), j(null);
511
+ }, Z = async (I) => {
512
+ if (!_) {
513
+ S(I), L(null), E(null);
510
514
  try {
511
515
  await o.signInWithOAuth({
512
- provider: S,
513
- onPopupOpened: () => y(null)
516
+ provider: I,
517
+ onPopupOpened: () => S(null)
514
518
  });
515
- } catch (P) {
516
- if (P instanceof U && (P.code === "oauth_cancelled" || P.code === "oauth_timeout"))
519
+ } catch (A) {
520
+ if (A instanceof F && (A.code === "oauth_cancelled" || A.code === "oauth_timeout"))
517
521
  return;
518
- I(wt(P, "signin", i));
522
+ L(gt(A, "signin", i));
519
523
  } finally {
520
- y(null);
524
+ S(null);
521
525
  }
522
526
  }
523
- }, w = s.length > 0 && (l === "signin" || l === "signup"), m = l === "signin" || l === "signup" || l === "forgot", k = l === "signin" || l === "signup" && O;
527
+ }, w = s.length > 0 && (l === "signin" || l === "signup"), f = l === "signin" || l === "signup" || l === "forgot", C = l === "signin" || l === "signup" && U;
524
528
  return /* @__PURE__ */ c("div", { class: "flex flex-col gap-5", children: [
525
- /* @__PURE__ */ n(ae, { mode: l, customHeading: e.heading, customSubheading: e.subheading }),
529
+ /* @__PURE__ */ a(ne, { mode: l, customHeading: e.heading, customSubheading: e.subheading }),
526
530
  w ? /* @__PURE__ */ c("div", { class: "flex flex-col gap-2.5", children: [
527
- s.map((S) => /* @__PURE__ */ c("div", { class: "relative", children: [
531
+ s.map((I) => /* @__PURE__ */ c("div", { class: "relative", children: [
528
532
  /* @__PURE__ */ c(
529
533
  "button",
530
534
  {
531
535
  type: "button",
532
- onClick: () => B(S),
533
- disabled: E !== null,
536
+ onClick: () => Z(I),
537
+ disabled: _ !== null,
534
538
  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)]",
535
539
  children: [
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) })
540
+ _ === I ? /* @__PURE__ */ a("span", { class: "inline-block h-4 w-4 animate-spin rounded-full border-2 border-gray-300 border-t-gray-700" }) : /* @__PURE__ */ a(ge, { provider: I }),
541
+ /* @__PURE__ */ a("span", { children: ee(I, i) })
538
542
  ]
539
543
  }
540
544
  ),
541
- R?.method === S ? /* @__PURE__ */ n(bt, { email: R.email }) : null
542
- ] }, S)),
543
- /* @__PURE__ */ n(he, {})
545
+ P?.method === I ? /* @__PURE__ */ a(ue, { email: P.email }) : null
546
+ ] }, I)),
547
+ /* @__PURE__ */ a(he, {})
544
548
  ] }) : null,
545
- /* @__PURE__ */ c("form", { onSubmit: C, class: "flex flex-col gap-3", children: [
546
- m && /* @__PURE__ */ n(
547
- mt,
549
+ /* @__PURE__ */ c("form", { onSubmit: N, class: "flex flex-col gap-3", children: [
550
+ f && /* @__PURE__ */ a(
551
+ ft,
548
552
  {
549
553
  type: "email",
550
554
  placeholder: i("auth.email", "Email address"),
551
- value: h,
552
- onInput: d,
555
+ value: p,
556
+ onInput: u,
553
557
  autocomplete: "email",
554
558
  required: !0
555
559
  }
556
560
  ),
557
- k && /* @__PURE__ */ n(
561
+ C && /* @__PURE__ */ a(
558
562
  tt,
559
563
  {
560
564
  placeholder: i("auth.password", "Password"),
561
- value: p,
562
- onInput: x,
565
+ value: x,
566
+ onInput: y,
563
567
  autocomplete: l === "signin" ? "current-password" : "new-password",
564
568
  required: !0
565
569
  }
566
570
  ),
567
- l === "signup" && O && /* @__PURE__ */ n(
571
+ l === "signup" && U && /* @__PURE__ */ a(
568
572
  tt,
569
573
  {
570
574
  placeholder: i("auth.repeat_password", "Repeat password"),
571
- value: _,
572
- onInput: g,
575
+ value: k,
576
+ onInput: h,
573
577
  autocomplete: "new-password",
574
578
  required: !0
575
579
  }
576
580
  ),
577
- l === "reset_verify" && /* @__PURE__ */ c(Z, { children: [
578
- /* @__PURE__ */ n(
579
- mt,
580
- {
581
- type: "text",
582
- placeholder: i("auth.confirmation_code", "Confirmation code"),
583
- value: f,
584
- onInput: M,
585
- autocomplete: "one-time-code",
586
- inputMode: "numeric",
587
- required: !0
588
- }
589
- ),
590
- /* @__PURE__ */ n(
591
- tt,
592
- {
593
- placeholder: i(
594
- "auth.new_password_optional",
595
- "New password (optional — only for password reset)"
596
- ),
597
- value: p,
598
- onInput: x,
599
- autocomplete: "new-password"
600
- }
601
- )
602
- ] }),
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 }),
607
- l !== "reset_sent" && /* @__PURE__ */ c("div", { class: "relative", children: [
608
- /* @__PURE__ */ n(
609
- ce,
610
- {
611
- busy: E === "email",
612
- label: se(l, O, e.submit_label ?? e.heading, i)
613
- }
614
- ),
615
- l === "signin" && R?.method === "email" ? /* @__PURE__ */ n(bt, { email: R.email }) : null
616
- ] })
581
+ (l === "signup_verify" || l === "reset_verify") && /* @__PURE__ */ a(
582
+ ft,
583
+ {
584
+ type: "text",
585
+ placeholder: i("auth.confirmation_code", "Confirmation code"),
586
+ value: m,
587
+ onInput: z,
588
+ autocomplete: "one-time-code",
589
+ inputMode: "numeric",
590
+ required: !0
591
+ }
592
+ ),
593
+ l === "reset_verify" && /* @__PURE__ */ a(
594
+ tt,
595
+ {
596
+ placeholder: i(
597
+ "auth.new_password_optional",
598
+ "New password (optional — only for password reset)"
599
+ ),
600
+ value: x,
601
+ onInput: y,
602
+ autocomplete: "new-password"
603
+ }
604
+ ),
605
+ l === "reset_sent" && B && /* @__PURE__ */ a("p", { class: "rounded-2xl bg-gray-100 px-4 py-3 text-sm text-gray-600", children: B }),
606
+ l === "signin" && r && /* @__PURE__ */ a("div", { class: "flex justify-end text-sm", children: /* @__PURE__ */ a(W, { onClick: () => O("forgot"), children: i("auth.forgot_password", "Forgot password?") }) }),
607
+ T && /* @__PURE__ */ a("p", { class: "text-sm text-red-600", children: T }),
608
+ B && l !== "reset_sent" && /* @__PURE__ */ a("p", { class: "text-sm text-gray-500", children: B }),
609
+ l !== "reset_sent" && /* @__PURE__ */ a(
610
+ le,
611
+ {
612
+ busy: _ === "email",
613
+ label: oe(l, U, e.submit_label ?? e.heading, i)
614
+ }
615
+ )
617
616
  ] }),
618
- /* @__PURE__ */ n(
619
- le,
617
+ /* @__PURE__ */ a(
618
+ se,
620
619
  {
621
620
  mode: l,
622
621
  allowSignup: t,
623
- onSwitch: A
622
+ onSwitch: O
624
623
  }
625
624
  )
626
625
  ] });
627
626
  }
628
- function ae({
627
+ function ne({
629
628
  mode: e,
630
629
  customHeading: t,
631
630
  customSubheading: r
632
631
  }) {
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;
632
+ const { t: n } = v(), i = ae(e, n), o = e === "signin" || e === "signup", s = o && t ? t : i.title, d = o && r !== void 0 ? r || null : i.subtitle;
634
633
  return /* @__PURE__ */ c("div", { class: "flex flex-col gap-2", children: [
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
634
+ /* @__PURE__ */ a("h2", { class: "text-3xl font-bold tracking-tight text-gray-900", children: s }),
635
+ d ? /* @__PURE__ */ a("p", { class: "text-base leading-relaxed text-gray-600", children: d }) : null
637
636
  ] });
638
637
  }
639
- function oe(e, t) {
638
+ function ae(e, t) {
640
639
  switch (e) {
641
640
  case "signin":
642
641
  return {
@@ -669,48 +668,57 @@ function oe(e, t) {
669
668
  "Enter the code from your email and a new password."
670
669
  )
671
670
  };
671
+ case "signup_verify":
672
+ return {
673
+ title: t("auth.confirm_email_title", "Confirm your email"),
674
+ subtitle: t(
675
+ "auth.confirm_email_subtitle",
676
+ "Enter the code we sent to your email to finish creating your account."
677
+ )
678
+ };
672
679
  }
673
680
  }
674
- function se(e, t, r, a) {
681
+ function oe(e, t, r, n) {
675
682
  if (e === "signin" && r) return r;
676
683
  switch (e) {
677
684
  case "signin":
678
- return a("auth.log_in", "Sign In");
685
+ return n("auth.log_in", "Sign In");
679
686
  case "signup":
680
- return t ? a("auth.create_account", "Create Account") : a("auth.sign_up", "Sign Up");
687
+ return t ? n("auth.create_account", "Create Account") : n("auth.sign_up", "Sign Up");
681
688
  case "forgot":
682
- return a("auth.send_reset", "Send Reset Email");
689
+ return n("auth.send_reset", "Send Reset Email");
690
+ case "signup_verify":
683
691
  case "reset_verify":
684
- return a("auth.verify", "Verify");
692
+ return n("auth.verify", "Verify");
685
693
  default:
686
- return a("cta.continue", "Continue");
694
+ return n("cta.continue", "Continue");
687
695
  }
688
696
  }
689
- function le({
697
+ function se({
690
698
  mode: e,
691
699
  allowSignup: t,
692
700
  onSwitch: r
693
701
  }) {
694
- const { t: a } = v();
702
+ const { t: n } = v();
695
703
  return e === "signin" && t ? /* @__PURE__ */ c("p", { class: "text-center text-sm text-gray-600", children: [
696
- a("auth.no_account", "Don't have an account?"),
704
+ n("auth.no_account", "Don't have an account?"),
697
705
  " ",
698
- /* @__PURE__ */ n(W, { onClick: () => r("signup"), children: a("auth.sign_up_link", "Sign Up") })
699
- ] }) : e === "signup" ? /* @__PURE__ */ c("p", { class: "text-center text-sm text-gray-600", children: [
700
- a("auth.have_account", "Already have an account?"),
706
+ /* @__PURE__ */ a(W, { onClick: () => r("signup"), children: n("auth.sign_up_link", "Sign Up") })
707
+ ] }) : e === "signup" || e === "signup_verify" ? /* @__PURE__ */ c("p", { class: "text-center text-sm text-gray-600", children: [
708
+ n("auth.have_account", "Already have an account?"),
701
709
  " ",
702
- /* @__PURE__ */ n(W, { onClick: () => r("signin"), children: a("auth.log_in_link", "Log In") })
710
+ /* @__PURE__ */ a(W, { onClick: () => r("signin"), children: n("auth.log_in_link", "Log In") })
703
711
  ] }) : e === "forgot" || e === "reset_sent" || e === "reset_verify" ? /* @__PURE__ */ c("p", { class: "text-center text-sm text-gray-600", children: [
704
- a("auth.no_account", "Don't have an account?"),
712
+ n("auth.no_account", "Don't have an account?"),
705
713
  " ",
706
- /* @__PURE__ */ n(W, { onClick: () => r("signup"), children: a("auth.sign_up_link", "Sign Up") })
714
+ /* @__PURE__ */ a(W, { onClick: () => r("signup"), children: n("auth.sign_up_link", "Sign Up") })
707
715
  ] }) : null;
708
716
  }
709
717
  function W({
710
718
  onClick: e,
711
719
  children: t
712
720
  }) {
713
- return /* @__PURE__ */ n(
721
+ return /* @__PURE__ */ a(
714
722
  "button",
715
723
  {
716
724
  type: "button",
@@ -721,8 +729,8 @@ function W({
721
729
  }
722
730
  );
723
731
  }
724
- function ce({ busy: e, label: t }) {
725
- return /* @__PURE__ */ n(
732
+ function le({ busy: e, label: t }) {
733
+ return /* @__PURE__ */ a(
726
734
  "button",
727
735
  {
728
736
  type: "submit",
@@ -732,18 +740,18 @@ function ce({ busy: e, label: t }) {
732
740
  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%)",
733
741
  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)"
734
742
  },
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 })
743
+ children: e ? /* @__PURE__ */ a("span", { class: "relative z-10 inline-block h-4 w-4 animate-spin rounded-full border-2 border-white/40 border-t-white" }) : /* @__PURE__ */ a("span", { class: "relative z-10", children: t })
736
744
  }
737
745
  );
738
746
  }
739
- function mt({ type: e, placeholder: t, value: r, onInput: a, autocomplete: i, inputMode: o, required: s }) {
740
- return /* @__PURE__ */ n(
747
+ function ft({ type: e, placeholder: t, value: r, onInput: n, autocomplete: i, inputMode: o, required: s }) {
748
+ return /* @__PURE__ */ a(
741
749
  "input",
742
750
  {
743
751
  type: e,
744
752
  value: r,
745
753
  placeholder: t,
746
- onInput: (l) => a(l.target.value),
754
+ onInput: (d) => n(d.target.value),
747
755
  autocomplete: i,
748
756
  inputMode: o,
749
757
  required: s,
@@ -751,43 +759,43 @@ function mt({ type: e, placeholder: t, value: r, onInput: a, autocomplete: i, in
751
759
  }
752
760
  );
753
761
  }
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);
756
- T(() => {
757
- const p = u.current;
758
- p && p.value !== t && (p.value = t);
762
+ function tt({ placeholder: e, value: t, onInput: r, autocomplete: n, required: i }) {
763
+ const { t: o } = v(), [s, d] = b(!1), l = R(null);
764
+ j(() => {
765
+ const u = l.current;
766
+ u && u.value !== t && (u.value = t);
759
767
  }, [s, t]);
760
- const h = o("auth.show_password", "Show password"), d = o("auth.hide_password", "Hide password");
768
+ const g = o("auth.show_password", "Show password"), p = o("auth.hide_password", "Hide password");
761
769
  return /* @__PURE__ */ c("div", { class: "relative", children: [
762
- /* @__PURE__ */ n(
770
+ /* @__PURE__ */ a(
763
771
  "input",
764
772
  {
765
- ref: u,
773
+ ref: l,
766
774
  type: s ? "text" : "password",
767
775
  value: t,
768
776
  placeholder: e,
769
- onInput: (p) => r(p.target.value),
770
- autocomplete: a,
777
+ onInput: (u) => r(u.target.value),
778
+ autocomplete: n,
771
779
  required: i,
772
780
  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)]"
773
781
  }
774
782
  ),
775
- /* @__PURE__ */ n(
783
+ /* @__PURE__ */ a(
776
784
  "button",
777
785
  {
778
786
  type: "button",
779
- onClick: () => l((p) => !p),
780
- "aria-label": s ? d : h,
787
+ onClick: () => d((u) => !u),
788
+ "aria-label": s ? p : g,
781
789
  tabIndex: -1,
782
790
  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)]",
783
- children: s ? /* @__PURE__ */ n(ue, {}) : /* @__PURE__ */ n(de, {})
791
+ children: s ? /* @__PURE__ */ a(de, {}) : /* @__PURE__ */ a(ce, {})
784
792
  }
785
793
  )
786
794
  ] });
787
795
  }
788
- function de() {
796
+ function ce() {
789
797
  return /* @__PURE__ */ c("svg", { width: "18", height: "18", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [
790
- /* @__PURE__ */ n(
798
+ /* @__PURE__ */ a(
791
799
  "path",
792
800
  {
793
801
  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",
@@ -797,12 +805,12 @@ function de() {
797
805
  "stroke-linejoin": "round"
798
806
  }
799
807
  ),
800
- /* @__PURE__ */ n("circle", { cx: "10", cy: "10", r: "2.5", stroke: "currentColor", "stroke-width": "1.5" })
808
+ /* @__PURE__ */ a("circle", { cx: "10", cy: "10", r: "2.5", stroke: "currentColor", "stroke-width": "1.5" })
801
809
  ] });
802
810
  }
803
- function ue() {
811
+ function de() {
804
812
  return /* @__PURE__ */ c("svg", { width: "18", height: "18", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [
805
- /* @__PURE__ */ n(
813
+ /* @__PURE__ */ a(
806
814
  "path",
807
815
  {
808
816
  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",
@@ -812,7 +820,7 @@ function ue() {
812
820
  "stroke-linejoin": "round"
813
821
  }
814
822
  ),
815
- /* @__PURE__ */ n(
823
+ /* @__PURE__ */ a(
816
824
  "path",
817
825
  {
818
826
  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",
@@ -824,9 +832,9 @@ function ue() {
824
832
  )
825
833
  ] });
826
834
  }
827
- function bt({ email: e }) {
835
+ function ue({ email: e }) {
828
836
  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 });
837
+ return /* @__PURE__ */ a("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 });
830
838
  }
831
839
  function pe(e) {
832
840
  const [t, r] = e.split("@");
@@ -835,34 +843,35 @@ function pe(e) {
835
843
  function he() {
836
844
  const { t: e } = v();
837
845
  return /* @__PURE__ */ c("div", { class: "flex items-center gap-3 py-1 text-sm text-gray-400", children: [
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" })
846
+ /* @__PURE__ */ a("div", { class: "h-px flex-1 bg-gray-200" }),
847
+ /* @__PURE__ */ a("span", { children: e("auth.or", "or") }),
848
+ /* @__PURE__ */ a("div", { class: "h-px flex-1 bg-gray-200" })
841
849
  ] });
842
850
  }
843
851
  function ge({ provider: e }) {
844
852
  return e === "google" ? /* @__PURE__ */ c("svg", { width: "20", height: "20", viewBox: "0 0 18 18", "aria-hidden": "true", children: [
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" })
853
+ /* @__PURE__ */ a("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" }),
854
+ /* @__PURE__ */ a("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" }),
855
+ /* @__PURE__ */ a("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" }),
856
+ /* @__PURE__ */ a("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" })
849
857
  ] }) : e === "apple" ? (
850
858
  // viewBox 0 0 24 24 даёт воздух сверху/снизу пути, поэтому визуально
851
859
  // Apple-яблоко выглядит меньше Google. Компенсируем увеличенным
852
860
  // width/height — 26×26 даёт примерно equal optical size с Google 20×20.
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" }) });
861
+ /* @__PURE__ */ a("svg", { width: "26", height: "26", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ a("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" }) })
862
+ ) : e === "github" ? /* @__PURE__ */ a("svg", { width: "20", height: "20", viewBox: "0 0 16 16", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ a("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__ */ a("svg", { width: "18", height: "20", viewBox: "0 0 14 16", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ a("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" }) });
855
863
  }
856
864
  function fe({
857
865
  block: e,
858
866
  bootstrap: t,
859
867
  auth: r,
860
- authSession: a,
868
+ authSession: n,
861
869
  onBack: i,
862
870
  showBack: o = !0,
863
- intent: s = "preauth"
871
+ intent: s = "preauth",
872
+ initialMode: d
864
873
  }) {
865
- const { t: l } = v(), u = {
874
+ const { t: l } = v(), g = {
866
875
  bootstrap: t,
867
876
  selectedPriceId: null,
868
877
  setSelectedPriceId: () => {
@@ -870,8 +879,9 @@ function fe({
870
879
  onAction: () => {
871
880
  },
872
881
  auth: r,
873
- authSession: a
874
- }, h = s === "restore" ? {
882
+ authSession: n,
883
+ initialAuthMode: d
884
+ }, p = s === "restore" ? {
875
885
  ...e,
876
886
  heading: l("auth.restore_purchases_heading", "Restore Purchases"),
877
887
  subheading: l(
@@ -892,12 +902,12 @@ function fe({
892
902
  submit_label: l("auth.log_in", "Sign In")
893
903
  } : e;
894
904
  return /* @__PURE__ */ c("div", { class: "relative flex-1 min-h-0 overflow-y-auto p-6 sm:p-8", children: [
895
- o ? /* @__PURE__ */ n(we, { onClick: i, ariaLabel: l("nav.back_aria", "Back") }) : null,
896
- /* @__PURE__ */ n(Et, { block: h, ctx: u })
905
+ o ? /* @__PURE__ */ a(we, { onClick: i, ariaLabel: l("nav.back_aria", "Back") }) : null,
906
+ /* @__PURE__ */ a(Pt, { block: p, ctx: g })
897
907
  ] });
898
908
  }
899
909
  function we({ onClick: e, ariaLabel: t }) {
900
- return /* @__PURE__ */ n(
910
+ return /* @__PURE__ */ a(
901
911
  "button",
902
912
  {
903
913
  type: "button",
@@ -905,7 +915,7 @@ function we({ onClick: e, ariaLabel: t }) {
905
915
  "aria-label": t,
906
916
  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)]",
907
917
  children: /* @__PURE__ */ c("svg", { width: "18", height: "18", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [
908
- /* @__PURE__ */ n(
918
+ /* @__PURE__ */ a(
909
919
  "path",
910
920
  {
911
921
  d: "M5 8h8a4 4 0 0 1 0 8H9",
@@ -915,7 +925,7 @@ function we({ onClick: e, ariaLabel: t }) {
915
925
  "stroke-linejoin": "round"
916
926
  }
917
927
  ),
918
- /* @__PURE__ */ n(
928
+ /* @__PURE__ */ a(
919
929
  "path",
920
930
  {
921
931
  d: "M8 4 4 8l4 4",
@@ -929,70 +939,7 @@ function we({ onClick: e, ariaLabel: t }) {
929
939
  }
930
940
  );
931
941
  }
932
- function me({
933
- auth: e,
934
- onSuccess: t,
935
- onBack: r,
936
- heading: a,
937
- description: i
938
- }) {
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);
940
- T(() => () => {
941
- d.current = !1;
942
- }, []);
943
- const p = () => {
944
- h({ kind: "signing-in" }), (async () => {
945
- try {
946
- const x = await e.signInAnonymously();
947
- if (!d.current) return;
948
- t(x);
949
- } catch (x) {
950
- if (!d.current) return;
951
- h({
952
- kind: "error",
953
- message: x instanceof Error ? x.message : "Anonymous sign-in failed"
954
- });
955
- }
956
- })();
957
- };
958
- return T(() => {
959
- p();
960
- }, []), /* @__PURE__ */ c("div", { class: "flex flex-col gap-3", children: [
961
- r ? /* @__PURE__ */ n(
962
- "button",
963
- {
964
- type: "button",
965
- onClick: r,
966
- 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)]",
967
- children: o("nav.back", "← Back")
968
- }
969
- ) : null,
970
- /* @__PURE__ */ c("div", { class: "flex flex-col gap-1", children: [
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 })
973
- ] }),
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(
978
- "button",
979
- {
980
- type: "button",
981
- onClick: p,
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",
983
- children: o("anon.try_again", "Try again")
984
- }
985
- )
986
- ] }) : null
987
- ] });
988
- }
989
- function be() {
990
- return /* @__PURE__ */ c("svg", { class: "h-5 w-5 animate-spin text-[var(--pw-accent)]", viewBox: "0 0 24 24", fill: "none", children: [
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" })
993
- ] });
994
- }
995
- const jt = (e) => `pw-offer-${e}-start`;
942
+ const Tt = (e) => `pw-offer-${e}-start`;
996
943
  function et(e) {
997
944
  const t = e - Date.now();
998
945
  return t <= 0 ? { days: 0, hours: 0, minutes: 0, seconds: 0, expired: !0 } : {
@@ -1003,7 +950,7 @@ function et(e) {
1003
950
  expired: !1
1004
951
  };
1005
952
  }
1006
- function xe(e) {
953
+ function me(e) {
1007
954
  if (e.expires_at) {
1008
955
  const t = Date.parse(e.expires_at);
1009
956
  return Number.isFinite(t) ? t : null;
@@ -1011,7 +958,7 @@ function xe(e) {
1011
958
  if (e.duration_minutes && e.duration_minutes > 0) {
1012
959
  if (typeof window > "u") return null;
1013
960
  try {
1014
- const t = jt(e.id);
961
+ const t = Tt(e.id);
1015
962
  let r = window.localStorage.getItem(t);
1016
963
  return r || (r = (/* @__PURE__ */ new Date()).toISOString(), window.localStorage.setItem(t, r)), Date.parse(r) + e.duration_minutes * 6e4;
1017
964
  } catch {
@@ -1020,39 +967,39 @@ function xe(e) {
1020
967
  }
1021
968
  return null;
1022
969
  }
1023
- function zt(e, t) {
970
+ function Et(e, t) {
1024
971
  if (!e || e.length === 0) return null;
1025
972
  if (t) {
1026
- const r = e.find((a) => a.id === t);
973
+ const r = e.find((n) => n.id === t);
1027
974
  if (r) return r;
1028
975
  }
1029
976
  return e.find((r) => r.expires_at || r.duration_minutes) ?? null;
1030
977
  }
1031
- function Bt(e) {
1032
- const t = e ? xe(e) : null, [r, a] = b(
978
+ function jt(e) {
979
+ const t = e ? me(e) : null, [r, n] = b(
1033
980
  () => t !== null ? et(t) : null
1034
- ), i = F(t);
1035
- return i.current = t, T(() => {
981
+ ), i = R(t);
982
+ return i.current = t, j(() => {
1036
983
  if (t === null) {
1037
- a(null);
984
+ n(null);
1038
985
  return;
1039
986
  }
1040
- a(et(t));
987
+ n(et(t));
1041
988
  const o = setInterval(() => {
1042
989
  const s = et(i.current ?? 0);
1043
- if (a(s), s.expired && (clearInterval(o), e?.duration_minutes && typeof window < "u"))
990
+ if (n(s), s.expired && (clearInterval(o), e?.duration_minutes && typeof window < "u"))
1044
991
  try {
1045
- window.localStorage.removeItem(jt(e.id));
992
+ window.localStorage.removeItem(Tt(e.id));
1046
993
  } catch {
1047
994
  }
1048
995
  }, 1e3);
1049
996
  return () => clearInterval(o);
1050
997
  }, [t, e?.duration_minutes, e?.id]), r;
1051
998
  }
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;
1055
- const o = e.title ?? a.label ?? r("offer.limited_time", "Limited-time offer"), s = a.discount_percent ? `${o} ${a.discount_percent}%` : o;
999
+ function be({ block: e, ctx: t }) {
1000
+ const { t: r } = v(), n = Et(t.bootstrap.offers, e.offer_id), i = jt(n);
1001
+ if (!n || i === null || i.expired && !e.force) return null;
1002
+ const o = e.title ?? n.label ?? r("offer.limited_time", "Limited-time offer"), s = n.discount_percent ? `${o} ${n.discount_percent}%` : o;
1056
1003
  return /* @__PURE__ */ c(
1057
1004
  "div",
1058
1005
  {
@@ -1063,34 +1010,34 @@ function ve({ block: e, ctx: t }) {
1063
1010
  },
1064
1011
  role: "status",
1065
1012
  children: [
1066
- /* @__PURE__ */ n(Ft, {}),
1067
- /* @__PURE__ */ n("span", { children: s }),
1068
- /* @__PURE__ */ n(Ot, { value: i, t: r })
1013
+ /* @__PURE__ */ a(Bt, {}),
1014
+ /* @__PURE__ */ a("span", { children: s }),
1015
+ /* @__PURE__ */ a(zt, { value: i, t: r })
1069
1016
  ]
1070
1017
  }
1071
1018
  );
1072
1019
  }
1073
- function Ot({ value: e, t }) {
1020
+ function zt({ value: e, t }) {
1074
1021
  return /* @__PURE__ */ c("div", { class: "flex items-center gap-1 font-mono text-sm", children: [
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") })
1022
+ e.days > 0 ? /* @__PURE__ */ c(at, { children: [
1023
+ /* @__PURE__ */ a(V, { children: String(e.days) }),
1024
+ /* @__PURE__ */ a("span", { class: "text-xs", children: t("countdown.d", "d") })
1078
1025
  ] }) : null,
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") })
1026
+ /* @__PURE__ */ a(V, { children: String(e.hours).padStart(2, "0") }),
1027
+ /* @__PURE__ */ a("span", { class: "text-xs", children: t("countdown.h", "h") }),
1028
+ /* @__PURE__ */ a(V, { children: String(e.minutes).padStart(2, "0") }),
1029
+ /* @__PURE__ */ a("span", { class: "text-xs", children: t("countdown.m", "m") }),
1030
+ /* @__PURE__ */ a(V, { children: String(e.seconds).padStart(2, "0") }),
1031
+ /* @__PURE__ */ a("span", { class: "text-xs", children: t("countdown.s", "s") })
1085
1032
  ] });
1086
1033
  }
1087
- function $({ children: e }) {
1088
- return /* @__PURE__ */ n("span", { class: "rounded bg-black/20 px-1.5 py-0.5 text-xs font-bold", children: e });
1034
+ function V({ children: e }) {
1035
+ return /* @__PURE__ */ a("span", { class: "rounded bg-black/20 px-1.5 py-0.5 text-xs font-bold", children: e });
1089
1036
  }
1090
- function ye({ offer: e }) {
1091
- const { t } = v(), r = Bt(e);
1037
+ function xe({ offer: e }) {
1038
+ const { t } = v(), r = jt(e);
1092
1039
  if (r === null || r.expired) return null;
1093
- const a = e.label ?? t("offer.limited_time", "Limited-time offer"), i = e.discount_percent ? `${a} ${e.discount_percent}%` : a;
1040
+ const n = e.label ?? t("offer.limited_time", "Limited-time offer"), i = e.discount_percent ? `${n} ${e.discount_percent}%` : n;
1094
1041
  return /* @__PURE__ */ c(
1095
1042
  "div",
1096
1043
  {
@@ -1101,15 +1048,15 @@ function ye({ offer: e }) {
1101
1048
  },
1102
1049
  role: "status",
1103
1050
  children: [
1104
- /* @__PURE__ */ n(Ft, {}),
1105
- /* @__PURE__ */ n("span", { children: i }),
1106
- /* @__PURE__ */ n(Ot, { value: r, t })
1051
+ /* @__PURE__ */ a(Bt, {}),
1052
+ /* @__PURE__ */ a("span", { children: i }),
1053
+ /* @__PURE__ */ a(zt, { value: r, t })
1107
1054
  ]
1108
1055
  }
1109
1056
  );
1110
1057
  }
1111
- function Ft() {
1112
- return /* @__PURE__ */ n(
1058
+ function Bt() {
1059
+ return /* @__PURE__ */ a(
1113
1060
  "svg",
1114
1061
  {
1115
1062
  width: "16",
@@ -1117,7 +1064,7 @@ function Ft() {
1117
1064
  viewBox: "0 0 12 12",
1118
1065
  fill: "none",
1119
1066
  "aria-hidden": "true",
1120
- children: /* @__PURE__ */ n(
1067
+ children: /* @__PURE__ */ a(
1121
1068
  "path",
1122
1069
  {
1123
1070
  fill: "currentColor",
@@ -1127,44 +1074,41 @@ function Ft() {
1127
1074
  }
1128
1075
  );
1129
1076
  }
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,
1139
- max: it
1140
- })), (w.length < 1 || w.length > nt) && (A.message = i("support.message_length", "{min}–{max} characters", {
1077
+ const wt = 3, mt = 200, bt = 5e3, rt = 5, ye = 10 * 1024 * 1024, xt = ["image/jpeg", "image/png", "image/webp"], ve = /.+@.+\..+/;
1078
+ function ke({ client: e, authSession: t, origin: r, onBack: n }) {
1079
+ const { t: i } = v(), o = t?.user.email ?? "", s = o || null, [d, l] = b(o), [g, p] = b(""), [u, x] = b(""), [y, k] = b([]), [h, m] = b(!1), [z, _] = b(null), [S, T] = b({}), L = () => {
1080
+ const P = {}, M = (s ?? d).trim(), O = g.trim(), N = u.trim();
1081
+ return M ? ve.test(M.toLowerCase()) || (P.email = i("support.invalid_email", "Invalid email")) : P.email = i("support.required", "Required"), (O.length < wt || O.length > mt) && (P.subject = i("support.subject_length", "{min}–{max} characters", {
1082
+ min: wt,
1083
+ max: mt
1084
+ })), (N.length < 1 || N.length > bt) && (P.message = i("support.message_length", "{min}–{max} characters", {
1141
1085
  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 }));
1086
+ max: bt
1087
+ })), T(P), Object.keys(P).length === 0;
1088
+ }, B = async (P) => {
1089
+ if (P.preventDefault(), !h && L()) {
1090
+ m(!0), T((M) => ({ ...M, submit: void 0 }));
1147
1091
  try {
1148
- const C = (s ?? l).trim();
1092
+ const M = (s ?? d).trim();
1149
1093
  await e.createSupportTicket({
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 }));
1094
+ subject: g.trim(),
1095
+ content: u.trim(),
1096
+ email: M || void 0,
1097
+ files: y.length > 0 ? y : void 0
1098
+ }), _(M);
1099
+ } catch (M) {
1100
+ const O = M instanceof F && M.message || "Failed to send. Please try again.";
1101
+ T((N) => ({ ...N, submit: O }));
1158
1102
  } finally {
1159
- M(!1);
1103
+ m(!1);
1160
1104
  }
1161
1105
  }
1162
- }, D = () => {
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: [
1106
+ }, E = () => {
1107
+ p(""), x(""), k([]), T({}), _(null);
1108
+ }, U = "flex flex-col gap-3 bg-white px-6 pb-6 pt-3 sm:px-8", D = { boxShadow: "0 -4px 12px -4px rgba(15,23,42,0.06)" };
1109
+ return z ? /* @__PURE__ */ c("div", { class: "relative flex-1 min-h-0 flex flex-col", children: [
1166
1110
  /* @__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: [
1167
- /* @__PURE__ */ n(
1111
+ /* @__PURE__ */ a(
1168
1112
  "div",
1169
1113
  {
1170
1114
  class: "flex h-14 w-14 items-center justify-center rounded-full",
@@ -1174,7 +1118,7 @@ function _e({ client: e, authSession: t, origin: r, onBack: a }) {
1174
1118
  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)"
1175
1119
  },
1176
1120
  "aria-hidden": "true",
1177
- children: /* @__PURE__ */ n("svg", { viewBox: "0 0 24 24", class: "h-7 w-7", children: /* @__PURE__ */ n(
1121
+ children: /* @__PURE__ */ a("svg", { viewBox: "0 0 24 24", class: "h-7 w-7", children: /* @__PURE__ */ a(
1178
1122
  "path",
1179
1123
  {
1180
1124
  fill: "currentColor",
@@ -1183,32 +1127,32 @@ function _e({ client: e, authSession: t, origin: r, onBack: a }) {
1183
1127
  ) })
1184
1128
  }
1185
1129
  ),
1186
- /* @__PURE__ */ n("div", { class: "text-lg font-semibold tracking-tight text-gray-900", children: i("support.success_heading", "Request submitted") }),
1130
+ /* @__PURE__ */ a("div", { class: "text-lg font-semibold tracking-tight text-gray-900", children: i("support.success_heading", "Request submitted") }),
1187
1131
  /* @__PURE__ */ c("div", { class: "max-w-[320px] text-sm leading-relaxed text-gray-500", children: [
1188
1132
  i(
1189
1133
  "support.success_message_prefix",
1190
1134
  "We've received your message and will respond to"
1191
1135
  ),
1192
1136
  " ",
1193
- /* @__PURE__ */ n("b", { class: "text-gray-700", children: E }),
1137
+ /* @__PURE__ */ a("b", { class: "text-gray-700", children: z }),
1194
1138
  "."
1195
1139
  ] })
1196
1140
  ] }),
1197
- /* @__PURE__ */ n("div", { class: R, style: N, children: /* @__PURE__ */ c("div", { class: "flex items-center justify-center gap-3", children: [
1198
- /* @__PURE__ */ n(
1141
+ /* @__PURE__ */ a("div", { class: U, style: D, children: /* @__PURE__ */ c("div", { class: "flex items-center justify-center gap-3", children: [
1142
+ /* @__PURE__ */ a(
1199
1143
  "button",
1200
1144
  {
1201
1145
  type: "button",
1202
- onClick: a,
1146
+ onClick: n,
1203
1147
  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)]",
1204
1148
  children: r === "standalone" ? i("support.done_button", "Done") : i("nav.back_aria", "Back")
1205
1149
  }
1206
1150
  ),
1207
- /* @__PURE__ */ n(
1151
+ /* @__PURE__ */ a(
1208
1152
  "button",
1209
1153
  {
1210
1154
  type: "button",
1211
- onClick: D,
1155
+ onClick: E,
1212
1156
  class: "flex h-10 items-center justify-center rounded-xl px-4 text-sm font-semibold text-white transition-all hover:-translate-y-px hover:brightness-105 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--pw-accent)]",
1213
1157
  style: {
1214
1158
  background: "linear-gradient(180deg, color-mix(in srgb, var(--pw-accent) 92%, white), var(--pw-accent))",
@@ -1218,86 +1162,86 @@ function _e({ client: e, authSession: t, origin: r, onBack: a }) {
1218
1162
  }
1219
1163
  )
1220
1164
  ] }) })
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: [
1165
+ ] }) : /* @__PURE__ */ c("form", { onSubmit: B, class: "relative flex-1 min-h-0 flex flex-col", children: [
1166
+ /* @__PURE__ */ a(_e, { onClick: n, ariaLabel: i("nav.back_aria", "Back") }),
1167
+ /* @__PURE__ */ a("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: [
1224
1168
  /* @__PURE__ */ c("div", { class: "flex flex-col gap-2 pr-10", children: [
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.") })
1169
+ /* @__PURE__ */ a("h2", { class: "text-3xl font-bold tracking-tight text-gray-900", children: i("support.heading", "Support") }),
1170
+ /* @__PURE__ */ a("p", { class: "text-base leading-relaxed text-gray-600", children: i("support.instruction", "Please fill out the form below to submit your support request.") })
1227
1171
  ] }),
1228
1172
  /* @__PURE__ */ c("div", { class: "flex flex-col gap-3", children: [
1229
1173
  s ? /* @__PURE__ */ c("div", { class: "rounded-2xl bg-gray-100 px-5 py-3 text-sm text-gray-600", children: [
1230
1174
  i("support.sending_as", "Sending as"),
1231
1175
  " ",
1232
- /* @__PURE__ */ n("b", { class: "font-medium text-gray-900", children: s })
1233
- ] }) : /* @__PURE__ */ n(
1176
+ /* @__PURE__ */ a("b", { class: "font-medium text-gray-900", children: s })
1177
+ ] }) : /* @__PURE__ */ a(
1234
1178
  yt,
1235
1179
  {
1236
1180
  type: "email",
1237
1181
  placeholder: i("support.email_placeholder", "Enter your email *"),
1238
- value: l,
1239
- onInput: u,
1240
- error: L.email,
1182
+ value: d,
1183
+ onInput: l,
1184
+ error: S.email,
1241
1185
  autocomplete: "email",
1242
1186
  required: !0
1243
1187
  }
1244
1188
  ),
1245
- /* @__PURE__ */ n(
1189
+ /* @__PURE__ */ a(
1246
1190
  yt,
1247
1191
  {
1248
1192
  type: "text",
1249
1193
  placeholder: i("support.subject_placeholder", "Enter your subject *"),
1250
- value: h,
1251
- onInput: d,
1252
- error: L.subject,
1194
+ value: g,
1195
+ onInput: p,
1196
+ error: S.subject,
1253
1197
  required: !0
1254
1198
  }
1255
1199
  ),
1256
- /* @__PURE__ */ n(
1257
- Ce,
1200
+ /* @__PURE__ */ a(
1201
+ Se,
1258
1202
  {
1259
1203
  placeholder: i("support.message_placeholder", "Enter your message *"),
1260
- value: p,
1204
+ value: u,
1261
1205
  onInput: x,
1262
- error: L.message,
1206
+ error: S.message,
1263
1207
  required: !0
1264
1208
  }
1265
1209
  ),
1266
- /* @__PURE__ */ n(Ie, { files: _, onChange: g, disabled: f })
1210
+ /* @__PURE__ */ a(Ce, { files: y, onChange: k, disabled: h })
1267
1211
  ] })
1268
1212
  ] }) }),
1269
- /* @__PURE__ */ c("div", { class: R, style: N, children: [
1270
- L.submit && /* @__PURE__ */ n("p", { class: "text-sm text-red-600", children: L.submit }),
1213
+ /* @__PURE__ */ c("div", { class: U, style: D, children: [
1214
+ S.submit && /* @__PURE__ */ a("p", { class: "text-sm text-red-600", children: S.submit }),
1271
1215
  /* @__PURE__ */ c("div", { class: "flex items-center justify-end gap-3", children: [
1272
- /* @__PURE__ */ n(
1216
+ /* @__PURE__ */ a(
1273
1217
  "button",
1274
1218
  {
1275
1219
  type: "button",
1276
- onClick: a,
1277
- disabled: f,
1220
+ onClick: n,
1221
+ disabled: h,
1278
1222
  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)]",
1279
1223
  children: r === "standalone" ? i("support.close_button", "Close") : i("nav.back_aria", "Back")
1280
1224
  }
1281
1225
  ),
1282
- /* @__PURE__ */ n(
1226
+ /* @__PURE__ */ a(
1283
1227
  "button",
1284
1228
  {
1285
1229
  type: "submit",
1286
- disabled: !z || f,
1230
+ disabled: h,
1287
1231
  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)]",
1288
1232
  style: {
1289
1233
  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%)",
1290
1234
  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)"
1291
1235
  },
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") })
1236
+ children: h ? /* @__PURE__ */ a("span", { class: "relative z-10 inline-block h-4 w-4 animate-spin rounded-full border-2 border-white/40 border-t-white" }) : /* @__PURE__ */ a("span", { class: "relative z-10", children: i("support.send_button", "Send") })
1293
1237
  }
1294
1238
  )
1295
1239
  ] })
1296
1240
  ] })
1297
1241
  ] });
1298
1242
  }
1299
- function Se({ onClick: e, ariaLabel: t }) {
1300
- return /* @__PURE__ */ n(
1243
+ function _e({ onClick: e, ariaLabel: t }) {
1244
+ return /* @__PURE__ */ a(
1301
1245
  "button",
1302
1246
  {
1303
1247
  type: "button",
@@ -1305,7 +1249,7 @@ function Se({ onClick: e, ariaLabel: t }) {
1305
1249
  "aria-label": t,
1306
1250
  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)]",
1307
1251
  children: /* @__PURE__ */ c("svg", { width: "18", height: "18", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [
1308
- /* @__PURE__ */ n(
1252
+ /* @__PURE__ */ a(
1309
1253
  "path",
1310
1254
  {
1311
1255
  d: "M5 8h8a4 4 0 0 1 0 8H9",
@@ -1315,7 +1259,7 @@ function Se({ onClick: e, ariaLabel: t }) {
1315
1259
  "stroke-linejoin": "round"
1316
1260
  }
1317
1261
  ),
1318
- /* @__PURE__ */ n(
1262
+ /* @__PURE__ */ a(
1319
1263
  "path",
1320
1264
  {
1321
1265
  d: "M8 4 4 8l4 4",
@@ -1333,36 +1277,36 @@ function yt({
1333
1277
  type: e,
1334
1278
  placeholder: t,
1335
1279
  value: r,
1336
- onInput: a,
1280
+ onInput: n,
1337
1281
  error: i,
1338
1282
  autocomplete: o,
1339
1283
  required: s
1340
1284
  }) {
1341
1285
  return /* @__PURE__ */ c("div", { children: [
1342
- /* @__PURE__ */ n(
1286
+ /* @__PURE__ */ a(
1343
1287
  "input",
1344
1288
  {
1345
1289
  type: e,
1346
1290
  value: r,
1347
1291
  placeholder: t,
1348
- onInput: (l) => a(l.target.value),
1292
+ onInput: (d) => n(d.target.value),
1349
1293
  autocomplete: o,
1350
1294
  required: s,
1351
1295
  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)]"}`
1352
1296
  }
1353
1297
  ),
1354
- i && /* @__PURE__ */ n("span", { class: "mt-1 ml-2 block text-sm text-red-600", children: i })
1298
+ i && /* @__PURE__ */ a("span", { class: "mt-1 ml-2 block text-sm text-red-600", children: i })
1355
1299
  ] });
1356
1300
  }
1357
- function Ce({
1301
+ function Se({
1358
1302
  placeholder: e,
1359
1303
  value: t,
1360
1304
  onInput: r,
1361
- error: a,
1305
+ error: n,
1362
1306
  required: i
1363
1307
  }) {
1364
1308
  return /* @__PURE__ */ c("div", { children: [
1365
- /* @__PURE__ */ n(
1309
+ /* @__PURE__ */ a(
1366
1310
  "textarea",
1367
1311
  {
1368
1312
  value: t,
@@ -1370,56 +1314,56 @@ function Ce({
1370
1314
  onInput: (o) => r(o.target.value),
1371
1315
  required: i,
1372
1316
  rows: 5,
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)]"}`
1317
+ 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 ${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)]"}`
1374
1318
  }
1375
1319
  ),
1376
- a && /* @__PURE__ */ n("span", { class: "mt-1 ml-2 block text-sm text-red-600", children: a })
1320
+ n && /* @__PURE__ */ a("span", { class: "mt-1 ml-2 block text-sm text-red-600", children: n })
1377
1321
  ] });
1378
1322
  }
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 }));
1323
+ function Ce({ files: e, onChange: t, disabled: r }) {
1324
+ const { t: n } = v(), i = R(null), [o, s] = b(!1), [d, l] = b(null), g = (p) => {
1325
+ if (!p || r) return;
1326
+ l(null);
1327
+ const u = Array.from(p);
1328
+ if (e.length + u.length > rt) {
1329
+ l(n("support.too_many_files", "Up to {max} files", { max: rt }));
1386
1330
  return;
1387
1331
  }
1388
- const x = p.filter(
1389
- (_) => xt.includes(_.type) && _.size <= ke
1332
+ const x = u.filter(
1333
+ (y) => xt.includes(y.type) && y.size <= ye
1390
1334
  );
1391
- if (x.length !== p.length) {
1392
- u(a("support.invalid_file", "Only JPEG/PNG/WebP, ≤ 10MB each"));
1335
+ if (x.length !== u.length) {
1336
+ l(n("support.invalid_file", "Only JPEG/PNG/WebP, ≤ 10MB each"));
1393
1337
  return;
1394
1338
  }
1395
1339
  t([...e, ...x]);
1396
1340
  };
1397
1341
  return /* @__PURE__ */ c("div", { children: [
1398
- /* @__PURE__ */ n("span", { class: "text-xs font-medium text-gray-700", children: a("support.attachments_label", "Attachments (optional)") }),
1342
+ /* @__PURE__ */ a("span", { class: "text-xs font-medium text-gray-700", children: n("support.attachments_label", "Attachments (optional)") }),
1399
1343
  /* @__PURE__ */ c(
1400
1344
  "div",
1401
1345
  {
1402
1346
  role: "button",
1403
1347
  tabIndex: 0,
1404
- "aria-label": a("support.attachments_aria", "Attachments upload"),
1348
+ "aria-label": n("support.attachments_aria", "Attachments upload"),
1405
1349
  onClick: () => !r && i.current?.click(),
1406
- onDragOver: (d) => {
1407
- d.preventDefault(), r || s(!0);
1350
+ onDragOver: (p) => {
1351
+ p.preventDefault(), r || s(!0);
1408
1352
  },
1409
1353
  onDragLeave: () => s(!1),
1410
- onDrop: (d) => {
1411
- d.preventDefault(), s(!1), h(d.dataTransfer?.files ?? null);
1354
+ onDrop: (p) => {
1355
+ p.preventDefault(), s(!1), g(p.dataTransfer?.files ?? null);
1412
1356
  },
1413
1357
  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" : ""}`,
1414
1358
  children: [
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
1359
+ /* @__PURE__ */ a("div", { class: "text-xs text-gray-500", children: n("support.dropzone_text", "Drop images here or click to select") }),
1360
+ /* @__PURE__ */ a("div", { class: "mt-0.5 text-[11px] text-gray-400", children: n("support.file_requirements", "JPEG/PNG/WebP, up to {max} files, ≤ 10MB each", {
1361
+ max: rt
1418
1362
  }) })
1419
1363
  ]
1420
1364
  }
1421
1365
  ),
1422
- /* @__PURE__ */ n(
1366
+ /* @__PURE__ */ a(
1423
1367
  "input",
1424
1368
  {
1425
1369
  ref: i,
@@ -1427,66 +1371,66 @@ function Ie({ files: e, onChange: t, disabled: r }) {
1427
1371
  multiple: !0,
1428
1372
  accept: xt.join(","),
1429
1373
  class: "hidden",
1430
- onChange: (d) => {
1431
- h(d.target.files), d.currentTarget.value = "";
1374
+ onChange: (p) => {
1375
+ g(p.target.files), p.currentTarget.value = "";
1432
1376
  }
1433
1377
  }
1434
1378
  ),
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(
1379
+ d && /* @__PURE__ */ a("p", { class: "mt-1 text-xs text-red-600", children: d }),
1380
+ e.length > 0 && /* @__PURE__ */ a("ul", { class: "mt-2 flex flex-col gap-1", children: e.map((p, u) => /* @__PURE__ */ c(
1437
1381
  "li",
1438
1382
  {
1439
1383
  class: "flex items-center justify-between gap-2 rounded bg-gray-50 px-2 py-1 text-xs",
1440
1384
  children: [
1441
- /* @__PURE__ */ n("span", { class: "truncate text-gray-700", children: d.name }),
1442
- /* @__PURE__ */ n(
1385
+ /* @__PURE__ */ a("span", { class: "truncate text-gray-700", children: p.name }),
1386
+ /* @__PURE__ */ a(
1443
1387
  "button",
1444
1388
  {
1445
1389
  type: "button",
1446
1390
  onClick: () => {
1447
1391
  const x = [...e];
1448
- x.splice(p, 1), t(x);
1392
+ x.splice(u, 1), t(x);
1449
1393
  },
1450
1394
  disabled: r,
1451
1395
  class: "text-gray-500 hover:text-red-600 disabled:cursor-not-allowed disabled:opacity-60",
1452
- "aria-label": a("support.remove_file_aria", "Remove {filename}", { filename: d.name }),
1396
+ "aria-label": n("support.remove_file_aria", "Remove {filename}", { filename: p.name }),
1453
1397
  children: "✕"
1454
1398
  }
1455
1399
  )
1456
1400
  ]
1457
1401
  },
1458
- `${d.name}-${d.size}-${p}`
1402
+ `${p.name}-${p.size}-${u}`
1459
1403
  )) })
1460
1404
  ] });
1461
1405
  }
1462
- const Ae = {
1406
+ const Ie = {
1463
1407
  day: "cta.get_plan_daily",
1464
1408
  week: "cta.get_plan_weekly",
1465
1409
  month: "cta.get_plan_monthly",
1466
1410
  year: "cta.get_plan_yearly"
1467
- }, Me = {
1411
+ }, Ae = {
1468
1412
  day: "Get Daily Plan",
1469
1413
  week: "Get Weekly Plan",
1470
1414
  month: "Get Monthly Plan",
1471
1415
  year: "Get Yearly Plan"
1472
1416
  };
1473
- function Le(e, t, r, a) {
1474
- if (t === "close") return a("cta.close", "Close");
1475
- if (!e) return a("cta.continue", "Continue");
1417
+ function Me(e, t, r, n) {
1418
+ if (t === "close") return n("cta.close", "Close");
1419
+ if (!e) return n("cta.continue", "Continue");
1476
1420
  if (!r && e.trial_days && e.interval && e.interval !== "lifetime")
1477
- return a("cta.start_trial", "Start {days}-Day Free Trial", { days: e.trial_days });
1421
+ return n("cta.start_trial", "Start {days}-Day Free Trial", { days: e.trial_days });
1478
1422
  if (!e.interval || e.interval === "lifetime")
1479
- return a("cta.get_lifetime_access", "Get Lifetime Access");
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)
1423
+ return n("cta.get_lifetime_access", "Get Lifetime Access");
1424
+ const i = Ie[e.interval];
1425
+ return i ? n(i, Ae[e.interval]) : n("cta.get_plan_generic", "Get {interval} Plan", {
1426
+ interval: Le(e.interval)
1483
1427
  });
1484
1428
  }
1485
- function Pe(e) {
1429
+ function Le(e) {
1486
1430
  return e.length ? e[0].toUpperCase() + e.slice(1) : e;
1487
1431
  }
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);
1432
+ function Pe({ block: e, ctx: t }) {
1433
+ const { t: r } = v(), [n, i] = b(!1), o = e.priceId ?? t.selectedPriceId, s = n || e.action === "checkout" && !o, d = o ? t.bootstrap.prices.find((u) => u.id === o) ?? null : null, l = t.bootstrap.user?.had_previous_trial ?? !1, g = e.label ?? Me(d, e.action, l, r);
1490
1434
  return /* @__PURE__ */ c(
1491
1435
  "button",
1492
1436
  {
@@ -1508,7 +1452,7 @@ function Te({ block: e, ctx: t }) {
1508
1452
  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)"
1509
1453
  },
1510
1454
  children: [
1511
- /* @__PURE__ */ n(
1455
+ /* @__PURE__ */ a(
1512
1456
  "span",
1513
1457
  {
1514
1458
  class: "absolute inset-0 opacity-40",
@@ -1518,19 +1462,19 @@ function Te({ block: e, ctx: t }) {
1518
1462
  "aria-hidden": "true"
1519
1463
  }
1520
1464
  ),
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 })
1465
+ n ? /* @__PURE__ */ a("span", { class: "relative z-10 inline-block h-4 w-4 animate-spin rounded-full border-2 border-white/40 border-t-white" }) : /* @__PURE__ */ a("span", { class: "relative z-10", children: g })
1522
1466
  ]
1523
1467
  }
1524
1468
  );
1525
1469
  }
1526
- function Ee({ ctx: e }) {
1527
- const { t } = v(), r = e.authSession, a = e.auth, [i, o] = b(!1), s = () => e.onAction("support");
1470
+ function Te({ ctx: e }) {
1471
+ const { t } = v(), r = e.authSession, n = e.auth, [i, o] = b(!1), s = () => e.onAction("support");
1528
1472
  if (r && !r.user.is_anonymous) {
1529
- const l = async () => {
1530
- if (!(!a || i)) {
1473
+ const d = async () => {
1474
+ if (!(!n || i)) {
1531
1475
  o(!0);
1532
1476
  try {
1533
- await a.signOut();
1477
+ await n.signOut();
1534
1478
  } catch {
1535
1479
  } finally {
1536
1480
  o(!1);
@@ -1541,19 +1485,19 @@ function Ee({ ctx: e }) {
1541
1485
  /* @__PURE__ */ c("span", { children: [
1542
1486
  t("session.signed_in_as_prefix", "Signed in as"),
1543
1487
  " ",
1544
- /* @__PURE__ */ n("b", { class: "font-medium text-gray-700", children: r.user.email })
1488
+ /* @__PURE__ */ a("b", { class: "font-medium text-gray-700", children: r.user.email })
1545
1489
  ] }),
1546
1490
  /* @__PURE__ */ c("div", { class: "flex items-center justify-center gap-3", children: [
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") })
1491
+ /* @__PURE__ */ a(G, { onClick: d, disabled: !n || i, children: i ? t("session.signing_out", "Signing out…") : t("session.sign_out", "Sign Out") }),
1492
+ /* @__PURE__ */ a(vt, {}),
1493
+ /* @__PURE__ */ a(G, { onClick: s, children: t("session.contact_support", "Contact Support") })
1550
1494
  ] })
1551
1495
  ] });
1552
1496
  }
1553
1497
  return /* @__PURE__ */ c("div", { class: "-mt-3 flex items-center justify-center gap-3 pt-1 text-center text-[13px]", children: [
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") })
1498
+ /* @__PURE__ */ a(G, { onClick: () => e.onAction("restore"), children: t("session.restore_purchases", "Restore purchases") }),
1499
+ /* @__PURE__ */ a(vt, {}),
1500
+ /* @__PURE__ */ a(G, { onClick: s, children: t("session.contact_support", "Contact Support") })
1557
1501
  ] });
1558
1502
  }
1559
1503
  function G({
@@ -1561,7 +1505,7 @@ function G({
1561
1505
  disabled: t,
1562
1506
  children: r
1563
1507
  }) {
1564
- return /* @__PURE__ */ n(
1508
+ return /* @__PURE__ */ a(
1565
1509
  "button",
1566
1510
  {
1567
1511
  type: "button",
@@ -1573,12 +1517,12 @@ function G({
1573
1517
  }
1574
1518
  );
1575
1519
  }
1576
- function kt() {
1577
- return /* @__PURE__ */ n("span", { class: "h-1 w-1 rounded-full bg-gray-300", "aria-hidden": "true" });
1520
+ function vt() {
1521
+ return /* @__PURE__ */ a("span", { class: "h-1 w-1 rounded-full bg-gray-300", "aria-hidden": "true" });
1578
1522
  }
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(
1523
+ function Ee({ block: e }) {
1524
+ return e.items.length ? /* @__PURE__ */ a("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: [
1525
+ /* @__PURE__ */ a(
1582
1526
  "svg",
1583
1527
  {
1584
1528
  width: "18",
@@ -1587,7 +1531,7 @@ function je({ block: e }) {
1587
1531
  fill: "none",
1588
1532
  class: "mt-0.5 flex-shrink-0 text-emerald-500",
1589
1533
  "aria-hidden": "true",
1590
- children: /* @__PURE__ */ n(
1534
+ children: /* @__PURE__ */ a(
1591
1535
  "path",
1592
1536
  {
1593
1537
  d: "M4 10.5l3.5 3.5 8.5-8.5",
@@ -1600,30 +1544,30 @@ function je({ block: e }) {
1600
1544
  }
1601
1545
  ),
1602
1546
  /* @__PURE__ */ c("div", { class: "flex flex-col gap-0.5", children: [
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
1547
+ /* @__PURE__ */ a("span", { class: "font-medium leading-snug text-gray-900", children: t.name }),
1548
+ t.desc ? /* @__PURE__ */ a("span", { class: "text-xs leading-relaxed text-gray-400", children: t.desc }) : null
1605
1549
  ] })
1606
1550
  ] }, t.id)) }) : null;
1607
1551
  }
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);
1552
+ function je({ block: e }) {
1553
+ const { t } = v(), r = e.title ?? t("pricing.money_back", "30-day money-back guarantee"), n = e.subtitle, i = (e.icon ?? "dollar_shield") !== "none", o = ze(r);
1610
1554
  return /* @__PURE__ */ c("div", { class: "flex flex-col items-center gap-1.5 border-b-1 pb-4 mb-1 border-gray-100", children: [
1611
1555
  /* @__PURE__ */ c("div", { class: "inline-flex items-center gap-2 text-[12px] text-gray-700", children: [
1612
- i ? /* @__PURE__ */ n(Oe, {}) : null,
1556
+ i ? /* @__PURE__ */ a(Be, {}) : null,
1613
1557
  o ? /* @__PURE__ */ c("span", { children: [
1614
- /* @__PURE__ */ n("b", { class: "font-bold text-gray-900", children: o.bold }),
1558
+ /* @__PURE__ */ a("b", { class: "font-bold text-gray-900", children: o.bold }),
1615
1559
  " ",
1616
- /* @__PURE__ */ n("span", { class: "font-medium", children: o.rest })
1617
- ] }) : /* @__PURE__ */ n("span", { class: "font-medium", children: r })
1560
+ /* @__PURE__ */ a("span", { class: "font-medium", children: o.rest })
1561
+ ] }) : /* @__PURE__ */ a("span", { class: "font-medium", children: r })
1618
1562
  ] }),
1619
- a ? /* @__PURE__ */ n("span", { class: "text-center text-xs leading-relaxed text-gray-500", children: a }) : null
1563
+ n ? /* @__PURE__ */ a("span", { class: "text-center text-xs leading-relaxed text-gray-500", children: n }) : null
1620
1564
  ] });
1621
1565
  }
1622
- function Be(e) {
1566
+ function ze(e) {
1623
1567
  const t = e.match(/^(\d+[-\s]?days?)\s+(.+)$/i);
1624
1568
  return t ? { bold: t[1], rest: t[2] } : null;
1625
1569
  }
1626
- function Oe() {
1570
+ function Be() {
1627
1571
  return /* @__PURE__ */ c(
1628
1572
  "svg",
1629
1573
  {
@@ -1635,7 +1579,7 @@ function Oe() {
1635
1579
  class: "flex-shrink-0 text-emerald-500",
1636
1580
  "aria-hidden": "true",
1637
1581
  children: [
1638
- /* @__PURE__ */ n(
1582
+ /* @__PURE__ */ a(
1639
1583
  "path",
1640
1584
  {
1641
1585
  d: "M12 2 4 5v6c0 5.25 3.5 9.5 8 11 4.5-1.5 8-5.75 8-11V5l-8-3Z",
@@ -1644,7 +1588,7 @@ function Oe() {
1644
1588
  "stroke-linejoin": "round"
1645
1589
  }
1646
1590
  ),
1647
- /* @__PURE__ */ n(
1591
+ /* @__PURE__ */ a(
1648
1592
  "path",
1649
1593
  {
1650
1594
  d: "m9 12 2 2 4-4",
@@ -1658,22 +1602,22 @@ function Oe() {
1658
1602
  }
1659
1603
  );
1660
1604
  }
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; )
1666
- a -= 1, e.style.fontSize = `${a}px`;
1605
+ const Ot = 24, Oe = 16, Fe = 2;
1606
+ function Re(e, t) {
1607
+ const r = t * Fe;
1608
+ let n = Ot;
1609
+ for (e.style.fontSize = `${n}px`; e.scrollHeight > r && n > Oe; )
1610
+ n -= 1, e.style.fontSize = `${n}px`;
1667
1611
  }
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;
1670
- return T(() => {
1612
+ function Ue({ block: e, ctx: t }) {
1613
+ const r = e.level ?? 1, n = `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 = R(null), s = r === 1 && !!t.bootstrap.settings.title_auto_fit;
1614
+ return j(() => {
1671
1615
  if (!s || !o.current) return;
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 });
1616
+ const d = getComputedStyle(o.current), l = parseFloat(d.lineHeight) || Ot * 1.5;
1617
+ Re(o.current, l);
1618
+ }, [s, e.text]), /* @__PURE__ */ a(n, { ref: o, class: i, children: e.text });
1675
1619
  }
1676
- function Ne(e) {
1620
+ function De(e) {
1677
1621
  const t = e.local ?? { currency: e.currency, amount: e.amount };
1678
1622
  if (e.interval === "year") {
1679
1623
  const r = (e.interval_count ?? 1) * 12;
@@ -1681,10 +1625,10 @@ function Ne(e) {
1681
1625
  }
1682
1626
  return { amount: t.amount, currency: t.currency };
1683
1627
  }
1684
- function ot(e, t) {
1628
+ function it(e, t) {
1685
1629
  const r = e % 1 !== 0 ? 2 : 0;
1686
1630
  try {
1687
- const a = new Intl.NumberFormat(void 0, {
1631
+ const n = new Intl.NumberFormat(void 0, {
1688
1632
  style: "currency",
1689
1633
  currency: t,
1690
1634
  currencyDisplay: "narrowSymbol",
@@ -1692,20 +1636,20 @@ function ot(e, t) {
1692
1636
  minimumFractionDigits: r
1693
1637
  }).formatToParts(e);
1694
1638
  let i = "", o = "";
1695
- for (const s of a)
1639
+ for (const s of n)
1696
1640
  s.type === "currency" ? i = s.value : s.type !== "literal" && (o += s.value);
1697
1641
  return { currency: i || t, amount: o.trim() };
1698
1642
  } catch {
1699
1643
  return { currency: t, amount: String(e) };
1700
1644
  }
1701
1645
  }
1702
- function lt(e, t) {
1703
- const { amount: r, currency: a } = Ne(e);
1646
+ function ot(e, t) {
1647
+ const { amount: r, currency: n } = De(e);
1704
1648
  if (!t) {
1705
- const { currency: l, amount: u } = ot(r, a);
1706
- return { currency: l, amount: u, originalAmount: null };
1649
+ const { currency: d, amount: l } = it(r, n);
1650
+ return { currency: d, amount: l, originalAmount: null };
1707
1651
  }
1708
- const i = r * (1 - t / 100), o = ot(i, a), s = ot(r, a);
1652
+ const i = r * (1 - t / 100), o = it(i, n), s = it(r, n);
1709
1653
  return {
1710
1654
  currency: o.currency,
1711
1655
  amount: o.amount,
@@ -1721,42 +1665,42 @@ function q(e, t) {
1721
1665
  (i) => i.price_id == null && i.discount_percent && i.discount_percent > 0
1722
1666
  ) ?? null);
1723
1667
  }
1724
- function Ut(e, t) {
1668
+ function Ft(e, t) {
1725
1669
  if (e.label) return e.label.toUpperCase();
1726
1670
  if (!e.interval || e.interval === "lifetime")
1727
1671
  return t("pricing.plan_label.lifetime", "LIFETIME");
1728
- const a = {
1672
+ const n = {
1729
1673
  day: { key: "pricing.plan_label.daily", fallback: "DAILY PLAN" },
1730
1674
  week: { key: "pricing.plan_label.weekly", fallback: "WEEKLY PLAN" },
1731
1675
  month: { key: "pricing.plan_label.monthly", fallback: "MONTHLY PLAN" },
1732
1676
  year: { key: "pricing.plan_label.yearly", fallback: "YEARLY PLAN" }
1733
1677
  }[e.interval];
1734
- return a ? t(a.key, a.fallback) : `${e.interval.toUpperCase()} PLAN`;
1678
+ return n ? t(n.key, n.fallback) : `${e.interval.toUpperCase()} PLAN`;
1735
1679
  }
1736
- function ct(e, t) {
1680
+ function st(e, t) {
1737
1681
  if (!e.interval || e.interval === "lifetime")
1738
1682
  return t("pricing.interval.lifetime_short", "lifetime");
1739
1683
  if (e.interval === "year") return t("pricing.interval.month", "month");
1740
1684
  const r = e.interval_count ?? 1;
1741
1685
  return r === 1 ? t(`pricing.interval.${e.interval}`, e.interval) : `${r} ${e.interval}s`;
1742
1686
  }
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));
1687
+ function Ne({ block: e, ctx: t }) {
1688
+ const { t: r } = v(), n = e.priceIds && e.priceIds.length > 0 ? new Set(e.priceIds) : null, i = t.bootstrap.prices.filter((s) => !n || n.has(s.id));
1745
1689
  if (i.length === 0)
1746
- return /* @__PURE__ */ n("p", { class: "text-sm text-gray-500", children: r("pricing.no_prices", "No prices available.") });
1690
+ return /* @__PURE__ */ a("p", { class: "text-sm text-gray-500", children: r("pricing.no_prices", "No prices available.") });
1747
1691
  const o = e.popular_label ?? r("pricing.most_popular", "Most popular");
1748
1692
  if (e.view === "compact")
1749
- return /* @__PURE__ */ n(
1693
+ return /* @__PURE__ */ a(
1750
1694
  "div",
1751
1695
  {
1752
1696
  class: "flex w-full flex-col rounded-xl border border-gray-200 bg-gray-50",
1753
1697
  role: "radiogroup",
1754
1698
  "aria-label": r("pricing.plans_aria", "Plans"),
1755
- children: i.map((s, l) => /* @__PURE__ */ n(
1756
- $e,
1699
+ children: i.map((s, d) => /* @__PURE__ */ a(
1700
+ He,
1757
1701
  {
1758
1702
  price: s,
1759
- isLast: l === i.length - 1,
1703
+ isLast: d === i.length - 1,
1760
1704
  isPopular: e.popular_price_id === s.id,
1761
1705
  popularLabel: o,
1762
1706
  offer: q(t.bootstrap.offers, s.id),
@@ -1771,49 +1715,49 @@ function He({ block: e, ctx: t }) {
1771
1715
  }
1772
1716
  );
1773
1717
  if (e.view === "horizontal") {
1774
- const s = Math.min(i.length, 3), l = i.some(
1775
- (u) => (q(t.bootstrap.offers, u.id)?.discount_percent ?? 0) > 0
1718
+ const s = Math.min(i.length, 3), d = i.some(
1719
+ (l) => (q(t.bootstrap.offers, l.id)?.discount_percent ?? 0) > 0
1776
1720
  );
1777
- return /* @__PURE__ */ n(
1721
+ return /* @__PURE__ */ a(
1778
1722
  "div",
1779
1723
  {
1780
1724
  class: "grid items-stretch gap-2",
1781
1725
  style: { gridTemplateColumns: `repeat(${s}, minmax(0, 1fr))` },
1782
1726
  role: "radiogroup",
1783
1727
  "aria-label": r("pricing.plans_aria", "Plans"),
1784
- children: i.map((u) => /* @__PURE__ */ n(
1785
- Ge,
1728
+ children: i.map((l) => /* @__PURE__ */ a(
1729
+ Ve,
1786
1730
  {
1787
- price: u,
1788
- isPopular: e.popular_price_id === u.id,
1731
+ price: l,
1732
+ isPopular: e.popular_price_id === l.id,
1789
1733
  popularLabel: o,
1790
- offer: q(t.bootstrap.offers, u.id),
1791
- reserveStrikeRow: l,
1792
- selected: t.selectedPriceId === u.id,
1734
+ offer: q(t.bootstrap.offers, l.id),
1735
+ reserveStrikeRow: d,
1736
+ selected: t.selectedPriceId === l.id,
1793
1737
  onSelect: () => {
1794
- t.setSelectedPriceId(u.id), t.onAction("price_selected", { priceId: u.id, price: u });
1738
+ t.setSelectedPriceId(l.id), t.onAction("price_selected", { priceId: l.id, price: l });
1795
1739
  },
1796
1740
  t: r
1797
1741
  },
1798
- u.id
1742
+ l.id
1799
1743
  ))
1800
1744
  }
1801
1745
  );
1802
1746
  }
1803
- return /* @__PURE__ */ n(
1747
+ return /* @__PURE__ */ a(
1804
1748
  "div",
1805
1749
  {
1806
1750
  class: "flex flex-col gap-2",
1807
1751
  role: "radiogroup",
1808
1752
  "aria-label": r("pricing.plans_aria", "Plans"),
1809
1753
  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);
1754
+ const d = t.selectedPriceId === s.id, l = e.popular_price_id === s.id, p = q(t.bootstrap.offers, s.id)?.discount_percent ?? null, { currency: u, amount: x, originalAmount: y } = ot(s, p);
1811
1755
  return /* @__PURE__ */ c(
1812
1756
  "button",
1813
1757
  {
1814
1758
  type: "button",
1815
1759
  role: "radio",
1816
- "aria-checked": l,
1760
+ "aria-checked": d,
1817
1761
  onClick: () => {
1818
1762
  t.setSelectedPriceId(s.id), t.onAction("price_selected", { priceId: s.id, price: s });
1819
1763
  },
@@ -1822,26 +1766,26 @@ function He({ block: e, ctx: t }) {
1822
1766
  // Везде border 2px — selection выражается только цветом, layout
1823
1767
  // не прыгает (равная толщина у selected/unselected). Цветовая
1824
1768
  // разница accent vs gray достаточно сильная для visual hierarchy.
1825
- l ? "border-[var(--pw-accent)] bg-transparent" : "border-gray-200 bg-transparent hover:bg-gray-50"
1769
+ d ? "border-[var(--pw-accent)] bg-transparent" : "border-gray-200 bg-transparent hover:bg-gray-50"
1826
1770
  ].join(" "),
1827
1771
  children: [
1828
- /* @__PURE__ */ n(
1772
+ /* @__PURE__ */ a(
1829
1773
  "span",
1830
1774
  {
1831
1775
  class: [
1832
1776
  "flex h-6.5 w-6.5 flex-shrink-0 items-center justify-center rounded-full border transition-colors",
1833
- l ? "border-[var(--pw-accent)] text-white" : "border-gray-300 bg-transparent text-transparent",
1777
+ d ? "border-[var(--pw-accent)] text-white" : "border-gray-300 bg-transparent text-transparent",
1834
1778
  // Popular-label badge сидит absolute сверху-справа карточки и
1835
1779
  // визуально сдвигает центр content'а вниз. flex items-center
1836
1780
  // на карточке держит галочку по геометрическому центру, что
1837
1781
  // делает её визуально выше — компенсируем небольшим mt'ом.
1838
- u ? "mt-3" : ""
1782
+ l ? "mt-3" : ""
1839
1783
  ].join(" "),
1840
- style: l ? {
1784
+ style: d ? {
1841
1785
  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%)"
1842
1786
  } : void 0,
1843
1787
  "aria-hidden": "true",
1844
- children: /* @__PURE__ */ n(
1788
+ children: /* @__PURE__ */ a(
1845
1789
  "svg",
1846
1790
  {
1847
1791
  width: "14",
@@ -1849,8 +1793,8 @@ function He({ block: e, ctx: t }) {
1849
1793
  viewBox: "0 0 17 12",
1850
1794
  fill: "none",
1851
1795
  xmlns: "http://www.w3.org/2000/svg",
1852
- class: l ? "opacity-100" : "opacity-0",
1853
- children: /* @__PURE__ */ n(
1796
+ class: d ? "opacity-100" : "opacity-0",
1797
+ children: /* @__PURE__ */ a(
1854
1798
  "path",
1855
1799
  {
1856
1800
  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",
@@ -1863,35 +1807,35 @@ function He({ block: e, ctx: t }) {
1863
1807
  ),
1864
1808
  /* @__PURE__ */ c("div", { class: "flex flex-1 flex-col gap-0.5", children: [
1865
1809
  /* @__PURE__ */ c("div", { class: "flex flex-wrap items-center gap-x-2 gap-y-1", children: [
1866
- /* @__PURE__ */ n("span", { class: "text-xs font-normal uppercase tracking-normal text-gray-800/70", children: Ut(s, r) }),
1867
- _ ? (
1810
+ /* @__PURE__ */ a("span", { class: "text-xs font-normal uppercase tracking-normal text-gray-800/70", children: Ft(s, r) }),
1811
+ y ? (
1868
1812
  // opacity-60 приглушает strike: глаз сначала ловит label
1869
1813
  // и discount-badge, потом main price; original «бывшая цена»
1870
1814
  // — третичная информация, не должна конкурировать с label.
1871
- /* @__PURE__ */ n("span", { class: "text-[15px] font-normal text-gray-400 opacity-60 line-through decoration-gray-400 decoration-[1.5px]", children: _ })
1815
+ /* @__PURE__ */ a("span", { class: "text-[15px] font-normal text-gray-400 opacity-60 line-through decoration-gray-400 decoration-[1.5px]", children: y })
1872
1816
  ) : null,
1873
- d ? (
1817
+ p ? (
1874
1818
  // Emerald pill — фиксированный «успех/выгода», не зависит от
1875
1819
  // brand_color. Читается даже на тёмных бренд-акцентах.
1876
1820
  /* @__PURE__ */ c("span", { class: "rounded-full bg-emerald-100 px-2.5 py-1 text-xs font-bold leading-none text-emerald-700", children: [
1877
1821
  "-",
1878
- d,
1822
+ p,
1879
1823
  "%"
1880
1824
  ] })
1881
1825
  ) : null
1882
1826
  ] }),
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 }),
1827
+ /* @__PURE__ */ a("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: [
1828
+ /* @__PURE__ */ a("span", { class: "opacity-90", children: u }),
1885
1829
  x,
1886
1830
  /* @__PURE__ */ c("span", { class: "text-sm font-normal text-gray-500", children: [
1887
1831
  " ",
1888
1832
  "/ ",
1889
- ct(s, r)
1833
+ st(s, r)
1890
1834
  ] })
1891
1835
  ] }) }),
1892
- s.description ? /* @__PURE__ */ n("span", { class: "mt-1 text-xs leading-relaxed text-gray-500", children: s.description }) : null
1836
+ s.description ? /* @__PURE__ */ a("span", { class: "mt-1 text-xs leading-relaxed text-gray-500", children: s.description }) : null
1893
1837
  ] }),
1894
- u ? /* @__PURE__ */ n(
1838
+ l ? /* @__PURE__ */ a(
1895
1839
  "span",
1896
1840
  {
1897
1841
  class: "absolute -top-[9px] -right-[6px] rounded-[11px] border-[5px] border-white px-2 py-1 text-[12px] font-semibold text-white",
@@ -1907,20 +1851,20 @@ function He({ block: e, ctx: t }) {
1907
1851
  }
1908
1852
  );
1909
1853
  }
1910
- function Ve(e, t) {
1854
+ function $e(e, t) {
1911
1855
  return e.label ? e.label : !e.interval || e.interval === "lifetime" ? t("pricing.interval.lifetime_short", "lifetime") : t(`pricing.interval.${e.interval}`, e.interval);
1912
1856
  }
1913
- function $e({
1857
+ function He({
1914
1858
  price: e,
1915
1859
  isLast: t,
1916
1860
  isPopular: r,
1917
- popularLabel: a,
1861
+ popularLabel: n,
1918
1862
  offer: i,
1919
1863
  selected: o,
1920
1864
  onSelect: s,
1921
- t: l
1865
+ t: d
1922
1866
  }) {
1923
- const u = i?.discount_percent ?? null, { currency: h, amount: d, originalAmount: p } = lt(e, u);
1867
+ const l = i?.discount_percent ?? null, { currency: g, amount: p, originalAmount: u } = ot(e, l);
1924
1868
  return /* @__PURE__ */ c(
1925
1869
  "button",
1926
1870
  {
@@ -1930,7 +1874,7 @@ function $e({
1930
1874
  onClick: s,
1931
1875
  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)]",
1932
1876
  children: [
1933
- /* @__PURE__ */ n(
1877
+ /* @__PURE__ */ a(
1934
1878
  "span",
1935
1879
  {
1936
1880
  class: [
@@ -1941,7 +1885,7 @@ function $e({
1941
1885
  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%)"
1942
1886
  } : void 0,
1943
1887
  "aria-hidden": "true",
1944
- children: /* @__PURE__ */ n(
1888
+ children: /* @__PURE__ */ a(
1945
1889
  "svg",
1946
1890
  {
1947
1891
  width: "14",
@@ -1950,7 +1894,7 @@ function $e({
1950
1894
  fill: "none",
1951
1895
  xmlns: "http://www.w3.org/2000/svg",
1952
1896
  class: o ? "opacity-100" : "opacity-0",
1953
- children: /* @__PURE__ */ n(
1897
+ children: /* @__PURE__ */ a(
1954
1898
  "path",
1955
1899
  {
1956
1900
  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",
@@ -1970,12 +1914,12 @@ function $e({
1970
1914
  ].join(" "),
1971
1915
  children: [
1972
1916
  /* @__PURE__ */ c("div", { class: "flex flex-wrap items-center gap-1 gap-x-1.5", children: [
1973
- /* @__PURE__ */ n("span", { class: "text-base font-normal capitalize text-gray-800", children: Ve(e, l) }),
1917
+ /* @__PURE__ */ a("span", { class: "text-base font-normal capitalize text-gray-800", children: $e(e, d) }),
1974
1918
  r ? (
1975
1919
  // Pastel brand-mix pill — точно как `badge` в TelegramPricingRadio.
1976
1920
  // Низкий visual weight: pill про "имя плана" (most popular), а не
1977
1921
  // про savings — не должна конкурировать с -X% discount-pill.
1978
- /* @__PURE__ */ n(
1922
+ /* @__PURE__ */ a(
1979
1923
  "span",
1980
1924
  {
1981
1925
  class: "rounded-[9px] px-2 py-1 text-[10px] font-bold",
@@ -1983,26 +1927,26 @@ function $e({
1983
1927
  background: "linear-gradient(160deg, color-mix(in srgb, var(--pw-accent) 6%, white) 0%, color-mix(in srgb, var(--pw-accent) 15%, white) 100%)",
1984
1928
  color: "var(--pw-accent)"
1985
1929
  },
1986
- children: a
1930
+ children: n
1987
1931
  }
1988
1932
  )
1989
1933
  ) : null,
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: [
1934
+ 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: [
1991
1935
  "-",
1992
- u,
1936
+ l,
1993
1937
  "%"
1994
1938
  ] }) : null
1995
1939
  ] }),
1996
- /* @__PURE__ */ n("div", { class: "flex-1" }),
1940
+ /* @__PURE__ */ a("div", { class: "flex-1" }),
1997
1941
  /* @__PURE__ */ c("span", { class: "flex items-baseline gap-1.5 text-base font-normal text-gray-600", children: [
1998
- p ? /* @__PURE__ */ n("span", { class: "text-xs text-gray-400 line-through decoration-gray-400 decoration-[1.5px]", children: p }) : null,
1942
+ u ? /* @__PURE__ */ a("span", { class: "text-xs text-gray-400 line-through decoration-gray-400 decoration-[1.5px]", children: u }) : null,
1999
1943
  /* @__PURE__ */ c("span", { class: "whitespace-nowrap", children: [
2000
- /* @__PURE__ */ n("span", { class: "opacity-90", children: h }),
2001
- d,
1944
+ /* @__PURE__ */ a("span", { class: "opacity-90", children: g }),
1945
+ p,
2002
1946
  /* @__PURE__ */ c("span", { class: "text-xs text-gray-400", children: [
2003
1947
  " ",
2004
1948
  "/ ",
2005
- ct(e, l)
1949
+ st(e, d)
2006
1950
  ] })
2007
1951
  ] })
2008
1952
  ] })
@@ -2013,17 +1957,17 @@ function $e({
2013
1957
  }
2014
1958
  );
2015
1959
  }
2016
- function Ge({
1960
+ function Ve({
2017
1961
  price: e,
2018
1962
  isPopular: t,
2019
1963
  popularLabel: r,
2020
- offer: a,
1964
+ offer: n,
2021
1965
  reserveStrikeRow: i,
2022
1966
  selected: o,
2023
1967
  onSelect: s,
2024
- t: l
1968
+ t: d
2025
1969
  }) {
2026
- const u = a?.discount_percent ?? null, { currency: h, amount: d, originalAmount: p } = lt(e, u);
1970
+ const l = n?.discount_percent ?? null, { currency: g, amount: p, originalAmount: u } = ot(e, l);
2027
1971
  return /* @__PURE__ */ c(
2028
1972
  "button",
2029
1973
  {
@@ -2037,24 +1981,24 @@ function Ge({
2037
1981
  ].join(" "),
2038
1982
  style: o ? { background: "color-mix(in srgb, var(--pw-accent) 6%, transparent)" } : void 0,
2039
1983
  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) }),
1984
+ /* @__PURE__ */ a("span", { class: "flex min-h-[2.4em] items-center text-[10px] font-normal uppercase leading-tight text-gray-800/70", children: Ft(e, d) }),
2041
1985
  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: [
1986
+ u ? /* @__PURE__ */ a("span", { class: "text-[12px] text-gray-400 line-through decoration-gray-400 decoration-[1.5px]", children: u }) : null,
1987
+ 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: [
2044
1988
  "-",
2045
- u,
1989
+ l,
2046
1990
  "%"
2047
1991
  ] }) : null
2048
1992
  ] }) : null,
2049
1993
  /* @__PURE__ */ c("span", { class: "text-[26px] leading-none whitespace-nowrap text-gray-800 font-medium", children: [
2050
- /* @__PURE__ */ n("span", { class: "opacity-90", children: h }),
2051
- d
1994
+ /* @__PURE__ */ a("span", { class: "opacity-90", children: g }),
1995
+ p
2052
1996
  ] }),
2053
1997
  /* @__PURE__ */ c("span", { class: "text-xs font-normal text-gray-500", children: [
2054
1998
  "/ ",
2055
- ct(e, l)
1999
+ st(e, d)
2056
2000
  ] }),
2057
- t ? /* @__PURE__ */ n(
2001
+ t ? /* @__PURE__ */ a(
2058
2002
  "span",
2059
2003
  {
2060
2004
  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",
@@ -2066,29 +2010,29 @@ function Ge({
2066
2010
  }
2067
2011
  );
2068
2012
  }
2069
- function qe({ block: e }) {
2070
- return /* @__PURE__ */ n("p", { class: "text-[0.9375rem] leading-relaxed text-gray-600", children: e.text });
2013
+ function Ge({ block: e }) {
2014
+ return /* @__PURE__ */ a("p", { class: "text-[0.9375rem] leading-relaxed text-gray-600", children: e.text });
2071
2015
  }
2072
- const We = {
2016
+ const qe = {
2073
2017
  week: 0.25,
2074
2018
  month: 1,
2075
2019
  year: 12
2076
2020
  };
2077
- function Ze(e, t) {
2021
+ function We(e, t) {
2078
2022
  return e ? t(`pricing.interval.${e}`, e) : t("pricing.interval.period", "period");
2079
2023
  }
2080
- function Ke({ block: e, ctx: t }) {
2024
+ function Ze({ block: e, ctx: t }) {
2081
2025
  const { t: r } = v();
2082
2026
  if (!e.queries.length) return null;
2083
- const i = t.bootstrap.prices.find((s) => s.id === t.selectedPriceId)?.interval ?? null, o = i ? We[i] : void 0;
2027
+ const i = t.bootstrap.prices.find((s) => s.id === t.selectedPriceId)?.interval ?? null, o = i ? qe[i] : void 0;
2084
2028
  return /* @__PURE__ */ c("div", { class: "flex flex-col gap-2", children: [
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)
2029
+ /* @__PURE__ */ a("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}:", {
2030
+ interval: We(i, r)
2087
2031
  }) }),
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;
2032
+ /* @__PURE__ */ a("ul", { class: "flex flex-col gap-2", role: "list", children: e.queries.map((s) => {
2033
+ const d = Number.isFinite(s.count) ? s.count : 0, l = o !== void 0 ? Math.round(d * o) : d;
2090
2034
  return /* @__PURE__ */ c("li", { class: `flex gap-3 ${s.desc ? "items-start" : "items-center"}`, children: [
2091
- /* @__PURE__ */ n(
2035
+ /* @__PURE__ */ a(
2092
2036
  "svg",
2093
2037
  {
2094
2038
  width: "18",
@@ -2097,7 +2041,7 @@ function Ke({ block: e, ctx: t }) {
2097
2041
  fill: "none",
2098
2042
  class: `flex-shrink-0 text-emerald-500 ${s.desc ? "mt-0.5" : ""}`,
2099
2043
  "aria-hidden": "true",
2100
- children: /* @__PURE__ */ n(
2044
+ children: /* @__PURE__ */ a(
2101
2045
  "path",
2102
2046
  {
2103
2047
  d: "M4 10.5l3.5 3.5 8.5-8.5",
@@ -2110,221 +2054,222 @@ function Ke({ block: e, ctx: t }) {
2110
2054
  }
2111
2055
  ),
2112
2056
  /* @__PURE__ */ c("div", { children: [
2113
- /* @__PURE__ */ n("span", { class: "font-semibold text-gray-900 text-sm", children: u }),
2057
+ /* @__PURE__ */ a("span", { class: "font-semibold text-gray-900 text-sm", children: l }),
2114
2058
  " ",
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 })
2059
+ /* @__PURE__ */ a("span", { class: "text-sm text-gray-800", children: s.name }),
2060
+ s.desc ? /* @__PURE__ */ c(at, { children: [
2061
+ /* @__PURE__ */ a("br", {}),
2062
+ /* @__PURE__ */ a("span", { class: "text-xs text-gray-400", children: s.desc })
2119
2063
  ] }) : null
2120
2064
  ] })
2121
2065
  ] }, s.id);
2122
2066
  }) })
2123
2067
  ] });
2124
2068
  }
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
2069
+ const Ke = {
2070
+ heading: Ue,
2071
+ text: Ge,
2072
+ price_grid: Ne,
2073
+ cta_button: Pe,
2074
+ auth_panel: Pt,
2075
+ current_session: Te,
2076
+ features_list: Ee,
2077
+ tokenization_gate: Ze,
2078
+ guarantee_badge: je,
2079
+ offer_banner: be
2136
2080
  };
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;
2081
+ function Ye({ layout: e, bootstrap: t, onAction: r, auth: n, authSession: i, hasTopBanner: o }) {
2082
+ const s = $t(() => {
2083
+ for (const k of e.blocks)
2084
+ if (k.type === "price_grid" && k.popular_price_id && t.prices.some((h) => h.id === k.popular_price_id))
2085
+ return k.popular_price_id;
2142
2086
  return t.prices[0]?.id ?? null;
2143
- }, [e.blocks, t.prices]), [l, u] = b(s), h = {
2087
+ }, [e.blocks, t.prices]), [d, l] = b(s), g = {
2144
2088
  bootstrap: t,
2145
- selectedPriceId: l,
2146
- setSelectedPriceId: u,
2089
+ selectedPriceId: d,
2090
+ setSelectedPriceId: l,
2147
2091
  onAction: r,
2148
- auth: a,
2092
+ auth: n,
2149
2093
  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);
2094
+ }, p = e.blocks.findIndex((k) => k.type === "cta_button"), u = p === -1 ? e.blocks : e.blocks.slice(0, p), x = p === -1 ? [] : e.blocks.slice(p), y = (k, h) => {
2095
+ const m = Ke[k.type];
2096
+ return m ? /* @__PURE__ */ a(m, { block: k, ctx: g }, `${k.type}-${h}`) : (typeof console < "u" && console.warn(`[paywall] unknown block type: ${k.type}`), null);
2153
2097
  };
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(_) }) }),
2098
+ return /* @__PURE__ */ c(at, { children: [
2099
+ /* @__PURE__ */ a("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__ */ a("div", { class: "flex flex-col gap-6", children: u.map(y) }) }),
2156
2100
  x.length > 0 ? (
2157
2101
  // Тонкий shadow-top вместо border-t — создаёт depth, читается как
2158
2102
  // «footer закреплён к низу dialog'а». Линия выглядела как divider
2159
2103
  // в обычном flow, не передавала sticky-character.
2160
- /* @__PURE__ */ n(
2104
+ /* @__PURE__ */ a(
2161
2105
  "div",
2162
2106
  {
2163
2107
  class: "flex flex-col gap-4 bg-white px-6 pb-6 pt-3 sm:px-8",
2164
2108
  style: { boxShadow: "0 -4px 12px -4px rgba(15,23,42,0.06)" },
2165
- children: x.map((g, f) => _(g, p.length + f))
2109
+ children: x.map((k, h) => y(k, u.length + h))
2166
2110
  }
2167
2111
  )
2168
2112
  ) : null
2169
2113
  ] });
2170
2114
  }
2171
- function Je(e, t, r, a) {
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 };
2115
+ function Xe(e, t, r, n) {
2116
+ return e ? n ? { 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 === "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 };
2173
2117
  }
2174
- function Qe(e, t) {
2118
+ function Je(e, t) {
2175
2119
  return e.open === t.open && e.view === t.view && e.error === t.error;
2176
2120
  }
2177
- function tr({
2121
+ function Qe({
2178
2122
  client: e,
2179
2123
  open: t,
2180
2124
  onClose: r,
2181
- onEvent: a,
2125
+ onEvent: n,
2182
2126
  initialView: i,
2183
- purchased: o,
2184
- renew: s,
2127
+ initialAuthMode: o,
2128
+ purchased: s,
2129
+ renew: d,
2185
2130
  onState: l,
2186
- inline: u,
2187
- locale: h
2131
+ inline: g,
2132
+ locale: p
2188
2133
  }) {
2189
- const [d, p] = b({ status: "idle" }), [x, _] = b(
2134
+ const [u, x] = b({ status: "idle" }), [y, k] = b(
2190
2135
  () => e.auth?.getCachedSession() ?? 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);
2192
- T(() => {
2136
+ ), [h, m] = b(() => i === "support" ? { kind: "support", origin: "standalone" } : i === "auth" ? { kind: "auth_gate", origin: "standalone" } : { kind: "layout" }), z = R(!1), _ = R(null);
2137
+ j(() => {
2193
2138
  if (!l) return;
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(() => {
2139
+ const w = Xe(t, u, h, s), f = _.current;
2140
+ f && Je(f, w) || (_.current = w, l(w));
2141
+ }, [t, u, h, s, l]), j(() => {
2197
2142
  if (e.auth)
2198
- return e.auth.onAuthChange((w, m) => _(m));
2199
- }, [e.auth]), T(() => {
2143
+ return e.auth.onAuthChange((w, f) => k(f));
2144
+ }, [e.auth]), j(() => {
2200
2145
  if (typeof e.onBootstrapChange == "function")
2201
2146
  return e.onBootstrapChange((w) => {
2202
- p(
2203
- (m) => m.status === "ready" ? { status: "ready", data: w } : m
2147
+ x(
2148
+ (f) => f.status === "ready" ? { status: "ready", data: w } : f
2204
2149
  );
2205
2150
  });
2206
- }, [e]), T(() => {
2207
- if (!t || d.status === "ready" || d.status === "loading") return;
2151
+ }, [e]), j(() => {
2152
+ if (!t || u.status === "ready" || u.status === "loading") return;
2208
2153
  let w = !1;
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", {
2154
+ return x({ status: "loading" }), e.bootstrap().then((f) => {
2155
+ w || (x({ status: "ready", data: f }), n("ready", f), f.user?.has_active_subscription && !d && !i && (n("purchase_completed", {
2211
2156
  priceId: null,
2212
2157
  sessionId: null,
2213
2158
  restored: !0
2214
- }), f({ kind: "purchase_success", restored: !0 })));
2215
- }).catch((m) => {
2159
+ }), m({ kind: "purchase_success", restored: !0 })));
2160
+ }).catch((f) => {
2216
2161
  if (w) return;
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);
2162
+ const C = f instanceof F ? f : new F("unknown", "Failed to load paywall", { cause: f });
2163
+ x({ status: "error", error: C }), n("error", C);
2219
2164
  }), () => {
2220
2165
  w = !0;
2221
2166
  };
2222
- }, [t, e]), $t(() => {
2167
+ }, [t, e]), Ht(() => {
2223
2168
  if (!t) {
2224
- f({ kind: "layout" }), M.current = !1;
2169
+ m({ kind: "layout" }), z.current = !1;
2225
2170
  return;
2226
2171
  }
2227
- i === "support" ? f({ kind: "support", origin: "standalone" }) : i === "auth" ? f({ kind: "auth_gate", origin: "standalone" }) : i === "anon" && f({ kind: "anon_gate", origin: "standalone" });
2172
+ i === "support" ? m({ kind: "support", origin: "standalone" }) : i === "auth" && m({ kind: "auth_gate", origin: "standalone" });
2228
2173
  }, [t, i]);
2229
- const y = async (w) => {
2174
+ const S = async (w) => {
2230
2175
  try {
2231
- const m = await e.createCheckout({
2176
+ const f = await e.createCheckout({
2232
2177
  priceId: w,
2233
- ignoreActivePurchase: s === !0
2178
+ ignoreActivePurchase: d === !0
2234
2179
  });
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) {
2180
+ if (n("checkout_started", { priceId: w, url: f.url, acquiring: f.acquiring }), typeof window > "u" || !f.url) return;
2181
+ const C = window.open(f.url, "_blank");
2182
+ if (C) {
2238
2183
  try {
2239
- k.opener = null;
2184
+ C.opener = null;
2240
2185
  } catch {
2241
2186
  }
2242
- f({ kind: "awaiting_payment", priceId: w, url: m.url });
2187
+ m({ kind: "awaiting_payment", priceId: w, url: f.url });
2243
2188
  } else
2244
- f({ kind: "popup_blocked", priceId: w, url: m.url });
2245
- } catch (m) {
2246
- if (m instanceof U && m.code === "already_purchased") {
2189
+ m({ kind: "popup_blocked", priceId: w, url: f.url });
2190
+ } catch (f) {
2191
+ if (f instanceof F && f.code === "already_purchased") {
2247
2192
  try {
2248
2193
  await e.getUser({ force: !0 });
2249
2194
  } catch {
2250
2195
  }
2251
- a("purchase_completed", { priceId: w, sessionId: null, restored: !0 }), f({ kind: "purchase_success", restored: !0 });
2196
+ n("purchase_completed", { priceId: w, sessionId: null, restored: !0 }), m({ kind: "purchase_success", restored: !0 });
2252
2197
  return;
2253
2198
  }
2254
- const k = m instanceof U ? m : new U("checkout_failed", "Checkout failed", { cause: m });
2255
- a("error", k), f({ kind: "layout" });
2199
+ const C = f instanceof F ? f : new F("checkout_failed", "Checkout failed", { cause: f });
2200
+ n("error", C), m({ kind: "layout" });
2256
2201
  }
2257
- }, L = (w, m) => {
2202
+ }, T = (w, f) => {
2258
2203
  if (typeof window > "u") return;
2259
- const k = window.open(m, "_blank");
2260
- if (k) {
2204
+ const C = window.open(f, "_blank");
2205
+ if (C) {
2261
2206
  try {
2262
- k.opener = null;
2207
+ C.opener = null;
2263
2208
  } catch {
2264
2209
  }
2265
- f({ kind: "awaiting_payment", priceId: w, url: m });
2210
+ m({ kind: "awaiting_payment", priceId: w, url: f });
2266
2211
  }
2267
2212
  };
2268
- T(() => {
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 () => {
2273
- if (!s)
2213
+ j(() => {
2214
+ if (h.kind !== "auth_gate" || !y || y.user.is_anonymous || z.current) return;
2215
+ z.current = !0;
2216
+ const w = h.pendingCheckout, f = h.origin;
2217
+ m({ kind: "verifying" }), (async () => {
2218
+ if (!d)
2274
2219
  try {
2275
2220
  if ((await e.getUser({ force: !0 })).has_active_subscription) {
2276
- a("purchase_completed", {
2221
+ n("purchase_completed", {
2277
2222
  priceId: w?.priceId ?? null,
2278
2223
  sessionId: null,
2279
2224
  restored: !0
2280
- }), f({ kind: "purchase_success", restored: !0 });
2225
+ }), m({ kind: "purchase_success", restored: !0 });
2281
2226
  return;
2282
2227
  }
2283
2228
  } catch {
2284
2229
  }
2285
2230
  if (!w) {
2286
- m === "standalone" ? r() : f({ kind: "layout" });
2231
+ f === "standalone" ? r() : m({ kind: "layout" });
2287
2232
  return;
2288
2233
  }
2289
- await y(w.priceId);
2234
+ await S(w.priceId);
2290
2235
  })().finally(() => {
2291
- M.current = !1;
2236
+ z.current = !1;
2292
2237
  });
2293
- }, [x, g]);
2294
- const I = async (w, m) => {
2238
+ }, [y, h]);
2239
+ const L = async (w, f) => {
2295
2240
  if (w === "close") {
2296
2241
  r();
2297
2242
  return;
2298
2243
  }
2299
2244
  if (w === "price_selected") {
2300
- a("price_selected", m);
2245
+ n("price_selected", f);
2301
2246
  return;
2302
2247
  }
2303
2248
  if (w === "restore") {
2304
2249
  if (!e.auth) return;
2305
- const k = e.auth.getCachedSession();
2306
- if (k && !k.user.is_anonymous) return;
2307
- f({ kind: "auth_gate", intent: "restore" });
2250
+ const C = e.auth.getCachedSession();
2251
+ if (C && !C.user.is_anonymous) return;
2252
+ m({ kind: "auth_gate", intent: "restore" });
2308
2253
  return;
2309
2254
  }
2310
2255
  if (w === "support") {
2311
- f({ kind: "support", origin: "layout" });
2256
+ m({ kind: "support", origin: "layout" });
2312
2257
  return;
2313
2258
  }
2314
- if (w === "checkout" && d.status === "ready") {
2315
- const k = m?.priceId;
2316
- if (!k) {
2317
- a("error", new U("no_price", "No price selected"));
2259
+ if (w === "checkout" && u.status === "ready") {
2260
+ const C = f?.priceId;
2261
+ if (!C) {
2262
+ n("error", new F("no_price", "No price selected"));
2318
2263
  return;
2319
2264
  }
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 } });
2265
+ const I = u.data.settings.checkout_mode ?? "guest", A = e.auth?.getCachedSession() ?? null, H = !!A && !A.user.is_anonymous;
2266
+ if (I === "preauth" && !!e.auth && !H) {
2267
+ m({ kind: "auth_gate", pendingCheckout: { priceId: C } });
2323
2268
  return;
2324
2269
  }
2325
- await y(k);
2270
+ await S(C);
2326
2271
  }
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 = {
2272
+ }, B = u.status === "ready" ? u.data.settings.brand_color : null, E = u.status === "ready" ? u.data.settings.allow_close !== !1 : !0, D = h.kind === "layout" && u.status === "ready" ? Et(u.data.offers) : null, P = D ? /* @__PURE__ */ a(xe, { offer: D }) : null, M = {
2328
2273
  type: "auth_panel",
2329
2274
  // Заголовок не задаём — AuthGate сам решит по intent'у (restore →
2330
2275
  // "Restore Purchases", остальные → дефолтный "Welcome back!").
@@ -2333,116 +2278,108 @@ function tr({
2333
2278
  // Не скрываем при наличии сессии — auto-resume useEffect отрабатывает быстрее,
2334
2279
  // чем хотим показывать "Signed in as ..." промежуточным экраном.
2335
2280
  hide_when_authenticated: !1,
2336
- providers: d.status === "ready" ? d.data.settings.auth_providers : void 0
2337
- }, A = g.kind === "support" ? /* @__PURE__ */ n(
2338
- _e,
2281
+ providers: u.status === "ready" ? u.data.settings.auth_providers : void 0
2282
+ }, O = h.kind === "support" ? /* @__PURE__ */ a(
2283
+ ke,
2339
2284
  {
2340
2285
  client: e,
2341
- authSession: x,
2342
- origin: g.origin,
2286
+ authSession: y,
2287
+ origin: h.origin,
2343
2288
  onBack: () => {
2344
- g.origin === "standalone" ? r() : f({ kind: "layout" });
2289
+ h.origin === "standalone" ? r() : m({ kind: "layout" });
2345
2290
  }
2346
2291
  }
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,
2292
+ ) : null, N = h.kind === "auth_gate" && h.origin !== "standalone" || h.kind === "support", Z = u.status === "ready" ? u.data : null;
2293
+ return /* @__PURE__ */ a(Qt, { bootstrap: Z, forceLocale: p, children: /* @__PURE__ */ a(
2294
+ te,
2350
2295
  {
2351
2296
  open: t,
2352
2297
  onClose: r,
2353
- brandColor: z,
2354
- topBanner: R,
2355
- allowClose: j,
2356
- hideCloseButton: C,
2357
- inline: u,
2298
+ brandColor: B,
2299
+ topBanner: P,
2300
+ allowClose: E,
2301
+ hideCloseButton: N,
2302
+ inline: g,
2358
2303
  labelledBy: "pw-title",
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(
2304
+ children: s ? /* @__PURE__ */ a(kt, { onContinue: r }) : h.kind === "purchase_success" ? /* @__PURE__ */ a(kt, { restored: h.restored, onContinue: r }) : O || (u.status === "loading" || u.status === "idle" || h.kind === "verifying" ? /* @__PURE__ */ a(tr, { verifying: h.kind === "verifying" }) : u.status === "error" ? /* @__PURE__ */ a(er, { message: u.error.message }) : h.kind === "auth_gate" && e.auth ? /* @__PURE__ */ a(
2360
2305
  fe,
2361
2306
  {
2362
- block: N,
2363
- bootstrap: d.data,
2307
+ block: M,
2308
+ bootstrap: u.data,
2364
2309
  auth: e.auth,
2365
- authSession: x,
2366
- showBack: g.origin !== "standalone",
2367
- intent: g.intent ?? (g.origin === "standalone" ? "standalone" : "preauth"),
2310
+ authSession: y,
2311
+ showBack: h.origin !== "standalone",
2312
+ intent: h.intent ?? (h.origin === "standalone" ? "standalone" : "preauth"),
2313
+ initialMode: h.origin === "standalone" ? o : void 0,
2368
2314
  onBack: () => {
2369
- g.origin === "standalone" ? r() : f({ kind: "layout" });
2315
+ h.origin === "standalone" ? r() : m({ kind: "layout" });
2370
2316
  }
2371
2317
  }
2372
- ) : g.kind === "anon_gate" && e.auth ? /* @__PURE__ */ n(
2373
- me,
2374
- {
2375
- auth: e.auth,
2376
- onSuccess: () => {
2377
- g.origin === "standalone" ? r() : f({ kind: "layout" });
2378
- },
2379
- onBack: g.origin === "standalone" ? void 0 : () => f({ kind: "layout" })
2380
- }
2381
- ) : g.kind === "awaiting_payment" ? /* @__PURE__ */ n(
2382
- nr,
2318
+ ) : h.kind === "awaiting_payment" ? /* @__PURE__ */ a(
2319
+ ir,
2383
2320
  {
2384
2321
  client: e,
2385
- onBack: () => f({ kind: "layout" }),
2322
+ onBack: () => m({ kind: "layout" }),
2386
2323
  onReopen: () => {
2387
2324
  if (typeof window > "u") return;
2388
- const w = window.open(g.url, "_blank");
2325
+ const w = window.open(h.url, "_blank");
2389
2326
  if (w)
2390
2327
  try {
2391
2328
  w.opener = null;
2392
2329
  } catch {
2393
2330
  }
2394
2331
  },
2395
- onRetry: () => y(g.priceId)
2332
+ onRetry: () => S(h.priceId)
2396
2333
  }
2397
- ) : g.kind === "popup_blocked" ? /* @__PURE__ */ n(ir, { onReopen: () => L(g.priceId, g.url) }) : /* @__PURE__ */ n(
2398
- Xe,
2334
+ ) : h.kind === "popup_blocked" ? /* @__PURE__ */ a(rr, { onReopen: () => T(h.priceId, h.url) }) : /* @__PURE__ */ a(
2335
+ Ye,
2399
2336
  {
2400
- layout: d.data.layout,
2401
- bootstrap: d.data,
2402
- onAction: I,
2337
+ layout: u.data.layout,
2338
+ bootstrap: u.data,
2339
+ onAction: L,
2403
2340
  auth: e.auth,
2404
- authSession: x
2341
+ authSession: y
2405
2342
  }
2406
2343
  ))
2407
2344
  }
2408
2345
  ) });
2409
2346
  }
2410
- function er({ verifying: e }) {
2347
+ function tr({ verifying: e }) {
2411
2348
  const { t } = v();
2412
2349
  return /* @__PURE__ */ c("div", { class: "flex flex-col items-center justify-center gap-3 py-12", children: [
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…") })
2350
+ /* @__PURE__ */ a("span", { class: "inline-block h-7 w-7 animate-spin rounded-full border-[2.5px] border-gray-200 border-t-[var(--pw-accent)]" }),
2351
+ /* @__PURE__ */ a("span", { class: "text-xs font-medium tracking-wide text-gray-500", children: e ? t("modal.verifying_subscription", "Checking your subscription…") : t("modal.loading", "Loading…") })
2415
2352
  ] });
2416
2353
  }
2417
- function rr({ message: e }) {
2354
+ function er({ message: e }) {
2418
2355
  const { t } = v();
2419
2356
  return /* @__PURE__ */ c("div", { class: "flex flex-col items-center gap-2 py-8 text-center", children: [
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" })
2357
+ /* @__PURE__ */ a("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: [
2358
+ /* @__PURE__ */ a("path", { d: "M10 6v5M10 14h.01", stroke: "#dc2626", "stroke-width": "2", "stroke-linecap": "round" }),
2359
+ /* @__PURE__ */ a("circle", { cx: "10", cy: "10", r: "8", stroke: "#dc2626", "stroke-width": "1.75" })
2423
2360
  ] }) }),
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 })
2361
+ /* @__PURE__ */ a("p", { class: "text-sm font-semibold tracking-tight text-gray-900", children: t("modal.error_generic", "Something went wrong") }),
2362
+ /* @__PURE__ */ a("p", { class: "text-xs leading-relaxed text-gray-500", children: e })
2426
2363
  ] });
2427
2364
  }
2428
- function ir({ onReopen: e }) {
2365
+ function rr({ onReopen: e }) {
2429
2366
  const { t } = v();
2430
2367
  return /* @__PURE__ */ c("div", { class: "flex flex-col items-center gap-3 py-8 text-center", children: [
2431
- /* @__PURE__ */ n(
2368
+ /* @__PURE__ */ a(
2432
2369
  "div",
2433
2370
  {
2434
2371
  class: "flex h-11 w-11 items-center justify-center rounded-full",
2435
2372
  style: { background: "color-mix(in srgb, var(--pw-accent) 12%, white)", color: "var(--pw-accent)" },
2436
2373
  "aria-hidden": "true",
2437
2374
  children: /* @__PURE__ */ c("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", children: [
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" })
2375
+ /* @__PURE__ */ a("path", { d: "M4 5h12v10H4z", stroke: "currentColor", "stroke-width": "1.75", "stroke-linejoin": "round" }),
2376
+ /* @__PURE__ */ a("path", { d: "M7 9l3 3 4-5", stroke: "currentColor", "stroke-width": "1.75", "stroke-linecap": "round", "stroke-linejoin": "round" })
2440
2377
  ] })
2441
2378
  }
2442
2379
  ),
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(
2380
+ /* @__PURE__ */ a("p", { class: "text-sm font-semibold tracking-tight text-gray-900", children: t("payment.popup_blocked_title", "Allow popups to continue") }),
2381
+ /* @__PURE__ */ a("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.") }),
2382
+ /* @__PURE__ */ a(
2446
2383
  "button",
2447
2384
  {
2448
2385
  type: "button",
@@ -2457,36 +2394,36 @@ function ir({ onReopen: e }) {
2457
2394
  )
2458
2395
  ] });
2459
2396
  }
2460
- function nr({
2397
+ function ir({
2461
2398
  client: e,
2462
2399
  onBack: t,
2463
2400
  onReopen: r,
2464
- onRetry: a
2401
+ onRetry: n
2465
2402
  }) {
2466
- const { t: i } = v(), [o, s] = b(!1), [l, u] = b(!1), h = F(null);
2467
- T(() => () => {
2468
- h.current !== null && clearTimeout(h.current);
2403
+ const { t: i } = v(), [o, s] = b(!1), [d, l] = b(!1), g = R(null);
2404
+ j(() => () => {
2405
+ g.current !== null && clearTimeout(g.current);
2469
2406
  }, []);
2470
- const d = async () => {
2407
+ const p = async () => {
2471
2408
  if (!o) {
2472
- s(!0), u(!1);
2409
+ s(!0), l(!1);
2473
2410
  try {
2474
2411
  if ((await e.getUser({ force: !0 })).has_active_subscription) {
2475
2412
  typeof window < "u" && window.postMessage({ type: "paywall_purchase" }, "*");
2476
2413
  return;
2477
2414
  }
2478
- u(!0), h.current !== null && clearTimeout(h.current), h.current = setTimeout(() => {
2479
- u(!1), h.current = null;
2415
+ l(!0), g.current !== null && clearTimeout(g.current), g.current = setTimeout(() => {
2416
+ l(!1), g.current = null;
2480
2417
  }, 5e3);
2481
2418
  } catch {
2482
- u(!0);
2419
+ l(!0);
2483
2420
  } finally {
2484
2421
  s(!1);
2485
2422
  }
2486
2423
  }
2487
2424
  };
2488
- return /* @__PURE__ */ c("div", { class: "flex flex-col gap-3", children: [
2489
- /* @__PURE__ */ n(
2425
+ return /* @__PURE__ */ c("div", { class: "flex flex-col gap-3 px-6 pb-6 pt-4 sm:px-8 sm:pb-8 sm:pt-5", children: [
2426
+ /* @__PURE__ */ a(
2490
2427
  "button",
2491
2428
  {
2492
2429
  type: "button",
@@ -2497,7 +2434,7 @@ function nr({
2497
2434
  ),
2498
2435
  /* @__PURE__ */ c("div", { class: "flex flex-col items-center gap-3 py-6 text-center", children: [
2499
2436
  /* @__PURE__ */ c("div", { class: "relative flex h-12 w-12 items-center justify-center", children: [
2500
- /* @__PURE__ */ n(
2437
+ /* @__PURE__ */ a(
2501
2438
  "span",
2502
2439
  {
2503
2440
  class: "absolute inset-0 animate-ping rounded-full opacity-40",
@@ -2505,18 +2442,18 @@ function nr({
2505
2442
  "aria-hidden": "true"
2506
2443
  }
2507
2444
  ),
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)]" })
2445
+ /* @__PURE__ */ a("span", { class: "relative inline-block h-7 w-7 animate-spin rounded-full border-[2.5px] border-gray-200 border-t-[var(--pw-accent)]" })
2509
2446
  ] }),
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(
2447
+ /* @__PURE__ */ a("p", { class: "text-sm font-semibold tracking-tight text-gray-900", children: i("payment.awaiting_title", "Complete payment in the new tab") }),
2448
+ /* @__PURE__ */ a("p", { class: "max-w-[20rem] text-xs leading-relaxed text-gray-500", children: i(
2512
2449
  "payment.awaiting_subtitle",
2513
2450
  "We'll detect your payment automatically — or click below once you're done."
2514
2451
  ) }),
2515
- /* @__PURE__ */ n(
2452
+ /* @__PURE__ */ a(
2516
2453
  "button",
2517
2454
  {
2518
2455
  type: "button",
2519
- onClick: d,
2456
+ onClick: p,
2520
2457
  disabled: o,
2521
2458
  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)]",
2522
2459
  style: {
@@ -2526,11 +2463,11 @@ function nr({
2526
2463
  children: o ? i("payment.checking", "Checking…") : i("payment.ive_paid", "I've paid")
2527
2464
  }
2528
2465
  ),
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
2466
+ d ? /* @__PURE__ */ a("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
2530
2467
  ] }),
2531
2468
  /* @__PURE__ */ c("div", { class: "rounded-2xl border border-gray-200 bg-gray-50/60 p-3.5", children: [
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(
2469
+ /* @__PURE__ */ a("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.") }),
2470
+ /* @__PURE__ */ a(
2534
2471
  "button",
2535
2472
  {
2536
2473
  type: "button",
@@ -2540,24 +2477,24 @@ function nr({
2540
2477
  }
2541
2478
  )
2542
2479
  ] }),
2543
- /* @__PURE__ */ n(
2480
+ /* @__PURE__ */ a(
2544
2481
  "button",
2545
2482
  {
2546
2483
  type: "button",
2547
- onClick: a,
2484
+ onClick: n,
2548
2485
  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)]",
2549
2486
  children: i("payment.tab_closed_retry", "Tab closed? Try again")
2550
2487
  }
2551
2488
  )
2552
2489
  ] });
2553
2490
  }
2554
- function _t({
2491
+ function kt({
2555
2492
  onContinue: e,
2556
2493
  restored: t = !1
2557
2494
  }) {
2558
2495
  const { t: r } = v();
2559
2496
  return /* @__PURE__ */ c("div", { class: "flex flex-col items-center gap-3 py-8 text-center", children: [
2560
- /* @__PURE__ */ n(
2497
+ /* @__PURE__ */ a(
2561
2498
  "div",
2562
2499
  {
2563
2500
  class: "flex h-14 w-14 items-center justify-center rounded-full ring-8",
@@ -2568,7 +2505,7 @@ function _t({
2568
2505
  boxShadow: "0 0 0 8px rgba(74,222,128,0.12), 0 8px 20px -6px rgba(22,163,74,0.45)"
2569
2506
  },
2570
2507
  "aria-hidden": "true",
2571
- children: /* @__PURE__ */ n("svg", { width: "28", height: "28", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ n(
2508
+ children: /* @__PURE__ */ a("svg", { width: "28", height: "28", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ a(
2572
2509
  "path",
2573
2510
  {
2574
2511
  d: "M5 13l4 4L19 7",
@@ -2580,12 +2517,12 @@ function _t({
2580
2517
  ) })
2581
2518
  }
2582
2519
  ),
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(
2520
+ /* @__PURE__ */ a("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") }),
2521
+ /* @__PURE__ */ a("p", { class: "text-sm leading-relaxed text-gray-500", children: t ? r(
2585
2522
  "modal.purchase_restored_subtitle",
2586
2523
  "Welcome back — your subscription is already active."
2587
2524
  ) : r("modal.purchase_success_subtitle", "Your subscription is now active.") }),
2588
- /* @__PURE__ */ n(
2525
+ /* @__PURE__ */ a(
2589
2526
  "button",
2590
2527
  {
2591
2528
  type: "button",
@@ -2600,17 +2537,17 @@ function _t({
2600
2537
  )
2601
2538
  ] });
2602
2539
  }
2603
- const ar = 10 * 6e4, or = 5e3, sr = 3e4;
2604
- class lr {
2540
+ const nr = 10 * 6e4, ar = 5e3, or = 3e4;
2541
+ class sr {
2605
2542
  constructor(t) {
2606
2543
  this.timer = null, this.timeoutTimer = null, this.visibilityHandler = null, this.focusHandler = null, this.messageHandler = null, this.stopped = !1, this.checking = !1, this.opts = {
2607
2544
  client: t.client,
2608
2545
  onActive: t.onActive,
2609
2546
  onTimeout: t.onTimeout ?? (() => {
2610
2547
  }),
2611
- timeoutMs: t.timeoutMs ?? ar,
2612
- visibleIntervalMs: t.visibleIntervalMs ?? or,
2613
- hiddenIntervalMs: t.hiddenIntervalMs ?? sr
2548
+ timeoutMs: t.timeoutMs ?? nr,
2549
+ visibleIntervalMs: t.visibleIntervalMs ?? ar,
2550
+ hiddenIntervalMs: t.hiddenIntervalMs ?? or
2614
2551
  };
2615
2552
  }
2616
2553
  start() {
@@ -2649,19 +2586,19 @@ class lr {
2649
2586
  !r || typeof r != "object" || r.type === "paywall_purchase" && this.check();
2650
2587
  }
2651
2588
  }
2652
- function cr() {
2589
+ function lr() {
2653
2590
  return !(typeof document > "u" || typeof window > "u" || typeof location < "u" && location.protocol === "chrome-extension:");
2654
2591
  }
2655
- const st = { open: !1, view: null, error: null }, H = {
2592
+ const nt = { open: !1, view: null, error: null }, $ = {
2656
2593
  status: "paywall_status",
2657
2594
  priceId: "paywall_price_id",
2658
2595
  sessionId: "paywall_session_id"
2659
2596
  };
2660
2597
  class yr {
2661
2598
  constructor(t) {
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();
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) => {
2599
+ 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 = nt, this.stateListeners = /* @__PURE__ */ new Set();
2600
+ const { auth: r, ownsAuth: n } = cr(t);
2601
+ this.auth = r, this.ownsAuth = n, 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.forceLocale = t.locale ?? null, this.userUnsub = this.billing.onUserChange((i) => {
2665
2602
  this.emit("userChange", i);
2666
2603
  }), this.auth && (this.authUnsub = this.auth.onAuthChange((i, o) => {
2667
2604
  this.emit("authChange", { event: i, session: o });
@@ -2671,9 +2608,9 @@ class yr {
2671
2608
  if (t === !1) return;
2672
2609
  const r = typeof t == "object" && t !== null ? t : {};
2673
2610
  if (r.enabled === !1) return;
2674
- const a = r.endpoint ?? `${this.billing.apiOrigin}/api/v1/paywall/${this.billing.paywallId}/events`;
2675
- this.tracker = new Nt({
2676
- endpoint: a,
2611
+ const n = r.endpoint ?? `${this.billing.apiOrigin}/api/v1/paywall/${this.billing.paywallId}/events`;
2612
+ this.tracker = new Ut({
2613
+ endpoint: n,
2677
2614
  paywallId: this.billing.paywallId,
2678
2615
  capabilities: this.billing.capabilities,
2679
2616
  getVisitorId: () => this.billing.getVisitorId(),
@@ -2772,17 +2709,17 @@ class yr {
2772
2709
  r !== this.forceLocale && (this.forceLocale = r, this.handle && this.handle.update({ locale: r }));
2773
2710
  }
2774
2711
  on(t, r) {
2775
- let a = this.listeners.get(t);
2776
- return a || (a = /* @__PURE__ */ new Set(), this.listeners.set(t, a)), a.add(r), () => a.delete(r);
2712
+ let n = this.listeners.get(t);
2713
+ return n || (n = /* @__PURE__ */ new Set(), this.listeners.set(t, n)), n.add(r), () => n.delete(r);
2777
2714
  }
2778
2715
  off(t, r) {
2779
2716
  this.listeners.get(t)?.delete(r);
2780
2717
  }
2781
2718
  emit(t, ...r) {
2782
- const a = this.listeners.get(t);
2783
- if (!a) return;
2719
+ const n = this.listeners.get(t);
2720
+ if (!n) return;
2784
2721
  const i = r[0];
2785
- for (const o of a)
2722
+ for (const o of n)
2786
2723
  try {
2787
2724
  o(i);
2788
2725
  } catch (s) {
@@ -2839,43 +2776,63 @@ class yr {
2839
2776
  this.auth && this.openInternal("auth", { ...t, skipTrial: !0 });
2840
2777
  }
2841
2778
  /**
2842
- * Открывает модалку с anonymous-gate. AnonGate сразу зовёт
2843
- * `auth.signInAnonymously()`:
2844
- * - если в storage есть `anonRefreshToken` silent resume через
2845
- * /auth/refresh, модалка схлопывается мгновенно (юзер видит лёгкий
2846
- * спиннер ~100мс);
2847
- * - иначе — fresh POST /auth/anonymous/signin без captcha (защита от
2848
- * abuse держится на Supabase per-real-IP rate-limit + CF Bot Fight Mode).
2849
- *
2850
- * После успешного signIn'а модалка закрывается; host подхватывает свежую
2851
- * session через `auth.onAuthChange` или `paywall.onUserChange`. Для UX
2852
- * "просто залогиниться чтобы api-gateway работал, без покупок".
2779
+ * Шорткат над `openAuth()` открывает модалку сразу на signin-форме.
2780
+ * Эквивалент `openAuth()` (signin — дефолт). Существует для симметрии с
2781
+ * `openSignup()` и читаемости host-кода:
2782
+ * - `paywall.openSignin()` «вход в существующий аккаунт»
2783
+ * - `paywall.openSignup()` — «новая регистрация»
2784
+ * Без managed-auth no-op.
2785
+ */
2786
+ openSignin(t = {}) {
2787
+ this.auth && this.openInternal("auth", { ...t, skipTrial: !0, authMode: "signin" });
2788
+ }
2789
+ /**
2790
+ * Открывает модалку с auth-gate сразу в режиме регистрации (signup-mode
2791
+ * AuthPanel'а — email/password/repeat). Если в paywall layout админ
2792
+ * отключил allow_signup, AuthPanel игнорит mode и стартует с signin —
2793
+ * соблюдается admin-конфиг.
2794
+ * Без managed-auth — no-op.
2795
+ */
2796
+ openSignup(t = {}) {
2797
+ this.auth && this.openInternal("auth", { ...t, skipTrial: !0, authMode: "signup" });
2798
+ }
2799
+ /**
2800
+ * Headless anonymous signin без открытия модалки. Внутри:
2801
+ * idempotent (если уже анон — instant return) → resume через сохранённый
2802
+ * refresh_token → fresh /auth/anonymous/signin. Дедуплицирует
2803
+ * параллельные вызовы внутри AuthClient'а.
2853
2804
  *
2854
- * Без managed-auth (`auth` не подключён) методno-op. Триал и
2855
- * visibility-таргетинг этот flow обходит: анон-логин не должен зависеть
2856
- * от страны юзера или trial-стейджа.
2805
+ * Удобно для host-кнопок типа «Continue as guest» host сам управляет
2806
+ * loading-стейтом на своей кнопке, без полупустой модалки со спиннером.
2807
+ * Без managed-auth резолвится rejected promise'ом (нет AuthClient'а
2808
+ * чтобы делать signin).
2857
2809
  */
2858
- openAnonGate(t = {}) {
2859
- this.auth && this.openInternal("anon", { ...t, skipTrial: !0, skipVisibility: !0 });
2810
+ signInAnonymously() {
2811
+ return this.auth ? this.auth.signInAnonymously() : Promise.reject(
2812
+ new F(
2813
+ "invalid_config",
2814
+ "signInAnonymously requires managed-auth. Pass `auth: true` to PaywallUI."
2815
+ )
2816
+ );
2860
2817
  }
2861
2818
  openInternal(t, r) {
2862
2819
  r.identity && this.billing.setIdentity(r.identity), this.purchased = !1;
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) {
2865
- this.mountAndShow(t, { renew: o });
2820
+ const n = r.skipTrial === !0 || t === "support", i = r.skipVisibility === !0 || t === "support" || t === "auth", o = r.renew === !0;
2821
+ if (n && i) {
2822
+ this.mountAndShow(t, { renew: o, authMode: r.authMode });
2866
2823
  return;
2867
2824
  }
2868
2825
  const s = this.billing.getCachedBootstrap();
2869
2826
  if (s) {
2870
- this.runOpenGates(t, s, { skipTrial: a, skipVisibility: i, renew: o });
2827
+ this.runOpenGates(t, s, { skipTrial: n, skipVisibility: i, renew: o });
2871
2828
  return;
2872
2829
  }
2873
2830
  if (this.mountThenLoad) {
2874
- this.mountAndShow(t, { renew: o }), this.billing.bootstrap().then((l) => this.runDelayedGates(l, { skipTrial: a, skipVisibility: i })).catch(() => {
2831
+ this.mountAndShow(t, { renew: o }), this.billing.bootstrap().then((d) => this.runDelayedGates(d, { skipTrial: n, skipVisibility: i })).catch(() => {
2875
2832
  });
2876
2833
  return;
2877
2834
  }
2878
- this.billing.bootstrap().then((l) => this.runOpenGates(t, l, { skipTrial: a, skipVisibility: i, renew: o })).catch(() => {
2835
+ this.billing.bootstrap().then((d) => this.runOpenGates(t, d, { skipTrial: n, skipVisibility: i, renew: o })).catch(() => {
2879
2836
  this.mountAndShow(t, { renew: o });
2880
2837
  });
2881
2838
  }
@@ -2892,9 +2849,9 @@ class yr {
2892
2849
  }
2893
2850
  }
2894
2851
  if (r.skipTrial) return;
2895
- const a = t.settings.trial;
2896
- if (!a) return;
2897
- const i = this.ensureTrialStore(a);
2852
+ const n = t.settings.trial;
2853
+ if (!n) return;
2854
+ const i = this.ensureTrialStore(n);
2898
2855
  i.check().then(async (o) => {
2899
2856
  if (this.isOpen && (this.lastTrialStatus = o, o.mode !== "none")) {
2900
2857
  if (o.blocked) {
@@ -2913,68 +2870,75 @@ class yr {
2913
2870
  // вести trial-стейт «осталось N показов» под юзером, который вообще не
2914
2871
  // должен увидеть пейвол по таргетингу — бессмысленно: при возврате в
2915
2872
  // правильную страну он окажется со «слипшимся» триал-счётчиком.
2916
- runOpenGates(t, r, a) {
2917
- if (!a.skipVisibility) {
2873
+ runOpenGates(t, r, n) {
2874
+ if (!n.skipVisibility) {
2918
2875
  const i = r.settings.visibility;
2919
2876
  if (i && (this.lastVisibility = i, !i.visible)) {
2920
2877
  this.emit("visibility_blocked", i);
2921
2878
  return;
2922
2879
  }
2923
2880
  }
2924
- if (a.skipTrial) {
2925
- this.mountAndShow(t, { renew: a.renew });
2881
+ if (n.skipTrial) {
2882
+ this.mountAndShow(t, { renew: n.renew });
2926
2883
  return;
2927
2884
  }
2928
- this.gateThroughTrial(t, r, a.renew);
2885
+ this.gateThroughTrial(t, r, n.renew);
2929
2886
  }
2930
- gateThroughTrial(t, r, a) {
2887
+ gateThroughTrial(t, r, n) {
2931
2888
  const i = r.settings.trial;
2932
2889
  if (!i) {
2933
- this.mountAndShow(t, { renew: a });
2890
+ this.mountAndShow(t, { renew: n });
2934
2891
  return;
2935
2892
  }
2936
2893
  const o = this.ensureTrialStore(i);
2937
2894
  o.check().then(async (s) => {
2938
2895
  if (this.lastTrialStatus = s, s.mode === "none") {
2939
- this.mountAndShow(t, { renew: a });
2896
+ this.mountAndShow(t, { renew: n });
2940
2897
  return;
2941
2898
  }
2942
2899
  if (s.blocked) {
2943
- const l = await o.recordBlock();
2944
- this.lastTrialStatus = l, this.emit("trial_blocked", l);
2900
+ const d = await o.recordBlock();
2901
+ this.lastTrialStatus = d, this.emit("trial_blocked", d);
2945
2902
  return;
2946
2903
  }
2947
- this.trialExpiredFired || (this.trialExpiredFired = !0, this.emit("trial_expired")), this.mountAndShow(t, { renew: a });
2904
+ this.trialExpiredFired || (this.trialExpiredFired = !0, this.emit("trial_expired")), this.mountAndShow(t, { renew: n });
2948
2905
  }).catch((s) => {
2949
- typeof console < "u" && console.warn("[paywall] trial check failed", s), this.mountAndShow(t, { renew: a });
2906
+ typeof console < "u" && console.warn("[paywall] trial check failed", s), this.mountAndShow(t, { renew: n });
2950
2907
  });
2951
2908
  }
2952
2909
  ensureTrialStore(t) {
2953
- if (this.trialStore && this.trialStoreConfig && hr(this.trialStoreConfig, t))
2910
+ if (this.trialStore && this.trialStoreConfig && pr(this.trialStoreConfig, t))
2954
2911
  return this.trialStore;
2955
2912
  this.trialStoreConfig = t;
2956
2913
  const r = this.billing.createTrialStore;
2957
- return this.trialStore = typeof r == "function" ? r.call(this.billing, t) : qt(this.billing.getStorage(), this.billing.paywallId, t), this.trialStore;
2914
+ return this.trialStore = typeof r == "function" ? r.call(this.billing, t) : Gt(this.billing.getStorage(), this.billing.paywallId, t), this.trialStore;
2958
2915
  }
2959
2916
  mountAndShow(t, r = {}) {
2960
- const a = r.renew === !0;
2917
+ const n = r.renew === !0, i = r.authMode;
2961
2918
  if (this.handle) {
2962
- this.isOpen = !0, this.handle.update({ open: !0, initialView: t, purchased: !1, renew: a }), this.emit("open");
2919
+ this.isOpen = !0, this.handle.update({
2920
+ open: !0,
2921
+ initialView: t,
2922
+ initialAuthMode: i,
2923
+ purchased: !1,
2924
+ renew: n
2925
+ }), this.emit("open");
2963
2926
  return;
2964
2927
  }
2965
- this.isOpen = !0, this.handle = Zt(
2966
- tr,
2928
+ this.isOpen = !0, this.handle = Wt(
2929
+ Qe,
2967
2930
  {
2968
2931
  client: this.billing,
2969
2932
  open: !0,
2970
2933
  initialView: t,
2934
+ initialAuthMode: i,
2971
2935
  purchased: !1,
2972
- renew: a,
2936
+ renew: n,
2973
2937
  onClose: () => this.close(),
2974
- onEvent: (i, o) => {
2975
- this.emit(i, o), i === "checkout_started" && this.startUserWatcher();
2938
+ onEvent: (o, s) => {
2939
+ this.emit(o, s), o === "checkout_started" && this.startUserWatcher();
2976
2940
  },
2977
- onState: (i) => this.applyState(i),
2941
+ onState: (o) => this.applyState(o),
2978
2942
  inline: this.inline,
2979
2943
  locale: this.forceLocale
2980
2944
  },
@@ -2982,13 +2946,13 @@ class yr {
2982
2946
  ), this.emit("open");
2983
2947
  }
2984
2948
  applyState(t) {
2985
- if (!pr(this.currentState, t)) {
2949
+ if (!ur(this.currentState, t)) {
2986
2950
  this.currentState = t;
2987
2951
  for (const r of this.stateListeners)
2988
2952
  try {
2989
2953
  r(t);
2990
- } catch (a) {
2991
- console.warn("[paywall] onStateChange listener threw", a);
2954
+ } catch (n) {
2955
+ console.warn("[paywall] onStateChange listener threw", n);
2992
2956
  }
2993
2957
  }
2994
2958
  }
@@ -3015,10 +2979,10 @@ class yr {
3015
2979
  */
3016
2980
  onStateChange(t, r = {}) {
3017
2981
  this.stateListeners.add(t);
3018
- const a = r.immediate ?? "microtask";
3019
- if (a !== "none") {
2982
+ const n = r.immediate ?? "microtask";
2983
+ if (n !== "none") {
3020
2984
  const i = this.currentState;
3021
- if (a === "sync")
2985
+ if (n === "sync")
3022
2986
  try {
3023
2987
  t(i);
3024
2988
  } catch (o) {
@@ -3108,20 +3072,20 @@ class yr {
3108
3072
  user: s
3109
3073
  };
3110
3074
  }
3111
- const a = r.user ?? null;
3112
- if (a?.has_active_subscription)
3075
+ const n = r.user ?? null;
3076
+ if (n?.has_active_subscription)
3113
3077
  return {
3114
3078
  access: "granted",
3115
3079
  reason: "has_subscription",
3116
3080
  visibility: r.settings.visibility ?? null,
3117
3081
  trial: null,
3118
- user: a
3082
+ user: n
3119
3083
  };
3120
3084
  let i = null;
3121
3085
  if (!t.skipVisibility) {
3122
3086
  const s = r.settings.visibility;
3123
3087
  if (s && (i = s, this.lastVisibility = s, !s.visible))
3124
- return { access: "granted", reason: "visibility_blocked", visibility: i, trial: null, user: a };
3088
+ return { access: "granted", reason: "visibility_blocked", visibility: i, trial: null, user: n };
3125
3089
  }
3126
3090
  let o = null;
3127
3091
  if (!t.skipTrial) {
@@ -3129,12 +3093,12 @@ class yr {
3129
3093
  if (s)
3130
3094
  try {
3131
3095
  if (o = await this.ensureTrialStore(s).check(), this.lastTrialStatus = o, o.blocked)
3132
- return { access: "granted", reason: "trial_blocked", visibility: i, trial: o, user: a };
3133
- } catch (l) {
3134
- typeof console < "u" && console.warn("[paywall] getAccess: trial check failed", l);
3096
+ return { access: "granted", reason: "trial_blocked", visibility: i, trial: o, user: n };
3097
+ } catch (d) {
3098
+ typeof console < "u" && console.warn("[paywall] getAccess: trial check failed", d);
3135
3099
  }
3136
3100
  }
3137
- return { access: "blocked", reason: "no_subscription", visibility: i, trial: o, user: a };
3101
+ return { access: "blocked", reason: "no_subscription", visibility: i, trial: o, user: n };
3138
3102
  }
3139
3103
  /** Сбросить состояние триала в storage. Полезно для дев-режима / админ-кнопки
3140
3104
  * «прогнать сценарий заново». В проде хост обычно не дёргает. */
@@ -3148,7 +3112,7 @@ class yr {
3148
3112
  // В extension popup runtime — no-op (popup не доживёт). Там полагаемся на
3149
3113
  // bootstrap при следующем открытии.
3150
3114
  startUserWatcher() {
3151
- this.watcher || cr() && (this.watcher = new lr({
3115
+ this.watcher || lr() && (this.watcher = new sr({
3152
3116
  client: this.billing,
3153
3117
  onActive: (t) => {
3154
3118
  this.watcher = null, this.emit("purchase_completed", { priceId: null, sessionId: null });
@@ -3167,7 +3131,7 @@ class yr {
3167
3131
  }), this.watcher.start());
3168
3132
  }
3169
3133
  close() {
3170
- !this.isOpen || !this.handle || (this.isOpen = !1, this.purchased = !1, this.handle.update({ open: !1, purchased: !1 }), this.applyState(st), this.emit("close"));
3134
+ !this.isOpen || !this.handle || (this.isOpen = !1, this.purchased = !1, this.handle.update({ open: !1, purchased: !1 }), this.applyState(nt), this.emit("close"));
3171
3135
  }
3172
3136
  /**
3173
3137
  * Сканирует текущий URL на маркеры возврата с checkout и эмитит
@@ -3177,23 +3141,23 @@ class yr {
3177
3141
  */
3178
3142
  checkReturn() {
3179
3143
  if (typeof window > "u") return;
3180
- const t = new URL(window.location.href), r = St(t.hash.replace(/^#/, "")), a = St(t.search.replace(/^\?/, "")), i = r ?? a;
3144
+ const t = new URL(window.location.href), r = _t(t.hash.replace(/^#/, "")), n = _t(t.search.replace(/^\?/, "")), i = r ?? n;
3181
3145
  i && (i.status === "paid" ? (this.emit("purchase_completed", {
3182
3146
  priceId: i.priceId,
3183
3147
  sessionId: i.sessionId
3184
- }), gr(i)) : (i.status === "failed" || i.status === "cancelled") && this.emit("purchase_failed", { reason: i.status }), fr(t));
3148
+ }), hr(i)) : (i.status === "failed" || i.status === "cancelled") && this.emit("purchase_failed", { reason: i.status }), gr(t));
3185
3149
  }
3186
3150
  destroy() {
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;
3151
+ 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 = nt;
3188
3152
  }
3189
3153
  }
3190
- function dr(e) {
3154
+ function cr(e) {
3191
3155
  if (!e.auth) return { auth: void 0, ownsAuth: !1 };
3192
- if (e.auth instanceof dt || ur(e.auth))
3156
+ if (e.auth instanceof lt || dr(e.auth))
3193
3157
  return { auth: e.auth, ownsAuth: !1 };
3194
3158
  const t = e.auth === !0 ? {} : e.auth;
3195
3159
  return {
3196
- auth: new dt({
3160
+ auth: new lt({
3197
3161
  paywallId: e.paywallId,
3198
3162
  apiOrigin: t.apiOrigin ?? e.apiOrigin,
3199
3163
  storage: t.storage ?? e.storage,
@@ -3203,27 +3167,27 @@ function dr(e) {
3203
3167
  ownsAuth: !0
3204
3168
  };
3205
3169
  }
3206
- function ur(e) {
3170
+ function dr(e) {
3207
3171
  if (typeof e != "object" || e === null) return !1;
3208
3172
  const t = e;
3209
3173
  return typeof t.onAuthChange == "function" && typeof t.getCachedSession == "function" && typeof t.signOut == "function";
3210
3174
  }
3211
- function pr(e, t) {
3175
+ function ur(e, t) {
3212
3176
  return e.open === t.open && e.view === t.view && e.error === t.error;
3213
3177
  }
3214
- function hr(e, t) {
3178
+ function pr(e, t) {
3215
3179
  return e.mode === t.mode && e.payload === t.payload && e.storage === t.storage;
3216
3180
  }
3217
- function St(e) {
3181
+ function _t(e) {
3218
3182
  if (!e) return null;
3219
- const t = new URLSearchParams(e), r = t.get(H.status);
3183
+ const t = new URLSearchParams(e), r = t.get($.status);
3220
3184
  return r ? {
3221
3185
  status: r,
3222
- priceId: t.get(H.priceId),
3223
- sessionId: t.get(H.sessionId)
3186
+ priceId: t.get($.priceId),
3187
+ sessionId: t.get($.sessionId)
3224
3188
  } : null;
3225
3189
  }
3226
- function gr(e) {
3190
+ function hr(e) {
3227
3191
  if (!(typeof window > "u" || !window.opener))
3228
3192
  try {
3229
3193
  window.opener.postMessage(
@@ -3238,11 +3202,11 @@ function gr(e) {
3238
3202
  } catch {
3239
3203
  }
3240
3204
  }
3241
- function fr(e) {
3242
- const t = (a, i) => {
3243
- if (!a) return "";
3244
- const o = new URLSearchParams(a.replace(/^[?#]/, ""));
3245
- o.delete(H.status), o.delete(H.priceId), o.delete(H.sessionId);
3205
+ function gr(e) {
3206
+ const t = (n, i) => {
3207
+ if (!n) return "";
3208
+ const o = new URLSearchParams(n.replace(/^[?#]/, ""));
3209
+ o.delete($.status), o.delete($.priceId), o.delete($.sessionId);
3246
3210
  const s = o.toString();
3247
3211
  return s ? i + s : "";
3248
3212
  }, r = e.pathname + t(e.search, "?") + t(e.hash, "#");
@@ -3250,6 +3214,6 @@ function fr(e) {
3250
3214
  }
3251
3215
  export {
3252
3216
  yr as P,
3253
- Ye as b
3217
+ Ke as b
3254
3218
  };
3255
- //# sourceMappingURL=PaywallUI-BYquPomD.js.map
3219
+ //# sourceMappingURL=PaywallUI-BrDiS6zg.js.map