masks-server 0.12.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/concerns/masks/server/scim_endpoint.rb +2 -2
- data/app/controllers/masks/server/account_exports_controller.rb +2 -2
- data/app/controllers/masks/server/addresses_controller.rb +2 -3
- data/app/controllers/masks/server/authenticator_apps_controller.rb +2 -3
- data/app/controllers/masks/server/authorize_controller.rb +2 -2
- data/app/controllers/masks/server/device_authorizations_controller.rb +2 -2
- data/app/controllers/masks/server/device_verifications_controller.rb +2 -2
- data/app/controllers/masks/server/enrollments_controller.rb +4 -4
- data/app/controllers/masks/server/forward_auth_controller.rb +2 -2
- data/app/controllers/masks/server/introspections_controller.rb +2 -2
- data/app/controllers/masks/server/logins_controller.rb +10 -12
- data/app/controllers/masks/server/manage_controller.rb +1 -0
- data/app/controllers/masks/server/organization_members_controller.rb +2 -2
- data/app/controllers/masks/server/passwords_controller.rb +2 -3
- data/app/controllers/masks/server/pushed_authorizations_controller.rb +2 -2
- data/app/controllers/masks/server/received_signals_controller.rb +2 -2
- data/app/controllers/masks/server/registrations_controller.rb +2 -2
- data/app/controllers/masks/server/revocations_controller.rb +2 -2
- data/app/controllers/masks/server/saml_controller.rb +2 -2
- data/app/controllers/masks/server/scim/metadata_controller.rb +1 -1
- data/app/controllers/masks/server/sign_in_approvals_controller.rb +2 -3
- data/app/controllers/masks/server/tokens_controller.rb +2 -2
- data/app/controllers/masks/server/verifications_controller.rb +2 -3
- data/app/graphql/masks/server/manage/types/health_check_type.rb +1 -1
- data/app/ldap/masks/server/ldap/gate.rb +14 -16
- data/app/models/masks/server/app_passwords.rb +7 -13
- data/app/models/masks/server/app_preset.rb +1 -1
- data/app/models/masks/server/client.rb +24 -0
- data/app/models/masks/server/client_metadata_document.rb +4 -8
- data/app/models/masks/server/confirmation_code.rb +2 -2
- data/app/models/masks/server/declared.rb +3 -1
- data/app/models/masks/server/event.rb +2 -2
- data/app/models/masks/server/health.rb +70 -3
- data/app/models/masks/server/saml_identity/farewells.rb +1 -0
- data/app/models/masks/server/tenant.rb +48 -4
- data/app/models/masks/server/throttle.rb +165 -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/de/manage/health.yml +9 -2
- 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/en/manage/health.yml +9 -2
- 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/es/manage/health.yml +9 -2
- 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/config/locales/fr/manage/health.yml +9 -2
- data/db/migrate/20261031100000_default_key_rotation_to_ninety_days.rb +5 -0
- data/lib/generators/masks/server/install/install_generator.rb +19 -0
- data/lib/masks/server/configuration.rb +14 -8
- data/lib/masks/server/engine.rb +2 -1
- data/lib/masks/server/forwarding.rb +26 -3
- data/lib/masks/server/schema_reference.rb +1 -1
- data/lib/masks/server/tenancy/middleware.rb +4 -7
- data/lib/masks/server/tenant_isolation.rb +12 -0
- 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 +8 -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
|
@@ -6,7 +6,6 @@ module Masks
|
|
|
6
6
|
MOVED = "masks answers at %s. To serve it at another address, set MASKS_PUBLIC_ORIGIN_TEMPLATE to that address.".freeze
|
|
7
7
|
UNKEPT = "This tenant was set up without a kept address. Set MASKS_PUBLIC_ORIGIN_TEMPLATE to the address it answers at.".freeze
|
|
8
8
|
CROWDED = "too many tenants were claimed recently; try again later".freeze
|
|
9
|
-
CLAIM_WINDOW = 1.hour
|
|
10
9
|
TENANTLESS = %w[/up /metrics].freeze
|
|
11
10
|
TLS_ASK = "/tls/allowed".freeze
|
|
12
11
|
|
|
@@ -94,18 +93,16 @@ module Masks
|
|
|
94
93
|
end
|
|
95
94
|
|
|
96
95
|
def crowded?(request)
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
from_anywhere = ::Rails.cache.increment("tenant-claims:#{window}", 1, expires_in: CLAIM_WINDOW)
|
|
96
|
+
here = Throttle.crowded?(:claim, "claims:#{request.remote_ip}")
|
|
97
|
+
anywhere = Throttle.crowded?(:claim_ceiling, "claims")
|
|
100
98
|
|
|
101
|
-
|
|
102
|
-
from_anywhere.to_i > ::Rails.configuration.masks.claim_ceiling
|
|
99
|
+
(here || anywhere).tap { |crowded| Throttle.hit!(here ? :claim : :claim_ceiling, address: request.remote_ip) if crowded }
|
|
103
100
|
end
|
|
104
101
|
|
|
105
102
|
def crowded
|
|
106
103
|
[
|
|
107
104
|
429,
|
|
108
|
-
{ "content-type" => "text/plain; charset=utf-8", "cache-control" => "no-store", "retry-after" =>
|
|
105
|
+
{ "content-type" => "text/plain; charset=utf-8", "cache-control" => "no-store", "retry-after" => Throttle.budget(:claim).within.to_i.to_s },
|
|
109
106
|
[ CROWDED ]
|
|
110
107
|
]
|
|
111
108
|
end
|
|
@@ -4,11 +4,23 @@ module Masks
|
|
|
4
4
|
SETTING = "masks.tenant_id".freeze
|
|
5
5
|
|
|
6
6
|
def self.adopt(connection)
|
|
7
|
+
return unless masks?(connection)
|
|
8
|
+
|
|
7
9
|
connection.exec_query("SELECT set_config($1, $2, false)", "tenant", [ SETTING, Current.tenant&.id.to_s ])
|
|
8
10
|
rescue ActiveRecord::NoDatabaseError, ActiveRecord::ConnectionNotEstablished, ActiveRecord::ConnectionFailed
|
|
9
11
|
nil
|
|
10
12
|
end
|
|
11
13
|
|
|
14
|
+
def self.masks?(connection)
|
|
15
|
+
database = Server.config.database
|
|
16
|
+
|
|
17
|
+
return true if database.nil?
|
|
18
|
+
|
|
19
|
+
pool = connection.pool
|
|
20
|
+
|
|
21
|
+
pool.respond_to?(:db_config) && pool.db_config.name == database.to_s
|
|
22
|
+
end
|
|
23
|
+
|
|
12
24
|
def enable_row_level_security(table)
|
|
13
25
|
execute <<~SQL
|
|
14
26
|
ALTER TABLE #{table} ENABLE ROW LEVEL SECURITY;
|
|
@@ -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
|