@shamar/adonis 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +75 -2
  2. package/assets/admin.css +1 -1
  3. package/dist/auth/ldap.d.ts +115 -0
  4. package/dist/auth/ldap.d.ts.map +1 -0
  5. package/dist/auth/ldap.js +275 -0
  6. package/dist/auth/ldap.js.map +1 -0
  7. package/dist/auth/masquerade.d.ts +31 -0
  8. package/dist/auth/masquerade.d.ts.map +1 -0
  9. package/dist/auth/masquerade.js +36 -0
  10. package/dist/auth/masquerade.js.map +1 -0
  11. package/dist/auth_login_view.d.ts +56 -0
  12. package/dist/auth_login_view.d.ts.map +1 -0
  13. package/dist/auth_login_view.js +56 -0
  14. package/dist/auth_login_view.js.map +1 -0
  15. package/dist/commands/commands.json +1 -0
  16. package/dist/commands/main.d.ts +4 -0
  17. package/dist/commands/main.js +36 -0
  18. package/dist/commands/publish_auth.d.ts +13 -0
  19. package/dist/commands/publish_auth.d.ts.map +1 -0
  20. package/dist/commands/publish_auth.js +26 -0
  21. package/dist/commands/publish_auth.js.map +1 -0
  22. package/dist/config.d.ts +32 -1
  23. package/dist/config.d.ts.map +1 -1
  24. package/dist/config.js.map +1 -1
  25. package/dist/configure.d.ts +16 -1
  26. package/dist/configure.d.ts.map +1 -1
  27. package/dist/configure.js +6 -0
  28. package/dist/configure.js.map +1 -1
  29. package/dist/context.d.ts +3 -0
  30. package/dist/context.d.ts.map +1 -1
  31. package/dist/controllers/admin_controller.d.ts.map +1 -1
  32. package/dist/controllers/admin_controller.js +14 -6
  33. package/dist/controllers/admin_controller.js.map +1 -1
  34. package/dist/index.d.ts +6 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +6 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/publish_auth.d.ts +45 -0
  39. package/dist/publish_auth.d.ts.map +1 -0
  40. package/dist/publish_auth.js +69 -0
  41. package/dist/publish_auth.js.map +1 -0
  42. package/dist/resources/api_key_resource.d.ts +4 -6
  43. package/dist/resources/api_key_resource.d.ts.map +1 -1
  44. package/dist/resources/api_key_resource.js +4 -16
  45. package/dist/resources/api_key_resource.js.map +1 -1
  46. package/dist/shamar/auth.d.ts +13 -1
  47. package/dist/shamar/auth.d.ts.map +1 -1
  48. package/dist/shamar/auth.js +42 -5
  49. package/dist/shamar/auth.js.map +1 -1
  50. package/dist/shamar/relation-fields.d.ts.map +1 -1
  51. package/dist/shamar/relation-fields.js +3 -2
  52. package/dist/shamar/relation-fields.js.map +1 -1
  53. package/dist/shamar/view-context.d.ts +8 -0
  54. package/dist/shamar/view-context.d.ts.map +1 -1
  55. package/dist/shamar/view-context.js +1 -0
  56. package/dist/shamar/view-context.js.map +1 -1
  57. package/package.json +15 -6
  58. package/resources/views/shamar/partials/nav.edge +6 -1
  59. package/resources/views/shamar/partials/shell-open.edge +14 -0
  60. package/resources/views/shamar/partials/topbar.edge +3 -0
  61. package/stubs/views/auth/layout.edge +244 -0
  62. package/stubs/views/auth/login.edge +65 -0
package/README.md CHANGED
@@ -20,6 +20,7 @@ pnpm add mongoose # MongoDB
20
20
  | `@adonisjs/lucid` `>=21` | `orm: 'lucid'` |
21
21
  | `mongoose` `>=8` | `orm: 'mongoose'` |
22
22
  | `edge.js` `>=6` | Rendering Edge views (usually already present) |
23
+ | `ldapts` `>=7` | LDAP login (`auth.loginMode` `ldap` / `both`) |
23
24
 
24
25
  Workspace packages pulled in automatically: `@shamar/core`, `@shamar/cherubim`, `@shamar/lucid`, `@shamar/mongoose`.
25
26
 
@@ -29,13 +30,47 @@ Workspace packages pulled in automatically: `@shamar/core`, `@shamar/cherubim`,
29
30
  node ace configure @shamar/adonis
30
31
  ```
31
32
 
32
- You choose **Lucid** or **Mongoose**. Codemods then:
33
+ You choose **Lucid** or **Mongoose**, then whether to publish the opinionated login page. Codemods then:
33
34
 
34
- 1. Register `@shamar/adonis/provider` in `adonisrc.ts`
35
+ 1. Register `@shamar/adonis/provider` and `@shamar/adonis/commands` in `adonisrc.ts`
35
36
  2. Write `config/shamar.ts` from the package stub
37
+ 3. Optionally publish `components/layouts/auth.edge` + `pages/auth/login.edge`
36
38
 
37
39
  Your app still owns the database connection (Lucid provider or `mongoose.connect`).
38
40
 
41
+ ### Publish auth views later
42
+
43
+ ```bash
44
+ node ace shamar:publish-auth
45
+ # overwrite without prompts:
46
+ node ace shamar:publish-auth --force
47
+ ```
48
+
49
+ Published views are host-owned — edit freely after publishing. Re-running asks for confirmation before overwriting.
50
+
51
+ Pass branding into the login view with `buildAuthLoginViewData(shamarConfig)` so fonts/colors match the admin shell:
52
+
53
+ ```ts
54
+ import { buildAuthLoginViewData } from '@shamar/adonis'
55
+ import shamarConfig from '#config/shamar'
56
+
57
+ return view.render('pages/auth/login', buildAuthLoginViewData(shamarConfig))
58
+ ```
59
+
60
+ Optional login copy (`auth.login`) — subtitle under the brand, footer under the form (hidden when empty):
61
+
62
+ ```ts
63
+ auth: {
64
+ loginMode: 'both',
65
+ login: {
66
+ subtitle: 'Sign in with your campus account',
67
+ footer: 'Need help? Contact ICT Support.', // omit or '' to hide
68
+ usernameLabel: 'Staff username',
69
+ usernamePlaceholder: 'jdoe or jdoe@strathmore.edu',
70
+ },
71
+ }
72
+ ```
73
+
39
74
  ## Quick start
40
75
 
41
76
  ```ts
@@ -49,6 +84,7 @@ export default defineConfig({
49
84
  panel('admin')
50
85
  .path('/admin')
51
86
  .discoverResources('app/resources/admin'),
87
+ // .allowUsersWithoutRoles() // opt in: empty role/permission users may enter
52
88
  ],
53
89
  })
54
90
  ```
@@ -154,9 +190,46 @@ auth: {
154
190
  protectApi: true, // RequireApiKeyMiddleware on /api/shamar
155
191
  intersectGatewayAbilities: true,
156
192
  },
193
+ // Password / LDAP login (host SessionController calls resolvePasswordLogin)
194
+ loginMode: 'both', // local | ldap | both (LDAP first, then local)
195
+ ldap: {
196
+ // existing (default): AD users must already exist locally with externalId sync UID
197
+ // create: auto-provision local users on first successful LDAP bind
198
+ provisioning: 'existing',
199
+ domains: [
200
+ {
201
+ id: 'corp',
202
+ url: 'ldaps://dc.corp.example',
203
+ bindDn: 'cn=svc,dc=corp,dc=example',
204
+ bindPassword: '…',
205
+ searchBase: 'dc=corp,dc=example',
206
+ searchFilter: '(uid={{username}})',
207
+ emailDomains: ['corp.example'],
208
+ netbios: 'CORP',
209
+ groupRoleMap: { 'CN=Admins,OU=Groups,DC=corp': 'adminRoleId' },
210
+ timeoutMs: 5_000, // ldapts operation timeout (default 10_000)
211
+ connectTimeoutMs: 5_000, // optional; defaults to timeoutMs
212
+ },
213
+ ],
214
+ },
157
215
  }
158
216
  ```
159
217
 
218
+ Install optional peer `ldapts` when enabling LDAP. Helpers: `resolvePasswordLogin`, `createLdaptsDirectoryClient`, `authenticateLdap`.
219
+
220
+ | `loginMode` | Behavior |
221
+ |-------------|----------|
222
+ | `local` | Local passwords only (default when no domains) |
223
+ | `ldap` | LDAP directories only |
224
+ | `both` | Try LDAP domains first; fall back to local on miss |
225
+
226
+ | `ldap.provisioning` | Behavior |
227
+ |---------------------|----------|
228
+ | `existing` (default) | Directory bind must match a pre-synced local user (`externalId`) |
229
+ | `create` | Upsert local users on first LDAP login |
230
+
231
+ Multi-domain: prefer domains matching `user@email.domain` / `NETBIOS\user`, then remaining domains in order.
232
+
160
233
  Full RBAC, policies, and credential details: [`@shamar/cherubim`](../cherubim).
161
234
 
162
235
  ### API keys admin UI
package/assets/admin.css CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! tailwindcss v4.3.2 | 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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5db;--color-gray-400:#9ca3af;--color-gray-600:#4b5563;--color-gray-700:#374151;--color-gray-800:#1f2937;--color-gray-900:#111827;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-medium:500;--font-weight-semibold:600;--tracking-wide:.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary-50:#fff4f0;--color-primary-100:#fee9e2;--color-primary-200:#fdc9b8;--color-primary-300:#f89a72;--color-primary-400:#f36d3d;--color-primary-500:#f1511b;--color-primary-600:#e04a18;--color-primary-700:#c94115;--color-primary-800:#a23512;--color-primary-900:#7a280e;--color-primary-950:#451a0a;--color-shamar-primary:#f1511b;--color-shamar-accent:#286291;--color-shamar-muted:#64748b;--color-body:#475569;--color-body-subtle:#64748b;--color-heading:#0f172a;--color-neutral-primary:#fff;--color-neutral-secondary:#fff4f0;--color-neutral-tertiary:#fee9e2;--color-default:#fdc9b8;--color-fg-brand:#f1511b;--color-fg-brand-strong:#a23512;--color-brand-soft:#fee9e2;--color-brand-softer:#fee9e2;--color-fg-danger:#b91c1c;--color-danger-soft:#fef2f2;--color-success-soft:#ecfdf5;--color-success-strong:#047857;--color-warning-soft:#fffbeb;--color-warning-strong:#b45309;--color-toast-success-bg:#059669;--color-toast-success-border:#047857;--color-toast-success-glow:#05966947;--color-toast-success-title:#fff;--color-toast-success-body:#d1fae5;--color-toast-success-icon:#ecfdf5;--color-toast-error-bg:#dc2626;--color-toast-error-border:#b91c1c;--color-toast-error-glow:#dc262647;--color-toast-error-title:#fff;--color-toast-error-body:#fee2e2;--color-toast-error-icon:#fef2f2;--color-toast-warning-bg:#d97706;--color-toast-warning-border:#b45309;--color-toast-warning-glow:#d9770647;--color-toast-warning-title:#fff;--color-toast-warning-body:#fef3c7;--color-toast-warning-icon:#fffbeb;--color-toast-info-bg:#2563eb;--color-toast-info-border:#1d4ed8;--color-toast-info-glow:#2563eb47;--color-toast-info-title:#fff;--color-toast-info-body:#dbeafe;--color-toast-info-icon:#eff6ff;--color-shamar-shell:#fffbfa}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-shamar-shell:color-mix(in srgb, var(--color-primary-50) 35%, #fff)}}:root,:host{--color-card-border:var(--color-gray-200);--color-surface-hover:var(--color-neutral-tertiary);--color-surface-header:#fee9e280}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-surface-header:color-mix(in srgb, var(--color-neutral-tertiary) 50%, transparent)}}:root,:host{--color-surface-inset:#fee9e273}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-surface-inset:color-mix(in srgb, var(--color-neutral-tertiary) 45%, transparent)}}:root,:host{--color-surface-row-hover:#fee9e24d}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-surface-row-hover:color-mix(in srgb, var(--color-neutral-tertiary) 30%, transparent)}}:root,:host{--color-badge-neutral:var(--color-neutral-tertiary)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.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}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{inset-block:0}.top-0{top:0}.top-1\/2{top:50%}.top-full{top:100%}.right-0{right:0}.right-1\.5{right:calc(var(--spacing) * 1.5)}.right-3{right:calc(var(--spacing) * 3)}.left-0{left:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.shamar-radio{width:1rem;height:1rem;accent-color:var(--color-fg-brand);color:var(--color-fg-brand);cursor:pointer;vertical-align:middle;flex-shrink:0;margin:0}.shamar-radio:focus-visible{outline:none;box-shadow:0 0 0 3px #f1511b47}@supports (color:color-mix(in lab, red, red)){.shamar-radio:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--color-fg-brand) 28%, transparent)}}.shamar-radio:focus-visible{border-radius:9999px}.shamar-radio:disabled{opacity:.55;cursor:not-allowed}.mx-auto{margin-inline:auto}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-auto{margin-top:auto}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.-ml-1\.5{margin-left:calc(var(--spacing) * -1.5)}.ml-1{margin-left:var(--spacing)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-\[2\.375rem\]{height:2.375rem}.h-full{height:100%}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-36{max-height:calc(var(--spacing) * 36)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-72{max-height:calc(var(--spacing) * 72)}.min-h-0{min-height:0}.min-h-\[2\.375rem\]{min-height:2.375rem}.min-h-\[40px\]{min-height:40px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.shamar-input{border:1px solid var(--color-default);background-color:var(--color-neutral-primary);width:100%;color:var(--color-heading);accent-color:var(--color-fg-brand);appearance:none;border-radius:.5rem;outline:none;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem}.shamar-input:focus,.shamar-input:focus-visible{border-color:var(--color-fg-brand);box-shadow:0 0 0 3px #f1511b47}@supports (color:color-mix(in lab, red, red)){.shamar-input:focus,.shamar-input:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--color-fg-brand) 28%, transparent)}}.shamar-input:focus,.shamar-input:focus-visible{outline:none}.shamar-input::placeholder{color:var(--color-body-subtle)}.shamar-input[type=search]::-webkit-search-decoration{appearance:none}.shamar-input[type=search]::-webkit-search-cancel-button{appearance:none}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-16{width:calc(var(--spacing) * 16)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-auto{width:auto}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[9rem\]{max-width:9rem}.max-w-\[12rem\]{max-width:12rem}.max-w-\[120px\]{max-width:120px}.max-w-\[140px\]{max-width:140px}.max-w-\[200px\]{max-width:200px}.max-w-full{max-width:100%}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.min-w-\[2\.25rem\]{min-width:2.25rem}.min-w-\[5\.5rem\]{min-width:5.5rem}.min-w-\[7rem\]{min-width:7rem}.min-w-\[10rem\]{min-width:10rem}.min-w-\[120px\]{min-width:120px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.shamar-select{appearance:none;border:1px solid var(--color-default);background-color:var(--color-neutral-primary);color:var(--color-heading);accent-color:var(--color-fg-brand);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%239ca3af' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M19.5 8.25l-7.5 7.5-7.5-7.5'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:.875rem;border-radius:.5rem;outline:none;padding:.4375rem 1.75rem .4375rem .625rem;font-size:.8125rem;line-height:1.25rem}.shamar-select:focus,.shamar-select:focus-visible{border-color:var(--color-fg-brand);box-shadow:0 0 0 3px #f1511b47}@supports (color:color-mix(in lab, red, red)){.shamar-select:focus,.shamar-select:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--color-fg-brand) 28%, transparent)}}.shamar-select:focus,.shamar-select:focus-visible{outline:none}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.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)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.shamar-card{border:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);border-radius:.75rem}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.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{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-card-border{border-color:var(--color-card-border)}.border-default{border-color:var(--color-default)}.border-fg-brand{border-color:var(--color-fg-brand)}.bg-badge-neutral{background-color:var(--color-badge-neutral)}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.bg-black\/30{background-color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.bg-brand-softer{background-color:var(--color-brand-softer)}.bg-fg-brand{background-color:var(--color-fg-brand)}.bg-fg-danger{background-color:var(--color-fg-danger)}.bg-neutral-primary{background-color:var(--color-neutral-primary)}.bg-neutral-primary\/50{background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.bg-neutral-primary\/50{background-color:color-mix(in oklab, var(--color-neutral-primary) 50%, transparent)}}.bg-neutral-primary\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.bg-neutral-primary\/90{background-color:color-mix(in oklab, var(--color-neutral-primary) 90%, transparent)}}.bg-shamar-shell{background-color:var(--color-shamar-shell)}.bg-success-soft{background-color:var(--color-success-soft)}.bg-success-strong{background-color:var(--color-success-strong)}.bg-surface-header{background-color:var(--color-surface-header)}.bg-surface-inset{background-color:var(--color-surface-inset)}.bg-transparent{background-color:#0000}.bg-warning-soft{background-color:var(--color-warning-soft)}.bg-warning-strong{background-color:var(--color-warning-strong)}.object-contain{object-fit:contain}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-1{padding-left:var(--spacing)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.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)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-body{color:var(--color-body)}.text-body-subtle{color:var(--color-body-subtle)}.text-body-subtle\/50{color:#64748b80}@supports (color:color-mix(in lab, red, red)){.text-body-subtle\/50{color:color-mix(in oklab, var(--color-body-subtle) 50%, transparent)}}.text-fg-brand{color:var(--color-fg-brand)}.text-fg-brand\/70{color:#f1511bb3}@supports (color:color-mix(in lab, red, red)){.text-fg-brand\/70{color:color-mix(in oklab, var(--color-fg-brand) 70%, transparent)}}.text-fg-danger{color:var(--color-fg-danger)}.text-heading{color:var(--color-heading)}.text-success-strong{color:var(--color-success-strong)}.text-warning-strong{color:var(--color-warning-strong)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:text-fg-brand:is(:where(.group):hover *){color:var(--color-fg-brand)}}.placeholder\:text-body-subtle::placeholder{color:var(--color-body-subtle)}.last\:mb-0:last-child{margin-bottom:0}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:border-r-0:last-child{border-right-style:var(--tw-border-style);border-right-width:0}.focus-within\:border-fg-brand:focus-within{border-color:var(--color-fg-brand)}.focus-within\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:ring-fg-brand:focus-within{--tw-ring-color:var(--color-fg-brand)}@media (hover:hover){.hover\:border-fg-brand:hover{border-color:var(--color-fg-brand)}.hover\:border-fg-danger:hover{border-color:var(--color-fg-danger)}.hover\:bg-danger-soft:hover{background-color:var(--color-danger-soft)}.hover\:bg-neutral-secondary:hover{background-color:var(--color-neutral-secondary)}.hover\:bg-surface-hover:hover{background-color:var(--color-surface-hover)}.hover\:bg-surface-row-hover:hover{background-color:var(--color-surface-row-hover)}.hover\:text-fg-brand:hover{color:var(--color-fg-brand)}.hover\:text-fg-danger:hover{color:var(--color-fg-danger)}.hover\:text-heading:hover{color:var(--color-heading)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:opacity-40:disabled{opacity:.4}@media (min-width:40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.sm\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.sm\:border-card-border{border-color:var(--color-card-border)}}@media (min-width:48rem){.md\:relative{position:relative}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:translate-x-0{--tw-translate-x:0;translate:var(--tw-translate-x) var(--tw-translate-y)}.md\:flex-row{flex-direction:row}.md\:p-4{padding:calc(var(--spacing) * 4)}.md\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media (min-width:64rem){.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:justify-between{justify-content:space-between}}@media (min-width:80rem){.xl\:col-span-3{grid-column:span 3/span 3}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.dark\:block:where(.dark,.dark *){display:block}.dark\:hidden:where(.dark,.dark *){display:none}}.dark{--color-body:var(--color-gray-300);--color-body-subtle:var(--color-gray-400);--color-heading:#f3f4f6;--color-neutral-primary:var(--color-gray-900);--color-neutral-secondary:var(--color-gray-800);--color-neutral-tertiary:#151c28;--color-default:var(--color-gray-700);--color-fg-brand:var(--color-primary-500);--color-fg-brand-strong:var(--color-primary-400);--color-brand-soft:var(--color-primary-900);--color-brand-softer:var(--color-primary-950);--color-shamar-shell:var(--color-gray-800);--color-card-border:#4b55638c}@supports (color:color-mix(in lab, red, red)){.dark{--color-card-border:color-mix(in srgb, var(--color-gray-600) 55%, transparent)}}.dark{--color-fg-danger:#f87171;--color-danger-soft:#450a0a;--color-success-soft:#064e3b;--color-success-strong:#6ee7b7;--color-warning-soft:#451a03;--color-warning-strong:#fcd34d;--color-toast-success-bg:#065f46;--color-toast-success-border:#047857;--color-toast-success-glow:#10b98138;--color-toast-success-title:#ecfdf5;--color-toast-success-body:#a7f3d0;--color-toast-success-icon:#d1fae5;--color-toast-error-bg:#991b1b;--color-toast-error-border:#b91c1c;--color-toast-error-glow:#f8717133;--color-toast-error-title:#fef2f2;--color-toast-error-body:#fecaca;--color-toast-error-icon:#fee2e2;--color-toast-warning-bg:#92400e;--color-toast-warning-border:#b45309;--color-toast-warning-glow:#fbbf242e;--color-toast-warning-title:#fffbeb;--color-toast-warning-body:#fde68a;--color-toast-warning-icon:#fef3c7;--color-toast-info-bg:#1e40af;--color-toast-info-border:#1d4ed8;--color-toast-info-glow:#60a5fa2e;--color-toast-info-title:#eff6ff;--color-toast-info-body:#bfdbfe;--color-toast-info-icon:#dbeafe;--color-surface-hover:#242d3c}@supports (color:color-mix(in lab, red, red)){.dark{--color-surface-hover:color-mix(in srgb, var(--color-gray-700) 50%, var(--color-gray-900))}}.dark{--color-surface-header:#1a2331}@supports (color:color-mix(in lab, red, red)){.dark{--color-surface-header:color-mix(in srgb, var(--color-gray-800) 65%, var(--color-gray-900))}}.dark{--color-surface-inset:#192130}@supports (color:color-mix(in lab, red, red)){.dark{--color-surface-inset:color-mix(in srgb, var(--color-gray-800) 55%, var(--color-gray-900))}}.dark{--color-surface-row-hover:#1e2636}@supports (color:color-mix(in lab, red, red)){.dark{--color-surface-row-hover:color-mix(in srgb, var(--color-gray-700) 35%, var(--color-gray-900))}}.dark{--color-badge-neutral:#222a3a}@supports (color:color-mix(in lab, red, red)){.dark{--color-badge-neutral:color-mix(in srgb, var(--color-gray-700) 45%, var(--color-gray-900))}}:where(.dark,.dark *){color-scheme:dark}:where(html),:where(.dark,.dark *),input[type=checkbox],input[type=radio],input[type=range],input[type=color],progress,meter{accent-color:var(--color-fg-brand)}input[type=checkbox],input[type=radio]{width:1rem;height:1rem;color:var(--color-fg-brand);accent-color:var(--color-fg-brand);cursor:pointer;vertical-align:middle;flex-shrink:0;margin:0}input[type=checkbox]{appearance:none;border:1.5px solid var(--color-default);background-color:var(--color-neutral-primary);background-position:50%;background-repeat:no-repeat;background-size:.7rem;border-radius:.3rem;transition:background-color .12s,border-color .12s,box-shadow .12s}input[type=checkbox]:hover:not(:disabled){border-color:#f68762}@supports (color:color-mix(in lab, red, red)){input[type=checkbox]:hover:not(:disabled){border-color:color-mix(in srgb, var(--color-fg-brand) 55%, var(--color-default))}}input[type=checkbox]:checked{background-color:var(--color-fg-brand);border-color:var(--color-fg-brand);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5 6.5 11.5 12.5 4.5'/%3E%3C/svg%3E")}input[type=checkbox]:indeterminate{background-color:var(--color-fg-brand);border-color:var(--color-fg-brand);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M3.5 8h9'/%3E%3C/svg%3E")}input[type=radio]{border-radius:9999px}input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{outline:none;box-shadow:0 0 0 3px #f1511b47}@supports (color:color-mix(in lab, red, red)){input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--color-fg-brand) 28%, transparent)}}input[type=checkbox]:disabled,input[type=radio]:disabled{opacity:.55;cursor:not-allowed}[x-cloak]{display:none!important}a[href],button:not(:disabled),[role=button]:not([aria-disabled=true]),[role=tab],label[for],label:has(input,select,textarea),summary,select,input[type=checkbox],input[type=radio],.shamar-interactive{cursor:pointer}button:disabled,[aria-disabled=true]{cursor:not-allowed}.nav-item{color:var(--color-body)}@media (hover:hover){.nav-item:hover{background-color:var(--color-primary-100);color:var(--color-fg-brand)}}.nav-item.nav-active{background-color:var(--color-primary-200);color:var(--color-fg-brand-strong);font-weight:600}:where(.dark,.dark *) .nav-item:hover{background-color:var(--color-surface-hover);color:var(--color-heading)}:where(.dark,.dark *) .nav-item.nav-active{background-color:var(--color-surface-inset);color:var(--color-fg-brand);font-weight:600}fieldset.shamar-card{border:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);min-width:0;margin:0}:where(.dark,.dark *) .shamar-card,:where(.dark,.dark *) fieldset.shamar-card{background-color:var(--color-neutral-primary)}.shamar-form-section__header{border-bottom:1px solid var(--color-card-border);background-color:var(--color-surface-header,var(--color-neutral-secondary));align-items:flex-start;gap:.75rem;padding:1rem 1.25rem;display:flex}.shamar-form-section__header--centered{align-items:center}.shamar-form-section__icon{width:2rem;height:2rem;color:var(--color-fg-brand);background-color:var(--color-brand-soft);border-radius:.5rem;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.shamar-form-section__titles{flex-direction:column;justify-content:center;min-width:0;display:flex}.shamar-form-section__title{color:var(--color-heading);margin:0;font-size:.875rem;font-weight:600;line-height:1.35}.shamar-form-section__description{color:var(--color-body-subtle,var(--color-shamar-muted));margin:.25rem 0 0;font-size:.8125rem;line-height:1.4}.shamar-form-section__body{padding:1.25rem 1.25rem 1.75rem}.shamar-wizard__panel{padding-bottom:.5rem}.shamar-radio{padding-bottom:.15rem}.shamar-form-fieldset{border:1px solid var(--color-card-border);background-color:#0000;border-radius:.75rem;min-width:0;margin:0;padding:.75rem 1rem 1rem}.shamar-form-fieldset--card{background-color:var(--color-neutral-primary)}.shamar-form-section--plain{border:1px solid var(--color-card-border);background-color:#0000}.shamar-form-fieldset__legend{color:var(--color-heading);padding:0 .35rem;font-size:.8125rem;font-weight:600}.shamar-form-fieldset__description{color:var(--color-body-subtle,var(--color-shamar-muted));margin:0 0 .75rem;font-size:.8125rem}:where(.dark,.dark *) .shamar-form-fieldset{border-color:var(--color-card-border)}.shamar-dialog-backdrop{z-index:50;background-color:#0006;position:fixed;inset:0}.shamar-dialog-panel{z-index:51;border:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);border-radius:.75rem;flex-direction:column;max-width:calc(100vw - 1.5rem);max-height:calc(100vh - 1.5rem);display:flex;position:fixed;top:50%;left:50%;overflow:hidden}.shamar-dialog-panel.is-fullscreen{max-width:none;max-height:none;width:auto!important;height:auto!important;inset:.75rem!important;transform:none!important}.shamar-dialog-panel.is-prompt{max-height:calc(100vh - 1.5rem);width:min(28rem,100vw - 1.5rem)!important;height:auto!important}.shamar-dialog-header{border-bottom:1px solid var(--color-card-border);cursor:move;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;padding:.625rem .875rem;display:flex}.shamar-dialog-body{flex:1;min-height:0;padding:1rem;overflow:auto}.shamar-embed-section+.shamar-embed-section{border-top:1px solid var(--color-card-border);margin-top:1.25rem;padding-top:1.25rem}.shamar-embed-section__header{margin-bottom:1rem}.shamar-embed-section .shamar-field--readonly .shamar-field__value{background:0 0;border:0;padding:0}.shamar-dialog-footer{border-top:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);flex-shrink:0;justify-content:flex-end;align-items:center;gap:.5rem;padding:.75rem .875rem;display:flex}.shamar-dialog-body--prompt{padding-top:1.25rem;padding-bottom:1.25rem}.shamar-dialog-prompt-icon{border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;width:2.25rem;height:2.25rem;display:flex}.shamar-dialog-prompt-icon.is-danger{background-color:var(--color-danger-soft);color:var(--color-fg-danger)}.shamar-dialog-prompt-icon.is-warning{background-color:var(--color-warning-soft);color:var(--color-warning-strong)}.shamar-dialog-prompt-icon.is-info{background-color:var(--color-brand-soft);color:var(--color-fg-brand)}.shamar-dialog-prompt-icon.is-success{background-color:var(--color-success-soft);color:var(--color-success-strong)}.shamar-bulk-bar{border-top:1px solid var(--color-card-border);background-color:var(--color-surface-header,var(--color-neutral-primary));flex-wrap:wrap;align-items:center;gap:.75rem 1rem;padding:.625rem 1rem;display:flex}.shamar-bulk-bar__meta{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;min-width:0;display:flex}.shamar-bulk-bar__count{color:var(--color-body);font-size:.875rem;font-weight:500}.shamar-bulk-bar__link{color:var(--color-body-subtle);cursor:pointer;background:0 0;border:0;padding:0;font-size:.75rem;text-decoration:underline}.shamar-bulk-bar__link:hover{color:var(--color-fg-brand)}.shamar-bulk-menu{position:relative}.shamar-bulk-menu__trigger{border:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);color:var(--color-body);cursor:pointer;border-radius:.375rem;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.875rem;font-weight:500;display:inline-flex}.shamar-bulk-menu__trigger:hover{background-color:var(--color-surface-hover)}.shamar-bulk-menu__trigger[aria-expanded=true]{border-color:var(--color-fg-brand);color:var(--color-heading)}.shamar-bulk-menu__chevron{width:.875rem;height:.875rem;transition:transform .12s}.shamar-bulk-menu__chevron.is-open{transform:rotate(180deg)}.shamar-bulk-menu__panel{z-index:50;border:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);border-radius:.5rem;min-width:12rem;padding:.25rem;position:absolute;top:calc(100% + .25rem);left:0;box-shadow:0 10px 24px #0000001f}.shamar-bulk-menu__item{text-align:left;width:100%;color:var(--color-body);cursor:pointer;background:0 0;border:0;border-radius:.375rem;padding:.5rem .75rem;font-size:.875rem;display:block}.shamar-bulk-menu__item:hover{background-color:var(--color-surface-hover);color:var(--color-heading)}.shamar-bulk-menu__item.is-danger{color:var(--color-fg-danger)}.shamar-bulk-menu__item.is-danger:hover{background-color:var(--color-danger-soft);color:var(--color-fg-danger)}.shamar-chip{background-color:var(--color-brand-soft);max-width:100%;color:var(--color-fg-brand);border-radius:.375rem;align-items:center;gap:.25rem;padding:.125rem .25rem .125rem .5rem;font-size:.75rem;font-weight:500;display:inline-flex}.shamar-chip--group{background-color:var(--color-badge-neutral,var(--color-surface-hover));color:var(--color-heading)}.shamar-chip__remove{color:inherit;cursor:pointer;background:0 0;border:0;border-radius:.25rem;justify-content:center;align-items:center;padding:.125rem;display:inline-flex}.shamar-chip__remove:hover{background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.shamar-chip__remove:hover{background-color:color-mix(in srgb, currentColor 16%, transparent)}}.shamar-list-card{overflow:visible}.shamar-list-toolbar,.shamar-bulk-bar{z-index:20;position:relative}.shamar-list-table-scroll{z-index:0;border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem;position:relative;overflow-x:auto}.shamar-toolbar-menu{position:relative}.shamar-toolbar-btn{border:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);color:var(--color-body);cursor:pointer;border-radius:.375rem;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.875rem;font-weight:500;display:inline-flex}.shamar-toolbar-btn:hover{background-color:var(--color-surface-hover)}.shamar-toolbar-btn.is-active{border-color:var(--color-fg-brand);color:var(--color-heading)}.shamar-toolbar-btn__badge{background-color:var(--color-fg-brand);color:#fff;border-radius:9999px;justify-content:center;align-items:center;min-width:1.25rem;height:1.25rem;padding:0 .35rem;font-size:.6875rem;font-weight:700;display:inline-flex}.shamar-toolbar-panel{z-index:50;border:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);border-radius:.625rem;width:min(18rem,100vw - 2rem);position:absolute;top:calc(100% + .35rem);right:0;overflow:hidden;box-shadow:0 12px 28px #00000024}.shamar-toolbar-panel__head{justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem .875rem .5rem;display:flex}.shamar-toolbar-panel__list{max-height:18rem;padding:.25rem;overflow:auto}.shamar-toolbar-panel__item{text-align:left;width:100%;color:var(--color-body);cursor:pointer;background:0 0;border:0;border-radius:.375rem;justify-content:space-between;align-items:center;gap:.75rem;padding:.55rem .75rem;font-size:.875rem;display:flex}.shamar-toolbar-panel__item:hover,.shamar-toolbar-panel__item.is-selected{background-color:var(--color-surface-hover);color:var(--color-heading)}.shamar-toolbar-panel__back{border:0;border-bottom:1px solid var(--color-card-border);width:100%;color:var(--color-heading);cursor:pointer;background:0 0;align-items:center;gap:.35rem;padding:.65rem .875rem;font-size:.8125rem;font-weight:600;display:inline-flex}.shamar-toolbar-panel__back:hover{background-color:var(--color-surface-hover)}.shamar-list-group__cell{background:color-mix(in srgb, color-mix(in srgb, var(--color-neutral-tertiary) 50%, transparent) 88%, transparent);padding:.5rem 1rem}@supports (color:color-mix(in lab, red, red)){.shamar-list-group__cell{background:color-mix(in srgb, var(--color-surface-header,#f5f5f5) 88%, transparent)}}.shamar-list-group__cell{border-top:1px solid var(--color-card-border)}.shamar-list-group__label{letter-spacing:.02em;text-transform:uppercase;color:var(--color-heading);font-size:.75rem;font-weight:700}.shamar-list-group__count{color:var(--color-body-subtle);margin-left:.5rem;font-size:.75rem}.shamar-list-group__count:before{content:"· "}.shamar-secret-reveal{border:1px solid var(--color-card-border);background-color:var(--color-neutral-secondary,var(--color-neutral-primary));border-radius:.5rem;align-items:stretch;gap:.5rem;margin-top:.25rem;display:flex;overflow:hidden}.shamar-secret-reveal__value{word-break:break-all;min-width:0;color:var(--color-heading);flex:1;padding:.75rem .875rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.75rem;line-height:1.4}.shamar-secret-reveal__copy{border:none;border-left:1px solid var(--color-card-border);color:var(--color-fg-brand);cursor:pointer;background:0 0;flex-shrink:0;align-self:stretch;padding:0 .875rem;font-size:.8125rem;font-weight:600}.shamar-secret-reveal__copy:hover{background-color:var(--color-surface-hover)}.shamar-dialog-resize-handle{cursor:nwse-resize;width:1rem;height:1rem;position:absolute;bottom:0;right:0}#shamar-toast-stack{z-index:60;pointer-events:none;flex-direction:column;gap:.75rem;width:min(26rem,100vw - 2rem);display:flex;position:fixed;top:1rem;right:1rem}.shamar-toast{pointer-events:auto;box-shadow:0 18px 40px -16px var(--shamar-toast-glow,#0f172a2e), 0 8px 16px -12px #0f172a29;opacity:0;border:1px solid #0000;border-radius:.9rem;align-items:flex-start;gap:.875rem;padding:.95rem 1rem;transition:opacity .2s,transform .2s;display:flex;transform:translate(.75rem)scale(.98)}.shamar-toast.is-visible{opacity:1;transform:translate(0)scale(1)}.shamar-toast--success{background:var(--color-toast-success-bg);border-color:var(--color-toast-success-border);--shamar-toast-glow:var(--color-toast-success-glow)}.shamar-toast--error{background:var(--color-toast-error-bg);border-color:var(--color-toast-error-border);--shamar-toast-glow:var(--color-toast-error-glow)}.shamar-toast--warning{background:var(--color-toast-warning-bg);border-color:var(--color-toast-warning-border);--shamar-toast-glow:var(--color-toast-warning-glow)}.shamar-toast--info{background:var(--color-toast-info-bg);border-color:var(--color-toast-info-border);--shamar-toast-glow:var(--color-toast-info-glow)}.shamar-toast__icon{width:2.25rem;height:2.25rem;color:var(--shamar-toast-icon,#fff);background:#ffffff29;border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.shamar-toast--success .shamar-toast__icon{--shamar-toast-icon:var(--color-toast-success-icon)}.shamar-toast--error .shamar-toast__icon{--shamar-toast-icon:var(--color-toast-error-icon)}.shamar-toast--warning .shamar-toast__icon{--shamar-toast-icon:var(--color-toast-warning-icon)}.shamar-toast--info .shamar-toast__icon{--shamar-toast-icon:var(--color-toast-info-icon)}.shamar-toast__icon svg{width:1.15rem;height:1.15rem}.shamar-toast__content{flex:1;min-width:0;padding-top:.1rem}.shamar-toast__title{letter-spacing:-.01em;color:var(--shamar-toast-title,#fff);margin:0;font-size:.95rem;font-weight:700;line-height:1.35}.shamar-toast--success .shamar-toast__title{--shamar-toast-title:var(--color-toast-success-title)}.shamar-toast--error .shamar-toast__title{--shamar-toast-title:var(--color-toast-error-title)}.shamar-toast--warning .shamar-toast__title{--shamar-toast-title:var(--color-toast-warning-title)}.shamar-toast--info .shamar-toast__title{--shamar-toast-title:var(--color-toast-info-title)}.shamar-toast__body{color:var(--shamar-toast-body,#ffffffe0);margin:.2rem 0 0;font-size:.875rem;line-height:1.5}.shamar-toast--success .shamar-toast__body{--shamar-toast-body:var(--color-toast-success-body)}.shamar-toast--error .shamar-toast__body{--shamar-toast-body:var(--color-toast-error-body)}.shamar-toast--warning .shamar-toast__body{--shamar-toast-body:var(--color-toast-warning-body)}.shamar-toast--info .shamar-toast__body{--shamar-toast-body:var(--color-toast-info-body)}.shamar-toast__dismiss{width:1.75rem;height:1.75rem;color:var(--shamar-toast-body,#ffffffe0);cursor:pointer;background:0 0;border:0;border-radius:.5rem;flex-shrink:0;justify-content:center;align-items:center;margin:-.15rem -.15rem 0 0;font-size:1.15rem;line-height:1;transition:background-color .15s,color .15s;display:inline-flex}.shamar-toast__dismiss:hover{color:var(--shamar-toast-title,#fff);background:#ffffff1f}.shamar-kanban-grid{grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem;display:grid}@media (min-width:640px){.shamar-kanban-grid{grid-template-columns:repeat(min(2, var(--shamar-kanban-cols,4)), minmax(0, 1fr))}}@media (min-width:768px){.shamar-kanban-grid{grid-template-columns:repeat(min(3, var(--shamar-kanban-cols,4)), minmax(0, 1fr))}}@media (min-width:1024px){.shamar-kanban-grid{grid-template-columns:repeat(var(--shamar-kanban-cols,4), minmax(0, 1fr))}}.shamar-kanban-board{align-items:stretch;gap:1rem;padding-bottom:.25rem;display:flex;overflow-x:auto}.shamar-kanban-column{border:1px solid var(--color-border-default,#0000001a);background:var(--color-surface-header,#00000008);border-radius:.75rem;flex-direction:column;flex:0 0 min(18rem,85vw);min-height:16rem;max-height:min(70vh,42rem);display:flex}.shamar-kanban-column__header{border-bottom:1px solid var(--color-border-default,#00000014);justify-content:space-between;align-items:center;gap:.5rem;padding:.75rem .875rem;display:flex}.shamar-kanban-column__title{color:var(--color-text-heading,inherit);text-transform:capitalize;margin:0;font-size:.8125rem;font-weight:600}.shamar-kanban-column__count{color:var(--color-text-body-subtle,#00000073);font-variant-numeric:tabular-nums;font-size:.75rem}.shamar-kanban-column__body{flex-direction:column;flex:auto;gap:.75rem;padding:.75rem;display:flex;overflow-y:auto}.shamar-kanban-column__empty{text-align:center;color:var(--color-text-body-subtle,#00000073);margin:0;padding:1.5rem .5rem;font-size:.8125rem}select.shamar-select option,select.shamar-input option{background-color:var(--color-neutral-primary);color:var(--color-heading)}.shamar-form-grid{grid-template-columns:repeat(var(--shamar-form-cols,2), minmax(0, 1fr));gap:1.25rem;display:grid}.shamar-detail-grid{grid-template-columns:repeat(var(--shamar-detail-cols,2), minmax(0, 1fr));gap:0;display:grid}@media (max-width:639px){.shamar-form-grid,.shamar-detail-grid{grid-template-columns:1fr}.shamar-field-cell,.shamar-detail-cell{grid-column:1/-1!important}}.shamar-field-cell,.shamar-detail-cell{min-width:0}.shamar-detail__label{letter-spacing:.02em;text-transform:uppercase;color:var(--color-heading);margin:0;font-size:.75rem;font-weight:650;display:block}.shamar-detail__label-row,.shamar-field__label-row{justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.5rem;display:flex}.shamar-detail__label-row{margin-bottom:0}.shamar-detail__label-row .shamar-detail__label{flex:auto;min-width:0}.shamar-field__label-row .shamar-field__label{flex:auto;min-width:0;margin-bottom:0}.shamar-field__label{color:var(--color-heading);margin-bottom:.5rem;font-size:.875rem;font-weight:500;display:block}.shamar-field__required{color:var(--color-fg-danger)}.shamar-field__hint{text-align:right;max-width:55%;color:var(--color-body-subtle);flex:0 auto;margin:0;font-size:.75rem;font-weight:500;line-height:1.35}.shamar-field__help{color:var(--color-body-subtle);margin-top:.5rem;font-size:.75rem;line-height:1.4}.shamar-field__error{color:var(--color-fg-danger);margin-top:.375rem;font-size:.75rem;line-height:1.4}.shamar-field.is-invalid .shamar-field__label{color:var(--color-fg-danger)}.shamar-input.is-invalid,.shamar-select.is-invalid,.shamar-m2m-checkboxes.is-invalid,[data-shamar-m2o-config].is-invalid,[data-shamar-m2m-config].is-invalid{border-color:var(--color-fg-danger)}.shamar-input.is-invalid:focus,.shamar-select.is-invalid:focus{outline-color:var(--color-fg-danger);border-color:var(--color-fg-danger)}.shamar-field__value{color:var(--color-body);font-size:.875rem;line-height:1.5}.shamar-textarea-entry{border:1px solid var(--color-card-border);background:var(--color-surface-inset);white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-all;border-radius:.5rem;max-height:24rem;margin:0;padding:.625rem .75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.8125rem;line-height:1.45;display:block;overflow:auto}.shamar-field--readonly .shamar-field__value{border:1px solid var(--color-card-border);background:var(--color-surface-inset);border-radius:.5rem;padding:.625rem .75rem}.shamar-input-group__affix--icon,.shamar-input-group__affix--action{padding:0 .65rem}.shamar-input-group__affix--action{cursor:pointer;background:var(--color-neutral-primary);color:var(--color-body-subtle)}.shamar-input-group__affix--action:hover{color:var(--color-heading);background:var(--color-surface-hover,var(--color-neutral-secondary))}.shamar-field__counter{color:var(--color-body-subtle);text-align:right;margin:.35rem 0 0;font-size:.75rem}.shamar-input--file{padding:.4rem .5rem}.shamar-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.75rem;width:100%;min-width:0;display:flex;position:relative}.shamar-toggle--inline{min-height:2.5rem;padding:.375rem 0}.shamar-toggle__text{flex-direction:column;flex:auto;gap:.15rem;min-width:0;display:flex}.shamar-toggle.is-disabled{opacity:.55;cursor:not-allowed}.shamar-toggle__input{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.shamar-toggle__track{background:var(--color-gray-300);border:1px solid #9ca3afb3;border-radius:9999px;flex-shrink:0;width:2.75rem;height:1.5rem;position:relative}@supports (color:color-mix(in lab, red, red)){.shamar-toggle__track{border:1px solid color-mix(in srgb, var(--color-gray-400) 70%, transparent)}}.shamar-toggle__track{transition:background-color .18s,border-color .18s,box-shadow .18s}:where(.dark,.dark *) .shamar-toggle__track{background:var(--color-gray-700);border-color:var(--color-gray-600)}.shamar-toggle__thumb{background:#fff;border-radius:9999px;width:1.125rem;height:1.125rem;transition:transform .18s;position:absolute;top:.125rem;left:.125rem;box-shadow:0 1px 3px #0f172a2e}.shamar-toggle__input:focus-visible+.shamar-toggle__track{border-color:var(--color-fg-brand);box-shadow:0 0 0 3px #f1511b47}@supports (color:color-mix(in lab, red, red)){.shamar-toggle__input:focus-visible+.shamar-toggle__track{box-shadow:0 0 0 3px color-mix(in srgb, var(--color-fg-brand) 28%, transparent)}}.shamar-toggle__input:focus-visible+.shamar-toggle__track{outline:none}.shamar-toggle__input:checked+.shamar-toggle__track{background:var(--color-fg-brand);border-color:#c14116}@supports (color:color-mix(in lab, red, red)){.shamar-toggle__input:checked+.shamar-toggle__track{border-color:color-mix(in srgb, var(--color-fg-brand) 80%, #000)}}.shamar-toggle__input:checked+.shamar-toggle__track .shamar-toggle__thumb{transform:translate(1.25rem)}.shamar-toggle__label{color:var(--color-heading);font-size:.875rem;font-weight:500}.shamar-boolean{border:1px solid #0000;border-radius:9999px;align-items:center;gap:.4rem;max-width:100%;padding:.2rem .65rem .2rem .3rem;font-size:.8125rem;font-weight:600;line-height:1.2;display:inline-flex}.shamar-boolean--custom{padding-left:.35rem}.shamar-boolean--icon-only{padding:.3rem}.shamar-boolean__mark{background:currentColor;border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;width:1.35rem;height:1.35rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.shamar-boolean__mark{background:color-mix(in srgb, currentColor 14%, transparent)}}.shamar-boolean__glyph{font-size:.8rem;line-height:1}.shamar-boolean__label{letter-spacing:.01em;padding-right:.15rem}.shamar-boolean.is-true{background:var(--color-success-soft);color:var(--color-success-strong);border-color:#0478572e}@supports (color:color-mix(in lab, red, red)){.shamar-boolean.is-true{border-color:color-mix(in srgb, var(--color-success-strong) 18%, transparent)}}.shamar-boolean.is-false{background:var(--color-badge-neutral);color:var(--color-body-subtle);border-color:#e5e7ebcc}@supports (color:color-mix(in lab, red, red)){.shamar-boolean.is-false{border-color:color-mix(in srgb, var(--color-card-border) 80%, transparent)}}.shamar-field .shamar-select,.shamar-field-cell .shamar-select{width:100%;min-width:0;max-width:100%;display:block}.shamar-combobox{width:100%;min-width:0;position:relative}.shamar-combobox__control{border:1px solid var(--color-default);background:var(--color-neutral-primary);cursor:text;border-radius:.5rem;align-items:center;gap:.35rem;width:100%;min-height:2.5rem;padding:.25rem .35rem .25rem .65rem;transition:border-color .15s,box-shadow .15s;display:flex}.shamar-combobox.is-open .shamar-combobox__control,.shamar-combobox__control:focus-within{border-color:var(--color-fg-brand);box-shadow:0 0 0 3px #f1511b47}@supports (color:color-mix(in lab, red, red)){.shamar-combobox.is-open .shamar-combobox__control,.shamar-combobox__control:focus-within{box-shadow:0 0 0 3px color-mix(in srgb, var(--color-fg-brand) 28%, transparent)}}.shamar-combobox.is-invalid .shamar-combobox__control{border-color:var(--color-fg-danger)}.shamar-combobox.is-disabled .shamar-combobox__control{opacity:.55;cursor:not-allowed;background:var(--color-surface-inset,var(--color-neutral-secondary))}.shamar-combobox__chips{flex-wrap:wrap;flex:auto;align-items:center;gap:.35rem;min-width:0;display:flex}.shamar-combobox__chip{background:var(--color-brand-soft);max-width:100%;color:var(--color-fg-brand);border-radius:999px;align-items:center;gap:.2rem;padding:.15rem .2rem .15rem .5rem;font-size:.75rem;font-weight:550;line-height:1.25;display:inline-flex}.shamar-combobox__chip-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.shamar-combobox__chip-remove{width:1.15rem;height:1.15rem;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.shamar-combobox__chip-remove:hover{background:#f1511b2e}@supports (color:color-mix(in lab, red, red)){.shamar-combobox__chip-remove:hover{background:color-mix(in srgb, var(--color-fg-brand) 18%, transparent)}}.shamar-combobox__search{width:auto;min-width:4rem;color:var(--color-heading);box-shadow:none;background:0 0;border:0;outline:none;flex:6rem;margin:0;padding:.3rem 0;font-size:.875rem}.shamar-combobox__search--single{flex:auto;min-width:0}.shamar-combobox__search:disabled{cursor:not-allowed}.shamar-combobox__clear,.shamar-combobox__toggle{width:1.75rem;height:1.75rem;color:var(--color-body-subtle);cursor:pointer;background:0 0;border:0;border-radius:.375rem;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.shamar-combobox__clear:hover,.shamar-combobox__toggle:hover{color:var(--color-heading);background:var(--color-surface-hover,var(--color-neutral-secondary))}.shamar-combobox__toggle{color:var(--color-body-subtle)}.shamar-combobox.is-open .shamar-combobox__toggle{color:var(--color-fg-brand)}.shamar-combobox__dropdown{z-index:40;border:1px solid var(--color-default);background:var(--color-neutral-primary);border-radius:.5rem;max-height:16rem;padding:.35rem;position:absolute;top:calc(100% + .25rem);left:0;right:0;overflow:auto;box-shadow:0 10px 30px #0000001f}.shamar-combobox__option{width:100%;color:var(--color-heading);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:.375rem;justify-content:space-between;align-items:center;gap:.75rem;padding:.45rem .6rem;font-size:.875rem;display:flex}.shamar-combobox__option:hover,.shamar-combobox__option.is-active{background:var(--color-surface-hover,var(--color-neutral-secondary))}.shamar-combobox__option.is-selected{color:var(--color-fg-brand);font-weight:550}.shamar-combobox__option-check{color:var(--color-fg-brand);flex-shrink:0}.shamar-combobox__empty{color:var(--color-body-subtle);padding:.65rem .6rem;font-size:.8125rem}.shamar-field.text-right .shamar-input,.shamar-field.text-right .shamar-select,.shamar-field.text-right .shamar-combobox__search{text-align:right}.shamar-field.text-center .shamar-input,.shamar-field.text-center .shamar-select,.shamar-field.text-center .shamar-combobox__search{text-align:center}.shamar-field.text-justify .shamar-input,.shamar-field.text-justify .shamar-select,.shamar-field.text-justify .shamar-combobox__search{text-align:justify}.shamar-boolean-badge{border-radius:9999px;align-items:center;padding:.2rem .65rem;font-size:.75rem;font-weight:600;display:inline-flex}.shamar-boolean-badge.is-true{background:var(--color-success-soft);color:var(--color-success-strong)}.shamar-boolean-badge.is-false{background:var(--color-badge-neutral);color:var(--color-body-subtle)}.shamar-field[data-field-type=relation],.shamar-m2o,.shamar-m2o__row{width:100%}.shamar-m2o__input{min-height:2.375rem}.shamar-m2o__input.is-readonly{cursor:default;opacity:.85}.shamar-m2o__dropdown{min-width:100%}.shamar-m2o__dropdown li[role=option],.shamar-m2m__dropdown li[role=option],.shamar-m2m-table li{cursor:pointer}.shamar-m2o__dropdown svg,.shamar-m2m__dropdown svg,.shamar-m2m-table svg{flex-shrink:0;width:.875rem;height:.875rem}.shamar-m2o__clear svg,.shamar-m2m .shamar-chip__remove svg{flex-shrink:0;width:.75rem;height:.75rem}.shamar-m2o__open{align-self:stretch}.shamar-m2m{width:100%}.shamar-m2m__box{cursor:text}.shamar-m2m__box.is-readonly{cursor:default;opacity:.85}.shamar-m2m__box.is-open{border-color:var(--color-fg-brand,currentColor)}.shamar-m2m__input{min-height:1.25rem}.shamar-m2m__dropdown{min-width:100%}.shamar-chip{line-height:1.25}.shamar-m2m-checkboxes,.shamar-m2m-table{width:100%}.shamar-m2m-table__card{overflow:visible}.shamar-m2m-table__toolbar{z-index:2;position:relative}.shamar-m2m-table__add{position:relative}.shamar-m2m-table__add-dropdown{z-index:50}.shamar-form-section:has(.shamar-m2m-table),.shamar-form-section:has(.shamar-m2o),.shamar-form-section:has(.shamar-m2m){overflow:visible}.shamar-m2m-checkboxes__body--framed{border:1px solid var(--color-default);border-radius:.5rem;max-height:28rem;padding:.5rem;overflow:auto}.shamar-m2m-checkboxes__body--open{border:0;max-height:none;padding:0;overflow:visible}.shamar-m2m-checkboxes__list{grid-template-columns:repeat(var(--shamar-checkbox-cols,1), minmax(0, 1fr));gap:.125rem .5rem;display:grid}.shamar-m2m-checkboxes__clusters{grid-template-columns:repeat(var(--shamar-checkbox-cols,1), minmax(0, 1fr));align-items:start;gap:.625rem;display:grid}.shamar-m2m-checkboxes__cluster{border:1px solid var(--color-default);background:var(--color-neutral-primary);border-radius:.5rem;flex-direction:column;min-width:0;display:flex;overflow:hidden}.shamar-m2m-checkboxes__cluster-header{border-bottom:1px solid var(--color-default);background:var(--color-surface-header,var(--color-neutral-secondary,transparent));justify-content:space-between;align-items:flex-start;gap:.5rem;padding:.5rem .625rem;display:flex}.shamar-m2m-checkboxes__cluster-count{color:var(--color-body-subtle);font-variant-numeric:tabular-nums;font-size:.65rem;line-height:1.25}.shamar-m2m-checkboxes__cluster-body{flex-direction:column;gap:.0625rem;padding:.375rem;display:flex}.shamar-m2m-checkboxes__clusters--cols-1,.shamar-m2m-checkboxes__list--cols-1{--shamar-checkbox-cols:1}.shamar-m2m-checkboxes__clusters--cols-2,.shamar-m2m-checkboxes__list--cols-2{--shamar-checkbox-cols:2}.shamar-m2m-checkboxes__clusters--cols-3,.shamar-m2m-checkboxes__list--cols-3{--shamar-checkbox-cols:3}.shamar-m2m-checkboxes__clusters--cols-4,.shamar-m2m-checkboxes__list--cols-4{--shamar-checkbox-cols:4}@media (max-width:1024px){.shamar-m2m-checkboxes__clusters--cols-3,.shamar-m2m-checkboxes__clusters--cols-4{--shamar-checkbox-cols:2}}@media (max-width:640px){.shamar-m2m-checkboxes__clusters,.shamar-m2m-checkboxes__list{--shamar-checkbox-cols:1!important}}.shamar-list-refresh{border:1px solid var(--color-default);background:var(--color-neutral-primary);width:2.25rem;height:2.25rem;color:var(--color-body-subtle);border-radius:.5rem;justify-content:center;align-items:center;transition:color .15s,border-color .15s,background-color .15s,box-shadow .15s;display:inline-flex}.shamar-list-refresh:hover{color:var(--color-fg-brand);border-color:var(--color-fg-brand);background:var(--color-brand-softer)}.shamar-list-refresh.is-auto{color:var(--color-fg-brand);border-color:var(--color-fg-brand);background:var(--color-brand-softer);box-shadow:0 0 0 1px #f1511b59}@supports (color:color-mix(in lab, red, red)){.shamar-list-refresh.is-auto{box-shadow:0 0 0 1px color-mix(in srgb, var(--color-fg-brand) 35%, transparent)}}.shamar-list-refresh:disabled,.shamar-list-refresh.is-busy{cursor:wait;opacity:.55;pointer-events:none}.shamar-list-refresh.is-auto .shamar-list-refresh__icon,.shamar-list-refresh.is-busy .shamar-list-refresh__icon{animation:1.25s linear infinite shamar-refresh-spin}@keyframes shamar-refresh-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.shamar-list-refresh.is-auto .shamar-list-refresh__icon{animation:none}}.shamar-form-grid.is-dense,.shamar-detail-grid.is-dense{gap:.5rem}.shamar-form-grid.is-gapless,.shamar-detail-grid.is-gapless{gap:0}.shamar-tabs{flex-direction:column;gap:0;display:flex}.shamar-tabs--contained{border:1px solid var(--color-card-border);background:var(--color-neutral-primary);border-radius:.75rem;overflow:hidden}.shamar-tabs--vertical{flex-direction:row;align-items:stretch}.shamar-tabs__list{border-bottom:1px solid var(--color-card-border);background:var(--color-surface-header,var(--color-neutral-secondary));gap:.25rem;padding:.5rem;display:flex;overflow-x:auto}.shamar-tabs--vertical .shamar-tabs__list{border-bottom:0;border-right:1px solid var(--color-card-border);flex-direction:column;min-width:10rem}.shamar-tabs__tab{color:var(--color-body-subtle);cursor:pointer;background:0 0;border:0;border-radius:.5rem;align-items:center;gap:.4rem;padding:.45rem .75rem;font-size:.8125rem;font-weight:550;display:inline-flex}.shamar-tabs__tab.is-active{color:var(--color-heading);background:var(--color-neutral-primary);box-shadow:0 0 0 1px var(--color-card-border)}.shamar-tabs__badge{background:var(--color-brand-soft);color:var(--color-fg-brand);border-radius:999px;padding:.1rem .4rem;font-size:.7rem}.shamar-tabs__panels{flex:1;padding:1rem}.shamar-wizard{padding:1rem}.shamar-wizard__steps{flex-wrap:wrap;gap:.75rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.shamar-wizard__step{color:var(--color-body-subtle);align-items:center;gap:.4rem;font-size:.8125rem;display:inline-flex}.shamar-wizard__step.is-active{color:var(--color-heading);font-weight:600}.shamar-wizard__step.is-done{color:var(--color-fg-brand)}.shamar-wizard__index{background:var(--color-neutral-secondary);border-radius:999px;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;font-size:.75rem;display:inline-flex}.shamar-wizard__step.is-active .shamar-wizard__index{background:var(--color-fg-brand);color:#fff}.shamar-wizard__description{color:var(--color-body-subtle);margin:0 0 .75rem;font-size:.875rem}.shamar-wizard__nav{justify-content:flex-end;gap:.5rem;margin-top:1rem;display:flex}.shamar-wizard__btn{border:1px solid var(--color-card-border);background:var(--color-neutral-primary);cursor:pointer;border-radius:.5rem;padding:.4rem .85rem;font-size:.8125rem}.shamar-wizard__btn--primary{background:var(--color-fg-brand);color:#fff;border-color:#0000}.shamar-flex{flex-direction:column;gap:1rem;display:flex}@media (min-width:768px){.shamar-flex--from-md{flex-direction:row;align-items:flex-start}}.shamar-flex__item{flex:1 1 0;min-width:0}.shamar-flex__item--fixed{flex:none}.shamar-callout{border:1px solid var(--color-card-border);border-radius:.75rem;padding:.85rem 1rem}.shamar-callout__title{color:var(--color-heading);font-size:.875rem;font-weight:600}.shamar-callout__body{color:var(--color-body-subtle);margin-top:.25rem;font-size:.8125rem}.shamar-callout--info{background:#f1511b14}@supports (color:color-mix(in lab, red, red)){.shamar-callout--info{background:color-mix(in srgb, var(--color-fg-brand) 8%, transparent)}}.shamar-callout--info{border-color:#f1511b4d}@supports (color:color-mix(in lab, red, red)){.shamar-callout--info{border-color:color-mix(in srgb, var(--color-fg-brand) 30%, transparent)}}.shamar-callout--success{background:#16a34a1a}.shamar-callout--warning{background:#d977061a}.shamar-callout--danger{background:#b91c1c1a}@supports (color:color-mix(in lab, red, red)){.shamar-callout--danger{background:color-mix(in srgb, var(--color-fg-danger) 10%, transparent)}}.shamar-empty-state{text-align:center;color:var(--color-body-subtle);padding:2rem 1rem}.shamar-empty-state__title{color:var(--color-heading);margin:0;font-size:1rem}.shamar-empty-state__description{margin:.35rem 0 0;font-size:.875rem}.shamar-placeholder__label{text-transform:uppercase;color:var(--color-heading);font-size:.75rem;font-weight:600}.shamar-placeholder__content{color:var(--color-body);margin-top:.25rem;font-size:.875rem}.shamar-checkbox{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;width:100%;min-width:0;font-size:.875rem;display:flex}.shamar-checkbox--inline{min-height:2.5rem;padding:.375rem 0}.shamar-checkbox.is-disabled{opacity:.55;cursor:not-allowed}.shamar-checkbox__text{flex-direction:column;flex:auto;gap:.15rem;min-width:0;display:flex}.shamar-checkbox__label{color:var(--color-heading);font-size:.875rem;font-weight:500}.shamar-radio__option{align-items:center;gap:.5rem;font-size:.875rem;display:flex}.shamar-radio{flex-direction:column;gap:.5rem;display:flex}.shamar-radio--inline{flex-flow:wrap;gap:.75rem 1.25rem}.shamar-color{align-items:center;gap:.5rem;display:flex}.shamar-color__swatch{border:1px solid var(--color-card-border);cursor:pointer;background:0 0;border-radius:.4rem;width:2.25rem;height:2.25rem;padding:0}.shamar-color__value{cursor:default;min-width:0;color:var(--color-body-subtle);flex:auto}.shamar-color__value:read-only{background:var(--color-surface-inset,var(--color-neutral-secondary))}.shamar-input-affixes{align-items:stretch;gap:.5rem;width:100%;min-width:0;display:flex}.shamar-input-affixes>.shamar-input-group,.shamar-input-affixes>.shamar-input{flex:auto;min-width:0}.shamar-input-affixes--stacked{flex-direction:column;align-items:stretch;gap:.35rem}.shamar-input-affixes__outside{color:var(--color-body-subtle);white-space:nowrap;align-items:center;font-size:.8125rem;font-weight:500;display:inline-flex}.shamar-input-affixes__outside--icon{color:var(--color-heading)}.shamar-input-affixes:not(.shamar-input-affixes--stacked) .shamar-input-affixes__outside{align-self:center}.shamar-color-entry{align-items:center;gap:.4rem;display:inline-flex}.shamar-color-entry__swatch{border:1px solid var(--color-card-border);border-radius:.25rem;width:1rem;height:1rem}.shamar-tags{flex-direction:column;gap:.5rem;display:flex}.shamar-tags__list{flex-wrap:wrap;gap:.35rem;display:flex}.shamar-tags__chip{background:var(--color-brand-soft);color:var(--color-fg-brand);border-radius:999px;align-items:center;gap:.25rem;padding:.15rem .45rem;font-size:.75rem;display:inline-flex}.shamar-tags__remove{cursor:pointer;color:inherit;background:0 0;border:0;line-height:1}.shamar-input-group{align-items:stretch;width:100%;display:flex}.shamar-input-group .shamar-input{flex:1;min-width:0}.shamar-input-group.has-prefix .shamar-input{border-top-left-radius:0;border-bottom-left-radius:0}.shamar-input-group.has-suffix .shamar-input{border-top-right-radius:0;border-bottom-right-radius:0}.shamar-input-group__affix{border:1px solid var(--color-card-border);background:var(--color-surface-header,var(--color-neutral-secondary));color:var(--color-body-subtle);white-space:nowrap;align-items:center;padding:0 .75rem;font-size:.8125rem;display:inline-flex}.shamar-input-group.has-prefix .shamar-input-group__affix:first-child{border-right:0;border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.shamar-input-group.has-suffix .shamar-input-group__affix:last-child{border-left:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.shamar-badge{background:var(--color-brand-soft);color:var(--color-fg-brand);border-radius:999px;padding:.15rem .5rem;font-size:.75rem;font-weight:550;display:inline-flex}.shamar-badges{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.shamar-copyable{align-items:center;gap:.5rem;display:inline-flex}.shamar-copyable__btn{border:1px solid var(--color-card-border);background:var(--color-neutral-primary);cursor:pointer;border-radius:.35rem;padding:.15rem .4rem;font-size:.75rem}.shamar-image-entry{object-fit:cover;border:1px solid var(--color-card-border);border-radius:.5rem;max-width:8rem;max-height:8rem}.shamar-form-section__header--collapsible{cursor:pointer;-webkit-user-select:none;user-select:none}.shamar-form-section__header--collapsible:hover .shamar-form-section__chevron{color:var(--color-heading);background:var(--color-neutral-primary);border-color:var(--color-card-border)}.shamar-form-section__chevron{width:1.75rem;height:1.75rem;color:var(--color-body-subtle);background:0 0;border:1px solid #0000;border-radius:.5rem;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;transition:transform .18s,color .15s,background-color .15s,border-color .15s;display:inline-flex}.shamar-form-section__chevron svg{transition:transform .18s;display:block}.shamar-form-section__chevron.is-open svg{transform:rotate(180deg)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5db;--color-gray-400:#9ca3af;--color-gray-600:#4b5563;--color-gray-700:#374151;--color-gray-800:#1f2937;--color-gray-900:#111827;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-medium:500;--font-weight-semibold:600;--tracking-wide:.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary-50:#fff4f0;--color-primary-100:#fee9e2;--color-primary-200:#fdc9b8;--color-primary-300:#f89a72;--color-primary-400:#f36d3d;--color-primary-500:#f1511b;--color-primary-600:#e04a18;--color-primary-700:#c94115;--color-primary-800:#a23512;--color-primary-900:#7a280e;--color-primary-950:#451a0a;--color-shamar-primary:#f1511b;--color-shamar-accent:#286291;--color-shamar-muted:#64748b;--color-body:#475569;--color-body-subtle:#64748b;--color-heading:#0f172a;--color-neutral-primary:#fff;--color-neutral-secondary:#fff4f0;--color-neutral-tertiary:#fee9e2;--color-default:#fdc9b8;--color-fg-brand:#f1511b;--color-fg-brand-strong:#a23512;--color-brand-soft:#fee9e2;--color-brand-softer:#fee9e2;--color-fg-danger:#b91c1c;--color-danger-soft:#fef2f2;--color-success-soft:#ecfdf5;--color-success-strong:#047857;--color-warning-soft:#fffbeb;--color-warning-strong:#b45309;--color-toast-success-bg:#059669;--color-toast-success-border:#047857;--color-toast-success-glow:#05966947;--color-toast-success-title:#fff;--color-toast-success-body:#d1fae5;--color-toast-success-icon:#ecfdf5;--color-toast-error-bg:#dc2626;--color-toast-error-border:#b91c1c;--color-toast-error-glow:#dc262647;--color-toast-error-title:#fff;--color-toast-error-body:#fee2e2;--color-toast-error-icon:#fef2f2;--color-toast-warning-bg:#d97706;--color-toast-warning-border:#b45309;--color-toast-warning-glow:#d9770647;--color-toast-warning-title:#fff;--color-toast-warning-body:#fef3c7;--color-toast-warning-icon:#fffbeb;--color-toast-info-bg:#2563eb;--color-toast-info-border:#1d4ed8;--color-toast-info-glow:#2563eb47;--color-toast-info-title:#fff;--color-toast-info-body:#dbeafe;--color-toast-info-icon:#eff6ff;--color-shamar-shell:#fffbfa}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-shamar-shell:color-mix(in srgb, var(--color-primary-50) 35%, #fff)}}:root,:host{--color-card-border:var(--color-gray-200);--color-surface-hover:var(--color-neutral-tertiary);--color-surface-header:#fee9e280}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-surface-header:color-mix(in srgb, var(--color-neutral-tertiary) 50%, transparent)}}:root,:host{--color-surface-inset:#fee9e273}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-surface-inset:color-mix(in srgb, var(--color-neutral-tertiary) 45%, transparent)}}:root,:host{--color-surface-row-hover:#fee9e24d}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-surface-row-hover:color-mix(in srgb, var(--color-neutral-tertiary) 30%, transparent)}}:root,:host{--color-badge-neutral:var(--color-neutral-tertiary)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.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}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{inset-block:0}.top-0{top:0}.top-1\/2{top:50%}.top-\[60px\]{top:60px}.top-full{top:100%}.right-0{right:0}.right-1\.5{right:calc(var(--spacing) * 1.5)}.right-3{right:calc(var(--spacing) * 3)}.left-0{left:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.shamar-radio{width:1rem;height:1rem;accent-color:var(--color-fg-brand);color:var(--color-fg-brand);cursor:pointer;vertical-align:middle;flex-shrink:0;margin:0}.shamar-radio:focus-visible{outline:none;box-shadow:0 0 0 3px #f1511b47}@supports (color:color-mix(in lab, red, red)){.shamar-radio:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--color-fg-brand) 28%, transparent)}}.shamar-radio:focus-visible{border-radius:9999px}.shamar-radio:disabled{opacity:.55;cursor:not-allowed}.mx-auto{margin-inline:auto}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-auto{margin-top:auto}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.-ml-1\.5{margin-left:calc(var(--spacing) * -1.5)}.ml-1{margin-left:var(--spacing)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-\[2\.375rem\]{height:2.375rem}.h-full{height:100%}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-36{max-height:calc(var(--spacing) * 36)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-72{max-height:calc(var(--spacing) * 72)}.min-h-0{min-height:0}.min-h-\[2\.375rem\]{min-height:2.375rem}.min-h-\[40px\]{min-height:40px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.shamar-input{border:1px solid var(--color-default);background-color:var(--color-neutral-primary);width:100%;color:var(--color-heading);accent-color:var(--color-fg-brand);appearance:none;border-radius:.5rem;outline:none;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem}.shamar-input:focus,.shamar-input:focus-visible{border-color:var(--color-fg-brand);box-shadow:0 0 0 3px #f1511b47}@supports (color:color-mix(in lab, red, red)){.shamar-input:focus,.shamar-input:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--color-fg-brand) 28%, transparent)}}.shamar-input:focus,.shamar-input:focus-visible{outline:none}.shamar-input::placeholder{color:var(--color-body-subtle)}.shamar-input[type=search]::-webkit-search-decoration{appearance:none}.shamar-input[type=search]::-webkit-search-cancel-button{appearance:none}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-16{width:calc(var(--spacing) * 16)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-auto{width:auto}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[9rem\]{max-width:9rem}.max-w-\[12rem\]{max-width:12rem}.max-w-\[120px\]{max-width:120px}.max-w-\[140px\]{max-width:140px}.max-w-\[200px\]{max-width:200px}.max-w-full{max-width:100%}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.min-w-\[2\.25rem\]{min-width:2.25rem}.min-w-\[5\.5rem\]{min-width:5.5rem}.min-w-\[7rem\]{min-width:7rem}.min-w-\[10rem\]{min-width:10rem}.min-w-\[120px\]{min-width:120px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.shamar-select{appearance:none;border:1px solid var(--color-default);background-color:var(--color-neutral-primary);color:var(--color-heading);accent-color:var(--color-fg-brand);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%239ca3af' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M19.5 8.25l-7.5 7.5-7.5-7.5'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:.875rem;border-radius:.5rem;outline:none;padding:.4375rem 1.75rem .4375rem .625rem;font-size:.8125rem;line-height:1.25rem}.shamar-select:focus,.shamar-select:focus-visible{border-color:var(--color-fg-brand);box-shadow:0 0 0 3px #f1511b47}@supports (color:color-mix(in lab, red, red)){.shamar-select:focus,.shamar-select:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--color-fg-brand) 28%, transparent)}}.shamar-select:focus,.shamar-select:focus-visible{outline:none}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.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)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.shamar-card{border:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);border-radius:.75rem}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.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{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-card-border{border-color:var(--color-card-border)}.border-default{border-color:var(--color-default)}.border-fg-brand{border-color:var(--color-fg-brand)}.border-toast-warning-border{border-color:var(--color-toast-warning-border)}.bg-badge-neutral{background-color:var(--color-badge-neutral)}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.bg-black\/30{background-color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.bg-brand-softer{background-color:var(--color-brand-softer)}.bg-fg-brand{background-color:var(--color-fg-brand)}.bg-fg-danger{background-color:var(--color-fg-danger)}.bg-neutral-primary{background-color:var(--color-neutral-primary)}.bg-neutral-primary\/50{background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.bg-neutral-primary\/50{background-color:color-mix(in oklab, var(--color-neutral-primary) 50%, transparent)}}.bg-neutral-primary\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.bg-neutral-primary\/90{background-color:color-mix(in oklab, var(--color-neutral-primary) 90%, transparent)}}.bg-shamar-shell{background-color:var(--color-shamar-shell)}.bg-success-soft{background-color:var(--color-success-soft)}.bg-success-strong{background-color:var(--color-success-strong)}.bg-surface-header{background-color:var(--color-surface-header)}.bg-surface-inset{background-color:var(--color-surface-inset)}.bg-transparent{background-color:#0000}.bg-warning-soft{background-color:var(--color-warning-soft)}.bg-warning-strong{background-color:var(--color-warning-strong)}.object-contain{object-fit:contain}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-1{padding-left:var(--spacing)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.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)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-body{color:var(--color-body)}.text-body-subtle{color:var(--color-body-subtle)}.text-body-subtle\/50{color:#64748b80}@supports (color:color-mix(in lab, red, red)){.text-body-subtle\/50{color:color-mix(in oklab, var(--color-body-subtle) 50%, transparent)}}.text-fg-brand{color:var(--color-fg-brand)}.text-fg-brand\/70{color:#f1511bb3}@supports (color:color-mix(in lab, red, red)){.text-fg-brand\/70{color:color-mix(in oklab, var(--color-fg-brand) 70%, transparent)}}.text-fg-danger{color:var(--color-fg-danger)}.text-heading{color:var(--color-heading)}.text-success-strong{color:var(--color-success-strong)}.text-warning-strong{color:var(--color-warning-strong)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:text-fg-brand:is(:where(.group):hover *){color:var(--color-fg-brand)}}.placeholder\:text-body-subtle::placeholder{color:var(--color-body-subtle)}.last\:mb-0:last-child{margin-bottom:0}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:border-r-0:last-child{border-right-style:var(--tw-border-style);border-right-width:0}.focus-within\:border-fg-brand:focus-within{border-color:var(--color-fg-brand)}.focus-within\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:ring-fg-brand:focus-within{--tw-ring-color:var(--color-fg-brand)}@media (hover:hover){.hover\:border-fg-brand:hover{border-color:var(--color-fg-brand)}.hover\:border-fg-danger:hover{border-color:var(--color-fg-danger)}.hover\:bg-danger-soft:hover{background-color:var(--color-danger-soft)}.hover\:bg-neutral-secondary:hover{background-color:var(--color-neutral-secondary)}.hover\:bg-surface-hover:hover{background-color:var(--color-surface-hover)}.hover\:bg-surface-row-hover:hover{background-color:var(--color-surface-row-hover)}.hover\:text-fg-brand:hover{color:var(--color-fg-brand)}.hover\:text-fg-danger:hover{color:var(--color-fg-danger)}.hover\:text-heading:hover{color:var(--color-heading)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:opacity-40:disabled{opacity:.4}@media (min-width:40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.sm\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.sm\:border-card-border{border-color:var(--color-card-border)}}@media (min-width:48rem){.md\:relative{position:relative}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:translate-x-0{--tw-translate-x:0;translate:var(--tw-translate-x) var(--tw-translate-y)}.md\:flex-row{flex-direction:row}.md\:p-4{padding:calc(var(--spacing) * 4)}.md\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media (min-width:64rem){.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:justify-between{justify-content:space-between}}@media (min-width:80rem){.xl\:col-span-3{grid-column:span 3/span 3}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.dark\:block:where(.dark,.dark *){display:block}.dark\:hidden:where(.dark,.dark *){display:none}}.dark{--color-body:var(--color-gray-300);--color-body-subtle:var(--color-gray-400);--color-heading:#f3f4f6;--color-neutral-primary:var(--color-gray-900);--color-neutral-secondary:var(--color-gray-800);--color-neutral-tertiary:#151c28;--color-default:var(--color-gray-700);--color-fg-brand:var(--color-primary-500);--color-fg-brand-strong:var(--color-primary-400);--color-brand-soft:var(--color-primary-900);--color-brand-softer:var(--color-primary-950);--color-shamar-shell:var(--color-gray-800);--color-card-border:#4b55638c}@supports (color:color-mix(in lab, red, red)){.dark{--color-card-border:color-mix(in srgb, var(--color-gray-600) 55%, transparent)}}.dark{--color-fg-danger:#f87171;--color-danger-soft:#450a0a;--color-success-soft:#064e3b;--color-success-strong:#6ee7b7;--color-warning-soft:#451a03;--color-warning-strong:#fcd34d;--color-toast-success-bg:#065f46;--color-toast-success-border:#047857;--color-toast-success-glow:#10b98138;--color-toast-success-title:#ecfdf5;--color-toast-success-body:#a7f3d0;--color-toast-success-icon:#d1fae5;--color-toast-error-bg:#991b1b;--color-toast-error-border:#b91c1c;--color-toast-error-glow:#f8717133;--color-toast-error-title:#fef2f2;--color-toast-error-body:#fecaca;--color-toast-error-icon:#fee2e2;--color-toast-warning-bg:#92400e;--color-toast-warning-border:#b45309;--color-toast-warning-glow:#fbbf242e;--color-toast-warning-title:#fffbeb;--color-toast-warning-body:#fde68a;--color-toast-warning-icon:#fef3c7;--color-toast-info-bg:#1e40af;--color-toast-info-border:#1d4ed8;--color-toast-info-glow:#60a5fa2e;--color-toast-info-title:#eff6ff;--color-toast-info-body:#bfdbfe;--color-toast-info-icon:#dbeafe;--color-surface-hover:#242d3c}@supports (color:color-mix(in lab, red, red)){.dark{--color-surface-hover:color-mix(in srgb, var(--color-gray-700) 50%, var(--color-gray-900))}}.dark{--color-surface-header:#1a2331}@supports (color:color-mix(in lab, red, red)){.dark{--color-surface-header:color-mix(in srgb, var(--color-gray-800) 65%, var(--color-gray-900))}}.dark{--color-surface-inset:#192130}@supports (color:color-mix(in lab, red, red)){.dark{--color-surface-inset:color-mix(in srgb, var(--color-gray-800) 55%, var(--color-gray-900))}}.dark{--color-surface-row-hover:#1e2636}@supports (color:color-mix(in lab, red, red)){.dark{--color-surface-row-hover:color-mix(in srgb, var(--color-gray-700) 35%, var(--color-gray-900))}}.dark{--color-badge-neutral:#222a3a}@supports (color:color-mix(in lab, red, red)){.dark{--color-badge-neutral:color-mix(in srgb, var(--color-gray-700) 45%, var(--color-gray-900))}}:where(.dark,.dark *){color-scheme:dark}:where(html),:where(.dark,.dark *),input[type=checkbox],input[type=radio],input[type=range],input[type=color],progress,meter{accent-color:var(--color-fg-brand)}input[type=checkbox],input[type=radio]{width:1rem;height:1rem;color:var(--color-fg-brand);accent-color:var(--color-fg-brand);cursor:pointer;vertical-align:middle;flex-shrink:0;margin:0}input[type=checkbox]{appearance:none;border:1.5px solid var(--color-default);background-color:var(--color-neutral-primary);background-position:50%;background-repeat:no-repeat;background-size:.7rem;border-radius:.3rem;transition:background-color .12s,border-color .12s,box-shadow .12s}input[type=checkbox]:hover:not(:disabled){border-color:#f68762}@supports (color:color-mix(in lab, red, red)){input[type=checkbox]:hover:not(:disabled){border-color:color-mix(in srgb, var(--color-fg-brand) 55%, var(--color-default))}}input[type=checkbox]:checked{background-color:var(--color-fg-brand);border-color:var(--color-fg-brand);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5 6.5 11.5 12.5 4.5'/%3E%3C/svg%3E")}input[type=checkbox]:indeterminate{background-color:var(--color-fg-brand);border-color:var(--color-fg-brand);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M3.5 8h9'/%3E%3C/svg%3E")}input[type=radio]{border-radius:9999px}input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{outline:none;box-shadow:0 0 0 3px #f1511b47}@supports (color:color-mix(in lab, red, red)){input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--color-fg-brand) 28%, transparent)}}input[type=checkbox]:disabled,input[type=radio]:disabled{opacity:.55;cursor:not-allowed}[x-cloak]{display:none!important}a[href],button:not(:disabled),[role=button]:not([aria-disabled=true]),[role=tab],label[for],label:has(input,select,textarea),summary,select,input[type=checkbox],input[type=radio],.shamar-interactive{cursor:pointer}button:disabled,[aria-disabled=true]{cursor:not-allowed}.nav-item{color:var(--color-body)}@media (hover:hover){.nav-item:hover{background-color:var(--color-primary-100);color:var(--color-fg-brand)}}.nav-item.nav-active{background-color:var(--color-primary-200);color:var(--color-fg-brand-strong);font-weight:600}:where(.dark,.dark *) .nav-item:hover{background-color:var(--color-surface-hover);color:var(--color-heading)}:where(.dark,.dark *) .nav-item.nav-active{background-color:var(--color-surface-inset);color:var(--color-fg-brand);font-weight:600}fieldset.shamar-card{border:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);min-width:0;margin:0}:where(.dark,.dark *) .shamar-card,:where(.dark,.dark *) fieldset.shamar-card{background-color:var(--color-neutral-primary)}.shamar-form-section__header{border-bottom:1px solid var(--color-card-border);background-color:var(--color-surface-header,var(--color-neutral-secondary));align-items:flex-start;gap:.75rem;padding:1rem 1.25rem;display:flex}.shamar-form-section__header--centered{align-items:center}.shamar-form-section__icon{width:2rem;height:2rem;color:var(--color-fg-brand);background-color:var(--color-brand-soft);border-radius:.5rem;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.shamar-form-section__titles{flex-direction:column;justify-content:center;min-width:0;display:flex}.shamar-form-section__title{color:var(--color-heading);margin:0;font-size:.875rem;font-weight:600;line-height:1.35}.shamar-form-section__description{color:var(--color-body-subtle,var(--color-shamar-muted));margin:.25rem 0 0;font-size:.8125rem;line-height:1.4}.shamar-form-section__body{padding:1.25rem 1.25rem 1.75rem}.shamar-wizard__panel{padding-bottom:.5rem}.shamar-radio{padding-bottom:.15rem}.shamar-form-fieldset{border:1px solid var(--color-card-border);background-color:#0000;border-radius:.75rem;min-width:0;margin:0;padding:.75rem 1rem 1rem}.shamar-form-fieldset--card{background-color:var(--color-neutral-primary)}.shamar-form-section--plain{border:1px solid var(--color-card-border);background-color:#0000}.shamar-form-fieldset__legend{color:var(--color-heading);padding:0 .35rem;font-size:.8125rem;font-weight:600}.shamar-form-fieldset__description{color:var(--color-body-subtle,var(--color-shamar-muted));margin:0 0 .75rem;font-size:.8125rem}:where(.dark,.dark *) .shamar-form-fieldset{border-color:var(--color-card-border)}.shamar-dialog-backdrop{z-index:50;background-color:#0006;position:fixed;inset:0}.shamar-dialog-panel{z-index:51;border:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);border-radius:.75rem;flex-direction:column;max-width:calc(100vw - 1.5rem);max-height:calc(100vh - 1.5rem);display:flex;position:fixed;top:50%;left:50%;overflow:hidden}.shamar-dialog-panel.is-fullscreen{max-width:none;max-height:none;width:auto!important;height:auto!important;inset:.75rem!important;transform:none!important}.shamar-dialog-panel.is-prompt{max-height:calc(100vh - 1.5rem);width:min(28rem,100vw - 1.5rem)!important;height:auto!important}.shamar-dialog-header{border-bottom:1px solid var(--color-card-border);cursor:move;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;padding:.625rem .875rem;display:flex}.shamar-dialog-body{flex:1;min-height:0;padding:1rem;overflow:auto}.shamar-embed-section+.shamar-embed-section{border-top:1px solid var(--color-card-border);margin-top:1.25rem;padding-top:1.25rem}.shamar-embed-section__header{margin-bottom:1rem}.shamar-embed-section .shamar-field--readonly .shamar-field__value{background:0 0;border:0;padding:0}.shamar-dialog-footer{border-top:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);flex-shrink:0;justify-content:flex-end;align-items:center;gap:.5rem;padding:.75rem .875rem;display:flex}.shamar-dialog-body--prompt{padding-top:1.25rem;padding-bottom:1.25rem}.shamar-dialog-prompt-icon{border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;width:2.25rem;height:2.25rem;display:flex}.shamar-dialog-prompt-icon.is-danger{background-color:var(--color-danger-soft);color:var(--color-fg-danger)}.shamar-dialog-prompt-icon.is-warning{background-color:var(--color-warning-soft);color:var(--color-warning-strong)}.shamar-dialog-prompt-icon.is-info{background-color:var(--color-brand-soft);color:var(--color-fg-brand)}.shamar-dialog-prompt-icon.is-success{background-color:var(--color-success-soft);color:var(--color-success-strong)}.shamar-bulk-bar{border-top:1px solid var(--color-card-border);background-color:var(--color-surface-header,var(--color-neutral-primary));flex-wrap:wrap;align-items:center;gap:.75rem 1rem;padding:.625rem 1rem;display:flex}.shamar-bulk-bar__meta{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;min-width:0;display:flex}.shamar-bulk-bar__count{color:var(--color-body);font-size:.875rem;font-weight:500}.shamar-bulk-bar__link{color:var(--color-body-subtle);cursor:pointer;background:0 0;border:0;padding:0;font-size:.75rem;text-decoration:underline}.shamar-bulk-bar__link:hover{color:var(--color-fg-brand)}.shamar-bulk-menu{position:relative}.shamar-bulk-menu__trigger{border:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);color:var(--color-body);cursor:pointer;border-radius:.375rem;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.875rem;font-weight:500;display:inline-flex}.shamar-bulk-menu__trigger:hover{background-color:var(--color-surface-hover)}.shamar-bulk-menu__trigger[aria-expanded=true]{border-color:var(--color-fg-brand);color:var(--color-heading)}.shamar-bulk-menu__chevron{width:.875rem;height:.875rem;transition:transform .12s}.shamar-bulk-menu__chevron.is-open{transform:rotate(180deg)}.shamar-bulk-menu__panel{z-index:50;border:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);border-radius:.5rem;min-width:12rem;padding:.25rem;position:absolute;top:calc(100% + .25rem);left:0;box-shadow:0 10px 24px #0000001f}.shamar-bulk-menu__item{text-align:left;width:100%;color:var(--color-body);cursor:pointer;background:0 0;border:0;border-radius:.375rem;padding:.5rem .75rem;font-size:.875rem;display:block}.shamar-bulk-menu__item:hover{background-color:var(--color-surface-hover);color:var(--color-heading)}.shamar-bulk-menu__item.is-danger{color:var(--color-fg-danger)}.shamar-bulk-menu__item.is-danger:hover{background-color:var(--color-danger-soft);color:var(--color-fg-danger)}.shamar-chip{background-color:var(--color-brand-soft);max-width:100%;color:var(--color-fg-brand);border-radius:.375rem;align-items:center;gap:.25rem;padding:.125rem .25rem .125rem .5rem;font-size:.75rem;font-weight:500;display:inline-flex}.shamar-chip--group{background-color:var(--color-badge-neutral,var(--color-surface-hover));color:var(--color-heading)}.shamar-chip__remove{color:inherit;cursor:pointer;background:0 0;border:0;border-radius:.25rem;justify-content:center;align-items:center;padding:.125rem;display:inline-flex}.shamar-chip__remove:hover{background-color:currentColor}@supports (color:color-mix(in lab, red, red)){.shamar-chip__remove:hover{background-color:color-mix(in srgb, currentColor 16%, transparent)}}.shamar-list-card{overflow:visible}.shamar-list-toolbar,.shamar-bulk-bar{z-index:20;position:relative}.shamar-list-table-scroll{z-index:0;border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem;position:relative;overflow-x:auto}.shamar-toolbar-menu{position:relative}.shamar-toolbar-btn{border:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);color:var(--color-body);cursor:pointer;border-radius:.375rem;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.875rem;font-weight:500;display:inline-flex}.shamar-toolbar-btn:hover{background-color:var(--color-surface-hover)}.shamar-toolbar-btn.is-active{border-color:var(--color-fg-brand);color:var(--color-heading)}.shamar-toolbar-btn__badge{background-color:var(--color-fg-brand);color:#fff;border-radius:9999px;justify-content:center;align-items:center;min-width:1.25rem;height:1.25rem;padding:0 .35rem;font-size:.6875rem;font-weight:700;display:inline-flex}.shamar-toolbar-panel{z-index:50;border:1px solid var(--color-card-border);background-color:var(--color-neutral-primary);border-radius:.625rem;width:min(18rem,100vw - 2rem);position:absolute;top:calc(100% + .35rem);right:0;overflow:hidden;box-shadow:0 12px 28px #00000024}.shamar-toolbar-panel__head{justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem .875rem .5rem;display:flex}.shamar-toolbar-panel__list{max-height:18rem;padding:.25rem;overflow:auto}.shamar-toolbar-panel__item{text-align:left;width:100%;color:var(--color-body);cursor:pointer;background:0 0;border:0;border-radius:.375rem;justify-content:space-between;align-items:center;gap:.75rem;padding:.55rem .75rem;font-size:.875rem;display:flex}.shamar-toolbar-panel__item:hover,.shamar-toolbar-panel__item.is-selected{background-color:var(--color-surface-hover);color:var(--color-heading)}.shamar-toolbar-panel__back{border:0;border-bottom:1px solid var(--color-card-border);width:100%;color:var(--color-heading);cursor:pointer;background:0 0;align-items:center;gap:.35rem;padding:.65rem .875rem;font-size:.8125rem;font-weight:600;display:inline-flex}.shamar-toolbar-panel__back:hover{background-color:var(--color-surface-hover)}.shamar-list-group__cell{background:color-mix(in srgb, color-mix(in srgb, var(--color-neutral-tertiary) 50%, transparent) 88%, transparent);padding:.5rem 1rem}@supports (color:color-mix(in lab, red, red)){.shamar-list-group__cell{background:color-mix(in srgb, var(--color-surface-header,#f5f5f5) 88%, transparent)}}.shamar-list-group__cell{border-top:1px solid var(--color-card-border)}.shamar-list-group__label{letter-spacing:.02em;text-transform:uppercase;color:var(--color-heading);font-size:.75rem;font-weight:700}.shamar-list-group__count{color:var(--color-body-subtle);margin-left:.5rem;font-size:.75rem}.shamar-list-group__count:before{content:"· "}.shamar-secret-reveal{border:1px solid var(--color-card-border);background-color:var(--color-neutral-secondary,var(--color-neutral-primary));border-radius:.5rem;align-items:stretch;gap:.5rem;margin-top:.25rem;display:flex;overflow:hidden}.shamar-secret-reveal__value{word-break:break-all;min-width:0;color:var(--color-heading);flex:1;padding:.75rem .875rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.75rem;line-height:1.4}.shamar-secret-reveal__copy{border:none;border-left:1px solid var(--color-card-border);color:var(--color-fg-brand);cursor:pointer;background:0 0;flex-shrink:0;align-self:stretch;padding:0 .875rem;font-size:.8125rem;font-weight:600}.shamar-secret-reveal__copy:hover{background-color:var(--color-surface-hover)}.shamar-dialog-resize-handle{cursor:nwse-resize;width:1rem;height:1rem;position:absolute;bottom:0;right:0}#shamar-toast-stack{z-index:60;pointer-events:none;flex-direction:column;gap:.75rem;width:min(26rem,100vw - 2rem);display:flex;position:fixed;top:1rem;right:1rem}.shamar-toast{pointer-events:auto;box-shadow:0 18px 40px -16px var(--shamar-toast-glow,#0f172a2e), 0 8px 16px -12px #0f172a29;opacity:0;border:1px solid #0000;border-radius:.9rem;align-items:flex-start;gap:.875rem;padding:.95rem 1rem;transition:opacity .2s,transform .2s;display:flex;transform:translate(.75rem)scale(.98)}.shamar-toast.is-visible{opacity:1;transform:translate(0)scale(1)}.shamar-toast--success{background:var(--color-toast-success-bg);border-color:var(--color-toast-success-border);--shamar-toast-glow:var(--color-toast-success-glow)}.shamar-toast--error{background:var(--color-toast-error-bg);border-color:var(--color-toast-error-border);--shamar-toast-glow:var(--color-toast-error-glow)}.shamar-toast--warning{background:var(--color-toast-warning-bg);border-color:var(--color-toast-warning-border);--shamar-toast-glow:var(--color-toast-warning-glow)}.shamar-toast--info{background:var(--color-toast-info-bg);border-color:var(--color-toast-info-border);--shamar-toast-glow:var(--color-toast-info-glow)}.shamar-toast__icon{width:2.25rem;height:2.25rem;color:var(--shamar-toast-icon,#fff);background:#ffffff29;border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.shamar-toast--success .shamar-toast__icon{--shamar-toast-icon:var(--color-toast-success-icon)}.shamar-toast--error .shamar-toast__icon{--shamar-toast-icon:var(--color-toast-error-icon)}.shamar-toast--warning .shamar-toast__icon{--shamar-toast-icon:var(--color-toast-warning-icon)}.shamar-toast--info .shamar-toast__icon{--shamar-toast-icon:var(--color-toast-info-icon)}.shamar-toast__icon svg{width:1.15rem;height:1.15rem}.shamar-toast__content{flex:1;min-width:0;padding-top:.1rem}.shamar-toast__title{letter-spacing:-.01em;color:var(--shamar-toast-title,#fff);margin:0;font-size:.95rem;font-weight:700;line-height:1.35}.shamar-toast--success .shamar-toast__title{--shamar-toast-title:var(--color-toast-success-title)}.shamar-toast--error .shamar-toast__title{--shamar-toast-title:var(--color-toast-error-title)}.shamar-toast--warning .shamar-toast__title{--shamar-toast-title:var(--color-toast-warning-title)}.shamar-toast--info .shamar-toast__title{--shamar-toast-title:var(--color-toast-info-title)}.shamar-toast__body{color:var(--shamar-toast-body,#ffffffe0);margin:.2rem 0 0;font-size:.875rem;line-height:1.5}.shamar-toast--success .shamar-toast__body{--shamar-toast-body:var(--color-toast-success-body)}.shamar-toast--error .shamar-toast__body{--shamar-toast-body:var(--color-toast-error-body)}.shamar-toast--warning .shamar-toast__body{--shamar-toast-body:var(--color-toast-warning-body)}.shamar-toast--info .shamar-toast__body{--shamar-toast-body:var(--color-toast-info-body)}.shamar-toast__dismiss{width:1.75rem;height:1.75rem;color:var(--shamar-toast-body,#ffffffe0);cursor:pointer;background:0 0;border:0;border-radius:.5rem;flex-shrink:0;justify-content:center;align-items:center;margin:-.15rem -.15rem 0 0;font-size:1.15rem;line-height:1;transition:background-color .15s,color .15s;display:inline-flex}.shamar-toast__dismiss:hover{color:var(--shamar-toast-title,#fff);background:#ffffff1f}.shamar-kanban-grid{grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem;display:grid}@media (min-width:640px){.shamar-kanban-grid{grid-template-columns:repeat(min(2, var(--shamar-kanban-cols,4)), minmax(0, 1fr))}}@media (min-width:768px){.shamar-kanban-grid{grid-template-columns:repeat(min(3, var(--shamar-kanban-cols,4)), minmax(0, 1fr))}}@media (min-width:1024px){.shamar-kanban-grid{grid-template-columns:repeat(var(--shamar-kanban-cols,4), minmax(0, 1fr))}}.shamar-kanban-board{align-items:stretch;gap:1rem;padding-bottom:.25rem;display:flex;overflow-x:auto}.shamar-kanban-column{border:1px solid var(--color-border-default,#0000001a);background:var(--color-surface-header,#00000008);border-radius:.75rem;flex-direction:column;flex:0 0 min(18rem,85vw);min-height:16rem;max-height:min(70vh,42rem);display:flex}.shamar-kanban-column__header{border-bottom:1px solid var(--color-border-default,#00000014);justify-content:space-between;align-items:center;gap:.5rem;padding:.75rem .875rem;display:flex}.shamar-kanban-column__title{color:var(--color-text-heading,inherit);text-transform:capitalize;margin:0;font-size:.8125rem;font-weight:600}.shamar-kanban-column__count{color:var(--color-text-body-subtle,#00000073);font-variant-numeric:tabular-nums;font-size:.75rem}.shamar-kanban-column__body{flex-direction:column;flex:auto;gap:.75rem;padding:.75rem;display:flex;overflow-y:auto}.shamar-kanban-column__empty{text-align:center;color:var(--color-text-body-subtle,#00000073);margin:0;padding:1.5rem .5rem;font-size:.8125rem}select.shamar-select option,select.shamar-input option{background-color:var(--color-neutral-primary);color:var(--color-heading)}.shamar-form-grid{grid-template-columns:repeat(var(--shamar-form-cols,2), minmax(0, 1fr));gap:1.25rem;display:grid}.shamar-detail-grid{grid-template-columns:repeat(var(--shamar-detail-cols,2), minmax(0, 1fr));gap:0;display:grid}@media (max-width:639px){.shamar-form-grid,.shamar-detail-grid{grid-template-columns:1fr}.shamar-field-cell,.shamar-detail-cell{grid-column:1/-1!important}}.shamar-field-cell,.shamar-detail-cell{min-width:0}.shamar-detail__label{letter-spacing:.02em;text-transform:uppercase;color:var(--color-heading);margin:0;font-size:.75rem;font-weight:650;display:block}.shamar-detail__label-row,.shamar-field__label-row{justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.5rem;display:flex}.shamar-detail__label-row{margin-bottom:0}.shamar-detail__label-row .shamar-detail__label{flex:auto;min-width:0}.shamar-field__label-row .shamar-field__label{flex:auto;min-width:0;margin-bottom:0}.shamar-field__label{color:var(--color-heading);margin-bottom:.5rem;font-size:.875rem;font-weight:500;display:block}.shamar-field__required{color:var(--color-fg-danger)}.shamar-field__hint{text-align:right;max-width:55%;color:var(--color-body-subtle);flex:0 auto;margin:0;font-size:.75rem;font-weight:500;line-height:1.35}.shamar-field__help{color:var(--color-body-subtle);margin-top:.5rem;font-size:.75rem;line-height:1.4}.shamar-field__error{color:var(--color-fg-danger);margin-top:.375rem;font-size:.75rem;line-height:1.4}.shamar-field.is-invalid .shamar-field__label{color:var(--color-fg-danger)}.shamar-input.is-invalid,.shamar-select.is-invalid,.shamar-m2m-checkboxes.is-invalid,[data-shamar-m2o-config].is-invalid,[data-shamar-m2m-config].is-invalid{border-color:var(--color-fg-danger)}.shamar-input.is-invalid:focus,.shamar-select.is-invalid:focus{outline-color:var(--color-fg-danger);border-color:var(--color-fg-danger)}.shamar-field__value{color:var(--color-body);font-size:.875rem;line-height:1.5}.shamar-textarea-entry{border:1px solid var(--color-card-border);background:var(--color-surface-inset);white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-all;border-radius:.5rem;max-height:24rem;margin:0;padding:.625rem .75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.8125rem;line-height:1.45;display:block;overflow:auto}.shamar-field--readonly .shamar-field__value{border:1px solid var(--color-card-border);background:var(--color-surface-inset);border-radius:.5rem;padding:.625rem .75rem}.shamar-input-group__affix--icon,.shamar-input-group__affix--action{padding:0 .65rem}.shamar-input-group__affix--action{cursor:pointer;background:var(--color-neutral-primary);color:var(--color-body-subtle)}.shamar-input-group__affix--action:hover{color:var(--color-heading);background:var(--color-surface-hover,var(--color-neutral-secondary))}.shamar-field__counter{color:var(--color-body-subtle);text-align:right;margin:.35rem 0 0;font-size:.75rem}.shamar-input--file{padding:.4rem .5rem}.shamar-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.75rem;width:100%;min-width:0;display:flex;position:relative}.shamar-toggle--inline{min-height:2.5rem;padding:.375rem 0}.shamar-toggle__text{flex-direction:column;flex:auto;gap:.15rem;min-width:0;display:flex}.shamar-toggle.is-disabled{opacity:.55;cursor:not-allowed}.shamar-toggle__input{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.shamar-toggle__track{background:var(--color-gray-300);border:1px solid #9ca3afb3;border-radius:9999px;flex-shrink:0;width:2.75rem;height:1.5rem;position:relative}@supports (color:color-mix(in lab, red, red)){.shamar-toggle__track{border:1px solid color-mix(in srgb, var(--color-gray-400) 70%, transparent)}}.shamar-toggle__track{transition:background-color .18s,border-color .18s,box-shadow .18s}:where(.dark,.dark *) .shamar-toggle__track{background:var(--color-gray-700);border-color:var(--color-gray-600)}.shamar-toggle__thumb{background:#fff;border-radius:9999px;width:1.125rem;height:1.125rem;transition:transform .18s;position:absolute;top:.125rem;left:.125rem;box-shadow:0 1px 3px #0f172a2e}.shamar-toggle__input:focus-visible+.shamar-toggle__track{border-color:var(--color-fg-brand);box-shadow:0 0 0 3px #f1511b47}@supports (color:color-mix(in lab, red, red)){.shamar-toggle__input:focus-visible+.shamar-toggle__track{box-shadow:0 0 0 3px color-mix(in srgb, var(--color-fg-brand) 28%, transparent)}}.shamar-toggle__input:focus-visible+.shamar-toggle__track{outline:none}.shamar-toggle__input:checked+.shamar-toggle__track{background:var(--color-fg-brand);border-color:#c14116}@supports (color:color-mix(in lab, red, red)){.shamar-toggle__input:checked+.shamar-toggle__track{border-color:color-mix(in srgb, var(--color-fg-brand) 80%, #000)}}.shamar-toggle__input:checked+.shamar-toggle__track .shamar-toggle__thumb{transform:translate(1.25rem)}.shamar-toggle__label{color:var(--color-heading);font-size:.875rem;font-weight:500}.shamar-boolean{border:1px solid #0000;border-radius:9999px;align-items:center;gap:.4rem;max-width:100%;padding:.2rem .65rem .2rem .3rem;font-size:.8125rem;font-weight:600;line-height:1.2;display:inline-flex}.shamar-boolean--custom{padding-left:.35rem}.shamar-boolean--icon-only{padding:.3rem}.shamar-boolean__mark{background:currentColor;border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;width:1.35rem;height:1.35rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.shamar-boolean__mark{background:color-mix(in srgb, currentColor 14%, transparent)}}.shamar-boolean__glyph{font-size:.8rem;line-height:1}.shamar-boolean__label{letter-spacing:.01em;padding-right:.15rem}.shamar-boolean.is-true{background:var(--color-success-soft);color:var(--color-success-strong);border-color:#0478572e}@supports (color:color-mix(in lab, red, red)){.shamar-boolean.is-true{border-color:color-mix(in srgb, var(--color-success-strong) 18%, transparent)}}.shamar-boolean.is-false{background:var(--color-badge-neutral);color:var(--color-body-subtle);border-color:#e5e7ebcc}@supports (color:color-mix(in lab, red, red)){.shamar-boolean.is-false{border-color:color-mix(in srgb, var(--color-card-border) 80%, transparent)}}.shamar-field .shamar-select,.shamar-field-cell .shamar-select{width:100%;min-width:0;max-width:100%;display:block}.shamar-combobox{width:100%;min-width:0;position:relative}.shamar-combobox__control{border:1px solid var(--color-default);background:var(--color-neutral-primary);cursor:text;border-radius:.5rem;align-items:center;gap:.35rem;width:100%;min-height:2.5rem;padding:.25rem .35rem .25rem .65rem;transition:border-color .15s,box-shadow .15s;display:flex}.shamar-combobox.is-open .shamar-combobox__control,.shamar-combobox__control:focus-within{border-color:var(--color-fg-brand);box-shadow:0 0 0 3px #f1511b47}@supports (color:color-mix(in lab, red, red)){.shamar-combobox.is-open .shamar-combobox__control,.shamar-combobox__control:focus-within{box-shadow:0 0 0 3px color-mix(in srgb, var(--color-fg-brand) 28%, transparent)}}.shamar-combobox.is-invalid .shamar-combobox__control{border-color:var(--color-fg-danger)}.shamar-combobox.is-disabled .shamar-combobox__control{opacity:.55;cursor:not-allowed;background:var(--color-surface-inset,var(--color-neutral-secondary))}.shamar-combobox__chips{flex-wrap:wrap;flex:auto;align-items:center;gap:.35rem;min-width:0;display:flex}.shamar-combobox__chip{background:var(--color-brand-soft);max-width:100%;color:var(--color-fg-brand);border-radius:999px;align-items:center;gap:.2rem;padding:.15rem .2rem .15rem .5rem;font-size:.75rem;font-weight:550;line-height:1.25;display:inline-flex}.shamar-combobox__chip-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.shamar-combobox__chip-remove{width:1.15rem;height:1.15rem;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.shamar-combobox__chip-remove:hover{background:#f1511b2e}@supports (color:color-mix(in lab, red, red)){.shamar-combobox__chip-remove:hover{background:color-mix(in srgb, var(--color-fg-brand) 18%, transparent)}}.shamar-combobox__search{width:auto;min-width:4rem;color:var(--color-heading);box-shadow:none;background:0 0;border:0;outline:none;flex:6rem;margin:0;padding:.3rem 0;font-size:.875rem}.shamar-combobox__search--single{flex:auto;min-width:0}.shamar-combobox__search:disabled{cursor:not-allowed}.shamar-combobox__clear,.shamar-combobox__toggle{width:1.75rem;height:1.75rem;color:var(--color-body-subtle);cursor:pointer;background:0 0;border:0;border-radius:.375rem;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.shamar-combobox__clear:hover,.shamar-combobox__toggle:hover{color:var(--color-heading);background:var(--color-surface-hover,var(--color-neutral-secondary))}.shamar-combobox__toggle{color:var(--color-body-subtle)}.shamar-combobox.is-open .shamar-combobox__toggle{color:var(--color-fg-brand)}.shamar-combobox__dropdown{z-index:40;border:1px solid var(--color-default);background:var(--color-neutral-primary);border-radius:.5rem;max-height:16rem;padding:.35rem;position:absolute;top:calc(100% + .25rem);left:0;right:0;overflow:auto;box-shadow:0 10px 30px #0000001f}.shamar-combobox__option{width:100%;color:var(--color-heading);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:.375rem;justify-content:space-between;align-items:center;gap:.75rem;padding:.45rem .6rem;font-size:.875rem;display:flex}.shamar-combobox__option:hover,.shamar-combobox__option.is-active{background:var(--color-surface-hover,var(--color-neutral-secondary))}.shamar-combobox__option.is-selected{color:var(--color-fg-brand);font-weight:550}.shamar-combobox__option-check{color:var(--color-fg-brand);flex-shrink:0}.shamar-combobox__empty{color:var(--color-body-subtle);padding:.65rem .6rem;font-size:.8125rem}.shamar-field.text-right .shamar-input,.shamar-field.text-right .shamar-select,.shamar-field.text-right .shamar-combobox__search{text-align:right}.shamar-field.text-center .shamar-input,.shamar-field.text-center .shamar-select,.shamar-field.text-center .shamar-combobox__search{text-align:center}.shamar-field.text-justify .shamar-input,.shamar-field.text-justify .shamar-select,.shamar-field.text-justify .shamar-combobox__search{text-align:justify}.shamar-boolean-badge{border-radius:9999px;align-items:center;padding:.2rem .65rem;font-size:.75rem;font-weight:600;display:inline-flex}.shamar-boolean-badge.is-true{background:var(--color-success-soft);color:var(--color-success-strong)}.shamar-boolean-badge.is-false{background:var(--color-badge-neutral);color:var(--color-body-subtle)}.shamar-field[data-field-type=relation],.shamar-m2o,.shamar-m2o__row{width:100%}.shamar-m2o__input{min-height:2.375rem}.shamar-m2o__input.is-readonly{cursor:default;opacity:.85}.shamar-m2o__dropdown{min-width:100%}.shamar-m2o__dropdown li[role=option],.shamar-m2m__dropdown li[role=option],.shamar-m2m-table li{cursor:pointer}.shamar-m2o__dropdown svg,.shamar-m2m__dropdown svg,.shamar-m2m-table svg{flex-shrink:0;width:.875rem;height:.875rem}.shamar-m2o__clear svg,.shamar-m2m .shamar-chip__remove svg{flex-shrink:0;width:.75rem;height:.75rem}.shamar-m2o__open{align-self:stretch}.shamar-m2m{width:100%}.shamar-m2m__box{cursor:text}.shamar-m2m__box.is-readonly{cursor:default;opacity:.85}.shamar-m2m__box.is-open{border-color:var(--color-fg-brand,currentColor)}.shamar-m2m__input{min-height:1.25rem}.shamar-m2m__dropdown{min-width:100%}.shamar-chip{line-height:1.25}.shamar-m2m-checkboxes,.shamar-m2m-table{width:100%}.shamar-m2m-table__card{overflow:visible}.shamar-m2m-table__toolbar{z-index:2;position:relative}.shamar-m2m-table__add{position:relative}.shamar-m2m-table__add-dropdown{z-index:50}.shamar-form-section:has(.shamar-m2m-table),.shamar-form-section:has(.shamar-m2o),.shamar-form-section:has(.shamar-m2m){overflow:visible}.shamar-m2m-checkboxes__body--framed{border:1px solid var(--color-default);border-radius:.5rem;max-height:28rem;padding:.5rem;overflow:auto}.shamar-m2m-checkboxes__body--open{border:0;max-height:none;padding:0;overflow:visible}.shamar-m2m-checkboxes__list{grid-template-columns:repeat(var(--shamar-checkbox-cols,1), minmax(0, 1fr));gap:.125rem .5rem;display:grid}.shamar-m2m-checkboxes__clusters{grid-template-columns:repeat(var(--shamar-checkbox-cols,1), minmax(0, 1fr));align-items:start;gap:.625rem;display:grid}.shamar-m2m-checkboxes__cluster{border:1px solid var(--color-default);background:var(--color-neutral-primary);border-radius:.5rem;flex-direction:column;min-width:0;display:flex;overflow:hidden}.shamar-m2m-checkboxes__cluster-header{border-bottom:1px solid var(--color-default);background:var(--color-surface-header,var(--color-neutral-secondary,transparent));justify-content:space-between;align-items:flex-start;gap:.5rem;padding:.5rem .625rem;display:flex}.shamar-m2m-checkboxes__cluster-count{color:var(--color-body-subtle);font-variant-numeric:tabular-nums;font-size:.65rem;line-height:1.25}.shamar-m2m-checkboxes__cluster-body{flex-direction:column;gap:.0625rem;padding:.375rem;display:flex}.shamar-m2m-checkboxes__clusters--cols-1,.shamar-m2m-checkboxes__list--cols-1{--shamar-checkbox-cols:1}.shamar-m2m-checkboxes__clusters--cols-2,.shamar-m2m-checkboxes__list--cols-2{--shamar-checkbox-cols:2}.shamar-m2m-checkboxes__clusters--cols-3,.shamar-m2m-checkboxes__list--cols-3{--shamar-checkbox-cols:3}.shamar-m2m-checkboxes__clusters--cols-4,.shamar-m2m-checkboxes__list--cols-4{--shamar-checkbox-cols:4}@media (max-width:1024px){.shamar-m2m-checkboxes__clusters--cols-3,.shamar-m2m-checkboxes__clusters--cols-4{--shamar-checkbox-cols:2}}@media (max-width:640px){.shamar-m2m-checkboxes__clusters,.shamar-m2m-checkboxes__list{--shamar-checkbox-cols:1!important}}.shamar-list-refresh{border:1px solid var(--color-default);background:var(--color-neutral-primary);width:2.25rem;height:2.25rem;color:var(--color-body-subtle);border-radius:.5rem;justify-content:center;align-items:center;transition:color .15s,border-color .15s,background-color .15s,box-shadow .15s;display:inline-flex}.shamar-list-refresh:hover{color:var(--color-fg-brand);border-color:var(--color-fg-brand);background:var(--color-brand-softer)}.shamar-list-refresh.is-auto{color:var(--color-fg-brand);border-color:var(--color-fg-brand);background:var(--color-brand-softer);box-shadow:0 0 0 1px #f1511b59}@supports (color:color-mix(in lab, red, red)){.shamar-list-refresh.is-auto{box-shadow:0 0 0 1px color-mix(in srgb, var(--color-fg-brand) 35%, transparent)}}.shamar-list-refresh:disabled,.shamar-list-refresh.is-busy{cursor:wait;opacity:.55;pointer-events:none}.shamar-list-refresh.is-auto .shamar-list-refresh__icon,.shamar-list-refresh.is-busy .shamar-list-refresh__icon{animation:1.25s linear infinite shamar-refresh-spin}@keyframes shamar-refresh-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.shamar-list-refresh.is-auto .shamar-list-refresh__icon{animation:none}}.shamar-form-grid.is-dense,.shamar-detail-grid.is-dense{gap:.5rem}.shamar-form-grid.is-gapless,.shamar-detail-grid.is-gapless{gap:0}.shamar-tabs{flex-direction:column;gap:0;display:flex}.shamar-tabs--contained{border:1px solid var(--color-card-border);background:var(--color-neutral-primary);border-radius:.75rem;overflow:hidden}.shamar-tabs--vertical{flex-direction:row;align-items:stretch}.shamar-tabs__list{border-bottom:1px solid var(--color-card-border);background:var(--color-surface-header,var(--color-neutral-secondary));gap:.25rem;padding:.5rem;display:flex;overflow-x:auto}.shamar-tabs--vertical .shamar-tabs__list{border-bottom:0;border-right:1px solid var(--color-card-border);flex-direction:column;min-width:10rem}.shamar-tabs__tab{color:var(--color-body-subtle);cursor:pointer;background:0 0;border:0;border-radius:.5rem;align-items:center;gap:.4rem;padding:.45rem .75rem;font-size:.8125rem;font-weight:550;display:inline-flex}.shamar-tabs__tab.is-active{color:var(--color-heading);background:var(--color-neutral-primary);box-shadow:0 0 0 1px var(--color-card-border)}.shamar-tabs__badge{background:var(--color-brand-soft);color:var(--color-fg-brand);border-radius:999px;padding:.1rem .4rem;font-size:.7rem}.shamar-tabs__panels{flex:1;padding:1rem}.shamar-wizard{padding:1rem}.shamar-wizard__steps{flex-wrap:wrap;gap:.75rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.shamar-wizard__step{color:var(--color-body-subtle);align-items:center;gap:.4rem;font-size:.8125rem;display:inline-flex}.shamar-wizard__step.is-active{color:var(--color-heading);font-weight:600}.shamar-wizard__step.is-done{color:var(--color-fg-brand)}.shamar-wizard__index{background:var(--color-neutral-secondary);border-radius:999px;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;font-size:.75rem;display:inline-flex}.shamar-wizard__step.is-active .shamar-wizard__index{background:var(--color-fg-brand);color:#fff}.shamar-wizard__description{color:var(--color-body-subtle);margin:0 0 .75rem;font-size:.875rem}.shamar-wizard__nav{justify-content:flex-end;gap:.5rem;margin-top:1rem;display:flex}.shamar-wizard__btn{border:1px solid var(--color-card-border);background:var(--color-neutral-primary);cursor:pointer;border-radius:.5rem;padding:.4rem .85rem;font-size:.8125rem}.shamar-wizard__btn--primary{background:var(--color-fg-brand);color:#fff;border-color:#0000}.shamar-flex{flex-direction:column;gap:1rem;display:flex}@media (min-width:768px){.shamar-flex--from-md{flex-direction:row;align-items:flex-start}}.shamar-flex__item{flex:1 1 0;min-width:0}.shamar-flex__item--fixed{flex:none}.shamar-callout{border:1px solid var(--color-card-border);border-radius:.75rem;padding:.85rem 1rem}.shamar-callout__title{color:var(--color-heading);font-size:.875rem;font-weight:600}.shamar-callout__body{color:var(--color-body-subtle);margin-top:.25rem;font-size:.8125rem}.shamar-callout--info{background:#f1511b14}@supports (color:color-mix(in lab, red, red)){.shamar-callout--info{background:color-mix(in srgb, var(--color-fg-brand) 8%, transparent)}}.shamar-callout--info{border-color:#f1511b4d}@supports (color:color-mix(in lab, red, red)){.shamar-callout--info{border-color:color-mix(in srgb, var(--color-fg-brand) 30%, transparent)}}.shamar-callout--success{background:#16a34a1a}.shamar-callout--warning{background:#d977061a}.shamar-callout--danger{background:#b91c1c1a}@supports (color:color-mix(in lab, red, red)){.shamar-callout--danger{background:color-mix(in srgb, var(--color-fg-danger) 10%, transparent)}}.shamar-empty-state{text-align:center;color:var(--color-body-subtle);padding:2rem 1rem}.shamar-empty-state__title{color:var(--color-heading);margin:0;font-size:1rem}.shamar-empty-state__description{margin:.35rem 0 0;font-size:.875rem}.shamar-placeholder__label{text-transform:uppercase;color:var(--color-heading);font-size:.75rem;font-weight:600}.shamar-placeholder__content{color:var(--color-body);margin-top:.25rem;font-size:.875rem}.shamar-checkbox{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;width:100%;min-width:0;font-size:.875rem;display:flex}.shamar-checkbox--inline{min-height:2.5rem;padding:.375rem 0}.shamar-checkbox.is-disabled{opacity:.55;cursor:not-allowed}.shamar-checkbox__text{flex-direction:column;flex:auto;gap:.15rem;min-width:0;display:flex}.shamar-checkbox__label{color:var(--color-heading);font-size:.875rem;font-weight:500}.shamar-radio__option{align-items:center;gap:.5rem;font-size:.875rem;display:flex}.shamar-radio{flex-direction:column;gap:.5rem;display:flex}.shamar-radio--inline{flex-flow:wrap;gap:.75rem 1.25rem}.shamar-color{align-items:center;gap:.5rem;display:flex}.shamar-color__swatch{border:1px solid var(--color-card-border);cursor:pointer;background:0 0;border-radius:.4rem;width:2.25rem;height:2.25rem;padding:0}.shamar-color__value{cursor:default;min-width:0;color:var(--color-body-subtle);flex:auto}.shamar-color__value:read-only{background:var(--color-surface-inset,var(--color-neutral-secondary))}.shamar-input-affixes{align-items:stretch;gap:.5rem;width:100%;min-width:0;display:flex}.shamar-input-affixes>.shamar-input-group,.shamar-input-affixes>.shamar-input{flex:auto;min-width:0}.shamar-input-affixes--stacked{flex-direction:column;align-items:stretch;gap:.35rem}.shamar-input-affixes__outside{color:var(--color-body-subtle);white-space:nowrap;align-items:center;font-size:.8125rem;font-weight:500;display:inline-flex}.shamar-input-affixes__outside--icon{color:var(--color-heading)}.shamar-input-affixes:not(.shamar-input-affixes--stacked) .shamar-input-affixes__outside{align-self:center}.shamar-color-entry{align-items:center;gap:.4rem;display:inline-flex}.shamar-color-entry__swatch{border:1px solid var(--color-card-border);border-radius:.25rem;width:1rem;height:1rem}.shamar-tags{flex-direction:column;gap:.5rem;display:flex}.shamar-tags__list{flex-wrap:wrap;gap:.35rem;display:flex}.shamar-tags__chip{background:var(--color-brand-soft);color:var(--color-fg-brand);border-radius:999px;align-items:center;gap:.25rem;padding:.15rem .45rem;font-size:.75rem;display:inline-flex}.shamar-tags__remove{cursor:pointer;color:inherit;background:0 0;border:0;line-height:1}.shamar-input-group{align-items:stretch;width:100%;display:flex}.shamar-input-group .shamar-input{flex:1;min-width:0}.shamar-input-group.has-prefix .shamar-input{border-top-left-radius:0;border-bottom-left-radius:0}.shamar-input-group.has-suffix .shamar-input{border-top-right-radius:0;border-bottom-right-radius:0}.shamar-input-group__affix{border:1px solid var(--color-card-border);background:var(--color-surface-header,var(--color-neutral-secondary));color:var(--color-body-subtle);white-space:nowrap;align-items:center;padding:0 .75rem;font-size:.8125rem;display:inline-flex}.shamar-input-group.has-prefix .shamar-input-group__affix:first-child{border-right:0;border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.shamar-input-group.has-suffix .shamar-input-group__affix:last-child{border-left:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.shamar-badge{background:var(--color-brand-soft);color:var(--color-fg-brand);border-radius:999px;padding:.15rem .5rem;font-size:.75rem;font-weight:550;display:inline-flex}.shamar-badges{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.shamar-copyable{align-items:center;gap:.5rem;display:inline-flex}.shamar-copyable__btn{border:1px solid var(--color-card-border);background:var(--color-neutral-primary);cursor:pointer;border-radius:.35rem;padding:.15rem .4rem;font-size:.75rem}.shamar-image-entry{object-fit:cover;border:1px solid var(--color-card-border);border-radius:.5rem;max-width:8rem;max-height:8rem}.shamar-form-section__header--collapsible{cursor:pointer;-webkit-user-select:none;user-select:none}.shamar-form-section__header--collapsible:hover .shamar-form-section__chevron{color:var(--color-heading);background:var(--color-neutral-primary);border-color:var(--color-card-border)}.shamar-form-section__chevron{width:1.75rem;height:1.75rem;color:var(--color-body-subtle);background:0 0;border:1px solid #0000;border-radius:.5rem;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;transition:transform .18s,color .15s,background-color .15s,border-color .15s;display:inline-flex}.shamar-form-section__chevron svg{transition:transform .18s;display:block}.shamar-form-section__chevron.is-open svg{transform:rotate(180deg)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
@@ -0,0 +1,115 @@
1
+ import { type AuthLoginMode, type ExternalIdentity } from '@shamar/cherubim';
2
+ export interface LdapDomainConfig {
3
+ /** Stable key, e.g. corp. */
4
+ id: string;
5
+ /** Human label for logs / UI. */
6
+ label?: string;
7
+ /** LDAP(S) URL. */
8
+ url: string;
9
+ /** Optional service-account bind for search. */
10
+ bindDn?: string;
11
+ bindPassword?: string;
12
+ searchBase: string;
13
+ /** Filter with {{username}} placeholder. */
14
+ searchFilter: string;
15
+ emailAttribute?: string;
16
+ nameAttribute?: string;
17
+ /** Default memberOf. */
18
+ groupsAttribute?: string;
19
+ groupRoleMap?: Record<string, string>;
20
+ /** Prefer this domain when login uses an email domain suffix. */
21
+ emailDomains?: string[];
22
+ /** Prefer this domain for NetBIOS-prefixed logins. */
23
+ netbios?: string;
24
+ tls?: {
25
+ rejectUnauthorized?: boolean;
26
+ };
27
+ /** Operation timeout in milliseconds (ldapts `timeout`). Default 10_000. */
28
+ timeoutMs?: number;
29
+ /** TCP connect timeout in milliseconds (ldapts `connectTimeout`). Defaults to `timeoutMs`. */
30
+ connectTimeoutMs?: number;
31
+ }
32
+ export interface LdapAuthSettings {
33
+ domains: LdapDomainConfig[];
34
+ /**
35
+ * How to link a successful LDAP bind to a local user:
36
+ * - `existing` (default) — only log in if a local row already has the sync `externalId`
37
+ * - `create` — upsert a local user when missing (auto-provision)
38
+ */
39
+ provisioning?: LdapProvisioningMode;
40
+ }
41
+ /** Local user must pre-exist (`existing`) or may be auto-created (`create`). */
42
+ export type LdapProvisioningMode = 'existing' | 'create';
43
+ /** Pluggable directory client — production uses ldapts; tests inject a mock. */
44
+ export interface LdapDirectoryClient {
45
+ authenticate(username: string, password: string, domain: LdapDomainConfig): Promise<ExternalIdentity | null>;
46
+ }
47
+ export type LocalCredentialVerifier<TUser> = (username: string, password: string) => Promise<TUser | null>;
48
+ export type LdapUserLinker<TUser> = (identity: ExternalIdentity) => Promise<TUser | null>;
49
+ export type PasswordLoginSuccess<TUser> = {
50
+ ok: true;
51
+ user: TUser;
52
+ method: 'ldap' | 'local';
53
+ };
54
+ export type PasswordLoginFailure = {
55
+ ok: false;
56
+ message: string;
57
+ /** Set when directory contact timed out. */
58
+ code?: 'ldap_timeout';
59
+ };
60
+ export type PasswordLoginResult<TUser> = PasswordLoginSuccess<TUser> | PasswordLoginFailure;
61
+ export declare const LDAP_TIMEOUT_MESSAGE = "Directory server timed out. Please try again.";
62
+ /** Thrown / rethrown when ldapts (or the network) times out contacting a domain. */
63
+ export declare class LdapTimeoutError extends Error {
64
+ readonly domainId: string;
65
+ constructor(domainId: string, cause?: unknown);
66
+ }
67
+ export declare function isLdapTimeoutError(error: unknown): boolean;
68
+ export type AuthenticateLdapResult = {
69
+ identity: ExternalIdentity | null;
70
+ /** True when at least one domain attempt failed due to a timeout. */
71
+ timedOut: boolean;
72
+ };
73
+ export declare function resolveLdapProvisioning(mode: LdapProvisioningMode | undefined): LdapProvisioningMode;
74
+ export declare function resolveAuthLoginMode(mode: AuthLoginMode | undefined, domains: LdapDomainConfig[] | undefined): AuthLoginMode;
75
+ /**
76
+ * Order domains: hinted matches first, then remaining config order.
77
+ */
78
+ export declare function orderLdapDomains(usernameInput: string, domains: LdapDomainConfig[]): LdapDomainConfig[];
79
+ export declare function searchUsernameForDomain(usernameInput: string, _domain: LdapDomainConfig): string;
80
+ /**
81
+ * Try domains in order until one authenticates.
82
+ * Returns `{ identity: null }` when none succeed (caller decides local fallback).
83
+ * Sets `timedOut` when any domain attempt hit a connect/operation timeout.
84
+ */
85
+ export declare function authenticateLdap(usernameInput: string, password: string, domains: LdapDomainConfig[], client: LdapDirectoryClient): Promise<AuthenticateLdapResult>;
86
+ /**
87
+ * Orchestrate local / LDAP / both login modes.
88
+ *
89
+ * After a successful directory bind, {@link linkFromLdap} must resolve a local
90
+ * user (matched by sync UID / externalId). When `provisioning` is `existing`
91
+ * and no local row exists, LDAP login fails (or falls through to local when
92
+ * `loginMode` is `both`).
93
+ */
94
+ export declare function resolvePasswordLogin<TUser>(options: {
95
+ username: string;
96
+ password: string;
97
+ loginMode?: AuthLoginMode;
98
+ domains?: LdapDomainConfig[];
99
+ /** Default `existing` — AD users must already exist locally with a sync UID. */
100
+ provisioning?: LdapProvisioningMode;
101
+ client: LdapDirectoryClient;
102
+ verifyLocal: LocalCredentialVerifier<TUser>;
103
+ /**
104
+ * Link LDAP identity → local user.
105
+ * Return `null` when no local user exists (and auto-create is not desired).
106
+ */
107
+ linkFromLdap: LdapUserLinker<TUser>;
108
+ }): Promise<PasswordLoginResult<TUser>>;
109
+ /** Apply domain groupRoleMap to an identity's groups. */
110
+ export declare function roleIdsFromLdapIdentity(identity: ExternalIdentity, domain: LdapDomainConfig): string[];
111
+ /**
112
+ * Default ldapts-backed client. Requires the optional `ldapts` peer dependency.
113
+ */
114
+ export declare function createLdaptsDirectoryClient(): LdapDirectoryClient;
115
+ //# sourceMappingURL=ldap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ldap.d.ts","sourceRoot":"","sources":["../../src/auth/ldap.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACvC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B;;;;OAIG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC;AAED,gFAAgF;AAChF,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEzD,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAClC,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;CACrC;AAED,MAAM,MAAM,uBAAuB,CAAC,KAAK,IAAI,CAC3C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAE3B,MAAM,MAAM,cAAc,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,gBAAgB,KAAK,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAE1F,MAAM,MAAM,oBAAoB,CAAC,KAAK,IAAI;IACxC,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,KAAK,IAAI,oBAAoB,CAAC,KAAK,CAAC,GAAG,oBAAoB,CAAC;AAE5F,eAAO,MAAM,oBAAoB,kDAAkD,CAAC;AAEpF,oFAAoF;AACpF,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAY9C;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAmB1D;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,qEAAqE;IACrE,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,oBAAoB,GAAG,SAAS,GACrC,oBAAoB,CAEtB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,aAAa,GAAG,SAAS,EAC/B,OAAO,EAAE,gBAAgB,EAAE,GAAG,SAAS,GACtC,aAAa,CAGf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,gBAAgB,EAAE,GAC1B,gBAAgB,EAAE,CAmBpB;AAED,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,gBAAgB,GACxB,MAAM,CAGR;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,sBAAsB,CAAC,CA8BjC;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,gFAAgF;IAChF,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC5C;;;OAGG;IACH,YAAY,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;CACrC,GAAG,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CA+DtC;AAED,yDAAyD;AACzD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAEtG;AA6BD;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,mBAAmB,CAuFjE"}