@pygmalionjs/pygmalion 0.5.18 → 0.5.20
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.
- package/dist-lib/{FrozenRoutePreview-CZOpvN6z.js → FrozenRoutePreview-DdLO8y9P.js} +1865 -1641
- package/dist-lib/pygmalion.js +7002 -6862
- package/dist-lib/style.css +1 -1
- package/dist-lib/testing.js +1 -1
- package/dist-lib/types/canvas/ShadowRoutePreview.d.ts +6 -0
- package/dist-lib/types/editor/captureSupply.d.ts +107 -0
- package/dist-lib/types/editor/designImport.d.ts +47 -1
- package/dist-lib/types/editor/documentStability.d.ts +35 -0
- package/dist-lib/types/editor/domImport.d.ts +5 -0
- package/dist-lib/types/editor/flowSessionScheduler.d.ts +6 -0
- package/dist-lib/types/editor/flowSessions.d.ts +33 -1
- package/dist-lib/types/editor/interactiveStates.d.ts +27 -0
- package/dist-lib/types/editor/mountScheduler.d.ts +31 -0
- package/dist-lib/types/editor/previewBootstrap.d.ts +55 -3
- package/dist-lib/types/editor/projectBootGate.d.ts +10 -0
- package/dist-lib/types/editor/routePreview.d.ts +27 -7
- package/dist-lib/types/editor/store.d.ts +6 -0
- package/dist-lib/types/editor/storyboardJourney.d.ts +37 -0
- package/dist-lib/types/lib.d.ts +21 -1
- package/dist-lib/types/shell/LayerTree.d.ts +6 -3
- package/dist-lib/types/shell/StoryboardGraphPanel.d.ts +1 -9
- package/node/dev-mirror.mjs +11 -0
- package/node/preview-artifact-plugin.mjs +237 -40
- package/node/storyboard-capture-runtime.mjs +97 -9
- package/node/vite.mjs +4 -0
- package/package.json +1 -1
- package/dist-lib/types/canvas/StoryboardConnections.d.ts +0 -31
- package/dist-lib/types/shell/AssetsPanel.d.ts +0 -3
package/dist-lib/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@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}}}@layer theme{:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-emerald-300:oklch(84.5% .143 164.978);--color-sky-300:oklch(82.8% .111 230.318);--color-neutral-100:oklch(97% 0 none);--color-neutral-200:oklch(92.2% 0 none);--color-neutral-400:oklch(70.8% 0 none);--color-neutral-500:oklch(55.6% 0 none);--color-neutral-600:oklch(43.9% 0 none);--color-neutral-700:oklch(37.1% 0 none);--color-neutral-800:oklch(26.9% 0 none);--color-neutral-900:oklch(20.5% 0 none);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.top-8{top:calc(var(--spacing) * 8)}.top-\[-30px\]{top:-30px}.top-\[4px\]{top:4px}.right-0{right:0}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.bottom-0{bottom:0}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-11{bottom:calc(var(--spacing) * 11)}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-\[4px\]{left:4px}.left-\[5px\]{left:5px}.left-\[9px\]{left:9px}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.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}}.mx-1{margin-inline:var(--spacing)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.my-1\.5{margin-block:calc(var(--spacing) * 1.5)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.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-3{margin-top:calc(var(--spacing) * 3)}.mt-\[2px\]{margin-top:2px}.mr-1{margin-right:var(--spacing)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.table{display:table}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-2\/5{height:40%}.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-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-14{height:calc(var(--spacing) * 14)}.h-24{height:calc(var(--spacing) * 24)}.h-\[3px\]{height:3px}.h-\[5px\]{height:5px}.h-\[9px\]{height:9px}.h-\[18px\]{height:18px}.h-\[20px\]{height:20px}.h-\[22px\]{height:22px}.h-\[26px\]{height:26px}.h-\[40px\]{height:40px}.h-\[180px\]{height:180px}.h-\[844px\]{height:844px}.h-full{height:100%}.h-px{height:1px}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-28{max-height:calc(var(--spacing) * 28)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-44{max-height:calc(var(--spacing) * 44)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-\[60vh\]{max-height:60vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[420px\]{max-height:420px}.max-h-\[min\(720px\,calc\(100vh-72px\)\)\]{max-height:min(720px,100vh - 72px)}.min-h-0{min-height:0}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-\[180px\]{min-height:180px}.min-h-full{min-height:100%}.w-1{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.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-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-11{width:calc(var(--spacing) * 11)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-44{width:calc(var(--spacing) * 44)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-\[3px\]{width:3px}.w-\[5px\]{width:5px}.w-\[9px\]{width:9px}.w-\[18px\]{width:18px}.w-\[22px\]{width:22px}.w-\[100px\]{width:100px}.w-\[320px\]{width:320px}.w-\[390px\]{width:390px}.w-\[560px\]{width:560px}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-28{max-width:calc(var(--spacing) * 28)}.max-w-32{max-width:calc(var(--spacing) * 32)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-60{max-width:calc(var(--spacing) * 60)}.max-w-\[110px\]{max-width:110px}.max-w-\[196px\]{max-width:196px}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-52{min-width:calc(var(--spacing) * 52)}.min-w-\[20px\]{min-width:20px}.min-w-\[24px\]{min-width:24px}.min-w-\[26px\]{min-width:26px}.min-w-\[56px\]{min-width:56px}.flex-1{flex:1}.flex-none{flex:none}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-\[1fr_1fr_32px\]{grid-template-columns:1fr 1fr 32px}.grid-cols-\[1fr_2fr\]{grid-template-columns:1fr 2fr}.grid-cols-\[1fr_36px_36px\]{grid-template-columns:1fr 36px 36px}.grid-cols-\[18px_minmax\(0\,1fr\)_58px\]{grid-template-columns:18px minmax(0,1fr) 58px}.grid-cols-\[32px_minmax\(0\,1fr\)_32px\]{grid-template-columns:32px minmax(0,1fr) 32px}.grid-cols-\[56px_minmax\(0\,1fr\)_82px\]{grid-template-columns:56px minmax(0,1fr) 82px}.grid-cols-\[72px_minmax\(0\,1fr\)\]{grid-template-columns:72px minmax(0,1fr)}.grid-cols-\[88px_minmax\(0\,1fr\)\]{grid-template-columns:88px minmax(0,1fr)}.grid-cols-\[90px_minmax\(0\,1fr\)_58px\]{grid-template-columns:90px minmax(0,1fr) 58px}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[repeat\(4\,32px\)_minmax\(0\,1fr\)\]{grid-template-columns:repeat(4,32px) minmax(0,1fr)}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.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-3{gap:calc(var(--spacing) * 3)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-\[3px\]{gap:3px}.gap-\[12px\]{gap:12px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * 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-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[3px\]{border-radius:3px}.rounded-\[13px\]{border-radius:13px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-l-lg{border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.rounded-r-lg{border-top-right-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.border-\[\#0d99ff\]{border-color:#0d99ff}.border-\[\#7c3aed\]{border-color:#7c3aed}.border-\[\#9747ff\]{border-color:#9747ff}.border-\[\#a78bfa\]{border-color:#a78bfa}.border-\[\#b9b0ee\]{border-color:#b9b0ee}.border-\[\#bfdbfe\]{border-color:#bfdbfe}.border-\[\#c4b5fd\]{border-color:#c4b5fd}.border-\[\#cfc7fa\]{border-color:#cfc7fa}.border-\[\#cfe8d8\]{border-color:#cfe8d8}.border-\[\#d4d4d8\]{border-color:#d4d4d8}.border-\[\#d8ecff\]{border-color:#d8ecff}.border-\[\#d9d9d9\]{border-color:#d9d9d9}.border-\[\#d9ecfb\]{border-color:#d9ecfb}.border-\[\#dedee3\]{border-color:#dedee3}.border-\[\#e4e0ff\]{border-color:#e4e0ff}.border-\[\#e4e4e7\]{border-color:#e4e4e7}.border-\[\#e6e6e6\]{border-color:#e6e6e6}.border-\[\#e9e4ff\]{border-color:#e9e4ff}.border-\[\#e879f9\]{border-color:#e879f9}.border-\[\#ececec\]{border-color:#ececec}.border-\[\#f0f0f0\]{border-color:#f0f0f0}.border-\[\#f2d4a7\]{border-color:#f2d4a7}.border-\[\#fecaca\]{border-color:#fecaca}.border-\[\#fed7aa\]{border-color:#fed7aa}.border-black\/5{border-color:#0000000d}@supports (color:color-mix(in lab,red,red)){.border-black\/5{border-color:color-mix(in oklab,var(--color-black) 5%,transparent)}}.border-black\/10{border-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.border-black\/10{border-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.border-current{border-color:currentColor}.border-neutral-700{border-color:var(--color-neutral-700)}.border-neutral-800{border-color:var(--color-neutral-800)}.border-transparent{border-color:#0000}.border-white{border-color:var(--color-white)}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.bg-\[\#0d99ff\]{background-color:#0d99ff}.bg-\[\#1e1e1e\]{background-color:#1e1e1e}.bg-\[\#6d28d9\]{background-color:#6d28d9}.bg-\[\#6f5de7\]{background-color:#6f5de7}.bg-\[\#9747ff\]{background-color:#9747ff}.bg-\[\#18181b\]{background-color:#18181b}.bg-\[\#a1a1aa\]{background-color:#a1a1aa}.bg-\[\#c9c9c9\]{background-color:#c9c9c9}.bg-\[\#d4d4d8\]{background-color:#d4d4d8}.bg-\[\#d9d3fa\]{background-color:#d9d3fa}.bg-\[\#dbeafe\]{background-color:#dbeafe}.bg-\[\#dcfce7\]{background-color:#dcfce7}.bg-\[\#e5f4ff\]{background-color:#e5f4ff}.bg-\[\#e6e6e6\]{background-color:#e6e6e6}.bg-\[\#e6e9ec\]{background-color:#e6e9ec}.bg-\[\#e8f7ee\]{background-color:#e8f7ee}.bg-\[\#eceafd\]{background-color:#eceafd}.bg-\[\#ecfdf3\]{background-color:#ecfdf3}.bg-\[\#ede9fe\]{background-color:#ede9fe}.bg-\[\#edeaff\]{background-color:#edeaff}.bg-\[\#eff6ff\]{background-color:#eff6ff}.bg-\[\#eff8ff\]{background-color:#eff8ff}.bg-\[\#f0edff\]{background-color:#f0edff}.bg-\[\#f0f0f0\]{background-color:#f0f0f0}.bg-\[\#f1efff\]{background-color:#f1efff}.bg-\[\#f2f2f2\]{background-color:#f2f2f2}.bg-\[\#f3e8ff\]{background-color:#f3e8ff}.bg-\[\#f4f4f5\]{background-color:#f4f4f5}.bg-\[\#f4faff\]{background-color:#f4faff}.bg-\[\#f4fbf6\]{background-color:#f4fbf6}.bg-\[\#f5f0ff\]{background-color:#f5f0ff}.bg-\[\#f5f3ff\]{background-color:#f5f3ff}.bg-\[\#f5f5f5\]{background-color:#f5f5f5}.bg-\[\#f7f7f8\]{background-color:#f7f7f8}.bg-\[\#f8f7ff\]{background-color:#f8f7ff}.bg-\[\#f8f8fa\]{background-color:#f8f8fa}.bg-\[\#f24822\]{background-color:#f24822}.bg-\[\#faf5ff\]{background-color:#faf5ff}.bg-\[\#faf9ff\]{background-color:#faf9ff}.bg-\[\#fafafa\]{background-color:#fafafa}.bg-\[\#fdeaea\]{background-color:#fdeaea}.bg-\[\#fef2f2\]{background-color:#fef2f2}.bg-\[\#fef3c7\]{background-color:#fef3c7}.bg-\[\#ffedd5\]{background-color:#ffedd5}.bg-\[\#fff1f2\]{background-color:#fff1f2}.bg-\[\#fff2df\]{background-color:#fff2df}.bg-\[\#fff3dc\]{background-color:#fff3dc}.bg-\[\#fff7ed\]{background-color:#fff7ed}.bg-\[\#fff7f7\]{background-color:#fff7f7}.bg-\[\#fff8e8\]{background-color:#fff8e8}.bg-\[\#fff9ef\]{background-color:#fff9ef}.bg-\[\#ffffff\]{background-color:#fff}.bg-amber-500{background-color:var(--color-amber-500)}.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-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black) 80%,transparent)}}.bg-current{background-color:currentColor}.bg-neutral-700{background-color:var(--color-neutral-700)}.bg-neutral-800{background-color:var(--color-neutral-800)}.bg-neutral-900\/70{background-color:#171717b3}@supports (color:color-mix(in lab,red,red)){.bg-neutral-900\/70{background-color:color-mix(in oklab,var(--color-neutral-900) 70%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.bg-white\/70{background-color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.bg-white\/70{background-color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.object-cover{object-fit:cover}.object-top{object-position:top}.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-2\.5{padding:calc(var(--spacing) * 2.5)}.p-\[16px\]{padding:16px}.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)}.px-6{padding-inline:calc(var(--spacing) * 6)}.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-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-\[1px\]{padding-block:1px}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-1{padding-left:var(--spacing)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[7px\]{font-size:7px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[24px\]{font-size:24px}.leading-3{--tw-leading:calc(var(--spacing) * 3);line-height:calc(var(--spacing) * 3)}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.text-\[\#0d99ff\]{color:#0d99ff}.text-\[\#1d4ed8\]{color:#1d4ed8}.text-\[\#4b30f3\]{color:#4b30f3}.text-\[\#4c3eb1\]{color:#4c3eb1}.text-\[\#5b4bc4\]{color:#5b4bc4}.text-\[\#5b21b6\]{color:#5b21b6}.text-\[\#6d28d9\]{color:#6d28d9}.text-\[\#007be5\]{color:#007be5}.text-\[\#7c3aed\]{color:#7c3aed}.text-\[\#8a5a00\]{color:#8a5a00}.text-\[\#8a7bd8\]{color:#8a7bd8}.text-\[\#9a5a00\]{color:#9a5a00}.text-\[\#9a3412\]{color:#9a3412}.text-\[\#237a42\]{color:#237a42}.text-\[\#333\]{color:#333}.text-\[\#444\]{color:#444}.text-\[\#555\]{color:#555}.text-\[\#666\]{color:#666}.text-\[\#777\]{color:#777}.text-\[\#888\]{color:#888}.text-\[\#999\]{color:#999}.text-\[\#1677b8\]{color:#1677b8}.text-\[\#7162d7\]{color:#7162d7}.text-\[\#9189bd\]{color:#9189bd}.text-\[\#9747ff\]{color:#9747ff}.text-\[\#15803d\]{color:#15803d}.text-\[\#16794b\]{color:#16794b}.text-\[\#18181b\]{color:#18181b}.text-\[\#27272a\]{color:#27272a}.text-\[\#52525b\]{color:#52525b}.text-\[\#64748b\]{color:#64748b}.text-\[\#71717a\]{color:#71717a}.text-\[\#111111\]{color:#111}.text-\[\#166534\]{color:#166534}.text-\[\#333333\]{color:#333}.text-\[\#a1a1aa\]{color:#a1a1aa}.text-\[\#a21caf\]{color:#a21caf}.text-\[\#aaa0df\]{color:#aaa0df}.text-\[\#b3b3b3\]{color:#b3b3b3}.text-\[\#b91c1c\]{color:#b91c1c}.text-\[\#b45309\]{color:#b45309}.text-\[\#c4c4c8\]{color:#c4c4c8}.text-\[\#c9c9c9\]{color:#c9c9c9}.text-\[\#c0392b\]{color:#c0392b}.text-\[\#c2410c\]{color:#c2410c}.text-\[\#d92d3a\]{color:#d92d3a}.text-\[\#e4e4e7\]{color:#e4e4e7}.text-\[\#f04452\]{color:#f04452}.text-amber-300{color:var(--color-amber-300)}.text-amber-600{color:var(--color-amber-600)}.text-emerald-300{color:var(--color-emerald-300)}.text-neutral-100{color:var(--color-neutral-100)}.text-neutral-200{color:var(--color-neutral-200)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-500{color:var(--color-neutral-500)}.text-red-300{color:var(--color-red-300)}.text-sky-300{color:var(--color-sky-300)}.text-white{color:var(--color-white)}.text-white\/50{color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.text-white\/50{color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.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}.decoration-\[\#1677b8\]\/30{text-decoration-color:#1677b84d}.underline-offset-2{text-underline-offset:2px}.accent-\[\#0d99ff\]{accent-color:#0d99ff}.opacity-40{opacity:.4}.opacity-65{opacity:.65}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px 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)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_4px_rgba\(0\,0\,0\,\.08\)\]{--tw-shadow:0 1px 4px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_6px_rgba\(0\,0\,0\,\.12\)\]{--tw-shadow:0 1px 6px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_8px_rgba\(0\,0\,0\,\.08\)\]{--tw-shadow:0 2px 8px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_8px_rgba\(0\,0\,0\,\.15\)\]{--tw-shadow:0 2px 8px var(--tw-shadow-color,#00000026);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_14px_rgba\(0\,0\,0\,\.08\)\]{--tw-shadow:0 2px 14px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_14px_rgba\(0\,0\,0\,\.12\)\]{--tw-shadow:0 2px 14px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(0\,0\,0\,\.14\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#00000024);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_20px_rgba\(0\,0\,0\,\.3\)\]{--tw-shadow:0 4px 20px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_20px_rgba\(0\,0\,0\,\.25\)\]{--tw-shadow:0 4px 20px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_40px_rgba\(0\,0\,0\,\.25\)\]{--tw-shadow:0 8px 40px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_16px_48px_rgba\(15\,23\,42\,\.22\)\]{--tw-shadow:0 16px 48px var(--tw-shadow-color,#0f172a38);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_0_0_3px_rgba\(245\,158\,11\,\.85\)\]{--tw-shadow:inset 0 0 0 3px var(--tw-shadow-color,#f59e0bd9);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.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)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px 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)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + 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)}.ring-\[\#6f5de7\]{--tw-ring-color:#6f5de7}.ring-\[\#dedee3\]{--tw-ring-color:#dedee3}.ring-\[\#ececec\]{--tw-ring-color:#ececec}.outline,.outline-1{outline-style:var(--tw-outline-style);outline-width:1px}.outline-\[\#0d99ff\]\/30{outline-color:#0d99ff4d}.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,)}.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-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))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media(hover:hover){.group-hover\:visible:is(:where(.group):hover *){visibility:visible}}.placeholder\:text-\[\#a1a1aa\]::placeholder{color:#a1a1aa}.focus-within\:ring-1:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + 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-\[\#0d99ff\]:focus-within{--tw-ring-color:#0d99ff}.focus-within\:ring-inset:focus-within{--tw-ring-inset:inset}@media(hover:hover){.hover\:border-\[\#a78bfa\]:hover{border-color:#a78bfa}.hover\:bg-\[\#0b87e0\]:hover{background-color:#0b87e0}.hover\:bg-\[\#0d99ff\]\/20:hover{background-color:#0d99ff33}.hover\:bg-\[\#5b21b6\]:hover{background-color:#5b21b6}.hover\:bg-\[\#e5f4ff\]:hover{background-color:#e5f4ff}.hover\:bg-\[\#e9e9ee\]:hover{background-color:#e9e9ee}.hover\:bg-\[\#ececec\]:hover{background-color:#ececec}.hover\:bg-\[\#f0edff\]:hover{background-color:#f0edff}.hover\:bg-\[\#f0f7ff\]:hover{background-color:#f0f7ff}.hover\:bg-\[\#f3e8ff\]:hover{background-color:#f3e8ff}.hover\:bg-\[\#f4f4f5\]:hover{background-color:#f4f4f5}.hover\:bg-\[\#f5f3ff\]:hover{background-color:#f5f3ff}.hover\:bg-\[\#f5f5f5\]:hover{background-color:#f5f5f5}.hover\:bg-\[\#f7f7f7\]:hover{background-color:#f7f7f7}.hover\:bg-\[\#f8fafc\]:hover{background-color:#f8fafc}.hover\:bg-\[\#faf8ff\]:hover{background-color:#faf8ff}.hover\:bg-\[\#fafafa\]:hover{background-color:#fafafa}.hover\:bg-\[\#fee2e2\]:hover{background-color:#fee2e2}.hover\:bg-\[\#fef2f2\]:hover{background-color:#fef2f2}.hover\:bg-\[\#ffe4e7\]:hover{background-color:#ffe4e7}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-black:hover{background-color:var(--color-black)}.hover\:bg-neutral-600:hover{background-color:var(--color-neutral-600)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.hover\:text-\[\#333\]:hover{color:#333}.hover\:text-\[\#555\]:hover{color:#555}.hover\:text-\[\#18181b\]:hover{color:#18181b}.hover\:text-\[\#f04452\]:hover{color:#f04452}.hover\:ring-1:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + 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)}.hover\:ring-\[\#e6e6e6\]:hover{--tw-ring-color:#e6e6e6}.hover\:ring-inset:hover{--tw-ring-inset:inset}}.focus\:border-\[\#0d99ff\]:focus{border-color:#0d99ff}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + 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\:ring-\[\#0d99ff\]:focus{--tw-ring-color:#0d99ff}.focus\:ring-inset:focus{--tw-ring-inset:inset}@media(hover:hover){.enabled\:hover\:bg-\[\#0d99ff\]:enabled:hover{background-color:#0d99ff}.hover\:enabled\:ring-1:hover:enabled{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + 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)}.hover\:enabled\:ring-\[\#e6e6e6\]:hover:enabled{--tw-ring-color:#e6e6e6}.hover\:enabled\:ring-inset:hover:enabled{--tw-ring-inset:inset}}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-\[\#e4e4e7\]:disabled{border-color:#e4e4e7}.disabled\:bg-\[\#c9c9c9\]:disabled{background-color:#c9c9c9}.disabled\:bg-\[\#d4d4d8\]:disabled{background-color:#d4d4d8}.disabled\:bg-\[\#e6e6e6\]:disabled{background-color:#e6e6e6}.disabled\:bg-\[\#f4f4f5\]:disabled{background-color:#f4f4f5}.disabled\:text-\[\#999\]:disabled{color:#999}.disabled\:text-\[\#a1a1aa\]:disabled{color:#a1a1aa}.disabled\:text-\[\#aaa\]:disabled{color:#aaa}.disabled\:text-\[\#b3b3b3\]:disabled{color:#b3b3b3}.disabled\:text-\[\#c4c4c8\]:disabled{color:#c4c4c8}.disabled\:text-\[\#c9c9c9\]:disabled{color:#c9c9c9}.disabled\:text-white\/30:disabled{color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.disabled\:text-white\/30:disabled{color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-45:disabled{opacity:.45}@media(hover:hover){.disabled\:hover\:bg-\[\#fafafa\]:disabled:hover{background-color:#fafafa}.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}}@media(min-width:40rem){.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}}.pyg-root{-webkit-font-smoothing:antialiased;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Pretendard,Noto Sans KR,sans-serif}.pyg-root input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.pyg-root input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.pyg-root input[type=number]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.pyg-root input[type=color]::-webkit-color-swatch-wrapper{padding:0}.pyg-root input[type=color]::-webkit-color-swatch{border:none;border-radius:3px}@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}
|
|
1
|
+
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@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}}}@layer theme{:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-emerald-300:oklch(84.5% .143 164.978);--color-sky-300:oklch(82.8% .111 230.318);--color-neutral-100:oklch(97% 0 none);--color-neutral-200:oklch(92.2% 0 none);--color-neutral-400:oklch(70.8% 0 none);--color-neutral-500:oklch(55.6% 0 none);--color-neutral-600:oklch(43.9% 0 none);--color-neutral-700:oklch(37.1% 0 none);--color-neutral-800:oklch(26.9% 0 none);--color-neutral-900:oklch(20.5% 0 none);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.top-8{top:calc(var(--spacing) * 8)}.top-\[-30px\]{top:-30px}.top-\[4px\]{top:4px}.right-0{right:0}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.bottom-0{bottom:0}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-11{bottom:calc(var(--spacing) * 11)}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.left-\[4px\]{left:4px}.left-\[9px\]{left:9px}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.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}}.mx-1{margin-inline:var(--spacing)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.my-1\.5{margin-block:calc(var(--spacing) * 1.5)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.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-3{margin-top:calc(var(--spacing) * 3)}.mt-\[2px\]{margin-top:2px}.mr-1{margin-right:var(--spacing)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-5{margin-left:calc(var(--spacing) * 5)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.table{display:table}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\/5{height:40%}.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-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-14{height:calc(var(--spacing) * 14)}.h-24{height:calc(var(--spacing) * 24)}.h-\[3px\]{height:3px}.h-\[5px\]{height:5px}.h-\[9px\]{height:9px}.h-\[18px\]{height:18px}.h-\[20px\]{height:20px}.h-\[22px\]{height:22px}.h-\[26px\]{height:26px}.h-\[40px\]{height:40px}.h-\[180px\]{height:180px}.h-\[844px\]{height:844px}.h-\[calc\(100\%-1\.25rem\)\]{height:calc(100% - 1.25rem)}.h-full{height:100%}.h-px{height:1px}.max-h-28{max-height:calc(var(--spacing) * 28)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-44{max-height:calc(var(--spacing) * 44)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-\[60vh\]{max-height:60vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[min\(720px\,calc\(100vh-72px\)\)\]{max-height:min(720px,100vh - 72px)}.min-h-0{min-height:0}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-\[180px\]{min-height:180px}.min-h-full{min-height:100%}.w-1{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.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-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-11{width:calc(var(--spacing) * 11)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-44{width:calc(var(--spacing) * 44)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-\[3px\]{width:3px}.w-\[5px\]{width:5px}.w-\[9px\]{width:9px}.w-\[18px\]{width:18px}.w-\[22px\]{width:22px}.w-\[100px\]{width:100px}.w-\[320px\]{width:320px}.w-\[390px\]{width:390px}.w-\[560px\]{width:560px}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-28{max-width:calc(var(--spacing) * 28)}.max-w-32{max-width:calc(var(--spacing) * 32)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-60{max-width:calc(var(--spacing) * 60)}.max-w-\[110px\]{max-width:110px}.max-w-\[196px\]{max-width:196px}.min-w-0{min-width:0}.min-w-52{min-width:calc(var(--spacing) * 52)}.min-w-\[4rem\]{min-width:4rem}.min-w-\[20px\]{min-width:20px}.min-w-\[24px\]{min-width:24px}.min-w-\[26px\]{min-width:26px}.min-w-\[56px\]{min-width:56px}.flex-1{flex:1}.flex-none{flex:none}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-\[1fr_1fr_32px\]{grid-template-columns:1fr 1fr 32px}.grid-cols-\[1fr_2fr\]{grid-template-columns:1fr 2fr}.grid-cols-\[1fr_36px_36px\]{grid-template-columns:1fr 36px 36px}.grid-cols-\[18px_minmax\(0\,1fr\)_58px\]{grid-template-columns:18px minmax(0,1fr) 58px}.grid-cols-\[32px_minmax\(0\,1fr\)_32px\]{grid-template-columns:32px minmax(0,1fr) 32px}.grid-cols-\[56px_minmax\(0\,1fr\)_82px\]{grid-template-columns:56px minmax(0,1fr) 82px}.grid-cols-\[72px_minmax\(0\,1fr\)\]{grid-template-columns:72px minmax(0,1fr)}.grid-cols-\[88px_minmax\(0\,1fr\)\]{grid-template-columns:88px minmax(0,1fr)}.grid-cols-\[90px_minmax\(0\,1fr\)_58px\]{grid-template-columns:90px minmax(0,1fr) 58px}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[repeat\(4\,32px\)_minmax\(0\,1fr\)\]{grid-template-columns:repeat(4,32px) minmax(0,1fr)}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.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-3{gap:calc(var(--spacing) * 3)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-\[3px\]{gap:3px}.gap-\[12px\]{gap:12px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-y-1{row-gap:var(--spacing)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[3px\]{border-radius:3px}.rounded-\[13px\]{border-radius:13px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-l-lg{border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.rounded-r-lg{border-top-right-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.border-\[\#0d99ff\]{border-color:#0d99ff}.border-\[\#7c3aed\]{border-color:#7c3aed}.border-\[\#9747ff\]{border-color:#9747ff}.border-\[\#a78bfa\]{border-color:#a78bfa}.border-\[\#bfdbfe\]{border-color:#bfdbfe}.border-\[\#c4b5fd\]{border-color:#c4b5fd}.border-\[\#cfe8d8\]{border-color:#cfe8d8}.border-\[\#d4d4d8\]{border-color:#d4d4d8}.border-\[\#d8ecff\]{border-color:#d8ecff}.border-\[\#d9d9d9\]{border-color:#d9d9d9}.border-\[\#d9ecfb\]{border-color:#d9ecfb}.border-\[\#dedee3\]{border-color:#dedee3}.border-\[\#e4e0ff\]{border-color:#e4e0ff}.border-\[\#e4e4e7\]{border-color:#e4e4e7}.border-\[\#e6e6e6\]{border-color:#e6e6e6}.border-\[\#e879f9\]{border-color:#e879f9}.border-\[\#ececec\]{border-color:#ececec}.border-\[\#f0f0f0\]{border-color:#f0f0f0}.border-\[\#f2d4a7\]{border-color:#f2d4a7}.border-\[\#fecaca\]{border-color:#fecaca}.border-\[\#fed7aa\]{border-color:#fed7aa}.border-black\/5{border-color:#0000000d}@supports (color:color-mix(in lab,red,red)){.border-black\/5{border-color:color-mix(in oklab,var(--color-black) 5%,transparent)}}.border-black\/10{border-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.border-black\/10{border-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.border-current{border-color:currentColor}.border-neutral-700{border-color:var(--color-neutral-700)}.border-neutral-800{border-color:var(--color-neutral-800)}.border-transparent{border-color:#0000}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.bg-\[\#0d99ff\]{background-color:#0d99ff}.bg-\[\#1e1e1e\]{background-color:#1e1e1e}.bg-\[\#6d28d9\]{background-color:#6d28d9}.bg-\[\#9747ff\]{background-color:#9747ff}.bg-\[\#18181b\]{background-color:#18181b}.bg-\[\#a1a1aa\]{background-color:#a1a1aa}.bg-\[\#c9c9c9\]{background-color:#c9c9c9}.bg-\[\#d4d4d8\]{background-color:#d4d4d8}.bg-\[\#dbeafe\]{background-color:#dbeafe}.bg-\[\#dcfce7\]{background-color:#dcfce7}.bg-\[\#e4e0ff\]{background-color:#e4e0ff}.bg-\[\#e5f4ff\]{background-color:#e5f4ff}.bg-\[\#e6e6e6\]{background-color:#e6e6e6}.bg-\[\#e6e9ec\]{background-color:#e6e9ec}.bg-\[\#e8f7ee\]{background-color:#e8f7ee}.bg-\[\#eceafd\]{background-color:#eceafd}.bg-\[\#ecfdf3\]{background-color:#ecfdf3}.bg-\[\#ede9fe\]{background-color:#ede9fe}.bg-\[\#eff6ff\]{background-color:#eff6ff}.bg-\[\#eff8ff\]{background-color:#eff8ff}.bg-\[\#f0f0f0\]{background-color:#f0f0f0}.bg-\[\#f2f2f2\]{background-color:#f2f2f2}.bg-\[\#f3e8ff\]{background-color:#f3e8ff}.bg-\[\#f4f4f5\]{background-color:#f4f4f5}.bg-\[\#f4faff\]{background-color:#f4faff}.bg-\[\#f4fbf6\]{background-color:#f4fbf6}.bg-\[\#f5f0ff\]{background-color:#f5f0ff}.bg-\[\#f5f3ff\]{background-color:#f5f3ff}.bg-\[\#f5f5f5\]{background-color:#f5f5f5}.bg-\[\#f7f7f8\]{background-color:#f7f7f8}.bg-\[\#f8f7ff\]{background-color:#f8f7ff}.bg-\[\#f8f8fa\]{background-color:#f8f8fa}.bg-\[\#f24822\]{background-color:#f24822}.bg-\[\#faf5ff\]{background-color:#faf5ff}.bg-\[\#fafafa\]{background-color:#fafafa}.bg-\[\#fdeaea\]{background-color:#fdeaea}.bg-\[\#fef2f2\]{background-color:#fef2f2}.bg-\[\#fef3c7\]{background-color:#fef3c7}.bg-\[\#ffedd5\]{background-color:#ffedd5}.bg-\[\#fff1f2\]{background-color:#fff1f2}.bg-\[\#fff2df\]{background-color:#fff2df}.bg-\[\#fff3dc\]{background-color:#fff3dc}.bg-\[\#fff7ed\]{background-color:#fff7ed}.bg-\[\#fff7f7\]{background-color:#fff7f7}.bg-\[\#fff8e8\]{background-color:#fff8e8}.bg-\[\#fff9ef\]{background-color:#fff9ef}.bg-\[\#ffffff\]{background-color:#fff}.bg-amber-500{background-color:var(--color-amber-500)}.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-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black) 80%,transparent)}}.bg-current{background-color:currentColor}.bg-neutral-700{background-color:var(--color-neutral-700)}.bg-neutral-800{background-color:var(--color-neutral-800)}.bg-neutral-900\/70{background-color:#171717b3}@supports (color:color-mix(in lab,red,red)){.bg-neutral-900\/70{background-color:color-mix(in oklab,var(--color-neutral-900) 70%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.bg-white\/70{background-color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.bg-white\/70{background-color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.object-cover{object-fit:cover}.object-top{object-position:top}.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-2\.5{padding:calc(var(--spacing) * 2.5)}.p-\[16px\]{padding:16px}.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)}.px-6{padding-inline:calc(var(--spacing) * 6)}.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-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-\[1px\]{padding-block:1px}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-1{padding-left:var(--spacing)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[7px\]{font-size:7px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[24px\]{font-size:24px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.text-\[\#0d99ff\]{color:#0d99ff}.text-\[\#1d4ed8\]{color:#1d4ed8}.text-\[\#4b30f3\]{color:#4b30f3}.text-\[\#5b21b6\]{color:#5b21b6}.text-\[\#6d28d9\]{color:#6d28d9}.text-\[\#007be5\]{color:#007be5}.text-\[\#7c3aed\]{color:#7c3aed}.text-\[\#8a5a00\]{color:#8a5a00}.text-\[\#9a5a00\]{color:#9a5a00}.text-\[\#9a3412\]{color:#9a3412}.text-\[\#237a42\]{color:#237a42}.text-\[\#333\]{color:#333}.text-\[\#444\]{color:#444}.text-\[\#555\]{color:#555}.text-\[\#666\]{color:#666}.text-\[\#777\]{color:#777}.text-\[\#888\]{color:#888}.text-\[\#999\]{color:#999}.text-\[\#1677b8\]{color:#1677b8}.text-\[\#7162d7\]{color:#7162d7}.text-\[\#9189bd\]{color:#9189bd}.text-\[\#9747ff\]{color:#9747ff}.text-\[\#15803d\]{color:#15803d}.text-\[\#16794b\]{color:#16794b}.text-\[\#18181b\]{color:#18181b}.text-\[\#27272a\]{color:#27272a}.text-\[\#52525b\]{color:#52525b}.text-\[\#64748b\]{color:#64748b}.text-\[\#71717a\]{color:#71717a}.text-\[\#111111\]{color:#111}.text-\[\#166534\]{color:#166534}.text-\[\#333333\]{color:#333}.text-\[\#a1a1aa\]{color:#a1a1aa}.text-\[\#a21caf\]{color:#a21caf}.text-\[\#b3b3b3\]{color:#b3b3b3}.text-\[\#b91c1c\]{color:#b91c1c}.text-\[\#b45309\]{color:#b45309}.text-\[\#c4c4c8\]{color:#c4c4c8}.text-\[\#c0392b\]{color:#c0392b}.text-\[\#c2410c\]{color:#c2410c}.text-\[\#d92d3a\]{color:#d92d3a}.text-\[\#e4e4e7\]{color:#e4e4e7}.text-\[\#f04452\]{color:#f04452}.text-amber-300{color:var(--color-amber-300)}.text-amber-600{color:var(--color-amber-600)}.text-emerald-300{color:var(--color-emerald-300)}.text-neutral-100{color:var(--color-neutral-100)}.text-neutral-200{color:var(--color-neutral-200)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-500{color:var(--color-neutral-500)}.text-red-300{color:var(--color-red-300)}.text-sky-300{color:var(--color-sky-300)}.text-white{color:var(--color-white)}.text-white\/50{color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.text-white\/50{color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.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}.decoration-\[\#1677b8\]\/30{text-decoration-color:#1677b84d}.underline-offset-2{text-underline-offset:2px}.accent-\[\#0d99ff\]{accent-color:#0d99ff}.opacity-40{opacity:.4}.opacity-65{opacity:.65}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px 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)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_4px_rgba\(0\,0\,0\,\.08\)\]{--tw-shadow:0 1px 4px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_6px_rgba\(0\,0\,0\,\.12\)\]{--tw-shadow:0 1px 6px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_8px_rgba\(0\,0\,0\,\.08\)\]{--tw-shadow:0 2px 8px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_8px_rgba\(0\,0\,0\,\.15\)\]{--tw-shadow:0 2px 8px var(--tw-shadow-color,#00000026);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_14px_rgba\(0\,0\,0\,\.08\)\]{--tw-shadow:0 2px 14px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_14px_rgba\(0\,0\,0\,\.12\)\]{--tw-shadow:0 2px 14px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(0\,0\,0\,\.14\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#00000024);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_20px_rgba\(0\,0\,0\,\.3\)\]{--tw-shadow:0 4px 20px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_20px_rgba\(0\,0\,0\,\.25\)\]{--tw-shadow:0 4px 20px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_40px_rgba\(0\,0\,0\,\.25\)\]{--tw-shadow:0 8px 40px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_16px_48px_rgba\(15\,23\,42\,\.22\)\]{--tw-shadow:0 16px 48px var(--tw-shadow-color,#0f172a38);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_0_0_3px_rgba\(245\,158\,11\,\.85\)\]{--tw-shadow:inset 0 0 0 3px var(--tw-shadow-color,#f59e0bd9);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.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)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px 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)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + 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)}.ring-\[\#dedee3\]{--tw-ring-color:#dedee3}.ring-\[\#ececec\]{--tw-ring-color:#ececec}.outline,.outline-1{outline-style:var(--tw-outline-style);outline-width:1px}.outline-\[\#0d99ff\]\/30{outline-color:#0d99ff4d}.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-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))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media(hover:hover){.group-hover\:visible:is(:where(.group):hover *){visibility:visible}}.placeholder\:text-\[\#a1a1aa\]::placeholder{color:#a1a1aa}.focus-within\:ring-1:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + 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-\[\#0d99ff\]:focus-within{--tw-ring-color:#0d99ff}.focus-within\:ring-inset:focus-within{--tw-ring-inset:inset}@media(hover:hover){.hover\:border-\[\#a78bfa\]:hover{border-color:#a78bfa}.hover\:bg-\[\#0b87e0\]:hover{background-color:#0b87e0}.hover\:bg-\[\#0d99ff\]\/20:hover{background-color:#0d99ff33}.hover\:bg-\[\#5b21b6\]:hover{background-color:#5b21b6}.hover\:bg-\[\#e5f4ff\]:hover{background-color:#e5f4ff}.hover\:bg-\[\#e9e9ee\]:hover{background-color:#e9e9ee}.hover\:bg-\[\#ececec\]:hover{background-color:#ececec}.hover\:bg-\[\#eeebff\]:hover{background-color:#eeebff}.hover\:bg-\[\#f0f7ff\]:hover{background-color:#f0f7ff}.hover\:bg-\[\#f3e8ff\]:hover{background-color:#f3e8ff}.hover\:bg-\[\#f4f4f5\]:hover{background-color:#f4f4f5}.hover\:bg-\[\#f5f3ff\]:hover{background-color:#f5f3ff}.hover\:bg-\[\#f5f5f5\]:hover{background-color:#f5f5f5}.hover\:bg-\[\#f7f7f7\]:hover{background-color:#f7f7f7}.hover\:bg-\[\#f8fafc\]:hover{background-color:#f8fafc}.hover\:bg-\[\#faf8ff\]:hover{background-color:#faf8ff}.hover\:bg-\[\#fafafa\]:hover{background-color:#fafafa}.hover\:bg-\[\#fee2e2\]:hover{background-color:#fee2e2}.hover\:bg-\[\#fef2f2\]:hover{background-color:#fef2f2}.hover\:bg-\[\#ffe4e7\]:hover{background-color:#ffe4e7}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-black:hover{background-color:var(--color-black)}.hover\:bg-neutral-600:hover{background-color:var(--color-neutral-600)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.hover\:text-\[\#333\]:hover{color:#333}.hover\:text-\[\#555\]:hover{color:#555}.hover\:text-\[\#18181b\]:hover{color:#18181b}.hover\:text-\[\#f04452\]:hover{color:#f04452}.hover\:ring-1:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + 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)}.hover\:ring-\[\#e6e6e6\]:hover{--tw-ring-color:#e6e6e6}.hover\:ring-inset:hover{--tw-ring-inset:inset}}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + 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\:ring-\[\#0d99ff\]:focus{--tw-ring-color:#0d99ff}.focus\:ring-inset:focus{--tw-ring-inset:inset}@media(hover:hover){.enabled\:hover\:bg-\[\#0d99ff\]:enabled:hover{background-color:#0d99ff}.hover\:enabled\:ring-1:hover:enabled{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + 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)}.hover\:enabled\:ring-\[\#e6e6e6\]:hover:enabled{--tw-ring-color:#e6e6e6}.hover\:enabled\:ring-inset:hover:enabled{--tw-ring-inset:inset}}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-\[\#e4e4e7\]:disabled{border-color:#e4e4e7}.disabled\:bg-\[\#c9c9c9\]:disabled{background-color:#c9c9c9}.disabled\:bg-\[\#d4d4d8\]:disabled{background-color:#d4d4d8}.disabled\:bg-\[\#e6e6e6\]:disabled{background-color:#e6e6e6}.disabled\:bg-\[\#f4f4f5\]:disabled{background-color:#f4f4f5}.disabled\:text-\[\#999\]:disabled{color:#999}.disabled\:text-\[\#a1a1aa\]:disabled{color:#a1a1aa}.disabled\:text-\[\#aaa\]:disabled{color:#aaa}.disabled\:text-\[\#c4c4c8\]:disabled{color:#c4c4c8}.disabled\:text-\[\#c9c9c9\]:disabled{color:#c9c9c9}.disabled\:text-white\/30:disabled{color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.disabled\:text-white\/30:disabled{color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-45:disabled{opacity:.45}@media(hover:hover){.disabled\:hover\:bg-\[\#fafafa\]:disabled:hover{background-color:#fafafa}.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}}@media(min-width:40rem){.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}}.pyg-root{-webkit-font-smoothing:antialiased;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Pretendard,Noto Sans KR,sans-serif}.pyg-root input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.pyg-root input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.pyg-root input[type=number]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.pyg-root input[type=color]::-webkit-color-swatch-wrapper{padding:0}.pyg-root input[type=color]::-webkit-color-swatch{border:none;border-radius:3px}@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}
|
package/dist-lib/testing.js
CHANGED
|
@@ -9,6 +9,12 @@ export declare const ShadowRoutePreview: import("react").FunctionComponent<{
|
|
|
9
9
|
revision: string;
|
|
10
10
|
/** True when the backing artifact no longer matches the source screen — blocks bootless promotion. */
|
|
11
11
|
sourceStale?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* How soon this frame's frozen DOM must be on screen when many arrive at
|
|
14
|
+
* once; see MOUNT_PRIORITY. A mount that fits the frame budget runs at once
|
|
15
|
+
* regardless.
|
|
16
|
+
*/
|
|
17
|
+
mountPriority?: number;
|
|
12
18
|
onDocumentHeightChange?: (height: number) => void;
|
|
13
19
|
onReplayIssuesChange?: (issues: string[]) => void;
|
|
14
20
|
}>;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type { RoutePreviewFrameRecipe } from './previewBootstrap';
|
|
2
|
+
import type { RoutePreviewArtifactResolution } from './routePreview';
|
|
3
|
+
/**
|
|
4
|
+
* Who fills a canvas first.
|
|
5
|
+
*
|
|
6
|
+
* `worker-first`: the capture worker behind the artifact endpoint is asked
|
|
7
|
+
* for the canvas in batches; the walking supply and the per-screen sweep run
|
|
8
|
+
* only for what the worker cannot answer. `browser-first`: the walking supply
|
|
9
|
+
* and sweep fill the canvas inside the editor, and the worker captures only
|
|
10
|
+
* the frame the designer selects — the behaviour before this module existed.
|
|
11
|
+
* `auto` picks worker-first when an artifact endpoint is configured.
|
|
12
|
+
*/
|
|
13
|
+
export type CaptureSupplyMode = 'worker-first' | 'browser-first';
|
|
14
|
+
export declare function setCaptureSupplyMode(mode: CaptureSupplyMode | 'auto' | undefined): void;
|
|
15
|
+
export declare function resolveCaptureSupplyMode(endpointConfigured: boolean): CaptureSupplyMode;
|
|
16
|
+
export interface CaptureSupplyFrame {
|
|
17
|
+
pageId: string;
|
|
18
|
+
/** Catalog screen id the capture is stored under. */
|
|
19
|
+
canonicalId: string;
|
|
20
|
+
canvas: string;
|
|
21
|
+
/**
|
|
22
|
+
* Screen-space distance from the viewport center; the caller sets it to
|
|
23
|
+
* Infinity for frames off the active canvas.
|
|
24
|
+
*/
|
|
25
|
+
distance: number;
|
|
26
|
+
fingerprint: string;
|
|
27
|
+
recipe?: RoutePreviewFrameRecipe;
|
|
28
|
+
}
|
|
29
|
+
export interface CaptureSupplyPlan {
|
|
30
|
+
/** Chunks of the active canvas, nearest first. */
|
|
31
|
+
active: CaptureSupplyFrame[][];
|
|
32
|
+
/** Chunks of the other canvases, in the order the frames were given. */
|
|
33
|
+
background: CaptureSupplyFrame[][];
|
|
34
|
+
}
|
|
35
|
+
export interface PlanCaptureSupplyOptions {
|
|
36
|
+
activeCanvas: string;
|
|
37
|
+
/**
|
|
38
|
+
* Frames per request. Small enough that the first frames of a canvas
|
|
39
|
+
* arrive while the rest are still being captured, large enough to keep a
|
|
40
|
+
* worker's lanes busy. Six is roughly one worker round with two or three
|
|
41
|
+
* lanes.
|
|
42
|
+
*/
|
|
43
|
+
chunkSize?: number;
|
|
44
|
+
}
|
|
45
|
+
export declare const CAPTURE_SUPPLY_CHUNK_SIZE = 6;
|
|
46
|
+
/** Chunks the driver keeps in flight for the active canvas. */
|
|
47
|
+
export declare const CAPTURE_SUPPLY_ACTIVE_IN_FLIGHT = 2;
|
|
48
|
+
/** Chunks the driver keeps in flight for canvases nobody is looking at. */
|
|
49
|
+
export declare const CAPTURE_SUPPLY_BACKGROUND_IN_FLIGHT = 1;
|
|
50
|
+
/**
|
|
51
|
+
* Turns the frames still owed into an ordered plan of batches.
|
|
52
|
+
*
|
|
53
|
+
* Duplicate identities collapse (a variant sharing a capture is one
|
|
54
|
+
* request), the active canvas sorts by distance so what is visible arrives
|
|
55
|
+
* first, and every other canvas keeps its own frames together so a walk
|
|
56
|
+
* through the catalog warms one canvas at a time rather than a little of
|
|
57
|
+
* each.
|
|
58
|
+
*/
|
|
59
|
+
export declare function planCaptureSupply(frames: readonly CaptureSupplyFrame[], options: PlanCaptureSupplyOptions): CaptureSupplyPlan;
|
|
60
|
+
export interface CaptureSupplyStatus {
|
|
61
|
+
phase: 'idle' | 'running' | 'done';
|
|
62
|
+
/** Chunks waiting to be sent, from the latest plan. */
|
|
63
|
+
pending: number;
|
|
64
|
+
/** Chunks answered since the last cancel, exactly or not. */
|
|
65
|
+
completed: number;
|
|
66
|
+
/** Frames the worker could not answer and that were released to the fallback, since the last cancel. */
|
|
67
|
+
released: number;
|
|
68
|
+
/** Chunks currently at the requester. */
|
|
69
|
+
inFlight: number;
|
|
70
|
+
}
|
|
71
|
+
export interface CaptureSupplyDriverDeps {
|
|
72
|
+
/**
|
|
73
|
+
* Hands one chunk to the batch requester. `null` means no requester is
|
|
74
|
+
* installed (the endpoint is gone), which ends the run.
|
|
75
|
+
*/
|
|
76
|
+
request(frames: readonly CaptureSupplyFrame[], priority: number, options: {
|
|
77
|
+
retry: boolean;
|
|
78
|
+
}): Promise<RoutePreviewArtifactResolution> | null;
|
|
79
|
+
/**
|
|
80
|
+
* Frames the worker answered with a real failure. The caller hands them to
|
|
81
|
+
* the fallback supply; a `not-prepared` answer is retried here instead.
|
|
82
|
+
*/
|
|
83
|
+
release?(frames: readonly CaptureSupplyFrame[], reason: string): void;
|
|
84
|
+
/** How long to wait before asking again for a chunk the runtime was not ready for. */
|
|
85
|
+
notPreparedRetryMs?: readonly number[];
|
|
86
|
+
setTimeout?: (callback: () => void, ms: number) => unknown;
|
|
87
|
+
clearTimeout?: (handle: unknown) => void;
|
|
88
|
+
log?: (message: string) => void;
|
|
89
|
+
}
|
|
90
|
+
export interface CaptureSupplyDriverOptions {
|
|
91
|
+
activeInFlight?: number;
|
|
92
|
+
backgroundInFlight?: number;
|
|
93
|
+
}
|
|
94
|
+
export interface CaptureSupplyDriver {
|
|
95
|
+
/**
|
|
96
|
+
* Adopts a plan. Chunks already at the requester keep going — the batch
|
|
97
|
+
* requester dedupes identities, so re-planning never doubles a capture —
|
|
98
|
+
* and pending work is replaced by the new plan's.
|
|
99
|
+
*/
|
|
100
|
+
run(plan: CaptureSupplyPlan): void;
|
|
101
|
+
/** Drops pending work and stops retrying. In-flight requests finish on their own. */
|
|
102
|
+
cancel(): void;
|
|
103
|
+
status(): CaptureSupplyStatus;
|
|
104
|
+
}
|
|
105
|
+
export declare function getCaptureSupplyStatus(): CaptureSupplyStatus;
|
|
106
|
+
export declare function subscribeCaptureSupply(listener: () => void): () => void;
|
|
107
|
+
export declare function createCaptureSupplyDriver(deps: CaptureSupplyDriverDeps, options?: CaptureSupplyDriverOptions): CaptureSupplyDriver;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { type DomImportOptions, type DomImportResult } from './domImport';
|
|
2
|
+
import { type DocumentChurnEntry, type DocumentStabilityOptions } from './documentStability';
|
|
2
3
|
import type { DesignFrameHeightMode } from './frameHeight';
|
|
4
|
+
import { type ScreenLaneDef } from './frameLanes';
|
|
3
5
|
import type { ComponentRegistry } from './registry';
|
|
4
6
|
import type { TokenDef } from './tokens';
|
|
5
7
|
export declare const DESIGN_IMPORT_KINDS: readonly ["icons", "design-tokens", "atoms", "components", "screens"];
|
|
@@ -349,6 +351,16 @@ export interface DesignScreenCaptureReport {
|
|
|
349
351
|
/** First failure summary compatible with existing screen error UI. */
|
|
350
352
|
failedLabel?: string;
|
|
351
353
|
error?: string;
|
|
354
|
+
/**
|
|
355
|
+
* Whether the screen held still before it was read, and what kept moving
|
|
356
|
+
* when it did not. Not settling is not a failure — the ceiling captures the
|
|
357
|
+
* screen mid-movement — but a host tuning its volatile declarations needs to
|
|
358
|
+
* know which part of the screen the wait was watching.
|
|
359
|
+
*/
|
|
360
|
+
stability?: {
|
|
361
|
+
stable: boolean;
|
|
362
|
+
churn: DocumentChurnEntry[];
|
|
363
|
+
};
|
|
352
364
|
}
|
|
353
365
|
/**
|
|
354
366
|
* Rejects a rendered route state when its authored reproduction recipe did not
|
|
@@ -405,6 +417,26 @@ export interface DesignImportController {
|
|
|
405
417
|
runScreenInteractions(iframe: HTMLIFrameElement, interactions: readonly DesignScreenInteraction[]): Promise<DesignScreenInteractionReport>;
|
|
406
418
|
prepareScreenCapture(iframe: HTMLIFrameElement, spec: DesignScreenCaptureSpec): Promise<DesignScreenCaptureReport>;
|
|
407
419
|
}
|
|
420
|
+
/**
|
|
421
|
+
* Which canvas a screen belongs to.
|
|
422
|
+
*
|
|
423
|
+
* `section` gives a section its own canvas, which is what a journal's numbers
|
|
424
|
+
* already say. On a catalog where one section holds nineteen screens that is
|
|
425
|
+
* still a canvas nobody can take in at once, and every frame on it is supplied
|
|
426
|
+
* before the reader reaches the one they came for.
|
|
427
|
+
*
|
|
428
|
+
* `lane` goes one level further, and it needs no new declaration: a section's
|
|
429
|
+
* lanes are already the grouping a person made — the situations a journey
|
|
430
|
+
* passes through. Two to four screens each, so the canvas a reader activates
|
|
431
|
+
* is the one they are reading.
|
|
432
|
+
*
|
|
433
|
+
* A screen with no lane keeps its section's canvas rather than being collected
|
|
434
|
+
* into an "other" canvas that means nothing.
|
|
435
|
+
*/
|
|
436
|
+
export declare function screensCanvasName(page: {
|
|
437
|
+
section?: string;
|
|
438
|
+
lane?: string;
|
|
439
|
+
}, partition: CreateDesignImportOptions['screensCanvasPartition'], lanes?: readonly ScreenLaneDef[]): string;
|
|
408
440
|
export interface CreateDesignImportOptions {
|
|
409
441
|
/** Default budget for full layer mode. The host can explicitly increase it according to the screen size. */
|
|
410
442
|
layerOptions?: DomImportOptions;
|
|
@@ -418,7 +450,21 @@ export interface CreateDesignImportOptions {
|
|
|
418
450
|
* with a section instead of the whole catalog. Cross-canvas activation
|
|
419
451
|
* already switches canvases (EditorStore.switchPage).
|
|
420
452
|
*/
|
|
421
|
-
screensCanvasPartition?: 'single' | 'section';
|
|
453
|
+
screensCanvasPartition?: 'single' | 'section' | 'lane';
|
|
454
|
+
/**
|
|
455
|
+
* The lane declarations, for naming lane canvases. Passed rather than read
|
|
456
|
+
* from the registry because pages are built before the editor renders, and a
|
|
457
|
+
* canvas named at that moment cannot wait for a later registration.
|
|
458
|
+
*/
|
|
459
|
+
screenLanes?: readonly ScreenLaneDef[];
|
|
460
|
+
/**
|
|
461
|
+
* What the editor's own capture treats as movement, and how long it waits for
|
|
462
|
+
* the screen to stop. The Playwright capture answers the same question with
|
|
463
|
+
* the same defaults; a host that declares its never-settling parts to one
|
|
464
|
+
* path should declare them to both, or the two disagree about what a
|
|
465
|
+
* finished screen looks like.
|
|
466
|
+
*/
|
|
467
|
+
stability?: DocumentStabilityOptions;
|
|
422
468
|
}
|
|
423
469
|
/** Creates responsive variants of authored cases without reclassifying source scenarios. */
|
|
424
470
|
export declare function expandDesignScreenCasesViewports(cases: readonly DesignScreenCase[], viewports: readonly DesignScreenViewport[], options?: DesignScreenViewportExpansionOptions): DesignScreenCase[];
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** How a caller narrows what counts as movement. */
|
|
2
|
+
export interface DocumentStabilityOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Parts of the screen that never stop on their own — an elapsed clock, a
|
|
5
|
+
* level meter, a live transcript. Mutations inside them are not movement,
|
|
6
|
+
* because waiting for them to stop is waiting forever.
|
|
7
|
+
*/
|
|
8
|
+
volatileSelectors?: readonly string[];
|
|
9
|
+
/** Consecutive identical samples that end the wait. */
|
|
10
|
+
requiredStableSamples?: number;
|
|
11
|
+
/** Gap between samples. */
|
|
12
|
+
intervalMs?: number;
|
|
13
|
+
/** A floor, so a document that renders in one frame is still given a moment. */
|
|
14
|
+
minimumWaitMs?: number;
|
|
15
|
+
/**
|
|
16
|
+
* A ceiling. A screen that keeps moving is captured mid-movement rather than
|
|
17
|
+
* never: the frame is worth more than the wait.
|
|
18
|
+
*/
|
|
19
|
+
timeoutMs?: number;
|
|
20
|
+
}
|
|
21
|
+
/** One mover in a document that would not settle. */
|
|
22
|
+
export interface DocumentChurnEntry {
|
|
23
|
+
target: string;
|
|
24
|
+
count: number;
|
|
25
|
+
}
|
|
26
|
+
/** A compact description of what the document looks like right now. */
|
|
27
|
+
export declare function documentStabilitySignature(doc: Document, volatileSelectors?: readonly string[]): string;
|
|
28
|
+
/**
|
|
29
|
+
* What kept the document from settling, most active first — read from the
|
|
30
|
+
* tracker the signature installed, so it reflects the same movement the wait
|
|
31
|
+
* judged. Empty when nothing moved or nothing was tracked.
|
|
32
|
+
*/
|
|
33
|
+
export declare function documentChurnReport(doc: Document, volatileSelectors?: readonly string[], limit?: number): DocumentChurnEntry[];
|
|
34
|
+
/** Resolves true when the document held still, false when the ceiling was hit. */
|
|
35
|
+
export declare function waitForStableDocument(doc: Document, { volatileSelectors, requiredStableSamples, intervalMs, minimumWaitMs, timeoutMs, }?: DocumentStabilityOptions): Promise<boolean>;
|
|
@@ -56,3 +56,8 @@ export interface DomImportResult {
|
|
|
56
56
|
export declare function importDomFromElement(el: Element, win: Window, opts?: DomImportOptions): DomImportResult | null;
|
|
57
57
|
/** Convert the body of the same-origin iframe to a node tree. null if cross-origin. */
|
|
58
58
|
export declare function importDomFromIframe(iframe: HTMLIFrameElement, opts?: DomImportOptions): DomImportResult | null;
|
|
59
|
+
/**
|
|
60
|
+
* Rewrites ids and their references in an imported tree so they cannot collide
|
|
61
|
+
* with another frame's. Returns the number of ids scoped.
|
|
62
|
+
*/
|
|
63
|
+
export declare function scopeImportedDomIds(root: NodeJSON, scope: string): number;
|
|
@@ -15,6 +15,12 @@ export declare const __flowSchedulerDebug: {
|
|
|
15
15
|
export declare function materializeCanvasFlows(input: {
|
|
16
16
|
canvas: string;
|
|
17
17
|
previewRevision: string;
|
|
18
|
+
/**
|
|
19
|
+
* Only paths that deliver one of these screens. The worker-first supply
|
|
20
|
+
* hands the walking supply exactly the screens the worker could not answer;
|
|
21
|
+
* without a filter every path on the canvas is a candidate.
|
|
22
|
+
*/
|
|
23
|
+
screenIds?: ReadonlySet<string>;
|
|
18
24
|
}): number;
|
|
19
25
|
/** Session delivery state for one page, keyed by its catalog screen id. */
|
|
20
26
|
export declare function flowSessionWillDeliverPage(page: {
|
|
@@ -49,9 +49,25 @@ export interface FlowSessionRunnerOptions {
|
|
|
49
49
|
* Concurrent live instances. The default is 1: mocked app backends
|
|
50
50
|
* (STT sockets, summary generators) are commonly single-session, and two
|
|
51
51
|
* concurrent walks contending for them time out deterministically. Raise
|
|
52
|
-
* it only for apps whose fixtures are proven concurrency-safe
|
|
52
|
+
* it only for apps whose fixtures are proven concurrency-safe — measured
|
|
53
|
+
* on one such app, two walks filled a canvas in half the time with no
|
|
54
|
+
* more long tasks on the editor thread, and four in a quarter.
|
|
53
55
|
*/
|
|
54
56
|
concurrency?: number;
|
|
57
|
+
/**
|
|
58
|
+
* How long a boot may take before the walk gives up on the instance. A
|
|
59
|
+
* load that never fires neither resolves nor rejects, and one such walk
|
|
60
|
+
* holds a lane for the rest of the session.
|
|
61
|
+
*/
|
|
62
|
+
bootTimeoutMs?: number;
|
|
63
|
+
/**
|
|
64
|
+
* How long one path may walk in total. A path whose steps keep timing out
|
|
65
|
+
* (an assertion the app never reaches) is failed at the next waypoint
|
|
66
|
+
* boundary instead of holding its lane through every remaining step.
|
|
67
|
+
*/
|
|
68
|
+
walkBudgetMs?: number;
|
|
69
|
+
/** Clock for the walk budget; injected so the budget can be tested without wall time. */
|
|
70
|
+
now?: () => number;
|
|
55
71
|
/** Names this supply in the boot counters, so a stray boot is attributable. */
|
|
56
72
|
label?: string;
|
|
57
73
|
createIframe?: () => HTMLIFrameElement;
|
|
@@ -116,6 +132,16 @@ export declare function createFlowSessionRunner(options?: FlowSessionRunnerOptio
|
|
|
116
132
|
* claimed by a queued path are skipped — callers re-request freely.
|
|
117
133
|
*/
|
|
118
134
|
materialize(paths: readonly ResolvedFlowPath[]): number;
|
|
135
|
+
/**
|
|
136
|
+
* Drops queued paths the predicate rejects, releasing their pending
|
|
137
|
+
* screens so a later materialize can queue them again. Running walks are
|
|
138
|
+
* untouched. Called when the designer moves to another canvas: the
|
|
139
|
+
* paths of the canvas they left should not run ahead of the one they
|
|
140
|
+
* are looking at.
|
|
141
|
+
*/
|
|
142
|
+
pruneQueue(keep: (path: ResolvedFlowPath) => boolean): number;
|
|
143
|
+
/** Live instances that may walk at once; takes effect at the next pump. */
|
|
144
|
+
setConcurrency(next: number): void;
|
|
119
145
|
/** Session state of one screen, or null when no session claims it. */
|
|
120
146
|
screenState(screenId: string): FlowScreenState | null;
|
|
121
147
|
/** True while the session still owes this screen its snapshot. */
|
|
@@ -134,4 +160,10 @@ export declare function createFlowSessionRunner(options?: FlowSessionRunnerOptio
|
|
|
134
160
|
};
|
|
135
161
|
export type FlowSessionRunner = ReturnType<typeof createFlowSessionRunner>;
|
|
136
162
|
export declare function getFlowSessionRunner(): FlowSessionRunner;
|
|
163
|
+
/**
|
|
164
|
+
* How many walks the canonical supply runs at once. The host declares it,
|
|
165
|
+
* because only the host knows whether its mocked backends survive two
|
|
166
|
+
* sessions; the default of one is the safe choice.
|
|
167
|
+
*/
|
|
168
|
+
export declare function setFlowSessionConcurrency(concurrency: number): void;
|
|
137
169
|
export declare function resetFlowSessionRunner(): void;
|
|
@@ -73,6 +73,24 @@ export interface InteractiveStateDef {
|
|
|
73
73
|
testId?: string;
|
|
74
74
|
route?: string;
|
|
75
75
|
};
|
|
76
|
+
/**
|
|
77
|
+
* Options combine instead of replacing one another.
|
|
78
|
+
*
|
|
79
|
+
* Most axes are a choice between mutually exclusive states — a sidebar is
|
|
80
|
+
* open or collapsed, never both. Some are not: a repeated row can carry a
|
|
81
|
+
* list of status marks, and the screen worth looking at is often two of them
|
|
82
|
+
* at once. Declared as an exclusive axis, such a screen cannot be reached at
|
|
83
|
+
* all, and declaring every combination as its own option is a power set.
|
|
84
|
+
*
|
|
85
|
+
* Selecting toggles the option in the set; the base option (the one with no
|
|
86
|
+
* steps and no condition) clears it. Steps run and conditions merge in
|
|
87
|
+
* declaration order, so the result is stable no matter what order they were
|
|
88
|
+
* clicked in.
|
|
89
|
+
*
|
|
90
|
+
* Not compatible with `capturedWhen`: a per-frame base answers "which single
|
|
91
|
+
* option is already on screen", which a combination has no answer to.
|
|
92
|
+
*/
|
|
93
|
+
multiple?: boolean;
|
|
76
94
|
options: readonly InteractiveStateOption[];
|
|
77
95
|
}
|
|
78
96
|
export interface InteractiveStateDiagnostic {
|
|
@@ -80,6 +98,15 @@ export interface InteractiveStateDiagnostic {
|
|
|
80
98
|
interactionId: string;
|
|
81
99
|
message: string;
|
|
82
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Whether selecting this option asks supply for a different screen.
|
|
103
|
+
*
|
|
104
|
+
* Two ways to do that — a gesture on the booted screen, or a boot condition —
|
|
105
|
+
* and the base is the option that does neither: it reproduces the capture.
|
|
106
|
+
* Judging the base by "no steps" alone would read an environment-only option as
|
|
107
|
+
* a second base and refuse the declaration.
|
|
108
|
+
*/
|
|
109
|
+
export declare function optionChangesSupply(option: InteractiveStateOption): boolean;
|
|
83
110
|
export declare function validateInteractiveStates(defs: readonly InteractiveStateDef[]): InteractiveStateDiagnostic[];
|
|
84
111
|
/**
|
|
85
112
|
* Axes available on one frame. The test-id requirement is checked against
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface MountTicket {
|
|
2
|
+
/** Withdraws a queued mount; a mount that already ran is unaffected. */
|
|
3
|
+
cancel(): void;
|
|
4
|
+
}
|
|
5
|
+
export interface MountSchedulerOptions {
|
|
6
|
+
/** Mounts admitted per frame before the rest queue. */
|
|
7
|
+
budgetPerFrame?: number;
|
|
8
|
+
/** Frame source; injected so the queue can be driven in tests. */
|
|
9
|
+
requestFrame?: (callback: () => void) => void;
|
|
10
|
+
}
|
|
11
|
+
/** Urgency of a mount; smaller runs first. */
|
|
12
|
+
export declare const MOUNT_PRIORITY: Readonly<{
|
|
13
|
+
/** The frame the designer is on, or is about to be: mounts as soon as it fits. */
|
|
14
|
+
active: 0;
|
|
15
|
+
/** In or near the viewport. */
|
|
16
|
+
visible: 1;
|
|
17
|
+
/** Everything else. */
|
|
18
|
+
background: 2;
|
|
19
|
+
}>;
|
|
20
|
+
export declare const DEFAULT_MOUNTS_PER_FRAME = 3;
|
|
21
|
+
/** Test/tuning hook. */
|
|
22
|
+
export declare function configureMountScheduler(options: MountSchedulerOptions): void;
|
|
23
|
+
/** Drops queued mounts and counters; tests call it between cases. */
|
|
24
|
+
export declare function resetMountScheduler(): void;
|
|
25
|
+
export declare function pendingMountCount(): number;
|
|
26
|
+
/**
|
|
27
|
+
* Runs the mount now if this frame's budget allows, otherwise queues it.
|
|
28
|
+
* The returned ticket withdraws a queued mount when the frame goes away
|
|
29
|
+
* before its turn.
|
|
30
|
+
*/
|
|
31
|
+
export declare function scheduleMount(run: () => void, priority?: number): MountTicket;
|