masks-server 0.13.0 → 0.14.1
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.
- checksums.yaml +4 -4
- data/app/controllers/masks/server/manage_controller.rb +1 -0
- data/app/controllers/masks/server/scim/metadata_controller.rb +1 -1
- data/app/models/masks/server/app_preset.rb +1 -1
- data/app/models/masks/server/client.rb +24 -0
- data/app/views/masks/server/handshakes/show.html.erb +2 -8
- data/app/views/masks/server/logins/_consent.html.erb +43 -44
- data/app/views/masks/server/logins/_enrol.html.erb +1 -1
- data/app/views/masks/server/logins/_setup_configure.html.erb +2 -6
- data/app/views/masks/server/logins/_signup.html.erb +2 -9
- data/app/views/masks/server/logins/_signup_credentials.html.erb +1 -2
- data/app/views/masks/server/logins/_signup_head.html.erb +1 -11
- data/config/locales/de/account.yml +4 -4
- data/config/locales/de/handshakes.yml +6 -6
- data/config/locales/de/logins.yml +44 -30
- data/config/locales/en/account.yml +4 -4
- data/config/locales/en/handshakes.yml +6 -6
- data/config/locales/en/logins.yml +44 -30
- data/config/locales/es/account.yml +4 -4
- data/config/locales/es/handshakes.yml +6 -6
- data/config/locales/es/logins.yml +42 -28
- data/config/locales/fr/account.yml +4 -4
- data/config/locales/fr/handshakes.yml +6 -6
- data/config/locales/fr/logins.yml +43 -29
- data/lib/masks/server/schema_reference.rb +1 -1
- data/public/masks-assets/.vite/manifest.json +3 -3
- data/public/masks-assets/assets/app-Cfbt-A5V.css +2 -0
- data/public/masks-assets/assets/login-BDggujiZ.js +6 -0
- data/public/masks-assets/assets/login-BDggujiZ.js.map +1 -0
- data/public/masks-assets/assets/{manage-DpVxe5sv.js → manage-VgOqKj7N.js} +2 -2
- data/public/masks-assets/assets/manage-VgOqKj7N.js.map +1 -0
- data/version.txt +1 -1
- metadata +6 -6
- data/public/masks-assets/assets/app-BXOScMjL.css +0 -2
- data/public/masks-assets/assets/login-C21_jb6L.js +0 -4
- data/public/masks-assets/assets/login-C21_jb6L.js.map +0 -1
- 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: "
|
|
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: "
|
|
43
|
+
signup_title: "Créez votre compte"
|
|
44
44
|
token: "Jeton de configuration"
|
|
45
|
-
token_hint: "
|
|
46
|
-
origin: "
|
|
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: "
|
|
62
|
+
heading: "Se connecter"
|
|
61
63
|
heading_to: "Se connecter à %{client}"
|
|
62
|
-
identifier: "
|
|
63
|
-
signup_hint: "Nouveau ici ? Saisissez
|
|
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: "
|
|
80
|
-
title_passkey: "
|
|
81
|
-
trust: "
|
|
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
|
|
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: "
|
|
105
|
-
lede: "
|
|
106
|
-
lede_optional: "
|
|
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
|
|
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
|
|
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: "
|
|
133
|
+
send_code: "M'envoyer un code"
|
|
122
134
|
sent_to: "Envoyé à %{to}."
|
|
123
135
|
backup_codes: "Codes de secours"
|
|
124
|
-
backup_codes_waiting: "
|
|
125
|
-
backup_codes_hint: "
|
|
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
|
|
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
|
|
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: "
|
|
206
|
-
access: "
|
|
207
|
-
no_access: "
|
|
208
|
-
audience: "
|
|
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: "
|
|
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: "
|
|
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
|
|
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
|
|
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](/
|
|
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-
|
|
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-
|
|
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-
|
|
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(` <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
|