masks-server 0.13.0 → 0.14.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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/masks/server/manage_controller.rb +1 -0
  3. data/app/controllers/masks/server/scim/metadata_controller.rb +1 -1
  4. data/app/models/masks/server/app_preset.rb +1 -1
  5. data/app/models/masks/server/client.rb +24 -0
  6. data/app/views/masks/server/handshakes/show.html.erb +2 -8
  7. data/app/views/masks/server/logins/_consent.html.erb +43 -44
  8. data/app/views/masks/server/logins/_enrol.html.erb +1 -1
  9. data/app/views/masks/server/logins/_setup_configure.html.erb +2 -6
  10. data/app/views/masks/server/logins/_signup.html.erb +2 -9
  11. data/app/views/masks/server/logins/_signup_credentials.html.erb +1 -2
  12. data/app/views/masks/server/logins/_signup_head.html.erb +1 -11
  13. data/config/locales/de/account.yml +4 -4
  14. data/config/locales/de/handshakes.yml +6 -6
  15. data/config/locales/de/logins.yml +44 -30
  16. data/config/locales/en/account.yml +4 -4
  17. data/config/locales/en/handshakes.yml +6 -6
  18. data/config/locales/en/logins.yml +44 -30
  19. data/config/locales/es/account.yml +4 -4
  20. data/config/locales/es/handshakes.yml +6 -6
  21. data/config/locales/es/logins.yml +42 -28
  22. data/config/locales/fr/account.yml +4 -4
  23. data/config/locales/fr/handshakes.yml +6 -6
  24. data/config/locales/fr/logins.yml +43 -29
  25. data/lib/masks/server/schema_reference.rb +1 -1
  26. data/public/masks-assets/.vite/manifest.json +3 -3
  27. data/public/masks-assets/assets/app-Cfbt-A5V.css +2 -0
  28. data/public/masks-assets/assets/login-BDggujiZ.js +6 -0
  29. data/public/masks-assets/assets/login-BDggujiZ.js.map +1 -0
  30. data/public/masks-assets/assets/{manage-DpVxe5sv.js → manage-VgOqKj7N.js} +2 -2
  31. data/public/masks-assets/assets/manage-VgOqKj7N.js.map +1 -0
  32. data/version.txt +1 -1
  33. metadata +6 -6
  34. data/public/masks-assets/assets/app-BXOScMjL.css +0 -2
  35. data/public/masks-assets/assets/login-C21_jb6L.js +0 -4
  36. data/public/masks-assets/assets/login-C21_jb6L.js.map +0 -1
  37. data/public/masks-assets/assets/manage-DpVxe5sv.js.map +0 -1
@@ -16,7 +16,7 @@ fr:
16
16
  name: "Nom"
17
17
  phone: "Téléphone"
18
18
  password: "Mot de passe"
19
- not_you: "Ce n’est pas vous ?"
19
+ not_you: "Utiliser un autre compte"
20
20
  sign_out: "Se déconnecter"
21
21
  use_passkey: "Utiliser une clé d’accès"
22
22
  or: "ou"
@@ -40,10 +40,12 @@ fr:
40
40
  tab_confirmation: "Confirmation"
41
41
  setup_cap: "Bienvenue !"
42
42
  setup_title: "Configurer"
43
- signup_title: "Créer un compte sur"
43
+ signup_title: "Créez votre compte"
44
44
  token: "Jeton de configuration"
45
- token_hint: "Inscrit dans les journaux du serveur, que seule la personne qui exploite masks peut lire."
46
- origin: "Configurer sur"
45
+ token_hint: "Il est imprimé dans le journal du serveur."
46
+ origin: "Ce masks répond à %{origin}."
47
+ pick_nickname: "Choisir un pseudo"
48
+ nickname_hint: "Les autres le voient. Laissez tel quel pour utiliser %{suggested}."
47
49
  once: "Cet écran ne s’affichera plus."
48
50
  docs: "Lire la documentation."
49
51
  confirm: "Confirmer le mot de passe"
@@ -57,10 +59,10 @@ fr:
57
59
  proving: "Vérification du navigateur"
58
60
 
59
61
  identify:
60
- heading: "Connectez-vous pour continuer"
62
+ heading: "Se connecter"
61
63
  heading_to: "Se connecter à %{client}"
62
- identifier: "Pseudo ou e-mail"
63
- signup_hint: "Nouveau ici ? Saisissez l’adresse que vous voulez utiliser, et un compte est créé pour elle."
64
+ identifier: "E-mail ou pseudo"
65
+ signup_hint: "Nouveau ici ? Saisissez votre e-mail et masks vous crée un compte."
64
66
 
65
67
  first_factor:
66
68
  title: "Saisissez votre mot de passe"
@@ -76,16 +78,16 @@ fr:
76
78
  sent_again: "Envoyé"
77
79
 
78
80
  second_factor:
79
- title: "Saisissez votre code"
80
- title_passkey: "Utilisez votre second facteur"
81
- trust: "Faire confiance à cet appareil pendant %{duration}"
81
+ title: "Confirmez que c'est vous"
82
+ title_passkey: "Confirmez que c'est vous avec votre clé d'accès"
83
+ trust: "Passer cette étape sur cet appareil pendant %{duration}"
82
84
  use_backup_code: "Utiliser un code de secours"
83
85
  stuck_insecure: "Le second facteur de ce compte est une clé d’accès, et le navigateur ne propose les clés d’accès qu’aux pages servies en HTTPS. Ouvrez cette page en HTTPS pour continuer."
84
86
  stuck_unsupported: "Le second facteur de ce compte est une clé d’accès, et ce navigateur ne prend pas en charge les clés d’accès. Ouvrez cette page dans un navigateur compatible pour continuer."
85
87
  stuck_no_script: "Le second facteur de ce compte est une clé d’accès, et une clé d’accès nécessite JavaScript. Activez JavaScript pour continuer."
86
88
  stuck_inbox: "Cette connexion a commencé depuis votre boîte de réception, donc un code envoyé à cette adresse ne peut pas la confirmer. Recommencez et connectez-vous avec votre mot de passe pour utiliser un code par e-mail."
87
89
  stuck_nothing: "Ce compte n’a aucun second facteur utilisable pour cette connexion. Un gestionnaire peut le réinitialiser."
88
- recovery_request: "Je ne peux utiliser aucune de ces options"
90
+ recovery_request: "Je ne peux utiliser aucun de ces moyens"
89
91
  recovery_ask: "Demander de l’aide à un gestionnaire"
90
92
  recovery_requested: "Un gestionnaire a été invité à réinitialiser vos seconds facteurs. Il peut vous contacter pour s’assurer qu’il s’agit bien de vous. Ensuite, reconnectez-vous pour en configurer un nouveau."
91
93
  sent_to: "Envoyé à %{to}."
@@ -101,16 +103,26 @@ fr:
101
103
  approval_checked: "Je l’ai approuvée"
102
104
 
103
105
  enrol:
104
- title: "Sécurisez votre compte"
105
- lede: "Ajoutez autant de seconds facteurs que vous le souhaitez. Ce compte en exige au moins un."
106
- lede_optional: "Ajoutez autant de seconds facteurs que vous le souhaitez."
106
+ title: "Protégez votre compte"
107
+ lede: "Choisissez une façon de confirmer que c'est vous à la connexion. Vous pourrez en ajouter d'autres plus tard."
108
+ lede_optional: "Choisissez une façon de confirmer que c'est vous à la connexion, ou passez pour l'instant."
109
+ on_title: "Votre compte est protégé"
110
+ on_lede: "Voici comment vous confirmez que c'est vous à la connexion."
111
+ on_label: "Activé"
112
+ passkey: "Clé d'accès"
107
113
  otp: "Application d’authentification"
114
+ otp_about: "Une application comme Google Authenticator ou 1Password affiche un code à six chiffres."
108
115
  otp_on: "Activée"
109
- scan_hint: "Scannez-le, ou saisissez cette clé à la main :"
116
+ scan_hint: "Scannez ceci avec votre application d'authentification, ou saisissez-y la clé :"
117
+ passkey_about: "Votre téléphone ou ordinateur vérifie que c'est vous avec votre visage, votre empreinte ou votre code PIN."
118
+ codes_email_about: "Un code est envoyé à %{to} à chaque connexion."
119
+ codes_sms_about: "Un code est envoyé à %{to} par SMS à chaque connexion."
120
+ another_way: "Choisir un autre moyen"
121
+ add_way: "Ajouter un autre moyen"
110
122
  open: "Ouvrir dans votre application d’authentification"
111
123
  turn_on: "L’activer"
112
124
  passkeys: "Clés d’accès"
113
- passkeys_none: "Aucune pour l’instant. Une clé qui vérifie un code PIN ou une empreinte digitale convient."
125
+ passkeys_none: "Aucune pour l'instant."
114
126
  passkeys_some: "%{count} ajoutée(s)"
115
127
  add_passkey: "Ajouter une clé d’accès"
116
128
  add_another_passkey: "En ajouter une autre"
@@ -118,17 +130,17 @@ fr:
118
130
  codes_email_hint: "Un code envoyé à %{to} confirme chaque connexion."
119
131
  codes_sms: "Codes par SMS"
120
132
  codes_sms_hint: "Un code envoyé par SMS au %{to} confirme chaque connexion."
121
- send_code: "Envoyer un code pour l’activer"
133
+ send_code: "M'envoyer un code"
122
134
  sent_to: "Envoyé à %{to}."
123
135
  backup_codes: "Codes de secours"
124
- backup_codes_waiting: "Générés pour vous dès qu’un facteur ci-dessus est activé."
125
- backup_codes_hint: "Chacun permet une seule connexion, quand vous n’avez rien d’autre sous la main. Ils ne seront plus affichés."
136
+ backup_codes_waiting: "Créés dès qu'un moyen ci-dessus est activé."
137
+ backup_codes_hint: "Chaque code vous connecte une fois si vous perdez votre autre moyen. Enregistrez-les maintenant. Ils ne sont plus affichés ensuite."
126
138
  backup_codes_left: "%{count} restant(s)"
127
139
  backup_codes_file: "Codes de secours pour %{account} sur %{origin}"
128
140
  copy: "Les copier"
129
141
  copied: "Copiés"
130
142
  download: "Les télécharger"
131
- kept: "J’ai conservé mes codes de secours en lieu sûr"
143
+ kept: "J'ai enregistré mes codes de secours"
132
144
  done: "Continuer"
133
145
  skip: "Ignorer pour l’instant"
134
146
 
@@ -163,7 +175,7 @@ fr:
163
175
  prove_email:
164
176
  title: "Consultez vos e-mails"
165
177
  lede: "Un code à six chiffres est en route vers %{email}. Saisissez-le pour continuer."
166
- no_mailer: "Ce serveur ne peut pas encore envoyer d’e-mails, donc une adresse ne peut pas servir à se connecter. Utilisez votre pseudo, ou adressez-vous à un gestionnaire."
178
+ no_mailer: "Ce serveur ne peut pas encore envoyer d'e-mail, donc il ne peut pas vérifier votre adresse. Connectez-vous avec votre pseudo, ou demandez à la personne qui l'administre de confirmer l'adresse pour vous."
167
179
 
168
180
  setup_configure:
169
181
  called: "Ce serveur s’appelle"
@@ -202,17 +214,19 @@ fr:
202
214
  as: "%{organization}, en tant que %{role}"
203
215
 
204
216
  consent:
205
- title: "Autoriser %{client} ?"
206
- access: "Accès"
207
- no_access: "Rien d’autre que la confirmation de votre identité."
208
- audience: "En votre nom sur"
217
+ title: "%{client} veut vous connecter"
218
+ access: "Il saura"
219
+ no_access: "Seulement que vous avez un compte ici."
220
+ audience: "Il peut agir pour vous sur %{resources}."
209
221
  details: "Exactement ceci"
210
222
  returns_to: "Puis retour à"
223
+ more: "Détails"
224
+ scopes: "Autorisations"
211
225
  site: "À propos de %{client}"
212
226
  terms: "Ses conditions d’utilisation"
213
227
  privacy: "Sa politique de confidentialité"
214
228
  allow: "Autoriser"
215
- deny: "Refuser"
229
+ deny: "Pas maintenant"
216
230
  working: "Autorisation"
217
231
 
218
232
  settled:
@@ -221,7 +235,7 @@ fr:
221
235
  waiting: "Retour en cours"
222
236
 
223
237
  warnings:
224
- invalid-credentials: "Ce pseudo et ce mot de passe ne correspondent pas."
238
+ invalid-credentials: "Cet e-mail ou pseudo et ce mot de passe ne correspondent pas."
225
239
  invalid-code: "Ce code n’est pas valide."
226
240
  invalid-backup-code: "Ce code de secours n’est pas valide."
227
241
  invalid-passkey: "Cette clé d’accès n’a pas pu être utilisée."
@@ -233,7 +247,7 @@ fr:
233
247
  passkey-crowded: "Ce compte a déjà le nombre maximal de clés d’accès que ce serveur conserve."
234
248
  second-factor-required: "Activez au moins un second facteur pour continuer."
235
249
  backup-codes-unkept: "Conservez vos codes de secours avant de continuer."
236
- missing-identifier: "Saisissez votre pseudo ou votre e-mail."
250
+ missing-identifier: "Saisissez votre e-mail ou votre pseudo."
237
251
  missing-first-factor: "Cette étape a expiré. Recommencez."
238
252
  too-many-attempts: "Trop de tentatives. Patientez quelques minutes."
239
253
  too-many-attempts-for-account: "Trop de tentatives pour ce compte."
@@ -258,7 +272,7 @@ fr:
258
272
  work-unsolved: "Ce navigateur n'a pas terminé la vérification qui écarte les inscriptions automatisées. Réessayez."
259
273
  invitation-expired: "Cette invitation n’est plus valide. Demandez-en une autre."
260
274
  reset-expired: "Ce lien de réinitialisation n’est plus valide. Demandez-en un autre."
261
- no-mailer: "Ce serveur ne peut pas envoyer d’e-mails. Adressez-vous à un gestionnaire."
275
+ no-mailer: "Ce serveur ne peut pas encore envoyer d'e-mail, donc il ne peut pas réinitialiser votre mot de passe. Demandez un lien de réinitialisation à la personne qui l'administre."
262
276
  sso-failed: "Cette connexion n’a pas abouti. Réessayez."
263
277
  sso-expired: "Cette connexion a pris trop de temps. Réessayez."
264
278
  sso-unavailable: "Ce mode de connexion n’est pas disponible."
@@ -34,7 +34,7 @@ module Masks
34
34
 
35
35
  Everything `/manage` can ask for and everything it can change. `/manage/graphql` accepts a
36
36
  bearer carrying `masks:manage` or one of the narrower
37
- [manage roles](/guides/security/#manage-roles), issued for this tenant's manage resource and
37
+ [manage roles](/build/security/#manage-roles), issued for this tenant's manage resource and
38
38
  no other. A mutation the bearer's roles do not cover answers with an error naming the scopes
39
39
  it needs.
40
40
 
@@ -17,7 +17,7 @@
17
17
  ]
18
18
  },
19
19
  "entrypoints/app.css": {
20
- "file": "assets/app-BXOScMjL.css",
20
+ "file": "assets/app-Cfbt-A5V.css",
21
21
  "name": "entrypoints/app.css",
22
22
  "names": [
23
23
  "entrypoints/app.css"
@@ -41,7 +41,7 @@
41
41
  "isEntry": true
42
42
  },
43
43
  "entrypoints/login.js": {
44
- "file": "assets/login-C21_jb6L.js",
44
+ "file": "assets/login-BDggujiZ.js",
45
45
  "name": "entrypoints/login.js",
46
46
  "src": "entrypoints/login.js",
47
47
  "isEntry": true,
@@ -51,7 +51,7 @@
51
51
  ]
52
52
  },
53
53
  "entrypoints/manage.js": {
54
- "file": "assets/manage-DpVxe5sv.js",
54
+ "file": "assets/manage-VgOqKj7N.js",
55
55
  "name": "entrypoints/manage.js",
56
56
  "src": "entrypoints/manage.js",
57
57
  "isEntry": true,
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @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-border-style:solid;--tw-font-weight:initial}}}@layer theme{:root,:host{--font-sans:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-xl:36rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-medium:500;--font-weight-semibold:600;--radius-lg:.5rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-base-100:#fff;--color-base-200:#fcf9f7;--color-base-300:#e5ded9;--color-base-content:#211c18;--color-primary:#b04000;--color-primary-content:#fff;--color-secondary:#87611e;--color-accent:#6d4702;--color-neutral:#211c18;--color-neutral-content:#fcf9f7;--color-info:#0077b2;--color-success:#008450;--color-warning:#8b6200;--color-error:#b53530;--color-error-content:#fff;--radius-box:5px;--radius-field:3px}}@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,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, 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;-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:where(:not(iframe)){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{.btn{border-radius:var(--radius-box);border:1px solid var(--edge);background:var(--color-base-100);color:inherit;font:inherit;white-space:nowrap;cursor:pointer;justify-content:center;align-items:center;gap:.4375rem;padding:.5625rem .9375rem;font-size:.875rem;font-weight:500;line-height:1.2;text-decoration:none;transition:border-color .15s,background-color .15s,color .15s;display:inline-flex}.btn:hover:not(:disabled){border-color:#211c18}@supports (color:color-mix(in lab, red, red)){.btn:hover:not(:disabled){border-color:color-mix(in oklab, var(--color-base-content) 30%, var(--edge))}}.btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.btn:disabled,.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed}.btn-sm{padding:.375rem .75rem;font-size:.8125rem}.btn-xs{padding:.25rem .5rem;font-size:.75rem}.btn-primary{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-content)}.btn-primary:hover:not(:disabled){background:#973700}@supports (color:color-mix(in lab, red, red)){.btn-primary:hover:not(:disabled){background:color-mix(in oklab, var(--color-primary) 86%, black)}}.btn-primary:hover:not(:disabled){border-color:#973700}@supports (color:color-mix(in lab, red, red)){.btn-primary:hover:not(:disabled){border-color:color-mix(in oklab, var(--color-primary) 86%, black)}}.btn-error{background:var(--color-error);border-color:var(--color-error);color:var(--color-error-content)}.btn-error:hover:not(:disabled){background:#9c2e29}@supports (color:color-mix(in lab, red, red)){.btn-error:hover:not(:disabled){background:color-mix(in oklab, var(--color-error) 86%, black)}}.btn-error:hover:not(:disabled){border-color:#9c2e29}@supports (color:color-mix(in lab, red, red)){.btn-error:hover:not(:disabled){border-color:color-mix(in oklab, var(--color-error) 86%, black)}}.btn-ghost{background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--sunk);border-color:#0000}.btn-outline{background:0 0}.btn-error.btn-outline{color:var(--color-error);border-color:#b5353073}@supports (color:color-mix(in lab, red, red)){.btn-error.btn-outline{border-color:color-mix(in oklab, var(--color-error) 45%, transparent)}}.btn-error.btn-outline:hover:not(:disabled){background:#b535301f}@supports (color:color-mix(in lab, red, red)){.btn-error.btn-outline:hover:not(:disabled){background:color-mix(in oklab, var(--color-error) 12%, transparent)}}.btn-error.btn-outline:hover:not(:disabled){border-color:var(--color-error)}.link{color:inherit;text-underline-offset:2px;cursor:pointer;text-decoration:underline;text-decoration-thickness:1px}.link-hover{text-decoration:none}.link-hover:hover,.link:hover{text-decoration:underline}.badge{border:1px solid var(--edge);background:var(--color-base-100);white-space:nowrap;border-radius:999px;align-items:center;gap:.25rem;padding:.125rem .4375rem;font-size:.75rem;font-weight:500;line-height:1.5;display:inline-flex}.badge-sm{padding:.0625rem .375rem;font-size:.6875rem}.badge-xs{padding:0 .3125rem;font-size:.625rem}.badge-ghost{background:var(--sunk);border-color:#0000}.badge-success{color:var(--color-success);border-color:#00845066}@supports (color:color-mix(in lab, red, red)){.badge-success{border-color:color-mix(in oklab, var(--color-success) 40%, transparent)}}.badge-success{background:#0084501f}@supports (color:color-mix(in lab, red, red)){.badge-success{background:color-mix(in oklab, var(--color-success) 12%, transparent)}}.badge-warning{color:var(--color-warning);border-color:#8b620066}@supports (color:color-mix(in lab, red, red)){.badge-warning{border-color:color-mix(in oklab, var(--color-warning) 40%, transparent)}}.badge-warning{background:#8b62001f}@supports (color:color-mix(in lab, red, red)){.badge-warning{background:color-mix(in oklab, var(--color-warning) 12%, transparent)}}.badge-error{color:var(--color-error);border-color:#b5353066}@supports (color:color-mix(in lab, red, red)){.badge-error{border-color:color-mix(in oklab, var(--color-error) 40%, transparent)}}.badge-error{background:#b535301f}@supports (color:color-mix(in lab, red, red)){.badge-error{background:color-mix(in oklab, var(--color-error) 12%, transparent)}}.badge-info{color:var(--color-info);border-color:#0077b266}@supports (color:color-mix(in lab, red, red)){.badge-info{border-color:color-mix(in oklab, var(--color-info) 40%, transparent)}}.badge-info{background:#0077b21f}@supports (color:color-mix(in lab, red, red)){.badge-info{background:color-mix(in oklab, var(--color-info) 12%, transparent)}}.alert{border-radius:var(--radius-box);border:1px solid var(--edge);background:var(--color-base-100);align-items:flex-start;gap:.625rem;padding:.75rem .875rem;font-size:.875rem;line-height:1.45;display:flex}.alert-soft{background:var(--sunk);border-color:#0000}.alert-error{color:var(--color-error);border-color:#b5353059}@supports (color:color-mix(in lab, red, red)){.alert-error{border-color:color-mix(in oklab, var(--color-error) 35%, transparent)}}.alert-error{background:#b535301a}@supports (color:color-mix(in lab, red, red)){.alert-error{background:color-mix(in oklab, var(--color-error) 10%, transparent)}}.alert-warning{color:var(--color-warning);border-color:#8b620059}@supports (color:color-mix(in lab, red, red)){.alert-warning{border-color:color-mix(in oklab, var(--color-warning) 35%, transparent)}}.alert-warning{background:#8b62001a}@supports (color:color-mix(in lab, red, red)){.alert-warning{background:color-mix(in oklab, var(--color-warning) 10%, transparent)}}.alert-success{color:var(--color-success);border-color:#00845059}@supports (color:color-mix(in lab, red, red)){.alert-success{border-color:color-mix(in oklab, var(--color-success) 35%, transparent)}}.alert-success{background:#0084501a}@supports (color:color-mix(in lab, red, red)){.alert-success{background:color-mix(in oklab, var(--color-success) 10%, transparent)}}.alert-info{color:var(--color-info);border-color:#0077b259}@supports (color:color-mix(in lab, red, red)){.alert-info{border-color:color-mix(in oklab, var(--color-info) 35%, transparent)}}.alert-info{background:#0077b21a}@supports (color:color-mix(in lab, red, red)){.alert-info{background:color-mix(in oklab, var(--color-info) 10%, transparent)}}.input,.select,.textarea{border-radius:var(--radius-box);border:1px solid var(--edge);background:var(--color-base-100);width:100%;color:inherit;font:inherit;padding:.5625rem .75rem;font-size:.875rem;line-height:1.4}.input:focus,.select:focus,.textarea:focus{outline:2px solid var(--color-primary);outline-offset:-1px}.input-sm,.select-sm,.textarea-sm{padding:.375rem .5625rem;font-size:.8125rem}.textarea{resize:vertical;min-height:5rem}.select{appearance:none;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - .9375rem) 55%,calc(100% - .625rem) 55%;background-repeat:no-repeat;background-size:.3125rem .3125rem,.3125rem .3125rem;padding-right:1.75rem}.checkbox{width:1rem;height:1rem;accent-color:var(--color-primary);cursor:pointer;flex:none;margin:0}.toggle{appearance:none;border:1px solid var(--edge);background:var(--sunk);cursor:pointer;border-radius:999px;flex:none;width:2.25rem;height:1.3125rem;transition:background-color .15s;position:relative}.toggle:after{content:"";background:var(--color-base-content);border-radius:50%;width:.9375rem;height:.9375rem;transition:transform .15s;position:absolute;top:50%;left:.125rem;transform:translateY(-50%)}.toggle:checked{background:var(--color-primary);border-color:var(--color-primary)}.toggle:checked:after{background:var(--color-primary-content);transform:translate(.9375rem,-50%)}.toggle-sm{width:1.875rem;height:1.125rem}.toggle-sm:after{width:.75rem;height:.75rem}.toggle-sm:checked:after{transform:translate(.75rem,-50%)}.range{width:100%;accent-color:var(--color-primary)}.join{display:inline-flex}.join-item:not(:first-child){border-start-start-radius:0;border-end-start-radius:0;margin-inline-start:-1px}.join-item:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.card{border-radius:var(--radius-box);border:1px solid var(--edge);background:var(--color-base-100);flex-direction:column;display:flex}.table{border-collapse:collapse;text-align:left;width:100%;font-size:.875rem}.table :where(th){color:#211c1899;padding:.625rem .75rem;font-size:.75rem;font-weight:500}@supports (color:color-mix(in lab, red, red)){.table :where(th){color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.table :where(th){border-bottom:1px solid var(--edge)}.table :where(td){border-bottom:1px solid var(--edge);vertical-align:top;padding:.6875rem .75rem}.table :where(tbody tr:last-child td){border-bottom:0}.table-sm :where(th,td){padding:.4375rem .625rem}.loading{border:2px solid;border-top-color:#0000;border-radius:50%;width:1.125rem;height:1.125rem;animation:.62s linear infinite spin;display:inline-block}.loading-spinner{border-style:solid}.auth-page{--ground:#ececed;--surface:#f7f7f8;--line:#d9d9dc;--line-firm:#c4c4c8;--ink:#18181b;--ink-soft:#5c5c63;--brass:#8a5a1c;--brass-lit:#9b6a26;--signal:#b3380f;--signal-ink:#fff;--ring:#b3380f4d;--bad:#b0183f;--bad-field:#fbeef1;--warn:#8b6200;--warn-field:#fbf5e8;--info:#0077b2;--info-field:#edf5fa;--glow:#b3380f0d;--window:url(/masks-public/icon.svg);--window-strength:.2;--pane:var(--surface)}@supports (color:color-mix(in lab, red, red)){.auth-page{--pane:color-mix(in oklab, var(--surface) 58%, transparent)}}.auth-page{--pane-rim:var(--brass)}@supports (color:color-mix(in lab, red, red)){.auth-page{--pane-rim:color-mix(in oklab, var(--brass) 30%, var(--line))}}.auth-page{--pane-shine:#ffffffb3;--pane-sheen:#ffffff73;--pane-shadow:0 1px 1px #14141812, 0 18px 40px -24px #14141866;--bend:8px;--swing:cubic-bezier(.2, .8, .2, 1)}@media (prefers-color-scheme:dark){.auth-page{--ground:#0b0b0c;--surface:#1c1c1f;--line:#2a2a2e;--line-firm:#3e3e44;--ink:#ededef;--ink-soft:#9a9a9f;--brass:#c9a14a;--brass-lit:#e8c27a;--signal:#ff7a4a;--signal-ink:#1f0c06;--ring:#ff7a4a66;--bad:#ff7396;--bad-field:#ff73961a;--warn:#d4ad03;--warn-field:#d4ad031a;--info:#00c2fe;--info-field:#00c2fe1a;--glow:#ff7a4a0f;--window-strength:.36;--pane:var(--surface)}@supports (color:color-mix(in lab, red, red)){.auth-page{--pane:color-mix(in oklab, var(--surface) 52%, transparent)}}.auth-page{--pane-shine:#ffffff1a;--pane-sheen:#ffffff0b;--pane-shadow:0 1px 0 #0009, 0 22px 50px -24px #000c}}.auth-page{background:var(--ground);min-height:100svh;color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:2.5rem 1.25rem 3rem;display:flex}.auth-page:before{--window-size:min(64rem, 150vw);content:"";top:calc(var(--window-size) * -.42);right:calc(var(--window-size) * -.2);width:var(--window-size);aspect-ratio:1;pointer-events:none;background:var(--window) center / contain no-repeat;filter:blur(56px)saturate(1.2);opacity:var(--window-strength);position:fixed}.auth-col{flex-direction:column;gap:1.5rem;width:100%;max-width:24rem;margin:auto;display:flex;position:relative}.surface-grant{max-width:30rem}.setup-ready{--signal:var(--glass-emerald);--signal-ink:#fff;--ring:var(--glass-emerald)}@supports (color:color-mix(in lab, red, red)){.setup-ready{--ring:color-mix(in oklab, var(--glass-emerald) 26%, transparent)}}@media (prefers-color-scheme:dark){.setup-ready{--signal-ink:#06231a}}.surface-terminus{max-width:21rem}.disclosure{flex-direction:column;gap:.5rem;display:flex}.disclosure>summary{cursor:pointer;width:fit-content;color:var(--signal);text-underline-offset:3px;font-size:.9375rem;text-decoration:underline;list-style:none}.disclosure>summary::-webkit-details-marker{display:none}.surface-terminus .prompt-head{text-align:left;align-items:flex-start}.surface-terminus .prompt-title{letter-spacing:-.012em;font-size:1.125rem;font-weight:500;line-height:1.4}.surface-terminus .prompt-lede{max-width:none;font-size:.9375rem}.state{color:var(--ink-soft);align-items:center;gap:.5rem;font-size:.875rem;font-weight:500;display:flex}.state:before{content:"";background:currentColor;border-radius:1px;flex:none;width:1.5rem;height:2px}.state-bad{color:var(--bad)}.state-done{color:var(--signal)}.said{border-radius:var(--bend);background:var(--surface);border:1px solid var(--line);font-family:var(--font-mono);color:var(--ink-soft);overflow-wrap:anywhere;margin:0;padding:.6875rem .8125rem;font-size:.75rem;line-height:1.5}.auth-id{text-align:center;flex-direction:column;align-items:center;gap:.75rem;display:flex}.auth-mark{border-radius:var(--bend);background:var(--surface);border:1px solid var(--brass);place-items:center;width:2.75rem;height:2.75rem;display:grid}@supports (color:color-mix(in lab, red, red)){.auth-mark{border:1px solid color-mix(in oklab, var(--brass) 55%, var(--line))}}.auth-mark{color:var(--signal);letter-spacing:-.02em;font-size:1.0625rem;font-weight:700}.avatar{border-radius:var(--bend);border:1px solid var(--line);background:var(--surface);object-fit:cover;display:block}.avatar-photo{border-radius:50%}.avatar-identicon,.avatar-initials{border-radius:22%}.auth-tenant{color:var(--ink);overflow-wrap:anywhere;font-size:.9375rem;font-weight:600}.auth-pair{justify-content:center;align-items:center;gap:.875rem;display:flex}.auth-pair .auth-mark{width:2.5rem;height:2.5rem;font-size:1rem}.auth-mark-client{color:var(--ink);border-color:var(--line-firm)}.auth-mark-logo{object-fit:cover;background:var(--surface)}.item-logo{border-radius:.3rem}.app-tiles{grid-template-columns:repeat(auto-fill,minmax(7rem,1fr));gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.app-tile{border:1px solid var(--pane-rim);background:var(--pane);box-shadow:var(--pane-shadow);color:inherit;text-align:center;border-radius:1rem;flex-direction:column;align-items:center;gap:.5rem;padding:1rem .5rem .875rem;text-decoration:none;display:flex}.app-tile:hover,.app-tile:focus-visible{border-color:var(--brass)}.app-tile-logo{border-radius:.45rem;width:2rem;height:2rem}.app-tile-initial{background:var(--brass);place-items:center;display:grid}@supports (color:color-mix(in lab, red, red)){.app-tile-initial{background:color-mix(in oklab, var(--brass) 14%, transparent)}}.app-tile-initial{color:var(--brass);font-weight:600}.app-tile-name{overflow-wrap:anywhere;font-size:.875rem;font-weight:500}.client-links{flex-wrap:wrap;gap:.25rem 1rem;display:flex}.auth-mark-pending{color:var(--brass);border-style:dashed}.auth-mark-rose{background:0 0;border:0;border-radius:50%}.auth-wire{background:var(--line-firm);flex:0 0 3.5rem;height:1px;position:relative}.auth-wire:after{content:"";border-top:1px solid var(--line-firm);border-right:1px solid var(--line-firm);width:5px;height:5px;position:absolute;top:50%;right:0;transform:translateY(-50%)rotate(45deg)}.auth-wire-live{background:var(--signal)}.auth-wire-live:after{background:var(--signal);border:0;border-radius:50%;width:6px;height:6px;transform:translate(50%,-50%)}.slab,.entry,.actor{background:linear-gradient(160deg, var(--pane-sheen), transparent 45%), var(--pane);border:1px solid var(--pane-rim);box-shadow:inset 0 1px 0 var(--pane-shine), var(--pane-shadow);-webkit-backdrop-filter:blur(22px)saturate(1.5);backdrop-filter:blur(22px)saturate(1.5)}.slab{border-radius:var(--bend);flex-direction:column;gap:1rem;padding:1.125rem;display:flex}.grant-scope-hot,.grant-scope-hot .chip-key{color:var(--warn)}.grant-scope-split{background:var(--line-firm);height:1px;margin:.25rem 0;list-style:none}.record-cap{color:var(--ink-soft);font-size:.9375rem;font-weight:500}.place{--accent:var(--glass-gold);flex-direction:column;gap:1.75rem;display:flex}.plaque{isolation:isolate;text-align:center;flex-direction:column;align-items:center;gap:.25rem;padding:0 1rem .5rem;display:flex;position:relative}.plaque-top{text-align:left;align-self:stretch;align-items:center;gap:.5rem;display:flex}.plaque-top .auth-mark{width:1.75rem;height:1.75rem;font-size:.75rem}.plaque-title{border-bottom:1px solid var(--line);letter-spacing:-.02em;text-align:left;align-self:stretch;margin:.5rem 0 1.75rem;padding-bottom:1rem;font-size:1.25rem;font-weight:600}.plaque-notes{text-align:left;flex-direction:column;align-self:stretch;gap:.5rem;margin:-.75rem 0 1.75rem;display:flex}.plaque:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(44% 58% at 50% 0%, var(--glass-amber), transparent 72%);height:18rem;position:absolute;inset:-3rem 0 auto}@supports (color:color-mix(in lab, red, red)){.plaque:before{background:radial-gradient(44% 58% at 50% 0%, color-mix(in oklab, var(--glass-amber) 20%, transparent), transparent 72%)}}.plaque-shot{display:inline-block;position:relative}.plaque-pick{cursor:pointer;display:block}.plaque-badge-form{z-index:1;position:absolute;bottom:-.1875rem;right:-.1875rem}.plaque-badge{background:var(--surface);border:1px solid var(--line-firm);width:1.75rem;height:1.75rem;color:var(--ink-soft);cursor:pointer;border-radius:50%;place-items:center;padding:0;display:grid}.plaque-badge svg{width:.875rem;height:.875rem}.plaque-badge:hover{border-color:var(--bad);color:var(--bad)}.plaque-done{z-index:2;background:var(--glass-emerald);width:1.75rem;height:1.75rem;color:var(--surface);pointer-events:none;opacity:0;border-radius:50%;place-items:center;animation:2.4s ease-out plaque-done;display:grid;position:absolute;bottom:-.1875rem;right:-.1875rem}.plaque-done svg{stroke-width:2.2px;width:.875rem;height:.875rem}.plaque-shot-done .plaque-avatar{animation:2.4s ease-out plaque-ring}@keyframes plaque-done{0%,65%{opacity:1}to{opacity:0}}@keyframes plaque-ring{0%,65%{box-shadow:0 0 0 2px var(--glass-emerald), 0 16px 34px -18px color-mix(in oklab, var(--glass-amber) 55%, transparent)}}.plaque-file{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.plaque-file-label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.plaque-pick:focus-within .plaque-avatar{outline:2px solid var(--accent);outline-offset:3px}.plaque-avatar{object-fit:cover;width:5.5rem;height:5.5rem;box-shadow:0 0 0 1px var(--line-firm), 0 16px 34px -18px var(--glass-amber);flex:none;display:block}@supports (color:color-mix(in lab, red, red)){.plaque-avatar{box-shadow:0 0 0 1px var(--line-firm), 0 16px 34px -18px color-mix(in oklab, var(--glass-amber) 55%, transparent)}}.plaque-name{letter-spacing:-.03em;margin:.75rem 0 0;font-size:1.625rem;font-weight:700;line-height:1.15}.plaque-sub{color:var(--ink-soft);margin:0;font-size:1rem}.plaque-pills{flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:.5rem;margin-top:1rem;display:flex}.signout{display:contents}.pill{border:1px solid var(--line-firm);background:var(--glow);color:var(--ink-soft);cursor:pointer;border-radius:999px;align-items:center;gap:.4375rem;padding:.5rem 1rem;font-family:inherit;font-size:.875rem;font-weight:600;text-decoration:none;display:inline-flex}.pill:hover{border-color:var(--brass);color:var(--ink)}.pill-accent{color:var(--accent);border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.pill-accent{border-color:color-mix(in oklab, var(--accent) 40%, var(--line))}}.pill-accent:hover{color:var(--accent);border-color:var(--accent)}.pill svg{width:1rem;height:1rem}.group{flex-direction:column;gap:.5rem;scroll-margin-top:1.25rem;display:flex}.group>h2{color:var(--brass);margin:0 0 .125rem .25rem;font-size:.875rem;font-weight:500}.entries{flex-direction:column;gap:.5rem;display:flex}.entry{border-radius:1rem;scroll-margin-top:1.25rem}.entry[open]{border-color:var(--brass)}@supports (color:color-mix(in lab, red, red)){.entry[open]{border-color:color-mix(in oklab, var(--brass) 45%, var(--line-firm))}}.entry>summary{cursor:pointer;align-items:center;gap:.875rem;padding:.9375rem 1rem;list-style:none;display:flex}.entry>summary::-webkit-details-marker{display:none}.entry-icon{border:1px solid var(--line-firm);width:2.25rem;height:2.25rem;color:var(--ink-soft);border-radius:50%;flex:none;place-items:center;display:grid}.entry-icon svg{width:1.125rem;height:1.125rem}.entry-label{overflow-wrap:anywhere;letter-spacing:-.012em;min-width:0;font-size:1rem;font-weight:500}.entry-state{color:var(--brass);text-align:right;flex:none;margin-left:auto;font-size:.875rem}.entry-state-warn{color:var(--accent)}.entry-state-bad{color:var(--bad)}.entry-mark{border-right:1.5px solid var(--line-firm);border-bottom:1.5px solid var(--line-firm);width:.4375rem;height:.4375rem;transition:transform .2s var(--swing);flex:none;transform:rotate(-45deg)}.entry[open] .entry-mark{transform:rotate(45deg)}@media (prefers-reduced-motion:reduce){.entry-mark{transition:none}}.entry-body{flex-direction:column;gap:.875rem;padding:0 1rem 1.125rem;display:flex}.entry-body>.aside{max-width:52ch}.items{flex-direction:column;display:flex}.item{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.375rem 1rem;padding:.875rem 0;display:grid}.item+.item{border-top:1px solid var(--line)}.item:first-child{padding-top:.25rem}.item:last-child{padding-bottom:.25rem}.item-name{overflow-wrap:anywhere;letter-spacing:-.01em;flex-wrap:wrap;grid-column:1;align-items:center;gap:.5rem;min-width:0;font-size:.9375rem;font-weight:600;display:flex}.item-meta{color:var(--ink-soft);grid-column:1;font-size:.8125rem;line-height:1.5}.item-list{color:var(--ink-soft);flex-direction:column;grid-column:1;gap:.1875rem;margin:0;padding:0;font-size:.8125rem;line-height:1.4;list-style:none;display:flex}.item-more{color:var(--brass)}.item-delegations{color:var(--ink-soft);flex-direction:column;grid-column:1/-1;gap:.375rem;margin:.25rem 0 0;padding:0;font-size:.8125rem;list-style:none;display:flex}.item-delegations li{border-left:2px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;padding-left:.75rem;display:flex}.item-act{grid-area:1/2;justify-self:end}.item-act .action{white-space:nowrap}.item-acts{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.item-acts .control{width:auto}.item-member .item-act{grid-row:1/span 2;align-self:center}@media (width<=34rem){.item-member{grid-template-columns:minmax(0,1fr)}.item-member .item-act{grid-area:auto/1;justify-self:start}.item-member .item-acts{justify-content:flex-start}}.entry-invited{border-color:var(--warn)}@supports (color:color-mix(in lab, red, red)){.entry-invited{border-color:color-mix(in oklab, var(--warn) 55%, var(--line-firm))}}.member-add{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) minmax(7rem,auto) auto;align-items:end;gap:.625rem .75rem;padding-top:1rem;display:grid}.member-add-hint{grid-column:1/-1}.member-add .control{height:3.25rem;padding-block:0}.member-add .member-add-go{height:3.25rem}@media (width<=34rem){.member-add{grid-template-columns:minmax(0,1fr) auto}.member-add-email{grid-column:1/-1}}.member-leave{border-top:1px solid var(--line);padding-top:1rem;display:flex}.switches{flex-direction:column;display:flex}.switch{cursor:pointer;justify-content:space-between;align-items:center;gap:1rem;padding:.6875rem 0;font-size:.9375rem;display:flex}.switch+.switch{border-top:1px solid var(--line)}.switch input[type=checkbox]{width:1.0625rem;height:1.0625rem;accent-color:var(--accent);flex:none;margin:0}.switch-kept{color:var(--brass);flex:none;font-size:.75rem;font-weight:500}.switch-set{flex-direction:column;gap:.25rem;display:flex}.switch-set>legend{color:var(--brass);padding:0;font-size:.75rem;font-weight:500}.flow{flex-direction:column;gap:1.25rem;display:flex}.flow-tight{flex-direction:column;gap:.625rem;display:flex}.prompt-head{text-align:center;flex-direction:column;align-items:center;gap:.4375rem;display:flex}.prompt-title{letter-spacing:-.03em;text-wrap:balance;margin:0;font-size:clamp(1.75rem,1.4rem + 1.5vw,2.125rem);font-weight:700;line-height:1.06}.prompt-lede{color:var(--ink-soft);max-width:38ch;margin:0;font-size:1rem;line-height:1.5}.prompt-lede strong{color:var(--ink);font-weight:500}.pulse{background:0 0;border-radius:1px;width:2.75rem;height:2px;margin-bottom:.625rem;position:relative;overflow:hidden}.pulse:after{content:"";background:var(--signal);inset-block:0;border-radius:1px;width:55%;position:absolute;left:0;translate:-100%}.pulse-on:after{animation:1.15s cubic-bezier(.66,0,.34,1) infinite sweep}.pulse-done{background:var(--signal)}.pulse-bad{background:var(--bad)}.ledger-row{border-top:1px solid var(--line);flex-direction:column;gap:.5rem;padding:.9375rem 0;display:flex}.ledger-row:first-child{border-top:0;padding-top:0}.ledger-row:last-child{padding-bottom:0}.ledger-step+.ledger-step{border-top:0}.setup .prompt-head{margin-bottom:.75rem}.tabset{gap:.25rem;display:flex}.tabset-tab{border-bottom:2px solid var(--line);text-align:center;color:var(--ink-soft);flex:1;padding:0 0 .5rem;font-size:.8125rem;font-weight:500;transition:color .2s,border-color .2s}.tabset-done{border-bottom-color:var(--glass-emerald);color:var(--brass)}.tabset-now{border-bottom-color:var(--signal);color:var(--ink)}.ledger-row-aside{grid-template-rows:auto auto;grid-template-columns:1fr auto;align-items:center;column-gap:.75rem;display:grid}.ledger-aside{grid-area:1/2/span 2;justify-self:end}.ledger-label{color:var(--ink);font-size:.875rem;font-weight:500}.ledger-value{overflow-wrap:anywhere;font-size:.9375rem;line-height:1.5}.ledger-row-tight{gap:.25rem;padding:.625rem 0}.ledger-row-tight .ledger-value{font-size:.8125rem}.ledger-step{--step:var(--line-firm)}.ledger-step-done{--step:var(--glass-emerald)}.ledger-step .ledger-label{color:var(--ink)}.ledger-step-done .control:not(:focus){border-color:var(--step)}@supports (color:color-mix(in lab, red, red)){.ledger-step-done .control:not(:focus){border-color:color-mix(in oklab, var(--step) 45%, var(--line))}}.enrol{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.enrol-qr{aspect-ratio:1;border-radius:var(--bend);border:1px solid var(--line);background:#fff;flex:none;width:10rem;max-width:100%;overflow:hidden}.enrol-qr svg{width:100%;height:100%;display:block}.enrol-key{flex-direction:column;flex:10rem;gap:.375rem;min-width:0;display:flex}.enrol-secret{font-family:var(--font-mono);overflow-wrap:anywhere;letter-spacing:.06em;-webkit-user-select:all;user-select:all}.codes{font-variant-numeric:tabular-nums;grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));gap:.375rem 1rem;margin:0;padding:0;list-style:none;display:grid}.codes li{font-family:var(--font-mono);-webkit-user-select:all;user-select:all}.codes-actions{flex-wrap:wrap;align-self:flex-start;gap:.5rem 1.25rem;display:flex}.grant-scopes{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.grant-fields{color:var(--ink-soft);flex-basis:100%;grid-template-columns:auto 1fr;gap:.125rem .75rem;margin:.25rem 0 0;font-size:.8125rem;display:grid}.grant-fields dt{font-weight:600}.grant-fields dd{overflow-wrap:anywhere;margin:0}.grant-scope{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.1875rem .875rem;font-size:.9375rem;line-height:1.45;display:flex}.field{flex-direction:column;gap:.4375rem;display:flex}.field-label{letter-spacing:-.002em;font-size:.875rem;font-weight:500}.field-line{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.field-line .textlink{font-size:.875rem}.field-hint{color:var(--ink-soft);font-size:.8125rem;line-height:1.45}.field-hint-bad{color:var(--bad);font-weight:500}.control{width:100%;font:inherit;border-radius:var(--bend);border:1px solid var(--line);background:var(--surface);padding:.9375rem 1rem;font-size:1rem}@supports (color:color-mix(in lab, red, red)){.control{background:color-mix(in oklab, var(--surface) 72%, transparent)}}.control{color:var(--ink);caret-color:var(--signal);transition:border-color .15s,box-shadow .15s,background-color .15s}.control:autofill{-webkit-text-fill-color:var(--ink);caret-color:var(--signal);box-shadow:inset 0 0 0 100vmax var(--surface)}.control:autofill:focus{box-shadow:inset 0 0 0 1px var(--brass-lit), inset 0 0 0 100vmax var(--surface)}.control::placeholder{color:var(--ink-soft)}@supports (color:color-mix(in lab, red, red)){.control::placeholder{color:color-mix(in oklab, var(--ink-soft) 78%, transparent)}}.control:hover:not(:disabled):not([readonly]){border-color:var(--line-firm)}.control:focus{border-color:var(--brass-lit);box-shadow:inset 0 0 0 1px var(--brass-lit);outline:none}.control[readonly]{background:var(--ground);color:var(--ink-soft);border-color:var(--line)}.control-sm{padding:.5625rem .75rem;font-size:.9375rem}.control-mono{font-family:var(--font-mono);letter-spacing:.14em;font-size:1rem}.control-code{font-family:var(--font-mono);text-align:center;letter-spacing:.4em;text-indent:.4em;font-variant-numeric:tabular-nums;padding:.875rem .5rem;font-size:1.5rem;font-weight:500}.check{color:var(--ink-soft);cursor:pointer;align-items:center;gap:.625rem;font-size:.875rem;line-height:1.4;display:flex}.check input[type=checkbox],.check input[type=radio]{width:1rem;height:1rem;accent-color:var(--signal);flex:none;margin:0}.check input[type=checkbox]:focus-visible,.check input[type=radio]:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.action{width:100%;font:inherit;letter-spacing:-.014em;text-align:center;border-radius:var(--bend);border:1px solid var(--signal);justify-content:center;align-items:center;gap:.5rem;padding:.9375rem 1.125rem;font-size:1rem;font-weight:500;display:inline-flex;position:relative}@supports (color:color-mix(in lab, red, red)){.action{border:1px solid color-mix(in oklab, var(--signal) 60%, transparent)}}.action{background:var(--signal)}@supports (color:color-mix(in lab, red, red)){.action{background:color-mix(in oklab, var(--signal) 14%, var(--ground))}}.action{color:var(--signal);cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}.action:hover:not(:disabled){border-color:var(--signal);background:var(--signal)}@supports (color:color-mix(in lab, red, red)){.action:hover:not(:disabled){background:color-mix(in oklab, var(--signal) 24%, var(--ground))}}.action:focus-visible{outline:2px solid var(--brass-lit);outline-offset:2px}.action:disabled{border-color:var(--line-firm);color:var(--ink-soft);background:0 0}@supports (color:color-mix(in lab, red, red)){.action:disabled{color:color-mix(in oklab, var(--ink-soft) 66%, transparent)}}.action:disabled{cursor:not-allowed}.action-busy,.action-busy:disabled{background:var(--surface);border-color:var(--line-firm);color:var(--ink-soft);cursor:progress}.action-mark{position:absolute;top:50%;left:1.0625rem;translate:0 -50%}.action-quiet{background:var(--surface);color:var(--ink);border-color:var(--line)}.action-quiet:hover:not(:disabled){background:var(--surface);border-color:var(--line-firm)}.action-plain{color:var(--ink-soft);background:0 0;padding:.6875rem 1rem;font-size:.9375rem;font-weight:400}.action-plain:hover:not(:disabled){background:var(--surface);color:var(--ink)}.action-sm{align-self:flex-start;width:auto;padding:.5625rem .9375rem;font-size:.9375rem}.providers{flex-direction:column;gap:.625rem;display:flex}.providers>form{display:contents}.org-picks{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.org-pick{border:1px solid var(--line);border-radius:var(--bend);background:var(--surface);width:100%;color:var(--ink);font:inherit;text-align:left;cursor:pointer;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.875rem;padding:.75rem 1rem .75rem .75rem;transition:border-color .15s,background-color .15s;display:grid}.org-pick:hover:not(:disabled){border-color:var(--signal)}@supports (color:color-mix(in lab, red, red)){.org-pick:hover:not(:disabled){border-color:color-mix(in oklab, var(--signal) 60%, var(--line-firm))}}.org-pick:focus-visible{outline:2px solid var(--brass-lit);outline-offset:2px}.org-pick:disabled{cursor:not-allowed;opacity:.6}.org-pick[aria-busy=true]{opacity:1;cursor:progress;border-color:var(--signal)}.org-pick-mark{border-radius:calc(var(--bend) * .75);border:1px solid var(--line-firm);background:var(--ground);width:2.25rem;height:2.25rem;color:var(--signal);letter-spacing:.02em;place-items:center;font-size:.8125rem;font-weight:700;display:grid}.org-pick-name{overflow-wrap:anywhere;letter-spacing:-.014em;min-width:0;font-size:1rem;font-weight:600}.org-pick-role{color:var(--ink-soft);font-size:.8125rem}.credential-ways{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.credential-way{font:inherit;border-radius:var(--bend);border:1px solid var(--line);background:var(--surface);padding:.75rem 1rem;font-size:.9375rem}@supports (color:color-mix(in lab, red, red)){.credential-way{background:color-mix(in oklab, var(--surface) 72%, transparent)}}.credential-way{color:var(--ink-soft);cursor:pointer;transition:border-color .15s,color .15s}.credential-way[aria-checked=true]{border-color:var(--signal);color:var(--ink);font-weight:600}.credential-way:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.ways{flex-direction:column;gap:.625rem;margin:0;padding:0;list-style:none;display:flex}.way{border-radius:var(--bend);border:1px solid var(--line-firm);background:var(--surface);flex-direction:column;gap:.1875rem;width:100%;padding:.875rem 1rem;display:flex}@supports (color:color-mix(in lab, red, red)){.way{background:color-mix(in oklab, var(--surface) 72%, transparent)}}.way{color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:border-color .15s,background-color .15s}.way:hover{border-color:var(--signal)}.way:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.way-title{font-size:1rem;font-weight:600}.way-about{color:var(--ink-soft);font-size:.875rem;line-height:1.45}.ledger-link{text-align:left;align-self:flex-start}.plain-list{margin:0;padding:0 0 0 1.25rem;font-size:1rem;line-height:1.6}.auth-solo{justify-content:center;display:flex}.providers-rule{color:var(--ink-soft);text-transform:lowercase;align-items:center;gap:.75rem;font-size:.8125rem;display:flex}.providers-rule:before,.providers-rule:after{content:"";background:var(--line);flex:auto;height:1px}.otherwise{flex-direction:column;gap:.625rem;display:flex}.otherwise>.providers-rule{margin-bottom:.3125rem}.otherwise .providers{gap:.625rem}.action-row{align-items:stretch;gap:.625rem;display:flex}.action-row>form{display:flex}.action-countdown{font-variant-numeric:tabular-nums}.action-grow{flex:auto}.action-row .action-sm{align-self:auto}.action-fit{flex:none;width:auto}.textlink{font:inherit;color:var(--signal);cursor:pointer;text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--signal);-webkit-text-decoration-color:var(--signal);-webkit-text-decoration-color:var(--signal);text-decoration-color:var(--signal);background:0 0;border:0;padding:0;font-size:.9375rem;font-weight:400}@supports (color:color-mix(in lab, red, red)){.textlink{-webkit-text-decoration-color:color-mix(in oklab, var(--signal) 38%, transparent);-webkit-text-decoration-color:color-mix(in oklab, var(--signal) 38%, transparent);-webkit-text-decoration-color:color-mix(in oklab, var(--signal) 38%, transparent);text-decoration-color:color-mix(in oklab, var(--signal) 38%, transparent)}}.textlink{transition:text-decoration-color .15s}.textlink:hover{text-decoration-color:currentColor}.textlink:focus-visible{outline:2px solid var(--signal);outline-offset:3px;border-radius:3px}.textlink:disabled{opacity:.5;cursor:not-allowed}.whom{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1rem;padding-bottom:.8125rem;display:flex}.whom-name{color:var(--ink-soft);overflow-wrap:anywhere;font-size:.9375rem;line-height:1.5}.whom .textlink{flex:none;font-size:.875rem}.handshake-warn{color:var(--warn)}.handshake-more>summary{color:var(--ink-soft);-webkit-text-decoration-color:var(--line-firm);-webkit-text-decoration-color:var(--line-firm);-webkit-text-decoration-color:var(--line-firm);text-decoration-color:var(--line-firm);align-self:center;font-size:.8125rem}.handshake-more[open]>summary{margin-bottom:.25rem}.handshake-origin{border:1px solid var(--line-firm);background:var(--surface);border-radius:999px;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:.25rem .5rem;max-width:100%;margin:.375rem 0 .25rem;padding:.375rem .875rem;display:flex}.handshake-origin-label{color:var(--ink-soft);font-size:.75rem}.handshake-origin-value{color:var(--ink);overflow-wrap:anywhere;font-size:.875rem;font-weight:600}.handshake-replacing strong{font-weight:600}.handshake-replacing span{color:var(--ink-soft);font-size:.875rem}.handshake-as{flex-direction:column;gap:.4375rem;display:flex}.handshake-caption{color:var(--ink-soft);padding-inline:.125rem;font-size:.8125rem}.handshake-as .actor{box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;border-color:var(--line);background:0 0}.handshake-as .actor-note{color:var(--ink-soft);font-style:italic}.handshake-as .actor-role{color:var(--brass);letter-spacing:.06em}.handshake-heeds{flex-direction:column;gap:.625rem;margin:0;padding:0;list-style:none;display:flex}.handshake-heed{border-left:2px solid var(--warn);flex-direction:column;gap:.1875rem;padding:.125rem 0 .125rem .75rem;display:flex}.handshake-heed-what{color:var(--warn);font-size:.9375rem;font-weight:600;line-height:1.4}.handshake-heed-why{color:var(--ink-soft);font-size:.875rem;line-height:1.45}.handshake-heed-alarm{border-left-color:var(--bad)}.handshake-heed-alarm .handshake-heed-what,.handshake-heed-alarm .handshake-heed-why{color:var(--bad)}.handshake-sees{flex-wrap:wrap;gap:.375rem;margin:0;padding:0;list-style:none;display:flex}.handshake-sees li{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:.25rem .625rem;font-size:.875rem;line-height:1.4}.handshake-say{margin:0;font-size:.9375rem;line-height:1.5}.handshake-say .chip-key{color:var(--ink);font-size:.8125rem}.actor{border-radius:.75rem;grid-template-columns:auto 1fr auto;align-items:center;gap:.875rem;padding:.75rem .875rem;display:grid}.actor-avatar{object-fit:cover;border-radius:999px;width:2.75rem;height:2.75rem}.actor-who{flex-direction:column;gap:.125rem;min-width:0;display:flex}.actor-name{overflow-wrap:anywhere;font-weight:600;line-height:1.3}.actor-sub{color:var(--ink-soft);overflow-wrap:anywhere;font-size:.8125rem;line-height:1.4}.actor-note{color:var(--brass)}.actor-role{width:fit-content;color:var(--signal);margin-top:.25rem;font-size:.8125rem;font-weight:500}.actor .textlink{font-size:.875rem}.chip-key{font-family:var(--font-mono);color:var(--ink-soft);flex:none;font-size:.75rem}.tag{border:1px solid var(--line-firm);background:var(--ground);color:var(--ink-soft);border-radius:999px;flex:none;padding:.0625rem .4375rem;font-size:.75rem;font-weight:500;line-height:1.6}.tag-bad{background:var(--bad-field);color:var(--bad);border-color:currentColor}.aside{color:var(--ink-soft);overflow-wrap:anywhere;margin:0;font-size:.875rem;line-height:1.5}.aside-mono{overflow-wrap:anywhere;font-size:.875rem}.code-mono{font-family:var(--font-mono);font-size:.8125rem}.aside-bad{color:var(--bad)}.approval-code{font-family:var(--font-mono);letter-spacing:.12em;color:var(--ink);text-align:center;font-size:2rem}.note{border-radius:var(--bend);color:var(--info);background:var(--info-field);border:1px solid;flex-direction:column;gap:.1875rem;padding:.8125rem .875rem;font-size:.9375rem;line-height:1.45;display:flex}.note-bad{color:var(--bad);background:var(--bad-field)}.note-plain{color:var(--ink);background:var(--glow);border-color:var(--line-firm)}.note-warn{color:var(--warn);background:var(--warn-field)}.spinner{border:2px solid;border-top-color:#0000;border-radius:50%;flex:none;width:1.05em;height:1.05em;animation:.62s linear infinite spin}.waiting{color:var(--ink-soft);align-items:center;gap:.625rem;margin:0;font-size:1rem;display:flex}.over{text-align:center;flex-direction:column;align-items:center;gap:1.5rem;display:flex}.over .prompt-lede{max-width:30ch}.over .action{width:auto;min-width:11rem}.empty{color:var(--ink-soft);margin:0;padding:.375rem 0;font-size:.9375rem;line-height:1.5}.recover{flex-flow:wrap;justify-content:space-between;align-items:baseline;gap:.375rem 1rem;display:flex}.recover>span{flex:14rem}.recover .textlink{color:inherit;flex:none;font-size:.9375rem}.recover .textlink:focus-visible{outline-color:currentColor}}@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.top-0{top:0}.z-20{z-index:20}.m-0{margin:0}.mx-auto{margin-inline:auto}.ms-auto{margin-inline-start:auto}.-me-3{margin-inline-end:calc(var(--spacing) * -3)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.-mr-1{margin-right:calc(var(--spacing) * -1)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.table{display:table}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.min-h-screen{min-height:100vh}.w-0{width:0}.w-16{width:calc(var(--spacing) * 16)}.w-44{width:calc(var(--spacing) * 44)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.max-w-0{max-width:0}.max-w-6xl{max-width:var(--container-6xl)}.max-w-48{max-width:calc(var(--spacing) * 48)}.max-w-60{max-width:calc(var(--spacing) * 60)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-100{max-width:calc(var(--spacing) * 100)}.max-w-\[16rem\]{max-width:16rem}.max-w-\[18rem\]{max-width:18rem}.max-w-full{max-width:100%}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.min-w-28{min-width:calc(var(--spacing) * 28)}.min-w-44{min-width:calc(var(--spacing) * 44)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.basis-28{flex-basis:calc(var(--spacing) * 28)}.cursor-pointer{cursor:pointer}.scroll-mt-20{scroll-margin-top:calc(var(--spacing) * 20)}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.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-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-box{border-radius:var(--radius-box)}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-\[var\(--line\)\]{border-color:var(--line)}.border-base-300{border-color:var(--color-base-300)}.bg-base-200{background-color:var(--color-base-200)}.object-cover{object-fit:cover}.p-3{padding:calc(var(--spacing) * 3)}.px-1{padding-inline:var(--spacing)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:var(--spacing)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-14{padding-block:calc(var(--spacing) * 14)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pb-1{padding-bottom:var(--spacing)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.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))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-error{color:var(--color-error)}.text-warning{color:var(--color-warning)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-85{opacity:.85}.outline-none{--tw-outline-style:none;outline-style:none}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:pb-0:last-child{padding-bottom:0}@media (hover:hover){.hover\:opacity-100:hover{opacity:1}}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}@media (width>=40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.sm\:w-48{width:calc(var(--spacing) * 48)}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[2fr_1fr\]{grid-template-columns:2fr 1fr}.sm\:grid-cols-\[minmax\(0\,1fr\)_10rem_auto\]{grid-template-columns:minmax(0,1fr) 10rem auto}.sm\:items-end{align-items:flex-end}.sm\:gap-y-2{row-gap:calc(var(--spacing) * 2)}.sm\:pb-0{padding-bottom:0}}@media (width>=48rem){.md\:ml-auto{margin-left:auto}.md\:hidden{display:none}.md\:table-cell{display:table-cell}.md\:w-56{width:calc(var(--spacing) * 56)}.md\:w-auto{width:auto}.md\:max-w-none{max-width:none}.md\:flex-1{flex:1}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}}@media (width>=64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}}@media (prefers-color-scheme:dark){:root{--color-base-100:#15110e;--color-base-200:#1e1915;--color-base-300:#3d352f;--color-base-content:#f3efec;--color-primary:#ff8f53;--color-primary-content:#1a1614;--color-secondary:#b58a41;--color-secondary-content:#000;--color-accent:#deaf56;--color-accent-content:#000;--color-neutral:#1a1614;--color-neutral-content:#e9e5e2;--color-info:#00c2fe;--color-info-content:#000;--color-success:#1dcf98;--color-success-content:#000;--color-warning:#d4ad03;--color-warning-content:#000;--color-error:#ff867a;--color-error-content:#1a1614}}:root{--glass-ruby:#b53530;--glass-ember:#b04000;--glass-amber:#a44f00;--glass-gold:#8b6200;--glass-verdant:#267e05;--glass-emerald:#008450;--glass-cyan:#008386;--glass-sky:#0077b2;--glass-cobalt:#2065c5;--glass-violet:#6e50be}@media (prefers-color-scheme:dark){:root{--glass-ruby:#ff867a;--glass-ember:#ff8f53;--glass-amber:#f19c29;--glass-gold:#d4ad03;--glass-verdant:#78c966;--glass-emerald:#1dcf98;--glass-cyan:#00cecf;--glass-sky:#00c2fe;--glass-cobalt:#70b1ff;--glass-violet:#b49dff}}@keyframes rise{0%{opacity:0;translate:0 4px}to{opacity:1;translate:none}}@keyframes sweep{0%{translate:-100%}to{translate:240%}}@keyframes spin{to{transform:rotate(360deg)}}.gate{flex-direction:column;gap:1.25rem;display:flex}.gate-moving{overflow-clip-margin:8px;overflow:visible clip}.gate-enter>*{animation:rise .34s var(--swing) both}.gate-enter>:nth-child(2){animation-delay:40ms}.gate-enter>:nth-child(3){animation-delay:80ms}.gate-enter>:nth-child(4){animation-delay:.11s}.gate-enter>:nth-child(n+5){animation-delay:.13s}@media (prefers-reduced-motion:reduce){.gate-enter>*{animation:none}.pulse-on:after{animation-duration:2.4s}.spinner{animation-duration:2s}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}
@@ -0,0 +1,6 @@
1
+ import{a as e,i as t,n,o as r,r as i,s as a,t as o}from"./passkey-5UYPVD3c.js";import{$ as s,A as c,B as l,C as u,D as d,E as f,G as p,H as m,I as h,J as g,K as _,L as v,M as y,O as b,R as x,T as S,U as C,V as w,W as T,X as E,Y as D,Z as O,at as k,b as A,d as j,f as M,ft as N,i as P,j as F,k as I,l as L,m as R,n as z,nt as B,o as V,ot as H,pt as ee,q as U,r as te,s as W,t as ne,tt as G,ut as K,w as q,x as J,y as Y}from"./initial-Cn-UuAsy.js";var X=/%\{(\w+)\}/g;function re(e,t){return t?e.replace(X,(e,n)=>Object.hasOwn(t,n)?String(t[n]):e):e}function ie(e){return(t,n)=>{let r=e()?.[t];return typeof r==`string`?re(r,n):``}}var ae=document.querySelector(`meta[name="masks-root"]`)?.content??``,oe=new Set([`javascript:`,`data:`,`vbscript:`,`file:`,`blob:`]),se=e=>{if(typeof e!=`string`||e===``)return!1;try{return!oe.has(new URL(e,window.location.href).protocol)}catch{return!1}},ce=()=>document.querySelector(`meta[name="csrf-token"]`)?.content??``;async function le(e,t,n){let r=await fetch(e,{method:t,credentials:`same-origin`,headers:{"Content-Type":`application/json`,Accept:`application/json`,"X-CSRF-Token":ce()},body:n?JSON.stringify(n):void 0});if(!r.ok&&r.status!==422&&r.status!==429)throw Error(`login failed: ${r.status}`);return r.json()}function ue(e,t={}){let n=t.url??`${ae}/login`,r=O(D(e)),i=O(!1),a=O(!1),o=null;async function s(e,t,{quiet:s=!1}={}){if(s&&l(i))return l(r);s||(E(i,!0),E(a,!1),o=[e,t]);try{let a=await le(n,e,l(r).rid?{rid:l(r).rid,...t}:t);return s&&l(i)||(E(r,a,!0),se(l(r).redirectTo)&&window.location.assign(l(r).redirectTo)),l(r)}catch{return s||E(a,!0),l(r)}finally{s||E(i,!1)}}return{t:ie(()=>l(r).copy),get auth(){return l(r)},get loading(){return l(i)},get failed(){return l(a)},get prompt(){return l(r).prompt},get backupCodes(){return l(r).backupCodes},get rememberable(){return l(r).rememberable},get consent(){return l(r).consent},get client(){return l(r).client},get actor(){return l(r).actor},warns(e){return(l(r).warnings??[]).includes(e)},submit(e,t={}){return s(`POST`,{event:e,...t})},startOver(){return s(`DELETE`)},poll(e,t={}){return s(`POST`,{event:e,...t},{quiet:!0})},retry(){return o?s(...o):Promise.resolve(l(r))}}}var de=y(`<span class="spinner action-mark"></span>`),fe=y(`<button><!> </button>`);function Z(e,t){H(t,!0);let n=P(t,`busy`,3,!1),r=P(t,`ready`,3,!0),i=P(t,`working`,3,null),a=P(t,`quiet`,3,!1),o=P(t,`plain`,3,!1),s=P(t,`fit`,3,!1),u=P(t,`grow`,3,!1),f=P(t,`onclick`,3,null),h=P(t,`type`,3,`button`),_=G(()=>n()||t.login.loading),y=G(()=>n()&&i()?i():t.label),b=G(()=>[`action`,a()&&`action-quiet`,o()&&`action-plain`,s()&&`action-fit`,u()&&`action-grow`,n()&&`action-busy`].filter(Boolean).join(` `));var x=fe(),S=p(x),C=e=>{var t=de();c(e,t)};d(S,e=>{n()&&e(C)});var w=g(S);K(x),m(()=>{M(x,`type`,h()),Y(x,1,A(l(b))),x.disabled=!r()||l(_),M(x,`aria-busy`,n()||void 0),I(w,` ${l(y)??``}`)}),v(`click`,x,function(...e){f()?.apply(this,e)}),c(e,x),k()}h([`click`]);var pe=y(`<span class="record-cap"> </span>`),me=y(`&nbsp;<em> </em>`,1),he=y(`<p class="prompt-lede"> </p>`),ge=y(`<div class="prompt-head"><span aria-hidden="true"></span> <!> <h1 class="prompt-title"> <!></h1> <!></div>`);function Q(e,t){H(t,!0);let n=P(t,`name`,3,null),r=P(t,`lede`,3,null),i=P(t,`cap`,3,null),a=P(t,`tone`,3,null),o=P(t,`busy`,3,!1),s=G(()=>a()===null&&(o()||t.login.loading));var u=ge(),f=p(u);let h;var v=g(f,2),y=e=>{var t=pe(),n=U(t,!0);m(()=>I(n,i())),c(e,t)};d(v,e=>{i()&&e(y)});var b=g(v,2),x=p(b,!0),S=g(x),C=e=>{var t=me(),r=g(_(t)),i=U(r,!0);m(()=>I(i,n())),c(e,t)};d(S,e=>{n()&&e(C)}),K(b);var w=g(b,2),T=e=>{var t=he(),n=U(t,!0);m(()=>I(n,r())),c(e,t)};d(w,e=>{r()&&e(T)}),K(u),m(()=>{h=Y(f,1,`pulse`,null,h,{"pulse-on":l(s),"pulse-done":a()===`done`,"pulse-bad":a()===`bad`}),I(x,t.title)}),c(e,u),k()}var _e=y(`<div role="alert"> </div>`),ve=y(`<div class="note note-warn recover" role="alert"><span> </span> <button type="button" class="textlink"> </button></div>`),ye=y(`<!> <!>`,1);function be(e,t){H(t,!0);let n=G(()=>(t.login.auth.messages??[]).filter(e=>!e.field));var r=ye(),i=_(r);q(i,17,()=>l(n),e=>e.key,(e,t)=>{var n=_e(),r=U(n,!0);m(()=>{Y(n,1,A(l(t).tone)),I(r,l(t).text)}),c(e,n)});var a=g(i,2),o=e=>{var n=ve(),r=p(n),i=U(r,!0),a=g(r,2),o=U(a,!0);K(n),m((e,n)=>{I(i,e),a.disabled=t.login.loading,I(o,n)},[()=>t.login.t(`unreachable`),()=>t.login.loading?t.login.t(`checking`):t.login.t(`try_again`)]),v(`click`,a,()=>t.login.retry()),c(e,n)};d(a,e=>{t.login.failed&&e(o)}),c(e,r),k()}h([`click`]);var xe=y(`<span class="field-hint field-hint-bad" role="alert"> </span>`),Se=y(`<span class="field-hint"> </span>`);function $(e,t){H(t,!0);let n=P(t,`hint`,3,null),r=G(()=>(t.login.auth.messages??[]).find(e=>e.field===t.field));var i=F(),a=_(i),o=e=>{var t=xe(),n=U(t,!0);m(()=>I(n,l(r).text)),c(e,t)},s=e=>{var t=Se(),r=U(t,!0);m(()=>I(r,n())),c(e,t)};d(a,e=>{l(r)?e(o):n()&&e(s,1)}),c(e,i),k()}var Ce=y(`<label class="field"><span class="field-label"> </span> <input type="email" class="control" readonly=""/></label>`),we=y(`<!> <form class="flow"><label class="field"><span class="field-label"> </span> <input type="text" class="control" autocomplete="username" readonly=""/></label> <!> <label class="field"><span class="field-label"> </span> <input type="password" name="password" class="control" autocomplete="new-password"/> <!></label> <!></form>`,1);function Te(e,t){H(t,!0);let n=O(``),r=G(()=>t.login.auth.invitation??{}),i=G(()=>l(r).minimum??8),a=G(()=>l(n).length>=l(i));function o(e){e.preventDefault(),l(a)&&!t.login.loading&&t.login.submit(`accept-invitation`,{password:l(n)})}var s=we(),u=_(s);{let e=G(()=>t.login.t(`title`)),n=G(()=>l(r).invitedBy?t.login.t(`invited_by`,{nickname:l(r).invitedBy}):null);Q(u,{get login(){return t.login},get title(){return l(e)},get lede(){return l(n)}})}var f=g(u,2),h=p(f),v=p(h),y=U(v,!0),b=g(v,2);j(b),K(h);var S=g(h,2),C=e=>{var n=Ce(),i=p(n),a=U(i,!0),o=g(i,2);j(o),K(n),m(e=>{I(a,e),R(o,l(r).email)},[()=>t.login.t(`email`)]),c(e,n)};d(S,e=>{l(r).email&&e(C)});var w=g(S,2),T=p(w),D=U(T,!0),A=g(T,2);j(A),B(A,!0);var N=g(A,2);{let e=G(()=>t.login.t(`hint`,{minimum:l(i)}));$(N,{get login(){return t.login},field:`password`,get hint(){return l(e)}})}K(w);var P=g(w,2);{let e=G(()=>t.login.t(`continue`)),n=G(()=>t.login.t(`working`));Z(P,{get login(){return t.login},type:`submit`,get ready(){return l(a)},get busy(){return t.login.loading},get label(){return l(e)},get working(){return l(n)}})}K(f),m((e,n)=>{M(f,`aria-busy`,t.login.loading||void 0),I(y,e),R(b,l(r).nickname??``),I(D,n)},[()=>t.login.t(`account`),()=>t.login.t(`password`)]),x(`submit`,f,o),L(A,()=>l(n),e=>E(n,e)),c(e,s),k()}var Ee=y(`<div class="whom"><span class="whom-name"> </span> <button type="button" class="textlink"> </button></div>`);function De(e,t){H(t,!0);var n=Ee(),r=p(n),i=U(r,!0),a=g(r,2),o=U(a,!0);K(n),m(e=>{I(i,t.login.auth.identifier),a.disabled=t.login.loading,I(o,e)},[()=>t.login.t(`not_you`)]),v(`click`,a,()=>t.login.startOver()),c(e,n),k()}h([`click`]);var Oe=y(`<span> </span>`),ke=y(`<nav class="tabset"></nav>`);function Ae(e,t){H(t,!0);let n=P(t,`steps`,19,()=>[]);var r=ke();q(r,22,n,e=>e,(e,n,r)=>{let i=G(()=>l(r)+1);var a=Oe();let o;var s=U(a,!0);m(e=>{o=Y(a,1,`tabset-tab`,null,o,{"tabset-done":l(i)<t.at,"tabset-now":l(i)===t.at}),M(a,`aria-current`,l(i)===t.at?`step`:void 0),I(s,e)},[()=>t.login.t(`tab_${n}`)]),c(e,a)}),K(r),m(e=>M(r,`aria-label`,e),[()=>t.login.t(`tabs`)]),c(e,r),k()}var je=y(`<!> <!>`,1);function Me(e,t){H(t,!0);let n=G(()=>t.login.auth.tenant?.name??``),r=G(()=>t.login.auth.signingUp??{steps:[]});var i=je(),a=_(i),o=e=>{{let r=G(()=>t.login.t(`setup_title`)),i=G(()=>t.login.t(`setup_cap`));Q(e,{get login(){return t.login},get title(){return l(r)},get name(){return l(n)},get cap(){return l(i)}})}},s=e=>{{let n=G(()=>t.login.t(`signup_title`));Q(e,{get login(){return t.login},get title(){return l(n)}})}};d(a,e=>{l(r).firstRun?e(o):e(s,-1)});var u=g(a,2);{let e=G(()=>t.at??l(r).steps.length);Ae(u,{get login(){return t.login},get steps(){return l(r).steps},get at(){return l(e)}})}c(e,i),k()}var Ne=y(`<p class="aside"> </p>`),Pe=y(`<p class="aside aside-bad" role="alert"> </p>`),Fe=y(`<div class="flow-tight"><!> <!> <!></div>`);function Ie(n,i){H(i,!0);let a=P(i,`enrolling`,3,!1),s=P(i,`label`,3,null),u=P(i,`params`,19,()=>({})),f=O(!1),h=O(null),v=G(()=>(a()||!!i.login.auth.passkey?.offered)&&t());async function y(){E(f,!0),E(h,null);let t=null;try{let n=await i.login.submit(a()?`enrol:passkey-challenge`:`passkey:challenge`,{}),r=a()?n.enrolment?.passkeys?.options:n.passkey?.options;if(!r){E(h,i.login.t(`passkey_unoffered`),!0);return}t=performance.now();let s=a()?await e(r):await o(r);await i.login.submit(a()?`enrol:passkey`:`passkey:verify`,{...u(),passkey:s})}catch(e){(!r(e)||t!==null&&performance.now()-t<500)&&E(h,i.login.t(`passkey_unusable`),!0)}finally{E(f,!1)}}var b=F(),x=_(b),S=e=>{var t=Fe(),n=p(t);{let e=G(()=>s()??i.login.t(`use_passkey`)),t=G(()=>i.login.t(`waiting_for_passkey`));Z(n,{get login(){return i.login},quiet:!0,get busy(){return l(f)},get label(){return l(e)},get working(){return l(t)},onclick:y})}var r=g(n,2),a=e=>{var t=Ne(),n=U(t,!0);m(e=>I(n,e),[()=>i.login.t(`passkey_hint`)]),c(e,t)};d(r,e=>{l(f)&&e(a)});var o=g(r,2),u=e=>{var t=Pe(),n=U(t,!0);m(()=>I(n,l(h))),c(e,t)};d(o,e=>{l(h)&&e(u)}),K(t),c(e,t)};d(x,e=>{l(v)&&e(S)}),c(n,b),k()}var Le=y(`<form class="flow-tight"><input type="text" name="code" class="control control-code" inputmode="numeric" pattern="[0-9 ]*" autocomplete="one-time-code" maxlength="7" spellcheck="false"/> <!></form>`),Re=y(`<button type="button" class="textlink ledger-link"> </button>`),ze=y(`<!> <p class="aside"> </p>`,1),Be=y(`<!> <!>`,1),Ve=y(`<li> </li>`),He=y(`<ol class="codes"></ol> <span class="field-hint"> </span> <div class="codes-actions"><button type="button" class="textlink"> </button> <a class="textlink"> </a></div>`,1),Ue=y(`<span class="field-hint"> </span>`),We=y(`<div class="ledger-row"><span class="ledger-label"> </span> <!></div>`),Ge=y(`<div class="ledger-row"><button type="button" class="textlink ledger-link"> </button></div>`),Ke=y(`<div class="slab"><div class="ledger-row"><span class="ledger-label"> </span> <ul class="plain-list"></ul></div> <!> <!></div>`),qe=y(`<li><button type="button" class="way"><span class="way-title"> </span> <span class="way-about"> </span></button></li>`),Je=y(`<ul class="ways"></ul>`),Ye=y(`<div class="slab"><div class="ledger-row"><span class="ledger-label"> </span> <div class="enrol"><a class="enrol-qr"></a> <div class="enrol-key"><span class="field-hint"> </span> <span class="enrol-secret"> </span></div></div> <!></div> <div class="ledger-row"><!></div></div>`),Xe=y(`<div class="slab"><div class="ledger-row"><span class="ledger-label"> </span> <span class="field-hint"> </span> <!></div> <div class="ledger-row"><!></div></div>`),Ze=y(`<span class="field-hint"> </span> <!>`,1),Qe=y(`<div class="slab"><div class="ledger-row"><span class="ledger-label"> </span> <!></div> <div class="ledger-row"><!></div></div>`),$e=y(`<label class="check"><input type="checkbox" name="kept" required=""/> <span> </span></label>`),et=y(`<div><!> <!> <form class="flow"><!> <!></form></div>`);function tt(e,n){H(n,!0);let r=(e,t=N)=>{var r=Le(),i=p(r);j(i);var a=g(i,2);{let e=G(()=>ae(t())),r=G(()=>n.login.t(`turn_on`));Z(a,{get login(){return n.login},type:`submit`,quiet:!0,get ready(){return l(e)},get label(){return l(r)}})}K(r),m((e,t)=>{M(r,`aria-busy`,n.login.loading||void 0),M(i,`aria-label`,e),M(i,`placeholder`,t)},[()=>n.login.t(`code`),()=>n.login.t(`code`)]),x(`submit`,r,e=>oe(e,t())),L(i,()=>R[t()],e=>R[t()]=e),c(e,r)},i=e=>{var t=F(),r=_(t),i=e=>{var t=Re(),r=U(t,!0);m(e=>I(r,e),[()=>n.login.t(`another_way`)]),v(`click`,t,()=>E(P,null)),c(e,t)};d(r,e=>{(l(T).length>1||l(V))&&e(i)}),c(e,t)},a=G(()=>n.login.auth.enrolment??{}),o=G(()=>l(a).otp??{}),s=G(()=>l(a).passkeys??{count:0}),f=G(()=>l(a).backupCodes??{}),h=G(()=>!!n.login.auth.signingUp),y=G(()=>l(a).offers??{otp:!0,passkey:!0,backupCodes:!0}),b=G(()=>!l(a).required),S=G(()=>l(f).issued??[]),C=G(()=>Object.entries(l(a).codes??{})),w=G(()=>l(y).passkey&&t()),T=G(()=>[l(y).otp&&!l(o).enabled&&[`otp`,n.login.t(`otp`),n.login.t(`otp_about`)],l(w)&&!l(s).verified&&[`passkey`,n.login.t(`passkey`),n.login.t(`passkey_about`)],...l(C).filter(([,e])=>!e.enabled).map(([e,t])=>[e,n.login.t(`codes_${e}`),n.login.t(`codes_${e}_about`,{to:t.to})])].filter(Boolean)),A=G(()=>[l(o).enabled&&n.login.t(`otp`),l(s).count>0&&n.login.t(`passkeys_some`,{count:l(s).count}),...l(C).filter(([,e])=>e.enabled).map(([e])=>n.login.t(`codes_${e}`))].filter(Boolean)),P=O(null),R=D({"enrol:otp":``,"enrol:code":``}),z=O(!1),B=O(!1),V=G(()=>l(A).length>0),te=G(()=>l(P)===null||!l(T).some(([e])=>e===l(P))),ne=G(()=>l(C).find(([,e])=>e.sent)?.[0]??null),J=G(()=>l(te)?l(ne)??null:l(P)),X=G(()=>l(b)&&(l(S).length===0||l(z))),re=G(()=>l(V)?n.login.t(`on_title`):n.login.t(`title`)),ie=G(()=>l(V)?n.login.t(`on_lede`):l(a).required?n.login.t(`lede`):n.login.t(`lede_optional`)),ae=e=>R[e].replace(/\D/g,``).length===6;function oe(e,t){if(e.preventDefault(),!ae(t)||n.login.loading)return;let r=R[t];R[t]=``,n.login.submit(t,{code:r}).then(()=>{E(P,null)})}let se=typeof location>`u`?``:location.origin,ce=typeof location>`u`?`masks`:location.hostname,le=G(()=>{let e=[n.login.t(`backup_codes_file`,{account:n.login.actor?.identifier??``,origin:se}),n.login.t(`backup_codes_hint`),``,...l(S),``];return`data:text/plain;charset=utf-8,${encodeURIComponent(e.join(`
2
+ `))}`});async function ue(){try{await navigator.clipboard.writeText(l(S).join(`
3
+ `)),E(B,!0)}catch{E(B,!1)}}function de(e){e.preventDefault(),l(X)&&!n.login.loading&&n.login.submit(`enrol:done`,{kept:l(z)})}var fe=et();let pe;var me=p(fe),he=e=>{var t=ze(),r=_(t);Me(r,{get login(){return n.login},at:2});var i=g(r,2),a=U(i,!0);m(()=>I(a,l(ie))),c(e,t)},ge=e=>{var t=Be(),r=_(t);Q(r,{get login(){return n.login},get title(){return l(re)},get lede(){return l(ie)}}),De(g(r,2),{get login(){return n.login}}),c(e,t)};d(me,e=>{l(h)?e(he):e(ge,-1)});var _e=g(me,2),ve=e=>{var t=Ke(),r=p(t),i=p(r),a=U(i,!0),o=g(i,2);q(o,20,()=>l(A),e=>e,(e,t)=>{var n=Ve(),r=U(n,!0);m(()=>I(r,t)),c(e,n)}),K(o),K(r);var s=g(r,2),u=e=>{var t=We(),r=p(t),i=U(r,!0),a=g(r,2),o=e=>{var t=He(),r=_(t);q(r,20,()=>l(S),e=>e,(e,t)=>{var n=Ve(),r=U(n,!0);m(()=>I(r,t)),c(e,n)}),K(r);var i=g(r,2),a=U(i,!0),o=g(i,2),s=p(o),u=U(s,!0),d=g(s,2),f=U(d,!0);K(o),m((e,t,n)=>{I(a,e),I(u,t),M(d,`href`,l(le)),M(d,`download`,`backup-codes-${ce??``}.txt`),I(f,n)},[()=>n.login.t(`backup_codes_hint`),()=>l(B)?n.login.t(`copied`):n.login.t(`copy`),()=>n.login.t(`download`)]),v(`click`,s,ue),c(e,t)},s=e=>{var t=Ue(),r=U(t,!0);m(e=>I(r,e),[()=>n.login.t(`backup_codes_left`,{count:l(f).remaining})]),c(e,t)};d(a,e=>{l(S).length>0?e(o):l(f).remaining>0&&e(s,1)}),K(t),m(e=>I(i,e),[()=>n.login.t(`backup_codes`)]),c(e,t)};d(s,e=>{l(y).backupCodes&&e(u)});var h=g(s,2),b=e=>{var t=Ge(),r=p(t),i=U(r,!0);K(t),m(e=>I(i,e),[()=>n.login.t(`add_way`)]),v(`click`,r,()=>E(P,l(T)[0][0],!0)),c(e,t)};d(h,e=>{l(T).length&&e(b)}),K(t),m(e=>I(a,e),[()=>n.login.t(`on_label`)]),c(e,t)},ye=e=>{var t=Je();q(t,21,()=>l(T),([e,t,n])=>e,(e,t)=>{var n=G(()=>ee(l(t),3));let r=()=>l(n)[0],i=()=>l(n)[1],a=()=>l(n)[2];var o=qe(),s=p(o),u=p(s),d=U(u,!0),f=g(u,2),h=U(f,!0);K(s),K(o),m(()=>{I(d,i()),I(h,a())}),v(`click`,s,()=>E(P,r(),!0)),c(e,o)}),K(t),c(e,t)},be=e=>{var t=Ye(),a=p(t),s=p(a),d=U(s,!0),f=g(s,2),h=p(f);u(h,()=>l(o).qr,!0),K(h);var _=g(h,2),v=p(_),y=U(v,!0),b=g(v,2),x=U(b,!0);K(_),K(f);var S=g(f,2);r(S,()=>`enrol:otp`),K(a);var C=g(a,2),w=p(C);i(w),K(C),K(t),m((e,t,n)=>{I(d,e),M(h,`href`,l(o).uri),M(h,`aria-label`,t),I(y,n),I(x,l(o).secret)},[()=>n.login.t(`otp`),()=>n.login.t(`open`),()=>n.login.t(`scan_hint`)]),c(e,t)},xe=e=>{var t=Xe(),r=p(t),a=p(r),o=U(a,!0),u=g(a,2),d=U(u,!0),f=g(u,2);{let e=G(()=>l(s).count>0?n.login.t(`add_another_passkey`):n.login.t(`add_passkey`));Ie(f,{get login(){return n.login},enrolling:!0,get label(){return l(e)}})}K(r);var h=g(r,2),_=p(h);i(_),K(h),K(t),m((e,t)=>{I(o,e),I(d,t)},[()=>n.login.t(`passkeys`),()=>n.login.t(`passkey_about`)]),c(e,t)},Se=e=>{let t=G(()=>l(a).codes?.[l(J)]??{});var o=Qe(),s=p(o),u=p(s),f=U(u,!0),h=g(u,2),v=e=>{var i=Ze(),a=_(i),o=U(a,!0),s=g(a,2);r(s,()=>`enrol:code`),m(e=>I(o,e),[()=>n.login.t(`sent_to`,{to:l(t).to})]),c(e,i)},y=e=>{var r=Ze(),i=_(r),a=U(i,!0),o=g(i,2);{let e=G(()=>n.login.t(`send_code`));Z(o,{get login(){return n.login},quiet:!0,get label(){return l(e)},onclick:()=>n.login.submit(`enrol:code-send`,{factor:l(J)})})}m(e=>I(a,e),[()=>n.login.t(`codes_${l(J)}_about`,{to:l(t).to})]),c(e,r)};d(h,e=>{l(t).sent?e(v):e(y,-1)}),K(s);var b=g(s,2),x=p(b);i(x),K(b),K(o),m(e=>I(f,e),[()=>n.login.t(`codes_${l(J)}`)]),c(e,o)};d(_e,e=>{l(V)&&l(J)===null?e(ve):l(J)===null?e(ye,1):l(J)===`otp`?e(be,2):l(J)===`passkey`?e(xe,3):e(Se,-1)});var $=g(_e,2),Ce=p($),we=e=>{var t=$e(),r=p(t);j(r);var i=g(r,2),a=U(i,!0);K(t),m(e=>I(a,e),[()=>n.login.t(`kept`)]),W(r,()=>l(z),e=>E(z,e)),c(e,t)};d(Ce,e=>{l(S).length>0&&e(we)});var Te=g(Ce,2),Ee=e=>{{let t=G(()=>l(V)||l(a).required?n.login.t(`done`):n.login.t(`skip`)),r=G(()=>n.login.t(`working`));Z(e,{get login(){return n.login},type:`submit`,get ready(){return l(X)},get busy(){return n.login.loading},get label(){return l(t)},get working(){return l(r)}})}};d(Te,e=>{(l(V)||!l(a).required)&&e(Ee)}),K($),K(fe),m(()=>pe=Y(fe,1,`flow`,null,pe,{setup:l(h),"setup-ready":l(h)&&l(X)})),x(`submit`,$,de),c(e,fe),k()}h([`click`]);var nt=y(`<!> <!> <form class="flow"><label class="field"><span class="field-label"> </span> <input type="text" name="backup_code" class="control control-mono" autocomplete="one-time-code" spellcheck="false" autocapitalize="off"/> <span class="field-hint"> </span></label> <!></form> <!>`,1);function rt(e,t){H(t,!0);let n=O(``),r=G(()=>l(n).trim().length>=8);function i(e){if(e.preventDefault(),!l(r)||t.login.loading)return;let i=l(n);E(n,``),t.login.submit(`backup`,{backup_code:i})}var a=nt(),o=_(a);{let e=G(()=>t.login.t(`title`));Q(o,{get login(){return t.login},get title(){return l(e)}})}var s=g(o,2);De(s,{get login(){return t.login}});var u=g(s,2),d=p(u),f=p(d),h=U(f,!0),v=g(f,2);j(v),B(v,!0);var y=g(v,2),b=U(y,!0);K(d);var S=g(d,2);{let e=G(()=>t.login.t(`continue`)),n=G(()=>t.login.t(`checking`));Z(S,{get login(){return t.login},type:`submit`,get ready(){return l(r)},get busy(){return t.login.loading},get label(){return l(e)},get working(){return l(n)}})}K(u);var C=g(u,2);{let e=G(()=>t.login.t(`use_authenticator`));Z(C,{get login(){return t.login},plain:!0,get label(){return l(e)},onclick:()=>t.login.submit(`use-authenticator`,{})})}m((e,n)=>{M(u,`aria-busy`,t.login.loading||void 0),I(h,e),I(b,n)},[()=>t.login.t(`code`),()=>t.login.t(`hint`)]),x(`submit`,u,i),L(v,()=>l(n),e=>E(n,e)),c(e,a),k()}var it=document.querySelector(`meta[name="csrf-token"]`)?.content??``,at=y(`<span class="actor-note"> </span>`),ot=y(`<span class="actor-sub"> <!></span>`),st=y(`<span class="actor-role"> </span>`),ct=y(`<form class="signout" method="post"><input type="hidden" name="authenticity_token"/> <button type="submit" class="textlink"> </button></form>`),lt=y(`<div class="actor"><img width="44" height="44" alt="" class="avatar actor-avatar"/> <div class="actor-who"><span class="actor-name"> </span> <!> <!></div> <!></div>`);function ut(e,t){H(t,!0);let n=P(t,`signOut`,3,null);var r=lt(),i=p(r),a=g(i,2),o=p(a),s=U(o,!0),l=g(o,2),u=e=>{var n=ot(),r=p(n),i=g(r),a=e=>{var n=at(),r=U(n,!0);m(()=>I(r,t.actor.note)),c(e,n)};d(i,e=>{t.actor.note&&e(a)}),K(n),m(e=>I(r,`${e??``} `),[()=>t.actor.details.join(` · `)]),c(e,n)};d(l,e=>{(t.actor.details.length||t.actor.note)&&e(u)});var f=g(l,2),h=e=>{var n=st(),r=U(n,!0);m(()=>I(r,t.actor.role)),c(e,n)};d(f,e=>{t.actor.role&&e(h)}),K(a);var _=g(a,2),v=e=>{var t=ct(),r=p(t);j(r);var i=g(r,2),a=U(i,!0);K(t),m(()=>{M(t,`action`,`${ae}/logout`),R(r,it),I(a,n())}),c(e,t)};d(_,e=>{n()&&e(v)}),K(r),m(()=>{M(i,`src`,t.actor.avatar),I(s,t.actor.name)}),c(e,r),k()}var dt=y(`<li><button type="button" class="org-pick"><span class="org-pick-mark" aria-hidden="true"> </span> <span class="org-pick-name"> </span> <span class="org-pick-role"> </span></button></li>`),ft=y(`<!> <!> <ul class="org-picks"></ul>`,1);function pt(e,t){H(t,!0);let n=O(null),r=G(()=>t.login.auth.organizations??[]),i=G(()=>t.login.client?.name??``);async function a(e){E(n,e.key,!0);try{await t.login.submit(`organization`,{organization:e.key})}finally{E(n,null)}}var o=ft(),s=_(o);{let e=G(()=>l(i)?t.login.t(`title_to`,{client:l(i)}):t.login.t(`title`)),n=G(()=>t.login.t(`lede`));Q(s,{get login(){return t.login},get title(){return l(e)},get lede(){return l(n)}})}var u=g(s,2),f=e=>{{let n=G(()=>t.login.t(`sign_out`));ut(e,{get actor(){return t.login.auth.actor.card},get signOut(){return l(n)}})}};d(u,e=>{t.login.auth.actor?.card&&e(f)});var h=g(u,2);q(h,21,()=>l(r),e=>e.key,(e,r)=>{var i=dt(),o=p(i),s=p(o),u=U(s,!0),d=g(s,2),f=U(d,!0),h=g(d,2),_=U(h,!0);K(o),K(i),m((e,i,a)=>{o.disabled=t.login.loading,M(o,`aria-busy`,l(n)===l(r).key||void 0),M(o,`aria-label`,e),I(u,i),I(f,l(r).name),I(_,a)},[()=>t.login.t(`as`,{organization:l(r).name,role:l(r).role}),()=>z(l(r).name),()=>l(n)===l(r).key?t.login.t(`working`):l(r).role]),v(`click`,o,()=>a(l(r))),c(e,i)}),K(h),m(e=>M(h,`aria-label`,e),[()=>t.login.t(`title`)]),c(e,o),k()}h([`click`]);var mt=y(`<img alt="" class="auth-mark auth-mark-client auth-mark-logo" referrerpolicy="no-referrer"/>`),ht=y(`<span class="auth-mark auth-mark-client" aria-hidden="true"> </span>`);function gt(e,t){H(t,!0);var n=F(),r=_(n),i=e=>{var n=mt();m(()=>M(n,`src`,t.client.logo)),c(e,n)},a=e=>{var n=ht(),r=U(n,!0);m(e=>I(r,e),[()=>ne(t.client?.name)]),c(e,n)};d(r,e=>{t.client?.logo?e(i):e(a,-1)}),c(e,n),k()}var _t=/(:write|:command|:exec|:delete|:admin)$|^offline_access$|^masks:delegate:./;function vt(e){return _t.test(String(e))}function yt(e){let t=[],n=[];for(let r of e??[])(vt(r[0])?t:n).push(r);return{hot:t,rest:n}}var bt=y(`<li> </li>`),xt=y(`<ul class="plain-list"></ul>`),St=y(`<p class="empty"> </p>`),Ct=y(`<div class="ledger-row"><span class="aside"> </span></div>`),wt=y(`<dt> </dt> <dd class="aside-mono"> </dd>`,1),Tt=y(`<dl class="grant-fields"></dl>`),Et=y(`<li> <!></li>`),Dt=y(`<div class="ledger-row"><span class="ledger-label"> </span> <ul class="plain-list"></ul></div>`),Ot=y(`<li class="grant-scope"><span> </span> <span class="chip-key"> </span></li>`),kt=y(`<div class="ledger-row"><span class="ledger-label"> </span> <span class="ledger-value aside-mono"> </span></div>`),At=y(`<a class="textlink" rel="noopener noreferrer" target="_blank"> </a>`),jt=y(`<p class="aside client-links"></p>`),Mt=y(`<div class="auth-solo"><!></div> <!> <!> <div class="slab"><div class="ledger-row"><span class="ledger-label"> </span> <!></div> <!> <!></div> <details class="disclosure handshake-more"><summary class="textlink"> </summary> <div class="slab"><div class="ledger-row"><span class="ledger-label"> </span> <ul class="grant-scopes"></ul></div> <!> <!></div></details> <div class="action-row"><!> <!></div>`,1);function Nt(e,t){H(t,!0);let n=G(()=>yt(t.login.consent?.scopes??[])),r=G(()=>[...l(n).hot,...l(n).rest]),i=G(()=>t.login.consent?.audience??[]),a=G(()=>t.login.consent?.details??[]),o=G(()=>t.login.client?.name??``),s=G(()=>[[`site`,t.login.t(`site`,{client:l(o)})],[`terms`,t.login.t(`terms`)],[`privacy`,t.login.t(`privacy`)]].filter(([e])=>t.login.client?.[e]));var u=Mt(),f=_(u);gt(p(f),{get client(){return t.login.client}}),K(f);var h=g(f,2);{let e=G(()=>t.login.t(`title`,{client:l(o)}));Q(h,{get login(){return t.login},get title(){return l(e)}})}var v=g(h,2),y=e=>{{let n=G(()=>t.login.t(`sign_out`));ut(e,{get actor(){return t.login.auth.actor.card},get signOut(){return l(n)}})}};d(v,e=>{t.login.auth.actor?.card&&e(y)});var b=g(v,2),x=p(b),C=p(x),w=U(C,!0),T=g(C,2),E=e=>{var t=xt();q(t,21,()=>l(r),([e,t])=>e,(e,t)=>{var n=G(()=>ee(l(t),2));let r=()=>l(n)[1];var i=bt(),a=U(i,!0);m(()=>I(a,r())),c(e,i)}),K(t),c(e,t)},D=e=>{var n=St(),r=U(n,!0);m(e=>I(r,e),[()=>t.login.t(`no_access`)]),c(e,n)};d(T,e=>{l(r).length?e(E):e(D,-1)}),K(x);var O=g(x,2),A=e=>{var n=Ct(),r=p(n),a=U(r,!0);K(n),m(e=>I(a,e),[()=>t.login.t(`audience`,{resources:l(i).join(`, `)})]),c(e,n)};d(O,e=>{l(i).length&&e(A)});var j=g(O,2),N=e=>{var n=Dt(),r=p(n),i=U(r,!0),o=g(r,2);q(o,21,()=>l(a),S,(e,t)=>{var n=Et(),r=p(n),i=g(r),a=e=>{var n=Tt();q(n,21,()=>l(t).fields,([e,t])=>e,(e,t)=>{var n=G(()=>ee(l(t),2));let r=()=>l(n)[0],i=()=>l(n)[1];var a=wt(),o=_(a),s=U(o,!0),u=g(o,2),d=U(u,!0);m(()=>{I(s,r()),I(d,i())}),c(e,a)}),K(n),c(e,n)};d(i,e=>{l(t).fields.length&&e(a)}),K(n),m(()=>I(r,`${l(t).label??``} `)),c(e,n)}),K(o),K(n),m(e=>I(i,e),[()=>t.login.t(`details`)]),c(e,n)};d(j,e=>{l(a).length&&e(N)}),K(b);var P=g(b,2),F=p(P),L=U(F,!0),R=g(F,2),z=p(R),B=p(z),V=U(B,!0),te=g(B,2);q(te,21,()=>l(r),([e,t])=>e,(e,t)=>{var n=G(()=>ee(l(t),2));let r=()=>l(n)[0],i=()=>l(n)[1];var a=Ot(),o=p(a),s=U(o,!0),u=g(o,2),d=U(u,!0);K(a),m(()=>{I(s,i()),I(d,r())}),c(e,a)}),K(te),K(z);var W=g(z,2),ne=e=>{var n=kt(),r=p(n),i=U(r,!0),a=g(r,2),o=U(a,!0);K(n),m(e=>{I(i,e),I(o,t.login.client.returnsTo)},[()=>t.login.t(`returns_to`)]),c(e,n)};d(W,e=>{t.login.client?.returnsTo&&e(ne)});var J=g(W,2),Y=e=>{var n=jt();q(n,21,()=>l(s),([e,t])=>e,(e,n)=>{var r=G(()=>ee(l(n),2));let i=()=>l(r)[0],a=()=>l(r)[1];var o=At(),s=U(o,!0);m(()=>{M(o,`href`,t.login.client[i()]),I(s,a())}),c(e,o)}),K(n),c(e,n)};d(J,e=>{l(s).length&&e(Y)}),K(R),K(P);var X=g(P,2),re=p(X);{let e=G(()=>t.login.t(`allow`)),n=G(()=>t.login.t(`working`));Z(re,{get login(){return t.login},grow:!0,get busy(){return t.login.loading},get label(){return l(e)},get working(){return l(n)},onclick:()=>t.login.submit(`consent`,{approve:`yes`})})}var ie=g(re,2);{let e=G(()=>t.login.t(`deny`));Z(ie,{get login(){return t.login},quiet:!0,fit:!0,get label(){return l(e)},onclick:()=>t.login.submit(`decline`,{})})}K(X),m((e,t,n)=>{I(w,e),I(L,t),I(V,n)},[()=>t.login.t(`access`),()=>t.login.t(`more`),()=>t.login.t(`scopes`)]),c(e,u),k()}var Pt=y(`<form class="flow"><label class="field"><span class="field-label"> </span> <input type="text" name="code" class="control control-code" inputmode="numeric" pattern="[0-9]*" autocomplete="one-time-code" maxlength="6" spellcheck="false"/></label> <!></form>`);function Ft(e,t){H(t,!0);let n=O(``),r=G(()=>l(n).replace(/\D/g,``).length===6);function i(){if(!l(r)||t.login.loading)return;let e=l(n);E(n,``),t.login.submit(t.event,{code:e})}function a(e){e.preventDefault(),i()}C(()=>{l(r)&&i()});var o=Pt(),s=p(o),u=p(s),d=U(u,!0),f=g(u,2);j(f),B(f,!0),K(s);var h=g(s,2);{let e=G(()=>t.login.t(`continue`)),n=G(()=>t.login.t(`checking`));Z(h,{get login(){return t.login},type:`submit`,get ready(){return l(r)},get busy(){return t.login.loading},get label(){return l(e)},get working(){return l(n)}})}K(o),m(e=>{M(o,`aria-busy`,t.login.loading||void 0),I(d,e)},[()=>t.login.t(`code`)]),x(`submit`,o,a),L(f,()=>l(n),e=>E(n,e)),c(e,o),k()}function It(e,t){H(t,!0);let n=P(t,`event`,3,`confirm:resend`),r=P(t,`ready`,3,null),i=O(!1);async function a(){await t.login.submit(n(),{}),E(i,!0)}{let n=G(()=>r()??t.login.auth.confirmation?.resendable!==!1),o=G(()=>l(i)?t.login.t(`sent_again`):t.login.t(`send_again`));Z(e,{get login(){return t.login},plain:!0,get ready(){return l(n)},get label(){return l(o)},onclick:a})}k()}var Lt=y(`<!> <!> <!> <!>`,1);function Rt(e,t){H(t,!0);var n=Lt(),r=_(n);{let e=G(()=>t.login.t(`title`)),n=G(()=>t.login.t(`lede`,{identifier:t.login.identifier??``}));Q(r,{get login(){return t.login},get title(){return l(e)},get lede(){return l(n)}})}var i=g(r,2);De(i,{get login(){return t.login}});var a=g(i,2);Ft(a,{get login(){return t.login},event:`email-code:verify`});var o=g(a,2);{let e=G(()=>t.login.auth.emailCode?.resendable!==!1);It(o,{get login(){return t.login},event:`email-code:send`,get ready(){return l(e)}})}c(e,n),k()}var zt=y(`<div class="providers"></div>`);function Bt(e,t){H(t,!0);let n=G(()=>t.login.auth.providers??[]);var r=F(),i=_(r),a=e=>{var r=zt();q(r,21,()=>l(n),e=>e.key,(e,n)=>{{let r=G(()=>t.login.t(`continue_with`,{provider:l(n).name}));Z(e,{get login(){return t.login},quiet:!0,get label(){return l(r)},onclick:()=>t.login.submit(`provider`,{provider:l(n).key})})}}),K(r),c(e,r)};d(i,e=>{l(n).length&&e(a)}),c(e,r),k()}var Vt=y(`<div class="otherwise"><span class="providers-rule"> </span> <!> <!></div>`);function Ht(e,n){H(n,!0);let r=G(()=>!!n.login.auth.passkey?.offered&&t()),i=G(()=>(n.login.auth.providers??[]).length>0);var a=F(),o=_(a),s=e=>{var t=Vt(),r=p(t),i=U(r,!0),a=g(r,2);Ie(a,{get login(){return n.login}}),Bt(g(a,2),{get login(){return n.login}}),K(t),m(e=>I(i,e),[()=>n.login.t(`or`)]),c(e,t)};d(o,e=>{(l(r)||l(i))&&e(s)}),c(e,a),k()}var Ut=y(`<form class="flow"><div class="field"><div class="field-line"><label class="field-label" for="password"> </label> <button type="button" class="textlink"> </button></div> <input id="password" type="password" name="password" class="control" autocomplete="current-password"/></div> <!></form>`),Wt=y(`<!> <!> <!> <!> <!>`,1);function Gt(e,t){H(t,!0);let n=O(``),r=G(()=>l(n).length>0),i=G(()=>!!t.login.auth.password?.offered),a=G(()=>!!t.login.auth.emailCode);function o(e){e.preventDefault(),l(r)&&!t.login.loading&&t.login.submit(`password`,{password:l(n)}).then(()=>{E(n,``)})}var s=Wt(),u=_(s);{let e=G(()=>l(i)||!l(a)?t.login.t(`title`):t.login.t(`title_code`));Q(u,{get login(){return t.login},get title(){return l(e)}})}var f=g(u,2);De(f,{get login(){return t.login}});var h=g(f,2),y=e=>{var i=Ut(),a=p(i),s=p(a),u=p(s),d=U(u,!0),f=g(u,2),h=U(f,!0);K(s);var _=g(s,2);j(_),B(_,!0),K(a);var y=g(a,2);{let e=G(()=>t.login.t(`continue`)),n=G(()=>t.login.t(`checking`));Z(y,{get login(){return t.login},type:`submit`,get ready(){return l(r)},get busy(){return t.login.loading},get label(){return l(e)},get working(){return l(n)}})}K(i),m((e,n)=>{M(i,`aria-busy`,t.login.loading||void 0),I(d,e),f.disabled=t.login.loading,I(h,n)},[()=>t.login.t(`password`),()=>t.login.t(`forgot`)]),x(`submit`,i,o),v(`click`,f,()=>t.login.submit(`forgot-password`,{})),L(_,()=>l(n),e=>E(n,e)),c(e,i)};d(h,e=>{l(i)&&e(y)});var b=g(h,2),S=e=>{{let n=G(()=>l(i)?t.login.t(`email_me`):t.login.t(`email_only`));Z(e,{get login(){return t.login},get quiet(){return l(i)},get label(){return l(n)},onclick:()=>t.login.submit(`email-code:send`,{})})}};d(b,e=>{l(a)&&e(S)}),Ht(g(b,2),{get login(){return t.login}}),c(e,s),k()}h([`click`]);function Kt(e,t){H(t,!0);let n=P(t,`tone`,3,null),r=G(()=>t.login.auth.client),i=G(()=>l(r)?.name?t.login.t(`heading_to`,{client:l(r).name}):t.login.t(`heading`));Q(e,{get login(){return t.login},get title(){return l(i)},get tone(){return n()}}),k()}var qt=y(`<span class="field-hint"> </span>`),Jt=y(`<form class="flow"><label class="field"><span class="field-label"> </span> <input type="text" name="identifier" class="control" autocomplete="username webauthn" autocapitalize="none" autocorrect="off" spellcheck="false"/> <!></label> <!></form> <!>`,1),Yt=y(`<!> <!>`,1);function Xt(e,t){H(t,!0);let r=O(``),o=G(()=>l(r).trim().length>0);te(()=>{let e=!0;return(async()=>{if(!t.login.auth.passkey?.offered||!await i()||!e)return;let r=(await t.login.poll(`passkey:challenge`)).passkey?.options;if(!r||!e)return;let a=await n(r);e&&await t.login.submit(`passkey:verify`,{passkey:a})})().catch(()=>{}),()=>{e=!1,a()}});function s(e){e.preventDefault(),l(o)&&!t.login.loading&&t.login.submit(`identify`,{identifier:l(r)})}var u=Yt(),f=_(u);Kt(f,{get login(){return t.login}});var h=g(f,2),v=e=>{var n=Jt(),i=_(n),a=p(i),u=p(a),f=U(u,!0),h=g(u,2);j(h),B(h,!0);var v=g(h,2),y=e=>{var n=qt(),r=U(n,!0);m(e=>I(r,e),[()=>t.login.t(`signup_hint`)]),c(e,n)};d(v,e=>{t.login.auth.signupOpen&&e(y)}),K(a);var b=g(a,2);{let e=G(()=>t.login.t(`continue`)),n=G(()=>t.login.t(`checking`));Z(b,{get login(){return t.login},type:`submit`,get ready(){return l(o)},get busy(){return t.login.loading},get label(){return l(e)},get working(){return l(n)}})}K(i),Ht(g(i,2),{get login(){return t.login}}),m(e=>{M(i,`aria-busy`,t.login.loading||void 0),I(f,e)},[()=>t.login.t(`identifier`)]),x(`submit`,i,s),L(h,()=>l(r),e=>E(r,e)),c(e,n)},y=e=>{Bt(e,{get login(){return t.login}})};d(h,e=>{t.login.auth.identifies===!1?e(y,-1):e(v)}),c(e,u),k()}var Zt=y(`<!> <!>`,1),Qt=y(`<p class="note note-warn" role="alert"> </p>`),$t=y(`<!> <!> <!>`,1);function en(e,t){H(t,!0);let n=G(()=>t.login.auth.inbox??{});var r=$t(),i=_(r);{let e=G(()=>t.login.t(`title`)),r=G(()=>l(n).mails?t.login.t(`lede`,{email:l(n).email}):null);Q(i,{get login(){return t.login},get title(){return l(e)},get lede(){return l(r)}})}var a=g(i,2);De(a,{get login(){return t.login}});var o=g(a,2),s=e=>{var r=Zt(),i=_(r);Ft(i,{get login(){return t.login},event:`inbox:verify`});var a=g(i,2);{let e=G(()=>l(n).resendable!==!1);It(a,{get login(){return t.login},event:`inbox:resend`,get ready(){return l(e)}})}c(e,r)},u=e=>{var n=Qt(),r=U(n,!0);m(e=>I(r,e),[()=>t.login.t(`no_mailer`)]),c(e,n)};d(o,e=>{l(n).mails?e(s):e(u,-1)}),c(e,r),k()}var tn=y(`<!> <form class="flow"><label class="field"><span class="field-label"> </span> <input type="text" class="control" autocomplete="username" readonly=""/></label> <label class="field"><span class="field-label"> </span> <input type="password" name="password" class="control" autocomplete="new-password"/> <!></label> <!></form>`,1);function nn(e,t){H(t,!0);let n=O(``),r=G(()=>t.login.auth.reset??{}),i=G(()=>l(r).minimum??8),a=G(()=>l(n).length>=l(i));function o(e){e.preventDefault(),l(a)&&!t.login.loading&&t.login.submit(`reset-password`,{password:l(n)})}var s=tn(),u=_(s);{let e=G(()=>t.login.t(`title`));Q(u,{get login(){return t.login},get title(){return l(e)}})}var d=g(u,2),f=p(d),h=p(f),v=U(h,!0),y=g(h,2);j(y),K(f);var b=g(f,2),S=p(b),C=U(S,!0),w=g(S,2);j(w),B(w,!0);var T=g(w,2);{let e=G(()=>t.login.t(`hint`,{minimum:l(i)}));$(T,{get login(){return t.login},field:`password`,get hint(){return l(e)}})}K(b);var D=g(b,2);{let e=G(()=>t.login.t(`continue`)),n=G(()=>t.login.t(`working`));Z(D,{get login(){return t.login},type:`submit`,get ready(){return l(a)},get busy(){return t.login.loading},get label(){return l(e)},get working(){return l(n)}})}K(d),m((e,n)=>{M(d,`aria-busy`,t.login.loading||void 0),I(v,e),R(y,l(r).nickname??``),I(C,n)},[()=>t.login.t(`account`),()=>t.login.t(`password`)]),x(`submit`,d,o),L(w,()=>l(n),e=>E(n,e)),c(e,s),k()}var rn=y(`<p class="aside" role="status"> </p>`),an=y(`<label class="check"><input type="checkbox"/> <span> </span></label>`),on=y(`<!> <!> <!> <!>`,1),sn=y(`<form class="flow"><label class="field"><span class="field-label"> </span> <input type="text" name="code" class="control control-code" inputmode="numeric" pattern="[0-9 ]*" autocomplete="one-time-code" maxlength="7" spellcheck="false"/></label> <!> <!></form>`),cn=y(`<!> <!>`,1),ln=y(`<div class="slab flow-tight" aria-live="polite"><span class="aside-mono approval-code"> </span> <span class="field-hint"> </span> <span class="aside"> </span></div>`),un=y(`<p class="aside aside-bad" role="alert"> </p>`),dn=y(`<!> <!> <!> <!> <!> <!> <!> <!> <!> <!>`,1);function fn(e,n){H(n,!0);let r=e=>{var t=F(),r=_(t),i=e=>{var t=rn(),r=U(t,!0);m(e=>I(r,e),[()=>n.login.t(`recovery_requested`)]),c(e,t)},a=e=>{{let t=G(()=>n.login.t(l(D)?`recovery_ask`:`recovery_request`));Z(e,{get login(){return n.login},plain:!0,get label(){return l(t)},onclick:()=>n.login.submit(`recovery:request`,{})})}};d(r,e=>{l(A).requested?e(i):e(a,-1)}),c(e,t)},i=e=>{var t=F(),r=_(t),i=e=>{var t=an(),r=p(t);j(r);var i=g(r,2),a=U(i,!0);K(t),m(e=>I(a,e),[()=>n.login.t(`trust`,{duration:n.login.auth.trustFor})]),W(r,()=>l(o),e=>E(o,e)),c(e,t)};d(r,e=>{n.login.rememberable&&e(i)}),c(e,t)},a=O(``),o=O(!1),s=O(!1),u=G(()=>n.login.auth.secondFactors??{otp:!0}),f=G(()=>n.login.auth.codeFactors??{}),h=G(()=>Object.keys(l(f)).length>0),v=G(()=>n.login.auth.approval),y=G(()=>l(v)?.state===`waiting`),b=G(()=>l(s)?null:n.login.auth.codeSent),S=G(()=>l(a).replace(/\D/g,``).length===6),w=G(()=>!!(l(u).passkey&&n.login.auth.passkey?.offered)&&t()),T=G(()=>!!l(b)||l(u).otp),D=G(()=>!l(T)&&!l(w)&&!n.login.backupCodes&&!l(u).trustedDevice&&!l(h)),A=G(()=>n.login.auth.recovery??{}),N=G(()=>n.login.auth.codesWithheld?.includes(`email`)?`stuck_inbox`:l(u).passkey?globalThis.isSecureContext?`stuck_unsupported`:`stuck_insecure`:`stuck_nothing`);function P(){if(!l(S)||n.login.loading)return;let e=l(a);E(a,``),n.login.submit(l(b)?`code:verify`:`otp`,{code:e,remember:l(o)})}function R(e){e.preventDefault(),P()}function z(e){E(s,!1),n.login.submit(`code:send`,{factor:e})}C(()=>{l(S)&&P()}),C(()=>{if(!l(y))return;let e=l(o),t,r=!1,i=async()=>{document.hidden||await n.login.poll(`approval:check`,{remember:e}),r||(t=setTimeout(i,2e3))};return t=setTimeout(i,2e3),()=>{r=!0,clearTimeout(t)}});var V=F(),te=_(V),ne=e=>{var t=on(),i=_(t);{let e=G(()=>n.login.t(`halted`)),t=G(()=>n.login.t(l(N)));Q(i,{get login(){return n.login},tone:`bad`,get title(){return l(e)},get lede(){return l(t)}})}var a=g(i,2);De(a,{get login(){return n.login}});var o=g(a,2);r(o);var s=g(o,2);{let e=G(()=>n.login.t(`start_over`)),t=G(()=>n.login.t(`working`));Z(s,{get login(){return n.login},quiet:!0,get label(){return l(e)},get working(){return l(t)},get busy(){return n.login.loading},onclick:()=>n.login.startOver()})}c(e,t)},J=e=>{var t=dn(),C=_(t);{let e=G(()=>n.login.t(l(T)?`title`:`title_passkey`)),t=G(()=>l(b)?n.login.t(`sent_to`,{to:l(b).to}):null);Q(C,{get login(){return n.login},get title(){return l(e)},get lede(){return l(t)}})}var D=g(C,2);De(D,{get login(){return n.login}});var O=g(D,2),k=e=>{var t=sn(),r=p(t),o=p(r),s=U(o,!0),u=g(o,2);j(u),B(u,!0),K(r);var d=g(r,2);i(d);var f=g(d,2);{let e=G(()=>n.login.t(`continue`)),t=G(()=>n.login.t(`checking`));Z(f,{get login(){return n.login},type:`submit`,get ready(){return l(S)},get busy(){return n.login.loading},get label(){return l(e)},get working(){return l(t)}})}K(t),m(e=>{M(t,`aria-busy`,n.login.loading||void 0),I(s,e)},[()=>n.login.t(`code`)]),x(`submit`,t,R),L(u,()=>l(a),e=>E(a,e)),c(e,t)};d(O,e=>{l(T)&&e(k)});var A=g(O,2),N=e=>{var t=cn(),r=_(t),a=e=>{i(e)};d(r,e=>{l(T)||e(a)});var s=g(r,2);{let e=G(()=>({remember:l(o)}));Ie(s,{get login(){return n.login},get params(){return l(e)}})}c(e,t)};d(A,e=>{l(w)&&e(N)});var P=g(A,2),V=e=>{i(e)};d(P,e=>{!l(T)&&!l(w)&&(l(y)||l(h))&&e(V)});var H=g(P,2),te=e=>{var t=ln(),r=p(t),i=U(r,!0),a=g(r,2),o=U(a,!0),s=g(a,2),u=U(s,!0);K(t),m((e,t)=>{I(i,l(v).code),I(o,e),I(u,t)},[()=>n.login.t(`approval_code`),()=>n.login.t(`approval_waiting`)]),c(e,t)},W=e=>{var t=cn(),r=_(t),i=e=>{var t=un(),r=U(t,!0);m(e=>I(r,e),[()=>n.login.t(`approval_expired`)]),c(e,t)};d(r,e=>{l(v)?.state===`expired`&&e(i)});var a=g(r,2);{let e=G(()=>l(v)?n.login.t(`approval_again`):n.login.t(`use_trusted_device`));Z(a,{get login(){return n.login},plain:!0,get label(){return l(e)},onclick:()=>n.login.submit(`approval:request`,{})})}c(e,t)};d(H,e=>{l(y)?e(te):l(u).trustedDevice&&e(W,1)});var ne=g(H,2);q(ne,17,()=>Object.entries(l(f)),([e,t])=>e,(e,t)=>{var r=G(()=>ee(l(t),2));let i=()=>l(r)[0],a=()=>l(r)[1];var o=F(),s=_(o),u=e=>{var t=F(),r=_(t),a=e=>{{let t=G(()=>n.login.t(`send_again`));Z(e,{get login(){return n.login},plain:!0,get label(){return l(t)},onclick:()=>z(i())})}};d(r,e=>{l(b).resendable&&e(a)}),c(e,t)},f=e=>{{let t=G(()=>n.login.t(`send_${i()}`,{to:a()}));Z(e,{get login(){return n.login},plain:!0,get label(){return l(t)},onclick:()=>z(i())})}};d(s,e=>{l(b)?.factor===i()?e(u):e(f,-1)}),c(e,o)});var J=g(ne,2),Y=e=>{{let t=G(()=>n.login.t(`use_app`));Z(e,{get login(){return n.login},plain:!0,get label(){return l(t)},onclick:()=>E(s,!0)})}};d(J,e=>{l(b)&&l(u).otp&&e(Y)});var X=g(J,2),re=e=>{{let t=G(()=>n.login.t(`use_backup_code`));Z(e,{get login(){return n.login},plain:!0,get label(){return l(t)},onclick:()=>n.login.submit(`use-backup-code`,{})})}};d(X,e=>{n.login.backupCodes&&e(re)});var ie=g(X,2);r(ie),c(e,t)};d(te,e=>{l(D)?e(ne):e(J,-1)}),c(e,V),k()}var pn=y(`<div class="auth-solo"><!></div>`),mn=y(`<div class="over"><!> <!></div>`);function hn(e,t){H(t,!0);let n=G(()=>t.login.client?.name??``),r=G(()=>l(n)?t.login.t(`heading_to`,{client:l(n)}):t.login.t(`heading`));var i=mn(),a=p(i),o=e=>{var n=pn();gt(p(n),{get client(){return t.login.client}}),K(n),c(e,n)};d(a,e=>{l(n)&&e(o)});var s=g(a,2);{let e=G(()=>t.login.t(`waiting`));Q(s,{get login(){return t.login},get title(){return l(r)},busy:!0,get lede(){return l(e)}})}K(i),c(e,i),k()}var gn=y(`<p class="prompt-lede"> </p>`),_n=y(`<!> <div class="prompt-head"><h2 class="prompt-title"> </h2> <!></div>`,1),vn=y(`<!> <!>`,1);function yn(e,t){H(t,!0);let n=P(t,`lede`,3,null),r=P(t,`tone`,3,null);var i=F(),a=_(i),o=e=>{var r=_n(),i=_(r);{let e=G(()=>t.login.actor?.identifier??``);Me(i,{get login(){return t.login},get mark(){return l(e)}})}var a=g(i,2),o=p(a),s=U(o,!0),u=g(o,2),f=e=>{var t=gn(),r=U(t,!0);m(()=>I(r,n())),c(e,t)};d(u,e=>{n()&&e(f)}),K(a),m(()=>I(s,t.title)),c(e,r)},s=e=>{var i=vn(),a=_(i);Q(a,{get login(){return t.login},get title(){return t.title},get lede(){return n()},get tone(){return r()}}),De(g(a,2),{get login(){return t.login}}),c(e,i)};d(a,e=>{t.login.auth.signingUp?e(o):e(s,-1)}),c(e,i),k()}var bn=y(`<!> <form class="flow"><label class="field"><span class="field-label"> </span> <input type="tel" name="phone" class="control" autocomplete="tel" placeholder="+15551234567"/> <span class="field-hint"> </span></label> <!></form>`,1);function xn(e,t){H(t,!0);let n=O(``),r=G(()=>/^\+?[\d\s().-]{7,}$/.test(l(n).trim()));function i(e){e.preventDefault(),l(r)&&!t.login.loading&&t.login.submit(`confirm:add-phone`,{phone:l(n)})}var a=bn(),o=_(a);{let e=G(()=>t.login.t(`title`)),n=G(()=>t.login.t(`lede`));yn(o,{get login(){return t.login},get title(){return l(e)},get lede(){return l(n)}})}var s=g(o,2),u=p(s),d=p(u),f=U(d,!0),h=g(d,2);j(h),B(h,!0);var v=g(h,2),y=U(v,!0);K(u);var b=g(u,2);{let e=G(()=>t.login.t(`continue`)),n=G(()=>t.login.t(`working`));Z(b,{get login(){return t.login},type:`submit`,get ready(){return l(r)},get busy(){return t.login.loading},get label(){return l(e)},get working(){return l(n)}})}K(s),m((e,n)=>{M(s,`aria-busy`,t.login.loading||void 0),I(f,e),I(y,n)},[()=>t.login.t(`phone`),()=>t.login.t(`hint`)]),x(`submit`,s,i),L(h,()=>l(n),e=>E(n,e)),c(e,a),k()}var Sn=y(`<!> <p class="waiting aside"> </p> <!>`,1);function Cn(e,t){H(t,!0),C(()=>{let e=setInterval(()=>{t.login.loading||t.login.submit(`confirm:check`,{})},15e3);return()=>clearInterval(e)});var n=Sn(),r=_(n);{let e=G(()=>t.login.t(`title`)),n=G(()=>t.login.t(`lede`));yn(r,{get login(){return t.login},get title(){return l(e)},get lede(){return l(n)}})}var i=g(r,2),a=U(i,!0),o=g(i,2);{let e=G(()=>t.login.t(`check`));Z(o,{get login(){return t.login},quiet:!0,get label(){return l(e)},get busy(){return t.login.loading},onclick:()=>t.login.submit(`confirm:check`,{})})}m(e=>I(a,e),[()=>t.login.t(`waiting`)]),c(e,n),k()}var wn=y(`<p class="note note-warn" role="alert"> </p>`),Tn=y(`<p class="waiting aside"> </p>`),En=y(`<!> <!> <!>`,1);function Dn(e,t){H(t,!0);let n=G(()=>t.login.auth.confirmation??{}),r=G(()=>l(n).mode===`link`);C(()=>{if(!l(r))return;let e=setInterval(()=>{t.login.loading||t.login.submit(`confirm:check`,{})},5e3);return()=>clearInterval(e)});var i=En(),a=_(i);{let e=G(()=>t.login.t(`title`)),i=G(()=>t.login.t(l(r)?`lede_link`:`lede`,{email:l(n).email}));yn(a,{get login(){return t.login},get title(){return l(e)},get lede(){return l(i)}})}var o=g(a,2),s=e=>{var n=wn(),r=U(n,!0);m(e=>I(r,e),[()=>t.login.t(`no_mailer`)]),c(e,n)},u=e=>{var n=Tn(),r=U(n,!0);m(e=>I(r,e),[()=>t.login.t(`waiting`)]),c(e,n)},f=e=>{Ft(e,{get login(){return t.login},event:`confirm:email`})};d(o,e=>{l(n).mails?l(r)?e(u,1):e(f,-1):e(s)});var p=g(o,2),h=e=>{It(e,{get login(){return t.login}})};d(p,e=>{l(n).mails&&e(h)}),c(e,i),k()}var On=y(`<!> <!>`,1),kn=y(`<p class="note note-warn" role="alert"> </p>`),An=y(`<!> <!> <!>`,1);function jn(e,t){H(t,!0);let n=G(()=>t.login.auth.confirmation??{});var r=An(),i=_(r);{let e=G(()=>t.login.t(`title`)),r=G(()=>t.login.t(`lede`,{phone:l(n).phone}));yn(i,{get login(){return t.login},get title(){return l(e)},get lede(){return l(r)}})}var a=g(i,2),o=e=>{var n=On(),r=_(n);Ft(r,{get login(){return t.login},event:`confirm:phone`}),It(g(r,2),{get login(){return t.login}}),c(e,n)},s=e=>{var n=kn(),r=U(n,!0);m(e=>I(r,e),[()=>t.login.t(`no_texts`)]),c(e,n)};d(a,e=>{l(n).texts?e(o):e(s,-1)});var u=g(a,2);{let e=G(()=>t.login.t(`change_phone`));Z(u,{get login(){return t.login},plain:!0,get label(){return l(e)},onclick:()=>t.login.submit(`confirm:change-phone`,{})})}c(e,r),k()}var Mn=512,Nn=new TextEncoder,Pn=new Map;function Fn(e){let t=new Uint8Array(e),n=0;for(let e of t)if(e===0)n+=8;else return n+Math.clz32(e)-24;return n}async function In({nonce:e,bits:t}){for(let n=0;;n+=Mn){let r=(await Promise.all(Array.from({length:Mn},(t,r)=>crypto.subtle.digest(`SHA-256`,Nn.encode(`${e}${n+r}`))))).findIndex(e=>Fn(e)>=t);if(r>=0)return String(n+r)}}function Ln(e){return e?(Pn.has(e.token)||Pn.set(e.token,In(e).then(t=>({work:e.token,work_counter:t}))),Pn.get(e.token)):Promise.resolve(null)}var Rn=y(`<label><span class="ledger-label"> </span> <input type="password" name="token" class="control" autocomplete="off"/> <!></label>`),zn=y(`<label><span class="ledger-label"> </span> <input type="email" name="email" class="control" autocomplete="email"/> <!></label>`),Bn=y(`<label><span class="ledger-label"> </span> <input type="text" name="nickname" class="control" autocomplete="username" autocapitalize="none" autocorrect="off" spellcheck="false"/> <!></label>`),Vn=y(`<span class="field-hint"> </span>`),Hn=y(`<div class="ledger-row"><button type="button" class="textlink ledger-link"> </button> <!></div>`),Un=y(`<label><span class="ledger-label"> </span> <input type="tel" name="phone" class="control" autocomplete="tel" placeholder="+15551234567"/> <!></label>`),Wn=y(`<a class="textlink" rel="noopener" target="_blank"> </a>`),Gn=y(`<p class="aside"> <!></p>`),Kn=y(`<p class="aside"> <button type="button" class="textlink"> </button></p>`),qn=y(`<div><!> <form class="flow"><div class="slab"><!> <label><span class="ledger-label"> </span> <input type="text" name="name" class="control" autocomplete="name"/></label> <!> <!> <!></div> <!></form> <!></div>`);function Jn(e,t){H(t,!0);let n=G(()=>t.login.auth.signup??{}),r=G(()=>l(n).asks??{}),i=G(()=>new Set(l(n).fixed??[])),a=G(()=>!!t.login.auth.signingUp?.firstRun),o=G(()=>t.login.auth.docs),s=typeof location>`u`?``:location.origin,u=w(()=>t.login.auth.signup??{}),f=O(``),h=O(D(u.nickname??``)),_=O(D(u.email??``)),y=O(D(u.name??``)),b=O(D(u.phone??``)),S=O(!1),T=O(D(!!u.nickname)),A=e=>e.trim().length>0,N=(e,t)=>l(r)[e]!==`required`||A(t),P=G(()=>l(_).split(`@`)[0].toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)),F=G(()=>l(r).nickname!==`off`),R=G(()=>l(F)&&(l(T)||l(r).email===`off`||(t.login.auth.messages??[]).some(e=>e.field===`nickname`))),z=G(()=>l(R)?l(h):l(F)?l(P):``),V=G(()=>(!l(n).token||A(l(f)))&&N(`nickname`,l(z))&&N(`email`,l(_))&&N(`phone`,l(b))&&(A(l(z))||A(l(_))));C(()=>{Ln(l(n).work).catch(()=>null)});async function ee(){E(S,!0);try{return await Ln(l(n).work)??{}}catch{return{}}finally{E(S,!1)}}async function te(e){if(e.preventDefault(),l(V)&&!t.login.loading&&!l(S)){let e=await ee();t.login.submit(`signup`,{token:l(f),nickname:l(z),email:l(_),name:l(y),phone:l(b),...e})}}var W=qn();let ne;var q=p(W);Me(q,{get login(){return t.login},at:1});var J=g(q,2),X=p(J),re=p(X),ie=e=>{var n=Rn();let r;var i=p(n),a=U(i,!0),o=g(i,2);j(o),B(o,!0);var s=g(o,2);{let e=G(()=>t.login.t(`token_hint`));$(s,{get login(){return t.login},field:`token`,get hint(){return l(e)}})}K(n),m((e,t)=>{r=Y(n,1,`ledger-row ledger-step`,null,r,{"ledger-step-done":e}),I(a,t)},[()=>A(l(f)),()=>t.login.t(`token`)]),L(o,()=>l(f),e=>E(f,e)),c(e,n)};d(re,e=>{l(n).token&&e(ie)});var ae=g(re,2);let oe;var se=p(ae),ce=U(se,!0),le=g(se,2);j(le),B(le,!l(n).token),K(ae);var ue=g(ae,2),de=e=>{var n=zn();let r;var a=p(n),o=U(a,!0),s=g(a,2);j(s),$(g(s,2),{get login(){return t.login},field:`email`}),K(n),m((e,t,i)=>{r=Y(n,1,`ledger-row ledger-step`,null,r,{"ledger-step-done":e}),I(o,t),s.readOnly=i},[()=>A(l(_)),()=>t.login.t(`email`),()=>l(i).has(`email`)]),L(s,()=>l(_),e=>E(_,e)),c(e,n)};d(ue,e=>{l(r).email!==`off`&&e(de)});var fe=g(ue,2),pe=e=>{var n=Bn();let r;var i=p(n),a=U(i,!0),o=g(i,2);j(o),$(g(o,2),{get login(){return t.login},field:`nickname`}),K(n),m((e,t)=>{r=Y(n,1,`ledger-row ledger-step`,null,r,{"ledger-step-done":e}),I(a,t),M(o,`placeholder`,l(P))},[()=>A(l(h)),()=>t.login.t(`nickname`)]),L(o,()=>l(h),e=>E(h,e)),c(e,n)},me=e=>{var n=Hn(),r=p(n),i=U(r,!0),a=g(r,2),o=e=>{var n=Vn(),r=U(n,!0);m(e=>I(r,e),[()=>t.login.t(`nickname_hint`,{suggested:l(P)})]),c(e,n)};d(a,e=>{l(P)&&e(o)}),K(n),m(e=>I(i,e),[()=>t.login.t(`pick_nickname`)]),v(`click`,r,()=>E(T,!0)),c(e,n)};d(fe,e=>{l(R)?e(pe):l(F)&&e(me,1)});var he=g(fe,2),ge=e=>{var n=Un();let r;var i=p(n),a=U(i,!0),o=g(i,2);j(o),$(g(o,2),{get login(){return t.login},field:`phone`}),K(n),m((e,t)=>{r=Y(n,1,`ledger-row ledger-step`,null,r,{"ledger-step-done":e}),I(a,t)},[()=>A(l(b)),()=>t.login.t(`phone`)]),L(o,()=>l(b),e=>E(b,e)),c(e,n)};d(he,e=>{l(r).phone!==`off`&&e(ge)}),K(X);var Q=g(X,2);{let e=G(()=>t.login.loading||l(S)),n=G(()=>t.login.t(`continue`)),r=G(()=>l(S)?t.login.t(`proving`):t.login.t(`working`));Z(Q,{get login(){return t.login},type:`submit`,get ready(){return l(V)},get busy(){return l(e)},get label(){return l(n)},get working(){return l(r)}})}K(J);var _e=g(J,2),ve=e=>{var n=Gn(),r=p(n),i=g(r),a=e=>{var n=Wn(),r=U(n,!0);m(e=>{M(n,`href`,l(o)),I(r,e)},[()=>t.login.t(`docs`)]),c(e,n)};d(i,e=>{l(o)&&e(a)}),K(n),m((e,t)=>I(r,`${e??``}
4
+ ${t??``} `),[()=>t.login.t(`origin`,{origin:s}),()=>t.login.t(`once`)]),c(e,n)},ye=e=>{var n=Kn(),r=p(n),i=g(r),a=U(i,!0);K(n),m((e,n)=>{I(r,`${e??``} `),i.disabled=t.login.loading,I(a,n)},[()=>t.login.t(`have_account`),()=>t.login.t(`sign_in_instead`)]),v(`click`,i,()=>t.login.startOver()),c(e,n)};d(_e,e=>{l(a)?e(ve):e(ye,-1)}),K(W),m((e,n)=>{ne=Y(W,1,`setup flow`,null,ne,{"setup-ready":l(V)}),M(J,`aria-busy`,t.login.loading||void 0),oe=Y(ae,1,`ledger-row ledger-step`,null,oe,{"ledger-step-done":e}),I(ce,n)},[()=>A(l(y)),()=>t.login.t(`name`)]),x(`submit`,J,te),L(le,()=>l(y),e=>E(y,e)),c(e,W),k()}h([`click`]);var Yn=y(`<div class="ledger-row ledger-row-aside"><span class="ledger-label"> </span> <span class="ledger-value"> </span> <button type="button" class="textlink ledger-aside"> </button></div>`),Xn=y(`<button type="button" role="radio" class="credential-way"> </button>`),Zn=y(`<div class="ledger-row"><span class="ledger-label" id="credential-way"> </span> <div class="credential-ways" role="radiogroup" aria-labelledby="credential-way"></div></div>`),Qn=y(`<label><span class="ledger-label"> </span> <input type="password" name="password" class="control" autocomplete="new-password"/> <!></label> <label><span class="ledger-label"> </span> <input type="password" name="password_confirmation" class="control" autocomplete="new-password"/> <!></label>`,1),$n=y(`<p class="aside"> </p>`),er=y(`<p class="aside aside-bad" role="alert"> </p>`),tr=y(`<div class="flow-tight"><p class="aside"> </p> <!> <!> <!></div>`),nr=y(`<p class="note note-warn" role="alert"> </p>`),rr=y(`<a class="textlink" rel="noopener" target="_blank"> </a>`),ir=y(`<p class="aside"> <!></p>`),ar=y(`<div><!> <form class="flow"><div class="slab"><!> <!> <!></div> <!></form> <!> <!></div>`);function or(n,i){H(i,!0);let a=G(()=>i.login.auth.signup??{}),o=G(()=>l(a).credentials??{password:!0,passkey:!1}),s=G(()=>!!i.login.auth.signingUp?.firstRun),u=G(()=>l(a).minimum??8),f=G(()=>i.login.auth.docs),h=G(()=>!!l(o).passkey&&t()),y=G(()=>l(s)?i.login.t(`submit_first_run`):i.login.t(`submit_signup`)),b=G(()=>[[`name`,l(a).name],[`nickname`,l(a).nickname],[`email`,l(a).email],[`phone`,l(a).phone]].filter(([,e])=>e)),S=O(null),C=G(()=>l(S)??(l(h)?`passkey`:`password`)),w=G(()=>!!l(o).password&&l(h)),T=G(()=>!!l(o).password&&(!l(h)||l(C)===`password`)),D=G(()=>l(h)&&(!l(o).password||l(C)===`passkey`)),A=O(``),N=O(``),P=O(!1),F=O(null),R=G(()=>l(A).length>=l(u)),z=G(()=>l(R)&&l(N)===l(A));function V(e){e.preventDefault(),l(z)&&!i.login.loading&&i.login.submit(`signup`,{password:l(A),password_confirmation:l(N)})}async function te(){E(P,!0),E(F,null);try{let t=(await i.login.submit(`signup:passkey-challenge`,{})).signup?.passkeyOptions;if(!t){E(F,i.login.t(`passkey_unoffered`),!0);return}await i.login.submit(`signup:passkey`,{passkey:await e(t)})}catch(e){r(e)||E(F,i.login.t(`passkey_unusable`),!0)}finally{E(P,!1)}}var W=ar();let ne;var J=p(W);Me(J,{get login(){return i.login},at:2});var X=g(J,2),re=p(X),ie=p(re);q(ie,17,()=>l(b),([e,t])=>e,(e,t)=>{var n=G(()=>ee(l(t),2));let r=()=>l(n)[0],a=()=>l(n)[1];var o=Yn(),s=p(o),u=U(s,!0),d=g(s,2),f=U(d,!0),h=g(d,2),_=U(h,!0);K(o),m((e,t)=>{I(u,e),I(f,a()),h.disabled=i.login.loading,I(_,t)},[()=>i.login.t(r()),()=>i.login.t(`edit`)]),v(`click`,h,()=>i.login.submit(`signup-edit`)),c(e,o)});var ae=g(ie,2),oe=e=>{var t=Zn(),n=p(t),r=U(n,!0),a=g(n,2);q(a,21,()=>[[`passkey`,i.login.t(`way_passkey`)],[`password`,i.login.t(`way_password`)]],([e,t])=>e,(e,t)=>{var n=G(()=>ee(l(t),2));let r=()=>l(n)[0],a=()=>l(n)[1];var o=Xn(),s=U(o,!0);m(()=>{M(o,`aria-checked`,l(C)===r()),o.disabled=i.login.loading||l(P),I(s,a())}),v(`click`,o,()=>E(S,r(),!0)),c(e,o)}),K(a),K(t),m(e=>I(r,e),[()=>i.login.t(`way`)]),c(e,t)};d(ae,e=>{l(w)&&e(oe)});var se=g(ae,2),ce=e=>{var t=Qn(),n=_(t);let r;var a=p(n),o=U(a,!0),s=g(a,2);j(s),B(s,!l(w));var d=g(s,2);{let e=G(()=>i.login.t(`password_hint`,{minimum:l(u)}));$(d,{get login(){return i.login},field:`password`,get hint(){return l(e)}})}K(n);var f=g(n,2);let h;var v=p(f),y=U(v,!0),b=g(v,2);j(b),$(g(b,2),{get login(){return i.login},field:`password_confirmation`}),K(f),m((e,t)=>{r=Y(n,1,`ledger-row ledger-step`,null,r,{"ledger-step-done":l(R)}),I(o,e),h=Y(f,1,`ledger-row ledger-step`,null,h,{"ledger-step-done":l(z)}),I(y,t)},[()=>i.login.t(`password`),()=>i.login.t(`confirm`)]),L(s,()=>l(A),e=>E(A,e)),L(b,()=>l(N),e=>E(N,e)),c(e,t)};d(se,e=>{l(T)&&e(ce)}),K(re);var le=g(re,2),ue=e=>{{let t=G(()=>i.login.loading&&!l(P)),n=G(()=>i.login.t(`working`));Z(e,{get login(){return i.login},type:`submit`,get ready(){return l(z)},get busy(){return l(t)},get label(){return l(y)},get working(){return l(n)}})}};d(le,e=>{l(T)&&e(ue)}),K(X);var de=g(X,2),fe=e=>{var t=tr(),n=p(t),r=U(n),a=g(n,2);{let e=G(()=>i.login.t(`create_passkey`)),t=G(()=>i.login.t(`waiting_for_passkey`));Z(a,{get login(){return i.login},get busy(){return l(P)},get label(){return l(e)},get working(){return l(t)},onclick:te})}var o=g(a,2),s=e=>{var t=$n(),n=U(t,!0);m(e=>I(n,e),[()=>i.login.t(`passkey_hint`)]),c(e,t)};d(o,e=>{l(P)&&e(s)});var u=g(o,2),f=e=>{var t=er(),n=U(t,!0);m(()=>I(n,l(F))),c(e,t)};d(u,e=>{l(F)&&e(f)}),K(t),m((e,t)=>I(r,`${e??``} ${t??``}`),[()=>i.login.t(`passkey_lede`),()=>i.login.t(`passkey_later`)]),c(e,t)},pe=e=>{var t=nr(),n=U(t,!0);m(e=>I(n,e),[()=>i.login.t(`no_passkeys`)]),c(e,t)};d(de,e=>{l(D)?e(fe):l(o).password||e(pe,1)});var me=g(de,2),he=e=>{var t=ir(),n=p(t),r=g(n),a=e=>{var t=rr(),n=U(t,!0);m(e=>{M(t,`href`,l(f)),I(n,e)},[()=>i.login.t(`docs`)]),c(e,t)};d(r,e=>{l(f)&&e(a)}),K(t),m(e=>I(n,`${e??``} `),[()=>i.login.t(`once`)]),c(e,t)};d(me,e=>{l(s)&&e(he)}),K(W),m(()=>{ne=Y(W,1,`setup flow`,null,ne,{"setup-ready":l(T)?l(z):l(D)}),M(X,`aria-busy`,i.login.loading||void 0)}),x(`submit`,X,V),c(n,W),k()}h([`click`]);var sr=y(`<a class="textlink" rel="noopener" target="_blank"> </a>`),cr=y(`<div><!> <form class="flow"><div class="slab"><label><span class="ledger-label"> </span> <input type="text" name="called" class="control"/> <span class="field-hint"> </span></label></div> <!></form> <p class="aside"> <!></p></div>`);function lr(e,t){H(t,!0);let n=G(()=>t.login.auth.docs),r=typeof location>`u`?``:location.origin,i=O(D(w(()=>t.login.auth.configure?.called??``))),a=G(()=>l(i).trim().length>0);function o(e){e.preventDefault(),l(a)&&!t.login.loading&&t.login.submit(`setup-configure`,{called:l(i)})}var s=cr();let u;var f=p(s);Me(f,{get login(){return t.login},at:3});var h=g(f,2),_=p(h),v=p(_);let y;var b=p(v),S=U(b,!0),C=g(b,2);j(C),B(C,!0);var T=g(C,2),A=U(T,!0);K(v),K(_);var N=g(_,2);{let e=G(()=>t.login.t(`submit`)),n=G(()=>t.login.t(`working`));Z(N,{get login(){return t.login},type:`submit`,get ready(){return l(a)},get busy(){return t.login.loading},get label(){return l(e)},get working(){return l(n)}})}K(h);var P=g(h,2),F=p(P),R=g(F),z=e=>{var r=sr(),i=U(r,!0);m(e=>{M(r,`href`,l(n)),I(i,e)},[()=>t.login.t(`docs`)]),c(e,r)};d(R,e=>{l(n)&&e(z)}),K(P),K(s),m((e,n,r,i)=>{u=Y(s,1,`setup flow`,null,u,{"setup-ready":l(a)}),M(h,`aria-busy`,t.login.loading||void 0),y=Y(v,1,`ledger-row ledger-step`,null,y,{"ledger-step-done":l(a)}),I(S,e),I(A,n),I(F,`${r??``}
5
+ ${i??``} `)},[()=>t.login.t(`called`),()=>t.login.t(`called_hint`),()=>t.login.t(`origin`,{origin:r}),()=>t.login.t(`once`)]),x(`submit`,h,o),L(C,()=>l(i),e=>E(i,e)),c(e,s),k()}var ur=y(`<div class="over"><!> <!></div>`),dr=y(`<!> <div><!></div>`,1);function fr(e,t){H(t,!0);let n={signup:Jn,"signup-credentials":or,"setup-configure":lr,"accept-invitation":Te,identify:Xt,"prove-email":en,"reset-password":nn,"first-factor":Gt,"email-code":Rt,"second-factor":fn,"backup-code":rt,enrol:tt,"confirm-email":Dn,"confirm-phone":jn,"add-phone":xn,"awaiting-approval":Cn,"choose-organization":pt,consent:Nt,settled:hn},r=ue(w(()=>t.auth)),i=G(()=>n[r.prompt]),a=O(null),o=O(!1),s=O(0),u=()=>typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches;T(()=>{r.prompt;let e=w(()=>u()?0:l(a)?.offsetHeight??0);E(s,e,!0),E(o,e>0)}),C(()=>{let e=r.auth.surface??`challenge`,t=r.prompt===`settled`&&!!r.client?.name,n=document.querySelector(`.auth-col`);if(n){for(let t of[`challenge`,`grant`])n.classList.toggle(`surface-${t}`,t===e);document.querySelector(`.auth-id`)?.toggleAttribute(`hidden`,e!==`challenge`||t)}}),C(()=>{r.prompt;let e=l(a),t=w(()=>l(s));if(!e||!t)return;let n=e.offsetHeight;n!==t&&(e.classList.add(`gate-moving`),e.animate([{height:`${t}px`},{height:`${n}px`}],{duration:300,easing:`cubic-bezier(0.2, 0.8, 0.2, 1)`}).finished.catch(()=>{}).then(()=>e.classList.remove(`gate-moving`)));let i=setTimeout(()=>{E(o,!1)},500);return()=>clearTimeout(i)});var h=dr(),v=_(h);be(v,{get login(){return r}});var y=g(v,2);let b;var x=p(y);f(x,()=>r.prompt,e=>{var t=F(),n=_(t),a=e=>{var t=F(),n=_(t);J(n,()=>l(i),(e,t)=>{t(e,{get login(){return r}})}),c(e,t)},o=e=>{var t=ur(),n=p(t);{let e=G(()=>r.t(`halted`)),t=G(()=>r.t(`halted_lede`));Q(n,{get login(){return r},tone:`bad`,get title(){return l(e)},get lede(){return l(t)}})}var i=g(n,2);{let e=G(()=>r.t(`start_over`)),t=G(()=>r.t(`working`));Z(i,{get login(){return r},quiet:!0,get label(){return l(e)},get working(){return l(t)},get busy(){return r.loading},onclick:()=>r.startOver()})}K(t),c(e,t)};d(n,e=>{l(i)?e(a):e(o,-1)}),c(e,t)}),K(y),V(y,e=>E(a,e),()=>l(a)),m(()=>b=Y(y,1,`gate`,null,b,{"gate-enter":l(o)})),c(e,h),k()}var pr=new Set([`hidden`,`checkbox`,`radio`,`submit`,`button`]);function mr(e){return[...e.querySelectorAll(`input[name]`)].filter(e=>!pr.has(e.type)&&e.value).map(e=>({name:e.name,value:e.value,focused:e===e.ownerDocument.activeElement}))}function hr(e,t){for(let{name:n,value:r,focused:i}of t){let t=e.querySelector(`input[name="${CSS.escape(n)}"]`);!t||pr.has(t.type)||t.value||(t.value=r,t.dispatchEvent(new Event(`input`,{bubbles:!0})),i&&t.focus())}}var gr=document.getElementById(`login`);if(gr){let e=JSON.parse(gr.dataset.auth),t=mr(gr);gr.replaceChildren(),b(fr,{target:gr,props:{auth:e}}),s(),hr(gr,t)}
6
+ //# sourceMappingURL=login-BDggujiZ.js.map