shopport 0.5.7 → 0.5.8

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.
@@ -0,0 +1 @@
1
+ *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 72 11% 95%;--foreground: 0 0% 7%;--card: 0 0% 100%;--card-foreground: 0 0% 7%;--popover: 0 0% 100%;--popover-foreground: 0 0% 7%;--border: 70 8% 86%;--muted: 70 8% 89%;--muted-foreground: 0 0% 7% / .55;--primary: 19 100% 49%;--primary-foreground: 0 0% 100%;--success: 142 71% 45%;--warning: 37 84% 55%;--destructive: 0 84% 60%;--destructive-foreground: 0 0% 100%;--radius: 8px}.dark{--background: 225 16% 13%;--foreground: 0 0% 100%;--card: 225 14% 15%;--card-foreground: 0 0% 100%;--popover: 225 14% 18%;--popover-foreground: 0 0% 100%;--border: 225 8% 22%;--muted: 225 8% 16%;--muted-foreground: 0 0% 100% / .45;--primary: 37 97% 49%;--primary-foreground: 225 16% 13%;--success: 142 63% 32%;--warning: 37 97% 49%;--destructive: 0 72% 51%;--destructive-foreground: 0 0% 100%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-x-1\.5{left:.375rem;right:.375rem}.inset-y-0{top:0;bottom:0}.-right-1\.5{right:-.375rem}.-top-1\.5{top:-.375rem}.-top-6{top:-1.5rem}.bottom-0{bottom:0}.bottom-1{bottom:.25rem}.bottom-14{bottom:3.5rem}.bottom-3{bottom:.75rem}.bottom-\[20px\]{bottom:20px}.left-0{left:0}.left-1\/2{left:50%}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-auto{left:auto}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-6{right:1.5rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-3{top:.75rem}.top-8{top:2rem}.top-\[30px\]{top:30px}.top-full{top:100%}.isolate{isolation:isolate}.-z-10{z-index:-10}.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}.z-\[100\]{z-index:100}.z-\[1\]{z-index:1}.z-\[5\]{z-index:5}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.order-1{order:1}.col-span-2{grid-column:span 2 / span 2}.col-span-4{grid-column:span 4 / span 4}.col-span-9{grid-column:span 9 / span 9}.float-right{float:right}.m-0{margin:0}.m-auto{margin:auto}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-ml-0\.5{margin-left:-.125rem}.-ml-1{margin-left:-.25rem}.-ml-7{margin-left:-1.75rem}.-mr-1{margin-right:-.25rem}.-mt-0\.5{margin-top:-.125rem}.-mt-4{margin-top:-1rem}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-auto{margin-right:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[3px\]{margin-top:3px}.mt-\[7px\]{margin-top:7px}.mt-px{margin-top:1px}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.size-1\.5{width:.375rem;height:.375rem}.size-10{width:2.5rem;height:2.5rem}.size-2{width:.5rem;height:.5rem}.size-2\.5{width:.625rem;height:.625rem}.size-20{width:5rem;height:5rem}.size-32{width:8rem;height:8rem}.size-4{width:1rem;height:1rem}.size-5{width:1.25rem;height:1.25rem}.size-6{width:1.5rem;height:1.5rem}.size-7{width:1.75rem;height:1.75rem}.size-8{width:2rem;height:2rem}.size-\[42px\]{width:42px;height:42px}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-44{height:11rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[13px\]{height:13px}.h-\[150px\]{height:150px}.h-\[18px\]{height:18px}.h-\[24px\]{height:24px}.h-\[250px\]{height:250px}.h-\[260px\]{height:260px}.h-\[30px\]{height:30px}.h-\[380px\]{height:380px}.h-\[400px\]{height:400px}.h-\[40px\]{height:40px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-64{max-height:16rem}.max-h-72{max-height:18rem}.max-h-80{max-height:20rem}.max-h-\[280px\]{max-height:280px}.max-h-\[40\%\]{max-height:40%}.max-h-\[70vh\]{max-height:70vh}.max-h-\[75vh\]{max-height:75vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.max-h-\[calc\(90vh-126px\)\]{max-height:calc(90vh - 126px)}.max-h-\[min\(620px\,calc\(100vh-6rem\)\)\]{max-height:min(620px,calc(100vh - 6rem))}.max-h-none{max-height:none}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-12{min-height:3rem}.min-h-16{min-height:4rem}.min-h-20{min-height:5rem}.min-h-8{min-height:2rem}.min-h-9{min-height:2.25rem}.min-h-\[108px\]{min-height:108px}.min-h-\[120px\]{min-height:120px}.min-h-\[320px\]{min-height:320px}.min-h-\[42px\]{min-height:42px}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[10\%\]{width:10%}.w-\[100px\]{width:100px}.w-\[11\%\]{width:11%}.w-\[110px\]{width:110px}.w-\[12\%\]{width:12%}.w-\[120px\]{width:120px}.w-\[13\%\]{width:13%}.w-\[132px\]{width:132px}.w-\[13px\]{width:13px}.w-\[14\%\]{width:14%}.w-\[15\%\]{width:15%}.w-\[160px\]{width:160px}.w-\[176px\]{width:176px}.w-\[18\%\]{width:18%}.w-\[200px\]{width:200px}.w-\[220px\]{width:220px}.w-\[240px\]{width:240px}.w-\[28px\]{width:28px}.w-\[300px\]{width:300px}.w-\[31\%\]{width:31%}.w-\[32px\]{width:32px}.w-\[33\%\]{width:33%}.w-\[34\%\]{width:34%}.w-\[360px\]{width:360px}.w-\[36px\]{width:36px}.w-\[380px\]{width:380px}.w-\[40px\]{width:40px}.w-\[48px\]{width:48px}.w-\[5\%\]{width:5%}.w-\[50px\]{width:50px}.w-\[52px\]{width:52px}.w-\[55px\]{width:55px}.w-\[56px\]{width:56px}.w-\[6\%\]{width:6%}.w-\[60\%\]{width:60%}.w-\[60px\]{width:60px}.w-\[7\%\]{width:7%}.w-\[72px\]{width:72px}.w-\[80px\]{width:80px}.w-\[860px\]{width:860px}.w-\[88px\]{width:88px}.w-\[9\%\]{width:9%}.w-\[95vw\]{width:95vw}.w-\[96px\]{width:96px}.w-\[max\(100\%\,180px\)\]{width:max(100%,180px)}.w-\[min\(1100px\,calc\(100vw-2rem\)\)\]{width:min(1100px,calc(100vw - 2rem))}.w-\[min\(1220px\,calc\(100vw-2rem\)\)\]{width:min(1220px,calc(100vw - 2rem))}.w-\[min\(260px\,calc\(100vw-2rem\)\)\]{width:min(260px,calc(100vw - 2rem))}.w-\[min\(360px\,calc\(100vw-2rem\)\)\]{width:min(360px,calc(100vw - 2rem))}.w-\[min\(380px\,calc\(100vw-2rem\)\)\]{width:min(380px,calc(100vw - 2rem))}.w-\[min\(460px\,calc\(100vw-2rem\)\)\]{width:min(460px,calc(100vw - 2rem))}.w-\[min\(480px\,calc\(100vw-2rem\)\)\]{width:min(480px,calc(100vw - 2rem))}.w-\[min\(500px\,calc\(100vw-2rem\)\)\]{width:min(500px,calc(100vw - 2rem))}.w-\[min\(520px\,calc\(100vw-2rem\)\)\]{width:min(520px,calc(100vw - 2rem))}.w-\[min\(620px\,calc\(100vw-2rem\)\)\]{width:min(620px,calc(100vw - 2rem))}.w-\[min\(680px\,calc\(100vw-2rem\)\)\]{width:min(680px,calc(100vw - 2rem))}.w-\[min\(760px\,calc\(100vw-2rem\)\)\]{width:min(760px,calc(100vw - 2rem))}.w-\[min\(820px\,calc\(100vw-2rem\)\)\]{width:min(820px,calc(100vw - 2rem))}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-10{min-width:2.5rem}.min-w-24{min-width:6rem}.min-w-40{min-width:10rem}.min-w-8{min-width:2rem}.min-w-\[100px\]{min-width:100px}.min-w-\[110px\]{min-width:110px}.min-w-\[1120px\]{min-width:1120px}.min-w-\[124px\]{min-width:124px}.min-w-\[1280px\]{min-width:1280px}.min-w-\[132px\]{min-width:132px}.min-w-\[1470px\]{min-width:1470px}.min-w-\[150px\]{min-width:150px}.min-w-\[155px\]{min-width:155px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.min-w-\[190px\]{min-width:190px}.min-w-\[200px\]{min-width:200px}.min-w-\[360px\]{min-width:360px}.min-w-\[380px\]{min-width:380px}.min-w-\[560px\]{min-width:560px}.min-w-\[680px\]{min-width:680px}.min-w-\[700px\]{min-width:700px}.min-w-\[760px\]{min-width:760px}.min-w-\[800px\]{min-width:800px}.min-w-\[820px\]{min-width:820px}.min-w-\[900px\]{min-width:900px}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-3{max-width:.75rem}.max-w-32{max-width:8rem}.max-w-36{max-width:9rem}.max-w-3xl{max-width:48rem}.max-w-5xl{max-width:64rem}.max-w-\[100px\]{max-width:100px}.max-w-\[100vw\]{max-width:100vw}.max-w-\[120px\]{max-width:120px}.max-w-\[1280px\]{max-width:1280px}.max-w-\[132px\]{max-width:132px}.max-w-\[140px\]{max-width:140px}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[220px\]{max-width:220px}.max-w-\[240px\]{max-width:240px}.max-w-\[260px\]{max-width:260px}.max-w-\[280px\]{max-width:280px}.max-w-\[300px\]{max-width:300px}.max-w-\[320px\]{max-width:320px}.max-w-\[340px\]{max-width:340px}.max-w-\[360px\]{max-width:360px}.max-w-\[370px\]{max-width:370px}.max-w-\[380px\]{max-width:380px}.max-w-\[400px\]{max-width:400px}.max-w-\[440px\]{max-width:440px}.max-w-\[480px\]{max-width:480px}.max-w-\[560px\]{max-width:560px}.max-w-\[720px\]{max-width:720px}.max-w-\[72px\]{max-width:72px}.max-w-\[760px\]{max-width:760px}.max-w-\[860px\]{max-width:860px}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-\[min\(280px\,calc\(100vw-2rem\)\)\]{max-width:min(280px,calc(100vw - 2rem))}.max-w-\[min\(580px\,calc\(100\%-1\.5rem\)\)\]{max-width:min(580px,calc(100% - 1.5rem))}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-screen-xl{max-width:1280px}.flex-1{flex:1 1 0%}.flex-\[1\]{flex:1}.flex-\[2\]{flex:2}.flex-none{flex:none}.flex-shrink-0,.shrink-0{flex-shrink:0}.basis-full{flex-basis:100%}.border-collapse{border-collapse:collapse}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x: 0px;--tw-border-spacing-y: 0px;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-none{resize:none}.resize{resize:both}.scroll-mt-4{scroll-margin-top:1rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.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-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[100px_1fr\]{grid-template-columns:100px 1fr}.grid-cols-\[110px_minmax\(360px\,1\.45fr\)_minmax\(360px\,1\.35fr\)_100px_100px_100px_68px_88px_120px\]{grid-template-columns:110px minmax(360px,1.45fr) minmax(360px,1.35fr) 100px 100px 100px 68px 88px 120px}.grid-cols-\[190px_1fr\]{grid-template-columns:190px 1fr}.grid-cols-\[1fr_1fr_1fr_auto\]{grid-template-columns:1fr 1fr 1fr auto}.grid-cols-\[1fr_92px\]{grid-template-columns:1fr 92px}.grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.grid-cols-\[1fr_auto_auto\]{grid-template-columns:1fr auto auto}.grid-cols-\[210px_minmax\(520px\,1fr\)\]{grid-template-columns:210px minmax(520px,1fr)}.grid-cols-\[260px_1fr\]{grid-template-columns:260px 1fr}.grid-cols-\[72px_1fr_auto\]{grid-template-columns:72px 1fr auto}.grid-cols-\[90px_1fr\]{grid-template-columns:90px 1fr}.grid-cols-\[minmax\(0\,1fr\)_100px_32px\]{grid-template-columns:minmax(0,1fr) 100px 32px}.grid-cols-\[minmax\(0\,1fr\)_48px_56px_86px_52px\]{grid-template-columns:minmax(0,1fr) 48px 56px 86px 52px}.grid-cols-\[minmax\(130px\,1\.6fr\)_64px_46px_76px_80px_120px_80px\]{grid-template-columns:minmax(130px,1.6fr) 64px 46px 76px 80px 120px 80px}.grid-cols-\[minmax\(180px\,1fr\)_110px_80px_32px\]{grid-template-columns:minmax(180px,1fr) 110px 80px 32px}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[2px\]{gap:2px}.gap-px{gap:1px}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-0\.5{row-gap:.125rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border>:not([hidden])~:not([hidden]){border-color:hsl(var(--border))}.divide-border\/50>:not([hidden])~:not([hidden]){border-color:hsl(var(--border) / .5)}.divide-border\/60>:not([hidden])~:not([hidden]){border-color:hsl(var(--border) / .6)}.self-start{align-self:flex-start}.self-center{align-self:center}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-y-visible{overflow-y:visible}.overscroll-contain{overscroll-behavior:contain}.overscroll-x-contain{overscroll-behavior-x:contain}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.break-keep{word-break:keep-all}.rounded{border-radius:.25rem}.rounded-\[22px\]{border-radius:22px}.rounded-\[2px\]{border-radius:2px}.rounded-\[3px\]{border-radius:3px}.rounded-\[4px\]{border-radius:4px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-b-lg{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.rounded-b-md{border-bottom-right-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.rounded-br-xl{border-bottom-right-radius:.75rem}.rounded-tl-xl{border-top-left-radius:.75rem}.rounded-tr-xl{border-top-right-radius:.75rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-x{border-left-width:1px;border-right-width:1px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-y-2{border-top-width:2px;border-bottom-width:2px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0px}.border-t-2{border-top-width:2px}.border-dashed{border-style:dashed}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-200\/50{border-color:#fde68a80}.border-amber-200\/60{border-color:#fde68a99}.border-amber-300{--tw-border-opacity: 1;border-color:rgb(252 211 77 / var(--tw-border-opacity, 1))}.border-amber-300\/25{border-color:#fcd34d40}.border-amber-300\/30{border-color:#fcd34d4d}.border-amber-300\/50{border-color:#fcd34d80}.border-amber-300\/60{border-color:#fcd34d99}.border-amber-400\/25{border-color:#fbbf2440}.border-amber-500{--tw-border-opacity: 1;border-color:rgb(245 158 11 / var(--tw-border-opacity, 1))}.border-amber-500\/25{border-color:#f59e0b40}.border-amber-500\/30{border-color:#f59e0b4d}.border-amber-500\/50{border-color:#f59e0b80}.border-black\/\[0\.06\]{border-color:#0000000f}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/20{border-color:hsl(var(--border) / .2)}.border-border\/30{border-color:hsl(var(--border) / .3)}.border-border\/40{border-color:hsl(var(--border) / .4)}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-border\/60{border-color:hsl(var(--border) / .6)}.border-border\/70{border-color:hsl(var(--border) / .7)}.border-cyan-300{--tw-border-opacity: 1;border-color:rgb(103 232 249 / var(--tw-border-opacity, 1))}.border-cyan-300\/15{border-color:#67e8f926}.border-cyan-300\/20{border-color:#67e8f933}.border-cyan-300\/25{border-color:#67e8f940}.border-cyan-300\/30{border-color:#67e8f94d}.border-cyan-300\/45{border-color:#67e8f973}.border-destructive\/30{border-color:hsl(var(--destructive) / .3)}.border-emerald-200{--tw-border-opacity: 1;border-color:rgb(167 243 208 / var(--tw-border-opacity, 1))}.border-emerald-300\/25{border-color:#6ee7b740}.border-emerald-400\/20{border-color:#34d39933}.border-emerald-400\/25{border-color:#34d39940}.border-emerald-500{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity, 1))}.border-emerald-600{--tw-border-opacity: 1;border-color:rgb(5 150 105 / var(--tw-border-opacity, 1))}.border-foreground{border-color:hsl(var(--foreground))}.border-foreground\/20{border-color:hsl(var(--foreground) / .2)}.border-foreground\/50{border-color:hsl(var(--foreground) / .5)}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/40{border-color:hsl(var(--muted-foreground) / .4)}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-300{--tw-border-opacity: 1;border-color:rgb(253 186 116 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary-foreground\/20{border-color:hsl(var(--primary-foreground) / .2)}.border-primary\/15{border-color:hsl(var(--primary) / .15)}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/25{border-color:hsl(var(--primary) / .25)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/40{border-color:hsl(var(--primary) / .4)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-primary\/60{border-color:hsl(var(--primary) / .6)}.border-purple-200{--tw-border-opacity: 1;border-color:rgb(233 213 255 / var(--tw-border-opacity, 1))}.border-purple-300{--tw-border-opacity: 1;border-color:rgb(216 180 254 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-sky-200{--tw-border-opacity: 1;border-color:rgb(186 230 253 / var(--tw-border-opacity, 1))}.border-sky-400\/25{border-color:#38bdf840}.border-slate-300{--tw-border-opacity: 1;border-color:rgb(203 213 225 / var(--tw-border-opacity, 1))}.border-slate-500\/25{border-color:#64748b40}.border-transparent{border-color:transparent}.border-violet-200{--tw-border-opacity: 1;border-color:rgb(221 214 254 / var(--tw-border-opacity, 1))}.border-violet-300\/15{border-color:#c4b5fd26}.border-violet-300\/20{border-color:#c4b5fd33}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.border-white\/10{border-color:#ffffff1a}.border-white\/15{border-color:#ffffff26}.border-white\/\[0\.05\]{border-color:#ffffff0d}.border-white\/\[0\.06\]{border-color:#ffffff0f}.border-white\/\[0\.07\]{border-color:#ffffff12}.border-white\/\[0\.08\]{border-color:#ffffff14}.border-white\/\[0\.1\]{border-color:#ffffff1a}.border-t-muted-foreground{border-top-color:hsl(var(--muted-foreground))}.border-t-transparent{border-top-color:transparent}.bg-\[\#070f1c\]{--tw-bg-opacity: 1;background-color:rgb(7 15 28 / var(--tw-bg-opacity, 1))}.bg-\[\#07111e\]\/90{background-color:#07111ee6}.bg-\[\#08111f\]\/90{background-color:#08111fe6}.bg-\[\#0b1524\]{--tw-bg-opacity: 1;background-color:rgb(11 21 36 / var(--tw-bg-opacity, 1))}.bg-\[\#0b1524\]\/95{background-color:#0b1524f2}.bg-\[\#c73a55\]{--tw-bg-opacity: 1;background-color:rgb(199 58 85 / var(--tw-bg-opacity, 1))}.bg-\[\#e94765cc\]{background-color:#e94765cc}.bg-\[rgba\(184\,127\,91\,0\.85\)\]{background-color:#b87f5bd9}.bg-\[rgba\(208\,150\,108\,0\.7\)\]{background-color:#d0966cb3}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.bg-amber-300\/\[0\.08\]{background-color:#fcd34d14}.bg-amber-400\/10{background-color:#fbbf241a}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-50\/50{background-color:#fffbeb80}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-amber-500\/5{background-color:#f59e0b0d}.bg-amber-500\/60{background-color:#f59e0b99}.bg-background{background-color:hsl(var(--background))}.bg-background\/70{background-color:hsl(var(--background) / .7)}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/15{background-color:#00000026}.bg-black\/40{background-color:#0006}.bg-black\/45{background-color:#00000073}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50\/50{background-color:#eff6ff80}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-500\/10{background-color:#3b82f61a}.bg-blue-500\/60{background-color:#3b82f699}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-card\/95{background-color:hsl(var(--card) / .95)}.bg-current{background-color:currentColor}.bg-cyan-300{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.bg-cyan-300\/15{background-color:#67e8f926}.bg-cyan-300\/\[0\.045\]{background-color:#67e8f90b}.bg-cyan-300\/\[0\.04\]{background-color:#67e8f90a}.bg-cyan-300\/\[0\.07\]{background-color:#67e8f912}.bg-cyan-300\/\[0\.08\]{background-color:#67e8f914}.bg-cyan-300\/\[0\.1\]{background-color:#67e8f91a}.bg-cyan-500\/10{background-color:#06b6d41a}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/10{background-color:hsl(var(--destructive) / .1)}.bg-destructive\/5{background-color:hsl(var(--destructive) / .05)}.bg-emerald-100{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity, 1))}.bg-emerald-300\/\[0\.07\]{background-color:#6ee7b712}.bg-emerald-400\/10{background-color:#34d3991a}.bg-emerald-400\/15{background-color:#34d39926}.bg-emerald-400\/\[0\.06\]{background-color:#34d3990f}.bg-emerald-50{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.bg-emerald-50\/50{background-color:#ecfdf580}.bg-emerald-50\/60{background-color:#ecfdf599}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.bg-emerald-500\/10{background-color:#10b9811a}.bg-foreground{background-color:hsl(var(--foreground))}.bg-foreground\/25{background-color:hsl(var(--foreground) / .25)}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-50\/60{background-color:#f9fafb99}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-500\/10{background-color:#22c55e1a}.bg-green-500\/15{background-color:#22c55e26}.bg-indigo-50{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground{background-color:hsl(var(--muted-foreground))}.bg-muted-foreground\/15{background-color:hsl(var(--muted-foreground) / .15)}.bg-muted-foreground\/30{background-color:hsl(var(--muted-foreground) / .3)}.bg-muted-foreground\/35{background-color:hsl(var(--muted-foreground) / .35)}.bg-muted-foreground\/40{background-color:hsl(var(--muted-foreground) / .4)}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/10{background-color:hsl(var(--muted) / .1)}.bg-muted\/15{background-color:hsl(var(--muted) / .15)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/25{background-color:hsl(var(--muted) / .25)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/35{background-color:hsl(var(--muted) / .35)}.bg-muted\/40{background-color:hsl(var(--muted) / .4)}.bg-muted\/5{background-color:hsl(var(--muted) / .05)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-muted\/60{background-color:hsl(var(--muted) / .6)}.bg-muted\/70{background-color:hsl(var(--muted) / .7)}.bg-muted\/\[0\.12\]{background-color:hsl(var(--muted) / .12)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-50\/60{background-color:#fff7ed99}.bg-orange-500\/10{background-color:#f973161a}.bg-orange-500\/15{background-color:#f9731626}.bg-pink-500\/10{background-color:#ec48991a}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/40{background-color:hsl(var(--primary) / .4)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-primary\/50{background-color:hsl(var(--primary) / .5)}.bg-primary\/60{background-color:hsl(var(--primary) / .6)}.bg-primary\/70{background-color:hsl(var(--primary) / .7)}.bg-primary\/\[0\.025\]{background-color:hsl(var(--primary) / .025)}.bg-primary\/\[0\.035\]{background-color:hsl(var(--primary) / .035)}.bg-primary\/\[0\.03\]{background-color:hsl(var(--primary) / .03)}.bg-primary\/\[0\.04\]{background-color:hsl(var(--primary) / .04)}.bg-primary\/\[0\.05\]{background-color:hsl(var(--primary) / .05)}.bg-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-purple-50\/30{background-color:#faf5ff4d}.bg-purple-50\/60{background-color:#faf5ff99}.bg-purple-500\/10{background-color:#a855f71a}.bg-purple-500\/15{background-color:#a855f726}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-50\/60{background-color:#fef2f299}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-500\/15{background-color:#ef444426}.bg-rose-400\/70{background-color:#fb7185b3}.bg-rose-50{--tw-bg-opacity: 1;background-color:rgb(255 241 242 / var(--tw-bg-opacity, 1))}.bg-sky-100{--tw-bg-opacity: 1;background-color:rgb(224 242 254 / var(--tw-bg-opacity, 1))}.bg-sky-400\/10{background-color:#38bdf81a}.bg-sky-400\/70{background-color:#38bdf8b3}.bg-sky-50{--tw-bg-opacity: 1;background-color:rgb(240 249 255 / var(--tw-bg-opacity, 1))}.bg-slate-100{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.bg-slate-50{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity, 1))}.bg-slate-500\/10{background-color:#64748b1a}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-slate-950{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.bg-slate-950\/25{background-color:#02061740}.bg-slate-950\/65{background-color:#020617a6}.bg-slate-950\/75{background-color:#020617bf}.bg-stone-100{--tw-bg-opacity: 1;background-color:rgb(245 245 244 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-violet-100{--tw-bg-opacity: 1;background-color:rgb(237 233 254 / var(--tw-bg-opacity, 1))}.bg-violet-300\/\[0\.07\]{background-color:#c4b5fd12}.bg-violet-50{--tw-bg-opacity: 1;background-color:rgb(245 243 255 / var(--tw-bg-opacity, 1))}.bg-violet-500{--tw-bg-opacity: 1;background-color:rgb(139 92 246 / var(--tw-bg-opacity, 1))}.bg-violet-500\/10{background-color:#8b5cf61a}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/\[0\.025\]{background-color:#ffffff06}.bg-white\/\[0\.02\]{background-color:#ffffff05}.bg-white\/\[0\.03\]{background-color:#ffffff08}.bg-white\/\[0\.05\]{background-color:#ffffff0d}.bg-yellow-500\/15{background-color:#eab30826}.bg-\[linear-gradient\(115deg\,rgba\(124\,58\,237\,\.15\)\,transparent_55\%\)\,linear-gradient\(25deg\,rgba\(8\,145\,178\,\.11\)\,transparent_52\%\)\]{background-image:linear-gradient(115deg,rgba(124,58,237,.15),transparent 55%),linear-gradient(25deg,rgba(8,145,178,.11),transparent 52%)}.bg-\[linear-gradient\(180deg\,rgba\(5\,11\,20\,\.1\)\,rgba\(5\,11\,20\,\.76\)_88\%\)\]{background-image:linear-gradient(180deg,#050b141a,#050b14c2 88%)}.bg-\[linear-gradient\(90deg\,rgba\(5\,11\,20\,\.96\)_0\%\,rgba\(5\,11\,20\,\.78\)_40\%\,rgba\(5\,11\,20\,\.48\)_100\%\)\]{background-image:linear-gradient(90deg,#050b14f5,#050b14c7 40%,#050b147a)}.bg-\[linear-gradient\(90deg\,transparent_24\.9\%\,hsl\(var\(--border\)\)_25\%\,transparent_25\.1\%\,transparent_49\.9\%\,hsl\(var\(--border\)\)_50\%\,transparent_50\.1\%\,transparent_74\.9\%\,hsl\(var\(--border\)\)_75\%\,transparent_75\.1\%\)\]{background-image:linear-gradient(90deg,transparent 24.9%,hsl(var(--border)) 25%,transparent 25.1%,transparent 49.9%,hsl(var(--border)) 50%,transparent 50.1%,transparent 74.9%,hsl(var(--border)) 75%,transparent 75.1%)}.bg-\[radial-gradient\(circle_at_25\%_20\%\,hsl\(var\(--primary\)\/0\.11\)\,transparent_34\%\)\,linear-gradient\(135deg\,hsl\(var\(--card\)\)\,hsl\(var\(--muted\)\/0\.25\)\)\]{background-image:radial-gradient(circle at 25% 20%,hsl(var(--primary)/.11),transparent 34%),linear-gradient(135deg,hsl(var(--card)),hsl(var(--muted)/.25))}.bg-cover{background-size:cover}.bg-center{background-position:center}.fill-amber-500{fill:#f59e0b}.fill-cyan-200{fill:#a5f3fc}.fill-cyan-300\/20{fill:#67e8f933}.fill-none{fill:none}.fill-rose-400\/70{fill:#fb7185b3}.fill-sky-400\/70{fill:#38bdf8b3}.stroke-current{stroke:currentColor}.stroke-\[1\.7\]{stroke-width:1.7}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.object-\[62\%_34\%\]{-o-object-position:62% 34%;object-position:62% 34%}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-10{padding:2.5rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-7{padding:1.75rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[1px\],.py-px{padding-top:1px;padding-bottom:1px}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-10{padding-bottom:2.5rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-3\.5{padding-bottom:.875rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-\[max\(0\.75rem\,env\(safe-area-inset-bottom\)\)\]{padding-bottom:max(.75rem,env(safe-area-inset-bottom))}.pl-0{padding-left:0}.pl-0\.5{padding-left:.125rem}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-7{padding-left:1.75rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-0{padding-right:0}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-5{padding-right:1.25rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-3\.5{padding-top:.875rem}.pt-4{padding-top:1rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.pt-\[15vh\]{padding-top:15vh}.pt-\[8vh\]{padding-top:8vh}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-\[-2px\]{vertical-align:-2px}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-\[0\.85em\]{font-size:.85em}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.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-\[17px\]{font-size:17px}.text-\[18px\]{font-size:18px}.text-\[19px\]{font-size:19px}.text-\[7\.5px\]{font-size:7.5px}.text-\[7px\]{font-size:7px}.text-\[8\.5px\]{font-size:8.5px}.text-\[8px\]{font-size:8px}.text-\[9\.5px\]{font-size:9.5px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.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)}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-\[1\.35\]{line-height:1.35}.leading-\[14px\]{line-height:14px}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[-0\.04em\]{letter-spacing:-.04em}.tracking-\[0\.08em\]{letter-spacing:.08em}.tracking-\[0\.14em\]{letter-spacing:.14em}.tracking-\[0\.15em\]{letter-spacing:.15em}.tracking-\[0\.16em\]{letter-spacing:.16em}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-\[0\.3em\]{letter-spacing:.3em}.tracking-\[2px\]{letter-spacing:2px}.tracking-normal{letter-spacing:0em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-100{--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.text-amber-200{--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity, 1))}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-amber-400\/70{color:#fbbf24b3}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-800{--tw-text-opacity: 1;color:rgb(146 64 14 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-background{color:hsl(var(--background))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-border{color:hsl(var(--border))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-cyan-100{--tw-text-opacity: 1;color:rgb(207 250 254 / var(--tw-text-opacity, 1))}.text-cyan-200{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-cyan-700{--tw-text-opacity: 1;color:rgb(14 116 144 / var(--tw-text-opacity, 1))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-100{--tw-text-opacity: 1;color:rgb(209 250 229 / var(--tw-text-opacity, 1))}.text-emerald-200{--tw-text-opacity: 1;color:rgb(167 243 208 / var(--tw-text-opacity, 1))}.text-emerald-300{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-emerald-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-emerald-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.text-emerald-800{--tw-text-opacity: 1;color:rgb(6 95 70 / var(--tw-text-opacity, 1))}.text-emerald-900{--tw-text-opacity: 1;color:rgb(6 78 59 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/40{color:hsl(var(--foreground) / .4)}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-foreground\/60{color:hsl(var(--foreground) / .6)}.text-foreground\/70{color:hsl(var(--foreground) / .7)}.text-foreground\/75{color:hsl(var(--foreground) / .75)}.text-foreground\/80{color:hsl(var(--foreground) / .8)}.text-foreground\/90{color:hsl(var(--foreground) / .9)}.text-fuchsia-100{--tw-text-opacity: 1;color:rgb(250 232 255 / var(--tw-text-opacity, 1))}.text-fuchsia-200{--tw-text-opacity: 1;color:rgb(245 208 254 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-indigo-800{--tw-text-opacity: 1;color:rgb(55 48 163 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/40{color:hsl(var(--muted-foreground) / .4)}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-muted-foreground\/65{color:hsl(var(--muted-foreground) / .65)}.text-muted-foreground\/70{color:hsl(var(--muted-foreground) / .7)}.text-muted-foreground\/80{color:hsl(var(--muted-foreground) / .8)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-pink-700{--tw-text-opacity: 1;color:rgb(190 24 93 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-primary\/70{color:hsl(var(--primary) / .7)}.text-primary\/80{color:hsl(var(--primary) / .8)}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-600\/80{color:#9333eacc}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-purple-800{--tw-text-opacity: 1;color:rgb(107 33 168 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-500\/70{color:#ef4444b3}.text-red-500\/80{color:#ef4444cc}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-600\/80{color:#dc2626cc}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.text-rose-500{--tw-text-opacity: 1;color:rgb(244 63 94 / var(--tw-text-opacity, 1))}.text-rose-700{--tw-text-opacity: 1;color:rgb(190 18 60 / var(--tw-text-opacity, 1))}.text-rose-800{--tw-text-opacity: 1;color:rgb(159 18 57 / var(--tw-text-opacity, 1))}.text-sky-300{--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity, 1))}.text-sky-600{--tw-text-opacity: 1;color:rgb(2 132 199 / var(--tw-text-opacity, 1))}.text-sky-700{--tw-text-opacity: 1;color:rgb(3 105 161 / var(--tw-text-opacity, 1))}.text-sky-800{--tw-text-opacity: 1;color:rgb(7 89 133 / var(--tw-text-opacity, 1))}.text-sky-900{--tw-text-opacity: 1;color:rgb(12 74 110 / var(--tw-text-opacity, 1))}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity, 1))}.text-slate-600{--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity, 1))}.text-slate-700{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity, 1))}.text-slate-800{--tw-text-opacity: 1;color:rgb(30 41 59 / var(--tw-text-opacity, 1))}.text-slate-950{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.text-stone-500{--tw-text-opacity: 1;color:rgb(120 113 108 / var(--tw-text-opacity, 1))}.text-stone-700{--tw-text-opacity: 1;color:rgb(68 64 60 / var(--tw-text-opacity, 1))}.text-violet-200{--tw-text-opacity: 1;color:rgb(221 214 254 / var(--tw-text-opacity, 1))}.text-violet-300{--tw-text-opacity: 1;color:rgb(196 181 253 / var(--tw-text-opacity, 1))}.text-violet-600{--tw-text-opacity: 1;color:rgb(124 58 237 / var(--tw-text-opacity, 1))}.text-violet-700{--tw-text-opacity: 1;color:rgb(109 40 217 / var(--tw-text-opacity, 1))}.text-violet-800{--tw-text-opacity: 1;color:rgb(91 33 182 / var(--tw-text-opacity, 1))}.text-violet-900{--tw-text-opacity: 1;color:rgb(76 29 149 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/90{color:#ffffffe6}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.decoration-muted-foreground\/40{text-decoration-color:hsl(var(--muted-foreground) / .4)}.decoration-dotted{text-decoration-style:dotted}.underline-offset-2{text-underline-offset:2px}.accent-primary{accent-color:hsl(var(--primary))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-55{opacity:.55}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-\[0\.22\]{opacity:.22}.mix-blend-screen{mix-blend-mode:screen}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-inset{--tw-ring-inset: inset}.ring-amber-400\/60{--tw-ring-color: rgb(251 191 36 / .6)}.ring-primary\/50{--tw-ring-color: hsl(var(--primary) / .5)}.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)}.brightness-75{--tw-brightness: brightness(.75);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)}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[color\,background-color\,border-color\,box-shadow\,transform\]{transition-property:color,background-color,border-color,box-shadow,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[-webkit-overflow-scrolling\:touch\]{-webkit-overflow-scrolling:touch}.\[scrollbar-width\:none\]{scrollbar-width:none}.marker\:text-muted-foreground\/40 *::marker{color:hsl(var(--muted-foreground) / .4)}.marker\:text-muted-foreground\/40::marker{color:hsl(var(--muted-foreground) / .4)}.file\:mr-3::file-selector-button{margin-right:.75rem}.file\:rounded-md::file-selector-button{border-radius:calc(var(--radius) - 2px)}.file\:border::file-selector-button{border-width:1px}.file\:border-border::file-selector-button{border-color:hsl(var(--border))}.file\:bg-muted::file-selector-button{background-color:hsl(var(--muted))}.file\:px-2::file-selector-button{padding-left:.5rem;padding-right:.5rem}.file\:py-1\.5::file-selector-button{padding-top:.375rem;padding-bottom:.375rem}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground\/40::-moz-placeholder{color:hsl(var(--muted-foreground) / .4)}.placeholder\:text-muted-foreground\/40::placeholder{color:hsl(var(--muted-foreground) / .4)}.placeholder\:text-muted-foreground\/60::-moz-placeholder{color:hsl(var(--muted-foreground) / .6)}.placeholder\:text-muted-foreground\/60::placeholder{color:hsl(var(--muted-foreground) / .6)}.placeholder\:text-muted-foreground\/70::-moz-placeholder{color:hsl(var(--muted-foreground) / .7)}.placeholder\:text-muted-foreground\/70::placeholder{color:hsl(var(--muted-foreground) / .7)}.backdrop\:bg-black\/45::backdrop{background-color:#00000073}.backdrop\:bg-black\/50::backdrop{background-color:#00000080}.backdrop\:backdrop-blur-\[1px\]::backdrop{--tw-backdrop-blur: blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.after\:pointer-events-none:after{content:var(--tw-content);pointer-events:none}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bottom-0:after{content:var(--tw-content);bottom:0}.after\:right-0:after{content:var(--tw-content);right:0}.after\:top-0:after{content:var(--tw-content);top:0}.after\:w-\[6px\]:after{content:var(--tw-content);width:6px}.after\:bg-gradient-to-r:after{content:var(--tw-content);background-image:linear-gradient(to right,var(--tw-gradient-stops))}.after\:from-black\/\[0\.04\]:after{content:var(--tw-content);--tw-gradient-from: rgb(0 0 0 / .04) var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.after\:to-transparent:after{content:var(--tw-content);--tw-gradient-to: transparent var(--tw-gradient-to-position)}.first\:mt-0:first-child{margin-top:0}.first\:border-l-0:first-child{border-left-width:0px}.first\:border-t-0:first-child{border-top-width:0px}.first\:pl-0:first-child{padding-left:0}.last\:border-0:last-child{border-width:0px}.last\:border-b-0:last-child{border-bottom-width:0px}.last\:pb-0:last-child{padding-bottom:0}.read-only\:bg-muted\/40:-moz-read-only{background-color:hsl(var(--muted) / .4)}.read-only\:bg-muted\/40:read-only{background-color:hsl(var(--muted) / .4)}.focus-within\:ring-2:focus-within{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-within\:ring-primary\/40:focus-within{--tw-ring-color: hsl(var(--primary) / .4)}.hover\:border-border:hover{border-color:hsl(var(--border))}.hover\:border-cyan-300\/20:hover{border-color:#67e8f933}.hover\:border-foreground\/30:hover{border-color:hsl(var(--foreground) / .3)}.hover\:border-foreground\/40:hover{border-color:hsl(var(--foreground) / .4)}.hover\:border-primary:hover{border-color:hsl(var(--primary))}.hover\:border-primary\/40:hover{border-color:hsl(var(--primary) / .4)}.hover\:border-primary\/70:hover{border-color:hsl(var(--primary) / .7)}.hover\:border-white\/20:hover{border-color:#fff3}.hover\:bg-amber-300\/15:hover{background-color:#fcd34d26}.hover\:bg-amber-600:hover{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-50\/40:hover{background-color:#eff6ff66}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.hover\:bg-card\/60:hover{background-color:hsl(var(--card) / .6)}.hover\:bg-cyan-200:hover{--tw-bg-opacity: 1;background-color:rgb(165 243 252 / var(--tw-bg-opacity, 1))}.hover\:bg-cyan-300\/10:hover{background-color:#67e8f91a}.hover\:bg-cyan-300\/15:hover{background-color:#67e8f926}.hover\:bg-cyan-300\/\[0\.04\]:hover{background-color:#67e8f90a}.hover\:bg-cyan-300\/\[0\.14\]:hover{background-color:#67e8f924}.hover\:bg-cyan-300\/\[0\.15\]:hover{background-color:#67e8f926}.hover\:bg-destructive\/10:hover{background-color:hsl(var(--destructive) / .1)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-emerald-50:hover{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.hover\:bg-emerald-600:hover{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity, 1))}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/15:hover{background-color:hsl(var(--muted) / .15)}.hover\:bg-muted\/20:hover{background-color:hsl(var(--muted) / .2)}.hover\:bg-muted\/25:hover{background-color:hsl(var(--muted) / .25)}.hover\:bg-muted\/30:hover{background-color:hsl(var(--muted) / .3)}.hover\:bg-muted\/40:hover{background-color:hsl(var(--muted) / .4)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-muted\/60:hover{background-color:hsl(var(--muted) / .6)}.hover\:bg-muted\/70:hover{background-color:hsl(var(--muted) / .7)}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/20:hover{background-color:hsl(var(--primary) / .2)}.hover\:bg-primary\/5:hover{background-color:hsl(var(--primary) / .05)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 202 202 / var(--tw-bg-opacity, 1))}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/\[0\.025\]:hover{background-color:#ffffff06}.hover\:bg-white\/\[0\.04\]:hover{background-color:#ffffff0a}.hover\:bg-white\/\[0\.06\]:hover{background-color:#ffffff0f}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-emerald-500:hover{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\:text-primary:hover{color:hsl(var(--primary))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\:text-red-600:hover{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:text-slate-200:hover{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:brightness-110:hover{--tw-brightness: brightness(1.1);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)}.focus\:border-foreground:focus{border-color:hsl(var(--foreground))}.focus\:border-foreground\/30:focus{border-color:hsl(var(--foreground) / .3)}.focus\:border-primary:focus{border-color:hsl(var(--primary))}.focus\:border-primary\/50:focus{border-color:hsl(var(--primary) / .5)}.focus\:bg-muted:focus{background-color:hsl(var(--muted))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-amber-400\/40:focus{--tw-ring-color: rgb(251 191 36 / .4)}.focus\:ring-primary:focus{--tw-ring-color: hsl(var(--primary))}.focus\:ring-primary\/15:focus{--tw-ring-color: hsl(var(--primary) / .15)}.focus\:ring-primary\/20:focus{--tw-ring-color: hsl(var(--primary) / .2)}.focus\:ring-primary\/30:focus{--tw-ring-color: hsl(var(--primary) / .3)}.focus\:ring-primary\/50:focus{--tw-ring-color: hsl(var(--primary) / .5)}.focus\:ring-offset-1:focus{--tw-ring-offset-width: 1px}.focus-visible\:border-primary:focus-visible{border-color:hsl(var(--primary))}.focus-visible\:border-primary\/40:focus-visible{border-color:hsl(var(--primary) / .4)}.focus-visible\:border-primary\/50:focus-visible{border-color:hsl(var(--primary) / .5)}.focus-visible\:border-primary\/60:focus-visible{border-color:hsl(var(--primary) / .6)}.focus-visible\:bg-muted:focus-visible{background-color:hsl(var(--muted))}.focus-visible\:bg-muted\/30:focus-visible{background-color:hsl(var(--muted) / .3)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset: inset}.focus-visible\:ring-cyan-300:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(103 232 249 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-fuchsia-300\/30:focus-visible{--tw-ring-color: rgb(240 171 252 / .3)}.focus-visible\:ring-primary\/20:focus-visible{--tw-ring-color: hsl(var(--primary) / .2)}.focus-visible\:ring-primary\/30:focus-visible{--tw-ring-color: hsl(var(--primary) / .3)}.focus-visible\:ring-primary\/40:focus-visible{--tw-ring-color: hsl(var(--primary) / .4)}.focus-visible\:ring-red-400\/50:focus-visible{--tw-ring-color: rgb(248 113 113 / .5)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width: 1px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:cursor-wait:disabled{cursor:wait}.disabled\:bg-muted\/40:disabled{background-color:hsl(var(--muted) / .4)}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-35:disabled{opacity:.35}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:hover\:bg-transparent:hover:disabled{background-color:transparent}.disabled\:hover\:text-muted-foreground:hover:disabled{color:hsl(var(--muted-foreground))}.group[open] .group-open\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[open] .group-open\:border-b{border-bottom-width:1px}.group[open] .group-open\:border-border\/70{border-color:hsl(var(--border) / .7)}.group\/thumbnail:focus-within .group-focus-within\/thumbnail\:opacity-100{opacity:1}.group:hover .group-hover\:block{display:block}.group:hover .group-hover\:bg-primary\/50{background-color:hsl(var(--primary) / .5)}.group:hover .group-hover\:text-foreground\/80{color:hsl(var(--foreground) / .8)}.group\/entity:hover .group-hover\/entity\:opacity-100,.group\/pname:hover .group-hover\/pname\:opacity-100,.group\/thumbnail:hover .group-hover\/thumbnail\:opacity-100,.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:opacity-60{opacity:.6}@media(prefers-reduced-motion:no-preference){.motion-safe\:origin-center{transform-origin:center}@keyframes spin{to{transform:rotate(360deg)}}.motion-safe\:animate-\[spin_7s_linear_infinite\]{animation:spin 7s linear infinite}@keyframes pulse{50%{opacity:.5}}.motion-safe\:animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}}@media(prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}}@media(min-width:640px){.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mt-2{margin-top:.5rem}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:size-\[10px\]{width:10px;height:10px}.sm\:max-h-none{max-height:none}.sm\:min-h-0{min-height:0px}.sm\:w-64{width:16rem}.sm\:w-72{width:18rem}.sm\:w-80{width:20rem}.sm\:w-\[160px\]{width:160px}.sm\:w-\[190px\]{width:190px}.sm\:w-\[200px\]{width:200px}.sm\:w-\[70px\]{width:70px}.sm\:w-auto{width:auto}.sm\:min-w-\[1040px\]{min-width:1040px}.sm\:max-w-none{max-width:none}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xs{max-width:20rem}.sm\:flex-none{flex:none}.sm\:basis-auto{flex-basis:auto}.sm\:-translate-y-0\.5{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[110px_150px_1fr_auto\]{grid-template-columns:110px 150px 1fr auto}.sm\:grid-cols-\[140px_1fr\]{grid-template-columns:140px 1fr}.sm\:grid-cols-\[190px_1fr\]{grid-template-columns:190px 1fr}.sm\:grid-cols-\[1fr_120px_auto\]{grid-template-columns:1fr 120px auto}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-1{gap:.25rem}.sm\:gap-1\.5{gap:.375rem}.sm\:divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.sm\:divide-y-0>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(0px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(0px * var(--tw-divide-y-reverse))}.sm\:divide-border\/40>:not([hidden])~:not([hidden]){border-color:hsl(var(--border) / .4)}.sm\:self-auto{align-self:auto}.sm\:p-0{padding:0}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-5{padding:1.25rem}.sm\:px-1\.5{padding-left:.375rem;padding-right:.375rem}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.sm\:pb-\[max\(1rem\,env\(safe-area-inset-bottom\)\)\]{padding-bottom:max(1rem,env(safe-area-inset-bottom))}.sm\:pl-\[193px\]{padding-left:193px}.sm\:pl-\[200px\]{padding-left:200px}.sm\:pr-\[72px\]{padding-right:72px}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-\[10px\]{font-size:10px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:focus\:w-\[300px\]:focus{width:300px}}@media(min-width:768px){.md\:left-\[220px\]{left:220px}.md\:-mt-7{margin-top:-1.75rem}.md\:block{display:block}.md\:flex{display:flex}.md\:inline-flex{display:inline-flex}.md\:hidden{display:none}.md\:h-auto{height:auto}.md\:h-full{height:100%}.md\:max-h-\[calc\(100dvh-360px\)\]{max-height:calc(100dvh - 360px)}.md\:min-h-0{min-height:0px}.md\:min-h-\[160px\]{min-height:160px}.md\:min-h-\[720px\]{min-height:720px}.md\:flex-1{flex:1 1 0%}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-\[132px_minmax\(0\,1fr\)\]{grid-template-columns:132px minmax(0,1fr)}.md\:grid-cols-\[200px_1fr\]{grid-template-columns:200px 1fr}.md\:grid-cols-\[220px_minmax\(0\,1fr\)\]{grid-template-columns:220px minmax(0,1fr)}.md\:grid-cols-\[2fr_1fr\]{grid-template-columns:2fr 1fr}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:gap-0{gap:0px}.md\:divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.md\:divide-border\/40>:not([hidden])~:not([hidden]){border-color:hsl(var(--border) / .4)}.md\:overflow-hidden{overflow:hidden}.md\:overflow-x-auto{overflow-x:auto}.md\:overflow-y-auto{overflow-y:auto}.md\:overscroll-contain{overscroll-behavior:contain}.md\:rounded{border-radius:.25rem}.md\:border-b-0{border-bottom-width:0px}.md\:border-r{border-right-width:1px}.md\:bg-muted\/50{background-color:hsl(var(--muted) / .5)}.md\:px-1\.5{padding-left:.375rem;padding-right:.375rem}.md\:py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.md\:py-3{padding-top:.75rem;padding-bottom:.75rem}.md\:pt-7{padding-top:1.75rem}.md\:text-\[10px\]{font-size:10px}.md\:text-\[20px\]{font-size:20px}.md\:first\:pt-0:first-child{padding-top:0}.md\:last\:pb-0:last-child{padding-bottom:0}}@media(min-width:1024px){.lg\:absolute{position:absolute}.lg\:right-3{right:.75rem}.lg\:top-12{top:3rem}.lg\:z-20{z-index:20}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:col-start-1{grid-column-start:1}.lg\:col-start-2{grid-column-start:2}.lg\:row-start-2{grid-row-start:2}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-\[300px\]{width:300px}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,0\.9fr\)_minmax\(440px\,1\.1fr\)\]{grid-template-columns:minmax(0,.9fr) minmax(440px,1.1fr)}.lg\:flex-row{flex-direction:row}.lg\:items-end{align-items:flex-end}.lg\:justify-between{justify-content:space-between}}@media(min-width:1280px){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media(min-width:1536px){.\32xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(prefers-color-scheme:dark){.dark\:border-amber-400{--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1))}.dark\:border-amber-500\/50{border-color:#f59e0b80}.dark\:border-amber-800{--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-amber-800\/40{border-color:#92400e66}.dark\:border-amber-900\/50{border-color:#78350f80}.dark\:border-amber-900\/60{border-color:#78350f99}.dark\:border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.dark\:border-blue-900\/60{border-color:#1e3a8a99}.dark\:border-emerald-400{--tw-border-opacity: 1;border-color:rgb(52 211 153 / var(--tw-border-opacity, 1))}.dark\:border-emerald-900{--tw-border-opacity: 1;border-color:rgb(6 78 59 / var(--tw-border-opacity, 1))}.dark\:border-emerald-900\/60{border-color:#064e3b99}.dark\:border-orange-800{--tw-border-opacity: 1;border-color:rgb(154 52 18 / var(--tw-border-opacity, 1))}.dark\:border-orange-900{--tw-border-opacity: 1;border-color:rgb(124 45 18 / var(--tw-border-opacity, 1))}.dark\:border-purple-800{--tw-border-opacity: 1;border-color:rgb(107 33 168 / var(--tw-border-opacity, 1))}.dark\:border-purple-900{--tw-border-opacity: 1;border-color:rgb(88 28 135 / var(--tw-border-opacity, 1))}.dark\:border-red-900{--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity, 1))}.dark\:border-red-900\/50{border-color:#7f1d1d80}.dark\:border-sky-800{--tw-border-opacity: 1;border-color:rgb(7 89 133 / var(--tw-border-opacity, 1))}.dark\:border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity, 1))}.dark\:border-violet-800{--tw-border-opacity: 1;border-color:rgb(91 33 182 / var(--tw-border-opacity, 1))}.dark\:border-white\/10{border-color:#ffffff1a}.dark\:bg-\[\#ff8cba\]{--tw-bg-opacity: 1;background-color:rgb(255 140 186 / var(--tw-bg-opacity, 1))}.dark\:bg-\[rgba\(230\,183\,141\,0\.78\)\]{background-color:#e6b78dc7}.dark\:bg-\[rgba\(232\,185\,144\,0\.9\)\]{background-color:#e8b990e6}.dark\:bg-amber-600{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity, 1))}.dark\:bg-amber-950\/10{background-color:#451a031a}.dark\:bg-amber-950\/20{background-color:#451a0333}.dark\:bg-amber-950\/30{background-color:#451a034d}.dark\:bg-amber-950\/40{background-color:#451a0366}.dark\:bg-amber-950\/50{background-color:#451a0380}.dark\:bg-amber-950\/60{background-color:#451a0399}.dark\:bg-background{background-color:hsl(var(--background))}.dark\:bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/20{background-color:#17255433}.dark\:bg-blue-950\/40{background-color:#17255466}.dark\:bg-blue-950\/50{background-color:#17255480}.dark\:bg-card{background-color:hsl(var(--card))}.dark\:bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity, 1))}.dark\:bg-emerald-950{--tw-bg-opacity: 1;background-color:rgb(2 44 34 / var(--tw-bg-opacity, 1))}.dark\:bg-emerald-950\/20{background-color:#022c2233}.dark\:bg-emerald-950\/30{background-color:#022c224d}.dark\:bg-emerald-950\/40{background-color:#022c2266}.dark\:bg-emerald-950\/50{background-color:#022c2280}.dark\:bg-indigo-950{--tw-bg-opacity: 1;background-color:rgb(30 27 75 / var(--tw-bg-opacity, 1))}.dark\:bg-muted\/10{background-color:hsl(var(--muted) / .1)}.dark\:bg-muted\/5{background-color:hsl(var(--muted) / .05)}.dark\:bg-orange-950\/20{background-color:#43140733}.dark\:bg-orange-950\/40{background-color:#43140766}.dark\:bg-purple-950\/10{background-color:#3b07641a}.dark\:bg-purple-950\/20{background-color:#3b076433}.dark\:bg-purple-950\/40{background-color:#3b076466}.dark\:bg-red-950\/20{background-color:#450a0a33}.dark\:bg-rose-950{--tw-bg-opacity: 1;background-color:rgb(76 5 25 / var(--tw-bg-opacity, 1))}.dark\:bg-rose-950\/40{background-color:#4c051966}.dark\:bg-sky-950\/40{background-color:#082f4966}.dark\:bg-sky-950\/60{background-color:#082f4999}.dark\:bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.dark\:bg-stone-800\/40{background-color:#29252466}.dark\:bg-stone-900{--tw-bg-opacity: 1;background-color:rgb(28 25 23 / var(--tw-bg-opacity, 1))}.dark\:bg-violet-950\/60{background-color:#2e106599}.dark\:text-amber-200{--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity, 1))}.dark\:text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-amber-300\/80{color:#fcd34dcc}.dark\:text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.dark\:text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.dark\:text-emerald-300{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.dark\:text-emerald-300\/80{color:#6ee7b7cc}.dark\:text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.dark\:text-indigo-300{--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.dark\:text-orange-200{--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-orange-300{--tw-text-opacity: 1;color:rgb(253 186 116 / var(--tw-text-opacity, 1))}.dark\:text-orange-400{--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.dark\:text-pink-300{--tw-text-opacity: 1;color:rgb(249 168 212 / var(--tw-text-opacity, 1))}.dark\:text-purple-200{--tw-text-opacity: 1;color:rgb(233 213 255 / var(--tw-text-opacity, 1))}.dark\:text-purple-300{--tw-text-opacity: 1;color:rgb(216 180 254 / var(--tw-text-opacity, 1))}.dark\:text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.dark\:text-purple-400\/80{color:#c084fccc}.dark\:text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-400\/50{color:#f8717180}.dark\:text-red-400\/70{color:#f87171b3}.dark\:text-rose-300{--tw-text-opacity: 1;color:rgb(253 164 175 / var(--tw-text-opacity, 1))}.dark\:text-sky-200{--tw-text-opacity: 1;color:rgb(186 230 253 / var(--tw-text-opacity, 1))}.dark\:text-sky-300{--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity, 1))}.dark\:text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.dark\:text-stone-300{--tw-text-opacity: 1;color:rgb(214 211 209 / var(--tw-text-opacity, 1))}.dark\:text-stone-400{--tw-text-opacity: 1;color:rgb(168 162 158 / var(--tw-text-opacity, 1))}.dark\:text-violet-200{--tw-text-opacity: 1;color:rgb(221 214 254 / var(--tw-text-opacity, 1))}.dark\:text-violet-300{--tw-text-opacity: 1;color:rgb(196 181 253 / var(--tw-text-opacity, 1))}.dark\:text-violet-400{--tw-text-opacity: 1;color:rgb(167 139 250 / var(--tw-text-opacity, 1))}.dark\:after\:from-white\/\[0\.06\]:after{content:var(--tw-content);--tw-gradient-from: rgb(255 255 255 / .06) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:hover\:bg-amber-500:hover{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-blue-500:hover{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-emerald-500:hover{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-muted\/20:hover{background-color:hsl(var(--muted) / .2)}}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&\>tr\:nth-child\(even\)\]\:bg-muted\/20>tr:nth-child(2n){background-color:hsl(var(--muted) / .2)}.\[\&_table\]\:table-fixed table{table-layout:fixed}
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>shopport</title>
7
- <script type="module" crossorigin src="/assets/index-CEBCsPnn.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index--f3qOCFU.css">
7
+ <script type="module" crossorigin src="/assets/index-DbEFJcBf.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-Dbcp2Eb1.css">
9
9
  </head>
10
10
  <body>
11
11
  <div id="root"></div>
@@ -1,128 +1,233 @@
1
1
  ---
2
2
  name: sppt-product-parse
3
3
  description: |
4
- 주문 상품명을 CatalogProduct/SourceOffering 기준으로 분류하고, 후보 검토 후 채널옵션 매핑까지 완료하는 워크플로우.
4
+ 주문의 SourceOffering을 안전하게 해석해 기존 ProductOption 매핑을 제안·적용하고,
5
+ product master와 product mapping 후속 작업까지 연결하는 워크플로우.
5
6
  Use when asked to "상품명 분석", "SKU별 정리", "미매핑 상품 확인", "매핑 설정".
6
7
  ---
7
8
 
8
9
  # product-parse
9
10
 
10
- 주문 데이터의 상품명 → SourceOffering → CatalogProduct 분류 미리보기 → 후보 검토·적용까지의
11
- 워크플로우. 클라우드 카탈로그의 권위는 현대 CatalogProduct API에 있으며, 레거시
12
- `ProductCatalogEntry` 파일 임포트나 `/api/sync/products` 쓰기는 사용하지 않습니다.
11
+ 상품 업무는 다음 세 영역으로 나눠 처리합니다.
13
12
 
14
- ## When to use
13
+ | 업무 | 책임 | 대표 명령 |
14
+ | --- | --- | --- |
15
+ | `product parse` | intake·후보·기존 옵션 매핑 | `sppt product parse` |
16
+ | `product master` | 마스터 상품·옵션·분류 관리 | `sppt product master ...` |
17
+ | `product mapping` | 미매핑·연결·이력·정책 관리 | `sppt product mapping ...` |
15
18
 
16
- - 주문 임포트 후 미매핑 SourceOffering을 확인하고 싶을 때
17
- - 상품명을 CatalogProduct 후보로 분류하고 싶을 때
18
- - 후보를 검토하고 승인된 분류를 적용하고 싶을 때
19
- - 채널 옵션의 현재 CatalogProduct 매핑을 확인하고 싶을 때
19
+ `parse`는 마스터 CRUD나 매핑 이력 관리 명령이 아닙니다. 새 마스터나 분류를 만들어야
20
+ 하거나 옵션 BOM을 보완해야 하는 경우에는 자동 확정하지 않고 검토 대기 상태로 남긴 뒤,
21
+ `product master`에서 확정하고 `product mapping`에서 연결합니다.
20
22
 
21
- ## Prerequisites
23
+ ## 시작 전 확인
22
24
 
23
- - 주문 데이터가 임포트되어 있어야 함 (`sppt import <file>` 또는 API 동기화)
24
- - 클라우드 인증이 되어 있어야 함 (`sppt auth login` 또는 agent token)
25
+ - 주문이 임포트되어 있거나 채널 API 동기화가 완료되어 있어야 합니다.
26
+ - 클라우드 인증을 확인합니다.
25
27
 
26
- ## Steps
28
+ ```bash
29
+ sppt auth whoami
30
+ ```
31
+
32
+ - 처리할 채널·계정·상태·cursor/watermark 범위를 분명히 합니다. 범위가 불명확하면 전체를
33
+ 재처리하지 말고 먼저 대상 건수와 scope를 확인합니다.
27
34
 
28
- ### 1. 미매핑 상태 확인
35
+ ## 1. product parse: 자동 intake
36
+
37
+ ### 명령
29
38
 
30
39
  ```bash
31
- sppt product unmapped
32
- ```
40
+ # 기본 동작은 preview run입니다. 마스터·판매채널 매핑은 변경하지 않지만
41
+ # 실행 기록·snapshot·후보·검토 상태는 저장합니다.
42
+ sppt product parse
43
+ sppt product parse --dry-run
44
+
45
+ # 권장 순서: preview 결과를 확인한 뒤 같은 run을 명시해 적용합니다.
46
+ sppt product parse status <runId>
47
+ sppt product parse --apply --confirm --run-id <runId>
33
48
 
34
- 미매핑 SourceOffering의 채널, 상품명, 옵션명, raw SKU를 확인합니다. 전부 매핑되어 있으면
35
- 분류 실행을 만들지 않고 종료합니다.
49
+ # 새 run 생성부터 적용까지 한 번에 수행하는 사전 승인된 자동 실행
50
+ sppt product parse --apply --confirm
36
51
 
37
- ### 2. 분류 기준 확인
52
+ # 실행 결과·pending 항목·적용/충돌 상태 확인
53
+ sppt product parse status <runId>
54
+ ```
38
55
 
39
- 로컬 규칙 파일이 있으면 먼저 읽습니다.
56
+ ### 처리 순서
57
+
58
+ 1. 지정한 source/channel account와 state 범위의 SourceOffering을 읽습니다. 기본 state는
59
+ `unprocessed`이며, 미매핑만 처리하려면 `--state unmapped`를 지정합니다.
60
+ 2. `product mapping rules publish`로 활성화된 compiled `product_rules` bundle을 source,
61
+ policy, master snapshot과 함께 고정합니다.
62
+ 3. 상품명·옵션명·raw SKU를 정규화해 기존 마스터 옵션 후보를 찾습니다.
63
+ 4. raw SKU 또는 명시 정책으로 하나의 active ProductOption이 확정되고 유효한 SKU/BOM,
64
+ revision 조건을 만족하는 경우에만 자동 적용 대상으로 삼습니다.
65
+ 5. 모호한 identity, SKU 부족, BOM 미완성, 분류 충돌은 `product mapping unmapped`의
66
+ durable review case로 남깁니다.
67
+ 6. 현재 매핑과 같은 대상이면 `unchanged`로 기록하고 매핑을 다시 쓰지 않습니다. 다른
68
+ 대상이 더 강하게 검출되면 `mapping_change` 후보로 만들지만 preview 단계에서는 변경하지
69
+ 않습니다.
70
+ 7. 최종 적용이 승인된 매핑 변경은 서버가 하나의 `changeSetId`로 묶어 이력에 기록합니다.
71
+
72
+ 기본 parse와 `--dry-run`은 마스터 상품·옵션·분류와 판매채널 매핑을 변경하지 않습니다. 대신
73
+ run, input manifest, 후보, action plan, review case와 SourceOffering의 parse 상태를 저장할 수
74
+ 있습니다. `--apply --confirm` 없이는 매핑을 적용하지 않습니다. 최종 매핑 전에 확인을 받으려면
75
+ 반드시 `parse → status → parse --apply --confirm --run-id` 순서를 사용합니다. `--run-id`를
76
+ 지정하면 해당 run의 input manifest hash, policy hash, source mapping revision을 다시 검증하고
77
+ snapshot이나 revision이 달라지면 중단합니다. `--run-id`를 생략한 `--apply --confirm`은 새 run을
78
+ 만들고 결과를 기다린 뒤 같은 명령 안에서 적용하므로, 별도 review가 끝난 뒤 적용해야 하는 경우에는
79
+ 사용하지 않습니다.
80
+
81
+ 신규 마스터 상품·ProductOption·classification node 생성, 마스터 field 수정, BOM 구성
82
+ 변경은 parse가 자동 적용하지 않습니다. 이 결과는 pending review로 남기고 다음 순서로
83
+ 처리합니다.
40
84
 
41
85
  ```bash
42
- sppt product rules --local
86
+ sppt product master create --name "알텐바흐 316Ti 멀티쿠커"
87
+ sppt product master option create <productId> \
88
+ --name "20cm" --option-type variant --sku-id <skuId>
89
+ sppt product master classification create --kind category --name "냄비"
90
+ sppt product mapping map <sourceOfferingId> --product-option-id <masterOptionId>
43
91
  ```
44
92
 
45
- 규칙 파일에 다음이 포함되면 후보 검토가 정확해집니다.
93
+ `status`는 run 상태와 pending 사유를 확인하는 읽기 전용 명령입니다. parse 결과를 임의의
94
+ 후보 선택으로 확정하지 말고, 신규 master·classification·BOM이 필요한지 먼저 판단합니다.
46
95
 
47
- 1. 카테고리·제품라인 분류 기준
48
- 2. 상품명 정규화·동의어 규칙
49
- 3. 세트 구성과 수량 옵션 패턴
50
- 4. raw SKU와 기존 CatalogProduct option의 대응 규칙
96
+ ### 이미 매핑된 항목의 처리
51
97
 
52
- 분류 실행 자체는 서버의 CatalogProduct/SourceOffering 규칙과 revision 검증을 따릅니다.
98
+ - 현재 매핑 대상과 parse 후보가 같으면 `unchanged`로 처리합니다. 기존 decision과 매핑을
99
+ 덮어쓰지 않습니다.
100
+ - 현재 매핑과 다른 대상이 더 강하게 검출되면 `mapping_change`로 표시합니다. preview에서는
101
+ 기존 매핑을 유지하며, `status`에서 대상과 근거를 확인한 뒤 `--apply --confirm --run-id`로
102
+ 명시적으로 승인해야 합니다.
103
+ - 적용 조건은 신규 매핑과 동일하게 canonical identity, 동일한 mapping revision, active
104
+ ProductOption, 실행 가능한 SKU/BOM입니다. 조건이 맞지 않거나 판단이 모호하면 기존 매핑을
105
+ 유지하고 conflict 또는 review case로 남깁니다.
106
+ - 재매핑이 적용되면 기존 decision을 삭제하지 않고 supersedes 관계의 새 decision과 새
107
+ `changeSetId`를 기록합니다. 잘못된 재매핑은 `product mapping rollback`으로 되돌립니다.
53
108
 
54
- ### 3. 분류 미리보기 생성
109
+ ## 2. product master: 확정 데이터 관리
110
+
111
+ 마스터 상품과 옵션은 이 영역에서 명시적으로 생성·수정합니다. 생성·수정에는 optimistic
112
+ revision과 idempotency를 사용합니다. 옵션 create/update CLI는 현재 product revision과 옵션
113
+ revision을 서버에서 읽어 내부적으로 configuration preview를 만든 뒤 즉시 적용합니다. 별도
114
+ review 후 confirm하는 최종 매핑 명령과는 다른 동작입니다.
55
115
 
56
116
  ```bash
57
- sppt product parse
117
+ sppt product master list --query "멀티쿠커"
118
+ sppt product master create --name "알텐바흐 316Ti 멀티쿠커" --category-id <categoryId>
119
+ sppt product master update <productId> --revision <n> --name "알텐바흐 316Ti 멀티쿠커 2.0"
120
+
121
+ sppt product master option list <productId>
122
+ sppt product master option create <productId> \
123
+ --name "20cm" --option-type variant --sku-id <skuId>
124
+ sppt product master option update <productId> <optionId> \
125
+ --name "20cm 본품"
58
126
  ```
59
127
 
60
- 출력된 실행 ID를 기록합니다. 이 명령은 CatalogProduct를 즉시 만들거나 기존 매핑을 바꾸지
61
- 않고, 미매핑 SourceOffering을 대상으로 `preview` classification run만 생성합니다.
128
+ ### 분류 관리
62
129
 
63
- ### 4. 후보 확인
130
+ 분류는 별도 최상위 업무가 아니라 `product master` 아래에서 관리합니다. 지원 kind는
131
+ `brand`, `category`, `productLine`입니다.
64
132
 
65
133
  ```bash
66
- sppt product parse status <runId> --json
134
+ sppt product master classification list --kind category
135
+ sppt product master classification create --kind category --name "냄비"
136
+ sppt product master classification update --kind category <id> --revision <n> \
137
+ --name "냄비·웍"
138
+ sppt product master classification archive --kind category <id> --revision <n>
139
+ sppt product master classification restore --kind category <id> --revision <n>
67
140
  ```
68
141
 
69
- 각 결과의 source 상품명·옵션·raw SKU와 후보의 `candidateKind`, 제안 상품명, 대상 option,
70
- 신뢰도를 확인합니다.
142
+ 상품 분류 연결이 빠져 있으면 매핑과 별개로 분류 연결 필요 review issue로 남깁니다. parse는
143
+ 분류 후보만 pending으로 제안하며, 분류 디렉터리와 상품 연결은 master에서 확정합니다.
71
144
 
72
- - `existing_option`: 기존 CatalogProduct option으로 연결할 후보
73
- - `new_catalog_product`: 새 CatalogProduct로 만들 후보
74
- - `pending` 후보만 검토 대상입니다.
75
- - 이름·SKU·옵션이 모호하면 자의적으로 승인하지 말고 사용자에게 질문합니다.
145
+ ### 옵션과 BOM
76
146
 
77
- ### 5. 후보 검토
147
+ 단품은 direct SKU를 사용하고, 세트·프로모션은 옵션의 BOM 구성으로 관리합니다. 구성 변경은
148
+ 현재 active 옵션을 보존한 전체 configuration preview를 확인한 뒤 적용합니다. parse가
149
+ BOM을 추측하거나 불완전한 BOM을 자동 확정하게 두지 않습니다.
78
150
 
79
- 확실한 후보만 승인하고, 잘못된 후보는 거절하거나 판단을 보류합니다.
151
+ ## 3. product mapping: 연결·이력·정책
80
152
 
81
- ```bash
82
- sppt product parse accept <runId> <candidateId>
83
- sppt product parse reject <runId> <candidateId> --reason "상품명이 다름"
84
- sppt product parse defer <runId> <candidateId> --reason "사용자 확인 필요"
85
- ```
153
+ ### 미매핑과 직접 연결
86
154
 
87
- 하나의 결과에서 후보를 승인하면 다른 후보는 서버가 자동으로 거절합니다.
155
+ ```bash
156
+ sppt product mapping unmapped
88
157
 
89
- ### 6. 승인 후보 적용
158
+ # 첫 호출은 preview만 반환하며 변경하지 않습니다.
159
+ sppt product mapping map <sourceOfferingId> --product-option-id <masterOptionId>
90
160
 
91
- 사용자에게 승인 대상과 결과를 보여주고 확인받은 뒤 실행합니다.
161
+ # preview 결과와 대상 revision을 확인한 뒤 같은 요청에 confirm을 붙입니다.
162
+ sppt product mapping map <sourceOfferingId> \
163
+ --product-option-id <masterOptionId> --confirm
92
164
 
93
- ```bash
94
- sppt product parse apply <runId>
165
+ # 해제도 동일하게 preview 후 confirm합니다.
166
+ sppt product mapping unmap <sourceOfferingId>
167
+ sppt product mapping unmap <sourceOfferingId> --confirm
95
168
  ```
96
169
 
97
- 적용은 CatalogProduct 생성·수정과 SourceOffering 매핑을 현대 API의 멱등성·mapping revision
98
- 검증 아래 처리합니다. 적용 후 다음으로 재확인합니다.
170
+ map/unmap은 단건이어도 preview token과 대상 mapping revision을 검증합니다. `--confirm` 없는
171
+ 호출은 preview만 반환하고 변경하지 않으며, 확인 시점에 source가 바뀌었거나 preview binding이
172
+ 없으면 다시 preview를 만들고 중단합니다. 대상 ProductOption이 없으면 먼저 `product master`에서
173
+ 생성·확정합니다.
174
+
175
+ ### history와 rollback
99
176
 
100
177
  ```bash
101
- sppt product unmapped
102
- sppt product catalog
103
- ```
178
+ sppt product mapping history --from "2026-09-02 10:00" --to "2026-09-02 10:10"
179
+
180
+ # changeSetId를 명시하는 경우에도 먼저 영향 범위를 확인합니다.
181
+ sppt product mapping rollback --changeset <changeSetId>
182
+ sppt product mapping rollback --changeset <changeSetId> --confirm
104
183
 
105
- ### 7. 채널옵션 매핑 확인
184
+ # timestamp는 history에서 대상을 고르는 편의 selector입니다.
185
+ sppt product mapping rollback --at "2026-09-02 10:05"
186
+ sppt product mapping rollback --at "2026-09-02 10:05" --confirm
187
+ ```
106
188
 
107
- 세트 구성, 수량, BOM, 매출 배분처럼 상품 option 구성이 필요한 경우에는 Product Catalog
108
- 대시보드의 계보·매핑 화면에서 확인·수정합니다. 레거시 `sppt product mapping --confirm`으로
109
- 현대 CatalogProduct 매핑을 확정하지 않습니다.
189
+ 사람이 새 `changeSetId`를 만들거나 배정하지 않습니다. rollback에서는 서버가 만든 기존 ID를
190
+ 선택할 수 있지만, map, unmap, parse 자동 적용, rollback 실행 자체의 `changeSetId`는 서버가
191
+ 자동 생성합니다. `--at`은 해당
192
+ 시점의 history를 찾는 selector일 뿐이며, 실제 rollback 단위는 서버가 선택한 구체적인
193
+ change set입니다. 시간만으로 대상이 모호하거나 현재 revision이 달라지면 자동 rollback하지
194
+ 않고 preview 또는 conflict를 반환합니다. rollback은 기존 이력을 삭제하지 않고 보정 decision과
195
+ 새 change set을 추가합니다.
110
196
 
111
- ## 로컬 호환 임포트
197
+ ### product_rules 정책 authoring
112
198
 
113
- 실험용 로컬 카탈로그 파일을 검증하는 경우에만 아래 명령을 사용할 수 있습니다.
199
+ `product_rules`는 사람이 작성·검토하는 Markdown authoring policy입니다. 아래 lifecycle로만
200
+ 관리하고, parse는 publish된 정책 bundle을 snapshot에 고정해 사용합니다.
114
201
 
115
202
  ```bash
116
- sppt product parse --local --file mapping.csv
203
+ sppt product mapping rules show
204
+ sppt product mapping rules set ./product-rules.md
205
+ sppt product mapping rules publish
117
206
  ```
118
207
 
119
- 이 경로는 `~/.shopport` 로컬 파일만 변경하며 클라우드 CatalogProduct를 변경하지 않습니다.
120
- 클라우드 상품 분류에는 사용하지 않습니다.
121
-
122
- ## 판단 원칙
123
-
124
- 1. raw SKU가 있으면 이름보다 SKU·option identity를 우선 확인합니다.
125
- 2. "2개", "2set", "2ea", "2개입"은 수량 후보로 해석하되 세트 구성은 규칙과 함께 확인합니다.
126
- 3. 기존 상품과 신규 상품을 구분할 근거가 없으면 승인하지 않습니다.
127
- 4. 후보 적용 전 반드시 사용자에게 승인 목록을 보여줍니다.
128
- 5. 적용 후 미매핑이 남으면 남은 SourceOffering만 대상으로 다시 실행합니다.
208
+ - `show`로 현재 draft와 active 정책을 확인합니다.
209
+ - `set`은 Markdown 원문을 draft로 저장합니다.
210
+ - `publish`는 compile·검증에 성공한 draft만 active 정책으로 교체합니다.
211
+ - 작성 가능한 규칙은 normalization/noise, alias, explicit SKU/source mapping, option·quantity
212
+ pattern, classification suggestion 중심으로 제한합니다.
213
+ - 자유로운 설명은 검토 참고용 context로 보존할 수 있지만 canonical mapping을 단독으로
214
+ 결정하지 않습니다.
215
+ - 정책을 publish해도 기존 매핑을 자동 재작성하지 않습니다. 새 parse 실행과 별도 적용이
216
+ 필요합니다.
217
+
218
+ `set`의 Markdown은 정책 원문을 제출하는 입력이며 상품 마스터나 매핑 데이터를 직접 가져오는
219
+ 임포트 경로가 아닙니다. 정책이 없거나 compile되지 않으면 이름 유사도만으로 확정하지 말고
220
+ `policy_not_applied` 또는 pending으로 남깁니다.
221
+
222
+ ## 안전 원칙
223
+
224
+ 1. parse는 항상 dry-run으로 시작하고, 실제 변경은 `--apply --confirm`을 함께 지정합니다.
225
+ 2. map/unmap은 preview 결과·대상·현재 revision을 확인한 뒤 `--confirm`합니다.
226
+ 3. raw SKU, canonical identity, 명시 정책으로 대상이 하나로 확정되지 않으면 선택하지 않습니다.
227
+ 4. 신규 master, classification, option, BOM 변경은 pending review로 남기고 master에서 먼저
228
+ 확정합니다.
229
+ 5. input manifest hash, policy hash, source mapping revision이 확인 시점과 다르면 재실행하거나
230
+ 충돌로 보고합니다.
231
+ 6. 자동화가 생성한 `changeSetId`와 history를 보존하고, 기존 decision을 덮어쓰지 않습니다.
232
+ 7. 적용 후 `sppt product parse status <runId>`와 `sppt product mapping unmapped`로 pending,
233
+ conflict, projection 상태를 다시 확인합니다.
@@ -64,7 +64,7 @@ sppt order excluded # 제외된 주문 목록
64
64
  sppt report --by category --explain # 수량 기여 분해
65
65
  sppt analytics cafe24 visitors --period 7d # 카페24 방문자수 조회
66
66
  sppt analytics cafe24 visitpaths --type domains --period 7d # 카페24 유입경로 조회
67
- sppt product mapping --confirmed # 확정 SKU 매핑 조회
67
+ sppt product mapping unmapped # durable 미매핑 검토 큐 조회
68
68
  sppt crm cafe24 groups # cafe24 회원등급 조회
69
69
  sppt crm cafe24 customers --limit 30 # cafe24 회원목록 조회
70
70
  sppt coupon list cafe24 --name "재구매" # 카페24 쿠폰 목록 + 다운로드 URL
@@ -88,13 +88,18 @@ sppt crm cafe24 customers # cafe24 회원목록 조회
88
88
  - `sppt product seo get|set|support` — SEO 메타데이터 관리
89
89
  - `sppt product fields get|set|apply cafe24` — Cafe24 SEO/discovery 필드 안전 조회·수정
90
90
  - `sppt product image get|set|add|delete|support` — 이미지 관리
91
- - `sppt product catalog [--local]` — 상품 카탈로그 브라우징
92
- - `sppt product unmapped [--local]` — 미매핑 상품 목록
93
- - `sppt product rules [set <file>] [--local]` — 분류 규칙 조회/설정
94
- - `sppt product parse` — CatalogProduct 분류 미리보기·후보 검토·적용
95
- - `sppt product parse --local --file <mapping.csv>` — 로컬 호환 카탈로그 임포트
96
- - `sppt product mapping [--edit N] [--confirm N|all] [--confirmed] [--json]` — SKU 매핑 관리
97
- - `sppt product candidates` — 매핑 후보 조회
91
+ - `sppt product parse` / `sppt product parse --dry-run` — 상품 intake 기본 미리보기
92
+ - `sppt product parse --apply --confirm [--run-id <runId>]` — 확실한 기존 옵션 매핑 적용
93
+ - `sppt product parse status <runId>` — 실행 결과·pending·충돌 상태 조회
94
+ - `sppt product master list|create|update` — 마스터 상품 관리
95
+ - `sppt product master option list|create|update` — 마스터 상품 옵션·BOM 관리
96
+ - `sppt product master classification list|create|update|archive|restore` — 분류 관리
97
+ - `sppt product mapping unmapped` — durable 미매핑 검토 큐 조회
98
+ - `sppt product mapping map|unmap <sourceOfferingId>` — preview 후 confirm하는 매핑 변경
99
+ - `sppt product mapping history` — 매핑 변경 이력 조회
100
+ - `sppt product mapping rollback` — `--changeset <changeSetId> --confirm` 또는
101
+ `--at <timestamp> --confirm`으로 이력 기반 rollback
102
+ - `sppt product mapping rules show|set|publish` — `product_rules` 정책 lifecycle
98
103
 
99
104
  ### 주문/송장
100
105
  - `sppt order list|get|confirm|cancel|return <channel>` — 주문 관리
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shopport",
3
- "version": "0.5.7",
3
+ "version": "0.5.8",
4
4
  "description": "커머스 운영 자동화 CLI — Cafe24, Coupang, SmartStore, Shopify 통합 관리",
5
5
  "type": "module",
6
6
  "bin": {