@coinlist-co/react 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/RequirementItem-B-MvcxSr.d.cts +37 -0
  2. package/dist/RequirementItem-DcYot2uC.d.ts +37 -0
  3. package/dist/chunk-EHZ6PIGN.js +414 -0
  4. package/dist/chunk-EHZ6PIGN.js.map +1 -0
  5. package/dist/chunk-NC45IO63.js +777 -0
  6. package/dist/chunk-NC45IO63.js.map +1 -0
  7. package/dist/chunk-RIFATQB5.js +257 -0
  8. package/dist/chunk-RIFATQB5.js.map +1 -0
  9. package/dist/chunk-UGJUTRXC.js +304 -0
  10. package/dist/chunk-UGJUTRXC.js.map +1 -0
  11. package/dist/client/components/index.cjs +473 -10
  12. package/dist/client/components/index.cjs.map +1 -1
  13. package/dist/client/components/index.d.cts +80 -12
  14. package/dist/client/components/index.d.ts +80 -12
  15. package/dist/client/components/index.js +243 -243
  16. package/dist/client/components/index.js.map +1 -1
  17. package/dist/client/core/index.cjs +349 -202
  18. package/dist/client/core/index.cjs.map +1 -1
  19. package/dist/client/core/index.d.cts +4 -4
  20. package/dist/client/core/index.d.ts +4 -4
  21. package/dist/client/core/index.js +16 -14
  22. package/dist/client/hooks/index.cjs +133 -16
  23. package/dist/client/hooks/index.cjs.map +1 -1
  24. package/dist/client/hooks/index.d.cts +102 -8
  25. package/dist/client/hooks/index.d.ts +102 -8
  26. package/dist/client/hooks/index.js +11 -9
  27. package/dist/client/index.cjs +591 -210
  28. package/dist/client/index.cjs.map +1 -1
  29. package/dist/client/index.d.cts +7 -6
  30. package/dist/client/index.d.ts +7 -6
  31. package/dist/client/index.js +41 -17
  32. package/dist/client/styles.css +1 -1
  33. package/dist/coinlist-client-BSxpqylo.d.ts +158 -0
  34. package/dist/coinlist-client-Cah5c_aF.d.cts +158 -0
  35. package/dist/participation-DMMEDxON.d.cts +185 -0
  36. package/dist/participation-E-bT-GXJ.d.ts +185 -0
  37. package/dist/requirement-XWT0T_zO.d.cts +205 -0
  38. package/dist/requirement-XWT0T_zO.d.ts +205 -0
  39. package/dist/server/index.cjs +519 -14
  40. package/dist/server/index.cjs.map +1 -1
  41. package/dist/server/index.d.cts +73 -4
  42. package/dist/server/index.d.ts +73 -4
  43. package/dist/server/index.js +116 -20
  44. package/dist/server/index.js.map +1 -1
  45. package/dist/useCoinListRequirements-B5-ZPOMz.d.ts +80 -0
  46. package/dist/useCoinListRequirements-Cuc32Tqw.d.cts +80 -0
  47. package/package.json +4 -4
  48. package/dist/chunk-32GOUV3L.js +0 -118
  49. package/dist/chunk-32GOUV3L.js.map +0 -1
  50. package/dist/chunk-G3B4RLXP.js +0 -76
  51. package/dist/chunk-G3B4RLXP.js.map +0 -1
  52. package/dist/chunk-GRVV7NLV.js +0 -282
  53. package/dist/chunk-GRVV7NLV.js.map +0 -1
  54. package/dist/chunk-Z5RFQOMS.js +0 -560
  55. package/dist/chunk-Z5RFQOMS.js.map +0 -1
  56. package/dist/coinlist-client-20v7fJSW.d.ts +0 -394
  57. package/dist/coinlist-client-Ds86ycAg.d.cts +0 -394
  58. package/dist/newtype-yKTvFdg_.d.cts +0 -6
  59. package/dist/newtype-yKTvFdg_.d.ts +0 -6
  60. package/dist/oauth-session-DgItaMKN.d.cts +0 -56
  61. package/dist/oauth-session-DnKDI5ou.d.ts +0 -56
  62. package/dist/offer-D6p_Ijme.d.cts +0 -30
  63. package/dist/offer-DnFEFJw9.d.ts +0 -30
  64. package/dist/useCoinListOffers-DIdOb5hB.d.ts +0 -27
  65. package/dist/useCoinListOffers-DvJxu6qj.d.cts +0 -27
  66. package/dist/useCompleteCoinListOAuth-C359mp_k.d.cts +0 -55
  67. package/dist/useCompleteCoinListOAuth-wZX3o8r2.d.ts +0 -55
@@ -1,15 +1,36 @@
1
+ import {
2
+ ChecklistStatus,
3
+ RequirementStatus,
4
+ RequirementVariant
5
+ } from "../chunk-EHZ6PIGN.js";
1
6
  import {
2
7
  CoinListProvider,
3
8
  useCoinList,
4
- useCompleteCoinListOAuth
5
- } from "../chunk-32GOUV3L.js";
9
+ useCoinListOfferDetails,
10
+ useCoinListOffers,
11
+ useCoinListRequirements,
12
+ useCompleteCoinListOAuth,
13
+ useParticipations
14
+ } from "../chunk-UGJUTRXC.js";
6
15
  import {
7
16
  User,
8
17
  UserEmail,
9
18
  UserId
10
19
  } from "../chunk-YJQMJFA7.js";
11
20
  import {
21
+ createCoinListClient
22
+ } from "../chunk-RIFATQB5.js";
23
+ import {
24
+ OAuthRefreshToken,
25
+ OAuthSession
26
+ } from "../chunk-5E3P7AMH.js";
27
+ import {
28
+ AuthorizationCode,
12
29
  Blockchain,
30
+ ClientId,
31
+ ClientSecret,
32
+ CodeChallenge,
33
+ CodeVerifier,
13
34
  CreateParticipationParams,
14
35
  Cursor,
15
36
  FaqItem,
@@ -26,26 +47,19 @@ import {
26
47
  PaginationParams,
27
48
  Participation,
28
49
  ParticipationId,
50
+ ParticipationsPaginationParams,
51
+ RedirectUri,
52
+ Requirement,
53
+ RequirementId,
54
+ RequirementStatusInfo,
29
55
  TermItem,
30
56
  WalletAddress,
31
- createCoinListClient,
32
57
  fetchAllPages
33
- } from "../chunk-Z5RFQOMS.js";
34
- import {
35
- OAuthRefreshToken,
36
- OAuthSession
37
- } from "../chunk-5E3P7AMH.js";
38
- import {
39
- AuthorizationCode,
40
- ClientId,
41
- ClientSecret,
42
- CodeChallenge,
43
- CodeVerifier,
44
- RedirectUri
45
- } from "../chunk-GRVV7NLV.js";
58
+ } from "../chunk-NC45IO63.js";
46
59
  export {
47
60
  AuthorizationCode,
48
61
  Blockchain,
62
+ ChecklistStatus,
49
63
  ClientId,
50
64
  ClientSecret,
51
65
  CodeChallenge,
@@ -69,7 +83,13 @@ export {
69
83
  PaginationParams,
70
84
  Participation,
71
85
  ParticipationId,
86
+ ParticipationsPaginationParams,
72
87
  RedirectUri,
88
+ Requirement,
89
+ RequirementId,
90
+ RequirementStatus,
91
+ RequirementStatusInfo,
92
+ RequirementVariant,
73
93
  TermItem,
74
94
  User,
75
95
  UserEmail,
@@ -78,6 +98,10 @@ export {
78
98
  createCoinListClient,
79
99
  fetchAllPages,
80
100
  useCoinList,
81
- useCompleteCoinListOAuth
101
+ useCoinListOfferDetails,
102
+ useCoinListOffers,
103
+ useCoinListRequirements,
104
+ useCompleteCoinListOAuth,
105
+ useParticipations
82
106
  };
83
107
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
1
  /*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
2
- @import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap";@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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--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-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-duration:initial;--tw-ease:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}:root{--color-brand-primary:#171717;--color-brand-primary-hover:#000;--color-brand-primary-active:#262626;--color-accent:#2b3a67;--color-accent-hover:#243057;--color-accent-active:#1d2647;--color-accent-focus:#c7d2fe;--color-accent-subtle:#eef1f8;--color-text-primary:#171717;--color-text-secondary:#8c8c8c;--color-text-disabled:#d1d1d1;--color-text-inverse:#fff;--color-background:#fff;--color-surface:#fafafa;--color-section:#f3f3f3;--color-border:#e5e5e5;--color-divider:#ececec;--color-overlay:#00000080;--color-positive:#15803d;--color-positive-subtle:#dcfce7;--color-negative:#dc2626;--color-negative-subtle:#fee2e2;--color-success:#2c8c5e;--color-success-subtle:#e6f4ec;--color-success-border:#cfe9db;--color-warning:#e08a1a;--color-warning-subtle:#fff7ed;--color-warning-border:#fdead7;--color-error:#b42318;--color-error-subtle:#feeceb;--color-error-border:#fbd5d2}.dark{--color-brand-primary:#f4f4f5;--color-brand-primary-hover:#fff;--color-brand-primary-active:#e4e4e7;--color-accent:#6f82c9;--color-accent-hover:#8799e4;--color-accent-active:#5b6fcf;--color-accent-focus:#6f82c959;--color-accent-subtle:#6f82c91f;--color-text-primary:#f4f4f5;--color-text-secondary:#a1a1aa;--color-text-disabled:#71717a;--color-text-inverse:#171717;--color-background:#0f1115;--color-surface:#161a20;--color-section:#20242c;--color-border:#2a2e35;--color-divider:#323741;--color-overlay:#000000b3;--color-positive:#22c55e;--color-positive-subtle:#22c55e1f;--color-negative:#ef4444;--color-negative-subtle:#ef44441f;--color-success:#34d399;--color-success-subtle:#34d3991f;--color-success-border:#34d39940;--color-warning:#f59e0b;--color-warning-subtle:#f59e0b1f;--color-warning-border:#f59e0b40;--color-error:#f87171;--color-error-subtle:#f871711f;--color-error-border:#f8717140}*{box-sizing:border-box}body{background-color:var(--color-background);color:var(--color-text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}@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-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-amber-500:oklch(76.9% .188 70.08);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--spacing:.25rem;--container-md:28rem;--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:calc(1.5 / 1);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--radius-md:.375rem;--radius-lg:.5rem;--radius-2xl:1rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--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);--color-brand-primary:var(--color-brand-primary);--color-brand-primary-hover:var(--color-brand-primary-hover);--color-brand-primary-active:var(--color-brand-primary-active);--color-accent:var(--color-accent);--color-accent-hover:var(--color-accent-hover);--color-accent-active:var(--color-accent-active);--color-accent-focus:var(--color-accent-focus);--color-accent-subtle:var(--color-accent-subtle);--color-text-primary:var(--color-text-primary);--color-text-secondary:var(--color-text-secondary);--color-text-disabled:var(--color-text-disabled);--color-text-inverse:var(--color-text-inverse);--color-background:var(--color-background);--color-surface:var(--color-surface);--color-section:var(--color-section);--color-border:var(--color-border);--color-divider:var(--color-divider);--color-overlay:var(--color-overlay);--color-positive:var(--color-positive);--color-positive-subtle:var(--color-positive-subtle);--color-negative:var(--color-negative);--color-negative-subtle:var(--color-negative-subtle);--color-success:var(--color-success);--color-success-subtle:var(--color-success-subtle);--color-success-border:var(--color-success-border);--color-warning:var(--color-warning);--color-warning-subtle:var(--color-warning-subtle);--color-warning-border:var(--color-warning-border);--color-error:var(--color-error);--color-error-subtle:var(--color-error-subtle);--color-error-border:var(--color-error-border);--radius-card:24px;--radius-btn:12px}}@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;-webkit-text-decoration: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}}@layer components;@layer utilities{.collapse{visibility:collapse}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-4{top:calc(var(--spacing) * 4)}.right-4{right:calc(var(--spacing) * 4)}.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}}.mt-4{margin-top:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-flex{display:inline-flex}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-9{height:calc(var(--spacing) * 9)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-28{height:calc(var(--spacing) * 28)}.h-52{height:calc(var(--spacing) * 52)}.h-\[18px\]{height:18px}.h-auto{height:auto}.h-full{height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-40{min-height:calc(var(--spacing) * 40)}.min-h-\[2\.4rem\]{min-height:2.4rem}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-28{width:calc(var(--spacing) * 28)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\[16px\]{width:16px}.w-\[448px\]{width:448px}.w-auto{width:auto}.w-full{width:100%}.max-w-\[22rem\]{max-width:22rem}.max-w-\[28rem\]{max-width:28rem}.max-w-\[30rem\]{max-width:30rem}.max-w-\[1200px\]{max-width:1200px}.max-w-md{max-width:var(--container-md)}.shrink-0{flex-shrink:0}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.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-8{gap:calc(var(--spacing) * 8)}.gap-\[5px\]{gap:5px}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}:where(.divide-divider>:not(:last-child)){border-color:var(--color-divider)}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-btn{border-radius:var(--radius-btn)}.rounded-card{border-radius:var(--radius-card)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-accent\/50{border-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.border-accent\/50{border-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.border-accent\/60{border-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.border-accent\/60{border-color:color-mix(in oklab, var(--color-accent) 60%, transparent)}}.border-amber-500{border-color:var(--color-amber-500)}.border-border,.border-border\/60{border-color:var(--color-border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--color-border) 60%, transparent)}}.border-current{border-color:currentColor}.border-divider{border-color:var(--color-divider)}.border-error-border{border-color:var(--color-error-border)}.border-success-border{border-color:var(--color-success-border)}.border-warning-border{border-color:var(--color-warning-border)}.border-t-transparent{border-top-color:#0000}.bg-accent\/10{background-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/10{background-color:color-mix(in oklab, var(--color-accent) 10%, transparent)}}.bg-background{background-color:var(--color-background)}.bg-brand-primary{background-color:var(--color-brand-primary)}.bg-error-subtle{background-color:var(--color-error-subtle)}.bg-section{background-color:var(--color-section)}.bg-success-subtle{background-color:var(--color-success-subtle)}.bg-surface{background-color:var(--color-surface)}.bg-transparent{background-color:#0000}.bg-warning-subtle{background-color:var(--color-warning-subtle)}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-surface{--tw-gradient-from:var(--color-surface);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-section{--tw-gradient-via:var(--color-section);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-transparent{--tw-gradient-via:transparent;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-background{--tw-gradient-to:var(--color-background);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-overlay\/35{--tw-gradient-to:var(--color-overlay)}@supports (color:color-mix(in lab, red, red)){.to-overlay\/35{--tw-gradient-to:color-mix(in oklab, var(--color-overlay) 35%, transparent)}}.to-overlay\/35{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[14px\]{font-size:14px}.text-\[16px\]{font-size:16px}.text-\[18px\]{font-size:18px}.text-\[22px\]{font-size:22px}.text-\[28px\]{font-size:28px}.text-\[36px\]{font-size:36px}.text-\[48px\]{font-size:48px}.text-\[64px\]{font-size:64px}.leading-\[110\%\]{--tw-leading:110%;line-height:110%}.leading-\[120\%\]{--tw-leading:120%;line-height:120%}.leading-\[125\%\]{--tw-leading:125%;line-height:125%}.leading-\[130\%\]{--tw-leading:130%;line-height:130%}.leading-\[135\%\]{--tw-leading:135%;line-height:135%}.leading-\[140\%\]{--tw-leading:140%;line-height:140%}.leading-\[150\%\]{--tw-leading:150%;line-height:150%}.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-\[0\.12px\]{--tw-tracking:.12px;letter-spacing:.12px}.tracking-\[0\.28px\]{--tw-tracking:.28px;letter-spacing:.28px}.whitespace-nowrap{white-space:nowrap}.text-error{color:var(--color-error)}.text-success{color:var(--color-success)}.text-text-inverse{color:var(--color-text-inverse)}.text-text-primary{color:var(--color-text-primary)}.text-text-secondary{color:var(--color-text-secondary)}.text-warning{color:var(--color-warning)}.capitalize{text-transform:capitalize}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-60{opacity:.6}.shadow-\[0_0_0_3px_rgba\(59\,130\,246\,0\.2\)\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#3b82f633);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_3px_rgba\(59\,130\,246\,0\.18\)\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#3b82f62e);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_3px_rgba\(59\,130\,246\,0\.25\)\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#3b82f640);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_10px_24px_rgba\(0\,0\,0\,0\.18\)\]{--tw-shadow:0 10px 24px var(--tw-shadow-color,#0000002e);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_10px_24px_rgba\(0\,0\,0\,0\.25\)\]{--tw-shadow:0 10px 24px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-card{--tw-shadow:0px 4px 6px -2px var(--tw-shadow-color,#0000000d), 0px 12px 24px -4px 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)}.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,)}.transition-\[grid-template-rows\]{transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.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-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-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}@media (hover:hover){.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:border-divider:hover{border-color:var(--color-divider)}.hover\:bg-\[\#fcdcd8\]:hover{background-color:#fcdcd8}.hover\:bg-border:hover{background-color:var(--color-border)}.hover\:bg-brand-primary-hover:hover{background-color:var(--color-brand-primary-hover)}.hover\:bg-section:hover{background-color:var(--color-section)}.hover\:bg-surface:hover{background-color:var(--color-surface)}.hover\:text-\[\#8b1a13\]:hover{color:#8b1a13}.hover\:text-text-primary:hover{color:var(--color-text-primary)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-\[0px_14px_32px_-10px_rgba\(0\,0\,0\,0\.35\)\]:hover{--tw-shadow:0px 14px 32px -10px var(--tw-shadow-color,#00000059);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-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-accent-focus:focus-visible{--tw-ring-color:var(--color-accent-focus)}.focus-visible\:ring-gray-400:focus-visible{--tw-ring-color:var(--color-gray-400)}.focus-visible\:ring-gray-500:focus-visible{--tw-ring-color:var(--color-gray-500)}.focus-visible\:ring-red-400:focus-visible{--tw-ring-color:var(--color-red-400)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-color:var(--color-red-500)}.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\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:bg-\[\#d9d9d9\]:active{background-color:#d9d9d9}.active\:bg-\[\#f9c9c4\]:active{background-color:#f9c9c4}.active\:bg-border:active{background-color:var(--color-border)}.active\:bg-brand-primary-active:active{background-color:var(--color-brand-primary-active)}.active\:text-\[\#6d1510\]:active{color:#6d1510}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-40:disabled{opacity:.4}@media (prefers-color-scheme:dark){@media (hover:hover){.dark\:hover\:bg-\[rgba\(248\,113\,113\,0\.20\)\]:hover{background-color:#f8717133}.dark\:hover\:text-\[\#fca5a5\]:hover{color:#fca5a5}}.dark\:active\:bg-\[rgba\(248\,113\,113\,0\.30\)\]:active{background-color:#f871714d}.dark\:active\:bg-divider:active{background-color:var(--color-divider)}.dark\:active\:text-\[\#f87171\]:active{color:#f87171}}.\[\&_circle\]\:fill-error-subtle circle{fill:var(--color-error-subtle)}.\[\&_circle\]\:fill-success-subtle circle{fill:var(--color-success-subtle)}.\[\&_circle\]\:fill-warning-subtle circle{fill:var(--color-warning-subtle)}}@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-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@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-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-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@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}@keyframes spin{to{transform:rotate(360deg)}}
2
+ @import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap";@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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--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-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-duration:initial;--tw-ease:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}:root{--color-brand-primary:#171717;--color-brand-primary-hover:#000;--color-brand-primary-active:#262626;--color-accent:#2b3a67;--color-accent-hover:#243057;--color-accent-active:#1d2647;--color-accent-focus:#c7d2fe;--color-accent-subtle:#eef1f8;--color-text-primary:#171717;--color-text-secondary:#8c8c8c;--color-text-disabled:#d1d1d1;--color-text-inverse:#fff;--color-background:#fff;--color-surface:#fafafa;--color-section:#f3f3f3;--color-border:#e5e5e5;--color-divider:#ececec;--color-overlay:#00000080;--color-positive:#15803d;--color-positive-subtle:#dcfce7;--color-negative:#dc2626;--color-negative-subtle:#fee2e2;--color-success:#2c8c5e;--color-success-subtle:#e6f4ec;--color-success-border:#cfe9db;--color-warning:#e08a1a;--color-warning-subtle:#fff7ed;--color-warning-border:#fdead7;--color-error:#b42318;--color-error-subtle:#feeceb;--color-error-border:#fbd5d2}.dark{--color-brand-primary:#f4f4f5;--color-brand-primary-hover:#fff;--color-brand-primary-active:#e4e4e7;--color-accent:#6f82c9;--color-accent-hover:#8799e4;--color-accent-active:#5b6fcf;--color-accent-focus:#6f82c959;--color-accent-subtle:#6f82c91f;--color-text-primary:#f4f4f5;--color-text-secondary:#a1a1aa;--color-text-disabled:#71717a;--color-text-inverse:#171717;--color-background:#0f1115;--color-surface:#161a20;--color-section:#20242c;--color-border:#2a2e35;--color-divider:#323741;--color-overlay:#000000b3;--color-positive:#22c55e;--color-positive-subtle:#22c55e1f;--color-negative:#ef4444;--color-negative-subtle:#ef44441f;--color-success:#34d399;--color-success-subtle:#34d3991f;--color-success-border:#34d39940;--color-warning:#f59e0b;--color-warning-subtle:#f59e0b1f;--color-warning-border:#f59e0b40;--color-error:#f87171;--color-error-subtle:#f871711f;--color-error-border:#f8717140}@media (prefers-color-scheme:dark){:root:not(.light){--color-brand-primary:#f4f4f5;--color-brand-primary-hover:#fff;--color-brand-primary-active:#e4e4e7;--color-accent:#6f82c9;--color-accent-hover:#8799e4;--color-accent-active:#5b6fcf;--color-accent-focus:#6f82c959;--color-accent-subtle:#6f82c91f;--color-text-primary:#f4f4f5;--color-text-secondary:#a1a1aa;--color-text-disabled:#71717a;--color-text-inverse:#171717;--color-background:#0f1115;--color-surface:#161a20;--color-section:#20242c;--color-border:#2a2e35;--color-divider:#323741;--color-overlay:#000000b3;--color-positive:#22c55e;--color-positive-subtle:#22c55e1f;--color-negative:#ef4444;--color-negative-subtle:#ef44441f;--color-success:#34d399;--color-success-subtle:#34d3991f;--color-success-border:#34d39940;--color-warning:#f59e0b;--color-warning-subtle:#f59e0b1f;--color-warning-border:#f59e0b40;--color-error:#f87171;--color-error-subtle:#f871711f;--color-error-border:#f8717140}}*{box-sizing:border-box}body{background-color:var(--color-background);color:var(--color-text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}@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-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-amber-500:oklch(76.9% .188 70.08);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--spacing:.25rem;--container-md:28rem;--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:calc(1.5 / 1);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--radius-md:.375rem;--radius-lg:.5rem;--radius-2xl:1rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--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);--color-brand-primary:var(--color-brand-primary);--color-brand-primary-hover:var(--color-brand-primary-hover);--color-brand-primary-active:var(--color-brand-primary-active);--color-accent:var(--color-accent);--color-accent-hover:var(--color-accent-hover);--color-accent-active:var(--color-accent-active);--color-accent-focus:var(--color-accent-focus);--color-accent-subtle:var(--color-accent-subtle);--color-text-primary:var(--color-text-primary);--color-text-secondary:var(--color-text-secondary);--color-text-disabled:var(--color-text-disabled);--color-text-inverse:var(--color-text-inverse);--color-background:var(--color-background);--color-surface:var(--color-surface);--color-section:var(--color-section);--color-border:var(--color-border);--color-divider:var(--color-divider);--color-overlay:var(--color-overlay);--color-positive:var(--color-positive);--color-positive-subtle:var(--color-positive-subtle);--color-negative:var(--color-negative);--color-negative-subtle:var(--color-negative-subtle);--color-success:var(--color-success);--color-success-subtle:var(--color-success-subtle);--color-success-border:var(--color-success-border);--color-warning:var(--color-warning);--color-warning-subtle:var(--color-warning-subtle);--color-warning-border:var(--color-warning-border);--color-error:var(--color-error);--color-error-subtle:var(--color-error-subtle);--color-error-border:var(--color-error-border);--radius-card:24px;--radius-btn:12px}}@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;-webkit-text-decoration: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}}@layer components;@layer utilities{.collapse{visibility:collapse}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-4{top:calc(var(--spacing) * 4)}.right-4{right:calc(var(--spacing) * 4)}.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}}.mt-4{margin-top:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-flex{display:inline-flex}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-9{height:calc(var(--spacing) * 9)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-28{height:calc(var(--spacing) * 28)}.h-52{height:calc(var(--spacing) * 52)}.h-\[18px\]{height:18px}.h-auto{height:auto}.h-full{height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-40{min-height:calc(var(--spacing) * 40)}.min-h-\[2\.4rem\]{min-height:2.4rem}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-28{width:calc(var(--spacing) * 28)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\[16px\]{width:16px}.w-\[448px\]{width:448px}.w-auto{width:auto}.w-full{width:100%}.max-w-\[22rem\]{max-width:22rem}.max-w-\[28rem\]{max-width:28rem}.max-w-\[30rem\]{max-width:30rem}.max-w-\[1200px\]{max-width:1200px}.max-w-md{max-width:var(--container-md)}.shrink-0{flex-shrink:0}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.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-8{gap:calc(var(--spacing) * 8)}.gap-\[5px\]{gap:5px}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}:where(.divide-divider>:not(:last-child)){border-color:var(--color-divider)}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-btn{border-radius:var(--radius-btn)}.rounded-card{border-radius:var(--radius-card)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-accent\/50{border-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.border-accent\/50{border-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.border-accent\/60{border-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.border-accent\/60{border-color:color-mix(in oklab, var(--color-accent) 60%, transparent)}}.border-amber-500{border-color:var(--color-amber-500)}.border-border,.border-border\/60{border-color:var(--color-border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--color-border) 60%, transparent)}}.border-current{border-color:currentColor}.border-divider{border-color:var(--color-divider)}.border-error-border{border-color:var(--color-error-border)}.border-success-border{border-color:var(--color-success-border)}.border-warning-border{border-color:var(--color-warning-border)}.border-t-transparent{border-top-color:#0000}.bg-accent\/10{background-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/10{background-color:color-mix(in oklab, var(--color-accent) 10%, transparent)}}.bg-background{background-color:var(--color-background)}.bg-brand-primary{background-color:var(--color-brand-primary)}.bg-error-subtle{background-color:var(--color-error-subtle)}.bg-section{background-color:var(--color-section)}.bg-success-subtle{background-color:var(--color-success-subtle)}.bg-surface{background-color:var(--color-surface)}.bg-transparent{background-color:#0000}.bg-warning-subtle{background-color:var(--color-warning-subtle)}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-surface{--tw-gradient-from:var(--color-surface);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-section{--tw-gradient-via:var(--color-section);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-transparent{--tw-gradient-via:transparent;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-background{--tw-gradient-to:var(--color-background);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-overlay\/35{--tw-gradient-to:var(--color-overlay)}@supports (color:color-mix(in lab, red, red)){.to-overlay\/35{--tw-gradient-to:color-mix(in oklab, var(--color-overlay) 35%, transparent)}}.to-overlay\/35{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[14px\]{font-size:14px}.text-\[16px\]{font-size:16px}.text-\[18px\]{font-size:18px}.text-\[22px\]{font-size:22px}.text-\[28px\]{font-size:28px}.text-\[36px\]{font-size:36px}.text-\[48px\]{font-size:48px}.text-\[64px\]{font-size:64px}.leading-\[110\%\]{--tw-leading:110%;line-height:110%}.leading-\[120\%\]{--tw-leading:120%;line-height:120%}.leading-\[125\%\]{--tw-leading:125%;line-height:125%}.leading-\[130\%\]{--tw-leading:130%;line-height:130%}.leading-\[135\%\]{--tw-leading:135%;line-height:135%}.leading-\[140\%\]{--tw-leading:140%;line-height:140%}.leading-\[150\%\]{--tw-leading:150%;line-height:150%}.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-\[0\.12px\]{--tw-tracking:.12px;letter-spacing:.12px}.tracking-\[0\.28px\]{--tw-tracking:.28px;letter-spacing:.28px}.whitespace-nowrap{white-space:nowrap}.text-error{color:var(--color-error)}.text-success{color:var(--color-success)}.text-text-inverse{color:var(--color-text-inverse)}.text-text-primary{color:var(--color-text-primary)}.text-text-secondary{color:var(--color-text-secondary)}.text-warning{color:var(--color-warning)}.capitalize{text-transform:capitalize}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-60{opacity:.6}.shadow-\[0_0_0_3px_rgba\(59\,130\,246\,0\.2\)\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#3b82f633);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_3px_rgba\(59\,130\,246\,0\.18\)\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#3b82f62e);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_3px_rgba\(59\,130\,246\,0\.25\)\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#3b82f640);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_10px_24px_rgba\(0\,0\,0\,0\.18\)\]{--tw-shadow:0 10px 24px var(--tw-shadow-color,#0000002e);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_10px_24px_rgba\(0\,0\,0\,0\.25\)\]{--tw-shadow:0 10px 24px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-card{--tw-shadow:0px 4px 6px -2px var(--tw-shadow-color,#0000000d), 0px 12px 24px -4px 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)}.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,)}.transition-\[grid-template-rows\]{transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.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-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-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}@media (hover:hover){.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:border-divider:hover{border-color:var(--color-divider)}.hover\:bg-\[\#fcdcd8\]:hover{background-color:#fcdcd8}.hover\:bg-border:hover{background-color:var(--color-border)}.hover\:bg-brand-primary-hover:hover{background-color:var(--color-brand-primary-hover)}.hover\:bg-section:hover{background-color:var(--color-section)}.hover\:bg-surface:hover{background-color:var(--color-surface)}.hover\:text-\[\#8b1a13\]:hover{color:#8b1a13}.hover\:text-text-primary:hover{color:var(--color-text-primary)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-\[0px_14px_32px_-10px_rgba\(0\,0\,0\,0\.35\)\]:hover{--tw-shadow:0px 14px 32px -10px var(--tw-shadow-color,#00000059);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-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-accent-focus:focus-visible{--tw-ring-color:var(--color-accent-focus)}.focus-visible\:ring-gray-400:focus-visible{--tw-ring-color:var(--color-gray-400)}.focus-visible\:ring-gray-500:focus-visible{--tw-ring-color:var(--color-gray-500)}.focus-visible\:ring-red-400:focus-visible{--tw-ring-color:var(--color-red-400)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-color:var(--color-red-500)}.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\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:bg-\[\#d9d9d9\]:active{background-color:#d9d9d9}.active\:bg-\[\#f9c9c4\]:active{background-color:#f9c9c4}.active\:bg-border:active{background-color:var(--color-border)}.active\:bg-brand-primary-active:active{background-color:var(--color-brand-primary-active)}.active\:text-\[\#6d1510\]:active{color:#6d1510}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-40:disabled{opacity:.4}@media (prefers-color-scheme:dark){@media (hover:hover){.dark\:hover\:bg-\[rgba\(248\,113\,113\,0\.20\)\]:hover{background-color:#f8717133}.dark\:hover\:text-\[\#fca5a5\]:hover{color:#fca5a5}}.dark\:active\:bg-\[rgba\(248\,113\,113\,0\.30\)\]:active{background-color:#f871714d}.dark\:active\:bg-divider:active{background-color:var(--color-divider)}.dark\:active\:text-\[\#f87171\]:active{color:#f87171}}.\[\&_circle\]\:fill-error-subtle circle{fill:var(--color-error-subtle)}.\[\&_circle\]\:fill-success-subtle circle{fill:var(--color-success-subtle)}.\[\&_circle\]\:fill-warning-subtle circle{fill:var(--color-warning-subtle)}}@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-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@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-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-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@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}@keyframes spin{to{transform:rotate(360deg)}}
@@ -0,0 +1,158 @@
1
+ import { A as AuthorizationCode, c as CodeVerifier, o as Config, O as OAuthAccessToken, i as PaginationParams, P as PaginatedResponse, j as Participation, m as ParticipationsPaginationParams, k as ParticipationId, d as CreateParticipationParams } from './participation-E-bT-GXJ.js';
2
+ import { O as Offer, b as OfferId, a as OfferDetail, d as OfferOptionId, R as Requirement, h as RequirementStatusInfo } from './requirement-XWT0T_zO.js';
3
+
4
+ type AuthState = 'unknown' | 'logged-in' | 'logged-out';
5
+ /** Discriminated error reasons from {@link CoinListClient.completeOAuth}. */
6
+ type OauthClientErrorReason = 'user_canceled' | 'missing_state' | 'invalid_state' | 'missing_code' | 'missing_code_verifier';
7
+ type OauthClientResult = {
8
+ type: 'ok';
9
+ code: AuthorizationCode;
10
+ codeVerifier: CodeVerifier;
11
+ } | {
12
+ type: 'error';
13
+ reason: OauthClientErrorReason;
14
+ };
15
+
16
+ interface ClientConfig extends Config {
17
+ /**
18
+ * The SDK user must provide this function. It is responsible for fetching a
19
+ * valid {@link OAuthAccessToken}, or **null** for logged-out users. If your
20
+ * backend is in TypeScript, it is recommended to use
21
+ * {@link CoinListServer#accessToken} from `@/server/coinlist.server`.
22
+ */
23
+ getAccessToken: () => Promise<OAuthAccessToken | null>;
24
+ /**
25
+ * Recommended to leave undefined. Used to change the CoinList environment;
26
+ * default is production.
27
+ */
28
+ coinlistBaseUrl?: string;
29
+ }
30
+ interface CoinListClient {
31
+ /**
32
+ * Calls the provided {@link ClientConfig.getAccessToken} lambda to determine
33
+ * the user's {@link AuthState}. This is called automatically by {@link CoinListProvider};
34
+ * you typically do not need to call it yourself unless you are using the client
35
+ * outside of the provider.
36
+ */
37
+ init(): Promise<AuthState>;
38
+ /**
39
+ * Returns the current auth state: `'logged-in'`, `'logged-out'`, or `'unknown'`.
40
+ * Returns **unknown** until {@link CoinListClient.init} has completed. It is
41
+ * recommended to use the `const { isReady, coinlist } = useCoinList()` hook to know when
42
+ * the SDK has initialized, or to manually await {@link CoinListClient.init}
43
+ * before relying on this value.
44
+ */
45
+ getAuthState(): AuthState;
46
+ /**
47
+ * Starts the OAuth flow with PKCE. Generates a random `state` and `code_verifier`,
48
+ * stores them in sessionStorage (for validation in {@link CoinListClient.completeOAuth}
49
+ * on redirect), then redirects the user to the CoinList authorization page. After
50
+ * the user authorizes, they are sent back to your application's redirect URI; call
51
+ * {@link CoinListClient.completeOAuth} on that page to finish the flow.
52
+ */
53
+ startOAuth(): Promise<void>;
54
+ /**
55
+ * Completes the OAuth flow on the FE with PKCE and state validation. Parses the
56
+ * redirect URL (state, code) and validates them against sessionStorage
57
+ * (state, code_verifier). The state check protects against CSRF (cross-site
58
+ * request forgery). Call this on the frontend page the user is redirected
59
+ * to after authorizing.
60
+ *
61
+ * On `ok`: Call your backend to exchange the short-lived `authorizationCode`
62
+ * (and the returned `codeVerifier`) for a long-lived session. If your backend
63
+ * is in TypeScript, you can use {@link CoinListServer#completeOAuth} from
64
+ * `@/server/coinlist.server` (CoinListServer) to perform that exchange.
65
+ *
66
+ * On `error`: `reason` is an {@link OauthClientErrorReason} (e.g. `'missing_state'`, `'invalid_state'`) so you can switch on it and surface a message to the user.
67
+ */
68
+ completeOAuth(): OauthClientResult;
69
+ /**
70
+ * Clears the in-memory access token. Note: you need to manually
71
+ * also logout on the backend via CoinListServer#logout to clear the session cookie.
72
+ */
73
+ logout(): void;
74
+ /**
75
+ * Fetches all offers by iterating through every paginated response.
76
+ *
77
+ * This method must be called only when the user's {@link AuthState} is
78
+ * `'logged-in'`. If the user is not authenticated, it throws
79
+ * {@link NotAuthenticatedError}.
80
+ */
81
+ fetchAllOffers(): Promise<Offer[]>;
82
+ /**
83
+ * Fetches a single page of offers.
84
+ *
85
+ * This method must be called only when the user's {@link AuthState} is
86
+ * `'logged-in'`. If the user is not authenticated, it throws
87
+ * {@link NotAuthenticatedError}.
88
+ */
89
+ fetchOffersPage(params: PaginationParams): Promise<PaginatedResponse<Offer>>;
90
+ /**
91
+ * Fetches details for a given offer by its id.
92
+ *
93
+ * This method must be called only when the user's {@link AuthState} is
94
+ * `'logged-in'`. If the user is not authenticated, it throws
95
+ * {@link NotAuthenticatedError}.
96
+ */
97
+ fetchOfferDetails(id: OfferId): Promise<OfferDetail>;
98
+ /**
99
+ * Fetches all participations by iterating through every paginated response.
100
+ *
101
+ * This method must be called only when the user's {@link AuthState} is
102
+ * `'logged-in'`. If the user is not authenticated, it throws
103
+ * {@link NotAuthenticatedError}.
104
+ */
105
+ fetchAllParticipations(offerId?: OfferId): Promise<Participation[]>;
106
+ /**
107
+ * Fetches a single page of participations, optionally filtered by offer.
108
+ *
109
+ * This method must be called only when the user's {@link AuthState} is
110
+ * `'logged-in'`. If the user is not authenticated, it throws
111
+ * {@link NotAuthenticatedError}.
112
+ */
113
+ fetchParticipationsPage(params: ParticipationsPaginationParams): Promise<PaginatedResponse<Participation>>;
114
+ /**
115
+ * Fetches a participation by id.
116
+ *
117
+ * This method must be called only when the user's {@link AuthState} is
118
+ * `'logged-in'`. If the user is not authenticated, it throws
119
+ * {@link NotAuthenticatedError}.
120
+ */
121
+ fetchParticipation(id: ParticipationId): Promise<Participation>;
122
+ /**
123
+ * Creates a participation.
124
+ *
125
+ * This method must be called only when the user's {@link AuthState} is
126
+ * `'logged-in'`. If the user is not authenticated, it throws
127
+ * {@link NotAuthenticatedError}.
128
+ */
129
+ createParticipation(params: CreateParticipationParams): Promise<Participation>;
130
+ /**
131
+ * Fetches the requirements for all options of a given offer, grouped by option ID.
132
+ *
133
+ * This method must be called only when the user's {@link AuthState} is
134
+ * `'logged-in'`. If the user is not authenticated, it throws
135
+ * {@link NotAuthenticatedError}.
136
+ */
137
+ fetchOfferRequirements(offerId: OfferId): Promise<Record<OfferOptionId, Requirement[]>>;
138
+ /**
139
+ * Fetches the user's requirement statuses for a given offer.
140
+ *
141
+ * This method must be called only when the user's {@link AuthState} is
142
+ * `'logged-in'`. If the user is not authenticated, it throws
143
+ * {@link NotAuthenticatedError}.
144
+ */
145
+ fetchRequirementStatuses(offerId: OfferId): Promise<RequirementStatusInfo[]>;
146
+ /**
147
+ * Opens the CoinList page for completing a given requirement in a new tab.
148
+ * For `jurisdiction` requirements there is no CTA, so this is a no-op.
149
+ */
150
+ handleRequirement(requirement: Requirement): void;
151
+ /**
152
+ * Opens the CoinList support ticket page in a new tab.
153
+ */
154
+ contactSupport(): void;
155
+ }
156
+ declare function createCoinListClient(config: ClientConfig): CoinListClient;
157
+
158
+ export { type AuthState as A, type ClientConfig as C, type OauthClientErrorReason as O, type CoinListClient as a, type OauthClientResult as b, createCoinListClient as c };
@@ -0,0 +1,158 @@
1
+ import { A as AuthorizationCode, c as CodeVerifier, o as Config, O as OAuthAccessToken, i as PaginationParams, P as PaginatedResponse, j as Participation, m as ParticipationsPaginationParams, k as ParticipationId, d as CreateParticipationParams } from './participation-DMMEDxON.cjs';
2
+ import { O as Offer, b as OfferId, a as OfferDetail, d as OfferOptionId, R as Requirement, h as RequirementStatusInfo } from './requirement-XWT0T_zO.cjs';
3
+
4
+ type AuthState = 'unknown' | 'logged-in' | 'logged-out';
5
+ /** Discriminated error reasons from {@link CoinListClient.completeOAuth}. */
6
+ type OauthClientErrorReason = 'user_canceled' | 'missing_state' | 'invalid_state' | 'missing_code' | 'missing_code_verifier';
7
+ type OauthClientResult = {
8
+ type: 'ok';
9
+ code: AuthorizationCode;
10
+ codeVerifier: CodeVerifier;
11
+ } | {
12
+ type: 'error';
13
+ reason: OauthClientErrorReason;
14
+ };
15
+
16
+ interface ClientConfig extends Config {
17
+ /**
18
+ * The SDK user must provide this function. It is responsible for fetching a
19
+ * valid {@link OAuthAccessToken}, or **null** for logged-out users. If your
20
+ * backend is in TypeScript, it is recommended to use
21
+ * {@link CoinListServer#accessToken} from `@/server/coinlist.server`.
22
+ */
23
+ getAccessToken: () => Promise<OAuthAccessToken | null>;
24
+ /**
25
+ * Recommended to leave undefined. Used to change the CoinList environment;
26
+ * default is production.
27
+ */
28
+ coinlistBaseUrl?: string;
29
+ }
30
+ interface CoinListClient {
31
+ /**
32
+ * Calls the provided {@link ClientConfig.getAccessToken} lambda to determine
33
+ * the user's {@link AuthState}. This is called automatically by {@link CoinListProvider};
34
+ * you typically do not need to call it yourself unless you are using the client
35
+ * outside of the provider.
36
+ */
37
+ init(): Promise<AuthState>;
38
+ /**
39
+ * Returns the current auth state: `'logged-in'`, `'logged-out'`, or `'unknown'`.
40
+ * Returns **unknown** until {@link CoinListClient.init} has completed. It is
41
+ * recommended to use the `const { isReady, coinlist } = useCoinList()` hook to know when
42
+ * the SDK has initialized, or to manually await {@link CoinListClient.init}
43
+ * before relying on this value.
44
+ */
45
+ getAuthState(): AuthState;
46
+ /**
47
+ * Starts the OAuth flow with PKCE. Generates a random `state` and `code_verifier`,
48
+ * stores them in sessionStorage (for validation in {@link CoinListClient.completeOAuth}
49
+ * on redirect), then redirects the user to the CoinList authorization page. After
50
+ * the user authorizes, they are sent back to your application's redirect URI; call
51
+ * {@link CoinListClient.completeOAuth} on that page to finish the flow.
52
+ */
53
+ startOAuth(): Promise<void>;
54
+ /**
55
+ * Completes the OAuth flow on the FE with PKCE and state validation. Parses the
56
+ * redirect URL (state, code) and validates them against sessionStorage
57
+ * (state, code_verifier). The state check protects against CSRF (cross-site
58
+ * request forgery). Call this on the frontend page the user is redirected
59
+ * to after authorizing.
60
+ *
61
+ * On `ok`: Call your backend to exchange the short-lived `authorizationCode`
62
+ * (and the returned `codeVerifier`) for a long-lived session. If your backend
63
+ * is in TypeScript, you can use {@link CoinListServer#completeOAuth} from
64
+ * `@/server/coinlist.server` (CoinListServer) to perform that exchange.
65
+ *
66
+ * On `error`: `reason` is an {@link OauthClientErrorReason} (e.g. `'missing_state'`, `'invalid_state'`) so you can switch on it and surface a message to the user.
67
+ */
68
+ completeOAuth(): OauthClientResult;
69
+ /**
70
+ * Clears the in-memory access token. Note: you need to manually
71
+ * also logout on the backend via CoinListServer#logout to clear the session cookie.
72
+ */
73
+ logout(): void;
74
+ /**
75
+ * Fetches all offers by iterating through every paginated response.
76
+ *
77
+ * This method must be called only when the user's {@link AuthState} is
78
+ * `'logged-in'`. If the user is not authenticated, it throws
79
+ * {@link NotAuthenticatedError}.
80
+ */
81
+ fetchAllOffers(): Promise<Offer[]>;
82
+ /**
83
+ * Fetches a single page of offers.
84
+ *
85
+ * This method must be called only when the user's {@link AuthState} is
86
+ * `'logged-in'`. If the user is not authenticated, it throws
87
+ * {@link NotAuthenticatedError}.
88
+ */
89
+ fetchOffersPage(params: PaginationParams): Promise<PaginatedResponse<Offer>>;
90
+ /**
91
+ * Fetches details for a given offer by its id.
92
+ *
93
+ * This method must be called only when the user's {@link AuthState} is
94
+ * `'logged-in'`. If the user is not authenticated, it throws
95
+ * {@link NotAuthenticatedError}.
96
+ */
97
+ fetchOfferDetails(id: OfferId): Promise<OfferDetail>;
98
+ /**
99
+ * Fetches all participations by iterating through every paginated response.
100
+ *
101
+ * This method must be called only when the user's {@link AuthState} is
102
+ * `'logged-in'`. If the user is not authenticated, it throws
103
+ * {@link NotAuthenticatedError}.
104
+ */
105
+ fetchAllParticipations(offerId?: OfferId): Promise<Participation[]>;
106
+ /**
107
+ * Fetches a single page of participations, optionally filtered by offer.
108
+ *
109
+ * This method must be called only when the user's {@link AuthState} is
110
+ * `'logged-in'`. If the user is not authenticated, it throws
111
+ * {@link NotAuthenticatedError}.
112
+ */
113
+ fetchParticipationsPage(params: ParticipationsPaginationParams): Promise<PaginatedResponse<Participation>>;
114
+ /**
115
+ * Fetches a participation by id.
116
+ *
117
+ * This method must be called only when the user's {@link AuthState} is
118
+ * `'logged-in'`. If the user is not authenticated, it throws
119
+ * {@link NotAuthenticatedError}.
120
+ */
121
+ fetchParticipation(id: ParticipationId): Promise<Participation>;
122
+ /**
123
+ * Creates a participation.
124
+ *
125
+ * This method must be called only when the user's {@link AuthState} is
126
+ * `'logged-in'`. If the user is not authenticated, it throws
127
+ * {@link NotAuthenticatedError}.
128
+ */
129
+ createParticipation(params: CreateParticipationParams): Promise<Participation>;
130
+ /**
131
+ * Fetches the requirements for all options of a given offer, grouped by option ID.
132
+ *
133
+ * This method must be called only when the user's {@link AuthState} is
134
+ * `'logged-in'`. If the user is not authenticated, it throws
135
+ * {@link NotAuthenticatedError}.
136
+ */
137
+ fetchOfferRequirements(offerId: OfferId): Promise<Record<OfferOptionId, Requirement[]>>;
138
+ /**
139
+ * Fetches the user's requirement statuses for a given offer.
140
+ *
141
+ * This method must be called only when the user's {@link AuthState} is
142
+ * `'logged-in'`. If the user is not authenticated, it throws
143
+ * {@link NotAuthenticatedError}.
144
+ */
145
+ fetchRequirementStatuses(offerId: OfferId): Promise<RequirementStatusInfo[]>;
146
+ /**
147
+ * Opens the CoinList page for completing a given requirement in a new tab.
148
+ * For `jurisdiction` requirements there is no CTA, so this is a no-op.
149
+ */
150
+ handleRequirement(requirement: Requirement): void;
151
+ /**
152
+ * Opens the CoinList support ticket page in a new tab.
153
+ */
154
+ contactSupport(): void;
155
+ }
156
+ declare function createCoinListClient(config: ClientConfig): CoinListClient;
157
+
158
+ export { type AuthState as A, type ClientConfig as C, type OauthClientErrorReason as O, type CoinListClient as a, type OauthClientResult as b, createCoinListClient as c };