From 41fe7963a72773f04720f204da443ffea3f50162 Mon Sep 17 00:00:00 2001 From: Laxman Date: Tue, 26 May 2026 18:40:55 +0530 Subject: [PATCH] database script files cleaned migration table created planned for fresh setup --- build/assets/index-CDNp5hMY.css | 6 + .../{index-XdyJ-8da.js => index-CIW1_Mz_.js} | 2 +- build/assets/index-DqVo88us.css | 6 - build/index.html | 4 +- docs/sla/PENDING_WORK.md | 2 +- docs/sla/README.md | 15 +- package.json | 5 +- scripts/add-architecture-role.ts | 39 -- scripts/add-decision-column.ts | 26 -- scripts/add-level3-enum.ts | 28 -- scripts/add-recovery-enum.ts | 27 -- scripts/assign_south_delhi.ts | 74 ---- scripts/check-sla-dispatches.ts | 28 -- scripts/check-smtp-config.ts | 18 - scripts/check_app.ts | 26 -- scripts/check_column.ts | 18 - scripts/check_enum.ts | 19 - scripts/check_recent_app.ts | 48 --- scripts/cleanup-interview-orphans.ts | 26 -- scripts/create-migration.ts | 106 ++++++ scripts/create-system-audit-log-table.ts | 40 -- scripts/debug-area-manager.ts | 63 ---- scripts/debug-evaluations.ts | 34 -- scripts/debug_roles.ts | 20 - scripts/delete-test-relocation.ts | 53 --- scripts/diagnose_associations.ts | 76 ---- scripts/find_abhishek.ts | 24 -- scripts/fix-asm-column.ts | 26 -- scripts/fix-remarks-column.ts | 26 -- scripts/fix-stages-enum.ts | 47 --- scripts/fix_south_delhi.ts | 40 -- scripts/force-sync.ts | 21 -- scripts/migrate-evaluation-schema.ts | 29 -- .../migrate-onboarding-documents-cleanup.ts | 83 ----- scripts/migrate-relocation-schema.ts | 74 ---- .../migrate-sla-notification-dispatches.ts | 49 --- scripts/migrate-sla-tracking-schema.ts | 34 -- scripts/migrate.ts | 75 +++- scripts/migrate_user_columns.ts | 63 ---- ...0000_create_sla_notification_dispatches.ts | 52 +++ scripts/migrations/README.md | 58 +++ scripts/migrations/_template.ts | 42 +++ scripts/remove_abhishek_app.ts | 36 -- scripts/run-migrations.ts | 181 +++++++++ scripts/test-areas.ts | 21 -- scripts/test-regions.ts | 34 -- scripts/test_enum_cast.ts | 26 -- scripts/test_insert.ts | 22 -- scripts/update-enum.ts | 42 --- scripts/update_dealer_codes_table.ts | 46 --- scripts/update_enum.ts | 33 -- scripts/update_participant_enum.ts | 26 -- scripts/verify-offboarding-status.ts | 47 --- scripts/verify-standardized-offboarding.ts | 58 --- src/database/models/index.ts | 6 + src/database/models/system/Migration.ts | 73 ++++ .../self-service/relocation.controller.ts | 23 +- trigger-constitutional.js | 119 ++++-- trigger-resignation.js | 1 + trigger-termination.js | 29 +- trigger-workflow.js | 346 +++++++++--------- 61 files changed, 892 insertions(+), 1829 deletions(-) create mode 100644 build/assets/index-CDNp5hMY.css rename build/assets/{index-XdyJ-8da.js => index-CIW1_Mz_.js} (99%) delete mode 100644 build/assets/index-DqVo88us.css delete mode 100644 scripts/add-architecture-role.ts delete mode 100644 scripts/add-decision-column.ts delete mode 100644 scripts/add-level3-enum.ts delete mode 100644 scripts/add-recovery-enum.ts delete mode 100644 scripts/assign_south_delhi.ts delete mode 100644 scripts/check-sla-dispatches.ts delete mode 100644 scripts/check-smtp-config.ts delete mode 100644 scripts/check_app.ts delete mode 100644 scripts/check_column.ts delete mode 100644 scripts/check_enum.ts delete mode 100644 scripts/check_recent_app.ts delete mode 100644 scripts/cleanup-interview-orphans.ts create mode 100644 scripts/create-migration.ts delete mode 100644 scripts/create-system-audit-log-table.ts delete mode 100644 scripts/debug-area-manager.ts delete mode 100644 scripts/debug-evaluations.ts delete mode 100644 scripts/debug_roles.ts delete mode 100644 scripts/delete-test-relocation.ts delete mode 100644 scripts/diagnose_associations.ts delete mode 100644 scripts/find_abhishek.ts delete mode 100644 scripts/fix-asm-column.ts delete mode 100644 scripts/fix-remarks-column.ts delete mode 100644 scripts/fix-stages-enum.ts delete mode 100644 scripts/fix_south_delhi.ts delete mode 100644 scripts/force-sync.ts delete mode 100644 scripts/migrate-evaluation-schema.ts delete mode 100644 scripts/migrate-onboarding-documents-cleanup.ts delete mode 100644 scripts/migrate-relocation-schema.ts delete mode 100644 scripts/migrate-sla-notification-dispatches.ts delete mode 100644 scripts/migrate-sla-tracking-schema.ts delete mode 100644 scripts/migrate_user_columns.ts create mode 100644 scripts/migrations/20260526000000_create_sla_notification_dispatches.ts create mode 100644 scripts/migrations/README.md create mode 100644 scripts/migrations/_template.ts delete mode 100644 scripts/remove_abhishek_app.ts create mode 100644 scripts/run-migrations.ts delete mode 100644 scripts/test-areas.ts delete mode 100644 scripts/test-regions.ts delete mode 100644 scripts/test_enum_cast.ts delete mode 100644 scripts/test_insert.ts delete mode 100644 scripts/update-enum.ts delete mode 100644 scripts/update_dealer_codes_table.ts delete mode 100644 scripts/update_enum.ts delete mode 100644 scripts/update_participant_enum.ts delete mode 100644 scripts/verify-offboarding-status.ts delete mode 100644 scripts/verify-standardized-offboarding.ts create mode 100644 src/database/models/system/Migration.ts diff --git a/build/assets/index-CDNp5hMY.css b/build/assets/index-CDNp5hMY.css new file mode 100644 index 0000000..d82d13e --- /dev/null +++ b/build/assets/index-CDNp5hMY.css @@ -0,0 +1,6 @@ +@import"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Public+Sans:ital,wght@0,100..900;1,100..900&display=swap";/*! +* Quill Editor v1.3.7 +* https://quilljs.com/ +* Copyright (c) 2014, Jason Chen +* Copyright (c) 2013, salesforce.com +*/.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;-o-tab-size:4;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"•"}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li *{pointer-events:all}.ql-editor ul[data-checked=true]>li:before,.ql-editor ul[data-checked=false]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"☑"}.ql-editor ul[data-checked=false]>li:before{content:"☐"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:"";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media(pointer:coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0px}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0px;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-content:""}}}@layer theme{:root,:host{--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-50:oklch(98% .016 73.684);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-200:oklch(90.1% .076 70.697);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-orange-700:oklch(55.3% .195 38.402);--color-orange-800:oklch(47% .157 37.304);--color-orange-900:oklch(40.8% .123 38.172);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-teal-100:oklch(95.3% .051 180.801);--color-teal-500:oklch(70.4% .14 182.503);--color-teal-600:oklch(60% .118 184.704);--color-teal-700:oklch(51.1% .096 186.391);--color-teal-800:oklch(43.7% .078 188.216);--color-cyan-50:oklch(98.4% .019 200.873);--color-cyan-100:oklch(95.6% .045 203.388);--color-cyan-300:oklch(86.5% .127 207.078);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-700:oklch(52% .105 223.128);--color-cyan-800:oklch(45% .085 224.283);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-100:oklch(95.1% .026 236.824);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-700:oklch(50% .134 242.749);--color-sky-800:oklch(44.3% .11 240.79);--color-sky-900:oklch(39.1% .09 240.876);--color-sky-950:oklch(29.3% .066 243.157);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-indigo-800:oklch(39.8% .195 277.366);--color-violet-50:oklch(96.9% .016 293.756);--color-violet-100:oklch(94.3% .029 294.588);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-700:oklch(49.1% .27 292.581);--color-violet-800:oklch(43.2% .232 292.759);--color-violet-900:oklch(38% .189 293.745);--color-violet-950:oklch(28.3% .141 291.089);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-800:oklch(43.8% .218 303.724);--color-pink-100:oklch(94.8% .028 342.258);--color-pink-600:oklch(59.2% .249 .584);--color-pink-800:oklch(45.9% .187 3.815);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-700:oklch(51.4% .222 16.935);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-zinc-800:oklch(27.4% .006 286.033);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--blur-md:12px;--blur-3xl:64px;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-montserrat);--default-mono-font-family:var(--font-montserrat);--font-montserrat:"Montserrat", sans-serif;--color-border:var(--border);--color-re-red:var(--re-red);--color-re-red-hover:var(--re-red-hover)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:currentColor}::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);font-family:var(--font-montserrat);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);font-family:var(--font-montserrat);color:var(--foreground)}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h1{font-size:var(--text-2xl);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h2{font-size:var(--text-xl);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h3{font-size:var(--text-lg);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h4{font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) p{font-size:var(--text-base);font-weight:var(--font-weight-normal);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) label,:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) button{font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) input{font-size:var(--text-base);font-weight:var(--font-weight-normal);line-height:1.5}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.-top-1{top:calc(var(--spacing) * -1)}.-top-3{top:calc(var(--spacing) * -3)}.-top-12{top:calc(var(--spacing) * -12)}.-top-40{top:calc(var(--spacing) * -40)}.top-0{top:calc(var(--spacing) * 0)}.top-0\.5{top:calc(var(--spacing) * .5)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2\.5{top:calc(var(--spacing) * 2.5)}.top-3\.5{top:calc(var(--spacing) * 3.5)}.top-4{top:calc(var(--spacing) * 4)}.top-6{top:calc(var(--spacing) * 6)}.top-10{top:calc(var(--spacing) * 10)}.top-\[1px\]{top:1px}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.-right-1{right:calc(var(--spacing) * -1)}.-right-3{right:calc(var(--spacing) * -3)}.-right-12{right:calc(var(--spacing) * -12)}.-right-40{right:calc(var(--spacing) * -40)}.right-0{right:calc(var(--spacing) * 0)}.right-0\.5{right:calc(var(--spacing) * .5)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.-bottom-12{bottom:calc(var(--spacing) * -12)}.-bottom-40{bottom:calc(var(--spacing) * -40)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-0\.5{bottom:calc(var(--spacing) * .5)}.bottom-12{bottom:calc(var(--spacing) * 12)}.bottom-\[-1px\]{bottom:-1px}.bottom-\[-24px\]{bottom:-24px}.bottom-full{bottom:100%}.-left-12{left:calc(var(--spacing) * -12)}.-left-40{left:calc(var(--spacing) * -40)}.left-0{left:calc(var(--spacing) * 0)}.left-1{left:calc(var(--spacing) * 1)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[100\]{z-index:100}.z-\[9999\]{z-index:9999}.order-1{order:1}.order-2{order:2}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}.col-span-6{grid-column:span 6/span 6}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.-mx-6{margin-inline:calc(var(--spacing) * -6)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-auto{margin-inline:auto}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-8{margin-block:calc(var(--spacing) * 8)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.-mb-6{margin-bottom:calc(var(--spacing) * -6)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-7{margin-bottom:calc(var(--spacing) * 7)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-5{margin-left:calc(var(--spacing) * 5)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-8{margin-left:calc(var(--spacing) * 8)}.ml-9{margin-left:calc(var(--spacing) * 9)}.ml-11{margin-left:calc(var(--spacing) * 11)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-full{width:100%;height:100%}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-4\.5{height:calc(var(--spacing) * 4.5)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-32{height:calc(var(--spacing) * 32)}.h-40{height:calc(var(--spacing) * 40)}.h-48{height:calc(var(--spacing) * 48)}.h-64{height:calc(var(--spacing) * 64)}.h-80{height:calc(var(--spacing) * 80)}.h-96{height:calc(var(--spacing) * 96)}.h-\[1\.15rem\]{height:1.15rem}.h-\[30rem\]{height:30rem}.h-\[44px\]{height:44px}.h-\[70vh\]{height:70vh}.h-\[85vh\]{height:85vh}.h-\[90vh\]{height:90vh}.h-\[400px\]{height:400px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-\(--radix-context-menu-content-available-height\){max-height:var(--radix-context-menu-content-available-height)}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-10{max-height:calc(var(--spacing) * 10)}.max-h-14{max-height:calc(var(--spacing) * 14)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[55vh\]{max-height:55vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[95vh\]{max-height:95vh}.max-h-\[250px\]{max-height:250px}.max-h-\[300px\]{max-height:300px}.max-h-\[600px\]{max-height:600px}.max-h-\[800px\]{max-height:800px}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-\[32px\]{min-height:32px}.min-h-\[44px\]{min-height:44px}.min-h-\[60px\]{min-height:60px}.min-h-\[60vh\]{min-height:60vh}.min-h-\[80px\]{min-height:80px}.min-h-\[96px\]{min-height:96px}.min-h-\[100px\]{min-height:100px}.min-h-\[120px\]{min-height:120px}.min-h-\[150px\]{min-height:150px}.min-h-\[320px\]{min-height:320px}.min-h-\[400px\]{min-height:400px}.min-h-\[420px\]{min-height:420px}.min-h-\[480px\]{min-height:480px}.min-h-\[600px\]{min-height:600px}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.\!w-\[80vw\]{width:80vw!important}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-0{width:calc(var(--spacing) * 0)}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:calc(var(--spacing) * 1)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-\[10\%\]{width:10%}.w-\[15\%\]{width:15%}.w-\[20\%\]{width:20%}.w-\[35\%\]{width:35%}.w-\[45\%\]{width:45%}.w-\[50px\]{width:50px}.w-\[100px\]{width:100px}.w-\[180px\]{width:180px}.w-\[200px\]{width:200px}.w-\[280px\]{width:280px}.w-\[360px\]{width:360px}.w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.w-\[var\(--radix-select-trigger-width\)\]{width:var(--radix-select-trigger-width)}.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}.\!max-w-\[80vw\]{max-width:80vw!important}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[8rem\]{max-width:8rem}.max-w-\[90vw\]{max-width:90vw}.max-w-\[95vw\]{max-width:95vw}.max-w-\[140px\]{max-width:140px}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[220px\]{max-width:220px}.max-w-\[250px\]{max-width:250px}.max-w-\[260px\]{max-width:260px}.max-w-\[360px\]{max-width:360px}.max-w-\[1240px\]{max-width:1240px}.max-w-\[1600px\]{max-width:1600px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-\[min\(85\%\,36rem\)\]{max-width:min(85%,36rem)}.max-w-\[min\(100\%\,42rem\)\]{max-width:min(100%,42rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-8{min-width:calc(var(--spacing) * 8)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-10{min-width:calc(var(--spacing) * 10)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[12rem\]{min-width:12rem}.min-w-\[60px\]{min-width:60px}.min-w-\[80px\]{min-width:80px}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[140px\]{min-width:140px}.min-w-\[150px\]{min-width:150px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-\[300px\]{min-width:300px}.min-w-\[900px\]{min-width:900px}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.table-auto{table-layout:auto}.table-fixed{table-layout:fixed}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\(--radix-context-menu-content-transform-origin\){transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-hover-card-content-transform-origin\){transform-origin:var(--radix-hover-card-content-transform-origin)}.origin-\(--radix-menubar-content-transform-origin\){transform-origin:var(--radix-menubar-content-transform-origin)}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0\.5{--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[loading_1\.5s_infinite_linear\]{animation:1.5s linear infinite loading}.animate-bounce{animation:var(--animate-bounce)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.resize-y{resize:vertical}.scroll-my-1{scroll-margin-block:calc(var(--spacing) * 1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing) * 1)}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.\[appearance\:textfield\]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-start{justify-items:start}.gap-0{gap:calc(var(--spacing) * 0)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-12{gap:calc(var(--spacing) * 12)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{-moz-column-gap:calc(var(--spacing) * 2);column-gap:calc(var(--spacing) * 2)}.gap-x-3{-moz-column-gap:calc(var(--spacing) * 3);column-gap:calc(var(--spacing) * 3)}.gap-x-6{-moz-column-gap:calc(var(--spacing) * 6);column-gap:calc(var(--spacing) * 6)}.gap-x-8{-moz-column-gap:calc(var(--spacing) * 8);column-gap:calc(var(--spacing) * 8)}.gap-x-10{-moz-column-gap:calc(var(--spacing) * 10);column-gap:calc(var(--spacing) * 10)}:where(.-space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-100>:not(:last-child)){border-color:var(--color-gray-100)}:where(.divide-slate-50>:not(:last-child)){border-color:var(--color-slate-50)}:where(.divide-slate-100>:not(:last-child)){border-color:var(--color-slate-100)}.self-center{align-self:center}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.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:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-lg{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.rounded-tl-none{border-top-left-radius:0}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tr-none{border-top-right-radius:0}.rounded-b-lg{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-8{border-style:var(--tw-border-style);border-width:8px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-t-4{border-top-style:var(--tw-border-style);border-top-width:4px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-b-4{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-\(--color-border\){border-color:var(--color-border)}.border-\[\#cccccc\]{border-color:#ccc}.border-amber-300{border-color:var(--color-amber-300)}.border-blue-100{border-color:var(--color-blue-100)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-300{border-color:var(--color-blue-300)}.border-blue-400{border-color:var(--color-blue-400)}.border-blue-500{border-color:var(--color-blue-500)}.border-blue-600{border-color:var(--color-blue-600)}.border-border,.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,var(--border) 50%,transparent)}}.border-cyan-300{border-color:var(--color-cyan-300)}.border-emerald-100{border-color:var(--color-emerald-100)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-emerald-400{border-color:var(--color-emerald-400)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-green-100{border-color:var(--color-green-100)}.border-green-200{border-color:var(--color-green-200)}.border-green-300{border-color:var(--color-green-300)}.border-green-400{border-color:var(--color-green-400)}.border-green-500{border-color:var(--color-green-500)}.border-green-600{border-color:var(--color-green-600)}.border-indigo-200{border-color:var(--color-indigo-200)}.border-indigo-300{border-color:var(--color-indigo-300)}.border-input{border-color:var(--input)}.border-orange-200{border-color:var(--color-orange-200)}.border-orange-300{border-color:var(--color-orange-300)}.border-primary{border-color:var(--primary)}.border-purple-100{border-color:var(--color-purple-100)}.border-purple-200{border-color:var(--color-purple-200)}.border-purple-300{border-color:var(--color-purple-300)}.border-re-red{border-color:var(--re-red)}.border-red-50{border-color:var(--color-red-50)}.border-red-100{border-color:var(--color-red-100)}.border-red-100\/50{border-color:#ffe2e280}@supports (color:color-mix(in lab,red,red)){.border-red-100\/50{border-color:color-mix(in oklab,var(--color-red-100) 50%,transparent)}}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-red-400{border-color:var(--color-red-400)}.border-red-500{border-color:var(--color-red-500)}.border-red-600{border-color:var(--color-red-600)}.border-rose-100{border-color:var(--color-rose-100)}.border-rose-200{border-color:var(--color-rose-200)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-sky-200{border-color:var(--color-sky-200)}.border-slate-50{border-color:var(--color-slate-50)}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-200\/50{border-color:#e2e8f080}@supports (color:color-mix(in lab,red,red)){.border-slate-200\/50{border-color:color-mix(in oklab,var(--color-slate-200) 50%,transparent)}}.border-slate-200\/90{border-color:#e2e8f0e6}@supports (color:color-mix(in lab,red,red)){.border-slate-200\/90{border-color:color-mix(in oklab,var(--color-slate-200) 90%,transparent)}}.border-slate-300{border-color:var(--color-slate-300)}.border-slate-400{border-color:var(--color-slate-400)}.border-slate-700{border-color:var(--color-slate-700)}.border-slate-700\/50{border-color:#31415880}@supports (color:color-mix(in lab,red,red)){.border-slate-700\/50{border-color:color-mix(in oklab,var(--color-slate-700) 50%,transparent)}}.border-slate-800{border-color:var(--color-slate-800)}.border-teal-500{border-color:var(--color-teal-500)}.border-transparent{border-color:#0000}.border-violet-200{border-color:var(--color-violet-200)}.border-white{border-color:var(--color-white)}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.border-white\/30{border-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.border-white\/30{border-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.border-yellow-200{border-color:var(--color-yellow-200)}.border-yellow-300{border-color:var(--color-yellow-300)}.border-t-slate-900{border-top-color:var(--color-slate-900)}.border-t-transparent{border-top-color:#0000}.border-t-white{border-top-color:var(--color-white)}.border-l-green-500{border-left-color:var(--color-green-500)}.border-l-re-red{border-left-color:var(--re-red)}.border-l-red-500{border-left-color:var(--color-red-500)}.border-l-transparent{border-left-color:#0000}.bg-\(--color-bg\){background-color:var(--color-bg)}.bg-accent{background-color:var(--accent)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-600{background-color:var(--color-amber-600)}.bg-background{background-color:var(--background)}.bg-black{background-color:var(--color-black)}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.bg-black\/20{background-color:color-mix(in oklab,var(--color-black) 20%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-50\/50{background-color:#eff6ff80}@supports (color:color-mix(in lab,red,red)){.bg-blue-50\/50{background-color:color-mix(in oklab,var(--color-blue-50) 50%,transparent)}}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-200{background-color:var(--color-blue-200)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-current{background-color:currentColor}.bg-cyan-100{background-color:var(--color-cyan-100)}.bg-cyan-500{background-color:var(--color-cyan-500)}.bg-destructive{background-color:var(--destructive)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-50\/40{background-color:#ecfdf566}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/40{background-color:color-mix(in oklab,var(--color-emerald-50) 40%,transparent)}}.bg-emerald-50\/90{background-color:#ecfdf5e6}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/90{background-color:color-mix(in oklab,var(--color-emerald-50) 90%,transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/20{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/20{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.bg-emerald-600{background-color:var(--color-emerald-600)}.bg-foreground{background-color:var(--foreground)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-50\/30{background-color:#f0fdf44d}@supports (color:color-mix(in lab,red,red)){.bg-green-50\/30{background-color:color-mix(in oklab,var(--color-green-50) 30%,transparent)}}.bg-green-50\/50{background-color:#f0fdf480}@supports (color:color-mix(in lab,red,red)){.bg-green-50\/50{background-color:color-mix(in oklab,var(--color-green-50) 50%,transparent)}}.bg-green-100{background-color:var(--color-green-100)}.bg-green-200{background-color:var(--color-green-200)}.bg-green-300{background-color:var(--color-green-300)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/30{background-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/30{background-color:color-mix(in oklab,var(--color-green-500) 30%,transparent)}}.bg-green-600{background-color:var(--color-green-600)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-input-background{background-color:var(--input-background)}.bg-muted,.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-orange-50{background-color:var(--color-orange-50)}.bg-orange-50\/30{background-color:#fff7ed4d}@supports (color:color-mix(in lab,red,red)){.bg-orange-50\/30{background-color:color-mix(in oklab,var(--color-orange-50) 30%,transparent)}}.bg-orange-100{background-color:var(--color-orange-100)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-orange-600{background-color:var(--color-orange-600)}.bg-pink-100{background-color:var(--color-pink-100)}.bg-pink-600{background-color:var(--color-pink-600)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-primary-600{background-color:var(--primary-600)}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-purple-600{background-color:var(--color-purple-600)}.bg-re-black{background-color:var(--re-black)}.bg-re-red,.bg-re-red\/10{background-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.bg-re-red\/10{background-color:color-mix(in oklab,var(--re-red) 10%,transparent)}}.bg-re-red\/20{background-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.bg-re-red\/20{background-color:color-mix(in oklab,var(--re-red) 20%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-50\/20{background-color:#fef2f233}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/20{background-color:color-mix(in oklab,var(--color-red-50) 20%,transparent)}}.bg-red-50\/30{background-color:#fef2f24d}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/30{background-color:color-mix(in oklab,var(--color-red-50) 30%,transparent)}}.bg-red-50\/40{background-color:#fef2f266}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/40{background-color:color-mix(in oklab,var(--color-red-50) 40%,transparent)}}.bg-red-50\/50{background-color:#fef2f280}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/50{background-color:color-mix(in oklab,var(--color-red-50) 50%,transparent)}}.bg-red-50\/80{background-color:#fef2f2cc}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/80{background-color:color-mix(in oklab,var(--color-red-50) 80%,transparent)}}.bg-red-50\/90{background-color:#fef2f2e6}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/90{background-color:color-mix(in oklab,var(--color-red-50) 90%,transparent)}}.bg-red-100{background-color:var(--color-red-100)}.bg-red-300{background-color:var(--color-red-300)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.bg-red-600{background-color:var(--color-red-600)}.bg-red-600\/20{background-color:#e4001433}@supports (color:color-mix(in lab,red,red)){.bg-red-600\/20{background-color:color-mix(in oklab,var(--color-red-600) 20%,transparent)}}.bg-red-700\/15{background-color:#bf000f26}@supports (color:color-mix(in lab,red,red)){.bg-red-700\/15{background-color:color-mix(in oklab,var(--color-red-700) 15%,transparent)}}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-100{background-color:var(--color-rose-100)}.bg-rose-500\/20{background-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/20{background-color:color-mix(in oklab,var(--color-rose-500) 20%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-sky-50\/80{background-color:#f0f9ffcc}@supports (color:color-mix(in lab,red,red)){.bg-sky-50\/80{background-color:color-mix(in oklab,var(--color-sky-50) 80%,transparent)}}.bg-sky-50\/90{background-color:#f0f9ffe6}@supports (color:color-mix(in lab,red,red)){.bg-sky-50\/90{background-color:color-mix(in oklab,var(--color-sky-50) 90%,transparent)}}.bg-sky-100{background-color:var(--color-sky-100)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-50\/30{background-color:#f8fafc4d}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/30{background-color:color-mix(in oklab,var(--color-slate-50) 30%,transparent)}}.bg-slate-50\/40{background-color:#f8fafc66}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/40{background-color:color-mix(in oklab,var(--color-slate-50) 40%,transparent)}}.bg-slate-50\/50{background-color:#f8fafc80}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/50{background-color:color-mix(in oklab,var(--color-slate-50) 50%,transparent)}}.bg-slate-50\/80{background-color:#f8fafccc}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/80{background-color:color-mix(in oklab,var(--color-slate-50) 80%,transparent)}}.bg-slate-50\/95{background-color:#f8fafcf2}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/95{background-color:color-mix(in oklab,var(--color-slate-50) 95%,transparent)}}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-100\/80{background-color:#f1f5f9cc}@supports (color:color-mix(in lab,red,red)){.bg-slate-100\/80{background-color:color-mix(in oklab,var(--color-slate-100) 80%,transparent)}}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-200\/70{background-color:#e2e8f0b3}@supports (color:color-mix(in lab,red,red)){.bg-slate-200\/70{background-color:color-mix(in oklab,var(--color-slate-200) 70%,transparent)}}.bg-slate-300{background-color:var(--color-slate-300)}.bg-slate-400{background-color:var(--color-slate-400)}.bg-slate-500{background-color:var(--color-slate-500)}.bg-slate-600{background-color:var(--color-slate-600)}.bg-slate-700{background-color:var(--color-slate-700)}.bg-slate-700\/50{background-color:#31415880}@supports (color:color-mix(in lab,red,red)){.bg-slate-700\/50{background-color:color-mix(in oklab,var(--color-slate-700) 50%,transparent)}}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-800\/50{background-color:#1d293d80}@supports (color:color-mix(in lab,red,red)){.bg-slate-800\/50{background-color:color-mix(in oklab,var(--color-slate-800) 50%,transparent)}}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-900\/5{background-color:#0f172b0d}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/5{background-color:color-mix(in oklab,var(--color-slate-900) 5%,transparent)}}.bg-slate-900\/20{background-color:#0f172b33}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/20{background-color:color-mix(in oklab,var(--color-slate-900) 20%,transparent)}}.bg-slate-950{background-color:var(--color-slate-950)}.bg-teal-100{background-color:var(--color-teal-100)}.bg-teal-500{background-color:var(--color-teal-500)}.bg-teal-600{background-color:var(--color-teal-600)}.bg-transparent{background-color:#0000}.bg-violet-50\/80{background-color:#f5f3ffcc}@supports (color:color-mix(in lab,red,red)){.bg-violet-50\/80{background-color:color-mix(in oklab,var(--color-violet-50) 80%,transparent)}}.bg-violet-50\/90{background-color:#f5f3ffe6}@supports (color:color-mix(in lab,red,red)){.bg-violet-50\/90{background-color:color-mix(in oklab,var(--color-violet-50) 90%,transparent)}}.bg-violet-100{background-color:var(--color-violet-100)}.bg-white{background-color:var(--color-white)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.bg-white\/20{background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.bg-white\/40{background-color:#fff6}@supports (color:color-mix(in lab,red,red)){.bg-white\/40{background-color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.bg-white\/50{background-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.bg-white\/50{background-color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.bg-white\/60{background-color:#fff9}@supports (color:color-mix(in lab,red,red)){.bg-white\/60{background-color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.bg-yellow-50\/30{background-color:#fefce84d}@supports (color:color-mix(in lab,red,red)){.bg-yellow-50\/30{background-color:color-mix(in oklab,var(--color-yellow-50) 30%,transparent)}}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-50{--tw-gradient-from:var(--color-blue-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-green-50{--tw-gradient-from:var(--color-green-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-green-600{--tw-gradient-from:var(--color-green-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-50{--tw-gradient-from:var(--color-purple-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-re-red{--tw-gradient-from:var(--re-red);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-re-red\/20{--tw-gradient-from:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.from-re-red\/20{--tw-gradient-from:color-mix(in oklab, var(--re-red) 20%, transparent)}}.from-re-red\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-red-50{--tw-gradient-from:var(--color-red-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-red-500{--tw-gradient-from:var(--color-red-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-red-600{--tw-gradient-from:var(--color-red-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-red-600\/20{--tw-gradient-from:#e4001433}@supports (color:color-mix(in lab,red,red)){.from-red-600\/20{--tw-gradient-from:color-mix(in oklab, var(--color-red-600) 20%, transparent)}}.from-red-600\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-slate-900{--tw-gradient-from:var(--color-slate-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white{--tw-gradient-from:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-slate-800{--tw-gradient-via:var(--color-slate-800);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-cyan-50{--tw-gradient-to:var(--color-cyan-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-emerald-50{--tw-gradient-to:var(--color-emerald-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-green-500{--tw-gradient-to:var(--color-green-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-50{--tw-gradient-to:var(--color-indigo-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-50{--tw-gradient-to:var(--color-orange-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-re-red{--tw-gradient-to:var(--re-red);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-re-red-hover{--tw-gradient-to:var(--re-red-hover);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-red-50{--tw-gradient-to:var(--color-red-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-red-500{--tw-gradient-to:var(--color-red-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-red-700{--tw-gradient-to:var(--color-red-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-50{--tw-gradient-to:var(--color-slate-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-50\/50{--tw-gradient-to:#f8fafc80}@supports (color:color-mix(in lab,red,red)){.to-slate-50\/50{--tw-gradient-to:color-mix(in oklab, var(--color-slate-50) 50%, transparent)}}.to-slate-50\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-800{--tw-gradient-to:var(--color-slate-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-900{--tw-gradient-to:var(--color-slate-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-current{fill:currentColor}.fill-primary{fill:var(--primary)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-7{padding:calc(var(--spacing) * 7)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.p-12{padding:calc(var(--spacing) * 12)}.p-20{padding:calc(var(--spacing) * 20)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-10{padding-inline:calc(var(--spacing) * 10)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pt-24{padding-top:calc(var(--spacing) * 24)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-mono{font-family:var(--font-montserrat)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[28px\]{font-size:28px}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#333333\]{color:#333}.text-\[\#666666\]{color:#666}.text-accent-foreground{color:var(--accent-foreground)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-black{color:var(--color-black)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-blue-900{color:var(--color-blue-900)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-cyan-700{color:var(--color-cyan-700)}.text-cyan-800{color:var(--color-cyan-800)}.text-destructive{color:var(--destructive)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-emerald-900{color:var(--color-emerald-900)}.text-foreground{color:var(--foreground)}.text-gray-300{color:var(--color-gray-300)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-green-900{color:var(--color-green-900)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-indigo-800{color:var(--color-indigo-800)}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-600{color:var(--color-orange-600)}.text-orange-700{color:var(--color-orange-700)}.text-orange-800{color:var(--color-orange-800)}.text-orange-900{color:var(--color-orange-900)}.text-pink-800{color:var(--color-pink-800)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-600{color:var(--primary-600)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-600{color:var(--color-purple-600)}.text-purple-700{color:var(--color-purple-700)}.text-purple-800{color:var(--color-purple-800)}.text-re-red{color:var(--re-red)}.text-re-red-hover{color:var(--re-red-hover)}.text-red-100{color:var(--color-red-100)}.text-red-100\/80{color:#ffe2e2cc}@supports (color:color-mix(in lab,red,red)){.text-red-100\/80{color:color-mix(in oklab,var(--color-red-100) 80%,transparent)}}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-red-800\/80{color:#9f0712cc}@supports (color:color-mix(in lab,red,red)){.text-red-800\/80{color:color-mix(in oklab,var(--color-red-800) 80%,transparent)}}.text-red-900{color:var(--color-red-900)}.text-rose-400{color:var(--color-rose-400)}.text-rose-700{color:var(--color-rose-700)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground) 70%,transparent)}}.text-sky-700{color:var(--color-sky-700)}.text-sky-800{color:var(--color-sky-800)}.text-sky-900{color:var(--color-sky-900)}.text-sky-900\/90{color:#024a70e6}@supports (color:color-mix(in lab,red,red)){.text-sky-900\/90{color:color-mix(in oklab,var(--color-sky-900) 90%,transparent)}}.text-sky-950{color:var(--color-sky-950)}.text-slate-100{color:var(--color-slate-100)}.text-slate-200{color:var(--color-slate-200)}.text-slate-300{color:var(--color-slate-300)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-teal-700{color:var(--color-teal-700)}.text-teal-800{color:var(--color-teal-800)}.text-violet-700{color:var(--color-violet-700)}.text-violet-800{color:var(--color-violet-800)}.text-violet-900{color:var(--color-violet-900)}.text-violet-900\/90{color:#4d179ae6}@supports (color:color-mix(in lab,red,red)){.text-violet-900\/90{color:color-mix(in oklab,var(--color-violet-900) 90%,transparent)}}.text-violet-950{color:var(--color-violet-950)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.text-white\/90{color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.text-white\/90{color:color-mix(in oklab,var(--color-white) 90%,transparent)}}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.decoration-re-red{text-decoration-color:var(--re-red)}.decoration-2{text-decoration-thickness:2px}.underline-offset-4{text-underline-offset:4px}.accent-slate-900{accent-color:var(--color-slate-900)}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_-4px_10px_-5px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:0 -4px 10px -5px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(34\,197\,94\,0\.4\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,#22c55e66);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_40px_rgba\(218\,41\,28\,0\.2\)\]{--tw-shadow:0 0 40px var(--tw-shadow-color,#da291c33);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_40px_rgba\(220\,38\,38\,0\.2\)\]{--tw-shadow:0 0 40px var(--tw-shadow-color,#dc262633);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-green-100{--tw-shadow-color:oklch(96.2% .044 156.743)}@supports (color:color-mix(in lab,red,red)){.shadow-green-100{--tw-shadow-color:color-mix(in oklab, var(--color-green-100) var(--tw-shadow-alpha), transparent)}}.shadow-green-600\/20{--tw-shadow-color:#00a54433}@supports (color:color-mix(in lab,red,red)){.shadow-green-600\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-green-600) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-purple-200{--tw-shadow-color:oklch(90.2% .063 306.703)}@supports (color:color-mix(in lab,red,red)){.shadow-purple-200{--tw-shadow-color:color-mix(in oklab, var(--color-purple-200) var(--tw-shadow-alpha), transparent)}}.shadow-re-red\/10{--tw-shadow-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.shadow-re-red\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--re-red) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-re-red\/15{--tw-shadow-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.shadow-re-red\/15{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--re-red) 15%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-re-red\/20{--tw-shadow-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.shadow-re-red\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--re-red) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-red-200{--tw-shadow-color:oklch(88.5% .062 18.334)}@supports (color:color-mix(in lab,red,red)){.shadow-red-200{--tw-shadow-color:color-mix(in oklab, var(--color-red-200) var(--tw-shadow-alpha), transparent)}}.shadow-red-200\/50{--tw-shadow-color:#ffcaca80}@supports (color:color-mix(in lab,red,red)){.shadow-red-200\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-red-200) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-slate-200{--tw-shadow-color:oklch(92.9% .013 255.508)}@supports (color:color-mix(in lab,red,red)){.shadow-slate-200{--tw-shadow-color:color-mix(in oklab, var(--color-slate-200) var(--tw-shadow-alpha), transparent)}}.ring-black\/5{--tw-ring-color:#0000000d}@supports (color:color-mix(in lab,red,red)){.ring-black\/5{--tw-ring-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.ring-emerald-300{--tw-ring-color:var(--color-emerald-300)}.ring-emerald-300\/70{--tw-ring-color:#5ee9b5b3}@supports (color:color-mix(in lab,red,red)){.ring-emerald-300\/70{--tw-ring-color:color-mix(in oklab, var(--color-emerald-300) 70%, transparent)}}.ring-re-red\/20{--tw-ring-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.ring-re-red\/20{--tw-ring-color:color-mix(in oklab, var(--re-red) 20%, transparent)}}.ring-red-300\/70{--tw-ring-color:#ffa3a3b3}@supports (color:color-mix(in lab,red,red)){.ring-red-300\/70{--tw-ring-color:color-mix(in oklab, var(--color-red-300) 70%, transparent)}}.ring-ring\/50{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.ring-ring\/50{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-slate-100{--tw-ring-color:var(--color-slate-100)}.ring-slate-200{--tw-ring-color:var(--color-slate-200)}.ring-transparent{--tw-ring-color:transparent}.ring-white\/20{--tw-ring-color:#fff3}@supports (color:color-mix(in lab,red,red)){.ring-white\/20{--tw-ring-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.ring-offset-background{--tw-ring-offset-color:var(--background)}.ring-offset-white{--tw-ring-offset-color:var(--color-white)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur-3xl{--tw-blur:blur(var(--blur-3xl));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-\[0\.5\]{--tw-grayscale:grayscale(.5);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-\[1px\]{--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,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-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(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-1000{--tw-duration:1s;transition-duration:1s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media(hover:hover){.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:bg-blue-50:is(:where(.group):hover *){background-color:var(--color-blue-50)}.group-hover\:bg-re-red:is(:where(.group):hover *){background-color:var(--re-red)}.group-hover\:bg-red-50:is(:where(.group):hover *){background-color:var(--color-red-50)}.group-hover\:bg-slate-100:is(:where(.group):hover *){background-color:var(--color-slate-100)}.group-hover\:bg-white:is(:where(.group):hover *){background-color:var(--color-white)}.group-hover\:text-blue-600:is(:where(.group):hover *){color:var(--color-blue-600)}.group-hover\:text-emerald-900:is(:where(.group):hover *){color:var(--color-emerald-900)}.group-hover\:text-re-red:is(:where(.group):hover *){color:var(--re-red)}.group-hover\:text-re-red-hover:is(:where(.group):hover *){color:var(--re-red-hover)}.group-hover\:text-red-900:is(:where(.group):hover *){color:var(--color-red-900)}.group-hover\:text-slate-400:is(:where(.group):hover *){color:var(--color-slate-400)}.group-hover\:text-slate-900:is(:where(.group):hover *){color:var(--color-slate-900)}.group-hover\:text-white:is(:where(.group):hover *){color:var(--color-white)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\:ring-blue-100:is(:where(.group):hover *){--tw-ring-color:var(--color-blue-100)}.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *),.group-hover\/num\:opacity-100:is(:where(.group\/num):hover *){opacity:1}.group-hover\/opt\:text-slate-900:is(:where(.group\/opt):hover *){color:var(--color-slate-900)}.group-hover\/opt\:opacity-100:is(:where(.group\/opt):hover *),.group-hover\/optnum\:opacity-100:is(:where(.group\/optnum):hover *){opacity:1}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing) * 8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing) * -8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing) * 8)!important;height:calc(var(--spacing) * 8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 0)!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing) * 0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing) * -4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing) * 0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block:is(:where(.group\/drawer-content)[data-vaul-drawer-direction=bottom] *){display:block}.group-data-\[viewport\=false\]\/navigation-menu\:top-full:is(:where(.group\/navigation-menu)[data-viewport=false] *){top:100%}.group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5:is(:where(.group\/navigation-menu)[data-viewport=false] *){margin-top:calc(var(--spacing) * 1.5)}.group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden:is(:where(.group\/navigation-menu)[data-viewport=false] *){overflow:hidden}.group-data-\[viewport\=false\]\/navigation-menu\:rounded-md:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-radius:calc(var(--radius) - 2px)}.group-data-\[viewport\=false\]\/navigation-menu\:border:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[viewport\=false\]\/navigation-menu\:bg-popover:is(:where(.group\/navigation-menu)[data-viewport=false] *){background-color:var(--popover)}.group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground:is(:where(.group\/navigation-menu)[data-viewport=false] *){color:var(--popover-foreground)}.group-data-\[viewport\=false\]\/navigation-menu\:shadow:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[viewport\=false\]\/navigation-menu\:duration-200:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-duration:.2s;transition-duration:.2s}@media(hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing) * 1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing) * 2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing) * 1)}.selection\:bg-primary ::-moz-selection{background-color:var(--primary)}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::-moz-selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::-moz-selection{color:var(--primary-foreground)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::-moz-selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:mr-4::file-selector-button{margin-right:calc(var(--spacing) * 4)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing) * 7)}.file\:rounded-full::file-selector-button{border-radius:3.40282e38px}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-red-50::file-selector-button{background-color:var(--color-red-50)}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:px-4::file-selector-button{padding-inline:calc(var(--spacing) * 4)}.file\:py-1::file-selector-button{padding-block:calc(var(--spacing) * 1)}.file\:py-2::file-selector-button{padding-block:calc(var(--spacing) * 2)}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:text-xs::file-selector-button{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:font-semibold::file-selector-button{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.file\:text-re-red::file-selector-button{color:var(--re-red)}.file\:text-re-red-hover::file-selector-button{color:var(--re-red-hover)}.placeholder\:font-bold::-moz-placeholder{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.placeholder\:font-bold::placeholder{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.placeholder\:text-\[\#999999\]::-moz-placeholder{color:#999}.placeholder\:text-\[\#999999\]::placeholder{color:#999}.placeholder\:text-muted-foreground::-moz-placeholder{color:var(--muted-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.placeholder\:text-slate-300::-moz-placeholder{color:var(--color-slate-300)}.placeholder\:text-slate-300::placeholder{color:var(--color-slate-300)}.placeholder\:text-slate-400::-moz-placeholder{color:var(--color-slate-400)}.placeholder\:text-slate-400::placeholder{color:var(--color-slate-400)}.placeholder\:text-slate-500::-moz-placeholder{color:var(--color-slate-500)}.placeholder\:text-slate-500::placeholder{color:var(--color-slate-500)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing) * -2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:calc(var(--spacing) * 1)}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.first\:border-l:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pb-0:last-child{padding-bottom:calc(var(--spacing) * 0)}.focus-within\:relative:focus-within{position:relative}.focus-within\:z-20:focus-within{z-index:20}.focus-within\:border-blue-400:focus-within{border-color:var(--color-blue-400)}.focus-within\:ring-1:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:ring-blue-100:focus-within{--tw-ring-color:var(--color-blue-100)}@media(hover:hover){.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-\[1\.01\]:hover{scale:1.01}.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:border-blue-300:hover{border-color:var(--color-blue-300)}.hover\:border-re-red:hover{border-color:var(--re-red)}.hover\:border-red-200:hover{border-color:var(--color-red-200)}.hover\:border-red-300:hover{border-color:var(--color-red-300)}.hover\:border-red-400:hover{border-color:var(--color-red-400)}.hover\:border-red-500:hover{border-color:var(--color-red-500)}.hover\:border-slate-100:hover{border-color:var(--color-slate-100)}.hover\:border-slate-200:hover{border-color:var(--color-slate-200)}.hover\:border-slate-300:hover{border-color:var(--color-slate-300)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-amber-50:hover{background-color:var(--color-amber-50)}.hover\:bg-amber-100:hover{background-color:var(--color-amber-100)}.hover\:bg-amber-700:hover{background-color:var(--color-amber-700)}.hover\:bg-black:hover{background-color:var(--color-black)}.hover\:bg-blue-50:hover{background-color:var(--color-blue-50)}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}.hover\:bg-emerald-50\/30:hover{background-color:#ecfdf54d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-emerald-50\/30:hover{background-color:color-mix(in oklab,var(--color-emerald-50) 30%,transparent)}}.hover\:bg-emerald-100:hover{background-color:var(--color-emerald-100)}.hover\:bg-emerald-200:hover{background-color:var(--color-emerald-200)}.hover\:bg-emerald-700:hover{background-color:var(--color-emerald-700)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-green-100:hover{background-color:var(--color-green-100)}.hover\:bg-green-600:hover{background-color:var(--color-green-600)}.hover\:bg-green-700:hover{background-color:var(--color-green-700)}.hover\:bg-indigo-50:hover{background-color:var(--color-indigo-50)}.hover\:bg-indigo-700:hover{background-color:var(--color-indigo-700)}.hover\:bg-muted:hover,.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.hover\:bg-orange-50:hover{background-color:var(--color-orange-50)}.hover\:bg-orange-700:hover{background-color:var(--color-orange-700)}.hover\:bg-primary:hover{background-color:var(--primary)}.hover\:bg-primary-50:hover{background-color:var(--primary-50)}.hover\:bg-primary-700:hover{background-color:var(--primary-700)}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}.hover\:bg-purple-50:hover{background-color:var(--color-purple-50)}.hover\:bg-purple-700:hover{background-color:var(--color-purple-700)}.hover\:bg-re-red:hover{background-color:var(--re-red)}.hover\:bg-re-red-hover:hover{background-color:var(--re-red-hover)}.hover\:bg-re-red\/90:hover{background-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-re-red\/90:hover{background-color:color-mix(in oklab,var(--re-red) 90%,transparent)}}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-50\/20:hover{background-color:#fef2f233}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-50\/20:hover{background-color:color-mix(in oklab,var(--color-red-50) 20%,transparent)}}.hover\:bg-red-50\/30:hover{background-color:#fef2f24d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-50\/30:hover{background-color:color-mix(in oklab,var(--color-red-50) 30%,transparent)}}.hover\:bg-red-100:hover{background-color:var(--color-red-100)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:bg-slate-50\/10:hover{background-color:#f8fafc1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/10:hover{background-color:color-mix(in oklab,var(--color-slate-50) 10%,transparent)}}.hover\:bg-slate-50\/50:hover{background-color:#f8fafc80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/50:hover{background-color:color-mix(in oklab,var(--color-slate-50) 50%,transparent)}}.hover\:bg-slate-50\/70:hover{background-color:#f8fafcb3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/70:hover{background-color:color-mix(in oklab,var(--color-slate-50) 70%,transparent)}}.hover\:bg-slate-50\/80:hover{background-color:#f8fafccc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/80:hover{background-color:color-mix(in oklab,var(--color-slate-50) 80%,transparent)}}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:bg-slate-200:hover{background-color:var(--color-slate-200)}.hover\:bg-slate-200\/50:hover{background-color:#e2e8f080}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-200\/50:hover{background-color:color-mix(in oklab,var(--color-slate-200) 50%,transparent)}}.hover\:bg-slate-700:hover{background-color:var(--color-slate-700)}.hover\:bg-slate-800:hover{background-color:var(--color-slate-800)}.hover\:bg-slate-900:hover{background-color:var(--color-slate-900)}.hover\:bg-slate-950:hover{background-color:var(--color-slate-950)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.hover\:bg-white\/30:hover{background-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/30:hover{background-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.hover\:bg-white\/40:hover{background-color:#fff6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/40:hover{background-color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.hover\:bg-zinc-800:hover{background-color:var(--color-zinc-800)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-black:hover{color:var(--color-black)}.hover\:text-blue-600:hover{color:var(--color-blue-600)}.hover\:text-blue-700:hover{color:var(--color-blue-700)}.hover\:text-blue-800:hover{color:var(--color-blue-800)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-green-800:hover{color:var(--color-green-800)}.hover\:text-indigo-600:hover{color:var(--color-indigo-600)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:text-primary-700:hover{color:var(--primary-700)}.hover\:text-primary-foreground:hover{color:var(--primary-foreground)}.hover\:text-re-red:hover{color:var(--re-red)}.hover\:text-re-red-hover:hover{color:var(--re-red-hover)}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:text-red-800:hover{color:var(--color-red-800)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:text-slate-600:hover{color:var(--color-slate-600)}.hover\:text-slate-700:hover{color:var(--color-slate-700)}.hover\:text-slate-900:hover{color:var(--color-slate-900)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-4:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.hover\:file\:bg-red-50:hover::file-selector-button{background-color:var(--color-red-50)}.hover\:file\:bg-red-100:hover::file-selector-button{background-color:var(--color-red-100)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:z-10:focus{z-index:10}.focus\:border-re-red:focus,.focus\:border-re-red\/40:focus{border-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.focus\:border-re-red\/40:focus{border-color:color-mix(in oklab,var(--re-red) 40%,transparent)}}.focus\:border-red-500:focus{border-color:var(--color-red-500)}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:bg-primary:focus{background-color:var(--primary)}.focus\:bg-red-50:focus{background-color:var(--color-red-50)}.focus\:bg-slate-50:focus{background-color:var(--color-slate-50)}.focus\:bg-white:focus{background-color:var(--color-white)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:text-primary-foreground:focus{color:var(--primary-foreground)}.focus\:text-slate-900:focus{color:var(--color-slate-900)}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-re-red:focus{--tw-ring-color:var(--re-red)}.focus\:ring-red-200:focus{--tw-ring-color:var(--color-red-200)}.focus\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.focus\:ring-red-500\/30:focus{--tw-ring-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.focus\:ring-red-500\/30:focus{--tw-ring-color:color-mix(in oklab, var(--color-red-500) 30%, transparent)}}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-blue-500:focus-visible{border-color:var(--color-blue-500)}.focus-visible\:border-red-500:focus-visible{border-color:var(--color-red-500)}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:bg-white:focus-visible{background-color:var(--color-white)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-4:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-black:focus-visible{--tw-ring-color:var(--color-black)}.focus-visible\:ring-blue-500\/30:focus-visible{--tw-ring-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-blue-500\/30:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-blue-500) 30%, transparent)}}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-re-red:focus-visible{--tw-ring-color:var(--re-red)}.focus-visible\:ring-red-500\/30:focus-visible{--tw-ring-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-red-500\/30:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-red-500) 30%, transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-90:active{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-\[0\.98\]:active{scale:.98}.active\:scale-\[0\.99\]:active{scale:.99}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-100:disabled{background-color:var(--color-gray-100)}.disabled\:bg-slate-300:disabled{background-color:var(--color-slate-300)}.disabled\:bg-slate-400:disabled{background-color:var(--color-slate-400)}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){-moz-column-gap:calc(var(--spacing) * 3);column-gap:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-selected\:bg-accent[aria-selected=true]{background-color:var(--accent)}.aria-selected\:bg-primary[aria-selected=true]{background-color:var(--primary)}.aria-selected\:text-accent-foreground[aria-selected=true]{color:var(--accent-foreground)}.aria-selected\:text-muted-foreground[aria-selected=true]{color:var(--muted-foreground)}.aria-selected\:text-primary-foreground[aria-selected=true]{color:var(--primary-foreground)}.aria-selected\:opacity-100[aria-selected=true]{opacity:1}.data-\[active\=true\]\:z-10[data-active=true]{z-index:10}.data-\[active\=true\]\:border-ring[data-active=true]{border-color:var(--ring)}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:var(--accent-foreground)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[active\=true\]\:ring-\[3px\][data-active=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}@media(hover:hover){.data-\[active\=true\]\:hover\:bg-accent[data-active=true]:hover{background-color:var(--accent)}}.data-\[active\=true\]\:focus\:bg-accent[data-active=true]:focus{background-color:var(--accent)}.data-\[active\=true\]\:aria-invalid\:border-destructive[data-active=true][aria-invalid=true]{border-color:var(--destructive)}.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[error\=true\]\:text-destructive[data-error=true]{color:var(--destructive)}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing) * 8)}.data-\[orientation\=horizontal\]\:h-4[data-orientation=horizontal]{height:calc(var(--spacing) * 4)}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:calc(var(--spacing) * 44)}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:calc(var(--spacing) * 1.5)}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:calc(var(--spacing) * 0)}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:calc(var(--spacing) * 1)}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:var(--accent)}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:var(--accent-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing) * 9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing) * 8)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive) 90%,transparent)}}:is(.\*\*\:data-\[slot\=command-input-wrapper\]\:h-12 *)[data-slot=command-input-wrapper]{height:calc(var(--spacing) * 12)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:ring-0 *)[data-slot=navigation-menu-link]:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:outline-none *)[data-slot=navigation-menu-link]:focus{--tw-outline-style:none;outline-style:none}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing) * 2)}.data-\[state\=active\]\:bg-card[data-state=active]{background-color:var(--card)}.data-\[state\=active\]\:bg-re-red[data-state=active]{background-color:var(--re-red)}.data-\[state\=active\]\:bg-white[data-state=active]{background-color:var(--color-white)}.data-\[state\=active\]\:text-white[data-state=active]{color:var(--color-white)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-black[data-state=checked]{border-color:var(--color-black)}.data-\[state\=checked\]\:border-emerald-600[data-state=checked]{border-color:var(--color-emerald-600)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:border-purple-600[data-state=checked]{border-color:var(--color-purple-600)}.data-\[state\=checked\]\:border-re-red[data-state=checked]{border-color:var(--re-red)}.data-\[state\=checked\]\:bg-black[data-state=checked]{background-color:var(--color-black)}.data-\[state\=checked\]\:bg-emerald-600[data-state=checked]{background-color:var(--color-emerald-600)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:bg-purple-600[data-state=checked]{background-color:var(--color-purple-600)}.data-\[state\=checked\]\:bg-re-red[data-state=checked]{background-color:var(--re-red)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=inactive\]\:hidden[data-state=inactive]{display:none}.data-\[state\=on\]\:bg-accent[data-state=on]{background-color:var(--accent)}.data-\[state\=on\]\:text-accent-foreground[data-state=on]{color:var(--accent-foreground)}.data-\[state\=open\]\:bg-accent[data-state=open],.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}@media(hover:hover){.data-\[state\=open\]\:hover\:bg-accent[data-state=open]:hover{background-color:var(--accent)}.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=open\]\:focus\:bg-accent[data-state=open]:focus{background-color:var(--accent)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-switch-background[data-state=unchecked]{background-color:var(--switch-background)}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}.data-\[variant\=outline\]\:border-l-0[data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0}.data-\[variant\=outline\]\:shadow-xs[data-variant=outline]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[variant\=outline\]\:first\:border-l[data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[vaul-drawer-direction\=bottom\]\:inset-x-0[data-vaul-drawer-direction=bottom]{inset-inline:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=bottom\]\:bottom-0[data-vaul-drawer-direction=bottom]{bottom:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction=bottom]{margin-top:calc(var(--spacing) * 24)}.data-\[vaul-drawer-direction\=bottom\]\:max-h-\[80vh\][data-vaul-drawer-direction=bottom]{max-height:80vh}.data-\[vaul-drawer-direction\=bottom\]\:rounded-t-lg[data-vaul-drawer-direction=bottom]{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.data-\[vaul-drawer-direction\=bottom\]\:border-t[data-vaul-drawer-direction=bottom]{border-top-style:var(--tw-border-style);border-top-width:1px}.data-\[vaul-drawer-direction\=left\]\:inset-y-0[data-vaul-drawer-direction=left]{inset-block:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=left\]\:left-0[data-vaul-drawer-direction=left]{left:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=left\]\:w-3\/4[data-vaul-drawer-direction=left]{width:75%}.data-\[vaul-drawer-direction\=left\]\:border-r[data-vaul-drawer-direction=left]{border-right-style:var(--tw-border-style);border-right-width:1px}.data-\[vaul-drawer-direction\=right\]\:inset-y-0[data-vaul-drawer-direction=right]{inset-block:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=right\]\:right-0[data-vaul-drawer-direction=right]{right:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=right\]\:w-3\/4[data-vaul-drawer-direction=right]{width:75%}.data-\[vaul-drawer-direction\=right\]\:border-l[data-vaul-drawer-direction=right]{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[vaul-drawer-direction\=top\]\:inset-x-0[data-vaul-drawer-direction=top]{inset-inline:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=top\]\:top-0[data-vaul-drawer-direction=top]{top:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction=top]{margin-bottom:calc(var(--spacing) * 24)}.data-\[vaul-drawer-direction\=top\]\:max-h-\[80vh\][data-vaul-drawer-direction=top]{max-height:80vh}.data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction=top]{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.data-\[vaul-drawer-direction\=top\]\:border-b[data-vaul-drawer-direction=top]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}@media(min-width:40rem){.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:-mx-6{margin-inline:calc(var(--spacing) * -6)}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:inline{display:inline}.sm\:w-auto{width:auto}.sm\:\!max-w-\[80vw\]{max-width:80vw!important}.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:max-w-7xl{max-width:var(--container-7xl)}.sm\:max-w-\[460px\]{max-width:460px}.sm\:max-w-\[480px\]{max-width:480px}.sm\:max-w-\[500px\]{max-width:500px}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-1{flex:1}.sm\:flex-none{flex:none}.sm\:shrink-0{flex-shrink:0}.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\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:gap-0{gap:calc(var(--spacing) * 0)}.sm\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:px-2{padding-inline:calc(var(--spacing) * 2)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:py-5{padding-block:calc(var(--spacing) * 5)}.sm\:pt-6{padding-top:calc(var(--spacing) * 6)}.sm\:pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.sm\:pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.sm\:text-left{text-align:left}.sm\:text-\[11px\]{font-size:11px}.data-\[vaul-drawer-direction\=left\]\:sm\:max-w-sm[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:sm\:max-w-sm[data-vaul-drawer-direction=right]{max-width:var(--container-sm)}}@media(min-width:48rem){.md\:absolute{position:absolute}.md\:static{position:static}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-6{grid-column:span 6/span 6}.md\:mt-8{margin-top:calc(var(--spacing) * 8)}.md\:mr-2{margin-right:calc(var(--spacing) * 2)}.md\:block{display:block}.md\:flex{display:flex}.md\:inline{display:inline}.md\:h-12{height:calc(var(--spacing) * 12)}.md\:w-36{width:calc(var(--spacing) * 36)}.md\:w-40{width:calc(var(--spacing) * 40)}.md\:w-48{width:calc(var(--spacing) * 48)}.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:max-w-3xl{max-width:var(--container-3xl)}.md\:max-w-\[300px\]{max-width:300px}.md\:flex-initial{flex:0 auto}.md\:flex-none{flex:none}.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-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:border-transparent{border-color:#0000}.md\:bg-transparent{background-color:#0000}.md\:p-16{padding:calc(var(--spacing) * 16)}.md\:px-12{padding-inline:calc(var(--spacing) * 12)}.md\:pl-16{padding-left:calc(var(--spacing) * 16)}.md\:text-right{text-align:right}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:opacity-0{opacity:0}.md\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing) * 2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing) * 0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing) * 2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media(min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:flex{display:flex}.lg\:w-48{width:calc(var(--spacing) * 48)}.lg\:w-\[320px\]{width:320px}.lg\:max-w-4xl{max-width:var(--container-4xl)}.lg\:max-w-7xl{max-width:var(--container-7xl)}.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-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.lg\:pl-8{padding-left:calc(var(--spacing) * 8)}}@media(min-width:80rem){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 60%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}@media(hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:data-\[state\=checked\]\:bg-primary:is(.dark *)[data-state=checked]{background-color:var(--primary)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-card-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--card-foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.\[\&_\.ql-container\]\:border-0 .ql-container{border-style:var(--tw-border-style);border-width:0}.\[\&_\.ql-editor\]\:min-h-\[380px\] .ql-editor{min-height:380px}.\[\&_\.ql-editor\]\:text-sm .ql-editor{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.\[\&_\.ql-editor\]\:text-slate-900 .ql-editor{color:var(--color-slate-900)}.\[\&_\.ql-toolbar\]\:border-slate-200 .ql-toolbar{border-color:var(--color-slate-200)}.\[\&_\.ql-toolbar\]\:bg-slate-50 .ql-toolbar{background-color:var(--color-slate-50)}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:var(--muted-foreground)}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:var(--border)}@supports (color:color-mix(in lab,red,red)){.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:color-mix(in oklab,var(--border) 50%,transparent)}}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:var(--border)}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:#0000}.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{outline-offset:2px;outline:2px solid #0000}}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:var(--border)}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:var(--muted)}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:var(--border)}.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{outline-offset:2px;outline:2px solid #0000}}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:#0000}.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{outline-offset:2px;outline:2px solid #0000}}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing) * 1.5)}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:var(--muted-foreground)}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing) * 0)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:calc(var(--spacing) * 5)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing) * 5)}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:calc(var(--spacing) * 12)}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-block:calc(var(--spacing) * 3)}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:calc(var(--spacing) * 5)}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:calc(var(--spacing) * 5)}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:\:-webkit-inner-spin-button\]\:appearance-none::-webkit-inner-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none}.\[\&\:\:-webkit-outer-spin-button\]\:appearance-none::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none}.\[\&\:has\(\>\.day-range-end\)\]\:rounded-r-md:has(>.day-range-end){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\>\.day-range-start\)\]\:rounded-l-md:has(>.day-range-start){border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[aria-selected\]\)\]\:rounded-md:has([aria-selected]){border-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[aria-selected\]\)\]\:bg-accent:has([aria-selected]){background-color:var(--accent)}.first\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-l-md:first-child:has([aria-selected]){border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.last\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-r-md:last-child:has([aria-selected]),.\[\&\:has\(\[aria-selected\]\.day-range-end\)\]\:rounded-r-md:has([aria-selected].day-range-end){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing) * 6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing) * 6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\:last-child\]\:pb-6:last-child{padding-bottom:calc(var(--spacing) * 6)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>button\]\:text-white>button{color:var(--color-white)}.\[\&\>button\]\:opacity-100>button{opacity:1}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:size-3\.5>svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:h-2\.5>svg{height:calc(var(--spacing) * 2.5)}.\[\&\>svg\]\:h-3>svg{height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:w-2\.5>svg{width:calc(var(--spacing) * 2.5)}.\[\&\>svg\]\:w-3>svg{width:calc(var(--spacing) * 3)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-muted-foreground>svg{color:var(--muted-foreground)}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{rotate:90deg}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing) * -2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing) * -2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@media(hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary) 90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}.bg-status-progress{background-color:var(--status-in-progress)}.hover\:bg-status-progress-hover:hover{background-color:var(--status-in-progress-hover)}.text-status-progress{color:var(--status-in-progress)}.text-status-progress-muted{color:var(--status-in-progress-hover)}.text-status-progress-strong{color:#92400e}.bg-status-progress-soft{background-color:#fffbeb}.border-status-progress{border-color:#fde68a}.bg-status-workflow-icon{color:var(--status-in-progress);background-color:#fef3c7}.bg-status-workflow-panel{background-color:#fffbeb;border-color:#fde68a}.border-status-workflow-panel{border-color:#fde68a}.bg-status-workflow-badge{color:#b45309;background-color:#fef3c7;border-color:#fcd34d}.bg-status-workflow-active{background-color:var(--status-in-progress);border-color:var(--status-in-progress)}.ring-status-workflow-active{--tw-ring-color:var(--status-in-progress)}.btn-re-primary,button.bg-amber-600,a.bg-amber-600,[data-slot=button].bg-amber-600{color:#fff;background-color:var(--color-re-red)!important}.btn-re-primary:hover,button.bg-amber-600:hover,button.hover\:bg-amber-700:hover,a.bg-amber-600:hover,a.hover\:bg-amber-700:hover{background-color:var(--color-re-red-hover)!important}.bg-amber-600:not(.bg-status-progress):not(.bg-status-workflow-active):not(.bg-status-workflow-badge):not(.bg-status-workflow-icon){background-color:var(--color-re-red)!important}.hover\:bg-amber-700:hover:not(.hover\:bg-status-progress-hover){background-color:var(--color-re-red-hover)!important}.bg-amber-50:not(.bg-status-progress-soft):not(.bg-status-workflow-panel):not(.bg-status-workflow-icon):not(.bg-status-workflow-badge){background-color:#fef2f2!important}.bg-amber-100:not(.bg-status-workflow-icon):not(.bg-status-workflow-badge){background-color:#fee2e2!important}.bg-amber-200{background-color:#fecaca!important}.hover\:bg-amber-50:hover{background-color:#fef2f2!important}.hover\:bg-amber-100:hover{background-color:#fee2e2!important}.border-amber-200:not(.border-status-workflow-panel):not(.border-status-progress){border-color:#fecaca!important}.border-amber-300:not(.border-status-workflow-panel):not(.border-status-progress){border-color:#fca5a5!important}.text-amber-600:not(.text-status-progress):not(.text-status-progress-muted):not(.text-status-progress-strong){color:var(--color-re-red)!important}.text-amber-700:not(.text-status-progress):not(.text-status-progress-muted):not(.text-status-progress-strong){color:var(--color-re-red-hover)!important}.text-amber-800:not(.text-status-progress-strong){color:#991b1b!important}.text-amber-900:not(.text-status-progress-strong){color:#7f1d1d!important}}:root{--font-size:16px;--background:#fff;--foreground:oklch(14.5% 0 0);--card:#fff;--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:#da291c;--primary-600:#da291c;--primary-700:#b82216;--primary-50:#fef2f2;--primary-foreground:oklch(100% 0 0);--secondary:oklch(95% .0058 264.53);--secondary-foreground:#030213;--muted:#ececf0;--muted-foreground:#717182;--accent:#e9ebef;--accent-foreground:#030213;--destructive:#d4183d;--destructive-foreground:#fff;--border:#0000001a;--input:transparent;--input-background:#f3f3f5;--switch-background:#cbced4;--font-weight-medium:500;--font-weight-normal:400;--ring:oklch(70.8% 0 0);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--radius:.625rem;--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:#030213;--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0);--re-red:#da291c;--re-red-hover:#b82216;--re-black:#000;--re-white:#fff;--re-gray:#717171;--status-in-progress:#d97706;--status-in-progress-hover:#b45309;--status-success:#16a34a;--status-success-hover:#15803d;--status-negative:var(--re-red);--status-negative-hover:var(--re-red-hover)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(14.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(14.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(98.5% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(39.6% .141 25.723);--destructive-foreground:oklch(63.7% .237 25.331);--border:oklch(26.9% 0 0);--input:oklch(26.9% 0 0);--ring:oklch(43.9% 0 0);--font-weight-medium:500;--font-weight-normal:400;--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(26.9% 0 0);--sidebar-ring:oklch(43.9% 0 0)}.re-heading{text-transform:uppercase;letter-spacing:.1em;font-family:Montserrat,sans-serif;font-weight:700}.re-card{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-200);background-color:var(--color-white);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-radius:0}.re-input{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-300);width:100%;padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;--tw-outline-style:none;border-radius:0;outline-style:none;transition-duration:.2s}.re-input:focus{border-color:var(--color-red-600);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:#e4001433}@supports (color:color-mix(in lab,red,red)){.re-input:focus{--tw-ring-color:color-mix(in oklab, var(--color-red-600) 20%, transparent)}}.re-label{margin-bottom:calc(var(--spacing) * 1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide);color:var(--color-slate-800);text-transform:uppercase;display:block}.re-btn-primary{background-color:var(--color-black);padding-inline:calc(var(--spacing) * 8);padding-block:calc(var(--spacing) * 3);--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest);color:var(--color-white);text-transform:uppercase;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.re-btn-primary:hover{background-color:var(--color-slate-900)}}.re-btn-primary:active{scale:.98}.re-btn-outline{border-style:var(--tw-border-style);border-width:2px;border-color:var(--color-black);padding-inline:calc(var(--spacing) * 8);padding-block:calc(var(--spacing) * 3);--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest);color:var(--color-black);text-transform:uppercase;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.re-btn-outline:hover{background-color:var(--color-black);color:var(--color-white)}}.re-btn-outline:active{scale:.98}.re-intro-text{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--color-slate-700)}.re-disclaimer{border-left-style:var(--tw-border-style);border-left-width:4px;border-color:var(--color-red-600);background-color:var(--color-slate-50);padding:calc(var(--spacing) * 4);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-slate-600);font-style:italic}html{font-size:var(--font-size)}.custom-scrollbar::-webkit-scrollbar{width:3px}.custom-scrollbar::-webkit-scrollbar-track{background:0 0}.custom-scrollbar::-webkit-scrollbar-thumb{background:#e2e8f0;border-radius:10px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#cbd5e1}.custom-scrollbar{scrollbar-width:thin;scrollbar-color:#e2e8f0 transparent}.custom-scrollbar-x::-webkit-scrollbar{height:2px}.custom-scrollbar-x::-webkit-scrollbar-track{background:0 0}.custom-scrollbar-x::-webkit-scrollbar-thumb{background:#f1f5f9;border-radius:9999px}.custom-scrollbar-x::-webkit-scrollbar-thumb:hover{background:#e2e8f0}.custom-scrollbar-x{scrollbar-width:thin;scrollbar-color:#f1f5f9 transparent}.custom-scrollbar-x-slim::-webkit-scrollbar{height:2px}.custom-scrollbar-x-slim::-webkit-scrollbar-track{background:0 0}.custom-scrollbar-x-slim::-webkit-scrollbar-thumb{background:#f8fafc;border-radius:9999px}.custom-scrollbar-x-slim::-webkit-scrollbar-thumb:hover{background:#f1f5f9}.custom-scrollbar-x-slim{scrollbar-width:thin;scrollbar-color:#f8fafc transparent}.custom-scrollbar-slim::-webkit-scrollbar{width:2px}.custom-scrollbar-slim::-webkit-scrollbar-track{background:0 0}.custom-scrollbar-slim::-webkit-scrollbar-thumb{background:#f1f5f9;border-radius:9999px}.custom-scrollbar-slim::-webkit-scrollbar-thumb:hover{background:#e2e8f0}.custom-scrollbar-slim{scrollbar-width:thin;scrollbar-color:#f1f5f9 transparent}.no-native-password-reveal::-ms-reveal{display:none}.no-native-password-reveal::-ms-clear{display:none}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}} diff --git a/build/assets/index-XdyJ-8da.js b/build/assets/index-CIW1_Mz_.js similarity index 99% rename from build/assets/index-XdyJ-8da.js rename to build/assets/index-CIW1_Mz_.js index a60a3a2..2a3f739 100644 --- a/build/assets/index-XdyJ-8da.js +++ b/build/assets/index-CIW1_Mz_.js @@ -725,7 +725,7 @@ Defaulting to \`null\`.`}var Nq=$E,wq=zE;function uc({className:t,indicatorClass `),qe=new Blob([ve],{type:"text/csv;charset=utf-8;"}),ge=URL.createObjectURL(qe),Be=document.createElement("a");Be.setAttribute("href",ge),Be.setAttribute("download",`onboarding_responses_${new Date().toISOString().split("T")[0]}.xlsx`),document.body.appendChild(Be),Be.click(),document.body.removeChild(Be),ee.success(`Exported ${ke.length} records to Excel successfully`)}catch(Xe){console.error("Export failed:",Xe),ee.error(Xe.message||"Failed to export responses")}},ae=["Questionnaire Pending","Questionnaire Completed","Shortlisted"],xe=ce=>({Submitted:"bg-blue-100 text-blue-800","Questionnaire Pending":"bg-yellow-100 text-yellow-800","Questionnaire Completed":"bg-cyan-100 text-cyan-800",Shortlisted:"bg-purple-100 text-purple-800","Level 1 Interview Pending":"bg-orange-100 text-orange-800","Level 1 Approved":"bg-green-100 text-green-800","Level 2 Interview Pending":"bg-orange-100 text-orange-800","Level 2 Approved":"bg-green-100 text-green-800","Level 2 Recommended":"bg-teal-100 text-teal-800","Level 3 Interview Pending":"bg-orange-100 text-orange-800","FDD Verification":"bg-indigo-100 text-indigo-800","Payment Pending":"bg-red-50 text-red-800","LOI Issued":"bg-sky-100 text-sky-800","Dealer Code Generation":"bg-purple-100 text-purple-800","Architecture Team Assigned":"bg-blue-100 text-blue-800","Architecture Document Upload":"bg-blue-100 text-blue-800","Architecture Team Completion":"bg-blue-100 text-blue-800","Statutory GST":"bg-emerald-100 text-emerald-800","Statutory PAN":"bg-emerald-100 text-emerald-800","Statutory Nodal":"bg-emerald-100 text-emerald-800","Statutory Check":"bg-emerald-100 text-emerald-800","Statutory Partnership":"bg-emerald-100 text-emerald-800","Statutory Firm Reg":"bg-emerald-100 text-emerald-800","Statutory Rental":"bg-emerald-100 text-emerald-800","Statutory Virtual Code":"bg-emerald-100 text-emerald-800","Statutory Domain":"bg-emerald-100 text-emerald-800","Statutory MSD":"bg-emerald-100 text-emerald-800","Statutory LOI Ack":"bg-emerald-100 text-emerald-800","EOR In Progress":"bg-violet-100 text-violet-800","LOA Pending":"bg-pink-100 text-pink-800",Inauguration:"bg-green-100 text-green-800",Approved:"bg-green-100 text-green-800",Rejected:"bg-red-100 text-red-800",Disqualified:"bg-gray-100 text-gray-800","In Review":"bg-slate-100 text-slate-800","Level 3 Approved":"bg-green-100 text-green-800","LOI In Progress":"bg-sky-50 text-sky-700","LOI Approved":"bg-green-100 text-green-800","Security Deposit In Progress":"bg-blue-50 text-blue-700","Security Deposit Approved":"bg-green-100 text-green-800","Security Deposit":"bg-blue-100 text-blue-800","Security Details In Progress":"bg-blue-50 text-blue-700","Security Details Approved":"bg-green-100 text-green-800","Security Details":"bg-blue-100 text-blue-800","LOI Issued In Progress":"bg-sky-50 text-sky-700","Statutory Work In Progress":"bg-emerald-50 text-emerald-700","Statutory Work Completed":"bg-green-100 text-green-800","Architecture Work In Progress":"bg-blue-50 text-blue-700","Architecture Work Completed":"bg-green-100 text-green-800","Dealer Code Generation In Progress":"bg-purple-50 text-purple-700","Dealer Code Generated":"bg-green-100 text-green-800","LOA Issued":"bg-pink-100 text-pink-800","EOR Complete":"bg-violet-100 text-violet-800",Onboarded:"bg-green-200 text-green-900"})[ce]||"bg-gray-100 text-gray-800";return _?e.jsx("div",{className:"flex justify-center items-center h-96",children:e.jsx(es,{className:"w-8 h-8 animate-spin text-re-red"})}):e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"bg-white rounded-lg border border-slate-200 p-6",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col md:flex-row gap-4",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(Ta,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-slate-400"}),e.jsx(at,{type:"text",placeholder:"Search by name or registration number...",value:r,onChange:ce=>a(ce.target.value),className:"pl-10","data-testid":"onboarding-opp-requests-search-input"})]}),e.jsxs(At,{value:l,onValueChange:o,children:[e.jsx(Dt,{className:"w-full md:w-48","data-testid":"onboarding-opp-requests-status-select",children:e.jsx(kt,{placeholder:"Filter by status"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"all",children:"All Statuses"}),ae.map(ce=>e.jsx(Me,{value:ce,children:ce},ce))]})]}),e.jsx(se,{variant:"ghost",size:"sm",className:"text-slate-500 hover:text-slate-700 h-9",onClick:()=>{p(""),w(""),o("all"),m("all"),x("all"),a("")},"data-testid":"onboarding-opp-requests-clear-filters",children:"Clear Filters"}),e.jsxs(At,{value:f,onValueChange:x,children:[e.jsx(Dt,{className:"w-full md:w-48","data-testid":"onboarding-opp-requests-state-select",children:e.jsx(kt,{placeholder:"Filter by state"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"all",children:"All States"}),I.map(ce=>e.jsx(Me,{value:ce,children:ce},ce))]})]}),e.jsxs(At,{value:d,onValueChange:m,children:[e.jsx(Dt,{className:"w-full md:w-48","data-testid":"onboarding-opp-requests-location-select",children:e.jsx(kt,{placeholder:"Filter by location"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"all",children:"All Locations"}),G.map(ce=>e.jsx(Me,{value:ce,children:ce},ce))]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-1 md:flex-none",children:[e.jsxs(Tu,{children:[e.jsx(Pu,{asChild:!0,children:e.jsxs(se,{variant:"outline",className:jt("w-full md:w-40 justify-start text-left font-normal h-9 px-3",!h&&"text-muted-foreground"),"data-testid":"onboarding-opp-requests-from-date-trigger",children:[e.jsx(dr,{className:"mr-2 h-4 w-4 text-slate-400"}),h?Ka(new Date(h),"PPP"):e.jsx("span",{className:"text-xs",children:"From Date"})]})}),e.jsx(Ou,{className:"w-auto p-0",align:"start",children:e.jsx(bf,{mode:"single",selected:h?new Date(h):void 0,onSelect:ce=>p(ce?ce.toISOString().split("T")[0]:""),initialFocus:!0})})]}),e.jsx("span",{className:"text-slate-400",children:"to"}),e.jsxs(Tu,{children:[e.jsx(Pu,{asChild:!0,children:e.jsxs(se,{variant:"outline",className:jt("w-full md:w-40 justify-start text-left font-normal h-9 px-3",!u&&"text-muted-foreground"),"data-testid":"onboarding-opp-requests-to-date-trigger",children:[e.jsx(dr,{className:"mr-2 h-4 w-4 text-slate-400"}),u?Ka(new Date(u),"PPP"):e.jsx("span",{className:"text-xs",children:"To Date"})]})}),e.jsx(Ou,{className:"w-auto p-0",align:"start",children:e.jsx(bf,{mode:"single",selected:u?new Date(u):void 0,onSelect:ce=>w(ce?ce.toISOString().split("T")[0]:""),initialFocus:!0})})]})]}),e.jsxs(At,{value:v,onValueChange:N,children:[e.jsx(Dt,{className:"w-full md:w-48","data-testid":"onboarding-opp-requests-sort-select",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(PI,{className:"w-4 h-4 text-slate-400"}),e.jsx(kt,{placeholder:"Sort by"})]})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"date-desc",children:"Newest Applied"}),e.jsx(Me,{value:"date-asc",children:"Oldest Applied"}),e.jsx(Me,{value:"score-desc",children:"Highest Score"}),e.jsx(Me,{value:"score-asc",children:"Lowest Score"})]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(se,{variant:s==="grid"?"default":"outline",size:"sm",onClick:()=>n("grid"),className:s==="grid"?"bg-re-red hover:bg-re-red-hover":"","data-testid":"onboarding-opp-requests-view-grid-btn",children:[e.jsx(dk,{className:"w-4 h-4 mr-2"}),"Grid"]}),e.jsxs(se,{variant:s==="table"?"default":"outline",size:"sm",onClick:()=>n("table"),className:s==="table"?"bg-re-red hover:bg-re-red-hover":"","data-testid":"onboarding-opp-requests-view-table-btn",children:[e.jsx(mk,{className:"w-4 h-4 mr-2"}),"Table"]})]}),e.jsxs(se,{variant:"outline",size:"sm",onClick:ie,"data-testid":"onboarding-opp-requests-export-btn",children:[e.jsx(Ni,{className:"w-4 h-4 mr-2"}),"Export"]}),D.length>0&&e.jsxs(e.Fragment,{children:[e.jsxs(se,{variant:"outline",size:"sm",onClick:J,disabled:A,"data-testid":"onboarding-opp-requests-bulk-reminder-btn",children:[A?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(Dr,{className:"w-4 h-4 mr-2"}),"Send Reminders (",D.length,")"]}),e.jsxs(se,{size:"sm",onClick:H,className:"bg-green-600 hover:bg-green-700","data-testid":"onboarding-opp-requests-bulk-shortlist-btn",children:[e.jsx(fn,{className:"w-4 h-4 mr-2"}),"Shortlist (",D.length,")"]})]}),e.jsx("div",{className:"ml-auto",children:e.jsxs(Ce,{variant:"outline",className:"text-slate-600","data-testid":"onboarding-opp-requests-pending-count",children:[(C==null?void 0:C.total)||B.length," pending shortlisting"]})})]})]})}),s==="grid"?e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4","data-testid":"onboarding-opp-requests-grid",children:[B.map((ce,we)=>e.jsxs("div",{className:"relative","data-testid":`onboarding-opp-requests-grid-item-${we}`,children:[e.jsx("div",{className:"absolute top-4 left-4 z-10",children:e.jsx(Tn,{checked:D.includes(ce.id),onCheckedChange:ke=>W(ce.id,ke),className:"bg-white","data-testid":`onboarding-opp-requests-grid-checkbox-${we}`})}),e.jsx(WE,{application:ce,onViewDetails:t})]},ce.id)),B.length===0&&e.jsxs("div",{className:"col-span-full text-center py-12 text-slate-500 bg-white rounded-lg border border-slate-200","data-testid":"onboarding-opp-requests-grid-empty",children:[e.jsx(fn,{className:"w-12 h-12 mx-auto mb-4 text-slate-400"}),e.jsx("p",{className:"text-lg mb-2",children:"No opportunity requests found"}),e.jsx("p",{className:"text-sm",children:"Try adjusting your filters"})]})]}):e.jsxs("div",{className:"bg-white rounded-lg border border-slate-200","data-testid":"onboarding-opp-requests-table-container",children:[e.jsxs(Ps,{children:[e.jsx(Os,{children:e.jsxs(lt,{children:[e.jsx(fe,{className:"w-12",children:e.jsx(Tn,{checked:D.length===B.length&&B.length>0,onCheckedChange:K,"data-testid":"onboarding-opp-requests-table-select-all"})}),e.jsx(fe,{"data-testid":"onboarding-opp-requests-th-reg",children:"Registration"}),e.jsx(fe,{"data-testid":"onboarding-opp-requests-th-name",children:"Name"}),e.jsx(fe,{"data-testid":"onboarding-opp-requests-th-pref-loc",children:"Preferred Location"}),e.jsx(fe,{"data-testid":"onboarding-opp-requests-th-status",children:"Status"}),e.jsx(fe,{"data-testid":"onboarding-opp-requests-th-score",children:"Score"}),e.jsx(fe,{"data-testid":"onboarding-opp-requests-th-app-loc",children:"Applicant Location"}),e.jsx(fe,{"data-testid":"onboarding-opp-requests-th-shortlisted",children:"Shortlisted"}),e.jsx(fe,{"data-testid":"onboarding-opp-requests-th-progress",children:"Progress"}),e.jsx(fe,{"data-testid":"onboarding-opp-requests-th-date",children:"Applied On"})]})}),e.jsxs(Ls,{children:[B.map((ce,we)=>e.jsxs(lt,{className:"cursor-pointer hover:bg-slate-50",onClick:()=>t(ce.id),"data-testid":`onboarding-opp-requests-row-${we}`,children:[e.jsx(ue,{onClick:ke=>ke.stopPropagation(),children:e.jsx(Tn,{checked:D.includes(ce.id),onCheckedChange:ke=>W(ce.id,ke),"data-testid":`onboarding-opp-requests-table-select-item-${ce.id}`})}),e.jsx(ue,{children:e.jsx("span",{className:"text-slate-900","data-testid":`onboarding-opp-requests-reg-${we}`,children:ce.registrationNumber})}),e.jsx(ue,{children:e.jsx("span",{className:"text-slate-900","data-testid":`onboarding-opp-requests-name-${we}`,children:ce.name})}),e.jsx(ue,{children:e.jsx("span",{className:"text-slate-600","data-testid":`onboarding-opp-requests-pref-loc-${we}`,children:ce.preferredLocation})}),e.jsx(ue,{children:e.jsx(Ce,{className:xe(ce.status),"data-testid":`onboarding-opp-requests-status-${we}`,children:ce.status})}),e.jsx(ue,{children:e.jsx("span",{className:"font-semibold text-slate-900","data-testid":`onboarding-opp-requests-score-${we}`,children:ce.questionnaireMarks})}),e.jsx(ue,{children:e.jsx("span",{className:"text-slate-600","data-testid":`onboarding-opp-requests-app-loc-${we}`,children:ce.businessAddress})}),e.jsx(ue,{children:e.jsx(Ce,{variant:"outline","data-testid":`onboarding-opp-requests-shortlisted-badge-${we}`,children:"No"})}),e.jsx(ue,{children:e.jsx(mp,{value:ce.progress,status:ce.status,showPercent:!0,"data-testid":`onboarding-opp-requests-progress-${we}`})}),e.jsx(ue,{children:e.jsx("span",{className:"text-slate-600","data-testid":`onboarding-opp-requests-date-${we}`,children:Gt(ce.submissionDate)})})]},ce.id)),B.length===0&&e.jsx(lt,{children:e.jsxs(ue,{colSpan:9,className:"text-center py-12 text-slate-500","data-testid":"onboarding-opp-requests-table-empty",children:[e.jsx(fn,{className:"w-12 h-12 mx-auto mb-4 text-slate-400"}),e.jsx("p",{className:"text-lg mb-2",children:"No opportunity requests found"}),e.jsx("p",{className:"text-sm",children:"Try adjusting your filters"})]})})]})]}),C&&C.totalPages>1&&e.jsx("div",{className:"py-4 border-t border-slate-200",children:e.jsx(fo,{children:e.jsxs(po,{children:[e.jsx(Sn,{children:e.jsx(xo,{onClick:()=>y(ce=>Math.max(1,ce-1)),className:j===1?"pointer-events-none opacity-50":"cursor-pointer"})}),[...Array(C.totalPages)].map((ce,we)=>{const ke=we+1;return ke===1||ke===C.totalPages||ke>=j-1&&ke<=j+1?e.jsx(Sn,{children:e.jsx(Wi,{isActive:j===ke,onClick:()=>y(ke),className:"cursor-pointer",children:ke})},ke):ke===j-2||ke===j+2?e.jsx(Sn,{children:e.jsx(vo,{})},ke):null}),e.jsx(Sn,{children:e.jsx(go,{onClick:()=>y(ce=>Math.min(C.totalPages,ce+1)),className:j===C.totalPages?"pointer-events-none opacity-50":"cursor-pointer"})})]})})})]}),e.jsx(ls,{open:$,onOpenChange:P,children:e.jsxs(as,{className:"overflow-visible","data-testid":"onboarding-opp-requests-shortlist-modal",children:[e.jsxs(fs,{children:[e.jsx(us,{"data-testid":"onboarding-opp-requests-shortlist-modal-title",children:"Shortlist Applications"}),e.jsxs(bs,{children:["You are about to shortlist ",D.length," application(s). These applications will be moved to the Dealership Requests page and users will be assigned automatically based on the applied location."]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(de,{children:"Shortlisting Remark (Optional)"}),e.jsx(Gs,{placeholder:"Enter reason for shortlisting these applications...",value:E,onChange:ce=>O(ce.target.value),className:"mt-2",rows:4,"data-testid":"onboarding-opp-requests-remark-textarea"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(se,{variant:"outline",className:"flex-1",onClick:()=>{P(!1),O("")},"data-testid":"onboarding-opp-requests-shortlist-cancel-btn",children:"Cancel"}),e.jsx(se,{className:"flex-1 bg-green-600 hover:bg-green-700",onClick:X,"data-testid":"onboarding-opp-requests-shortlist-confirm-btn",children:"Confirm Shortlist"})]})]})]})})]})}function EU({onViewDetails:t}){var V,Q;const[s,n]=g.useState(""),[r,a]=g.useState("all"),[l,o]=g.useState("all"),[d,m]=g.useState(""),[f,x]=g.useState(""),[h,p]=g.useState(1),[u,w]=g.useState(null),[v,N]=g.useState([]),[j,y]=g.useState(!0),[C,S]=g.useState([]),[D,R]=g.useState([]),[A,L]=g.useState([]),[$,P]=g.useState(!1),E=async()=>{var _,z,T,F;if(A.length!==0)try{P(!0);const B=await ds.bulkConvertToOpportunity({ids:A});B!=null&&B.success&&((((_=B.data)==null?void 0:_.success)>0||!B.data)&&ee.success(B.message||`Successfully converted ${((z=B.data)==null?void 0:z.success)||A.length} leads.`),((T=B.data)==null?void 0:T.failed)>0&&((F=B.data)!=null&&F.errors)&&B.data.errors.forEach(K=>{ee.error(K,{duration:5e3})}),L([]),await G())}catch(B){console.error("Bulk conversion error:",B),ee.error(B.message||"Failed to perform bulk conversion")}finally{P(!1)}},O=()=>{A.length===Y.length?L([]):L(Y.map(_=>_.id))},I=_=>{L(z=>z.includes(_)?z.filter(T=>T!==_):[...z,_])};g.useEffect(()=>{G()},[d,f,s,h,r,l]),g.useEffect(()=>{p(1)},[d,f,s,r,l]),g.useEffect(()=>{q()},[]);const q=async()=>{try{const _=await Fs.getStates(),T=(Array.isArray(_)?_:(_==null?void 0:_.data)||(_==null?void 0:_.states)||[]).map(F=>typeof F=="string"?F:F.name||F.stateName).filter(Boolean);S(T)}catch(_){console.error("Failed to fetch states:",_)}},G=async()=>{try{y(!0);const _=await ds.getApplications({fromDate:d,toDate:f,search:s,status:"Submitted",isShortlisted:"false",location:r!=="all"?r:void 0,state:l!=="all"?l:void 0,page:h,limit:10}),z=_.data||[];w(_.meta);const T=z.map(K=>({id:K.id,registrationNumber:K.applicationId||"N/A",name:K.applicantName,email:K.email,phone:K.phone,age:K.age,education:K.education,residentialAddress:K.address||K.city||"",businessAddress:K.address||"",preferredLocation:K.preferredLocation,state:K.state,ownsBike:K.ownRoyalEnfield==="yes",pastExperience:K.experienceYears?`${K.experienceYears} years`:K.description||"",status:K.overallStatus,questionnaireMarks:K.score||K.questionnaireMarks||0,rank:0,totalApplicantsAtLocation:0,submissionDate:K.createdAt,assignedUsers:[],progress:K.progressPercentage||0,isShortlisted:K.isShortlisted,companyName:K.companyName,source:K.source,existingDealer:K.existingDealer,royalEnfieldModel:K.royalEnfieldModel,description:K.description,pincode:K.pincode,locationType:K.locationType,ownRoyalEnfield:K.ownRoyalEnfield,address:K.address}));N(T);const F=Array.from(new Set(T.map(K=>K.preferredLocation))).filter(Boolean);R(K=>Array.from(new Set([...K,...F])));const B=Array.from(new Set(T.map(K=>K.state))).filter(Boolean);S(K=>Array.from(new Set([...K,...B])))}catch(_){console.error("Failed to fetch applications:",_),ee.error("Failed to load non-opportunity requests")}finally{y(!1)}},Y=v;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl mb-2",children:"Non-opportunities (Lead Generation)"}),e.jsx("p",{className:"text-slate-600",children:"Interest submissions from regions where dealerships are currently not being offered. These leads received non-opportunity notification and are stored for future reference."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsx("div",{className:"bg-white rounded-lg border border-slate-200 p-4","data-testid":"onboarding-non-opps-stat-total",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Total Leads"}),e.jsx("p",{className:"text-2xl text-slate-900 mt-1",children:(u==null?void 0:u.total)||v.length})]}),e.jsx("div",{className:"p-3 bg-blue-100 rounded-lg",children:e.jsx(ny,{className:"w-6 h-6 text-blue-600"})})]})}),e.jsxs("div",{className:"bg-white rounded-lg border border-slate-200 p-4","data-testid":"onboarding-non-opps-stat-locations",children:[e.jsx("p",{className:"text-slate-600",children:"Unique Locations"}),e.jsx("p",{className:"text-2xl text-slate-900 mt-1",children:((V=u==null?void 0:u.stats)==null?void 0:V.uniqueLocations)||0})]}),e.jsxs("div",{className:"bg-white rounded-lg border border-slate-200 p-4","data-testid":"onboarding-non-opps-stat-exp",children:[e.jsx("p",{className:"text-slate-600",children:"With Experience"}),e.jsx("p",{className:"text-2xl text-re-red mt-1",children:((Q=u==null?void 0:u.stats)==null?void 0:Q.withExperience)||0})]})]}),e.jsxs("div",{className:"flex flex-col lg:flex-row gap-4",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(Ta,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-slate-400"}),e.jsx(at,{type:"text",placeholder:"Search by name, email, phone, or registration number...",value:s,onChange:_=>n(_.target.value),className:"pl-10","data-testid":"onboarding-non-opps-search-input"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(Tu,{children:[e.jsx(Pu,{asChild:!0,children:e.jsxs(se,{variant:"outline",className:jt("w-full md:w-36 justify-start text-left font-normal h-10 px-3",!d&&"text-muted-foreground"),"data-testid":"onboarding-non-opps-from-date-trigger",children:[e.jsx(dr,{className:"mr-2 h-4 w-4 text-slate-400"}),d?Ka(new Date(d),"PP"):e.jsx("span",{className:"text-xs text-slate-500",children:"From Date"})]})}),e.jsx(Ou,{className:"w-auto p-0",align:"start",children:e.jsx(bf,{mode:"single",selected:d?new Date(d):void 0,onSelect:_=>m(_?_.toISOString().split("T")[0]:""),initialFocus:!0})})]}),e.jsx("span",{className:"text-slate-400",children:"to"}),e.jsxs(Tu,{children:[e.jsx(Pu,{asChild:!0,children:e.jsxs(se,{variant:"outline",className:jt("w-full md:w-36 justify-start text-left font-normal h-10 px-3",!f&&"text-muted-foreground"),"data-testid":"onboarding-non-opps-to-date-trigger",children:[e.jsx(dr,{className:"mr-2 h-4 w-4 text-slate-400"}),f?Ka(new Date(f),"PP"):e.jsx("span",{className:"text-xs text-slate-500",children:"To Date"})]})}),e.jsx(Ou,{className:"w-auto p-0",align:"start",children:e.jsx(bf,{mode:"single",selected:f?new Date(f):void 0,onSelect:_=>x(_?_.toISOString().split("T")[0]:""),initialFocus:!0})})]})]}),e.jsxs(At,{value:r,onValueChange:a,children:[e.jsx(Dt,{className:"w-full lg:w-48","data-testid":"onboarding-non-opps-location-select",children:e.jsx(kt,{placeholder:"All Locations"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"all",children:"All Locations"}),D.map(_=>e.jsx(Me,{value:_,children:_},_))]})]}),e.jsx(se,{variant:"ghost",size:"sm",className:"text-slate-500 hover:text-slate-700 h-10 px-3",onClick:()=>{m(""),x(""),a("all"),o("all"),n("")},"data-testid":"onboarding-non-opps-clear-filters",children:"Clear Filters"}),e.jsxs(At,{value:l,onValueChange:o,children:[e.jsx(Dt,{className:"w-full lg:w-48","data-testid":"onboarding-non-opps-state-select",children:e.jsx(kt,{placeholder:"All States"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"all",children:"All States"}),C.map(_=>e.jsx(Me,{value:_,children:_},_))]})]}),e.jsx(se,{variant:"outline",size:"icon","data-testid":"onboarding-non-opps-export-btn",children:e.jsx(Ni,{className:"w-4 h-4"})}),A.length>0&&e.jsxs(se,{className:"bg-re-red hover:bg-re-red-hover font-bold",onClick:E,disabled:$,children:[$?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(II,{className:"w-4 h-4 mr-2"}),"Convert ",A.length," to Opportunity"]})]}),e.jsxs("div",{className:"bg-white rounded-lg border border-slate-200 overflow-hidden","data-testid":"onboarding-non-opps-table-container",children:[e.jsxs(Ps,{children:[e.jsx(Os,{children:e.jsxs(lt,{children:[e.jsx(fe,{className:"w-12",children:e.jsx(Tn,{checked:Y.length>0&&A.length===Y.length,onCheckedChange:O})}),e.jsx(fe,{"data-testid":"onboarding-non-opps-th-name",children:"Name"}),e.jsx(fe,{"data-testid":"onboarding-non-opps-th-phone",children:"Phone"}),e.jsx(fe,{"data-testid":"onboarding-non-opps-th-email",children:"Email"}),e.jsx(fe,{"data-testid":"onboarding-non-opps-th-loc",children:"Preferred Location"}),e.jsx(fe,{"data-testid":"onboarding-non-opps-th-address",children:"Main Address"}),e.jsx(fe,{"data-testid":"onboarding-non-opps-th-age",children:"Age"}),e.jsx(fe,{"data-testid":"onboarding-non-opps-th-exp",children:"Experience"}),e.jsx(fe,{"data-testid":"onboarding-non-opps-th-edu",children:"Education"}),e.jsx(fe,{"data-testid":"onboarding-non-opps-th-date",children:"Applied On"}),e.jsx(fe,{className:"text-right","data-testid":"onboarding-non-opps-th-actions",children:"Actions"})]})}),e.jsx(Ls,{children:j?e.jsx(lt,{children:e.jsxs(ue,{colSpan:11,className:"text-center py-20",children:[e.jsx(es,{className:"w-8 h-8 mx-auto animate-spin text-re-red mb-2"}),e.jsx("p",{className:"text-slate-500 text-sm",children:"Loading applications..."})]})}):Y.length===0?e.jsx(lt,{children:e.jsxs(ue,{colSpan:11,className:"text-center py-12 text-slate-500","data-testid":"onboarding-non-opps-empty-state",children:[e.jsx(ny,{className:"w-12 h-12 mx-auto mb-4 text-slate-400"}),e.jsx("p",{className:"text-lg mb-2",children:"No lead generation data found"}),e.jsx("p",{className:"text-sm",children:"Try adjusting your filters"})]})}):Y.map((_,z)=>e.jsxs(lt,{"data-testid":`onboarding-non-opps-row-${z}`,className:A.includes(_.id)?"bg-red-50/50":"",children:[e.jsx(ue,{children:e.jsx(Tn,{checked:A.includes(_.id),onCheckedChange:()=>I(_.id)})}),e.jsx(ue,{children:e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-900","data-testid":`onboarding-non-opps-name-${z}`,children:_.name}),e.jsx("p",{className:"text-slate-500 text-sm","data-testid":`onboarding-non-opps-id-${z}`,children:_.registrationNumber})]})}),e.jsx(ue,{className:"text-slate-900","data-testid":`onboarding-non-opps-phone-${z}`,children:_.phone}),e.jsx(ue,{className:"text-slate-600","data-testid":`onboarding-non-opps-email-${z}`,children:_.email}),e.jsx(ue,{children:e.jsxs("div",{"data-testid":`onboarding-non-opps-pref-loc-${z}`,children:[e.jsx("p",{className:"text-slate-900",children:_.preferredLocation}),e.jsx("p",{className:"text-slate-500 text-sm",children:_.state})]})}),e.jsx(ue,{className:"text-slate-600 max-w-xs truncate","data-testid":`onboarding-non-opps-address-${z}`,children:_.residentialAddress}),e.jsx(ue,{className:"text-slate-900","data-testid":`onboarding-non-opps-age-${z}`,children:_.age}),e.jsx(ue,{className:"text-slate-600","data-testid":`onboarding-non-opps-experience-${z}`,children:_.pastExperience}),e.jsx(ue,{className:"text-slate-900","data-testid":`onboarding-non-opps-education-${z}`,children:_.education}),e.jsx(ue,{className:"text-slate-600","data-testid":`onboarding-non-opps-date-${z}`,children:Gt(_.submissionDate)}),e.jsx(ue,{className:"text-right",children:e.jsx("div",{className:"flex justify-end gap-2",children:e.jsx(se,{variant:"outline",size:"sm",onClick:()=>t(_.id),"data-testid":`onboarding-non-opps-view-btn-${z}`,children:"View"})})})]},_.id))})]}),u&&u.totalPages>1&&e.jsx("div",{className:"py-4 border-t border-slate-200",children:e.jsx(fo,{children:e.jsxs(po,{children:[e.jsx(Sn,{children:e.jsx(xo,{onClick:()=>p(_=>Math.max(1,_-1)),className:h===1?"pointer-events-none opacity-50":"cursor-pointer"})}),[...Array(u.totalPages)].map((_,z)=>{const T=z+1;return T===1||T===u.totalPages||T>=h-1&&T<=h+1?e.jsx(Sn,{children:e.jsx(Wi,{isActive:h===T,onClick:()=>p(T),className:"cursor-pointer",children:T})},T):T===h-2||T===h+2?e.jsx(Sn,{children:e.jsx(vo,{})},T):null}),e.jsx(Sn,{children:e.jsx(go,{onClick:()=>p(_=>Math.min(u.totalPages,_+1)),className:h===u.totalPages?"pointer-events-none opacity-50":"cursor-pointer"})})]})})})]})]})}function _U({application:t,slaStatus:s,isNonResponsive:n,isAdmin:r,onBack:a,onOpenWorknotes:l}){return e.jsxs(e.Fragment,{children:[n&&e.jsxs("div",{className:"bg-red-50 border border-red-200 p-4 rounded-2xl flex items-center justify-between animate-in fade-in slide-in-from-top-4 duration-500","data-testid":"onboarding-details-non-responsive-banner",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"bg-red-100 p-2 rounded-xl",children:e.jsx(xk,{className:"w-6 h-6 text-red-600"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-black text-red-900 tracking-tight leading-none uppercase",children:"Applicant Flagged Non-Responsive"}),e.jsx("p",{className:"text-red-700 text-[11px] font-bold uppercase tracking-widest mt-1 opacity-80",children:"Audit process is currently on hold due to missing cooperation"})]})]}),r&&e.jsx(se,{variant:"outline",size:"sm",className:"bg-white border-red-200 text-red-600 hover:bg-red-50 font-black text-[10px] uppercase tracking-widest hidden sm:block h-9","data-testid":"onboarding-details-review-audit-button",onClick:()=>{const o=document.querySelector('[value="worknotes"]');o==null||o.click()},children:"Review Audit"})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(se,{variant:"outline",size:"icon",onClick:a,className:"shrink-0","data-testid":"onboarding-details-back-button",children:e.jsx(Jr,{className:"w-4 h-4"})}),e.jsxs("div",{className:"truncate",children:[e.jsx("h1",{className:"text-slate-900 truncate leading-tight","data-testid":"onboarding-details-application-name",children:t.name}),e.jsx("p",{className:"text-slate-600 truncate text-sm","data-testid":"onboarding-details-registration-number",children:t.registrationNumber}),s&&e.jsx("div",{className:"mt-1",children:e.jsx(kr,{status:s})})]})]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:e.jsxs(se,{variant:"outline",className:"relative hover:bg-red-50 hover:border-red-300 hover:text-re-red-hover transition-all shadow-sm",onClick:l,"data-testid":"onboarding-details-view-work-notes",children:[e.jsx(Ga,{className:"w-4 h-4 mr-2"}),"View Work Notes"]})})]})]})}var TU=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],PU=TU.reduce((t,s)=>{const n=Wu(`Primitive.${s}`),r=g.forwardRef((a,l)=>{const{asChild:o,...d}=a,m=o?n:s;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),e.jsx(m,{...d,ref:l})});return r.displayName=`Primitive.${s}`,{...t,[s]:r}},{}),OU="Separator",RS="horizontal",LU=["horizontal","vertical"],m_=g.forwardRef((t,s)=>{const{decorative:n,orientation:r=RS,...a}=t,l=IU(r)?r:RS,d=n?{role:"none"}:{"aria-orientation":l==="vertical"?l:void 0,role:"separator"};return e.jsx(PU.div,{"data-orientation":l,...d,...a,ref:s})});m_.displayName=OU;function IU(t){return LU.includes(t)}var MU=m_;function tc({className:t,orientation:s="horizontal",decorative:n=!0,...r}){return e.jsx(MU,{"data-slot":"separator-root",decorative:n,orientation:s,className:jt("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",t),...r})}function FU({application:t,canEditStatutory:s,isEditingStatutory:n,isSavingStatutory:r,statutoryForm:a,onEditFirmType:l,onEditStatutory:o,onCancelEditStatutory:d,onSaveStatutory:m,onStatutoryFormChange:f}){return e.jsxs(Le,{"data-testid":"onboarding-applicant-info-card",children:[e.jsx(Qe,{children:e.jsx(et,{children:"Applicant Information"})}),e.jsxs(Fe,{className:"p-4 sm:p-6 space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-3 gap-x-6 gap-y-4",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Ir,{className:"w-5 h-5 text-slate-400 mt-1"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Full Name"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-name",children:t.name})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Dr,{className:"w-5 h-5 text-slate-400 mt-1"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Email"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-email",children:t.email})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(nb,{className:"w-5 h-5 text-slate-400 mt-1"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Phone"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-phone",children:t.phone})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Ir,{className:"w-5 h-5 text-slate-400 mt-1"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Age"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-age",children:t.age?`${t.age} years`:"N/A"})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(VI,{className:"w-5 h-5 text-slate-400 mt-1"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Education"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-education",children:t.education||"N/A"})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Vr,{className:"w-5 h-5 text-slate-400 mt-1"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Preferred Location"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-preferred-location",children:t.preferredLocation||"N/A"})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Vr,{className:"w-5 h-5 text-slate-400 mt-1"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Location Type"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-location-type",children:t.locationType||"N/A"})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(so,{className:"w-5 h-5 text-slate-400 mt-1"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("p",{className:"text-slate-600 flex items-center justify-between group cursor-pointer",onClick:l,"data-testid":"onboarding-applicant-info-edit-firm-type",children:["Proposed Firm Type",e.jsx(iy,{className:"w-3 h-3 text-slate-300 group-hover:text-re-red transition-colors"})]}),e.jsx("p",{className:"text-slate-900 font-black text-re-red-hover tracking-tight leading-none mt-1","data-testid":"onboarding-applicant-info-firm-type",children:t.constitutionType||"Not Provided"})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(C1,{className:"w-5 h-5 text-slate-400 mt-1"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Owns Bike"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-owns-bike",children:t.ownRoyalEnfield==="yes"?"Yes":"No"})]})]}),t.ownRoyalEnfield==="yes"&&e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(C1,{className:"w-5 h-5 text-slate-400 mt-1"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Bike Model"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-bike-model",children:t.royalEnfieldModel||"N/A"})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Ir,{className:"w-5 h-5 text-slate-400 mt-1"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Existing Dealer"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-existing-dealer",children:t.existingDealer==="yes"?"Yes":"No"})]})]}),t.existingDealer==="yes"&&e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Ir,{className:"w-5 h-5 text-slate-400 mt-1"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Company Name"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-company-name",children:t.companyName||"N/A"})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(ac,{className:"w-5 h-5 text-slate-400 mt-1"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Source"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-source",children:t.source||"N/A"})]})]}),t.questionnaireMarks!==void 0&&e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(ik,{className:"w-5 h-5 text-slate-400 mt-1"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Questionnaire Score"}),e.jsxs("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-score",children:[t.questionnaireMarks,"/100"]})]})]})]}),e.jsx(tc,{}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600 mb-2",children:"Address"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-address",children:t.address||"N/A"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600 mb-2",children:"Pincode"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-pincode",children:t.pincode||"N/A"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600 mb-2",children:"Description"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-description",children:t.description||"N/A"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600 mb-2",children:"Past Experience"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-applicant-info-experience",children:t.pastExperience||"N/A"})]}),e.jsxs("div",{className:"pt-6 border-t mt-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("h3",{className:"text-sm font-black text-slate-900 uppercase tracking-widest flex items-center gap-2",children:[e.jsx(Gu,{className:"w-4 h-4 text-re-red"})," Statutory & Bank Information"]}),s&&!n&&e.jsxs(se,{variant:"ghost",size:"sm",onClick:o,className:"h-8 text-re-red hover:text-re-red-hover hover:bg-red-50 gap-1.5","data-testid":"onboarding-applicant-info-edit-statutory",children:[e.jsx(iy,{className:"w-3.5 h-3.5"}),"Edit Details"]})]}),n?e.jsxs("div",{className:"bg-slate-50/50 p-6 rounded-xl border-2 border-red-100 space-y-4","data-testid":"onboarding-applicant-info-statutory-edit-form",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{className:"text-[10px] uppercase font-bold text-slate-500",children:"Legal Entity Name"}),e.jsx(at,{value:a.accountHolderName,onChange:x=>f({...a,accountHolderName:x.target.value}),placeholder:"Enter Legal Entity Name",className:"bg-white border-slate-200","data-testid":"onboarding-applicant-info-input-legal-name"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{className:"text-[10px] uppercase font-bold text-slate-500",children:"PAN Number"}),e.jsx(at,{value:a.panNumber,onChange:x=>f({...a,panNumber:x.target.value.toUpperCase()}),placeholder:"10-digit PAN",maxLength:10,className:"bg-white border-slate-200 uppercase","data-testid":"onboarding-applicant-info-input-pan"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{className:"text-[10px] uppercase font-bold text-slate-500",children:"GST Number"}),e.jsx(at,{value:a.gstNumber,onChange:x=>f({...a,gstNumber:x.target.value.toUpperCase()}),placeholder:"15-digit GSTIN",maxLength:15,className:"bg-white border-slate-200 uppercase","data-testid":"onboarding-applicant-info-input-gst"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{className:"text-[10px] uppercase font-bold text-slate-500",children:"Registered Address"}),e.jsx(at,{value:a.registeredAddress,onChange:x=>f({...a,registeredAddress:x.target.value}),placeholder:"Enter Registered Office Address",className:"bg-white border-slate-200","data-testid":"onboarding-applicant-info-input-registered-address"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{className:"text-[10px] uppercase font-bold text-slate-500",children:"Bank Name"}),e.jsx(at,{value:a.bankName,onChange:x=>f({...a,bankName:x.target.value}),placeholder:"Enter Bank Name",className:"bg-white border-slate-200","data-testid":"onboarding-applicant-info-input-bank-name"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{className:"text-[10px] uppercase font-bold text-slate-500",children:"Account Number"}),e.jsx(at,{value:a.accountNumber,onChange:x=>f({...a,accountNumber:x.target.value}),placeholder:"Enter Account Number",className:"bg-white border-slate-200","data-testid":"onboarding-applicant-info-input-account-number"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{className:"text-[10px] uppercase font-bold text-slate-500",children:"IFSC Code"}),e.jsx(at,{value:a.ifscCode,onChange:x=>f({...a,ifscCode:x.target.value.toUpperCase()}),placeholder:"11-digit IFSC",maxLength:11,className:"bg-white border-slate-200 uppercase","data-testid":"onboarding-applicant-info-input-ifsc-code"})]})]}),e.jsxs("div",{className:"flex justify-end gap-3 pt-4 border-t",children:[e.jsx(se,{variant:"outline",size:"sm",onClick:d,disabled:r,"data-testid":"onboarding-applicant-info-statutory-cancel",children:"Cancel"}),e.jsx(se,{size:"sm",onClick:m,disabled:r,className:"bg-re-red hover:bg-re-red-hover","data-testid":"onboarding-applicant-info-statutory-save",children:r?e.jsx(es,{className:"w-4 h-4 animate-spin"}):"Save Details"})]})]}):e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 bg-slate-50/50 p-4 rounded-xl border border-slate-100","data-testid":"onboarding-applicant-info-statutory-display",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-[10px] text-slate-500 uppercase font-bold tracking-tight",children:"Legal Entity Name"}),e.jsx("p",{className:"text-xs font-semibold text-slate-900","data-testid":"onboarding-applicant-info-display-legal-name",children:t.accountHolderName||"Pending"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-[10px] text-slate-500 uppercase font-bold tracking-tight",children:"PAN Number"}),e.jsx("p",{className:"text-xs font-semibold text-slate-900 uppercase","data-testid":"onboarding-applicant-info-display-pan",children:t.panNumber||"Pending"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-[10px] text-slate-500 uppercase font-bold tracking-tight",children:"GST Number"}),e.jsx("p",{className:"text-xs font-semibold text-slate-900 uppercase","data-testid":"onboarding-applicant-info-display-gst",children:t.gstNumber||"Pending"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-[10px] text-slate-500 uppercase font-bold tracking-tight",children:"Registered Address"}),e.jsx("p",{className:"text-xs font-semibold text-slate-900","data-testid":"onboarding-applicant-info-display-registered-address",children:t.registeredAddress||"Pending"})]}),e.jsxs("div",{className:"space-y-1","data-testid":"onboarding-applicant-info-display-bank-info",children:[e.jsx("p",{className:"text-[10px] text-slate-500 uppercase font-bold tracking-tight",children:"Bank Details"}),e.jsx("p",{className:"text-xs font-semibold text-slate-900",children:t.bankName||"N/A"}),e.jsxs("p",{className:"text-[10px] text-slate-600",children:["A/C: ",t.accountNumber||"N/A"]}),e.jsxs("p",{className:"text-[10px] text-slate-600",children:["IFSC: ",t.ifscCode||"N/A"]})]})]})]})]})]})}const BU=({application:t})=>{if(!t.questionnaireResponses||t.questionnaireResponses.length===0)return e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-slate-500 bg-slate-50 rounded-lg border border-dashed border-slate-300","data-testid":"onboarding-questionnaire-empty",children:[e.jsx(ac,{className:"w-12 h-12 mb-3 text-slate-300"}),e.jsx("h3",{className:"text-lg font-medium text-slate-700",children:"Response is Pending"}),e.jsx("p",{className:"text-sm",children:"The applicant has not submitted the questionnaire yet."})]});const s=[...t.questionnaireResponses].sort((r,a)=>{var l,o;return(((l=r.question)==null?void 0:l.order)||0)-(((o=a.question)==null?void 0:o.order)||0)}),n=t.score||t.questionnaireMarks||0;return e.jsxs("div",{className:"space-y-6","data-testid":"onboarding-questionnaire-view",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ac,{className:"w-5 h-5 text-re-red"}),e.jsx("h3",{className:"text-slate-900",children:"Questionnaire Responses"})]}),n!==void 0&&e.jsxs(Ce,{className:"bg-re-red","data-testid":"onboarding-questionnaire-total-score",children:["Score: ",n,"/100"]})]}),e.jsx("div",{className:"space-y-6",children:s.map((r,a)=>{const l=r.question,o=(l==null?void 0:l.questionText)||"Unknown Question",d=r.responseValue||"No Answer",m=(l==null?void 0:l.sectionName)||"General",f=(l==null?void 0:l.questionOptions)||[],x=f.find(v=>v.optionText===d),h=x?x.score:0,p=Math.max(...f.map(v=>v.score||0),0),u=typeof d=="string"&&d.startsWith("data:"),w=u&&d.startsWith("data:image");return e.jsxs("div",{className:"border border-slate-200 rounded-lg p-5 hover:border-red-300 transition-colors","data-testid":`onboarding-questionnaire-item-${a}`,children:[e.jsxs("div",{className:"flex items-start gap-3 mb-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-red-50 flex items-center justify-center flex-shrink-0",children:e.jsx("span",{className:"text-re-red",children:a+1})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(Ce,{variant:"outline",className:"text-slate-600 bg-slate-50","data-testid":`onboarding-questionnaire-item-section-${a}`,children:m}),f.length>0&&p>0&&e.jsxs(Ce,{className:h>0?"bg-green-600":"bg-slate-400","data-testid":`onboarding-questionnaire-item-score-${a}`,children:[h,"/",p]})]}),e.jsx("h4",{className:"text-slate-900 font-medium","data-testid":`onboarding-questionnaire-item-text-${a}`,children:o})]})]}),e.jsx("div",{className:"ml-11",children:w?e.jsx("div",{className:"mt-2","data-testid":`onboarding-questionnaire-item-image-${a}`,children:e.jsx("img",{src:d,alt:"Response Attachment",className:"max-w-full h-auto max-h-64 rounded border p-1 object-contain"})}):u?e.jsx("a",{href:d,download:`upload_${a}.pdf`,className:"text-blue-600 underline text-sm break-all","data-testid":`onboarding-questionnaire-item-download-${a}`,children:"Download Attachment"}):e.jsx("div",{className:"text-slate-600 leading-relaxed break-words whitespace-pre-wrap","data-testid":`onboarding-questionnaire-item-answer-${a}`,children:r.attachmentUrl?e.jsx("a",{href:r.attachmentUrl,target:"_blank",rel:"noreferrer",className:"text-blue-600 underline","data-testid":`onboarding-questionnaire-item-attachment-${a}`,children:"View Attachment"}):d})})]},r.id)})})]})},$U=Zy("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"}},defaultVariants:{variant:"default"}});function di({className:t,variant:s,...n}){return e.jsx("div",{"data-slot":"alert",role:"alert",className:jt($U({variant:s}),t),...n})}function Ti({className:t,...s}){return e.jsx("div",{"data-slot":"alert-title",className:jt("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",t),...s})}function ui({className:t,...s}){return e.jsx("div",{"data-slot":"alert-description",className:jt("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",t),...s})}var qU={};function zU(t){const{application:s,activeTab:n,setActiveTab:r,processStages:a,documents:l,interviews:o,expandedBranches:d,setExpandedBranches:m,setSelectedStage:f,setShowDocumentsModal:x,setShowUploadForm:h,handleRetriggerEvaluators:p,handleRescheduleInterview:u,setSelectedEvaluationForView:w,setShowFeedbackDetailsModal:v,renderFddAuditContent:N,eorProgress:j,eorData:y,eorChecklist:C,setUploadDocType:S,isAdmin:D,canViewFinanceTabs:R,fetchApplication:A,fetchEorData:L,deposits:$,getDeposit:P,paymentConfigs:E,setPreviewDoc:O,setShowPreviewModal:I,auditLoading:q,auditLogs:G,auditLogActionBadgeClass:Y}=t;g.useEffect(()=>{!R&&(n==="fdd"||n==="payments")&&r("progress")},[R,n,r]);const V=_=>String(_||"").trim().toLowerCase().replace(/[_\s-]+/g," "),Q=(_,z)=>{var B,K,W;const T=[(B=_==null?void 0:_.user)==null?void 0:B.role,(K=_==null?void 0:_.user)==null?void 0:K.roleCode,(W=_==null?void 0:_.metadata)==null?void 0:W.role].map(V),F=z.map(V);return T.some(H=>F.includes(H))};return e.jsx(Le,{"data-testid":"onboarding-details-tabs-container",children:e.jsxs($n,{value:n,onValueChange:r,children:[e.jsx(Qe,{className:"pb-4 px-4 sm:px-6",children:e.jsx("div",{className:"overflow-x-auto custom-scrollbar-x-slim -mx-4 px-4 sm:-mx-6 sm:px-6",children:e.jsxs(qn,{className:"w-max min-w-full justify-start h-11 bg-slate-100/80 p-1","data-testid":"onboarding-tabs-list",children:[e.jsx(zt,{value:"questionnaire",className:"min-w-[120px]","data-testid":"onboarding-tab-trigger-questionnaire",children:"Questionnaire"}),e.jsx(zt,{value:"progress",className:"min-w-[80px]","data-testid":"onboarding-tab-trigger-progress",children:"Progress"}),e.jsx(zt,{value:"documents",className:"min-w-[100px]","data-testid":"onboarding-tab-trigger-documents",children:"Documents"}),e.jsx(zt,{value:"interviews",className:"min-w-[100px]","data-testid":"onboarding-tab-trigger-interviews",children:"Interviews"}),R&&e.jsx(zt,{value:"fdd",className:"min-w-[120px]","data-testid":"onboarding-tab-trigger-fdd",children:"FDD Audit"}),e.jsx(zt,{value:"eor",className:"min-w-[120px]","data-testid":"onboarding-tab-trigger-eor",children:"EOR Checklist"}),R&&e.jsx(zt,{value:"payments",className:"min-w-[100px]","data-testid":"onboarding-tab-trigger-payments",children:"Payments"}),e.jsx(zt,{value:"audit",className:"min-w-[100px]","data-testid":"onboarding-tab-trigger-audit",children:"Audit Trail"})]})})}),e.jsxs(Fe,{children:[e.jsx(qt,{value:"questionnaire",className:"space-y-6","data-testid":"onboarding-tab-content-questionnaire",children:e.jsx(BU,{application:s})}),e.jsxs(qt,{value:"progress",className:"space-y-6","data-testid":"onboarding-tab-content-progress",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h3",{className:"text-slate-900",children:"Application Journey"}),e.jsxs(Ce,{className:Aq(s.status),"data-testid":"onboarding-progress-percentage-badge",children:[s.progress,"% Complete"]})]}),e.jsx(uc,{value:s.progress,className:"h-3 mb-6 bg-status-progress-soft",indicatorClassName:vi(s.status),"data-testid":"onboarding-progress-bar"})]}),e.jsx("div",{className:"relative status-progress-ui","data-testid":"onboarding-progress-stages-container",children:(()=>{const _={1:["DD-ZM","RBM"],2:["DD Lead","ZBH"],3:["NBH","DD Head"]},z={LOI_APPROVAL:["DD Head","NBH"],LOA_APPROVAL:["DD Head","NBH"]},T=B=>(s.participants||[]).filter(W=>{var X,J,ie,ae,xe,ce,we,ke,Xe,Ot,bt,te;return((X=W.metadata)==null?void 0:X.stageCode)===B||((ie=(J=W.metadata)==null?void 0:J.allAssignments)==null?void 0:ie.includes(B))||typeof B=="number"&&(((ae=W.metadata)==null?void 0:ae.interviewLevel)===B||((xe=W.metadata)==null?void 0:xe.interviewLevel)===String(B)||((we=(ce=W.metadata)==null?void 0:ce.allAssignments)==null?void 0:we.includes(B))||((Xe=(ke=W.metadata)==null?void 0:ke.allAssignments)==null?void 0:Xe.includes(String(B))))||typeof B=="string"&&!isNaN(Number(B))&&(((Ot=W.metadata)==null?void 0:Ot.interviewLevel)===Number(B)||((te=(bt=W.metadata)==null?void 0:bt.allAssignments)==null?void 0:te.includes(Number(B))))?!0:typeof B=="number"?Q(W,_[B]||[]):Q(W,z[B]||[])}).map(W=>{var J,ie,ae,xe,ce;const H=typeof B=="number"?`INTERVIEW_LEVEL_${B}`:B,X=(s.stageApprovals||[]).find(we=>we.stageCode===H&&String(we.actorUserId)===String(W.userId));return{name:((J=W.user)==null?void 0:J.name)||((ie=W.user)==null?void 0:ie.fullName)||"Unknown",role:((ae=W.user)==null?void 0:ae.role)||((xe=W.user)==null?void 0:xe.roleCode)||((ce=W.metadata)==null?void 0:ce.role)||"Reviewer",status:X?X.decision==="Approved"?"approved":"rejected":"pending"}}),F=(B,K)=>{const H={"1st Level Interview":1,"2nd Level Interview":2,"3rd Level Interview":3,"LOI Approval":"LOI_APPROVAL",LOA:"LOA_APPROVAL"}[B];if(!H)return null;const X=T(H);return X.length===0?null:e.jsx("div",{className:"flex flex-wrap gap-2 mt-3","data-testid":`onboarding-stage-approvers-${K}`,children:X.map((J,ie)=>e.jsxs("div",{className:"group relative flex items-center gap-1.5 bg-slate-50 border border-slate-200 rounded-full pl-1 pr-2.5 py-0.5 transition-all hover:bg-white hover:shadow-sm","data-testid":`onboarding-stage-approver-${K}-${ie}`,children:[e.jsx("div",{className:jt("w-6 h-6 rounded-full flex items-center justify-center text-[10px] font-bold text-white",J.status==="approved"?"bg-green-500":J.status==="rejected"?"bg-red-500":"bg-slate-300"),children:J.name.split(" ").map(ae=>ae[0]).join("").substring(0,2).toUpperCase()}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-[10px] font-medium text-slate-700 leading-none",children:J.name}),e.jsx("span",{className:"text-[8px] text-slate-500 leading-none mt-0.5",children:J.role})]}),e.jsx("div",{className:jt("absolute -top-0.5 -right-0.5 w-2 h-2 rounded-full border border-white",J.status==="approved"?"bg-green-500":J.status==="rejected"?"bg-red-500":"bg-status-progress"),"data-testid":`onboarding-stage-approver-status-dot-${K}-${ie}`}),e.jsxs("div",{className:"absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-slate-900 text-white text-[10px] rounded opacity-0 group-hover:opacity-100 pointer-events-none transition-opacity whitespace-nowrap z-50",children:[J.role,": ",J.status.toUpperCase()]})]},ie))})};return a.map((B,K)=>e.jsxs("div",{"data-testid":`onboarding-progress-stage-${K}`,children:[e.jsxs("div",{className:"flex gap-4 pb-8",children:[e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:`w-10 h-10 rounded-full flex items-center justify-center border-2 z-10 relative ${B.status==="completed"?"bg-green-500 border-green-500 text-white shadow-md":B.status==="active"?B.isLocked?"bg-slate-400 border-slate-400 text-white":"bg-status-workflow-active border-status-workflow-active text-white animate-pulse-subtle":"bg-white border-slate-300 text-slate-400 shadow-none"}`,"data-testid":`onboarding-progress-stage-icon-${K}`,children:B.isParallel?e.jsx(ry,{className:"w-5 h-5"}):B.isLocked?e.jsxs("div",{className:"group relative",children:[e.jsx(ay,{className:"w-5 h-5 text-white cursor-help"}),e.jsxs("div",{className:"absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-3 py-1.5 bg-slate-900 text-white text-[10px] rounded shadow-xl opacity-0 group-hover:opacity-100 pointer-events-none transition-all duration-200 whitespace-nowrap z-[100] border border-slate-700",children:[e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsxs("span",{className:"font-bold text-status-progress flex items-center gap-1",children:[e.jsx(an,{className:"w-3 h-3"})," Stage Locked"]}),e.jsx("span",{children:B.lockMessage})]}),e.jsx("div",{className:"absolute top-full left-1/2 -translate-x-1/2 border-8 border-transparent border-t-slate-900"})]})]}):e.jsx(e.Fragment,{children:B.status==="completed"?e.jsx(Hn,{className:"w-6 h-6"}):B.status==="active"?e.jsx(yn,{className:"w-5 h-5 text-white"}):e.jsx("div",{className:"w-3 h-3 bg-slate-300 rounded-full"})})}),K0&&!["LOI Approval","LOA","1st Level Interview","2nd Level Interview","3rd Level Interview"].includes(B.name)&&e.jsxs("p",{className:"text-status-progress text-xs mt-1.5 flex items-center gap-1 bg-status-progress-soft w-fit px-2 py-0.5 rounded border border-status-progress","data-testid":`onboarding-progress-stage-evaluators-${K}`,children:[e.jsx(Ir,{className:"w-3 h-3"}),"Evaluators: ",B.evaluators.join(" + ")]}),(()=>{var ce;const W={3:2,4:2,5:2,6:2,8:2,13:2},H=Number(B.id),X=W[H],ie={3:1,4:1,5:2,6:3,8:"LOI_APPROVAL",13:"LOA_APPROVAL"}[H],ae=ie?T(ie).length:((ce=B.evaluators)==null?void 0:ce.length)||0,xe=H===3?B.status==="completed":B.status!=="pending";return X&&ae{const W=l.filter(X=>{var J;return X.stage===B.name||!X.stage&&((J=X.documentType)==null?void 0:J.toLowerCase().includes(B.name.toLowerCase().split(" ")[0]))}).length,H=B.status==="active"&&!B.isLocked;return W===0&&!H?null:e.jsx("div",{className:"flex items-center gap-2 mt-1",children:e.jsxs("button",{onClick:()=>{f(B.name),x(!0),W===0&&H&&h(!0)},className:"text-xs font-semibold text-blue-600 hover:text-blue-800 flex items-center gap-1.5 px-3 py-1 rounded-full bg-blue-50 border border-blue-100 hover:bg-blue-100 transition-all shadow-sm","data-testid":`onboarding-progress-stage-docs-${K}`,children:[e.jsx(Ns,{className:"w-3.5 h-3.5"}),W>0?`${W} Documents`:"Upload"]})})})(),e.jsxs("p",{className:"text-slate-500 mt-1 text-xs","data-testid":`onboarding-progress-stage-status-text-${K}`,children:[B.status==="completed"&&B.date&&`Completed: ${Gt(B.date)}`,B.status==="active"&&"In Progress",B.status==="pending"&&"Pending"]})]})]}),B.isParallel&&B.branches&&e.jsxs("div",{className:"ml-5 mb-8","data-testid":`onboarding-progress-parallel-branches-${K}`,children:[B.branches.map((W,H)=>{const X=W.name.toLowerCase().replace(/\s+/g,"-"),J=d[X],ie=W.color==="blue"?"blue":"green";return e.jsxs("div",{className:"mb-6 last:mb-0",children:[e.jsx("div",{className:"flex items-center gap-3 mb-2",children:e.jsxs("button",{onClick:()=>m(ae=>({...ae,[X]:!ae[X]})),className:`flex-1 flex items-center gap-3 p-4 rounded-lg border-2 transition-all hover:shadow-md ${ie==="blue"?"border-blue-300 bg-blue-50 hover:bg-blue-100":"border-green-300 bg-green-50 hover:bg-green-100"}`,"data-testid":`onboarding-progress-branch-trigger-${X}`,children:[J?e.jsx(Aa,{className:`w-5 h-5 ${ie==="blue"?"text-blue-600":"text-green-600"}`}):e.jsx(ji,{className:`w-5 h-5 ${ie==="blue"?"text-blue-600":"text-green-600"}`}),e.jsx("div",{className:`w-8 h-8 rounded-full flex items-center justify-center ${ie==="blue"?"bg-blue-200":"bg-green-200"}`,children:e.jsx(ry,{className:`w-4 h-4 ${ie==="blue"?"text-blue-700":"text-green-700"}`})}),e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("p",{className:`${ie==="blue"?"text-blue-900":"text-green-900"} font-semibold tracking-tight`,children:W.name}),e.jsxs("p",{className:`text-[10px] uppercase font-bold tracking-wider ${ie==="blue"?"text-blue-500":"text-green-500"}`,children:[W.stages.length," SUB-STEPS"]})]})]})}),J&&e.jsx("div",{className:"mt-4 ml-8 border-l-2 border-slate-200 pl-6 space-y-6","data-testid":`onboarding-progress-branch-content-${X}`,children:W.stages.map((ae,xe)=>e.jsx("div",{className:"relative",children:e.jsx("div",{className:"flex gap-4 text-xs","data-testid":`onboarding-progress-branch-stage-${X}-${xe}`,children:(()=>{const ce=l.filter(ke=>{var Xe;return((Xe=ke.documentType)==null?void 0:Xe.toLowerCase().includes(ae.name.toLowerCase().split(" ")[0]))||ke.stage===ae.name}),we=ae.status==="completed"||ce.length>0;return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"relative",children:e.jsx("div",{className:`w-8 h-8 rounded-full flex items-center justify-center border-2 ${we?`${ie==="blue"?"bg-blue-500 border-blue-500":"bg-green-500 border-green-500"}`:ae.status==="active"?"bg-status-workflow-active border-status-workflow-active text-white shadow-sm":"bg-white border-slate-300 text-slate-400"}`,"data-testid":`onboarding-progress-branch-stage-icon-${X}-${xe}`,children:we?e.jsx(Wn,{className:"w-4 h-4 text-white",strokeWidth:3}):ae.status==="active"?e.jsx(yn,{className:"w-4 h-4 text-white"}):e.jsx("div",{className:"w-2 h-2 bg-slate-300 rounded-full"})})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"font-semibold text-slate-800","data-testid":`onboarding-progress-branch-stage-name-${X}-${xe}`,children:ae.name}),ae.description&&e.jsx("p",{className:"text-slate-500 text-xs mt-0.5",children:ae.description}),(()=>{const ke=ae.status==="active";return ce.length===0&&!ke?null:e.jsx("div",{className:"flex items-center gap-2 mt-1",children:e.jsxs("button",{onClick:()=>{f(ae.name),x(!0),ce.length===0&&ke&&h(!0)},className:jt("text-[10px] font-medium flex items-center gap-1 transition-colors",ie==="blue"?"text-blue-600 hover:text-blue-800":"text-green-600 hover:text-green-800"),"data-testid":`onboarding-progress-branch-stage-docs-${X}-${xe}`,children:[e.jsx(Ns,{className:"w-2.5 h-2.5"}),ce.length>0?`${ce.length} Docs`:"Upload"]})})})(),e.jsx("p",{className:"text-slate-400 text-[10px] mt-1","data-testid":`onboarding-progress-branch-stage-status-${X}-${xe}`,children:we&&ae.date?`Done: ${Gt(ae.date)}`:we&&ce.length>0?`Uploaded: ${Gt(ce[0].updatedAt||ce[0].createdAt)}`:"Pending"})]})]})})()})},ae.id))})]},H)}),e.jsx("div",{className:"h-8 w-0.5 bg-slate-300 ml-5 opacity-50"})]})]},B.id))})()})]}),e.jsxs(qt,{value:"documents",className:"space-y-4","data-testid":"onboarding-tab-content-documents",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h3",{className:"text-slate-900",children:"Uploaded Documents"}),e.jsxs(se,{size:"sm",className:"bg-re-red hover:bg-re-red-hover","data-testid":"onboarding-documents-upload-tab-button",onClick:()=>{f(null),x(!0),h(!0)},children:[e.jsx(or,{className:"w-4 h-4 mr-2"}),"Upload Document"]})]}),e.jsx("div",{className:"overflow-x-auto custom-scrollbar-x-slim",children:e.jsxs(Ps,{"data-testid":"onboarding-documents-table",children:[e.jsx(Os,{children:e.jsxs(lt,{children:[e.jsx(fe,{className:"min-w-[200px]",children:"File Name"}),e.jsx(fe,{className:"min-w-[120px]",children:"Type"}),e.jsx(fe,{className:"min-w-[120px]",children:"Upload Date"}),e.jsx(fe,{className:"min-w-[150px]",children:"Uploader"}),e.jsx(fe,{className:"text-right min-w-[100px]",children:"Actions"})]})}),e.jsx(Ls,{children:l.length===0?e.jsx(lt,{"data-testid":"onboarding-documents-empty-row",children:e.jsx(ue,{colSpan:5,className:"text-center py-8 text-slate-500",children:"No documents uploaded yet"})}):l.map((_,z)=>{var T;return e.jsxs(lt,{"data-testid":`onboarding-document-row-${z}`,children:[e.jsxs(ue,{className:"flex items-center gap-2",children:[e.jsx(Ns,{className:"w-4 h-4 text-slate-400"}),e.jsx("span",{className:"truncate max-w-[150px] md:max-w-[300px]","data-testid":`onboarding-document-name-${z}`,children:_.fileName})]}),e.jsx(ue,{"data-testid":`onboarding-document-type-${z}`,children:_.documentType}),e.jsx(ue,{children:Gt(_.createdAt)}),e.jsx(ue,{"data-testid":`onboarding-document-uploader-${z}`,children:((T=_.uploader)==null?void 0:T.fullName)||(_.uploadedBy?"Unknown User":"Applicant")}),e.jsx(ue,{children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(se,{size:"sm",variant:"outline","data-testid":`onboarding-document-preview-${z}`,onClick:()=>{O(_),I(!0)},children:e.jsx(bn,{className:"w-3 h-3 text-slate-500"})}),e.jsx(se,{size:"sm",variant:"outline","data-testid":`onboarding-document-download-${z}`,onClick:()=>{const F=qU.NEXT_PUBLIC_API_URL||"http://localhost:5000";window.open(`${F}/${_.filePath}`,"_blank")},children:e.jsx(Ni,{className:"w-3 h-3 text-slate-500"})})]})})]},_.id)})})]})})]}),e.jsxs(qt,{value:"interviews",className:"space-y-6","data-testid":"onboarding-tab-content-interviews",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-slate-900 mb-4",children:"Scheduled Interviews"}),e.jsx("div",{className:"overflow-x-auto custom-scrollbar-x-slim",children:e.jsxs(Ps,{"data-testid":"onboarding-interviews-scheduled-table",children:[e.jsx(Os,{children:e.jsxs(lt,{children:[e.jsx(fe,{className:"min-w-[100px]",children:"Level"}),e.jsx(fe,{className:"min-w-[180px]",children:"Date & Time"}),e.jsx(fe,{className:"min-w-[100px]",children:"Type"}),e.jsx(fe,{className:"min-w-[200px]",children:"Location/Link"}),e.jsx(fe,{className:"min-w-[120px]",children:"Status"}),e.jsx(fe,{className:"min-w-[150px]",children:"Scheduled By"}),e.jsx(fe,{className:"text-right",children:"Actions"})]})}),e.jsx(Ls,{children:!o||o.length===0?e.jsx(lt,{"data-testid":"onboarding-interviews-empty-row",children:e.jsx(ue,{colSpan:7,className:"text-center py-8 text-slate-500",children:"No interviews scheduled yet"})}):(Array.isArray(o)?o:[]).map((_,z)=>{var T,F;return e.jsxs(lt,{"data-testid":`onboarding-interview-row-${z}`,children:[e.jsxs(ue,{className:"font-medium",children:["Level ",_.level]}),e.jsx(ue,{children:_.scheduleDate?new Date(_.scheduleDate).toLocaleString():"N/A"}),e.jsx(ue,{className:"capitalize",children:_.interviewType}),e.jsx(ue,{children:(T=_.interviewType)!=null&&T.toLowerCase().includes("virtual")?e.jsx("a",{href:_.linkOrLocation,target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:underline","data-testid":`onboarding-interview-link-${z}`,children:"Join Meeting"}):e.jsx("span",{"data-testid":`onboarding-interview-location-${z}`,children:_.linkOrLocation})}),e.jsx(ue,{children:e.jsx(Ce,{variant:_.status==="Completed"?"default":"secondary","data-testid":`onboarding-interview-status-${z}`,children:_.status})}),e.jsx(ue,{children:((F=_.scheduler)==null?void 0:F.fullName)||_.scheduledBy||"N/A"}),e.jsx(ue,{className:"text-right",children:(_.status==="Scheduled"||_.status==="scheduled")&&e.jsx(se,{variant:"ghost",size:"sm",className:"text-primary-600 hover:text-primary-700 hover:bg-primary-50 h-8 px-2","data-testid":`onboarding-interview-reschedule-${z}`,onClick:()=>u(_),children:"Reschedule"})})]},_.id)})})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-slate-900 mb-4",children:"Interview Feedback"}),!o||o.length===0?e.jsx("p",{className:"text-slate-500 italic","data-testid":"onboarding-interviews-no-feedback",children:"No interviews scheduled."}):(Array.isArray(o)?o:[]).map((_,z)=>e.jsxs("div",{className:"mb-6 border p-4 rounded-lg bg-slate-50/50","data-testid":`onboarding-interview-feedback-block-${z}`,children:[e.jsxs("h4",{className:"font-semibold text-slate-800 mb-2",children:["Level ",_.level," Interview",e.jsxs("span",{className:"font-normal text-slate-500 text-sm ml-2",children:["(",Gt(_.scheduleDate)," - ",_.interviewType,")"]})]}),_.evaluations&&_.evaluations.length>0?e.jsxs(Ps,{"data-testid":`onboarding-interview-evaluations-table-${z}`,children:[e.jsx(Os,{children:e.jsxs(lt,{children:[e.jsx(fe,{children:"Interviewer"}),e.jsx(fe,{children:"Role"}),e.jsx(fe,{children:_.level===1?"Score (KT Matrix)":"Overall Score"}),e.jsx(fe,{children:"Remarks"}),e.jsx(fe,{children:"Recommendation"})]})}),e.jsx(Ls,{children:_.evaluations.map((T,F)=>{var B,K,W;return e.jsxs(lt,{"data-testid":`onboarding-interview-evaluation-row-${z}-${F}`,children:[e.jsx(ue,{className:"font-medium",children:(B=T.evaluator)==null?void 0:B.fullName}),e.jsx(ue,{children:((W=(K=T.evaluator)==null?void 0:K.role)==null?void 0:W.roleName)||"N/A"}),e.jsx(ue,{children:T.ktMatrixScore?e.jsxs(Ce,{variant:_.level===1?Number(T.ktMatrixScore)>=50?"outline":"destructive":Number(T.ktMatrixScore)>=5?"outline":"destructive","data-testid":`onboarding-interview-evaluation-score-${z}-${F}`,children:[T.ktMatrixScore,"/",_.level===1?"100":"10"]}):"N/A"}),e.jsx(ue,{className:"max-w-xs truncate",title:T.remarks||T.qualitativeFeedback,children:T.remarks?e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("span",{className:"font-medium text-slate-800",children:T.remarks}),T.feedbackDetails&&T.feedbackDetails.length>0&&e.jsx(se,{variant:"link",className:"p-0 h-auto font-normal text-blue-600 text-xs w-fit","data-testid":`onboarding-interview-evaluation-details-btn-${z}-${F}`,onClick:()=>{w({...T,interview:_}),v(!0)},children:"View Detailed Feedback"})]}):T.feedbackDetails&&T.feedbackDetails.length>0?e.jsx(se,{variant:"link",className:"p-0 h-auto font-normal text-blue-600","data-testid":`onboarding-interview-evaluation-details-btn-${z}-${F}`,onClick:()=>{w({...T,interview:_}),v(!0)},children:"View Detailed Feedback"}):T.qualitativeFeedback||"-"}),e.jsx(ue,{"data-testid":`onboarding-interview-evaluation-rec-${z}-${F}`,children:T.recommendation||"-"})]},T.id)})})]}):e.jsx("p",{className:"text-sm text-slate-500 italic pl-2",children:"No feedback recorded yet."})]},_.id))]}),["Level 2 Approved","Level 3 Interview Pending","Approved","Onboarded"].includes(s.status)&&e.jsxs("div",{"data-testid":"onboarding-interviews-summary-l2",children:[e.jsx("h3",{className:"text-slate-900 mb-4",children:"Level 2 Interview Summary"}),e.jsxs("div",{className:"p-4 bg-slate-50 rounded-lg",children:[e.jsx("p",{className:"text-slate-600",children:"Decision: Approved by both ZBH and DD Lead"}),e.jsx("p",{className:"text-slate-600 mt-2",children:"Overall Assessment: Strong candidate with excellent business plan"})]})]})]}),R&&e.jsx(qt,{value:"fdd",className:"space-y-6","data-testid":"onboarding-tab-content-fdd",children:N()}),e.jsxs(qt,{value:"eor",className:"space-y-4 status-progress-ui","data-testid":"onboarding-tab-content-eor",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h3",{className:"text-slate-900",children:"Essential Operating Requirements"}),e.jsxs(Ce,{className:Dq(j),"data-testid":"onboarding-eor-progress-badge",children:[Math.round(j),"% Complete"]})]}),e.jsx(uc,{value:j,className:"h-3 mb-6 bg-status-progress-soft",indicatorClassName:kq(j),"data-testid":"onboarding-eor-progress-bar"}),e.jsx("div",{className:"space-y-3","data-testid":"onboarding-eor-checklist",children:((y==null?void 0:y.items)||C).map((_,z)=>{const T=_.description||_.item,F=!!_.proofDocument;return e.jsxs("div",{className:"flex items-center gap-3 p-3 bg-slate-50 rounded-xl transition-all border border-transparent hover:border-slate-200 group","data-testid":`onboarding-eor-item-${z}`,children:[e.jsx(Tn,{checked:_.isCompliant||_.completed,className:"pointer-events-none shrink-0","data-testid":`onboarding-eor-checkbox-${z}`}),e.jsxs("div",{className:"flex flex-col flex-1 min-w-0 cursor-pointer","data-testid":`onboarding-eor-clickable-${z}`,onClick:()=>{f(`EOR: ${T}`),S(T),x(!0),h(!F)},children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:_.isCompliant||_.completed?"text-slate-900 font-bold":"text-slate-600 font-medium",children:T}),F&&!_.isCompliant&&e.jsx(Ce,{variant:"outline",className:"text-[10px] h-4 px-1.5 bg-red-50 text-re-red border-red-200 uppercase tracking-wider font-bold",children:"Needs Verification"})]}),F&&e.jsxs("div",{className:"flex items-center gap-1.5 text-xs text-blue-600 font-semibold mt-1",children:[e.jsx(Ns,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"truncate",children:_.proofDocument.fileName})]}),!F&&e.jsx("span",{className:"text-[10px] text-slate-400 mt-1 uppercase tracking-tighter",children:"Click to upload proof"})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[F&&!_.isCompliant&&D&&e.jsxs("div",{className:"flex gap-2",children:[e.jsx(se,{size:"sm",className:"h-8 px-3 bg-green-600 hover:bg-green-700 text-white font-bold rounded-lg shadow-sm","data-testid":`onboarding-eor-verify-btn-${z}`,onClick:async()=>{await(await Xo(async()=>{const{eorService:B}=await Promise.resolve().then(()=>Wg);return{eorService:B}},void 0)).eorService.updateItem(y.id,{..._,isCompliant:!0}),L(),ee.success(`${T} verified!`)},children:"Verify"}),e.jsx(se,{size:"sm",variant:"outline",className:"h-8 px-3 border-red-200 text-red-600 hover:bg-red-50 font-bold rounded-lg","data-testid":`onboarding-eor-reject-btn-${z}`,onClick:async()=>{await(await Xo(async()=>{const{eorService:B}=await Promise.resolve().then(()=>Wg);return{eorService:B}},void 0)).eorService.updateItem(y.id,{..._,isCompliant:!1,proofDocumentId:null}),L(),ee.success(`${T} rejected.`)},children:"Reject"})]}),(_.isCompliant||_.completed)&&e.jsx("div",{className:"bg-green-100 p-1.5 rounded-full","data-testid":`onboarding-eor-done-icon-${z}`,children:e.jsx(fn,{className:"w-4 h-4 text-green-600"})}),!F&&e.jsx("div",{className:"p-2 text-slate-300 group-hover:text-re-red transition-colors","data-testid":`onboarding-eor-upload-hint-${z}`,children:e.jsx(or,{className:"w-4 h-4"})})]})]},_.id)})}),j===100&&D&&(s.status==="EOR In Progress"||s.status==="LOA Pending")&&e.jsx("div",{className:"mt-8 p-6 bg-green-50 rounded-xl border-2 border-green-200 animate-in fade-in slide-in-from-bottom-4 duration-500","data-testid":"onboarding-eor-complete-banner",children:e.jsxs("div",{className:"flex flex-col sm:flex-row items-center gap-4",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-green-100 flex items-center justify-center shrink-0",children:e.jsx(no,{className:"w-7 h-7 text-green-600"})}),e.jsxs("div",{className:"flex-1 text-center sm:text-left",children:[e.jsx("h4",{className:"text-green-900 font-bold text-lg",children:"EOR Checklist Complete"}),e.jsx("p",{className:"text-green-700 text-sm",children:"All 12 mandatory requirements have been verified. You can now complete the audit and move to final inauguration."})]}),e.jsx(se,{className:"w-full sm:w-auto bg-green-600 hover:bg-green-700 text-white font-bold h-12 px-8 rounded-xl shadow-lg shadow-green-600/20 transition-all hover:scale-[1.02] active:scale-[0.98]","data-testid":"onboarding-eor-submit-audit",onClick:async()=>{try{const _=y==null?void 0:y.id;if(!_)throw new Error("Checklist ID not found");await(await Xo(async()=>{const{eorService:z}=await Promise.resolve().then(()=>Wg);return{eorService:z}},void 0)).eorService.submitAudit(_,{status:"Completed",overallComments:"EOR Checklist verified and audit completed."}),ee.success("EOR Audit completed successfully!"),A(),L()}catch(_){ee.error(_.message||"Failed to complete EOR audit")}},children:"Complete Audit & Proceed"})]})})]}),R&&e.jsxs(qt,{value:"payments",className:"space-y-6","data-testid":"onboarding-tab-content-payments",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h3",{className:"text-lg font-semibold text-slate-900",children:"Security Deposits"}),e.jsxs(Ce,{variant:"outline",className:"bg-slate-50 text-slate-500 border-slate-200","data-testid":"onboarding-payments-count-badge",children:[$.length," Payment Record(s)"]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(()=>{const _=P("SECURITY_DEPOSIT"),z=E.SECURITY_DEPOSIT,T=(z==null?void 0:z.amount)||5e5;return e.jsx(Le,{className:jt("border-l-4",(_==null?void 0:_.status)==="Verified"?"border-l-green-500":(_==null?void 0:_.status)==="Rejected"?"border-l-red-500":"border-l-re-red"),"data-testid":"onboarding-payment-card-security",children:e.jsxs(Fe,{className:"pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-8 h-8 rounded bg-red-50 flex items-center justify-center text-re-red",children:e.jsx(ac,{className:"w-4 h-4"})}),e.jsx("span",{className:"font-semibold text-slate-700",children:"Security Deposit"})]}),e.jsx(Ce,{className:jt((_==null?void 0:_.status)==="Verified"?"bg-green-100 text-green-700 hover:bg-green-100":(_==null?void 0:_.status)==="Rejected"?"bg-red-100 text-red-700 hover:bg-red-100":"bg-red-50 text-re-red-hover hover:bg-red-50"),"data-testid":"onboarding-payment-status-security",children:(_==null?void 0:_.status)||"Awaiting"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex justify-between items-baseline",children:[e.jsx("span",{className:"text-xs text-slate-500 uppercase font-bold tracking-wider",children:"Amount Received"}),e.jsxs("span",{className:"text-lg font-bold text-slate-900","data-testid":"onboarding-payment-amount-security",children:["₹",Number((_==null?void 0:_.amount)||0).toLocaleString()]})]}),e.jsxs("div",{className:"flex justify-between items-baseline border-t border-slate-100 pt-2",children:[e.jsx("span",{className:"text-xs text-slate-500",children:"Expected Total"}),e.jsxs("span",{className:"text-sm font-medium text-slate-600",children:["₹",T.toLocaleString()]})]}),(_==null?void 0:_.paymentReference)&&e.jsxs("div",{className:"bg-slate-50 p-2 rounded text-xs font-mono text-slate-600 flex justify-between items-center","data-testid":"onboarding-payment-ref-security",children:[e.jsxs("span",{children:["Ref: ",_.paymentReference]}),_.verifiedAt&&e.jsx("span",{children:Gt(_.verifiedAt)})]}),(_==null?void 0:_.remarks)&&e.jsxs("div",{className:"text-[11px] text-slate-500 bg-red-50/50 p-2 rounded border border-red-100 italic","data-testid":"onboarding-payment-remarks-security",children:['"',_.remarks,'"']}),e.jsxs("div",{className:"pt-4 mt-2 border-t border-slate-100",children:[e.jsx("p",{className:"text-[10px] font-bold text-slate-400 uppercase tracking-wider mb-2",children:"Verification Documents"}),e.jsxs("div",{className:"space-y-2",children:[l.filter(F=>{var B,K;return((B=F.documentType)==null?void 0:B.toLowerCase().includes("security"))&&((K=F.documentType)==null?void 0:K.toLowerCase().includes("deposit"))}).map((F,B)=>e.jsxs("div",{className:"flex items-center justify-between p-2 rounded bg-slate-50/50 border border-slate-100","data-testid":`onboarding-payment-doc-security-${B}`,children:[e.jsxs("div",{className:"flex items-center gap-2 overflow-hidden",children:[e.jsx(Ns,{className:"w-3 h-3 text-slate-400"}),e.jsx("span",{className:"text-[10px] font-medium text-slate-700 truncate",children:F.fileName||F.name})]}),e.jsx(se,{variant:"ghost",size:"sm",className:"h-6 px-2 text-[10px] text-re-red hover:text-re-red-hover hover:bg-red-50","data-testid":`onboarding-payment-doc-view-security-${B}`,onClick:()=>{O(F),I(!0)},children:"View"})]},B)),l.filter(F=>{var B,K;return((B=F.documentType)==null?void 0:B.toLowerCase().includes("security"))&&((K=F.documentType)==null?void 0:K.toLowerCase().includes("deposit"))}).length===0&&e.jsx("p",{className:"text-[10px] text-slate-400 italic",children:"No proof uploaded"})]})]})]})]})})})(),(()=>{const _=P("FIRST_FILL"),z=E.FIRST_FILL,T=(z==null?void 0:z.amount)||15e5;return e.jsx(Le,{className:jt("border-l-4",(_==null?void 0:_.status)==="Verified"?"border-l-green-500":(_==null?void 0:_.status)==="Rejected"?"border-l-red-500":"border-l-re-red"),"data-testid":"onboarding-payment-card-first-fill",children:e.jsxs(Fe,{className:"pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-8 h-8 rounded bg-blue-50 flex items-center justify-center text-blue-600",children:e.jsx(no,{className:"w-4 h-4"})}),e.jsx("span",{className:"font-semibold text-slate-700",children:"First Fill"})]}),e.jsx(Ce,{className:jt((_==null?void 0:_.status)==="Verified"?"bg-green-100 text-green-700 hover:bg-green-100":(_==null?void 0:_.status)==="Rejected"?"bg-red-100 text-red-700 hover:bg-red-100":"bg-red-50 text-re-red-hover hover:bg-red-50"),"data-testid":"onboarding-payment-status-first-fill",children:(_==null?void 0:_.status)||"Awaiting"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex justify-between items-baseline",children:[e.jsx("span",{className:"text-xs text-slate-500 uppercase font-bold tracking-wider",children:"Amount Received"}),e.jsxs("span",{className:"text-lg font-bold text-slate-900","data-testid":"onboarding-payment-amount-first-fill",children:["₹",Number((_==null?void 0:_.amount)||0).toLocaleString()]})]}),e.jsxs("div",{className:"flex justify-between items-baseline border-t border-slate-100 pt-2",children:[e.jsx("span",{className:"text-xs text-slate-500",children:"Expected Total"}),e.jsxs("span",{className:"text-sm font-medium text-slate-600",children:["₹",T.toLocaleString()]})]}),(_==null?void 0:_.paymentReference)&&e.jsxs("div",{className:"bg-slate-50 p-2 rounded text-xs font-mono text-slate-600 flex justify-between items-center","data-testid":"onboarding-payment-ref-first-fill",children:[e.jsxs("span",{children:["Ref: ",_.paymentReference]}),_.verifiedAt&&e.jsx("span",{children:Gt(_.verifiedAt)})]}),(_==null?void 0:_.remarks)&&e.jsxs("div",{className:"text-[11px] text-slate-500 bg-red-50/50 p-2 rounded border border-red-100 italic","data-testid":"onboarding-payment-remarks-first-fill",children:['"',_.remarks,'"']}),e.jsxs("div",{className:"pt-4 mt-2 border-t border-slate-100",children:[e.jsx("p",{className:"text-[10px] font-bold text-slate-400 uppercase tracking-wider mb-2",children:"Verification Documents"}),e.jsxs("div",{className:"space-y-2",children:[l.filter(F=>{var B,K;return((B=F.documentType)==null?void 0:B.toLowerCase().includes("first"))&&((K=F.documentType)==null?void 0:K.toLowerCase().includes("fill"))}).map((F,B)=>e.jsxs("div",{className:"flex items-center justify-between p-2 rounded bg-slate-50/50 border border-slate-100","data-testid":`onboarding-payment-doc-first-fill-${B}`,children:[e.jsxs("div",{className:"flex items-center gap-2 overflow-hidden",children:[e.jsx(Ns,{className:"w-3 h-3 text-slate-400"}),e.jsx("span",{className:"text-[10px] font-medium text-slate-700 truncate",children:F.fileName||F.name})]}),e.jsx(se,{variant:"ghost",size:"sm",className:"h-6 px-2 text-[10px] text-blue-600 hover:text-blue-700 hover:bg-blue-50","data-testid":`onboarding-payment-doc-view-first-fill-${B}`,onClick:()=>{O(F),I(!0)},children:"View"})]},B)),l.filter(F=>{var B,K;return((B=F.documentType)==null?void 0:B.toLowerCase().includes("first"))&&((K=F.documentType)==null?void 0:K.toLowerCase().includes("fill"))}).length===0&&e.jsx("p",{className:"text-[10px] text-slate-400 italic",children:"No proof uploaded"})]})]})]})]})})})()]})]}),e.jsx(qt,{value:"audit","data-testid":"onboarding-tab-content-audit",children:e.jsx(ap,{className:"h-[30rem] rounded-md border border-slate-100 bg-slate-50/50",children:e.jsx("div",{className:"space-y-2.5 p-3 pr-4","data-testid":"onboarding-audit-logs-container",children:q?e.jsxs("div",{className:"flex items-center justify-center py-10","data-testid":"onboarding-audit-loading",children:[e.jsx("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-re-red"}),e.jsx("span",{className:"ml-2 text-sm text-slate-500",children:"Loading audit trail…"})]}):G.length===0?e.jsx("div",{className:"rounded-lg border border-dashed border-slate-200 bg-white py-10 text-center text-sm text-slate-500","data-testid":"onboarding-audit-empty",children:"No audit logs recorded yet for this application."}):G.map((_,z)=>e.jsxs("div",{className:"rounded-lg border border-slate-200/90 bg-white p-3 text-sm shadow-sm","data-testid":`onboarding-audit-log-item-${z}`,children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-x-3 gap-y-1.5",children:[e.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[e.jsx(Ce,{variant:"outline",className:jt("shrink-0 text-[10px] font-semibold uppercase tracking-wide",Y(_.action)),"data-testid":`onboarding-audit-log-action-${z}`,children:String(_.action||"EVENT").replace(/_/g," ")}),_.stage?e.jsx("span",{className:"max-w-[200px] truncate text-[11px] text-slate-500",title:_.stage,"data-testid":`onboarding-audit-log-stage-${z}`,children:_.stage}):null]}),e.jsx("time",{className:"shrink-0 text-xs tabular-nums text-slate-400",dateTime:_.timestamp,"data-testid":`onboarding-audit-log-time-${z}`,children:Gt(_.timestamp)})]}),e.jsx("p",{className:"mt-2 text-[13px] leading-relaxed text-slate-800","data-testid":`onboarding-audit-log-desc-${z}`,children:_.description||"—"}),e.jsxs("div",{className:"mt-2 flex items-center gap-1.5 text-xs text-slate-500",children:[e.jsx(Ir,{className:"h-3.5 w-3.5 shrink-0 text-slate-400","aria-hidden":!0}),e.jsxs("span",{className:"min-w-0 truncate",children:[e.jsx("span",{className:"font-medium text-slate-600","data-testid":`onboarding-audit-log-user-${z}`,children:_.userName||"System"}),_.userEmail?e.jsxs("span",{className:"text-slate-400","data-testid":`onboarding-audit-log-email-${z}`,children:[" · ",_.userEmail]}):null]})]})]},_.id))})})})]})]})})}const ES={LOI:"LOI Documents",Statutory:"Statutory & Compliance",Architecture:"Architecture Inputs",FDD:"FDD / Financial",Other:"Other"};function UU(t){const s=String(t||"").toLowerCase();return s.startsWith("loi")?"LOI":s.startsWith("statutory")?"Statutory":s.startsWith("architecture")?"Architecture":s.startsWith("fdd")?"FDD":"Other"}function VU({open:t,onClose:s,applicationId:n,applicantName:r,documentConfigs:a,uploadedDocuments:l}){const[o,d]=g.useState(new Set),[m,f]=g.useState(14),[x,h]=g.useState(""),[p,u]=g.useState(!1),w=g.useMemo(()=>new Set((l||[]).map(C=>C.documentType)),[l]),v=g.useMemo(()=>{const C={LOI:[],Statutory:[],Architecture:[],FDD:[],Other:[]},S=new Set;for(const D of a||[])!(D!=null&&D.documentType)||S.has(D.documentType)||(S.add(D.documentType),C[UU(D.stageCode)].push(D));return C},[a]),N=C=>{d(S=>{const D=new Set(S);return D.has(C)?D.delete(C):D.add(C),D})},j=async()=>{const C=Array.from(o);if(C.length===0){ee.warning("Pick at least one document to request");return}u(!0);try{const S=await ds.requestProspectDocuments(n,{documentTypes:C,dueDays:m,customMessage:x.trim()||void 0}),D=((S==null?void 0:S.emailsSent)||[]).filter(L=>L.status==="sent"),R=((S==null?void 0:S.emailsSent)||[]).filter(L=>L.status==="failed"),A=(S==null?void 0:S.skippedAlreadyUploaded)||[];D.length>0?ee.success(`Sent ${D.length} email${D.length===1?"":"s"} to ${r}`+(A.length?` — ${A.length} already uploaded, skipped`:"")):A.length&&ee.info("No email sent — all selected documents were already uploaded."),R.length&&ee.error(`Some email categories failed: ${R.map(L=>L.category).join(", ")}`),d(new Set),h(""),s()}catch(S){ee.error((S==null?void 0:S.message)||"Failed to send document request")}finally{u(!1)}},y=Object.values(v).reduce((C,S)=>C+S.length,0);return e.jsx(ls,{open:t,onOpenChange:C=>{C||s()},children:e.jsxs(as,{className:"sm:max-w-2xl",children:[e.jsxs(fs,{children:[e.jsxs(us,{className:"flex items-center gap-2",children:[e.jsx(Dr,{className:"w-5 h-5 text-re-red"}),"Request Documents from Prospect"]}),e.jsxs(bs,{children:["Pick the documents you want ",r||"the prospect"," to upload. We'll send one email per category. Anything already uploaded is shown for context and skipped automatically."]})]}),y===0?e.jsxs("div",{className:"py-10 text-center text-slate-500 flex flex-col items-center gap-2",children:[e.jsx($I,{className:"w-8 h-8"}),e.jsx("p",{children:"No document configurations available for this application."})]}):e.jsx(ap,{className:"max-h-[55vh] pr-3",children:e.jsx("div",{className:"space-y-5",children:Object.keys(ES).map(C=>{const S=v[C];return S.length===0?null:e.jsxs("div",{className:"border rounded-lg p-3 bg-slate-50",children:[e.jsx("h4",{className:"font-medium text-slate-700 mb-2 text-sm uppercase tracking-wide",children:ES[C]}),e.jsx("div",{className:"space-y-2",children:S.map(D=>{const R=w.has(D.documentType);return e.jsxs("div",{className:`flex items-start gap-3 p-2 rounded ${R?"bg-green-50 border border-green-100":"bg-white border border-slate-200"}`,children:[R?e.jsx(Hn,{className:"w-5 h-5 text-green-600 mt-0.5 shrink-0"}):e.jsx(Tn,{id:`req-doc-${D.documentType}`,checked:o.has(D.documentType),onCheckedChange:()=>N(D.documentType),className:"mt-0.5"}),e.jsxs(de,{htmlFor:`req-doc-${D.documentType}`,className:`flex-1 cursor-pointer text-sm leading-snug ${R?"text-slate-500 line-through":"text-slate-800"}`,children:[e.jsx("span",{className:"font-medium",children:D.documentType}),D.isMandatory&&!R&&e.jsx(Ce,{className:"ml-2 bg-red-100 text-red-700 text-[10px]",children:"Mandatory"}),R&&e.jsx(Ce,{className:"ml-2 bg-green-100 text-green-700 text-[10px]",children:"Uploaded"}),D.description&&e.jsx("div",{className:"text-xs text-slate-500 mt-0.5",children:D.description})]})]},`${C}-${D.documentType}`)})})]},C)})})}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 pt-2 border-t",children:[e.jsxs("div",{className:"sm:col-span-1",children:[e.jsx(de,{htmlFor:"req-doc-due-days",className:"text-xs text-slate-600",children:"Due in (days)"}),e.jsx(at,{id:"req-doc-due-days",type:"number",min:1,max:60,value:m,onChange:C=>f(Math.max(1,Number(C.target.value)||14)),className:"mt-1"})]}),e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(de,{htmlFor:"req-doc-message",className:"text-xs text-slate-600",children:"Custom message (optional)"}),e.jsx(Gs,{id:"req-doc-message",placeholder:"Add a short note for the prospect…",value:x,onChange:C=>h(C.target.value),rows:2,className:"mt-1"})]})]}),e.jsxs(xn,{children:[e.jsx(se,{variant:"outline",onClick:s,disabled:p,children:"Cancel"}),e.jsx(se,{onClick:j,disabled:p||o.size===0,className:"bg-re-red hover:bg-re-red/90 text-white",children:p?e.jsxs(e.Fragment,{children:[e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}),"Sending…"]}):e.jsxs(e.Fragment,{children:[e.jsx(Dr,{className:"w-4 h-4 mr-2"}),"Send Request (",o.size,")"]})})]})]})})}const HU=new Set(["Security Deposit","Security Details","Payment Pending","LOI Issuance Pending","LOI Issued","Dealer Code Generation","Architecture Team Assigned","Architecture Document Upload","Architecture Team Completion","Statutory GST","Statutory PAN","Statutory Nodal","Statutory Check","Statutory Partnership","Statutory Firm Reg","Statutory Virtual Code","Statutory Domain","Statutory MSD","Statutory LOI Ack","LOA Pending"]),WU=new Set(["DD Admin","Super Admin","DD Lead","DD Head"]);function GU(t){var ie;const{application:s,permissions:n,getDeposit:r,isNonResponsive:a,isAdmin:l,currentUserStageAction:o,currentUserEvaluation:d,onOpenApproveModal:m,onOpenRejectModal:f,onOpenWorknote:x,onOpenScheduleModal:h,currentUser:p,handleGenerateDealerCodes:u,onOpenAssignArchitectureModal:w,onOpenAssignFdd:v,showAssignFddModal:N,setShowAssignFddModal:j,fddAgencies:y,selectedAgencyId:C,setSelectedAgencyId:S,isAssigningAgency:D,handleAssignAgency:R,activeInterviewForUser:A,hasSubmittedFeedback:L,setSelectedInterviewForFeedback:$,setShowKTMatrixModal:P,setShowLevel2FeedbackModal:E,setShowLevel3FeedbackModal:O,onGoToDashboard:I,showAssignModal:q,setShowAssignModal:G,selectedUser:Y,setSelectedUser:V,users:Q,participantType:_,setParticipantType:z,handleAddParticipant:T,isAssigningParticipant:F,documents:B=[],documentConfigs:K=[]}=t,[W,H]=g.useState(!1),X=(p==null?void 0:p.roleCode)||(p==null?void 0:p.role)||"",J=WU.has(X)&&HU.has((s==null?void 0:s.status)||"");return e.jsxs("div",{className:"space-y-6",children:[e.jsxs(Le,{"data-testid":"onboarding-details-summary-card",children:[e.jsx(Qe,{children:e.jsx(et,{children:"Summary"})}),e.jsxs(Fe,{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Registration ID"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-details-summary-reg-id",children:s.registrationNumber})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Current Status"}),e.jsx(Ce,{className:jt("mt-1",Jb(s.status)),"data-testid":"onboarding-details-summary-status",children:s.status})]}),s.rank&&e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Rank"}),e.jsxs("p",{className:"text-slate-900","data-testid":"onboarding-details-summary-rank",children:[s.rank," of ",s.totalApplicantsAtLocation,e.jsxs("span",{className:"text-slate-500",children:[" in ",s.preferredLocation]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Progress"}),e.jsxs("div",{className:"flex items-center gap-2 mt-2",children:[e.jsx(uc,{value:s.progress,className:"flex-1 bg-red-50",indicatorClassName:vi(s.status),"data-testid":"onboarding-details-summary-progress-bar"}),e.jsxs("span",{className:"text-slate-900","data-testid":"onboarding-details-summary-progress-text",children:[s.progress,"%"]})]})]}),s.deadline&&e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Questionnaire Deadline"}),e.jsx("p",{className:"text-slate-900","data-testid":"onboarding-details-summary-deadline",children:Gt(s.deadline)})]})]})]}),(s.isShortlisted!==!1||s.status==="Submitted")&&e.jsxs(Le,{"data-testid":"onboarding-details-actions-card",children:[e.jsx(Qe,{children:e.jsx(et,{children:"Actions"})}),e.jsxs(Fe,{className:"space-y-3",children:[n.isLoaLocked&&e.jsxs(di,{variant:"destructive",className:"mb-4 bg-red-50 border-red-200 text-red-800","data-testid":"onboarding-details-loa-locked-alert",children:[e.jsx(ay,{className:"w-4 h-4 text-re-red"}),e.jsx(Ti,{className:"text-red-900 font-semibold",children:"LOA approval locked"}),e.jsxs(ui,{className:"text-red-800",children:[e.jsx("span",{className:"font-medium",children:"First Fill"})," (later-stage payment) must be verified by Finance before LOA approval can proceed. This is separate from the initial Security Deposit before LOI Issued."]})]}),((ie=r("FIRST_FILL"))==null?void 0:ie.status)==="Verified"&&s.status!=="LOA Pending"&&!["LOA Issued","EOR In Progress","EOR Complete","Inauguration","Approved","Onboarded","Rejected"].includes(s.status)&&e.jsxs(di,{className:"mb-4 border-violet-200 bg-violet-50/90 text-violet-950","data-testid":"onboarding-details-first-fill-verified-alert",children:[e.jsx(_a,{className:"h-4 w-4 text-violet-700"}),e.jsx(Ti,{className:"font-semibold",children:"First Fill verified on file"}),e.jsxs(ui,{className:"text-sm text-violet-900/90 leading-relaxed",children:["Finance has verified the ",e.jsx("span",{className:"font-medium",children:"First Fill"})," payment. The application status was ",e.jsx("span",{className:"font-medium",children:"not"})," changed until you reach"," ",e.jsx("span",{className:"font-medium",children:"LOA Pending"}),". When you get there, LOA approval will not be blocked by payment (same pattern as recording the initial Security Deposit before the LOI security step)."]})]}),n.isSecurityDetailsLocked&&e.jsxs(di,{variant:"destructive",className:"mb-4 bg-red-50 border-red-200 text-red-800","data-testid":"onboarding-details-security-locked-alert",children:[e.jsx(ay,{className:"w-4 h-4 text-re-red"}),e.jsx(Ti,{className:"text-red-900 font-semibold",children:"Security Deposit approval locked"}),e.jsxs(ui,{className:"text-red-800",children:["Finance must verify the ",e.jsx("span",{className:"font-medium",children:"Security Deposit"})," before this stage can be approved. You can still use ",e.jsx("span",{className:"font-medium",children:"Reject"})," if needed."]})]}),["Security Deposit","Security Details","Payment Pending"].includes(s.status)&&e.jsxs(di,{className:"mb-4 border-sky-200 bg-sky-50/90 text-sky-900","data-testid":"onboarding-details-security-review-alert",children:[e.jsx(_a,{className:"h-4 w-4 text-sky-700"}),e.jsx(Ti,{className:"text-sky-950 font-semibold",children:"Security Deposit review"}),e.jsxs(ui,{className:"text-sm text-sky-900/90 leading-relaxed",children:["Check the initial Security Deposit on the ",e.jsx("span",{className:"font-medium",children:"Payments"})," tab (Finance may have already marked it verified). When satisfied, use ",e.jsx("span",{className:"font-medium",children:"Approve"})," ","to move to ",e.jsx("span",{className:"font-medium",children:"LOI Issued"}),"."]})]}),a&&l&&e.jsxs(di,{variant:"destructive",className:"mb-4 bg-red-50 border-red-200 text-red-800","data-testid":"onboarding-details-non-responsive-alert",children:[e.jsx(an,{className:"w-4 h-4 text-red-600"}),e.jsx(Ti,{className:"text-red-900 font-black uppercase tracking-tighter",children:"⚠️ Non-Responsive Flag"}),e.jsx(ui,{className:"text-red-800 text-xs font-bold leading-tight",children:"FDD Audit has flagged this applicant. Review audit logs before approval."})]}),l&&(s.status==="Level 3 Approved"||s.status==="FDD Verification")&&(!s.fddAssignments||s.fddAssignments.length===0)&&e.jsxs(di,{className:"mb-4 bg-red-50 border-red-200 text-red-800","data-testid":"onboarding-details-fdd-assignment-alert",children:[e.jsx(an,{className:"w-4 h-4 text-re-red"}),e.jsx(Ti,{className:"text-red-900 font-bold",children:"FDD Assignment Required"}),e.jsx(ui,{className:"text-red-800 font-medium",children:"This application is pending financial due diligence. Please assign an FDD Agency to proceed with the audit."})]}),n.canApprove&&e.jsxs(se,{className:"w-full bg-green-600 hover:bg-green-700 font-bold",onClick:m,"data-testid":"onboarding-details-approve-button",children:[e.jsx(fn,{className:"w-4 h-4 mr-2"}),["Inauguration","Approved"].includes(s.status)?"Onboard Dealer":"Approve"]}),n.canReject&&e.jsxs(se,{variant:"destructive",className:"w-full font-bold",onClick:f,"data-testid":"onboarding-details-reject-button",children:[e.jsx(mi,{className:"w-4 h-4 mr-2"}),"Reject"]}),n.showDecisionMessage&&e.jsxs("div",{className:`w-full p-2 text-center rounded border ${(o==null?void 0:o.decision)==="Approved"||(d==null?void 0:d.decision)==="Approved"||(d==null?void 0:d.recommendation)==="Approved"||(d==null?void 0:d.decision)==="Selected"?"bg-green-50 border-green-200 text-green-700":"bg-red-50 border-red-200 text-red-700"}`,"data-testid":"onboarding-details-decision-message",children:["You have ",(o==null?void 0:o.decision)==="Approved"||(d==null?void 0:d.decision)==="Approved"||(d==null?void 0:d.recommendation)==="Approved"||(d==null?void 0:d.decision)==="Selected"?"Approved":"Rejected"]}),e.jsx(tc,{}),e.jsxs(se,{variant:"outline",className:"w-full",onClick:x,"data-testid":"onboarding-details-worknote-button",children:[e.jsx(Ga,{className:"w-4 h-4 mr-2"}),"Work Note"]}),n.canSchedule&&e.jsxs(se,{variant:"outline",className:"w-full",onClick:h,"data-testid":"onboarding-details-schedule-button",children:[e.jsx(dr,{className:"w-4 h-4 mr-2"}),"Schedule Interview"]}),J&&e.jsxs(se,{variant:"outline",className:"w-full border-amber-300 hover:bg-amber-50 text-amber-700",onClick:()=>H(!0),"data-testid":"onboarding-details-request-documents",children:[e.jsx(Ns,{className:"w-4 h-4 mr-2"}),"Request Documents"]}),p&&["DD Admin","Super Admin"].includes(p.role)&&["Dealer Code Generation","LOA Pending","Architecture Team Assigned","Architecture Document Upload","Architecture Team Completion"].includes(s.status)&&e.jsxs(e.Fragment,{children:[!s.dealerCode&&e.jsxs(se,{className:"w-full bg-re-red hover:bg-re-red-hover",onClick:u,"data-testid":"onboarding-details-generate-dealer-codes",children:[e.jsx(E1,{className:"w-4 h-4 mr-2"}),"Generate Dealer Codes"]}),s.dealerCode&&!s.architectureAssignedTo&&e.jsxs(se,{variant:"outline",className:"w-full border-red-200 hover:bg-red-50 text-re-red",onClick:w,"data-testid":"onboarding-details-assign-architecture",children:[e.jsx(ry,{className:"w-4 h-4 mr-2"}),"Assign Architecture Team"]})]}),l&&["Level 3 Approved","Level 3 Recommended","FDD Verification","FDD In Progress"].includes(s.status)&&(!s.fddAssignments||s.fddAssignments.length===0)&&e.jsxs(ls,{open:N,onOpenChange:j,children:[e.jsxs(se,{variant:"outline",className:"w-full border-purple-200 hover:bg-purple-50 text-purple-700",onClick:v,"data-testid":"onboarding-details-assign-fdd",children:[e.jsx(ok,{className:"w-4 h-4 mr-2"}),"Assign FDD"]}),e.jsxs(as,{"data-testid":"onboarding-details-assign-fdd-modal",children:[e.jsxs(fs,{children:[e.jsx(us,{children:"Assign FDD Agency"}),e.jsx(bs,{children:"Select an FDD partner agency to perform the financial due diligence audit for this application."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(de,{children:"FDD Agency"}),e.jsxs(At,{value:C,onValueChange:S,children:[e.jsx(Dt,{className:"mt-2","data-testid":"onboarding-details-assign-fdd-select",children:e.jsx(kt,{placeholder:y!=null&&y.length?"Choose partner agency...":"No agencies available"})}),e.jsx(Rt,{children:(y||[]).map(ae=>e.jsxs(Me,{value:ae.id,children:[ae.fullName||ae.name," (",ae.email,")"]},ae.id))})]})]}),e.jsx(se,{className:"w-full bg-re-red hover:bg-re-red-hover font-bold h-11",onClick:R,disabled:D||!C,"data-testid":"onboarding-details-assign-fdd-submit",children:D?"Assigning...":"Assign Agency"})]})]})]}),A&&!L&&e.jsxs(Nb,{children:[e.jsx(wb,{asChild:!0,children:e.jsxs(se,{variant:"outline",className:"w-full","data-testid":"onboarding-details-feedback-dropdown-trigger",children:[e.jsx(nM,{className:"w-4 h-4 mr-2"}),"Interview Feedback",e.jsx(Aa,{className:"w-4 h-4 ml-auto"})]})}),e.jsx(Sb,{className:"w-56","data-testid":"onboarding-details-feedback-dropdown-content",children:e.jsxs(FD,{"data-testid":`onboarding-details-feedback-item-${A.id}`,onClick:()=>{$(A),A.level===1?P(!0):A.level===2?E(!0):O(!0)},children:["Level ",A.level," - ",A.interviewType]},A.id)})]}),s.status==="Questionnaire Pending"&&e.jsxs(e.Fragment,{children:[e.jsxs(se,{variant:"outline",className:"w-full","data-testid":"onboarding-details-send-reminder",children:[e.jsx(Dr,{className:"w-4 h-4 mr-2"}),"Send Reminder"]}),e.jsxs(se,{variant:"outline",className:"w-full","data-testid":"onboarding-details-extend-deadline",children:[e.jsx(yn,{className:"w-4 h-4 mr-2"}),"Extend Deadline"]})]}),s.dealer&&e.jsxs("div",{className:"p-4 bg-green-50 border border-green-200 rounded-lg space-y-3","data-testid":"onboarding-details-dealer-active-banner",children:[e.jsxs("div",{className:"flex items-center gap-2 text-green-800 font-semibold",children:[e.jsx(fn,{className:"w-5 h-5 text-green-600"}),"Dealer Profile Active"]}),e.jsx("div",{className:"text-sm text-green-700",children:"This application has been successfully onboarded as a dealer. A user account has been created for the dealer."}),s.dealerCode&&e.jsxs("div",{className:"flex items-center justify-between text-xs font-mono bg-white p-2 rounded border border-green-100","data-testid":"onboarding-details-active-dealer-code",children:[e.jsx("span",{className:"text-slate-500",children:"Dealer Code:"}),e.jsx("span",{className:"font-bold text-slate-900",children:s.dealerCode.code})]}),e.jsxs(se,{className:"w-full bg-green-600 hover:bg-green-700 text-white",onClick:I,"data-testid":"onboarding-details-goto-dashboard",children:[e.jsx(E1,{className:"w-4 h-4 mr-2"}),"Go to Dealer Dashboard"]})]}),p&&["DD Admin","Super Admin"].includes(p.role)&&e.jsxs(ls,{open:q,onOpenChange:G,children:[e.jsx(co,{asChild:!0,children:e.jsxs(se,{variant:"outline",className:"w-full","data-testid":"onboarding-details-assign-user-trigger",children:[e.jsx(Ir,{className:"w-4 h-4 mr-2"}),"Assign User"]})}),e.jsxs(as,{"data-testid":"onboarding-details-assign-user-modal",children:[e.jsxs(fs,{children:[e.jsx(us,{children:"Assign User to Application"}),e.jsx(bs,{children:"Select a user and their role for this application."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(de,{children:"Select User"}),e.jsxs(At,{value:Y,onValueChange:V,children:[e.jsx(Dt,{className:"mt-2","data-testid":"onboarding-details-assign-user-select",children:e.jsx(kt,{placeholder:"Search users..."})}),e.jsx(Rt,{children:Q.map(ae=>e.jsxs(Me,{value:ae.id,children:[ae.fullName," (",ae.email,")"]},ae.id))})]})]}),e.jsxs("div",{children:[e.jsx(de,{children:"Assignment Role"}),e.jsxs(At,{value:_,onValueChange:z,children:[e.jsx(Dt,{className:"mt-2","data-testid":"onboarding-details-assign-role-select",children:e.jsx(kt,{placeholder:"Select role"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"owner",children:"Owner"}),e.jsx(Me,{value:"contributor",children:"Contributor"}),e.jsx(Me,{value:"reviewer",children:"Reviewer"})]})]})]}),e.jsx(se,{className:"w-full bg-re-red hover:bg-re-red-hover font-bold h-11",onClick:T,disabled:F,"data-testid":"onboarding-details-assign-user-submit",children:F?"Assigning...":"Assign User"})]})]})]})]})]}),e.jsx(VU,{open:W,onClose:()=>H(!1),applicationId:(s==null?void 0:s.id)||"",applicantName:(s==null?void 0:s.name)||(s==null?void 0:s.applicantName)||"the prospect",documentConfigs:K,uploadedDocuments:B})]})}function KU(t){const{application:s,fetchApplication:n,showApproveModal:r,setShowApproveModal:a,approvalRemark:l,setApprovalRemark:o,setApprovalFile:d,isApproving:m,handleApprove:f,showOnboardModal:x,setShowOnboardModal:h,isOnboarding:p,setIsOnboarding:u,showRejectModal:w,setShowRejectModal:v,rejectionReason:N,setRejectionReason:j,isRejecting:y,handleReject:C,showScheduleModal:S,setShowScheduleModal:D,showCancelInterviewModal:R,setShowCancelInterviewModal:A,setInterviewIdToCancel:L,isCancellingInterview:$,handleConfirmCancelInterview:P,interviewToReschedule:E,setInterviewToReschedule:O,interviewType:I,setInterviewType:q,interviewMode:G,setInterviewMode:Y,interviewDate:V,setInterviewDate:Q,meetingLink:_,setMeetingLink:z,location:T,setLocation:F,isInterviewCompleted:B,isInterviewActive:K,users:W,selectedInterviewerId:H,setSelectedInterviewerId:X,handleAddInterviewer:J,scheduledInterviewParticipants:ie,handleRemoveInterviewer:ae,isScheduling:xe,handleScheduleInterview:ce,showAssignArchitectureModal:we,setShowAssignArchitectureModal:ke,architectureLeadId:Xe,setArchitectureLeadId:Ot,isAssigningArchitecture:bt,handleAssignArchitecture:te,showArchitectureStatusModal:ve,setShowArchitectureStatusModal:qe,architectureStatus:ge,setArchitectureStatus:Be,architectureRemarks:ut,setArchitectureRemarks:ht,isUpdatingArchitecture:it,handleUpdateArchitectureStatus:Tt}=t,It=he=>{var vt,mt;return(he==null?void 0:he.__stageRole)||((vt=he==null?void 0:he.role)==null?void 0:vt.roleName)||((mt=he==null?void 0:he.role)==null?void 0:mt.roleCode)||(he==null?void 0:he.roleCode)||(he==null?void 0:he.role)||"Panelist"};return e.jsxs(e.Fragment,{children:[e.jsx(ls,{open:r,onOpenChange:a,children:e.jsxs(as,{"data-testid":"onboarding-approve-modal",children:[e.jsxs(fs,{children:[e.jsx(us,{children:"Approve Application"}),e.jsx(bs,{children:"Provide approval remarks and optionally attach supporting documents."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs(de,{children:["Remark ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx(Gs,{placeholder:"Enter approval remarks...",value:l,onChange:he=>o(he.target.value),className:"mt-2",rows:4,"data-testid":"onboarding-approve-remark-textarea"})]}),e.jsxs("div",{children:[e.jsx(de,{children:"Attach File (Optional)"}),e.jsx(at,{type:"file",className:"mt-2",onChange:he=>d(he.target.files?he.target.files[0]:null),"data-testid":"onboarding-approve-file-input"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(se,{variant:"outline",className:"flex-1",onClick:()=>a(!1),disabled:m,"data-testid":"onboarding-approve-cancel-button",children:"Cancel"}),e.jsx(se,{className:"flex-1 bg-green-600 hover:bg-green-700",onClick:f,disabled:m,"data-testid":"onboarding-approve-submit-button",children:m?e.jsxs(e.Fragment,{children:[e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}),"Approving..."]}):"Submit Approval"})]})]})]})}),e.jsx(ls,{open:x,onOpenChange:h,children:e.jsxs(as,{className:"max-w-md","data-testid":"onboarding-onboard-modal",children:[e.jsxs(fs,{children:[e.jsx("div",{className:"mx-auto w-12 h-12 bg-green-100 rounded-full flex items-center justify-center mb-4",children:e.jsx(fn,{className:"w-8 h-8 text-green-600"})}),e.jsx(us,{className:"text-center text-xl font-bold",children:"Finalize Onboarding"}),e.jsxs(bs,{className:"text-center pt-2",children:["You are about to officially onboard ",e.jsx("span",{className:"font-semibold text-slate-900",children:s.name})," as a Royal Enfield dealer."]})]}),e.jsxs("div",{className:"bg-slate-50 p-4 rounded-lg border border-slate-200 mt-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"mt-1 bg-green-500 rounded-full p-0.5",children:e.jsx(Wn,{className:"w-3 h-3 text-white"})}),e.jsx("p",{className:"text-sm text-slate-600",children:"Official dealer profile will be created."})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"mt-1 bg-green-500 rounded-full p-0.5",children:e.jsx(Wn,{className:"w-3 h-3 text-white"})}),e.jsxs("p",{className:"text-sm text-slate-600",children:["User account will be activated with role ",e.jsx("span",{className:"font-medium text-slate-900",children:"Dealer"}),"."]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"mt-1 bg-green-500 rounded-full p-0.5",children:e.jsx(Wn,{className:"w-3 h-3 text-white"})}),e.jsx("p",{className:"text-sm text-slate-600",children:"Primary outlet will be registered in the system."})]})]}),e.jsxs("div",{className:"mt-6 flex flex-col gap-3",children:[e.jsx(se,{className:"w-full bg-green-600 hover:bg-green-700 h-11 text-lg font-semibold shadow-lg shadow-green-100","data-testid":"onboarding-onboard-confirm-button",onClick:async()=>{u(!0);try{await ds.createDealer({applicationId:s.id}),ee.success("Dealer profile and login account created successfully!"),h(!1),n()}catch{ee.error("Failed to create dealer profile")}finally{u(!1)}},disabled:p,children:p?e.jsxs(e.Fragment,{children:[e.jsx(es,{className:"w-5 h-5 mr-2 animate-spin"}),"Processing Onboarding..."]}):"Confirm & Onboard Dealer"}),e.jsx(se,{variant:"ghost",className:"w-full text-slate-500 hover:text-slate-700",onClick:()=>h(!1),disabled:p,"data-testid":"onboarding-onboard-cancel-button",children:"Cancel"})]})]})}),e.jsx(ls,{open:w,onOpenChange:v,children:e.jsxs(as,{"data-testid":"onboarding-reject-modal",children:[e.jsxs(fs,{children:[e.jsx(us,{children:"Reject Application"}),e.jsx(bs,{children:"Please provide a clear reason for rejecting this application."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs(de,{children:["Reason for Rejection ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx(Gs,{placeholder:"Enter rejection reason...",value:N,onChange:he=>j(he.target.value),className:"mt-2",rows:4,"data-testid":"onboarding-reject-remark-textarea"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(se,{variant:"outline",className:"flex-1",onClick:()=>v(!1),disabled:y,"data-testid":"onboarding-reject-cancel-button",children:"Cancel"}),e.jsx(se,{variant:"destructive",className:"flex-1",onClick:C,disabled:y,"data-testid":"onboarding-reject-submit-button",children:y?e.jsxs(e.Fragment,{children:[e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}),"Rejecting..."]}):"Confirm Rejection"})]})]})]})}),e.jsx(ls,{open:S,onOpenChange:he=>{D(he),he||O(null)},children:e.jsxs(as,{"data-testid":"onboarding-schedule-modal",children:[e.jsxs(fs,{children:[e.jsx(us,{children:E?"Reschedule Interview":"Schedule Interview"}),e.jsx(bs,{children:"Set up an interview session with the applicant and relevant team members."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(de,{children:"Interview Type"}),e.jsxs(At,{value:I,onValueChange:q,children:[e.jsx(Dt,{className:"mt-2","data-testid":"onboarding-schedule-type-select",children:e.jsx(kt,{placeholder:"Select interview type"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"level1",disabled:B(1)||K(1),children:e.jsxs("div",{className:"flex items-center justify-between w-full",children:[e.jsx("span",{children:"Level 1"}),B(1)&&e.jsx(fn,{className:"w-4 h-4 text-green-500 ml-2 inline"}),K(1)&&e.jsx(yn,{className:"w-4 h-4 text-re-red ml-2 inline"})]})}),e.jsx(Me,{value:"level2",disabled:!B(1)||B(2)||K(2),children:e.jsxs("div",{className:"flex items-center justify-between w-full",children:[e.jsx("span",{children:"Level 2"}),!B(1)&&e.jsx("span",{className:"text-[10px] text-slate-400 ml-2",children:"(Prerequisite: L1)"}),B(2)&&e.jsx(fn,{className:"w-4 h-4 text-green-500 ml-2 inline"}),K(2)&&e.jsx(yn,{className:"w-4 h-4 text-re-red ml-2 inline"})]})}),e.jsx(Me,{value:"level3",disabled:!B(2)||B(3)||K(3),children:e.jsxs("div",{className:"flex items-center justify-between w-full",children:[e.jsx("span",{children:"Level 3"}),!B(2)&&e.jsx("span",{className:"text-[10px] text-slate-400 ml-2",children:"(Prerequisite: L2)"}),B(3)&&e.jsx(fn,{className:"w-4 h-4 text-green-500 ml-2 inline"}),K(3)&&e.jsx(yn,{className:"w-4 h-4 text-re-red ml-2 inline"})]})})]})]})]}),e.jsxs("div",{children:[e.jsxs(de,{children:["Interview Mode ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsxs(At,{value:G,onValueChange:Y,children:[e.jsx(Dt,{className:"mt-2","data-testid":"onboarding-schedule-mode-select",children:e.jsx(kt,{placeholder:"Select interview mode"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"virtual",children:"Virtual"}),e.jsx(Me,{value:"physical",children:"Physical"})]})]})]}),e.jsxs("div",{children:[e.jsxs(de,{children:["Date & Time ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx(at,{type:"datetime-local",className:"mt-2",value:V,onChange:he=>Q(he.target.value),"data-testid":"onboarding-schedule-date-input"})]}),G==="virtual"&&e.jsxs("div",{children:[e.jsx(de,{children:"Meeting Link"}),e.jsx(at,{placeholder:"https://meet.google.com/...",className:"mt-2",value:_,onChange:he=>z(he.target.value),"data-testid":"onboarding-schedule-link-input"})]}),G==="physical"&&e.jsxs("div",{children:[e.jsx(de,{children:"Location"}),e.jsx(at,{placeholder:"Enter interview location address",className:"mt-2",value:T,onChange:he=>F(he.target.value),"data-testid":"onboarding-schedule-location-input"})]}),e.jsxs("div",{children:[e.jsxs(de,{children:["Interviewers ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsxs("div",{className:"flex gap-2 mt-2",children:[e.jsxs(At,{value:H,onValueChange:X,children:[e.jsx(Dt,{className:"flex-1","data-testid":"onboarding-schedule-interviewer-select",children:e.jsx(kt,{placeholder:"Select interviewer"})}),e.jsx(Rt,{children:W.map(he=>{var vt;return e.jsxs(Me,{value:he.id,children:[he.fullName||he.name," (",((vt=he.role)==null?void 0:vt.roleName)||he.roleCode,")"]},he.id)})})]}),e.jsx(se,{onClick:J,type:"button",variant:"secondary","data-testid":"onboarding-schedule-add-interviewer-button",children:"Add"})]}),ie.length>0&&e.jsxs("div",{className:"mt-3 space-y-2",children:[e.jsx(de,{className:"text-xs text-muted-foreground",children:"Selected Interviewers:"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:ie.map(he=>e.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-2 py-1 rounded text-sm","data-testid":`onboarding-schedule-participant-${he.id}`,children:[e.jsx("span",{children:he.fullName||he.name||"Unknown"}),e.jsxs("span",{className:"text-[11px] text-muted-foreground",children:["(",It(he),")"]}),e.jsx("button",{onClick:()=>ae(he.id),className:"text-muted-foreground hover:text-destructive","data-testid":`onboarding-schedule-remove-participant-${he.id}`,children:"×"})]},he.id))})]})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(se,{variant:"outline",className:"flex-1",onClick:()=>{D(!1),O(null)},disabled:xe,"data-testid":"onboarding-schedule-cancel-button",children:"Cancel"}),e.jsx(se,{className:"flex-1 bg-primary-600 hover:bg-primary-700",onClick:ce,disabled:xe,"data-testid":"onboarding-schedule-submit-button",children:xe?E?"Rescheduling...":"Scheduling...":E?"Reschedule":"Schedule"})]})]})]})}),e.jsx(ls,{open:R,onOpenChange:he=>{A(he),he||L("")},children:e.jsxs(as,{"data-testid":"onboarding-cancel-interview-modal",children:[e.jsxs(fs,{children:[e.jsx(us,{children:"Cancel Interview"}),e.jsx(bs,{children:"Are you sure you want to cancel this interview?"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(se,{variant:"outline",className:"flex-1",onClick:()=>{A(!1),L("")},disabled:$,"data-testid":"onboarding-cancel-interview-close",children:"No"}),e.jsx(se,{variant:"destructive",className:"flex-1",onClick:P,disabled:$,"data-testid":"onboarding-cancel-interview-confirm",children:$?"Cancelling...":"Yes, Cancel"})]})]})}),e.jsx(ls,{open:we,onOpenChange:ke,children:e.jsxs(as,{"data-testid":"onboarding-architecture-assign-modal",children:[e.jsxs(fs,{children:[e.jsx(us,{children:"Assign Architecture Team"}),e.jsx(bs,{children:"Select an architecture team lead for site planning and blueprints."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs(de,{children:["Select Architecture Lead ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsxs(At,{value:Xe,onValueChange:Ot,children:[e.jsx(Dt,{className:"mt-2","data-testid":"onboarding-architecture-lead-select",children:e.jsx(kt,{placeholder:"Search users..."})}),e.jsxs(Rt,{children:[W.filter(he=>{var vt;return he.roleCode==="ARCHITECTURE"||((vt=he.role)==null?void 0:vt.roleCode)==="ARCHITECTURE"||he.role==="Architecture"||he.role==="Architecture Team"}).map(he=>e.jsxs(Me,{value:he.id,children:[he.fullName," (",he.email,")"]},he.id)),W.filter(he=>{var vt;return he.roleCode==="ARCHITECTURE"||((vt=he.role)==null?void 0:vt.roleCode)==="ARCHITECTURE"||he.role==="Architecture"||he.role==="Architecture Team"}).length===0&&W.map(he=>e.jsxs(Me,{value:he.id,children:[he.fullName," (",he.roleCode||he.role,")"]},he.id))]})]})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(se,{variant:"outline",className:"flex-1",onClick:()=>ke(!1),disabled:bt,"data-testid":"onboarding-architecture-assign-cancel",children:"Cancel"}),e.jsx(se,{className:"flex-1 bg-blue-600 hover:bg-blue-700",onClick:te,disabled:bt,"data-testid":"onboarding-architecture-assign-submit",children:bt?"Assigning...":"Assign Team"})]})]})]})}),e.jsx(ls,{open:ve,onOpenChange:qe,children:e.jsxs(as,{"data-testid":"onboarding-architecture-status-modal",children:[e.jsxs(fs,{children:[e.jsx(us,{children:"Update Architecture Status"}),e.jsx(bs,{children:"Mark the architectural work as completed and optionally add remarks."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs(de,{children:["Status ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsxs(At,{value:ge,onValueChange:Be,children:[e.jsx(Dt,{className:"mt-2","data-testid":"onboarding-architecture-status-select",children:e.jsx(kt,{placeholder:"Select status"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"COMPLETED",children:"Completed"}),e.jsx(Me,{value:"REJECTED",children:"Rejected / Needs Revision"})]})]})]}),e.jsxs("div",{children:[e.jsx(de,{children:"Remarks (Optional)"}),e.jsx(Gs,{placeholder:"Enter any planning or site-visit remarks...",value:ut,onChange:he=>ht(he.target.value),className:"mt-2",rows:4,"data-testid":"onboarding-architecture-remarks-textarea"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(se,{variant:"outline",className:"flex-1",onClick:()=>qe(!1),disabled:it,"data-testid":"onboarding-architecture-status-cancel",children:"Cancel"}),e.jsx(se,{className:"flex-1 bg-blue-600 hover:bg-blue-700",onClick:Tt,disabled:it,"data-testid":"onboarding-architecture-status-submit",children:it?"Updating...":"Update Status"})]})]})]})})]})}function YU(t){var Xs,Js,Ws,Z,oe,Ne,Oe,De;const{application:s,ktCriteria:n,l2Fields:r,l3Fields:a,showKTMatrixModal:l,setShowKTMatrixModal:o,ktMatrixSelectedValues:d,handleKTMatrixChange:m,ktMatrixRemarks:f,setKtMatrixRemarks:x,ktMatrixRecommendation:h,setKtMatrixRecommendation:p,calculateKTScore:u,handleSubmitKTMatrix:w,isSubmittingKT:v,showLevel2FeedbackModal:N,setShowLevel2FeedbackModal:j,level2Feedback:y,handleLevel2Change:C,level2Recommendation:S,setLevel2Recommendation:D,handleSubmitLevel2Feedback:R,isSubmittingLevel2:A,showFeedbackDetailsModal:L,setShowFeedbackDetailsModal:$,selectedEvaluationForView:P,selectedInterviewForFeedback:E,showLevel3FeedbackModal:O,setShowLevel3FeedbackModal:I,level3Feedback:q,handleLevel3Change:G,level3Recommendation:Y,setLevel3Recommendation:V,handleSubmitLevel3Feedback:Q,isSubmittingLevel3:_,showDocumentsModal:z,setShowDocumentsModal:T,showUploadForm:F,setShowUploadForm:B,selectedStage:K,getDocumentsForStage:W,setPreviewDoc:H,setShowPreviewModal:X,uploadDocType:J,setUploadDocType:ie,setUploadFile:ae,isUploading:xe,handleUpload:ce,uploadFile:we,showPreviewModal:ke,previewDoc:Xe,showFddFinalizeModal:Ot,setShowFddFinalizeModal:bt,currentUser:te,fddAuditRecommendation:ve,setFddAuditRecommendation:qe,fddAuditFindings:ge,setFddAuditFindings:Be,isFinalizingFdd:ut,setIsFinalizingFdd:ht,fetchApplication:it,showFddFlagModal:Tt,setShowFddFlagModal:It,isFddFlagging:he,setIsFddFlagging:vt,showFirmTypeModal:mt,setShowFirmTypeModal:_e,tempFirmType:Vt,setTempFirmType:Et,updatingFirmType:Ds,handleUpdateFirmType:ln}=t,Bs=E!=null&&E.scheduleDate?new Date(E.scheduleDate).toISOString().split("T")[0]:"",Ys=(te==null?void 0:te.fullName)||(te==null?void 0:te.name)||"";return e.jsxs(e.Fragment,{children:[e.jsx(ls,{open:l,onOpenChange:o,children:e.jsxs(as,{className:"flex min-h-0 max-h-[90vh] w-[calc(100%-2rem)] max-w-lg flex-col gap-0 overflow-hidden p-0 sm:max-w-lg","data-testid":"onboarding-kt-matrix-modal",children:[e.jsxs(fs,{className:"shrink-0 space-y-2 border-b px-5 py-4 text-left",children:[e.jsx(us,{className:"text-base",children:"KT matrix"}),e.jsxs(bs,{className:"text-sm leading-relaxed",children:["Level 1 interview · ",s.name,e.jsxs("span",{className:"mt-1 block text-xs text-muted-foreground",children:[Object.keys(d).length," of ",n.length," criteria answered"]})]})]}),e.jsx("div",{className:"custom-scrollbar-slim min-h-0 flex-1 overflow-y-auto px-5 py-5",children:e.jsxs("div",{className:"space-y-6",children:[n.length===0&&e.jsx("div",{className:"rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-800",children:"KT Matrix configuration is not available. Configure it in Master > Interview Configurations."}),n.map((ye,Ve)=>e.jsxs("div",{className:"space-y-2",children:[e.jsxs(de,{htmlFor:`kt-matrix-${Ve}`,className:"block text-sm font-medium leading-relaxed text-foreground",children:[e.jsxs("span",{className:"text-muted-foreground",children:[Ve+1,"."]})," ",ye.name," ",e.jsx("span",{className:"text-red-500",children:"*"})," ",e.jsxs("span",{className:"font-normal text-muted-foreground",children:["(",ye.weight,"%)"]})]}),e.jsxs(At,{value:d[ye.name]??void 0,onValueChange:Ge=>{const st=ye.options.find(Kt=>Kt.value===Ge);st&&m(ye.name,st.value,st.score)},children:[e.jsx(Dt,{id:`kt-matrix-${Ve}`,className:"h-10 w-full text-left text-sm font-normal","data-testid":`onboarding-kt-matrix-select-${Ve}`,children:e.jsx(kt,{placeholder:"Choose an option…"})}),e.jsx(Rt,{position:"popper",className:"max-h-72 w-[var(--radix-select-trigger-width)]",children:ye.options.map(Ge=>e.jsxs(Me,{value:Ge.value,className:"py-2.5 text-sm leading-snug","data-testid":`onboarding-kt-matrix-option-${Ve}-${Ge.value}`,children:[Ge.label," ",e.jsxs("span",{className:"text-muted-foreground",children:["(",Ge.score,")"]})]},Ge.value))})]})]},ye.name)),e.jsxs("div",{className:"space-y-2 border-t border-border pt-6",children:[e.jsxs(de,{htmlFor:"kt-matrix-remarks",className:"text-sm font-medium",children:["Remarks ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx(Gs,{id:"kt-matrix-remarks",placeholder:"Enter remarks...",className:"min-h-[96px] resize-y text-sm leading-relaxed",value:f,onChange:ye=>x(ye.target.value),"data-testid":"onboarding-kt-matrix-remarks-textarea"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(de,{className:"text-sm font-medium",children:["Recommendation ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsxs(At,{value:h,onValueChange:p,children:[e.jsx(Dt,{"data-testid":"onboarding-kt-matrix-recommendation-select",children:e.jsx(kt,{placeholder:"Select recommendation"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"Approve",children:"Approve"}),e.jsx(Me,{value:"Reject",children:"Reject"}),e.jsx(Me,{value:"Hold",children:"Hold"})]})]})]})]})}),e.jsxs("div",{className:"flex shrink-0 flex-col gap-4 border-t px-5 py-4 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Weighted total ",e.jsx("span",{className:"font-semibold tabular-nums text-foreground","data-testid":"onboarding-kt-matrix-total-score",children:u()}),e.jsx("span",{className:"text-muted-foreground",children:" / 100"})]}),e.jsxs("div",{className:"flex gap-2 sm:shrink-0",children:[e.jsx(se,{variant:"outline",onClick:()=>o(!1),"data-testid":"onboarding-kt-matrix-cancel",children:"Cancel"}),e.jsx(se,{onClick:w,disabled:v||n.length===0||Object.keys(d).lengthC("overallScore",ye),children:[e.jsx(Dt,{className:"mt-2","data-testid":"onboarding-level2-overall-score-select",children:e.jsx(kt,{placeholder:"Select score"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"10",children:"Outstanding (9-10)"}),e.jsx(Me,{value:"8",children:"Excellent (7-8)"}),e.jsx(Me,{value:"6",children:"Good (5-6)"}),e.jsx(Me,{value:"4",children:"Average (3-4)"}),e.jsx(Me,{value:"2",children:"Below Average (1-2)"})]})]})]}),e.jsx(tc,{}),r.length===0&&e.jsx("div",{className:"rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-800",children:"Level 2 feedback configuration is not available. Configure it in Master > Interview Configurations."}),(r||[]).map((ye,Ve)=>e.jsxs("div",{children:[e.jsxs(de,{children:[ye.label,ye.isRequired&&e.jsx("span",{className:"text-red-500",children:"*"})]}),ye.type==="select"?e.jsxs(At,{value:y[ye.itemKey]||"",onValueChange:Ge=>C(ye.itemKey,Ge),children:[e.jsx(Dt,{className:"mt-2",children:e.jsx(kt,{placeholder:`Select ${ye.label}...`})}),e.jsx(Rt,{children:(ye.options||[]).map((Ge,st)=>e.jsx(Me,{value:Ge.optionValue||Ge.value,children:Ge.optionLabel||Ge.label},st))})]}):ye.type==="number"?e.jsx(at,{type:"number",className:"mt-2",value:y[ye.itemKey]||"",onChange:Ge=>C(ye.itemKey,Ge.target.value)}):e.jsx(Gs,{placeholder:`Enter ${ye.label.toLowerCase()}...`,className:"mt-2",rows:3,value:y[ye.itemKey]||"",onChange:Ge=>C(ye.itemKey,Ge.target.value)})]},ye.itemKey||Ve)),e.jsxs("div",{children:[e.jsxs(de,{children:["Recommendation ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsxs(At,{value:S,onValueChange:D,children:[e.jsx(Dt,{className:"mt-2","data-testid":"onboarding-level2-recommendation-select",children:e.jsx(kt,{placeholder:"Select recommendation"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"Approve",children:"Approve"}),e.jsx(Me,{value:"Reject",children:"Reject"}),e.jsx(Me,{value:"Hold",children:"Hold"})]})]})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(se,{variant:"outline",className:"flex-1",onClick:()=>j(!1),"data-testid":"onboarding-level2-feedback-cancel",children:"Cancel"}),e.jsx(se,{className:"flex-1 bg-black hover:bg-zinc-800 text-white",onClick:R,disabled:A||r.length===0,"data-testid":"onboarding-level2-feedback-submit",children:A?"Submitting...":"Submit Feedback"})]})]})]})}),e.jsx(ls,{open:L,onOpenChange:$,children:e.jsxs(as,{className:"max-w-2xl max-h-[90vh] overflow-y-auto","data-testid":"onboarding-feedback-details-modal",children:[e.jsx(fs,{children:e.jsx(us,{children:"Interview Feedback Details"})}),P&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4 bg-slate-50 p-4 rounded-lg",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-slate-500",children:"Interviewer"}),e.jsx("p",{className:"font-semibold","data-testid":"onboarding-feedback-details-interviewer",children:(Xs=P.evaluator)==null?void 0:Xs.fullName})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-slate-500",children:"Role"}),e.jsx("p",{"data-testid":"onboarding-feedback-details-role",children:((Ws=(Js=P.evaluator)==null?void 0:Js.role)==null?void 0:Ws.roleName)||"N/A"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-slate-500",children:((Z=P.interview)==null?void 0:Z.level)===1?"Score (KT Matrix)":"Overall Score"}),e.jsx("p",{className:"font-bold text-lg","data-testid":"onboarding-feedback-details-score",children:P.ktMatrixScore?`${P.ktMatrixScore}/${((oe=P.interview)==null?void 0:oe.level)===1?"100":"10"}`:"N/A"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-slate-500",children:"Recommendation"}),e.jsx(Ce,{variant:(Ne=P.recommendation)!=null&&Ne.toLowerCase().includes("reject")?"destructive":(Oe=P.recommendation)!=null&&Oe.toLowerCase().includes("hold")?"secondary":"default","data-testid":"onboarding-feedback-details-recommendation",children:P.recommendation||"N/A"})]})]}),e.jsx(tc,{}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-semibold mb-3",children:"Detailed Feedback"}),((De=P.feedbackDetails)==null?void 0:De.length)>0?e.jsx("div",{className:"space-y-4",children:P.feedbackDetails.map((ye,Ve)=>e.jsxs("div",{className:"border-b last:border-0 pb-3 last:pb-0","data-testid":`onboarding-feedback-detail-item-${Ve}`,children:[e.jsx("p",{className:"font-medium text-slate-900",children:ye.feedbackType}),e.jsx("p",{className:"text-slate-700 mt-1 whitespace-pre-wrap text-sm",children:ye.comments})]},Ve))}):e.jsx("p",{className:"text-slate-500 italic",children:"No detailed feedback available."})]})]})]})}),e.jsx(ls,{open:O,onOpenChange:I,children:e.jsxs(as,{className:"max-w-2xl max-h-[90vh] overflow-y-auto","data-testid":"onboarding-level3-feedback-modal",children:[e.jsxs(fs,{children:[e.jsx(us,{children:"Level 3 Interview Feedback"}),e.jsx(bs,{children:"Provide detailed feedback from the Level 3 interview (NBH + DD-Head evaluation)."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs(de,{children:["Interview Date ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx(at,{type:"date",className:"mt-2",value:q.interviewDate||Bs,disabled:!0})]}),e.jsxs("div",{children:[e.jsxs(de,{children:["Interviewer Name ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx(at,{placeholder:"Enter your name",className:"mt-2",value:q.interviewerName||Ys,disabled:!0})]}),e.jsxs("div",{children:[e.jsxs(de,{children:["Overall Performance Score ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsxs(At,{value:q.overallScore,onValueChange:ye=>G("overallScore",ye),children:[e.jsx(Dt,{className:"mt-2","data-testid":"onboarding-level3-overall-score-select",children:e.jsx(kt,{placeholder:"Select score"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"10",children:"Outstanding (9-10)"}),e.jsx(Me,{value:"8",children:"Excellent (7-8)"}),e.jsx(Me,{value:"6",children:"Good (5-6)"}),e.jsx(Me,{value:"4",children:"Average (3-4)"}),e.jsx(Me,{value:"2",children:"Below Average (1-2)"})]})]})]}),e.jsx(tc,{}),a.length===0&&e.jsx("div",{className:"rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-800",children:"Level 3 feedback configuration is not available. Configure it in Master > Interview Configurations."}),(a||[]).map((ye,Ve)=>e.jsxs("div",{children:[e.jsxs(de,{children:[ye.label,ye.isRequired&&e.jsx("span",{className:"text-red-500",children:"*"})]}),ye.type==="select"?e.jsxs(At,{value:q[ye.itemKey]||"",onValueChange:Ge=>G(ye.itemKey,Ge),children:[e.jsx(Dt,{className:"mt-2",children:e.jsx(kt,{placeholder:`Select ${ye.label}...`})}),e.jsx(Rt,{children:(ye.options||[]).map((Ge,st)=>e.jsx(Me,{value:Ge.optionValue||Ge.value,children:Ge.optionLabel||Ge.label},st))})]}):ye.type==="number"?e.jsx(at,{type:"number",className:"mt-2",value:q[ye.itemKey]||"",onChange:Ge=>G(ye.itemKey,Ge.target.value)}):e.jsx(Gs,{placeholder:`Enter ${ye.label.toLowerCase()}...`,className:"mt-2",rows:3,value:q[ye.itemKey]||"",onChange:Ge=>G(ye.itemKey,Ge.target.value)})]},ye.itemKey||Ve)),e.jsxs("div",{children:[e.jsxs(de,{children:["Recommendation ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsxs(At,{value:Y,onValueChange:V,children:[e.jsx(Dt,{className:"mt-2","data-testid":"onboarding-level3-recommendation-select",children:e.jsx(kt,{placeholder:"Select recommendation"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"Approve",children:"Approve"}),e.jsx(Me,{value:"Reject",children:"Reject"}),e.jsx(Me,{value:"Hold",children:"Hold"})]})]})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(se,{variant:"outline",className:"flex-1",onClick:()=>I(!1),"data-testid":"onboarding-level3-feedback-cancel",children:"Cancel"}),e.jsx(se,{className:"flex-1 bg-black hover:bg-zinc-800 text-white",onClick:Q,disabled:_||a.length===0,"data-testid":"onboarding-level3-feedback-submit",children:_?"Submitting...":"Submit Feedback"})]})]})]})}),e.jsx(ls,{open:z,onOpenChange:ye=>{T(ye),ye||B(!1)},children:e.jsxs(as,{className:"max-w-[95vw] sm:max-w-2xl md:max-w-3xl lg:max-w-4xl max-h-[90vh] overflow-hidden flex flex-col p-4 sm:p-6","data-testid":"onboarding-documents-modal",children:[e.jsxs(fs,{className:"pb-4",children:[e.jsxs(us,{className:"text-xl font-bold flex items-center gap-2",children:[e.jsx(Ns,{className:"w-5 h-5 text-re-red"}),"Documents - ",K||"General"]}),e.jsx(bs,{className:"text-slate-500",children:"View and manage documents uploaded for this stage."})]}),F?e.jsxs("div",{className:"space-y-6 py-4","data-testid":"onboarding-documents-upload-form",children:[e.jsx("div",{className:"bg-slate-50/50 p-4 sm:p-6 rounded-2xl border border-slate-200",children:e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(de,{className:"text-slate-700 font-semibold px-1",children:["Document Name ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx(at,{type:"text",placeholder:"Enter document name",value:J,onChange:ye=>ie(ye.target.value),className:"bg-white border-slate-200 h-12 rounded-xl focus:ring-re-red shadow-sm","data-testid":"onboarding-documents-name-input"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(de,{className:"text-slate-700 font-semibold px-1",children:["Select File ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx(at,{type:"file",className:"bg-white border-slate-200 h-12 rounded-xl focus:ring-re-red shadow-sm file:mr-4 file:py-2 file:px-4 file:rounded-full file:border-0 file:text-sm file:font-semibold file:bg-red-50 file:text-re-red-hover hover:file:bg-red-50 cursor-pointer",onChange:ye=>{const Ve=ye.target.files?ye.target.files[0]:null;if(ae(Ve),Ve){const Ge=Ve.name.replace(/\.[^/.]+$/,"");ie(Ge)}},"data-testid":"onboarding-documents-file-input"})]})]})}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 pt-4",children:[e.jsx(se,{className:"flex-1 order-2 sm:order-1 py-3 sm:py-5 rounded-xl border-slate-200 font-semibold text-slate-600 hover:bg-slate-50",variant:"outline",onClick:()=>B(!1),disabled:xe,"data-testid":"onboarding-documents-upload-cancel",children:"Cancel"}),e.jsx(se,{className:"flex-1 order-1 sm:order-2 bg-re-red hover:bg-re-red-hover text-white font-bold py-3 sm:py-5 rounded-xl shadow-lg shadow-re-red/15 transition-all hover:scale-[1.01] active:scale-[0.99]",onClick:async()=>{await ce(),B(!1)},disabled:!we||!J||xe,"data-testid":"onboarding-documents-upload-submit",children:xe?e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 border-2 border-white/30 border-t-white rounded-full animate-spin"}),"Uploading..."]}):e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx(or,{className:"w-5 h-5"}),"Confirm Upload"]})})]})]}):e.jsxs("div",{className:"flex-1 flex flex-col min-h-0 space-y-4",children:[W(K||"").length>0?e.jsx("div",{className:"custom-scrollbar-x-slim flex-1 overflow-auto border rounded-lg border-slate-200","data-testid":"onboarding-documents-table-container",children:e.jsxs(Ps,{className:"w-full table-auto",children:[e.jsx(Os,{className:"bg-slate-50/80 sticky top-0 z-10",children:e.jsxs(lt,{className:"hover:bg-transparent border-b",children:[e.jsx(fe,{className:"w-[45%] min-w-[150px] font-semibold text-slate-900 py-3",children:"Document Name"}),e.jsx(fe,{className:"w-[15%] min-w-[100px] font-semibold text-slate-900 py-3",children:"Type"}),e.jsx(fe,{className:"w-[15%] min-w-[100px] font-semibold text-slate-900 py-3",children:"Upload Date"}),e.jsx(fe,{className:"w-[15%] min-w-[140px] font-semibold text-slate-900 py-3",children:"Uploaded By"}),e.jsx(fe,{className:"text-right w-[10%] min-w-[80px] font-semibold text-slate-900 py-3",children:"Actions"})]})}),e.jsx(Ls,{children:W(K||"").map((ye,Ve)=>{var Ge,st;return e.jsxs(lt,{className:"hover:bg-slate-50/50 transition-colors","data-testid":`onboarding-document-row-${Ve}`,children:[e.jsx(ue,{className:"py-3",children:e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(Ns,{className:"w-4 h-4 text-slate-400 shrink-0"}),e.jsx("span",{className:"truncate font-medium text-slate-700",title:ye.fileName,"data-testid":`onboarding-document-name-${Ve}`,children:ye.fileName})]})}),e.jsx(ue,{className:"py-3",children:e.jsx(Ce,{variant:"outline",className:"capitalize whitespace-nowrap font-normal border-slate-200 bg-white","data-testid":`onboarding-document-type-${Ve}`,children:((Ge=ye.documentType)==null?void 0:Ge.toLowerCase())||"Other"})}),e.jsx(ue,{className:"py-3 whitespace-nowrap text-slate-600",children:Gt(ye.createdAt)}),e.jsx(ue,{className:"py-3 text-slate-600",children:((st=ye.uploader)==null?void 0:st.fullName)||(ye.uploadedBy?"System User":"Applicant")}),e.jsx(ue,{className:"text-right py-3",children:e.jsxs("div",{className:"flex gap-1 justify-end",children:[e.jsx(se,{variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-indigo-600 hover:bg-indigo-50 rounded-full",onClick:()=>{H(ye),X(!0)},"data-testid":`onboarding-document-preview-${Ve}`,children:e.jsx(bn,{className:"w-4 h-4"})}),e.jsx(se,{variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-re-red hover:bg-red-50 rounded-full",onClick:()=>{window.open(`https://dealeronboarding-uat.royalenfield.com/api/${ye.filePath}`,"_blank")},"data-testid":`onboarding-document-download-${Ve}`,children:e.jsx(Ni,{className:"w-4 h-4"})})]})})]},ye.id)})})]})}):e.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center py-12 text-center border rounded-lg bg-slate-50/30","data-testid":"onboarding-documents-empty",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-slate-100 flex items-center justify-center mb-4",children:e.jsx(Ns,{className:"w-8 h-8 text-slate-300"})}),e.jsx("h3",{className:"text-slate-900 font-semibold mb-2",children:"No Documents Found"}),e.jsx("p",{className:"text-slate-600 text-sm max-w-[250px]",children:"No documents have been uploaded for this stage yet."})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 pt-2 mt-auto",children:[e.jsxs(se,{className:"flex-1 bg-re-red hover:bg-re-red-hover text-white font-bold py-3 sm:py-5 rounded-xl shadow-lg shadow-re-red/15 transition-all hover:scale-[1.01] active:scale-[0.99]",onClick:()=>B(!0),"data-testid":"onboarding-documents-upload-button",children:[e.jsx(or,{className:"w-5 h-5 mr-3"}),"Upload Document"]}),e.jsx(se,{variant:"outline",className:"flex-1 sm:flex-none py-3 sm:py-5 px-8 rounded-xl border-slate-200 font-semibold text-slate-600 hover:bg-slate-50",onClick:()=>T(!1),"data-testid":"onboarding-documents-close-button",children:"Close"})]})]})]})}),e.jsx(mo,{isOpen:ke,onClose:()=>X(!1),document:Xe}),e.jsx(ls,{open:Ot,onOpenChange:bt,children:e.jsxs(as,{className:"max-w-md p-0 overflow-hidden border-none shadow-2xl rounded-3xl","data-testid":"onboarding-fdd-finalize-modal",children:[e.jsxs("div",{className:"bg-slate-950 p-8 flex items-center justify-center relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-re-red/20 to-transparent"}),e.jsx("div",{className:"w-20 h-20 bg-re-red/20 rounded-full flex items-center justify-center animate-pulse relative z-10 shadow-[0_0_40px_rgba(218,41,28,0.2)]",children:e.jsx(no,{className:"w-10 h-10 text-re-red"})})]}),e.jsxs("div",{className:"p-8 space-y-6 bg-white",children:[e.jsxs(fs,{children:[e.jsx(us,{className:"text-2xl font-black text-slate-900 text-center tracking-tight",children:"Finalize FDD Audit"}),e.jsxs(bs,{className:"text-slate-500 text-center pt-2 leading-relaxed text-sm font-medium",children:["You are about to submit your final findings. This action will ",e.jsx("span",{className:"font-bold text-slate-900 underline decoration-re-red decoration-2",children:"lock the audit session"})," and trigger the LOI approval workflow."]})]}),e.jsxs("div",{className:"space-y-4",children:[(te==null?void 0:te.role)!=="FDD"&&(te==null?void 0:te.roleCode)!=="FDD"&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs(de,{className:"text-[10px] font-black uppercase tracking-widest text-slate-400",children:["Auditor Recommendation ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("div",{className:"flex gap-2",children:["Recommended","Qualified with Observations","Not Recommended"].map(ye=>e.jsx(se,{variant:ve===ye?"default":"outline",className:jt("flex-1 h-10 font-bold text-[9px] uppercase tracking-wider rounded-xl transition-all",ve===ye&&ye==="Recommended"&&"bg-emerald-600 hover:bg-emerald-700",ve===ye&&ye==="Qualified with Observations"&&"bg-red-500 hover:bg-re-red",ve===ye&&ye==="Not Recommended"&&"bg-red-600 hover:bg-red-700"),onClick:()=>qe(ye),"data-testid":`onboarding-fdd-recommendation-${ye.replace(/\s+/g,"-").toLowerCase()}`,children:ye},ye))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{className:"text-[10px] font-black uppercase tracking-widest text-slate-400",children:"Findings Summary"}),e.jsx(Gs,{placeholder:"Summarize key financial findings or discrepancies...",className:"min-h-[100px] rounded-xl border-slate-200 focus:ring-re-red text-sm",value:ge,onChange:ye=>Be(ye.target.value),"data-testid":"onboarding-fdd-findings-textarea"})]})]}),e.jsxs("div",{className:"bg-red-50 p-4 rounded-2xl flex gap-3 border border-red-100",children:[e.jsx(_a,{className:"w-5 h-5 text-re-red shrink-0 mt-0.5"}),e.jsx("p",{className:"text-[11px] text-red-800 font-medium italic",children:"Ensure the final PDF report is uploaded first. This satisfies the FDD statutory requirement."})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 pt-2",children:[e.jsx(se,{variant:"outline",className:"w-full sm:flex-1 h-12 rounded-2xl font-bold text-slate-600 hover:bg-slate-50 border-slate-200",onClick:()=>bt(!1),disabled:ut,"data-testid":"onboarding-fdd-finalize-cancel",children:"Cancel"}),e.jsx(se,{className:"w-full sm:flex-1 h-12 rounded-2xl font-bold bg-slate-950 hover:bg-slate-900 text-white shadow-lg shadow-slate-200 transition-all active:scale-95 border-b-4 border-re-red",disabled:ut||!ge,"data-testid":"onboarding-fdd-finalize-submit",onClick:async()=>{try{ht(!0),await ds.submitStageDecision({applicationId:s.id,stageCode:"FDD_VERIFICATION",decision:"Approved",remarks:(te==null?void 0:te.role)==="FDD"||(te==null?void 0:te.roleCode)==="FDD"?`Findings: ${ge}`:`[RECOMMENDATION: ${ve}] Findings: ${ge}`,nextStatus:"LOI In Progress",nextProgress:65}),ee.success("FDD Audit finalized and submitted."),bt(!1),it()}catch{ee.error("Submission failed")}finally{ht(!1)}},children:ut?e.jsx(es,{className:"w-5 h-5 animate-spin"}):"Confirm & Submit"})]})]})]})}),e.jsx(ls,{open:Tt,onOpenChange:It,children:e.jsxs(as,{className:"max-w-md p-0 overflow-hidden border-none shadow-2xl rounded-3xl","data-testid":"onboarding-fdd-flag-modal",children:[e.jsxs("div",{className:"bg-slate-950 p-8 flex items-center justify-center relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-red-600/20 to-transparent"}),e.jsx("div",{className:"w-20 h-20 bg-red-600/20 rounded-full flex items-center justify-center relative z-10 shadow-[0_0_40px_rgba(220,38,38,0.2)]",children:e.jsx(xk,{className:"w-10 h-10 text-red-500"})})]}),e.jsxs("div",{className:"p-8 space-y-6 bg-white text-center",children:[e.jsxs(fs,{children:[e.jsx(us,{className:"text-2xl font-black text-slate-900 tracking-tight",children:"Flag Non-Responsive"}),e.jsx(bs,{className:"text-slate-500 pt-2 leading-relaxed text-sm font-medium",children:"Are you sure you want to flag this applicant? This will notify the DD Admin that the audit cannot proceed due to applicant's non-cooperation."})]}),e.jsxs("div",{className:"bg-red-50 p-4 rounded-2xl flex gap-3 border border-red-100",children:[e.jsx(an,{className:"w-5 h-5 text-red-600 shrink-0 mt-0.5"}),e.jsx("p",{className:"text-[11px] text-red-800 text-left font-medium",children:'"Applicant is unresponsive to multiple queries and financial document requests."'})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 pt-2",children:[e.jsx(se,{variant:"outline",className:"w-full sm:flex-1 h-12 rounded-2xl font-bold text-slate-600 hover:bg-slate-50 border-slate-200",onClick:()=>It(!1),disabled:he,"data-testid":"onboarding-fdd-flag-cancel",children:"Go Back"}),e.jsx(se,{className:"w-full sm:flex-1 h-12 rounded-2xl font-bold bg-slate-950 hover:bg-slate-900 text-white shadow-lg shadow-slate-200 transition-all active:scale-95 border-b-4 border-red-600",disabled:he,"data-testid":"onboarding-fdd-flag-submit",onClick:async()=>{try{vt(!0),await ds.submitStageDecision({applicationId:s.id,stageCode:"FDD_VERIFICATION",decision:"Rejected",remarks:"Applicant is non-responsive to FDD queries."}),ee.error("Applicant flagged as non-responsive."),It(!1),it()}catch{ee.error("Action failed")}finally{vt(!1)}},children:he?e.jsx(es,{className:"w-5 h-5 animate-spin"}):"Confirm Flag"})]})]})]})}),e.jsx(ls,{open:mt,onOpenChange:_e,children:e.jsxs(as,{className:"max-w-md p-0 overflow-hidden rounded-3xl border-none shadow-2xl","data-testid":"onboarding-firm-type-modal",children:[e.jsxs("div",{className:"bg-re-red p-8 text-white",children:[e.jsx("div",{className:"w-16 h-16 rounded-2xl bg-white/20 flex items-center justify-center mb-6 backdrop-blur-sm border border-white/30 shadow-inner",children:e.jsx(so,{className:"w-8 h-8 text-white"})}),e.jsx("h3",{className:"text-2xl font-black tracking-tight mb-2",children:"Update Firm Type"}),e.jsx("p",{className:"text-red-100/80 text-sm font-medium leading-relaxed",children:"Select the proposed legal constitution for this dealership application."})]}),e.jsxs("div",{className:"p-8 space-y-6 bg-white",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(de,{className:"text-[10px] text-slate-400 uppercase tracking-widest font-black",children:["Proposed Legal Constitution ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsxs(At,{value:Vt,onValueChange:Et,children:[e.jsx(Dt,{className:"h-12 rounded-xl border-slate-200 focus:ring-re-red","data-testid":"onboarding-firm-type-select",children:e.jsx(kt,{placeholder:"Select Firm Type"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"Proprietorship","data-testid":"onboarding-firm-type-proprietorship",children:"Proprietorship"}),e.jsx(Me,{value:"Partnership","data-testid":"onboarding-firm-type-partnership",children:"Partnership"}),e.jsx(Me,{value:"Limited Liability partnership","data-testid":"onboarding-firm-type-llp",children:"LLP (Limited Liability partnership)"}),e.jsx(Me,{value:"Private Limited Company","data-testid":"onboarding-firm-type-pvt-ltd",children:"Private Limited Company"}),e.jsx(Me,{value:"Public Limited Company","data-testid":"onboarding-firm-type-pub-ltd",children:"Public Limited Company"})]})]})]}),e.jsxs("div",{className:"flex gap-3 pt-2",children:[e.jsx(se,{variant:"outline",className:"flex-1 h-12 rounded-xl font-bold text-slate-600 border-slate-200",onClick:()=>_e(!1),disabled:Ds,"data-testid":"onboarding-firm-type-cancel",children:"Cancel"}),e.jsx(se,{className:"flex-1 h-12 rounded-xl font-bold bg-re-red hover:bg-re-red-hover text-white shadow-lg shadow-red-200 transition-all active:scale-95",disabled:Ds||!Vt,onClick:ln,"data-testid":"onboarding-firm-type-submit",children:Ds?e.jsx(es,{className:"w-5 h-5 animate-spin"}):"Update Type"})]})]})]})})]})}var ZU={};function QU({application:t,documents:s,setPreviewDoc:n,setShowPreviewModal:r,setIsUploading:a,fetchApplication:l,refreshDocuments:o}){var w,v;const d=(t==null?void 0:t.fddAssignments)||[],m=((w=t==null?void 0:t.participants)==null?void 0:w.filter(N=>{var j,y,C,S;return((j=N.user)==null?void 0:j.role)==="FDD"||((y=N.user)==null?void 0:y.roleCode)==="FDD"||((S=(C=N.user)==null?void 0:C.allRoles)==null?void 0:S.includes("FDD"))}))||[],f=d.length>0||m.length>0,x=(v=m[0])==null?void 0:v.user,h=[{type:"Bank Statement",label:"Bank Statements"},{type:"Income Tax Returns (ITR)",label:"ITR (Last 3 Years)"},{type:"CIBIL Report",label:"CIBIL / Credit Reports"},{type:"Property Documents",label:"Property Documents"},{type:"Business Valuation Report",label:"Valuation Reports"},{type:"FDD Final Audit Report",label:"Final Audit Report"}],p=N=>{const j=N.toLowerCase();return(s||[]).find(y=>{const C=(y.documentType||"").toLowerCase(),S=(y.fileName||"").toLowerCase();return!!(C===j||j.includes("itr")&&(C.includes("itr")||S.includes("itr"))||j.includes("bank statement")&&(C.includes("bank")||S.includes("bank"))||j.includes("cibil")&&(C.includes("cibil")||S.includes("cibil")||C.includes("credit")))})},u=N=>{const j=(N.documentType||"").toLowerCase();return(N.stage||"").toLowerCase()==="fdd"||j.includes("report")||j.includes("itr")||j.includes("bank")||j.includes("cibil")||j.includes("valuation")};return!f&&!["FDD Verification","LOI In Progress","Payment Pending"].includes(t.status)?e.jsx("div",{className:"space-y-6","data-testid":"onboarding-fdd-no-assignment",children:e.jsxs("div",{className:"flex flex-col items-center justify-center p-12 bg-slate-50 rounded-2xl border-2 border-dashed border-slate-200",children:[e.jsx(no,{className:"w-12 h-12 text-slate-300 mb-4"}),e.jsx("h3",{className:"text-slate-900 font-semibold uppercase tracking-widest text-xs",children:"No FDD Assignment"}),e.jsx("p",{className:"text-slate-500 text-[10px] text-center max-w-xs mt-2 font-medium leading-relaxed uppercase tracking-tight",children:"The Financial Due Diligence process has not been initiated for this application yet."})]})}):e.jsxs("div",{className:"space-y-8","data-testid":"onboarding-fdd-audit-content",children:[f&&e.jsx("div",{className:"flex items-center justify-between p-4 bg-slate-50 border border-slate-200 rounded-xl mb-6","data-testid":"onboarding-fdd-assignment-banner",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 bg-red-50 rounded-lg",children:e.jsx(no,{className:"w-5 h-5 text-re-red"})}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-slate-900",children:"FDD Assignment Active"}),x&&e.jsxs("p",{className:"text-xs text-slate-500 font-medium","data-testid":"onboarding-fdd-assigned-user",children:["Assigned to: ",x.name]})]})]})}),e.jsxs(Le,{className:"border-slate-200 shadow-sm overflow-hidden rounded-2xl","data-testid":"onboarding-fdd-checklist-card",children:[e.jsx(Qe,{className:"bg-slate-50/50 border-b border-slate-100 py-4",children:e.jsxs(et,{className:"text-sm font-black uppercase tracking-widest text-slate-500 flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ac,{className:"w-4 h-4"})," Financial Artefacts Checklist"]}),e.jsx(Ce,{variant:"outline",className:"text-[10px] bg-white",children:"Verify before sign-off"})]})}),e.jsx(Fe,{className:"p-0",children:e.jsx("div",{className:"divide-y divide-slate-100",children:h.map((N,j)=>{const y=p(N.type);return e.jsxs("div",{className:"flex items-center justify-between p-4 px-6 hover:bg-slate-50/50 transition-colors","data-testid":`onboarding-fdd-checklist-item-${j}`,children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:jt("w-8 h-8 rounded-lg flex items-center justify-center",y?"bg-emerald-50 text-emerald-600":"bg-slate-50 text-slate-300"),children:y?e.jsx(fn,{className:"w-5 h-5"}):e.jsx(an,{className:"w-5 h-5"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-bold text-slate-800",children:N.label}),e.jsx("p",{className:"text-[10px] text-slate-400 font-bold uppercase tracking-tighter","data-testid":`onboarding-fdd-checklist-status-${j}`,children:y?`Uploaded: ${Gt(y.createdAt)}`:"Missing in Documentation"})]})]}),y?e.jsxs(se,{variant:"ghost",size:"sm",className:"h-8 text-blue-600 font-black text-[10px] uppercase tracking-widest hover:bg-blue-50",onClick:()=>{n(y),r(!0)},"data-testid":`onboarding-fdd-checklist-preview-${j}`,children:[e.jsx(bn,{className:"w-4 h-4 mr-1"})," Preview"]}):e.jsxs(se,{variant:"outline",size:"sm",className:"h-8 border-slate-200 text-slate-500 font-black text-[10px] uppercase tracking-widest hover:bg-slate-50 hover:text-blue-600","data-testid":`onboarding-fdd-checklist-upload-${j}`,onClick:()=>{const C=document.createElement("input");C.type="file",C.onchange=async S=>{var R;const D=S.target.files[0];if(D)try{a(!0);const A=new FormData;A.append("file",D),A.append("documentType",N.type),A.append("stage","FDD"),A.append("applicationId",t.id);const L=await ds.uploadDocument(t.id,A);N.type==="FDD Final Audit Report"&&(await ds.submitFddReport({applicationId:t.id,reportDocumentId:((R=L.data)==null?void 0:R.id)||L.id,findings:"Final Audit Report uploaded via checklist.",recommendation:"REVIEW_PENDING"}),l()),ee.success(`${N.label} uploaded successfully`),o()}catch{ee.error("Upload failed")}finally{a(!1)}},C.click()},children:[e.jsx(or,{className:"w-4 h-4 mr-1 text-slate-300"})," Upload"]})]},N.type)})})})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h3",{className:"text-lg font-semibold text-slate-900",children:"Supporting Audit Documents"}),e.jsxs(Ce,{variant:"outline",className:"bg-slate-50 text-slate-500 border-slate-200","data-testid":"onboarding-fdd-support-docs-count",children:[(s||[]).filter(u).length," Document(s)"]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4","data-testid":"onboarding-fdd-support-docs-grid",children:[(s||[]).filter(u).map((N,j)=>e.jsxs("div",{className:"group bg-white border border-slate-200 rounded-xl p-4 flex items-center justify-between hover:border-red-300 transition-all hover:shadow-md","data-testid":`onboarding-fdd-support-doc-${j}`,children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-slate-50 flex items-center justify-center",children:e.jsx(Ns,{className:"w-5 h-5 text-slate-400"})}),e.jsxs("div",{className:"overflow-hidden",children:[e.jsx("p",{className:"text-slate-900 font-bold text-sm truncate max-w-[150px]",title:N.fileName,"data-testid":`onboarding-fdd-support-doc-name-${j}`,children:N.fileName}),e.jsx("p",{className:"text-slate-500 text-[10px] font-medium uppercase",children:N.documentType})]})]}),e.jsxs("div",{className:"flex gap-1",children:[e.jsx(se,{variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-re-red hover:bg-red-50",onClick:()=>{const y=ZU.NEXT_PUBLIC_API_URL||"http://localhost:5000";window.open(`${y}/${N.filePath}`,"_blank")},"data-testid":`onboarding-fdd-support-doc-download-${j}`,children:e.jsx(Ni,{className:"w-4 h-4"})}),e.jsx(se,{variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-re-red hover:bg-red-50",onClick:()=>{n(N),r(!0)},"data-testid":`onboarding-fdd-support-doc-preview-${j}`,children:e.jsx(bn,{className:"w-4 h-4"})})]})]},N.id)),(s||[]).filter(u).length===0&&e.jsx("div",{className:"col-span-full p-8 text-center bg-slate-50 rounded-xl border border-dashed border-slate-200","data-testid":"onboarding-fdd-support-docs-empty",children:e.jsx("p",{className:"text-slate-400 text-sm",children:"No supporting audit documents uploaded yet."})})]})]})]})}function XU(t){const s=String(t||"").toUpperCase();return s.includes("REJECT")||s.includes("DELET")||s.includes("DISQUALIF")?"border-red-200 bg-red-50/90 text-red-800":s==="CREATED"||s.includes("APPROV")||s.includes("COMPLETE")?"border-emerald-200 bg-emerald-50/90 text-emerald-900":s.includes("DOCUMENT")||s.includes("UPLOAD")||s.includes("ATTACHMENT")?"border-sky-200 bg-sky-50/80 text-sky-900":s.includes("PAYMENT")||s.includes("SECURITY")||s.includes("DEPOSIT")?"border-violet-200 bg-violet-50/80 text-violet-900":s.includes("FDD")||s.includes("QUESTIONNAIRE")||s.includes("INTERVIEW")?"border-red-200 bg-red-50/80 text-red-900":"border-slate-200 bg-slate-50 text-slate-700"}function jf(t,s){return t==null||s==null?!1:String(t).trim()===String(s).trim()}function f_(t){return String(t??"").trim().toLowerCase().replace(/\s+/g," ")}function Am(t){const s=f_(t);return s?s==="scheduled"||s==="rescheduled"||s==="pending"||s==="in progress"||s==="inprogress":!1}function JU(t){return f_(t)==="completed"}function Hg(t,s){var n;return!s||!((n=t==null?void 0:t.participants)!=null&&n.length)?!1:t.participants.some(r=>{var a;return jf(r.userId,s)||jf((a=r.user)==null?void 0:a.id,s)})}function eV(t){const s=String(t??"").trim();return{"Level 1 Interview Pending":1,"Level 1 Recommended":1,"Level 2 Interview Pending":2,"Level 2 Recommended":2,"Level 3 Interview Pending":3,"Level 3 Recommended":3}[s]}function _S(t){return String(t??"").trim().toLowerCase().replace(/[_\s-]+/g,"")}function tV(t,s){var d,m;if(!t)return!1;const n=["Super Admin","DD Admin"];if(n.includes(String(t.role??""))||n.includes(String(t.roleCode??"")))return!0;const a={1:["DD-ZM","DD ZM","RBM"],2:["DD Lead","ZBH"],3:["NBH","DD Head"]}[s];if(!(a!=null&&a.length))return!1;const l=a.map(_S),o=[t.role,t.roleCode,t.roleName,(d=t.role)==null?void 0:d.roleCode,(m=t.role)==null?void 0:m.roleName].filter(Boolean).map(_S);for(const f of o)if(f){for(const x of l)if(x&&(f===x||f.includes(x)||x.includes(f)))return!0}return!1}function sV({application:t,interviews:s,currentUser:n,getDeposit:r,eorProgress:a}){var C,S,D;const l=Array.isArray(s)?s:[],o=eV(t==null?void 0:t.status),d=(o!=null?l.find(R=>Am(R.status)&&Hg(R,n==null?void 0:n.id)&&Number(R.level)===o):void 0)??l.find(R=>Am(R.status)&&Hg(R,n==null?void 0:n.id)),m=o!=null&&n&&tV(n,o)?l.find(R=>Number(R.level)===o&&Am(R.status)):void 0,f=d??m,x=l.find(R=>Hg(R,n==null?void 0:n.id)),h=((C=f==null?void 0:f.evaluations)==null?void 0:C.find(R=>jf(R.evaluatorId,n==null?void 0:n.id)))??((S=x==null?void 0:x.evaluations)==null?void 0:S.find(R=>jf(R.evaluatorId,n==null?void 0:n.id))),p=R=>l.some(A=>Number(A.level)===R&&JU(A.status)),u=R=>l.some(A=>Number(A.level)===R&&Am(A.status)),w=!!h,v={"Level 1 Interview Pending":"INTERVIEW_LEVEL_1","Level 2 Interview Pending":"INTERVIEW_LEVEL_2","Level 2 Recommended":"INTERVIEW_LEVEL_2","Level 3 Interview Pending":"INTERVIEW_LEVEL_3","LOI In Progress":"LOI_APPROVAL","LOA Pending":"LOA_APPROVAL"},N=v[t==null?void 0:t.status],j=(D=t==null?void 0:t.stageApprovals)==null?void 0:D.find(R=>R.stageCode===N&&String(R.actorUserId)===String(n==null?void 0:n.id));return{activeInterviewForUser:f,lastInterviewForUser:x,currentUserEvaluation:h,hasSubmittedFeedback:w,currentUserStageAction:j,isInterviewCompleted:p,isInterviewActive:u,permissions:(()=>{var Q,_,z,T,F;if(!t||!n)return{canApprove:!1,canReject:!1,canSchedule:!1,canAssign:!1,isLoaLocked:!1,isSecurityDetailsLocked:!1,showDecisionMessage:!1};const R=["DD Admin","Super Admin","NBH","DD Lead","DD Head","Finance","Finance Admin","FDD","ZBH","RBM"].includes(n.role),A=["Level 3 Approved","FDD Verification","LOI In Progress","Security Deposit","Security Details","Payment Pending","LOI Issued","Statutory LOI Ack","Architecture Team Assigned","Architecture Document Upload","Architecture Team Completion","Statutory GST","Statutory PAN","Statutory Nodal","Statutory Check","Statutory Partnership","Statutory Firm Reg","Statutory Rental","Statutory Virtual Code","Statutory Domain","Statutory MSD","LOA Pending","EOR In Progress","EOR Complete","Inauguration","Approved"].includes(t.status),L=t.status==="LOA Pending"&&((Q=r("FIRST_FILL"))==null?void 0:Q.status)!=="Verified",$=["Security Deposit","Security Details","Payment Pending"].includes(t.status)&&((_=r("SECURITY_DEPOSIT"))==null?void 0:_.status)!=="Verified",P=t.status==="Onboarded"||t.status==="Rejected",E=(z=t.stageApprovals)==null?void 0:z.some(B=>B.stageCode==="LOI_APPROVAL"&&B.actorRole==="DD Head"&&B.decision==="Approved"),O=(T=t.stageApprovals)==null?void 0:T.some(B=>B.stageCode==="LOA_APPROVAL"&&B.actorRole==="DD Head"&&B.decision==="Approved");let I=!0;["Super Admin","DD Admin","DD Lead","DD Head"].includes(n.role)||((t.status==="FDD Verification"||t.status==="Level 3 Approved")&&(I=!1),t.status==="LOI In Progress"&&(I=n.role==="NBH"?!!E:n.role==="DD Head"),t.status==="LOA Pending"&&(I=n.role==="NBH"?!!O:n.role==="DD Head"));const q=!!((F=t.stageApprovals)!=null&&F.find(B=>v[t.status]===B.stageCode&&String(B.actorUserId)===String(n.id))),G=["Approved","Rejected","Selected"].includes((h==null?void 0:h.decision)||(h==null?void 0:h.recommendation)||""),Y=(f?G:!1)||q,V=!P&&!Y&&R&&A&&I&&(!["EOR In Progress","Inauguration","Approved"].includes(t.status)||a===100);return{canApprove:V&&!L&&!$,canReject:V&&!L,isLoaLocked:L,isSecurityDetailsLocked:$,showDecisionMessage:Y&&(!A||q),canSchedule:["DD Admin","Super Admin","DD AM","ASM"].includes(n.role)&&!P&&![1,2,3].every(B=>l.some(K=>K.level===B)),canAssign:["DD Admin","Super Admin","DD AM"].includes(n.role)}})()}}function nV({initialTab:t="questionnaire"}){const[s,n]=g.useState(!1),[r,a]=g.useState(!1),[l,o]=g.useState(""),[d,m]=g.useState(t),[f,x]=g.useState(!1),[h,p]=g.useState(!1),[u,w]=g.useState(!1),[v,N]=g.useState(!1),[j,y]=g.useState(""),[C,S]=g.useState([]),[D,R]=g.useState(!1),[A,L]=g.useState(!1),[$,P]=g.useState(""),[E,O]=g.useState(null),[I,q]=g.useState(!1),[G,Y]=g.useState(!1),[V,Q]=g.useState(!1),[_,z]=g.useState(!1),[T,F]=g.useState(!1),[B,K]=g.useState(null),[W,H]=g.useState("virtual"),[X,J]=g.useState(""),[ie,ae]=g.useState({}),[xe,ce]=g.useState([]),[we,ke]=g.useState(""),[Xe,Ot]=g.useState("contributor"),[bt,te]=g.useState(""),[ve,qe]=g.useState("level1"),[ge,Be]=g.useState(""),[ut,ht]=g.useState(""),[it,Tt]=g.useState(!1),[It,he]=g.useState(null),[vt,mt]=g.useState(""),[_e,Vt]=g.useState(null),[Et,Ds]=g.useState(!1),[ln,Bs]=g.useState(null),[Ys,Xs]=g.useState(!1),[Js,Ws]=g.useState(""),[Z,oe]=g.useState(!1),[Ne,Oe]=g.useState({}),[De,ye]=g.useState(!1),[Ve,Ge]=g.useState([]),[st,Kt]=g.useState(!1),[Xt,ot]=g.useState(!1),[ft,Es]=g.useState(!1),[ts,vs]=g.useState(""),[Te,je]=g.useState(!1),[nt,Ye]=g.useState(!1),[pt,yt]=g.useState(""),[Jt,ss]=g.useState(""),[Ss,Zs]=g.useState(!1),[on,en]=g.useState(!1),[tn,cn]=g.useState([]),[Ae,Ht]=g.useState([]),[Pe,ct]=g.useState(""),[tt,Nt]=g.useState(!1),[Mt,Pt]=g.useState(!1),[ys,Yt]=g.useState(!1),[ps,ks]=g.useState(!1),[hs,gn]=g.useState({}),[$s,dn]=g.useState({}),[sn,We]=g.useState(""),[Ft,gt]=g.useState("Approve"),[rt,Is]=g.useState(!1),[xs,Nn]=g.useState(null),[kn,Cn]=g.useState(!1),[Us,Za]=g.useState(!1),[Pa,Ms]=g.useState("Recommended"),[un,ta]=g.useState(""),[sa,na]=g.useState(!1),[Mr,Xn]=g.useState(!1),[zn,Zt]=g.useState({}),[Jn,Er]=g.useState("Approve"),[Gn,_r]=g.useState(!1),[On,ur]=g.useState({}),[ns,nn]=g.useState("Approve"),[va,Si]=g.useState(!1),[Ci,Fr]=g.useState(null),[Hr,sr]=g.useState(!1);return{showFirmTypeModal:s,setShowFirmTypeModal:n,updatingFirmType:r,setUpdatingFirmType:a,tempFirmType:l,setTempFirmType:o,activeTab:d,setActiveTab:m,showApproveModal:f,setShowApproveModal:x,showOnboardModal:h,setShowOnboardModal:p,isOnboarding:u,setIsOnboarding:w,showRejectModal:v,setShowRejectModal:N,rejectionReason:j,setRejectionReason:y,scheduledInterviewParticipants:C,setScheduledInterviewParticipants:S,showScheduleModal:D,setShowScheduleModal:R,showCancelInterviewModal:A,setShowCancelInterviewModal:L,interviewIdToCancel:$,setInterviewIdToCancel:P,interviewToReschedule:E,setInterviewToReschedule:O,showKTMatrixModal:I,setShowKTMatrixModal:q,showLevel2FeedbackModal:G,setShowLevel2FeedbackModal:Y,showLevel3FeedbackModal:V,setShowLevel3FeedbackModal:Q,showDocumentsModal:_,setShowDocumentsModal:z,showAssignModal:T,setShowAssignModal:F,selectedStage:B,setSelectedStage:K,interviewMode:W,setInterviewMode:H,approvalRemark:X,setApprovalRemark:J,expandedBranches:ie,setExpandedBranches:ae,users:xe,setUsers:ce,selectedUser:we,setSelectedUser:ke,participantType:Xe,setParticipantType:Ot,interviewDate:bt,setInterviewDate:te,interviewType:ve,setInterviewType:qe,meetingLink:ge,setMeetingLink:Be,location:ut,setLocation:ht,showUploadForm:it,setShowUploadForm:Tt,uploadFile:It,setUploadFile:he,uploadDocType:vt,setUploadDocType:mt,approvalFile:_e,setApprovalFile:Vt,isUploading:Et,setIsUploading:Ds,previewDoc:ln,setPreviewDoc:Bs,showPreviewModal:Ys,setShowPreviewModal:Xs,selectedInterviewerId:Js,setSelectedInterviewerId:Ws,isEditingStatutory:Z,setIsEditingStatutory:oe,statutoryForm:Ne,setStatutoryForm:Oe,isSavingStatutory:De,setIsSavingStatutory:ye,interviews:Ve,setInterviews:Ge,isScheduling:st,setIsScheduling:Kt,isCancellingInterview:Xt,setIsCancellingInterview:ot,showAssignArchitectureModal:ft,setShowAssignArchitectureModal:Es,architectureLeadId:ts,setArchitectureLeadId:vs,isAssigningArchitecture:Te,setIsAssigningArchitecture:je,showArchitectureStatusModal:nt,setShowArchitectureStatusModal:Ye,architectureStatus:pt,setArchitectureStatus:yt,architectureRemarks:Jt,setArchitectureRemarks:ss,isUpdatingArchitecture:Ss,setIsUpdatingArchitecture:Zs,isAssigningParticipant:on,setIsAssigningParticipant:en,documentConfigs:tn,setDocumentConfigs:cn,fddAgencies:Ae,setFddAgencies:Ht,selectedAgencyId:Pe,setSelectedAgencyId:ct,isAssigningAgency:tt,setIsAssigningAgency:Nt,showAssignFddModal:Mt,setShowAssignFddModal:Pt,isApproving:ys,setIsApproving:Yt,isRejecting:ps,setIsRejecting:ks,ktMatrixScores:hs,setKtMatrixScores:gn,ktMatrixSelectedValues:$s,setKtMatrixSelectedValues:dn,ktMatrixRemarks:sn,setKtMatrixRemarks:We,ktMatrixRecommendation:Ft,setKtMatrixRecommendation:gt,isSubmittingKT:rt,setIsSubmittingKT:Is,selectedInterviewForFeedback:xs,setSelectedInterviewForFeedback:Nn,showFddFinalizeModal:kn,setShowFddFinalizeModal:Cn,showFddFlagModal:Us,setShowFddFlagModal:Za,fddAuditRecommendation:Pa,setFddAuditRecommendation:Ms,fddAuditFindings:un,setFddAuditFindings:ta,isFinalizingFdd:sa,setIsFinalizingFdd:na,isFddFlagging:Mr,setIsFddFlagging:Xn,level2Feedback:zn,setLevel2Feedback:Zt,level2Recommendation:Jn,setLevel2Recommendation:Er,isSubmittingLevel2:Gn,setIsSubmittingLevel2:_r,level3Feedback:On,setLevel3Feedback:ur,level3Recommendation:ns,setLevel3Recommendation:nn,isSubmittingLevel3:va,setIsSubmittingLevel3:Si,selectedEvaluationForView:Ci,setSelectedEvaluationForView:Fr,showFeedbackDetailsModal:Hr,setShowFeedbackDetailsModal:sr}}const p_=()=>new Date().toISOString().split("T")[0],rV=t=>({strategicVision:"",managementCapabilities:"",operationalUnderstanding:"",keyStrengths:"",areasOfConcern:"",additionalComments:"",overallScore:"",interviewerName:(t==null?void 0:t.name)||"",interviewDate:p_()}),aV=t=>({strategicVision:"",managementCapabilities:"",operationalUnderstanding:"",brandAlignment:"",executiveSummary:"",keyStrengths:"",areasOfConcern:"",additionalComments:"",overallScore:"",interviewerName:(t==null?void 0:t.name)||"",interviewDate:p_()});function iV({ktMatrixScores:t,setKtMatrixScores:s,setKtMatrixSelectedValues:n,ktMatrixRemarks:r,setKtMatrixRemarks:a,ktMatrixRecommendation:l,setKtMatrixRecommendation:o,selectedInterviewForFeedback:d,interviews:m,setIsSubmittingKT:f,setShowKTMatrixModal:x,level2Feedback:h,setLevel2Feedback:p,level2Recommendation:u,setLevel2Recommendation:w,setIsSubmittingLevel2:v,setShowLevel2FeedbackModal:N,level3Feedback:j,setLevel3Feedback:y,level3Recommendation:C,setLevel3Recommendation:S,setIsSubmittingLevel3:D,setShowLevel3FeedbackModal:R,currentUser:A,fetchInterviews:L,fetchApplication:$,ktMatrixConfig:P,level2Config:E,level3Config:O}){const I=J=>J==="Approve"?"Recommended":J==="Reject"?"Not Recommended":"Hold",q=J=>J==="Approve"?"Approved":J==="Reject"?"Rejected":null,G=()=>P!=null&&P.items&&P.items.length>0?P.items.map(J=>({name:J.label,weight:Number(J.weight)||0,maxScore:Number(J.maxScore)||10,options:(J.options||[]).map(ie=>({label:ie.optionLabel,value:ie.optionValue,score:Number(ie.score)||0}))})):[],Y=()=>E!=null&&E.items&&E.items.length>0?E.items:[],V=()=>O!=null&&O.items&&O.items.length>0?O.items:[],Q=G(),_=Y(),z=V();return{handleKTMatrixChange:(J,ie,ae)=>{s(xe=>({...xe,[J]:ae})),n(xe=>({...xe,[J]:ie}))},calculateKTScore:()=>{let J=0;return Q.forEach(ie=>{const ae=t[ie.name||ie.label]||0,xe=ie.maxScore||10,ce=ie.weight||0;J+=ae/xe*ce}),J.toFixed(2)},handleSubmitKTMatrix:async()=>{var ie,ae;if(Q.length===0){ee.error("KT Matrix configuration is missing. Please configure it in Master > Interview Configurations.");return}if(Object.keys(t).lengthxe.status!=="Completed"))==null?void 0:ie.id)||((ae=m[0])==null?void 0:ae.id);if(!J){ee.error("No active interview found to link this KT Matrix to.");return}try{f(!0);const xe=Q.map(we=>({criterionName:we.name||we.label,score:t[we.name||we.label]||0,maxScore:we.maxScore||10,weightage:we.weight||0}));await ds.submitKTMatrix({interviewId:J,criteriaScores:xe,feedback:r,recommendation:I(l)});const ce=q(l);ce&&await ds.updateInterviewDecision({interviewId:J,decision:ce,remarks:r||`Level 1 ${ce.toLowerCase()} via KT Matrix`}),ee.success(ce?`KT Matrix submitted and interview ${ce.toLowerCase()}`:"KT Matrix submitted and interview kept on hold"),x(!1),s({}),n({}),a(""),o("Approve"),await L(),await $()}catch{ee.error("Failed to submit KT Matrix")}finally{f(!1)}},handleLevel2Change:(J,ie)=>{p(ae=>({...ae,[J]:ie}))},handleSubmitLevel2Feedback:async()=>{var ie;if(_.length===0){ee.error("Level 2 feedback configuration is missing. Please configure it in Master > Interview Configurations.");return}if(!h.overallScore){ee.warning("Please provide an overall score.");return}const J=(d==null?void 0:d.id)||((ie=m.find(ae=>ae.status!=="Completed"&&ae.level===2))==null?void 0:ie.id);if(!J){ee.error("No active Level 2 interview found to link this feedback to.");return}try{v(!0);const ae=_.map(we=>({type:we.label,comments:h[we.itemKey]||""})).filter(we=>we.comments.trim()!=="");await ds.submitLevel2Feedback({interviewId:J,overallScore:Number(h.overallScore),feedbackItems:ae,recommendation:I(u)});const xe=q(u),ce=h.additionalComments||"Level 2 decision submitted via feedback modal";xe&&await ds.updateInterviewDecision({interviewId:J,decision:xe,remarks:ce}),ee.success(xe?`Level 2 feedback submitted and interview ${xe.toLowerCase()}`:"Level 2 feedback submitted and interview kept on hold"),N(!1),p(rV(A)),w("Approve"),await L(),await $()}catch{ee.error("Failed to submit Level 2 Feedback")}finally{v(!1)}},handleLevel3Change:(J,ie)=>{y(ae=>({...ae,[J]:ie}))},handleSubmitLevel3Feedback:async()=>{var ie;if(z.length===0){ee.error("Level 3 feedback configuration is missing. Please configure it in Master > Interview Configurations.");return}if(!j.overallScore){ee.warning("Please provide an overall score.");return}const J=(d==null?void 0:d.id)||((ie=m.find(ae=>ae.status!=="Completed"&&ae.level===3))==null?void 0:ie.id);if(!J){ee.error("No active Level 3 interview found to link this feedback to.");return}try{D(!0);const ae=z.map(we=>({type:we.label,comments:j[we.itemKey]||""})).filter(we=>we.comments.trim()!=="");await ds.submitLevel2Feedback({interviewId:J,overallScore:Number(j.overallScore),feedbackItems:ae,recommendation:I(C)});const xe=q(C),ce=j.executiveSummary||j.additionalComments||"Level 3 decision submitted via feedback modal";xe&&await ds.updateInterviewDecision({interviewId:J,decision:xe,remarks:ce}),ee.success(xe?`Level 3 feedback submitted and interview ${xe.toLowerCase()}`:"Level 3 feedback submitted and interview kept on hold"),R(!1),y(aV(A)),S("Approve"),await L(),await $()}catch{ee.error("Failed to submit Level 3 Feedback")}finally{D(!1)}},ktCriteria:Q,l2Fields:_,l3Fields:z}}function lV(){const[t,s]=g.useState(null),[n,r]=g.useState(null),[a,l]=g.useState(null),[o,d]=g.useState(!1),[m,f]=g.useState(null),x=g.useCallback(async p=>{var u,w;try{const v=await Ee.getInterviewConfigByType(p);if((u=v.data)!=null&&u.success)return v.data.data}catch(v){((w=v==null?void 0:v.response)==null?void 0:w.status)!==404&&console.warn(`Failed to fetch ${p} config:`,v)}return null},[]),h=g.useCallback(async()=>{d(!0),f(null);try{const[p,u,w]=await Promise.all([x("KT_MATRIX"),x("LEVEL2_FEEDBACK"),x("LEVEL3_FEEDBACK")]);s(p),r(u),l(w)}catch{f("Failed to load interview configurations"),ee.error("Failed to load interview configurations")}finally{d(!1)}},[x]);return g.useEffect(()=>{h()},[h]),{ktMatrixConfig:t,level2Config:n,level3Config:a,loading:o,error:m,refresh:h}}function oV(t){const{application:s,applicationId:n,currentUser:r,interviews:a,approvalFile:l,approvalRemark:o,rejectionReason:d,architectureLeadId:m,architectureStatus:f,architectureRemarks:x,selectedUser:h,participantType:p,users:u,interviewDate:w,setInterviewDate:v,interviewType:N,setInterviewType:j,interviewMode:y,setInterviewMode:C,meetingLink:S,setMeetingLink:D,location:R,setLocation:A,scheduledInterviewParticipants:L,uploadFile:$,uploadDocType:P,selectedStage:E,setIsApproving:O,setShowApproveModal:I,setApprovalRemark:q,setApprovalFile:G,setIsRejecting:Y,setShowRejectModal:V,setRejectionReason:Q,setIsAssigningArchitecture:_,setShowAssignArchitectureModal:z,setIsUpdatingArchitecture:T,setShowArchitectureStatusModal:F,setIsAssigningParticipant:B,setSelectedUser:K,setShowAssignModal:W,setLoading:H,setIsScheduling:X,setShowScheduleModal:J,setShowCancelInterviewModal:ie,interviewIdToCancel:ae,setInterviewIdToCancel:xe,interviewToReschedule:ce,setInterviewToReschedule:we,setIsCancellingInterview:ke,setIsUploading:Xe,setShowUploadForm:Ot,setUploadFile:bt,setUploadDocType:te,setDocuments:ve,selectedInterviewerId:qe,setSelectedInterviewerId:ge,setScheduledInterviewParticipants:Be,setUsers:ut,showScheduleModal:ht,showAssignArchitectureModal:it,showAssignModal:Tt,fetchApplication:It,fetchInterviews:he,fetchEorData:vt}=t,mt=()=>{if(!qe)return;const Ge=(Array.isArray(u)?u:[]).find(st=>st.id===qe);Ge&&!L.find(st=>st.id===Ge.id)&&(Be([...L,Ge]),ge(""))},_e=Ve=>{Be(L.filter(Ge=>Ge.id!==Ve))},Vt=g.useCallback(async Ve=>{if(!(!r||!["DD Admin","Super Admin","DD Lead","DD Head","NBH"].includes(r.role)))try{const Ge={};if(Ve){const ot={level1:["DD-ZM","RBM"],level2:["DD Lead","ZBH"],level3:["NBH","DD Head"]};ot[Ve]&&(Ge.preferredRoleCode=ot[Ve]),s&&(Ge.locationId=s.districtId||s.areaId||s.regionId||s.zoneId)}Ge.isExternal=!1;const st=await ds.getUsers(Ge),Xt=(Array.isArray(st)?st:st&&Array.isArray(st.data)?st.data:st&&Array.isArray(st.users)?st.users:[]).filter(ot=>(ot.status||"").toLowerCase()!=="inactive");ut(Xt.sort((ot,ft)=>String(ot.fullName||ot.name||"").localeCompare(String(ft.fullName||ft.name||""))))}catch{ut([])}},[r,s,ut]),Et=g.useCallback(()=>{if(!ht||!s||ce)return;const Ve=parseInt(N.replace("level",""))||1,Ge={1:["DD-ZM","RBM"],2:["DD Lead","ZBH"],3:["NBH","DD Head"]},st=ts=>String(ts||"").trim().toLowerCase().replace(/[_\s-]+/g," "),Kt=(Ge[Ve]||[]).map(st),Xt=(ts,vs)=>{var nt,Ye,pt;const Te=[(nt=ts==null?void 0:ts.metadata)==null?void 0:nt.role,(Ye=vs==null?void 0:vs.role)==null?void 0:Ye.roleName,(pt=vs==null?void 0:vs.role)==null?void 0:pt.roleCode,vs==null?void 0:vs.roleCode,vs==null?void 0:vs.role].filter(Boolean),je=Te.find(yt=>Kt.includes(st(yt)));return String(je||Te[0]||"Panelist")},ot=((s==null?void 0:s.participants)||[]).filter(ts=>{var vs,Te,je,nt,Ye,pt,yt,Jt,ss;return((vs=ts.metadata)==null?void 0:vs.interviewLevel)===Ve||((Te=ts.metadata)==null?void 0:Te.interviewLevel)===String(Ve)||((nt=(je=ts.metadata)==null?void 0:je.allAssignments)==null?void 0:nt.includes(Ve))||((pt=(Ye=ts.metadata)==null?void 0:Ye.allAssignments)==null?void 0:pt.includes(String(Ve)))||Kt.includes(st((yt=ts.user)==null?void 0:yt.role))||Kt.includes(st((Jt=ts.user)==null?void 0:Jt.roleCode))||Kt.includes(st((ss=ts.metadata)==null?void 0:ss.role))}).map(ts=>{const vs=ts.user||{};return{...vs,__stageRole:Xt(ts,vs)}}).filter(ts=>!!(ts!=null&&ts.id));if(ot.length===0){Be([]);return}const ft=[],Es=new Set;ot.forEach(ts=>{ts.id&&!Es.has(ts.id)&&(Es.add(ts.id),ft.push(ts))}),Be(ft)},[ht,s,N,ce,Be]),Ds=async()=>{if(!w){ee.warning("Please select date and time");return}try{X(!0);const Ve={applicationId:s==null?void 0:s.id,level:N,scheduledAt:w,type:y==="virtual"?"Virtual Interview":"Physical Interview",location:y==="virtual"?S:R,participants:L.map(Ge=>Ge.id)};ce?(await ds.updateInterview(ce.id,{...Ve,status:"Scheduled"}),ee.success("Interview rescheduled successfully")):(await ds.scheduleInterview(Ve),ee.success("Interview scheduled successfully")),J(!1),we(null),await he(),await It()}catch{ee.error(ce?"Failed to reschedule interview":"Failed to schedule interview")}finally{X(!1)}},ln=async Ve=>{xe(Ve),ie(!0)},Bs=async Ve=>{var st,Kt;we(Ve),j(`level${Ve.level}`),C((st=Ve.interviewType)!=null&&st.toLowerCase().includes("virtual")?"virtual":"physical"),v(Ve.scheduleDate?(()=>{const Xt=new Date(Ve.scheduleDate);return new Date(Xt.getTime()-Xt.getTimezoneOffset()*6e4).toISOString().slice(0,16)})():""),(Kt=Ve.interviewType)!=null&&Kt.toLowerCase().includes("virtual")?D(Ve.linkOrLocation||""):A(Ve.linkOrLocation||"");const Ge=(Ve.participants||[]).map(Xt=>Xt.user||Xt).filter(Boolean);Be(Ge),J(!0)},Ys=async()=>{if(ae)try{ke(!0),await ds.updateInterview(ae,{status:"Cancelled"}),ee.success("Interview cancelled successfully"),ie(!1),xe(""),await he()}catch{ee.error("Failed to cancel interview")}finally{ke(!1)}},Xs=async()=>{var Ve;if(!$||!P){ee.warning("Please enter a document name and select a file");return}try{Xe(!0);const Ge=new FormData,st=((Ve=$.name.match(/\.[^/.]+$/))==null?void 0:Ve[0])||"",Kt=P.trim(),Xt=Kt.toLowerCase().endsWith(st.toLowerCase())?Kt:`${Kt}${st}`;Ge.append("file",$,Xt);const ot=E!=null&&E.startsWith("EOR: ")?E.replace(/^EOR:\s*/,""):null;Ge.append("documentType",ot||"Other"),E&&Ge.append("stage",E),await ds.uploadDocument(n,Ge),ee.success("Document uploaded successfully"),Ot(!1),bt(null),te("");const ft=await ds.getDocuments(n);ve(ft||[]),await vt()}catch{ee.error("Failed to upload document")}finally{Xe(!1)}},Js=async()=>{var Ve;try{O(!0);const Ge=a.find(ot=>{var ft;return ot.status!=="Completed"&&ot.status!=="Cancelled"&&((ft=ot.participants)==null?void 0:ft.some(Es=>Es.userId===(r==null?void 0:r.id)))});if(l&&n)try{const ot=new FormData;ot.append("file",l),ot.append("documentType","Approval Attachment");let ft=null;Ge&&(Ge.level===1||Ge.level==="1"?ft="1st Level Interview":Ge.level===2||Ge.level==="2"?ft="2nd Level Interview":(Ge.level===3||Ge.level==="3")&&(ft="3rd Level Interview")),ft||(s.status==="Shortlisted"||s.status==="Level 1 Interview Pending"?ft="1st Level Interview":s.status==="Level 1 Approved"||s.status==="Level 2 Interview Pending"?ft="2nd Level Interview":(s.status==="Level 2 Approved"||s.status==="Level 3 Interview Pending")&&(ft="3rd Level Interview")),ft&&ot.append("stage",ft),await ds.uploadDocument(n,ot)}catch{ee.error("Failed to upload document")}if(Ge)try{await ds.updateInterviewDecision({interviewId:Ge.id,decision:"Approved",remarks:o}),ee.success("Interview approved successfully"),I(!1),q(""),G(null),await he(),await It();return}catch{ee.error("Failed to approve interview");return}if(!o.trim()){ee.warning("Please enter a remark");return}let st=s.status;switch(s.status){case"Shortlisted":case"Level 1 Interview Pending":st="Level 1 Approved";break;case"Level 1 Approved":case"Level 2 Interview Pending":st="Level 2 Approved";break;case"Level 2 Approved":case"Level 3 Interview Pending":st="Level 3 Approved";break;case"Level 3 Approved":st="FDD Verification";break;case"FDD Verification":st="LOI In Progress";break;case"LOI In Progress":st="Security Deposit";break;case"Security Deposit":case"Security Details":case"Payment Pending":st="LOI Issued";break;case"LOI Issued":st="Dealer Code Generation";break;case"Dealer Code Generation":case"Architecture Team Assigned":case"Architecture Document Upload":case"Architecture Team Completion":case"Statutory GST":case"Statutory PAN":case"Statutory Nodal":case"Statutory Check":case"Statutory Partnership":case"Statutory Firm Reg":case"Statutory Rental":case"Statutory Virtual Code":case"Statutory Domain":case"Statutory MSD":case"Statutory LOI Ack":st="LOA Pending";break;case"LOA Pending":st="EOR In Progress";break;case"EOR In Progress":st="EOR Complete";break;case"EOR Complete":st="Inauguration";break;case"Inauguration":case"Approved":st="Onboarded";break;default:st="Onboarded"}const Xt={"Level 1 Interview Pending":"INTERVIEW_LEVEL_1","Level 2 Interview Pending":"INTERVIEW_LEVEL_2","Level 2 Recommended":"INTERVIEW_LEVEL_2","Level 3 Interview Pending":"INTERVIEW_LEVEL_3","LOI In Progress":"LOI_APPROVAL","LOA Pending":"LOA_APPROVAL"}[s.status];if(Xt){const ot=await ds.submitStageDecision({applicationId:s.id,stageCode:Xt,decision:"Approved",remarks:o,nextStatus:st});(Ve=ot.data)!=null&&Ve.statusUpdated?ee.success(ot.message||"Stage completed and moved to next step"):ee.info(ot.message||"Approval recorded. Waiting for other mandatory approvers.")}else await ds.updateApplicationStatus(n,{status:st,remarks:o});st==="Onboarded"?(await ds.createDealer({applicationId:n}),ee.success("Application finalized and Dealer profile created!")):ee.success(`Application moved to ${st}`),I(!1),q(""),G(null),await It()}catch(Ge){ee.error(Ge.message||"Failed to process approval")}finally{O(!1)}},Ws=async()=>{try{Y(!0);const Ve=a.find(Kt=>{var Xt;return Kt.status!=="Completed"&&Kt.status!=="Cancelled"&&((Xt=Kt.participants)==null?void 0:Xt.some(ot=>ot.userId===(r==null?void 0:r.id)))});if(Ve)try{await ds.updateInterviewDecision({interviewId:Ve.id,decision:"Rejected",remarks:d}),ee.success("Interview rejected"),V(!1),Q(""),await he(),await It();return}catch{ee.error("Failed to reject interview");return}if(!d.trim()){ee.warning("Please enter a reason for rejection");return}const st={"Level 1 Interview Pending":"INTERVIEW_LEVEL_1","Level 2 Interview Pending":"INTERVIEW_LEVEL_2","Level 2 Recommended":"INTERVIEW_LEVEL_2","Level 3 Interview Pending":"INTERVIEW_LEVEL_3","LOI In Progress":"LOI_APPROVAL","LOA Pending":"LOA_APPROVAL"}[s.status];st?await ds.submitStageDecision({applicationId:s.id,stageCode:st,decision:"Rejected",remarks:d,interviewId:Ve==null?void 0:Ve.id}):await ds.updateApplicationStatus(n,{status:"Rejected",remarks:d}),ee.success("Application rejected"),V(!1),Q(""),await It()}catch(Ve){ee.error(Ve.message||"Failed to process rejection")}finally{Y(!1)}},Z=async()=>{try{await ds.generateDealerCodes(n),ee.success("Dealer codes generated successfully"),await It()}catch(Ve){ee.error(Ve.message||"Failed to generate dealer codes")}},oe=async()=>{if(!m){ee.warning("Please select an architecture lead");return}try{_(!0),await ds.assignArchitectureTeam(n,m),ee.success("Architecture team assigned successfully"),z(!1),await It()}catch(Ve){ee.error(Ve.message||"Failed to assign architecture team")}finally{_(!1)}},Ne=async()=>{try{T(!0),await ds.updateArchitectureStatus(n,f,x),ee.success("Architecture status updated successfully"),F(!1),await It()}catch{ee.error("Failed to update architecture status")}finally{T(!1)}},Oe=async()=>{if(!h){ee.warning("Please select a user");return}try{B(!0);const Ve=Array.isArray(u)?u.find(Ge=>Ge.id===h):null;Ve&&(Ve.role==="FDD"||Ve.roleCode==="FDD")&&(await ds.assignFddAgency({applicationId:n,assignedToAgency:h}),ee.info(`${Ve.fullName||Ve.name} assigned as FDD Agency based on role.`)),await ds.addParticipant({requestId:n,requestType:"application",userId:h,participantType:p||"contributor"}),ee.success("User assigned successfully!"),await It(),K(""),W(!1)}catch{ee.error("Failed to assign user")}finally{B(!1)}},De=async()=>{try{H(!0),await ds.retriggerEvaluators(n),ee.success("Evaluators re-assigned successfully"),await It()}catch{ee.error("Failed to re-assign evaluators")}finally{H(!1)}},ye=g.useCallback(async()=>{if(ht&&s){await Vt(N),Et();return}(it||Tt)&&s&&await Vt()},[ht,it,Tt,s,N,Vt,Et]);return{handleAddInterviewer:mt,handleRemoveInterviewer:_e,fetchUsers:Vt,maybeFetchUsersForModal:ye,handleScheduleInterview:Ds,handleRescheduleInterview:Bs,handleCancelInterview:ln,handleConfirmCancelInterview:Ys,handleUpload:Xs,handleApprove:Js,handleReject:Ws,handleGenerateDealerCodes:Z,handleAssignArchitecture:oe,handleUpdateArchitectureStatus:Ne,handleAddParticipant:Oe,handleRetriggerEvaluators:De}}const x_={getChecklist:async(t,s)=>{const n=s?`/eor/relocation/${s}`:`/eor/application/${t}`;return(await $e.get(n)).data},createChecklist:async t=>(await $e.post("/eor",t)).data,updateItem:async(t,s)=>(await $e.post(`/eor/item/${t}`,s)).data,submitAudit:async(t,s)=>(await $e.post(`/eor/audit/${t}`,s)).data},Wg=Object.freeze(Object.defineProperty({__proto__:null,eorService:x_},Symbol.toStringTag,{value:"Module"})),cV={getAuditLogs:async(t,s,n=1,r=50)=>{var a;try{const l=await Ee.getAuditLogs(t,s,n,r);return((a=l.data)==null?void 0:a.data)||l.data||[]}catch(l){throw console.error("Get audit logs error:",l),l}},getAuditSummary:async(t,s)=>{var n;try{const r=await Ee.getAuditSummary(t,s);return((n=r.data)==null?void 0:n.data)||r.data}catch(r){throw console.error("Get audit summary error:",r),r}}},dV={getWorknotes:async(t,s)=>{var r,a;const n=await Ee.getWorknotes(t,s);if(!n.ok)throw new Error(((r=n.data)==null?void 0:r.message)||"Failed to fetch worknotes");return((a=n.data)==null?void 0:a.data)||n.data},addWorknote:async t=>{var n,r;const s=await Ee.addWorknote(t);if(!s.ok)throw new Error(((n=s.data)==null?void 0:n.message)||"Failed to add worknote");return((r=s.data)==null?void 0:r.data)||s.data},addParticipant:async t=>{var n;const s=await Ee.addParticipant(t);if(!s.ok)throw new Error(((n=s.data)==null?void 0:n.message)||"Failed to add participant");return s.data},removeParticipant:async t=>{var n;const s=await Ee.removeParticipant(t);if(!s.ok)throw new Error(((n=s.data)==null?void 0:n.message)||"Failed to remove participant");return s.data}};function uV({applicationId:t}){const[s,n]=g.useState(null),[r,a]=g.useState(!0),[l,o]=g.useState([]),[d,m]=g.useState(null),[f,x]=g.useState([]),[h,p]=g.useState(!1),[u,w]=g.useState([]),[v,N]=g.useState([]),[j,y]=g.useState({}),C=g.useCallback(async()=>{try{const A=await ds.getDocuments(t);o(A||[])}catch(A){console.error("Failed to refresh documents:",A)}},[t]),S=g.useCallback(async(A=!1)=>{try{A||a(!0);const L=await ds.getApplicationById(t),$=(E,O)=>{var q;const I=(q=L.progressTracking)==null?void 0:q.find(G=>G.stageName===E);if(I!=null&&I.stageCompletedAt)return new Date(I.stageCompletedAt).toISOString();if(I!=null&&I.stageStartedAt)return new Date(I.stageStartedAt).toISOString();if(O){const G=(L.statusHistory||[]).find(Y=>Y.newStatus===O);if(G)return new Date(G.createdAt).toISOString()}},P={id:L.id,registrationNumber:L.applicationId||"N/A",name:L.applicantName,email:L.email,phone:L.phone,age:L.age,education:L.education,residentialAddress:L.address||L.city||"",businessAddress:L.address||"",preferredLocation:L.preferredLocation,state:L.state,ownsBike:L.ownRoyalEnfield==="yes",pastExperience:L.experienceYears?`${L.experienceYears} years`:L.description||"",status:L.overallStatus,questionnaireMarks:L.score||L.questionnaireMarks||0,questionnaireResponses:L.questionnaireResponses||[],rank:0,totalApplicantsAtLocation:0,assignedUsers:[],progress:L.progressPercentage||0,isShortlisted:L.isShortlisted||!0,companyName:L.companyName,source:L.source,existingDealer:L.existingDealer,royalEnfieldModel:L.royalEnfieldModel,description:L.description,pincode:L.pincode,locationType:L.locationType,ownRoyalEnfield:L.ownRoyalEnfield,address:L.address,submissionDate:L.createdAt?new Date(L.createdAt).toISOString():"",questionnaireDate:$("Questionnaire","Questionnaire Completed")||$("Questionnaire","Questionnaire Pending"),shortlistDate:$("Shortlist","Shortlisted"),level1InterviewDate:$("1st Level Interview","Level 1 Approved"),level2InterviewDate:$("2nd Level Interview","Level 2 Approved"),level3InterviewDate:$("3rd Level Interview","Level 3 Approved"),fddDate:$("FDD","FDD Verification"),loiApprovalDate:$("LOI Approval","LOI In Progress"),securityDetailsDate:$("Security Deposit","Security Deposit")||$("Security Details","Security Details"),loiIssueDate:$("LOI Issue","LOI Issued"),dealerCodeDate:$("Dealer Code Generation","Dealer Code Generation"),architectureAssignedDate:$("Architecture Team Assigned","Architecture Team Assigned"),architectureDocumentDate:$("Architecture Document Upload","Architecture Document Upload"),architectureCompletionDate:$("Architecture Team Completion","Architecture Team Completion"),loaDate:$("LOA","LOA Pending"),eorCompleteDate:$("EOR Complete","EOR Complete"),inaugurationDate:$("Inauguration","Inauguration"),onboardedDate:L.overallStatus==="Onboarded"?L.updatedAt?new Date(L.updatedAt).toISOString():new Date().toISOString():void 0,progressTracking:L.progressTracking||[],participants:L.participants||[],dealerCode:L.dealerCode,zoneId:L.zoneId,regionId:L.regionId,areaId:L.areaId,districtId:L.districtId,stageApprovals:L.stageApprovals||[],fddAssignments:L.fddAssignments||[],constitutionType:L.constitutionType,architectureStatus:L.architectureStatus,statutoryStatus:L.statutoryStatus,panNumber:L.panNumber,gstNumber:L.gstNumber,bankName:L.bankName,accountNumber:L.accountNumber,ifscCode:L.ifscCode,branchName:L.branchName,accountHolderName:L.accountHolderName,registeredAddress:L.registeredAddress};n(P),L.uploadedDocuments&&o(L.uploadedDocuments||[])}catch(L){console.error("Failed to fetch application details",L)}finally{a(!1)}},[t]),D=g.useCallback(async()=>{if(t)try{const A=await x_.getChecklist(t);A.success&&A.data&&m(A.data)}catch{m(null)}},[t]),R=A=>v.find(L=>L.depositType===A);return g.useEffect(()=>{t&&(S(),C())},[t]),g.useEffect(()=>{t&&D()},[t,s==null?void 0:s.status]),g.useEffect(()=>{if(!(s!=null&&s.id))return;(async()=>{p(!0);try{const L=await cV.getAuditLogs("application",s.id,1,100);x(Array.isArray(L)?L:[])}catch{x([])}finally{p(!1)}try{const L=await dV.getWorknotes("application",s.id);w(L.data||[])}catch{w([])}})()},[s==null?void 0:s.id]),g.useEffect(()=>{if(!t)return;(async()=>{try{const[L,$]=await Promise.all([ds.getSecurityDeposit(t),ds.getSystemConfigs({category:"SECURITY_DEPOSIT",format:"map"})]);N(Array.isArray(L)?L:[L].filter(Boolean)),y($||{})}catch(L){console.error("Failed to fetch payment data",L)}})()},[t]),{application:s,loading:r,setLoading:a,documents:l,setDocuments:o,eorData:d,auditLogs:f,auditLoading:h,worknotes:u,deposits:v,paymentConfigs:j,refreshDocuments:C,fetchApplication:S,fetchEorData:D,getDeposit:R}}function hV({application:t,applicationId:s,tempFirmType:n,setUpdatingFirmType:r,setShowFirmTypeModal:a,setStatutoryForm:l,setIsEditingStatutory:o,setIsSavingStatutory:d,statutoryForm:m,setFddAgencies:f,selectedAgencyId:x,setIsAssigningAgency:h,fetchApplication:p}){const u=async()=>{try{r(!0),await ds.updateApplication(s,{constitutionType:n}),ee.success("Firm type updated successfully"),a(!1),await p()}catch{ee.error("Failed to update firm type")}finally{r(!1)}},w=()=>{t&&(l({accountHolderName:t.accountHolderName||"",panNumber:t.panNumber||"",gstNumber:t.gstNumber||"",bankName:t.bankName||"",accountNumber:t.accountNumber||"",ifscCode:t.ifscCode||"",registeredAddress:t.registeredAddress||""}),o(!0))},v=async()=>{try{d(!0),await ds.updateApplication(s,m),ee.success("Statutory & Bank details updated successfully"),o(!1),await p(!0)}catch{ee.error("Failed to update details")}finally{d(!1)}},N=g.useCallback(async()=>{try{const y=await ds.getUsers({roleCode:"FDD"});f(Array.isArray(y)?y:[])}catch{f([])}},[f]);return{handleUpdateFirmType:u,handleEditStatutory:w,handleSaveStatutory:v,fetchFddAgencies:N,handleAssignAgency:async()=>{if(!x){ee.warning("Please select an agency");return}try{h(!0),await ds.assignFddAgency({applicationId:(t==null?void 0:t.id)||s,assignedToAgency:x}),await ds.addParticipant({requestId:(t==null?void 0:t.id)||s,requestType:"application",userId:x,participantType:"contributor"}),ee.success("FDD Agency assigned and added as participant"),await p()}catch{ee.error("Failed to assign agency")}finally{h(!1)}}}}function mV({application:t,documents:s,interviews:n,eorData:r,getDeposit:a,documentConfigs:l=[]}){var N;const o=j=>String(j||"").trim().toLowerCase().replace(/[_\s-]+/g," "),d=(j,y)=>{var D,R,A;const C=[(D=j==null?void 0:j.user)==null?void 0:D.role,(R=j==null?void 0:j.user)==null?void 0:R.roleCode,(A=j==null?void 0:j.metadata)==null?void 0:A.role].map(o),S=y.map(o);return C.some(L=>S.includes(L))},m=j=>{var y,C,S,D,R;return`${((y=j==null?void 0:j.user)==null?void 0:y.fullName)||((C=j==null?void 0:j.user)==null?void 0:C.name)||"User"} (${((S=j==null?void 0:j.user)==null?void 0:S.role)||((D=j==null?void 0:j.user)==null?void 0:D.roleCode)||((R=j==null?void 0:j.metadata)==null?void 0:R.role)||(j==null?void 0:j.participantType)||"participant"})`},f=j=>(s||[]).some(y=>y.documentType===j),x=()=>{const j=t.progressTracking||[],y=j.find(C=>C.stageName==="Security Deposit")||j.find(C=>C.stageName==="Security Details");return y!=null&&y.status?y.status:"pending"},h=(j,y="pending")=>{const C=(t.progressTracking||[]).find(S=>S.stageName===j);return C!=null&&C.status?C.status:y},p=[{id:1,name:"Submitted",status:"completed",date:t.submissionDate,description:"Application submitted",documentsUploaded:3},{id:2,name:"Questionnaire",status:h("Questionnaire"),date:t.questionnaireDate,description:"Questionnaire completed",documentsUploaded:0},{id:3,name:"Shortlist",status:h("Shortlist"),date:t.shortlistDate,description:"Application shortlisted by DD",evaluators:Array.from(new Set((t.participants||[]).filter(j=>j.participantType==="assignee").map(j=>{var y,C,S;return`${((y=j.user)==null?void 0:y.fullName)||((C=j.user)==null?void 0:C.name)||"User"} (${((S=j.user)==null?void 0:S.roleCode)||j.participantType})`}))),documentsUploaded:2},{id:4,name:"1st Level Interview",status:h("1st Level Interview"),date:t.level1InterviewDate,description:"DD-ZM + RBM evaluation",evaluators:Array.from(new Set((t.participants||[]).filter(j=>{var y,C,S,D,R,A;return((y=j.metadata)==null?void 0:y.interviewLevel)===1||((C=j.metadata)==null?void 0:C.interviewLevel)==="1"||((D=(S=j.metadata)==null?void 0:S.allAssignments)==null?void 0:D.includes(1))||((A=(R=j.metadata)==null?void 0:R.allAssignments)==null?void 0:A.includes("1"))||d(j,["DD-ZM","RBM"])}).map(m))),documentsUploaded:1},{id:5,name:"2nd Level Interview",status:h("2nd Level Interview"),date:t.level2InterviewDate,description:"DD Lead + ZBH evaluation",evaluators:Array.from(new Set((t.participants||[]).filter(j=>{var y,C,S,D,R,A;return((y=j.metadata)==null?void 0:y.interviewLevel)===2||((C=j.metadata)==null?void 0:C.interviewLevel)==="2"||((D=(S=j.metadata)==null?void 0:S.allAssignments)==null?void 0:D.includes(2))||((A=(R=j.metadata)==null?void 0:R.allAssignments)==null?void 0:A.includes("2"))||d(j,["DD Lead","ZBH"])}).map(m))),documentsUploaded:1},{id:6,name:"3rd Level Interview",status:h("3rd Level Interview"),date:t.level3InterviewDate,description:"NBH + DD Head evaluation",evaluators:Array.from(new Set((t.participants||[]).filter(j=>{var y,C,S,D,R,A;return((y=j.metadata)==null?void 0:y.interviewLevel)===3||((C=j.metadata)==null?void 0:C.interviewLevel)==="3"||((D=(S=j.metadata)==null?void 0:S.allAssignments)==null?void 0:D.includes(3))||((A=(R=j.metadata)==null?void 0:R.allAssignments)==null?void 0:A.includes("3"))||d(j,["NBH","DD Head"])}).map(m))),documentsUploaded:2},{id:7,name:"FDD",status:h("FDD"),date:t.fddDate,description:"Financial Due Diligence",documentsUploaded:5},{id:8,name:"LOI Approval",status:h("LOI Approval"),date:t.loiApprovalDate,description:"Letter of Intent approval",evaluators:Array.from(new Set((t.participants||[]).filter(j=>{var y,C,S;return((y=j.metadata)==null?void 0:y.stageCode)==="LOI_APPROVAL"||((S=(C=j.metadata)==null?void 0:C.allAssignments)==null?void 0:S.includes("LOI_APPROVAL"))}).map(m))),documentsUploaded:1},{id:9,name:"Security Deposit",status:x(),date:t.securityDetailsDate,description:"Security Deposit verification",documentsUploaded:3},(()=>{const j=l.filter(R=>R.stageCode==="LOI Issue"||R.stageCode==="LOI Documents"),C=(j.length?j.map(R=>R.documentType):["Letter of Intent","Signed LOI"]).every(R=>f(R)||R==="Letter of Intent"&&f("LOI")||R==="Signed LOI"&&f("LOI Signed Copy")),S=h("LOI Approval")==="completed";return{id:10,name:"LOI Documents",status:C?"completed":S?"active":"pending",description:"Upload Letter of Intent documents before issuance",isParallel:!0,branches:[{name:"Documents Required",color:"green",stages:j.length?j.map((R,A)=>({id:`10a-${A}`,name:R.documentType,status:f(R.documentType)?"completed":"active",description:R.isMandatory?`Upload ${R.documentType} (Mandatory)`:`Upload ${R.documentType}`})):[{id:"10a-1",name:"Letter of Intent",status:f("Letter of Intent")||f("LOI")?"completed":"active",description:"Letter of Intent document"},{id:"10a-2",name:"Signed LOI",status:f("Signed LOI")||f("LOI Signed Copy")?"completed":"active",description:"Signed Letter of Intent"}]}]}})(),{id:11,name:"LOI Issue",status:h("LOI Issue"),date:t.loiIssueDate,description:"Letter of Intent issued"},{id:12,name:"Dealer Code Generation",status:h("Dealer Code Generation"),date:t.dealerCodeDate,description:"Dealer code generated and assigned",isParallel:!0,branches:[{name:"Architectural Work",color:"green",stages:[{id:"12a-1",name:"Architecture Assignment",status:t.architectureAssignedTo?"completed":t.status==="Architecture Team Assigned"?"active":"pending",description:"Assigned to architecture team"},{id:"12a-2",name:"Site Plan Blueprint",status:f("Architecture Blueprint")?"completed":t.architectureAssignedTo?"active":"pending",description:"Blueprints and site plans"},{id:"12a-3",name:"Architecture Work",status:t.architectureStatus==="COMPLETED"?"completed":t.architectureStatus==="IN_PROGRESS"||f("Architecture Blueprint")?"active":"pending",description:"Final architecture approval"}]},{name:"Statutory Documents",color:"green",stages:[{id:"12b-1",name:"GST",status:f("GST Certificate")||f("GST")?"completed":"active",description:"GST certificate"},{id:"12b-2",name:"PAN",status:f("PAN Card")||f("PAN")?"completed":"active",description:"PAN card"},{id:"12b-3",name:"Nodal Agreement",status:f("Nodal Agreement")?"completed":"active",description:"Nodal agreement document"},{id:"12b-4",name:"Cancelled Check",status:f("Cancelled Check")?"completed":"active",description:"Cancelled check copy"},{id:"12b-5",name:"Partnership Deed/LLP/MOA/AOA/COI",status:f("Partnership Deed/LLP/MOA/AOA/COI")||f("Partnership Deed")?"completed":"active",description:"Business entity documents"},{id:"12b-6",name:"Firm Registration Certificate",status:f("Firm Registration Certificate")||f("Firm Registration")?"completed":"active",description:"Firm registration certificate"},{id:"12b-7",name:"Rental agreement/ Lease agreement / Own/ Land agreement",status:f("Rental agreement/ Lease agreement / Own/ Land agreement")||f("Property Document")?"completed":"active",description:"Property agreement document"},{id:"12b-8",name:"Virtual Code",status:f("Virtual Code")||f("Virtual Code Confirmation")?"completed":"active",description:"Virtual code availability"},{id:"12b-9",name:"Domain ID",status:f("Domain ID")||f("Domain ID Setup")?"completed":"active",description:"Domain ID setup"},{id:"12b-10",name:"MSD Configuration",status:f("MSD Configuration")?"completed":"active",description:"Microsoft Dynamics configuration"},{id:"12b-11",name:"LOI Acknowledgement Copy",status:f("LOI Acknowledgement Copy")||f("LOI Acknowledgement")?"completed":"active",description:"LOI acknowledgement copy"}]}]},{id:13,name:"LOA",status:h("LOA"),isLocked:t.status==="LOA Pending"&&((N=a("FIRST_FILL"))==null?void 0:N.status)!=="Verified",lockMessage:"First Fill (₹15L) must be verified by Finance before LOA Approval.",evaluators:Array.from(new Set((t.participants||[]).filter(j=>{var y,C,S;return((y=j.metadata)==null?void 0:y.stageCode)==="LOA_APPROVAL"||((S=(C=j.metadata)==null?void 0:C.allAssignments)==null?void 0:S.includes("LOA_APPROVAL"))}).map(m))),description:"Letter of Agreement"},{id:14,name:"EOR Complete",status:h("EOR Complete"),description:"Essential Operating Requirements"},{id:15,name:"Inauguration",status:h("Inauguration"),description:"Dealership inauguration"},{id:16,name:"Dealership Active",status:h("Onboarded"),description:"Dealer profile active"}],u=[{id:1,item:"Sales Standards",completed:!1},{id:2,item:"Service & Spares",completed:!1},{id:3,item:"DMS infra",completed:!1},{id:4,item:"Manpower Training",completed:!1},{id:5,item:"Trade certificate with test ride bikes registration",completed:!1},{id:6,item:"GST certificate including Accessories & Apparels billing",completed:!1},{id:7,item:"Inventory Funding",completed:!1},{id:8,item:"Virtual code availability",completed:!1},{id:9,item:"Vendor payments",completed:!1},{id:10,item:"Details for website submission",completed:!1},{id:11,item:"Infra Insurance both Showroom and Service center",completed:!1},{id:12,item:"Auto ordering",completed:!1}],w=p.reduce((j,y)=>(j.push({name:y.name}),y.branches&&y.branches.forEach(C=>C.stages.forEach(S=>j.push({name:S.name,parentBranch:C.name}))),(y.name==="EOR In Progress"||y.name==="EOR Complete")&&((r==null?void 0:r.items)||u).forEach(C=>j.push({name:`EOR: ${C.description||C.item}`,parentBranch:"EOR"})),j),[]);return{processStages:p,eorChecklist:u,flattenedStages:w,getDocumentsForStage:j=>s.filter(y=>{var C;return y.stage===j||!y.stage&&((C=y.documentType)==null?void 0:C.toLowerCase().includes(j.toLowerCase().split(" ")[0]))})}}const TS=()=>{var _d;const{id:t}=gd(),s=tr(),{user:n}=Fn(yr=>yr.auth),r=t||"",a=()=>s(-1),[l,o]=g.useState(null);g.useEffect(()=>{r&&Zl.getBatchStatus([{entityType:"application",entityId:r}]).then(yr=>{yr!=null&&yr.success&&o(yr.data[`application:${r}`]??null)}).catch(()=>o(null))},[r]);const{application:d,loading:m,setLoading:f,documents:x,setDocuments:h,eorData:p,auditLogs:u,auditLoading:w,worknotes:v,deposits:N,paymentConfigs:j,refreshDocuments:y,fetchApplication:C,fetchEorData:S,getDeposit:D}=uV({applicationId:r}),R=p!=null&&p.items?p.items.filter(yr=>yr.isCompliant).length/p.items.length*100:0,A=Ui(),{showFirmTypeModal:L,setShowFirmTypeModal:$,updatingFirmType:P,setUpdatingFirmType:E,tempFirmType:O,setTempFirmType:I,activeTab:q,setActiveTab:G,showApproveModal:Y,setShowApproveModal:V,showOnboardModal:Q,setShowOnboardModal:_,isOnboarding:z,setIsOnboarding:T,showRejectModal:F,setShowRejectModal:B,rejectionReason:K,setRejectionReason:W,scheduledInterviewParticipants:H,setScheduledInterviewParticipants:X,showScheduleModal:J,setShowScheduleModal:ie,showCancelInterviewModal:ae,setShowCancelInterviewModal:xe,interviewIdToCancel:ce,setInterviewIdToCancel:we,interviewToReschedule:ke,setInterviewToReschedule:Xe,showKTMatrixModal:Ot,setShowKTMatrixModal:bt,showLevel2FeedbackModal:te,setShowLevel2FeedbackModal:ve,showLevel3FeedbackModal:qe,setShowLevel3FeedbackModal:ge,showDocumentsModal:Be,setShowDocumentsModal:ut,showAssignModal:ht,setShowAssignModal:it,selectedStage:Tt,setSelectedStage:It,interviewMode:he,setInterviewMode:vt,approvalRemark:mt,setApprovalRemark:_e,expandedBranches:Vt,setExpandedBranches:Et,users:Ds,setUsers:ln,selectedUser:Bs,setSelectedUser:Ys,participantType:Xs,setParticipantType:Js,interviewDate:Ws,setInterviewDate:Z,interviewType:oe,setInterviewType:Ne,meetingLink:Oe,setMeetingLink:De,location:ye,setLocation:Ve,showUploadForm:Ge,setShowUploadForm:st,uploadFile:Kt,setUploadFile:Xt,uploadDocType:ot,setUploadDocType:ft,approvalFile:Es,setApprovalFile:ts,isUploading:vs,setIsUploading:Te,previewDoc:je,setPreviewDoc:nt,showPreviewModal:Ye,setShowPreviewModal:pt,selectedInterviewerId:yt,setSelectedInterviewerId:Jt,isEditingStatutory:ss,setIsEditingStatutory:Ss,statutoryForm:Zs,setStatutoryForm:on,isSavingStatutory:en,setIsSavingStatutory:tn,interviews:cn,setInterviews:Ae,isScheduling:Ht,setIsScheduling:Pe,isCancellingInterview:ct,setIsCancellingInterview:tt,showAssignArchitectureModal:Nt,setShowAssignArchitectureModal:Mt,architectureLeadId:Pt,setArchitectureLeadId:ys,isAssigningArchitecture:Yt,setIsAssigningArchitecture:ps,showArchitectureStatusModal:ks,setShowArchitectureStatusModal:hs,architectureStatus:gn,setArchitectureStatus:$s,architectureRemarks:dn,setArchitectureRemarks:sn,isUpdatingArchitecture:We,setIsUpdatingArchitecture:Ft,isAssigningParticipant:gt,setIsAssigningParticipant:rt,documentConfigs:Is,setDocumentConfigs:xs,fddAgencies:Nn,setFddAgencies:kn,selectedAgencyId:Cn,setSelectedAgencyId:Us,isAssigningAgency:Za,setIsAssigningAgency:Pa,showAssignFddModal:Ms,setShowAssignFddModal:un,isApproving:ta,setIsApproving:sa,isRejecting:na,setIsRejecting:Mr,ktMatrixScores:Xn,setKtMatrixScores:zn,ktMatrixSelectedValues:Zt,setKtMatrixSelectedValues:Jn,ktMatrixRemarks:Er,setKtMatrixRemarks:Gn,ktMatrixRecommendation:_r,setKtMatrixRecommendation:On,isSubmittingKT:ur,setIsSubmittingKT:ns,selectedInterviewForFeedback:nn,setSelectedInterviewForFeedback:va,showFddFinalizeModal:Si,setShowFddFinalizeModal:Ci,showFddFlagModal:Fr,setShowFddFlagModal:Hr,fddAuditRecommendation:sr,setFddAuditRecommendation:ya,fddAuditFindings:Gi,setFddAuditFindings:bo,isFinalizingFdd:Oa,setIsFinalizingFdd:An,isFddFlagging:ba,setIsFddFlagging:Ki,level2Feedback:Wr,setLevel2Feedback:jo,level2Recommendation:Yi,setLevel2Recommendation:No,isSubmittingLevel2:Ai,setIsSubmittingLevel2:wl,level3Feedback:Sl,setLevel3Feedback:hn,level3Recommendation:ne,setLevel3Recommendation:re,isSubmittingLevel3:me,setIsSubmittingLevel3:pe,showFeedbackDetailsModal:Se,setShowFeedbackDetailsModal:ze,selectedEvaluationForView:Ue,setSelectedEvaluationForView:dt}=nV({initialTab:((_d=A.state)==null?void 0:_d.activeTab)||"questionnaire"}),is=(v||[]).some(yr=>(yr.noteText||"").includes("FLAGGED:"))||(d==null?void 0:d.statutoryStatus)==="Flagged",{handleUpdateFirmType:Ut,handleEditStatutory:Lt,handleSaveStatutory:Cs,fetchFddAgencies:vn,handleAssignAgency:nr}=hV({application:d,applicationId:r,tempFirmType:O,setUpdatingFirmType:E,setShowFirmTypeModal:$,setStatutoryForm:on,setIsEditingStatutory:Ss,setIsSavingStatutory:tn,statutoryForm:Zs,setFddAgencies:kn,selectedAgencyId:Cn,setIsAssigningAgency:Pa,fetchApplication:C}),Bt=(n==null?void 0:n.roleCode)==="Super Admin"||(n==null?void 0:n.roleCode)==="DD Admin"||(n==null?void 0:n.role)==="Super Admin"||(n==null?void 0:n.role)==="DD Admin",As=(n==null?void 0:n.roleCode)==="Super Admin"||(n==null?void 0:n.roleCode)==="DD Admin"||(n==null?void 0:n.role)==="Super Admin"||(n==null?void 0:n.role)==="DD Admin"||(n==null?void 0:n.role)==="NBH"||(n==null?void 0:n.role)==="DD Head"||(n==null?void 0:n.roleCode)==="NBH"||(n==null?void 0:n.roleCode)==="DD_HEAD",os=(n==null?void 0:n.roleCode)==="Super Admin"||(n==null?void 0:n.roleCode)==="DD Admin"||(n==null?void 0:n.roleCode)==="Finance"||(n==null?void 0:n.roleCode)==="Finance Admin"||(n==null?void 0:n.role)==="Super Admin"||(n==null?void 0:n.role)==="DD Admin"||(n==null?void 0:n.role)==="Finance"||(n==null?void 0:n.role)==="Finance Admin";g.useEffect(()=>{(async()=>{try{const El=await ds.getDocumentConfigs({limit:1e3}),Pp=El.data||(Array.isArray(El)?El:[]);xs(Pp)}catch(El){console.error("Failed to fetch document configs:",El)}})()},[xs]),g.useEffect(()=>{J&&d&&(d.status==="Shortlisted"||d.status==="Questionnaire Completed"?Ne("level1"):d.status==="Level 1 Approved"?Ne("level2"):(d.status==="Level 2 Approved"||d.status==="Level 2 Recommended")&&Ne("level3"))},[J,d==null?void 0:d.status,Ne]);const En=async()=>{if(r)try{const yr=await ds.getInterviews(r);Ae(yr||[])}catch(yr){console.error("Failed to fetch interviews",yr)}};g.useEffect(()=>{En()},[r]);const{ktMatrixConfig:Tr,level2Config:Kn,level3Config:xr}=lV(),{handleKTMatrixChange:Gr,calculateKTScore:Qa,handleSubmitKTMatrix:gr,handleLevel2Change:wo,handleSubmitLevel2Feedback:Cl,handleLevel3Change:gc,handleSubmitLevel3Feedback:So,ktCriteria:Al,l2Fields:Zi,l3Fields:Xa}=iV({ktMatrixScores:Xn,setKtMatrixScores:zn,setKtMatrixSelectedValues:Jn,ktMatrixRemarks:Er,setKtMatrixRemarks:Gn,ktMatrixRecommendation:_r,setKtMatrixRecommendation:On,selectedInterviewForFeedback:nn,interviews:cn,setIsSubmittingKT:ns,setShowKTMatrixModal:bt,level2Feedback:Wr,setLevel2Feedback:jo,level2Recommendation:Yi,setLevel2Recommendation:No,setIsSubmittingLevel2:wl,setShowLevel2FeedbackModal:ve,level3Feedback:Sl,setLevel3Feedback:hn,level3Recommendation:ne,setLevel3Recommendation:re,setIsSubmittingLevel3:pe,setShowLevel3FeedbackModal:ge,currentUser:n,fetchInterviews:En,fetchApplication:C,ktMatrixConfig:Tr,level2Config:Kn,level3Config:xr});g.useEffect(()=>{["documents","progress","fdd","eor"].includes(q)&&r&&y(),q==="fdd"&&((n==null?void 0:n.role)==="DD Admin"||(n==null?void 0:n.role)==="Super Admin")&&vn()},[q,r,y,vn,n==null?void 0:n.role]);const{handleAddInterviewer:vc,handleRemoveInterviewer:vr,maybeFetchUsersForModal:Co,handleScheduleInterview:La,handleRescheduleInterview:kl,handleConfirmCancelInterview:Qi,handleUpload:Ia,handleApprove:Ja,handleReject:Dl,handleGenerateDealerCodes:Xi,handleAssignArchitecture:Ao,handleUpdateArchitectureStatus:ch,handleAddParticipant:Rl,handleRetriggerEvaluators:Dp}=oV({application:d,applicationId:r,currentUser:n,interviews:cn,approvalFile:Es,approvalRemark:mt,rejectionReason:K,architectureLeadId:Pt,architectureStatus:gn,architectureRemarks:dn,selectedUser:Bs,participantType:Xs,users:Ds,interviewDate:Ws,setInterviewDate:Z,interviewType:oe,setInterviewType:Ne,interviewMode:he,setInterviewMode:vt,meetingLink:Oe,setMeetingLink:De,location:ye,setLocation:Ve,scheduledInterviewParticipants:H,uploadFile:Kt,uploadDocType:ot,selectedStage:Tt,setIsApproving:sa,setShowApproveModal:V,setApprovalRemark:_e,setApprovalFile:ts,setIsRejecting:Mr,setShowRejectModal:B,setRejectionReason:W,setIsAssigningArchitecture:ps,setShowAssignArchitectureModal:Mt,setIsUpdatingArchitecture:Ft,setShowArchitectureStatusModal:hs,setIsAssigningParticipant:rt,setSelectedUser:Ys,setShowAssignModal:it,setLoading:f,setIsScheduling:Pe,setShowScheduleModal:ie,setShowCancelInterviewModal:xe,interviewIdToCancel:ce,setInterviewIdToCancel:we,interviewToReschedule:ke,setInterviewToReschedule:Xe,setIsCancellingInterview:tt,setIsUploading:Te,setShowUploadForm:st,setUploadFile:Xt,setUploadDocType:ft,setDocuments:h,selectedInterviewerId:yt,setSelectedInterviewerId:Jt,setScheduledInterviewParticipants:X,setUsers:ln,showScheduleModal:J,showAssignArchitectureModal:Nt,showAssignModal:ht,fetchApplication:C,fetchInterviews:En,fetchEorData:S});if(g.useEffect(()=>{Co()},[J,Nt,ht,oe,d==null?void 0:d.id,Co]),m&&!d)return e.jsx("div",{className:"flex items-center justify-center min-h-[60vh]",children:e.jsx(es,{className:"w-10 h-10 animate-spin text-re-red"})});if(!d)return e.jsx("div",{className:"flex justify-center items-center h-96",children:"Application not found"});const{processStages:Rp,eorChecklist:Ep,flattenedStages:dh,getDocumentsForStage:uh}=mV({application:d,documents:x,interviews:cn,eorData:p,getDeposit:D,documentConfigs:Is}),{activeInterviewForUser:ko,currentUserEvaluation:Do,hasSubmittedFeedback:_p,currentUserStageAction:yc,isInterviewCompleted:Tp,isInterviewActive:hh,permissions:Rd}=sV({application:d,interviews:cn,currentUser:n,getDeposit:D,eorProgress:R}),Ed=()=>e.jsx(QU,{application:d,documents:x,setPreviewDoc:nt,setShowPreviewModal:pt,setIsUploading:Te,fetchApplication:C,refreshDocuments:y});return e.jsxs("div",{className:"space-y-6",children:[e.jsx(_U,{application:d,slaStatus:l,isNonResponsive:is,isAdmin:As,onBack:a,onOpenWorknotes:()=>s(`/worknotes/application/${d.id}`,{state:{applicationName:d.name,registrationNumber:d.registrationNumber,participants:d.participants}})}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[e.jsxs("div",{className:"lg:col-span-2 space-y-6",children:[e.jsx(FU,{application:d,canEditStatutory:Bt,isEditingStatutory:ss,isSavingStatutory:en,statutoryForm:Zs,onEditFirmType:()=>{I(d.constitutionType||""),$(!0)},onEditStatutory:Lt,onCancelEditStatutory:()=>Ss(!1),onSaveStatutory:Cs,onStatutoryFormChange:on}),d.isShortlisted!==!1&&e.jsx(zU,{application:d,activeTab:q,setActiveTab:G,processStages:Rp,documents:x,interviews:cn,expandedBranches:Vt,setExpandedBranches:Et,setSelectedStage:It,setShowDocumentsModal:ut,setShowUploadForm:st,handleRetriggerEvaluators:Dp,handleRescheduleInterview:kl,setSelectedEvaluationForView:dt,setShowFeedbackDetailsModal:ze,renderFddAuditContent:Ed,eorProgress:R,eorData:p,eorChecklist:Ep,setUploadDocType:ft,isAdmin:As,canViewFinanceTabs:os,fetchApplication:C,fetchEorData:S,deposits:N,getDeposit:D,paymentConfigs:j,setPreviewDoc:nt,setShowPreviewModal:pt,auditLoading:w,auditLogs:u,auditLogActionBadgeClass:XU})]}),e.jsx(GU,{application:d,permissions:Rd,getDeposit:D,isNonResponsive:is,isAdmin:As,currentUserStageAction:yc,currentUserEvaluation:Do,onOpenApproveModal:()=>V(!0),onOpenRejectModal:()=>B(!0),onOpenWorknote:()=>s(`/worknotes/application/${d.id}`,{state:{applicationName:d.name,registrationNumber:d.registrationNumber,participants:d.participants}}),onOpenScheduleModal:()=>ie(!0),currentUser:n,handleGenerateDealerCodes:Xi,onOpenAssignArchitectureModal:()=>Mt(!0),onOpenAssignFdd:()=>{Us(""),vn(),un(!0)},showAssignFddModal:Ms,setShowAssignFddModal:un,fddAgencies:Nn,selectedAgencyId:Cn,setSelectedAgencyId:Us,isAssigningAgency:Za,handleAssignAgency:async()=>{await nr(),un(!1)},activeInterviewForUser:ko,hasSubmittedFeedback:_p,setSelectedInterviewForFeedback:va,setShowKTMatrixModal:bt,setShowLevel2FeedbackModal:ve,setShowLevel3FeedbackModal:ge,onGoToDashboard:()=>s("/dashboard"),showAssignModal:ht,setShowAssignModal:it,selectedUser:Bs,setSelectedUser:Ys,users:Ds,participantType:Xs,setParticipantType:Js,handleAddParticipant:Rl,isAssigningParticipant:gt,documents:x,documentConfigs:Is}),e.jsx(KU,{application:d,fetchApplication:C,showApproveModal:Y,setShowApproveModal:V,approvalRemark:mt,setApprovalRemark:_e,setApprovalFile:ts,isApproving:ta,handleApprove:Ja,showOnboardModal:Q,setShowOnboardModal:_,isOnboarding:z,setIsOnboarding:T,showRejectModal:F,setShowRejectModal:B,rejectionReason:K,setRejectionReason:W,isRejecting:na,handleReject:Dl,showScheduleModal:J,setShowScheduleModal:ie,showCancelInterviewModal:ae,setShowCancelInterviewModal:xe,setInterviewIdToCancel:we,isCancellingInterview:ct,handleConfirmCancelInterview:Qi,interviewToReschedule:ke,setInterviewToReschedule:Xe,interviewType:oe,setInterviewType:Ne,interviewMode:he,setInterviewMode:vt,interviewDate:Ws,setInterviewDate:Z,meetingLink:Oe,setMeetingLink:De,location:ye,setLocation:Ve,isInterviewCompleted:Tp,isInterviewActive:hh,users:Ds,selectedInterviewerId:yt,setSelectedInterviewerId:Jt,handleAddInterviewer:vc,scheduledInterviewParticipants:H,handleRemoveInterviewer:vr,isScheduling:Ht,handleScheduleInterview:La,showAssignArchitectureModal:Nt,setShowAssignArchitectureModal:Mt,architectureLeadId:Pt,setArchitectureLeadId:ys,isAssigningArchitecture:Yt,handleAssignArchitecture:Ao,showArchitectureStatusModal:ks,setShowArchitectureStatusModal:hs,architectureStatus:gn,setArchitectureStatus:$s,architectureRemarks:dn,setArchitectureRemarks:sn,isUpdatingArchitecture:We,handleUpdateArchitectureStatus:ch}),e.jsx(YU,{application:d,ktCriteria:Al,l2Fields:Zi,l3Fields:Xa,showKTMatrixModal:Ot,setShowKTMatrixModal:bt,ktMatrixSelectedValues:Zt,handleKTMatrixChange:Gr,ktMatrixRemarks:Er,setKtMatrixRemarks:Gn,ktMatrixRecommendation:_r,setKtMatrixRecommendation:On,calculateKTScore:Qa,handleSubmitKTMatrix:gr,isSubmittingKT:ur,showLevel2FeedbackModal:te,setShowLevel2FeedbackModal:ve,level2Feedback:Wr,handleLevel2Change:wo,level2Recommendation:Yi,setLevel2Recommendation:No,handleSubmitLevel2Feedback:Cl,isSubmittingLevel2:Ai,showFeedbackDetailsModal:Se,setShowFeedbackDetailsModal:ze,selectedEvaluationForView:Ue,selectedInterviewForFeedback:nn,showLevel3FeedbackModal:qe,setShowLevel3FeedbackModal:ge,level3Feedback:Sl,handleLevel3Change:gc,level3Recommendation:ne,setLevel3Recommendation:re,handleSubmitLevel3Feedback:So,isSubmittingLevel3:me,showDocumentsModal:Be,setShowDocumentsModal:ut,showUploadForm:Ge,setShowUploadForm:st,selectedStage:Tt,getDocumentsForStage:uh,setPreviewDoc:nt,setShowPreviewModal:pt,flattenedStages:dh,setSelectedStage:It,uploadDocType:ot,setUploadDocType:ft,setUploadFile:Xt,isUploading:vs,handleUpload:Ia,uploadFile:Kt,documentConfigs:Is,showPreviewModal:Ye,previewDoc:je,showFddFinalizeModal:Si,setShowFddFinalizeModal:Ci,currentUser:n,fddAuditRecommendation:sr,setFddAuditRecommendation:ya,fddAuditFindings:Gi,setFddAuditFindings:bo,isFinalizingFdd:Oa,setIsFinalizingFdd:An,fetchApplication:C,showFddFlagModal:Fr,setShowFddFlagModal:Hr,isFddFlagging:ba,setIsFddFlagging:Ki,showFirmTypeModal:L,setShowFirmTypeModal:$,tempFirmType:O,setTempFirmType:I,updatingFirmType:P,handleUpdateFirmType:Ut})]})]})};function xc(t,s=!0){const[n,r]=g.useState({});return g.useEffect(()=>{if(!s||t.length===0){r({});return}Zl.getBatchStatus(t).then(l=>{l!=null&&l.success&&r(l.data)}).catch(()=>r({}))},[s,JSON.stringify(t.map(l=>`${l.entityType}:${l.entityId}`).sort())]),{byKey:n,get:(l,o)=>n[`${l}:${o}`]??null}}const Gg=t=>t.includes("Approved")||t.includes("Completed")?"bg-green-100 text-green-700 border-green-300":t.includes("Review")||t.includes("Pending")?"bg-yellow-100 text-yellow-700 border-yellow-300":t.includes("Rejected")?"bg-red-100 text-red-700 border-red-300":"bg-blue-100 text-blue-700 border-blue-300";function fV({onViewDetails:t}){const[s,n]=g.useState([]),[r,a]=g.useState(!0),[l,o]=g.useState(1),[d,m]=g.useState("all"),[f,x]=g.useState(null),h=10,p=async()=>{var y;a(!0);try{const S=(await Ee.getResignations({page:l,limit:h,status:d==="all"?void 0:d==="open"?"open":"Completed,Closed"})).data;S!=null&&S.success&&(n(S.requests||((y=S.resignations)==null?void 0:y.rows)||S.resignations||[]),x(S.meta))}catch(C){console.error("Error fetching resignations:",C),ee.error("Failed to fetch resignation requests")}finally{a(!1)}};g.useEffect(()=>{p()},[l,d]);const u=y=>{m(y),o(1)},w=d==="open"?s:[],v=d==="completed"?s:[],N=s.map(y=>({entityType:"resignation",entityId:y.id})),{get:j}=xc(N,s.length>0);return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs(Le,{children:[e.jsxs(Qe,{className:"pb-3",children:[e.jsx(Qt,{children:"All Requests"}),e.jsx(et,{className:"text-3xl",children:(f==null?void 0:f.total)||0})]}),e.jsx(Fe,{children:e.jsx("p",{className:"text-slate-600",children:"Total Requests"})})]}),e.jsxs(Le,{children:[e.jsxs(Qe,{className:"pb-3",children:[e.jsx(Qt,{children:"Open"}),e.jsx(et,{className:"text-3xl text-yellow-600",children:d==="open"?(f==null?void 0:f.total)||0:"..."})]}),e.jsx(Fe,{children:e.jsx("p",{className:"text-slate-600",children:"Requires Your Action"})})]}),e.jsxs(Le,{children:[e.jsxs(Qe,{className:"pb-3",children:[e.jsx(Qt,{children:"Completed"}),e.jsx(et,{className:"text-3xl text-green-600",children:d==="completed"?(f==null?void 0:f.total)||0:"..."})]}),e.jsx(Fe,{children:e.jsx("p",{className:"text-slate-600",children:"Finalized"})})]})]}),e.jsxs(Le,{children:[e.jsx(Qe,{children:e.jsx("div",{className:"flex items-center justify-between",children:e.jsxs("div",{children:[e.jsx(et,{children:"Resignation Requests"}),e.jsxs(Qt,{children:["Track and manage dealer resignation requests",e.jsx("span",{className:"block mt-1 text-slate-500",children:"• Note: Resignation requests are initiated by the dealer or via ASM."})]})]})})}),e.jsx(Fe,{children:e.jsxs($n,{value:d,onValueChange:u,className:"w-full",children:[e.jsxs(qn,{children:[e.jsx(zt,{value:"all",children:"All Requests"}),e.jsx(zt,{value:"open",children:"Open"}),e.jsx(zt,{value:"completed",children:"Completed"})]}),e.jsx(qt,{value:"all",className:"mt-6",children:e.jsx("div",{className:"space-y-4 text-center py-1",children:r?e.jsx("div",{className:"text-center py-12",children:"Loading requests..."}):s.length>0?e.jsxs(e.Fragment,{children:[s.map(y=>{var C,S,D,R,A,L,$,P,E,O,I;return e.jsx(Le,{className:"border-slate-200",children:e.jsx(Fe,{className:"pt-6",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex items-start gap-4 flex-1",children:[e.jsx("div",{className:"p-3 bg-red-50 rounded-lg",children:e.jsx(Ns,{className:"w-6 h-6 text-re-red"})}),e.jsxs("div",{className:"flex-1 text-left",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("h3",{className:"text-lg",children:y.resignationId}),e.jsx(Ce,{className:Gg(y.status),children:y.status}),e.jsx(kr,{status:j("resignation",y.id),compact:!0})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Dealer Name"}),e.jsx("p",{children:((S=(C=y.dealer)==null?void 0:C.dealerProfile)==null?void 0:S.businessName)||((D=y.outlet)==null?void 0:D.name)||"N/A"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Dealer Code"}),e.jsx("p",{children:((L=(A=(R=y.dealer)==null?void 0:R.dealerProfile)==null?void 0:A.dealerCode)==null?void 0:L.dealerCode)||(($=y.outlet)==null?void 0:$.code)||"N/A"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Location"}),e.jsx("p",{children:((E=(P=y.dealer)==null?void 0:P.dealerProfile)==null?void 0:E.registeredAddress)||((O=y.outlet)!=null&&O.city&&((I=y.outlet)!=null&&I.state)?`${y.outlet.city}, ${y.outlet.state}`:"N/A")})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Type"}),e.jsx("p",{children:y.resignationType})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Reason"}),e.jsx("p",{className:"truncate max-w-[200px]",children:y.reason})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Current Stage"}),e.jsx("p",{children:y.currentStage})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Submitted On"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(dr,{className:"w-4 h-4 text-slate-500"}),e.jsx("p",{children:Gt(y.submittedOn)})]})]})]})]})]}),e.jsxs(se,{size:"sm",variant:"outline",onClick:()=>t(y.id),className:"ml-4",children:[e.jsx(bn,{className:"w-4 h-4 mr-2"}),"View Details"]})]})})},y.id)}),f&&f.totalPages>1&&e.jsx("div",{className:"py-4 border-t flex justify-center",children:e.jsx(fo,{children:e.jsxs(po,{children:[e.jsx(Sn,{children:e.jsx(xo,{onClick:()=>o(y=>Math.max(1,y-1)),className:l===1?"pointer-events-none opacity-50":"cursor-pointer"})}),[...Array(f.totalPages)].map((y,C)=>{const S=C+1;return S===1||S===f.totalPages||S>=l-1&&S<=l+1?e.jsx(Sn,{children:e.jsx(Wi,{isActive:l===S,onClick:()=>o(S),className:"cursor-pointer",children:S})},S):S===2&&l>3||S===f.totalPages-1&&lo(y=>Math.min(f.totalPages,y+1)),className:l===f.totalPages?"pointer-events-none opacity-50":"cursor-pointer"})})]})})})]}):e.jsx("div",{className:"text-center py-12 text-slate-500",children:e.jsx("p",{children:"No resignation requests found"})})})}),e.jsx(qt,{value:"open",className:"mt-6",children:e.jsx("div",{className:"space-y-4",children:w.length>0?w.map(y=>{var C,S,D,R,A,L,$;return e.jsx(Le,{className:"border-slate-200",children:e.jsx(Fe,{className:"pt-6",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex items-start gap-4 flex-1",children:[e.jsx("div",{className:"p-3 bg-yellow-100 rounded-lg",children:e.jsx(Ns,{className:"w-6 h-6 text-yellow-600"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("h3",{className:"text-lg",children:y.resignationId}),e.jsx(Ce,{className:Gg(y.status),children:y.status}),e.jsx(kr,{status:j("resignation",y.id),compact:!0})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Dealer Name"}),e.jsx("p",{children:((S=(C=y.dealer)==null?void 0:C.dealerProfile)==null?void 0:S.businessName)||((D=y.outlet)==null?void 0:D.name)||"N/A"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Location"}),e.jsx("p",{children:((A=(R=y.dealer)==null?void 0:R.dealerProfile)==null?void 0:A.registeredAddress)||((L=y.outlet)!=null&&L.city&&(($=y.outlet)!=null&&$.state)?`${y.outlet.city}, ${y.outlet.state}`:"N/A")})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Current Stage"}),e.jsx("p",{children:y.currentStage})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Submitted On"}),e.jsx("p",{children:Gt(y.submittedOn)})]})]})]})]}),e.jsxs(se,{size:"sm",variant:"outline",onClick:()=>t(y.id),className:"ml-4",children:[e.jsx(bn,{className:"w-4 h-4 mr-2"}),"View Details"]})]})})},y.id)}):e.jsxs("div",{className:"text-center py-12 text-slate-500",children:[e.jsx(Ns,{className:"w-12 h-12 mx-auto mb-4 text-slate-400"}),e.jsx("p",{children:"No requests requiring your action"})]})})}),e.jsx(qt,{value:"completed",className:"mt-6",children:e.jsx("div",{className:"space-y-4",children:v.length>0?v.map(y=>{var C,S,D,R,A,L;return e.jsx(Le,{className:"border-slate-200",children:e.jsx(Fe,{className:"pt-6",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex items-start gap-4 flex-1",children:[e.jsx("div",{className:"p-3 bg-green-100 rounded-lg",children:e.jsx(Ns,{className:"w-6 h-6 text-green-600"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("h3",{className:"text-lg",children:y.resignationId}),e.jsx(Ce,{className:Gg(y.status),children:y.status}),e.jsx(kr,{status:j("resignation",y.id),compact:!0})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Dealer Name"}),e.jsx("p",{children:((S=(C=y.dealer)==null?void 0:C.dealerProfile)==null?void 0:S.businessName)||((D=y.outlet)==null?void 0:D.name)||"N/A"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Location"}),e.jsx("p",{children:((A=(R=y.dealer)==null?void 0:R.dealerProfile)==null?void 0:A.registeredAddress)||((L=y.outlet)==null?void 0:L.city)||"N/A"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Final Stage"}),e.jsx("p",{children:y.currentStage})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Submitted On"}),e.jsx("p",{children:Gt(y.submittedOn)})]})]})]})]}),e.jsxs(se,{size:"sm",variant:"outline",onClick:()=>t(y.id),className:"ml-4",children:[e.jsx(bn,{className:"w-4 h-4 mr-2"}),"View Details"]})]})})},y.id)}):e.jsxs("div",{className:"text-center py-12 text-slate-500",children:[e.jsx(Ns,{className:"w-12 h-12 mx-auto mb-4 text-slate-400"}),e.jsx("p",{children:"No completed resignations to display"})]})})})]})})]})]})}const Oi="Last Working Day",PS="Proposed Last Working Day",Vc={AWAITING_FNF:"Awaiting F&F",AWAITING_FNF_LWD_PENDING:"Awaiting F&F (LWD Pending)"},Li=fr.inProgress;function oj(t){if(!t)return"Pending";let s=t;return s=s.replace(/Personal Hearing/gi,"SCN Response Evaluation"),s=s.replace(/\(LWD Pending\)/gi,"(Last Working Day Pending)"),s=s.replace(/\bLWD\b/g,Oi),s}const pV=t=>{switch(t){case"Critical":return"bg-red-100 text-red-700 border-red-300";case"High":return"bg-orange-100 text-orange-700 border-orange-300";case"Medium":return"bg-yellow-100 text-yellow-700 border-yellow-300";case"Low":return"bg-blue-100 text-blue-700 border-blue-300";default:return"bg-slate-100 text-slate-700 border-slate-300"}},Kg=t=>t.includes("Approved")||t.includes("Terminated")?"bg-green-100 text-green-700 border-green-300":t.includes("Review")||t.includes("Pending")?"bg-yellow-100 text-yellow-700 border-yellow-300":t.includes("Rejected")?"bg-red-100 text-red-700 border-red-300":"bg-blue-100 text-blue-700 border-blue-300",lu=oj;function xV({currentUser:t,onViewDetails:s}){const[n,r]=g.useState(!1),[a,l]=g.useState([]),[o,d]=g.useState(""),[m,f]=g.useState(!1),[x,h]=g.useState(""),[p,u]=g.useState(null),[w,v]=g.useState([]),[N,j]=g.useState({}),[y,C]=g.useState(!0),[S,D]=g.useState(1),[R,A]=g.useState(null),[L,$]=g.useState("all"),P=10,[E,O]=g.useState({terminationCategory:"",reason:"",proposedLwd:"",comments:"",documents:[]}),I=async()=>{C(!0);try{const ie=(await Ee.getTerminations({page:S,limit:P,status:L==="all"?void 0:L})).data;if(ie!=null&&ie.success){v(ie.terminations),A(ie.meta);const ae=ie.terminations||[];ae.length?Zl.getBatchStatus(ae.map(xe=>({entityType:"termination",entityId:xe.id}))).then(xe=>{if(xe!=null&&xe.success){const ce={};ae.forEach(we=>{ce[we.id]=xe.data[`termination:${we.id}`]??null}),j(ce)}}).catch(()=>j({})):j({})}}catch(J){console.error("Error fetching terminations:",J),ee.error("Failed to fetch termination requests")}finally{C(!1)}};g.useEffect(()=>{I()},[S,L]);const q=J=>{$(J),D(1)};g.useEffect(()=>{if(!n||!W)return;let J=!1;return(async()=>{try{f(!0);const ae=(await Ee.getDealers({onboarded:"true",activeOnly:"true"})).data;if(!J&&(ae!=null&&ae.success)){const xe=(Array.isArray(ae.data)?ae.data:[]).filter(ce=>{var Xe,Ot;const we=String((ce==null?void 0:ce.status)||"").toLowerCase(),ke=String(((Xe=ce==null?void 0:ce.user)==null?void 0:Xe.status)||"").toLowerCase();return we==="active"&&((Ot=ce==null?void 0:ce.user)==null?void 0:Ot.isActive)&&ke==="active"});l(xe)}}catch(ie){J||(console.error("Error fetching dealers:",ie),ee.error("Failed to load dealer list"))}finally{J||f(!1)}})(),()=>{J=!0}},[n]);const G=J=>{var ie,ae,xe,ce,we,ke;return{id:J.id,dealerId:J.id,dealerCode:((ie=J.dealerCode)==null?void 0:ie.dealerCode)||"",legalName:J.legalName||"N/A",businessName:J.businessName||"N/A",gstNumber:J.gstNumber||"N/A",address:J.registeredAddress||((ae=J.application)==null?void 0:ae.preferredLocation)||"N/A",city:((xe=J.application)==null?void 0:xe.city)||"N/A",state:((ce=J.application)==null?void 0:ce.state)||"N/A",email:((we=J.user)==null?void 0:we.email)||"N/A",phoneNumber:((ke=J.user)==null?void 0:ke.mobileNumber)||"N/A"}},Y=J=>{d(J);const ie=a.find(xe=>String(xe.id)===String(J));if(!ie){h(""),u(null);return}const ae=G(ie);h(ae.dealerCode),u(ae)},V=J=>{h(J);const ie=J.trim().toLowerCase();if(!ie){d(""),u(null);return}const ae=a.find(xe=>{var ce;return String(((ce=xe.dealerCode)==null?void 0:ce.dealerCode)||"").toLowerCase()===ie});if(!ae){d(""),u(null);return}d(String(ae.id)),u(G(ae))},_=!((t==null?void 0:t.role)==="Super Admin"),z=J=>{const ie=J.name.toLowerCase();return ie.endsWith(".ppt")||ie.endsWith(".pptx")},T=(J,ie)=>{!J||J.length===0||(O(ae=>{const xe=ae.documents,ce=new Set(xe.map(ke=>`${ke.name}::${ke.size}`)),we=[];return Array.from(J).forEach(ke=>{const Xe=`${ke.name}::${ke.size}`;ce.has(Xe)||(ce.add(Xe),we.push(ke))}),{...ae,documents:[...xe,...we]}}),ie&&(ie.value=""))},F=J=>{O({...E,documents:E.documents.filter((ie,ae)=>ae!==J)})},B=async J=>{var ie,ae;if(J.preventDefault(),!p){ee.error("Please select a dealer");return}if(_){if(E.documents.length===0){ee.error("Please upload at least one Presentation (.ppt or .pptx)");return}if(!E.documents.some(z)){ee.error("At least one PowerPoint file (.ppt or .pptx) is required");return}}try{const xe=p.dealerId||p.id;if(!xe){ee.error("Dealer record not found for the selected dealer");return}let ce;if(E.documents.length>0){const Xe=new FormData;Xe.append("dealerId",String(xe)),Xe.append("category",E.terminationCategory),Xe.append("reason",E.reason),Xe.append("proposedLwd",E.proposedLwd),Xe.append("comments",E.comments),E.documents.forEach(Ot=>Xe.append("files",Ot)),ce=Xe}else ce={dealerId:xe,category:E.terminationCategory,reason:E.reason,proposedLwd:E.proposedLwd,comments:E.comments};const ke=(await Ee.createTermination(ce)).data;ke!=null&&ke.success&&(ee.success(E.documents.length>0?"Termination request and documents submitted":"Termination request submitted successfully"),r(!1),I(),d(""),h(""),l([]),u(null),O({terminationCategory:"",reason:"",proposedLwd:"",comments:"",documents:[]}))}catch(xe){console.error("Error submitting termination:",xe),ee.error(((ae=(ie=xe.response)==null?void 0:ie.data)==null?void 0:ae.message)||"Failed to submit termination request")}},K=["DD Lead","ASM","DD Admin","DD AM","Super Admin"],W=(t==null?void 0:t.role)&&K.includes(t.role),H=L==="open"||L==="all"?w:[],X=L==="completed"||L==="all"?w:[];return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs(Le,{children:[e.jsxs(Qe,{className:"pb-3",children:[e.jsx(Qt,{children:"All Cases"}),e.jsx(et,{className:"text-3xl",children:(R==null?void 0:R.total)||0})]}),e.jsx(Fe,{children:e.jsx("p",{className:"text-slate-600",children:"Total Cases"})})]}),e.jsxs(Le,{children:[e.jsxs(Qe,{className:"pb-3",children:[e.jsx(Qt,{children:"Open"}),e.jsx(et,{className:"text-3xl text-orange-600",children:L==="open"?(R==null?void 0:R.total)||0:"..."})]}),e.jsx(Fe,{children:e.jsx("p",{className:"text-slate-600",children:"Requires Your Action"})})]}),e.jsxs(Le,{children:[e.jsxs(Qe,{className:"pb-3",children:[e.jsx(Qt,{children:"Completed"}),e.jsx(et,{className:"text-3xl text-green-600",children:L==="completed"?(R==null?void 0:R.total)||0:"..."})]}),e.jsx(Fe,{children:e.jsx("p",{className:"text-slate-600",children:"Finalized"})})]})]}),e.jsxs(Le,{children:[e.jsx(Qe,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(et,{children:"Termination Requests"}),e.jsx(Qt,{children:"Manage dealer termination proceedings and legal compliance"})]}),W&&e.jsxs(ls,{open:n,onOpenChange:r,children:[e.jsx(co,{asChild:!0,children:e.jsxs(se,{className:"bg-red-600 hover:bg-red-700",children:[e.jsx(Dn,{className:"w-4 h-4 mr-2"}),"Create Termination Request"]})}),e.jsxs(as,{className:"max-w-4xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(fs,{children:[e.jsx(us,{children:"Create Termination Request"}),e.jsx(bs,{children:"Fill in the details to create a new termination request"})]}),e.jsxs("form",{onSubmit:B,className:"space-y-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Select Dealer *"}),e.jsxs(At,{value:o,onValueChange:Y,disabled:m,children:[e.jsx(Dt,{children:e.jsx(kt,{placeholder:m?"Loading dealers...":"Select dealer"})}),e.jsx(Rt,{children:a.map(J=>{var ie;return e.jsxs(Me,{value:String(J.id),children:[J.legalName||J.businessName||"Unnamed Dealer"," - ",((ie=J.dealerCode)==null?void 0:ie.dealerCode)||"No Code"]},J.id)})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{htmlFor:"dealerCode",children:"Dealer Code *"}),e.jsx(at,{id:"dealerCode",value:x,onChange:J=>V(J.target.value),placeholder:"Type dealer code to auto-select",required:!0})]}),p&&e.jsxs("div",{className:"grid grid-cols-2 gap-4 p-4 bg-slate-50 rounded-lg",children:[e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealer Name (Legal)"}),e.jsx("p",{children:p.legalName||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Business Name"}),e.jsx("p",{children:p.businessName||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"GST"}),e.jsx("p",{children:p.gstNumber||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Address"}),e.jsx("p",{children:p.address})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"City/State"}),e.jsxs("p",{children:[p.city,", ",p.state]})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealer Code"}),e.jsx("p",{children:p.dealerCode||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Contact"}),e.jsxs("p",{children:[p.email," / ",p.phoneNumber]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Termination Category *"}),e.jsxs(At,{value:E.terminationCategory,onValueChange:J=>O({...E,terminationCategory:J}),children:[e.jsx(Dt,{children:e.jsx(kt,{placeholder:"Select termination category"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"Working Capital",children:"Working Capital"}),e.jsx(Me,{value:"Performance Issues",children:"Performance Issues"}),e.jsx(Me,{value:"Unethical Practice",children:"Unethical Practice"}),e.jsx(Me,{value:"Unforeseen Circumstances",children:"Unforeseen Circumstances"}),e.jsx(Me,{value:"Others",children:"Others"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(de,{children:[PS," *"]}),e.jsx(at,{type:"date",value:E.proposedLwd,onChange:J=>O({...E,proposedLwd:J.target.value}),required:!0})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{htmlFor:"reason",children:"Termination Reason *"}),e.jsx(at,{id:"reason",value:E.reason,onChange:J=>O({...E,reason:J.target.value}),placeholder:"Primary reason for termination",required:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{htmlFor:"comments",children:"Additional Comments *"}),e.jsx(Gs,{id:"comments",value:E.comments,onChange:J=>O({...E,comments:J.target.value}),placeholder:"Detailed observations and justification",rows:4,required:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{htmlFor:"documents",children:_?"Upload Documents *":"Upload Supporting Documents"}),e.jsx(at,{id:"documents",type:"file",multiple:!0,accept:".ppt,.pptx,.pdf,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png",onChange:J=>T(J.target.files,J.currentTarget),required:_&&E.documents.length===0}),_&&e.jsx("p",{className:"text-xs text-slate-500",children:"At least one PowerPoint (.ppt / .pptx) is mandatory. You can also attach MOM, dealer commitments, and other supporting files (PDF / DOC / XLS / image)."}),E.documents.length>0&&e.jsx("div",{className:"border rounded-md divide-y bg-slate-50",children:E.documents.map((J,ie)=>e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 text-sm",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx("span",{className:"truncate",children:J.name}),z(J)&&e.jsx(Ce,{className:"bg-blue-100 text-blue-700 border-blue-300",children:"Presentation"})]}),e.jsx(se,{type:"button",variant:"ghost",size:"sm",onClick:()=>F(ie),className:"text-red-600 hover:text-red-700",children:"Remove"})]},`${J.name}-${ie}`))})]}),e.jsxs(xn,{children:[e.jsx(se,{type:"button",variant:"outline",onClick:()=>r(!1),children:"Cancel"}),e.jsx(se,{type:"submit",className:"bg-red-600 hover:bg-red-700",children:"Submit Request"})]})]})]})]})]})}),e.jsxs(Fe,{children:[e.jsxs($n,{value:L,onValueChange:q,className:"w-full",children:[e.jsxs(qn,{children:[e.jsx(zt,{value:"all",children:"All Cases"}),e.jsx(zt,{value:"open",children:"Open"}),e.jsx(zt,{value:"completed",children:"Completed"})]}),e.jsx(qt,{value:"all",className:"mt-6",children:e.jsx("div",{className:"space-y-4",children:y?e.jsx("div",{className:"text-center py-12",children:"Loading requests..."}):w.length>0?w.map(J=>{var ie,ae,xe,ce;return e.jsx(Le,{className:"border-slate-200",children:e.jsx(Fe,{className:"pt-6",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex items-start gap-4 flex-1",children:[e.jsx("div",{className:"p-3 bg-red-100 rounded-lg",children:e.jsx(mi,{className:"w-6 h-6 text-red-600"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("h3",{className:"text-lg font-bold",children:J.requestId||((ae=(ie=J.dealer)==null?void 0:ie.dealerCode)==null?void 0:ae.code)||"N/A"}),e.jsx(Ce,{className:pV(J.severity||"Medium"),children:J.severity||"Normal"}),e.jsx(Ce,{className:Kg(J.status),children:lu(J.status)}),e.jsx(kr,{status:N[J.id],compact:!0})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Dealer Name"}),e.jsx("p",{children:((xe=J.dealer)==null?void 0:xe.businessName)||"N/A"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Location"}),e.jsx("p",{children:((ce=J.dealer)==null?void 0:ce.registeredAddress)||"N/A"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Category"}),e.jsx("p",{children:J.category})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Current Stage"}),e.jsx("p",{children:lu(J.currentStage)})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:PS}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(dr,{className:"w-4 h-4 text-slate-500"}),e.jsx("p",{children:J.proposedLwd})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Submitted On"}),e.jsx("p",{children:Gt(J.createdAt)})]})]})]})]}),e.jsxs(se,{size:"sm",variant:"outline",onClick:()=>s(J.id),className:"ml-4",children:[e.jsx(bn,{className:"w-4 h-4 mr-2"}),"View Details"]})]})})},J.id)}):e.jsx("div",{className:"text-center py-12 text-slate-500",children:e.jsx("p",{children:"No termination requests found"})})})}),e.jsx(qt,{value:"open",className:"mt-6",children:e.jsx("div",{className:"space-y-4",children:H.length>0?H.map(J=>{var ie,ae,xe;return e.jsx(Le,{className:"border-slate-200",children:e.jsx(Fe,{className:"pt-6",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex items-start gap-4 flex-1",children:[e.jsx("div",{className:"p-3 bg-orange-100 rounded-lg",children:e.jsx(Ha,{className:"w-6 h-6 text-orange-600"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("h3",{className:"text-lg font-bold",children:J.requestId||((ae=(ie=J.dealer)==null?void 0:ie.dealerCode)==null?void 0:ae.code)||"N/A"}),e.jsx(Ce,{className:Kg(J.status),children:lu(J.status)}),e.jsx(kr,{status:N[J.id],compact:!0})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Dealer Name"}),e.jsx("p",{children:(xe=J.dealer)==null?void 0:xe.businessName})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Reason"}),e.jsx("p",{className:"truncate",children:J.reason})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Current Stage"}),e.jsx("p",{children:lu(J.currentStage)})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Submitted On"}),e.jsx("p",{children:Gt(J.createdAt)})]})]})]})]}),e.jsxs(se,{size:"sm",variant:"outline",onClick:()=>s(J.id),className:"ml-4",children:[e.jsx(bn,{className:"w-4 h-4 mr-2"}),"View Details"]})]})})},J.id)}):e.jsxs("div",{className:"text-center py-12 text-slate-500",children:[e.jsx(mi,{className:"w-12 h-12 mx-auto mb-4 text-slate-400"}),e.jsx("p",{children:"No requests requiring your action"})]})})}),e.jsx(qt,{value:"completed",className:"mt-6",children:e.jsx("div",{className:"space-y-4",children:X.length>0?X.map(J=>{var ie,ae,xe;return e.jsx(Le,{className:"border-slate-200",children:e.jsx(Fe,{className:"pt-6",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex items-start gap-4 flex-1",children:[e.jsx("div",{className:"p-3 bg-green-100 rounded-lg",children:e.jsx(mi,{className:"w-6 h-6 text-green-600"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("h3",{className:"text-lg font-bold",children:J.requestId||((ae=(ie=J.dealer)==null?void 0:ie.dealerCode)==null?void 0:ae.code)||"N/A"}),e.jsx(Ce,{className:Kg(J.status),children:lu(J.status)}),e.jsx(kr,{status:N[J.id],compact:!0})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Dealer Name"}),e.jsx("p",{children:(xe=J.dealer)==null?void 0:xe.businessName})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Closed On"}),e.jsx("p",{children:Gt(J.updatedAt)})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Termination Category"}),e.jsx("p",{children:J.category})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:Oi}),e.jsx("p",{children:J.proposedLwd})]})]})]})]}),e.jsxs(se,{size:"sm",variant:"outline",onClick:()=>s(J.id),className:"ml-4",children:[e.jsx(bn,{className:"w-4 h-4 mr-2"}),"View Details"]})]})})},J.id)}):e.jsxs("div",{className:"text-center py-12 text-slate-500",children:[e.jsx(mi,{className:"w-12 h-12 mx-auto mb-4 text-slate-400"}),e.jsx("p",{children:"No completed terminations to display"})]})})})]}),R&&R.totalPages>1&&e.jsx("div",{className:"py-4 border-t flex justify-center bg-white rounded-b-lg",children:e.jsx(fo,{children:e.jsxs(po,{children:[e.jsx(Sn,{children:e.jsx(xo,{onClick:()=>D(J=>Math.max(1,J-1)),className:S===1?"pointer-events-none opacity-50":"cursor-pointer"})}),[...Array(R.totalPages)].map((J,ie)=>{const ae=ie+1;return ae===1||ae===R.totalPages||ae>=S-1&&ae<=S+1?e.jsx(Sn,{children:e.jsx(Wi,{isActive:S===ae,onClick:()=>D(ae),className:"cursor-pointer",children:ae})},ae):ae===2&&S>3||ae===R.totalPages-1&&SD(J=>Math.min(R.totalPages,J+1)),className:S===R.totalPages?"pointer-events-none opacity-50":"cursor-pointer"})})]})})})]})]})]})}const ou=t=>{switch(t){case"Initiated":return"bg-red-100 text-re-red-hover border-red-300";case"DD Clearance":case"Legal Clearance":return"bg-yellow-100 text-yellow-700 border-yellow-300";case"Finance Approval":case"Calculated":return"bg-orange-100 text-orange-700 border-orange-300";case"Completed":case"Settled":return"bg-green-100 text-green-700 border-green-300";default:return"bg-slate-100 text-slate-700 border-slate-300"}},cu=t=>t==="Resignation"?"bg-red-50 text-re-red-hover border-red-300":"bg-red-100 text-red-700 border-red-300";function gV({currentUser:t,onViewDetails:s}){const[n,r]=g.useState([]),[a,l]=g.useState(!0);g.useEffect(()=>{o()},[]);const o=async()=>{try{l(!0);const w=(await Ee.getFnFSettlements()).data;w.success&&r(w.settlements||[])}catch(u){console.error("Fetch settlements error:",u),ee.error("Failed to fetch settlement cases")}finally{l(!1)}};if(a)return e.jsx("div",{className:"flex items-center justify-center p-12",children:e.jsx(es,{className:"w-8 h-8 animate-spin text-re-red"})});const d=u=>{var w,v,N,j,y,C,S,D,R,A,L,$,P,E,O,I;return{id:u.id,caseNumber:u.settlementId||((w=u.resignation)==null?void 0:w.resignationId)||((v=u.terminationRequest)==null?void 0:v.requestId)||u.id.substring(0,8).toUpperCase(),status:u.status,requestType:u.resignationId?"Resignation":"Termination",dealerName:((j=(N=u.outlet)==null?void 0:N.dealer)==null?void 0:j.fullName)||((y=u.dealer)==null?void 0:y.legalName)||((C=u.dealer)==null?void 0:C.businessName)||((S=u.dealer)==null?void 0:S.fullName)||"N/A",dealerCode:((D=u.outlet)==null?void 0:D.code)||((A=(R=u.dealer)==null?void 0:R.dealerCode)==null?void 0:A.dealerCode)||"N/A",dealershipName:((L=u.outlet)==null?void 0:L.name)||"N/A",location:(($=u.outlet)==null?void 0:$.city)||((P=u.outlet)==null?void 0:P.location)||"N/A",originalRequestId:((E=u.resignation)==null?void 0:E.resignationId)||((O=u.terminationRequest)==null?void 0:O.requestId)||((I=u.terminationRequest)==null?void 0:I.id)||"N/A",submittedOn:Gt(u.createdAt),financeReportStatus:u.status==="Calculated"||u.status==="Settled"?"Completed":"Pending",totalRecoveryAmount:parseFloat(u.totalReceivables)||0,totalPayableAmount:parseFloat(u.totalPayables)||0,completedOn:u.settlementDate?Gt(u.settlementDate):null,departmentResponses:u.lineItems||[]}},m=n.map(d),f=m.filter(u=>u.status==="Initiated"),x=m.filter(u=>u.status==="DD Clearance"||u.status==="Legal Clearance"),h=m.filter(u=>u.status==="Finance Approval"||u.status==="Calculated"),p=m.filter(u=>u.status==="Completed"||u.status==="Settled");return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-5 gap-4",children:[e.jsxs(Le,{children:[e.jsxs(Qe,{className:"pb-3",children:[e.jsx(Qt,{children:"Initiated"}),e.jsx(et,{className:"text-3xl text-re-red",children:f.length})]}),e.jsx(Fe,{children:e.jsx("p",{className:"text-slate-600",children:"Newly created"})})]}),e.jsxs(Le,{children:[e.jsxs(Qe,{className:"pb-3",children:[e.jsx(Qt,{children:"Clearance"}),e.jsx(et,{className:"text-3xl text-yellow-600",children:x.length})]}),e.jsx(Fe,{children:e.jsx("p",{className:"text-slate-600",children:"Department / legal stage"})})]}),e.jsxs(Le,{children:[e.jsxs(Qe,{className:"pb-3",children:[e.jsx(Qt,{children:"Finance Approval"}),e.jsx(et,{className:"text-3xl text-orange-600",children:h.length})]}),e.jsx(Fe,{children:e.jsx("p",{className:"text-slate-600",children:"Ready for finance review"})})]}),e.jsxs(Le,{children:[e.jsxs(Qe,{className:"pb-3",children:[e.jsx(Qt,{children:"Completed"}),e.jsx(et,{className:"text-3xl text-green-600",children:m.filter(u=>u.status==="Completed"||u.status==="Settled").length})]}),e.jsx(Fe,{children:e.jsx("p",{className:"text-slate-600",children:"Finalized"})})]}),e.jsxs(Le,{children:[e.jsxs(Qe,{className:"pb-3",children:[e.jsx(Qt,{children:"All Cases"}),e.jsx(et,{className:"text-3xl",children:m.length})]}),e.jsx(Fe,{children:e.jsx("p",{className:"text-slate-600",children:"Total"})})]})]}),e.jsxs(Le,{children:[e.jsxs(Qe,{children:[e.jsx(et,{children:"Full & Final Settlement Cases"}),e.jsxs(Qt,{children:["Manage dealer exit dues clearance and settlement",t&&` • Current Role: ${t.role}`]})]}),e.jsx(Fe,{children:e.jsxs($n,{defaultValue:"all",className:"w-full",children:[e.jsxs(qn,{children:[e.jsx(zt,{value:"all",children:"All Cases"}),e.jsx(zt,{value:"initiated",children:"Initiated"}),e.jsx(zt,{value:"clearance",children:"Clearance"}),e.jsx(zt,{value:"finance",children:"Finance Approval"}),e.jsx(zt,{value:"completed",children:"Completed"})]}),e.jsx(qt,{value:"initiated",className:"mt-6",children:e.jsxs("div",{className:"space-y-4",children:[f.map(u=>e.jsx(Le,{className:"border-slate-200",children:e.jsx(Fe,{className:"pt-6",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex items-start gap-4 flex-1",children:[e.jsx("div",{className:"p-3 bg-red-100 rounded-lg",children:e.jsx(mu,{className:"w-6 h-6 text-re-red"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("h3",{className:"text-lg",children:u.caseNumber}),e.jsx(Ce,{className:ou(u.status),children:u.status}),e.jsx(Ce,{className:cu(u.requestType),children:u.requestType})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Dealer Name"}),e.jsx("p",{children:u.dealerName})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Dealer Code"}),e.jsx("p",{children:u.dealerCode})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Dealership Name"}),e.jsx("p",{children:u.dealershipName})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Location"}),e.jsx("p",{children:u.location})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Original Request ID"}),e.jsx("p",{children:u.originalRequestId})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Submitted On"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(dr,{className:"w-4 h-4 text-slate-500"}),e.jsx("p",{children:u.submittedOn})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Finance Report"}),e.jsx("p",{children:u.financeReportStatus})]})]})]})]}),e.jsx("div",{className:"flex items-center gap-2 ml-4",children:e.jsxs(se,{size:"sm",variant:"outline",onClick:()=>s(u.id),children:[e.jsx(bn,{className:"w-4 h-4 mr-2"}),"View Details"]})})]})})},u.id)),f.length===0&&e.jsxs("div",{className:"text-center py-12 text-slate-500",children:[e.jsx(mu,{className:"w-12 h-12 mx-auto mb-4 text-slate-400"}),e.jsx("p",{children:"No initiated cases to display"})]})]})}),e.jsx(qt,{value:"all",className:"mt-6",children:e.jsx("div",{className:"space-y-4",children:m.map(u=>e.jsx(Le,{className:"border-slate-200",children:e.jsx(Fe,{className:"pt-6",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex items-start gap-4 flex-1",children:[e.jsx("div",{className:`p-3 rounded-lg ${u.status==="Initiated"?"bg-red-100":u.status==="DD Clearance"||u.status==="Legal Clearance"?"bg-yellow-100":u.status==="Finance Approval"||u.status==="Calculated"?"bg-orange-100":"bg-green-100"}`,children:e.jsx(ka,{className:`w-6 h-6 ${u.status==="Initiated"?"text-re-red":u.status==="DD Clearance"||u.status==="Legal Clearance"?"text-yellow-600":u.status==="Finance Approval"||u.status==="Calculated"?"text-orange-600":"text-green-600"}`})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("h3",{className:"text-lg",children:u.caseNumber}),e.jsx(Ce,{className:ou(u.status),children:u.status}),e.jsx(Ce,{className:cu(u.requestType),children:u.requestType})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Dealer Name"}),e.jsx("p",{children:u.dealerName})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Dealership Name"}),e.jsx("p",{children:u.dealershipName})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Location"}),e.jsx("p",{children:u.location})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Submitted On"}),e.jsx("p",{children:u.submittedOn})]})]})]})]}),e.jsx("div",{className:"flex items-center gap-2 ml-4",children:e.jsxs(se,{size:"sm",variant:"outline",onClick:()=>s(u.id),children:[e.jsx(bn,{className:"w-4 h-4 mr-2"}),"View Details"]})})]})})},u.id))})}),e.jsx(qt,{value:"clearance",className:"mt-6",children:e.jsxs("div",{className:"space-y-4",children:[x.map(u=>e.jsx(Le,{className:"border-slate-200",children:e.jsx(Fe,{className:"pt-6",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex items-start gap-4 flex-1",children:[e.jsx("div",{className:"p-3 bg-yellow-100 rounded-lg",children:e.jsx(ka,{className:"w-6 h-6 text-yellow-600"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("h3",{className:"text-lg",children:u.caseNumber}),e.jsx(Ce,{className:ou(u.status),children:u.status}),e.jsx(Ce,{className:cu(u.requestType),children:u.requestType})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Dealer Name"}),e.jsx("p",{children:u.dealerName})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Departments Responded"}),e.jsxs("p",{children:[u.departmentResponses.filter(w=>w.status!=="Pending").length," / ",u.departmentResponses.length]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Submitted On"}),e.jsx("p",{children:u.submittedOn})]})]})]})]}),e.jsxs(se,{size:"sm",variant:"outline",onClick:()=>s(u.id),className:"ml-4",children:[e.jsx(bn,{className:"w-4 h-4 mr-2"}),"View Details"]})]})})},u.id)),x.length===0&&e.jsxs("div",{className:"text-center py-12 text-slate-500",children:[e.jsx(ka,{className:"w-12 h-12 mx-auto mb-4 text-slate-400"}),e.jsx("p",{children:"No clearance-stage cases"})]})]})}),e.jsx(qt,{value:"finance",className:"mt-6",children:e.jsxs("div",{className:"space-y-4",children:[h.map(u=>{var w,v;return e.jsx(Le,{className:"border-slate-200",children:e.jsx(Fe,{className:"pt-6",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex items-start gap-4 flex-1",children:[e.jsx("div",{className:"p-3 bg-orange-100 rounded-lg",children:e.jsx(ka,{className:"w-6 h-6 text-orange-600"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("h3",{className:"text-lg",children:u.caseNumber}),e.jsx(Ce,{className:ou(u.status),children:u.status}),e.jsx(Ce,{className:cu(u.requestType),children:u.requestType})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Dealer Name"}),e.jsx("p",{children:u.dealerName})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Receivable amount"}),e.jsxs("p",{className:"text-red-600",children:["₹",(w=u.totalRecoveryAmount)==null?void 0:w.toLocaleString()]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Payable Amount"}),e.jsxs("p",{className:"text-green-600",children:["₹",(v=u.totalPayableAmount)==null?void 0:v.toLocaleString()]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Finance Status"}),e.jsx("p",{children:u.financeReportStatus})]})]})]})]}),e.jsxs(se,{size:"sm",variant:"outline",onClick:()=>s(u.id),className:"ml-4",children:[e.jsx(bn,{className:"w-4 h-4 mr-2"}),"View Details"]})]})})},u.id)}),h.length===0&&e.jsxs("div",{className:"text-center py-12 text-slate-500",children:[e.jsx(ka,{className:"w-12 h-12 mx-auto mb-4 text-slate-400"}),e.jsx("p",{children:"No finance-approval cases"})]})]})}),e.jsx(qt,{value:"completed",className:"mt-6",children:e.jsxs("div",{className:"space-y-4",children:[p.map(u=>e.jsx(Le,{className:"border-slate-200",children:e.jsx(Fe,{className:"pt-6",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex items-start gap-4 flex-1",children:[e.jsx("div",{className:"p-3 bg-green-100 rounded-lg",children:e.jsx(mu,{className:"w-6 h-6 text-green-600"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("h3",{className:"text-lg",children:u.caseNumber}),e.jsx(Ce,{className:ou(u.status),children:u.status}),e.jsx(Ce,{className:cu(u.requestType),children:u.requestType})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Dealer Name"}),e.jsx("p",{children:u.dealerName})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Completed On"}),e.jsx("p",{children:u.completedOn||"N/A"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-slate-600",children:"Submitted On"}),e.jsx("p",{children:u.submittedOn})]})]})]})]}),e.jsxs(se,{size:"sm",variant:"outline",onClick:()=>s(u.id),className:"ml-4",children:[e.jsx(bn,{className:"w-4 h-4 mr-2"}),"View Details"]})]})})},u.id)),p.length===0&&e.jsxs("div",{className:"text-center py-12 text-slate-500",children:[e.jsx(mu,{className:"w-12 h-12 mx-auto mb-4 text-slate-400"}),e.jsx("p",{children:"No completed cases"})]})]})})]})})]})]})}const sc={getResignations:async()=>{try{return(await Ee.getResignations()).data}catch(t){throw console.error("Get resignations error:",t),t}},createResignation:async t=>{try{return(await Ee.createResignation(t)).data}catch(s){throw console.error("Create resignation error:",s),s}},getResignationById:async t=>{var s,n;try{const r=await Ee.getResignationById(t);return((s=r.data)==null?void 0:s.resignation)||((n=r.data)==null?void 0:n.data)||r.data}catch(r){throw console.error("Get resignation error:",r),r}},updateClearance:async(t,s)=>{try{return(await Ee.updateClearance(t,s)).data}catch(n){throw console.error("Update clearance error:",n),n}},uploadDocument:async(t,s)=>{try{return(await Ee.uploadResignationDocument(t,s)).data}catch(n){throw console.error("Upload resignation document error:",n),n}},withdraw:async(t,s)=>{try{return(await Ee.withdrawResignation(t,s)).data}catch(n){throw console.error("Withdraw resignation error:",n),n}}},Yg=["Resignation Letter","Dealer Undertaking","Approval Note","Resignation Acceptance Letter","Handover Document","Settlement Supporting Document","PPT Presentation","Other"],vV=["Request Submitted","ASM","RBM","ZBH","DD Lead","DD Head","NBH","DD Admin","Legal","F&F Initiated"],Zg=["Termination Recommendation","Show Cause Notice","SCN Response","Hearing Record","Approval Note","Termination Letter","Settlement Supporting Document","Other"],yV=["Submitted","RBM + DD-ZM Review","ZBH Review","DD Lead Review","Legal Verification","NBH Evaluation","Show Cause Notice","Personal Hearing","NBH Final Approval","CCO Approval","CEO Final Approval","Legal - Termination Letter"],bV={ASM:"ASM",RBM:"RBM",ZBH:"ZBH","DD Lead":"DD Lead","DD Head":"DD Head",NBH:"NBH","DD Admin":"DD Admin",Legal:"Legal Admin"},OS=["REJECTED","Rejected","REVOKED","Revoked","WITHDRAWN","Withdrawn"],km={"Request Submitted":["Submission","Submitted","Initiation"],ASM:["ASM","ASM Review"],RBM:["RBM","RBM Review","Regional Review","RBM + DD-ZM Review"],ZBH:["ZBH","ZBH Review","ZM Review"],"DD Lead":["DD Lead","DD Lead Review","DDL Review"],"DD Head":["DD Head","DD Head Review","DDH Review"],NBH:["NBH","NBH Approval","NBH Review"],"DD Admin":["DD Admin","DD Admin Review"],"Awaiting F&F":["Awaiting F&F","Awaiting F&F — manual initiation"],Legal:["Legal","Legal - Resignation Letter"],"F&F Initiated":["F&F Initiated","FNF_INITIATED","FNF Initiated"],Completed:["Completed"]};function jV({resignationId:t,onBack:s,currentUser:n}){var ut,ht,it,Tt,It,he,vt,mt,_e,Vt,Et,Ds,ln,Bs,Ys,Xs,Js,Ws,Z,oe,Ne,Oe,De,ye,Ve,Ge,st,Kt,Xt,ot,ft,Es,ts,vs,Te;const r=(je,nt)=>{const Ye=[...(A==null?void 0:A.documents)||[],...(A==null?void 0:A.uploadedDocuments)||[]],pt=[je,nt,...nt?km[nt]||[]:[],...km[je]||[]].filter(yt=>!!yt).map(yt=>yt.trim().toLowerCase());return Ye.filter(yt=>{if(!(yt!=null&&yt.stage))return!1;const Jt=String(yt.stage).trim().toLowerCase();return pt.includes(Jt)})},a=tr(),[l,o]=g.useState({open:!1,type:null}),[d,m]=g.useState(""),[f,x]=g.useState(""),[h,p]=g.useState(""),[u,w]=g.useState(""),[v,N]=g.useState([]),[j,y]=g.useState(!1),[C,S]=g.useState(!1),[D,R]=g.useState({open:!1,stageName:"",documents:[]}),[A,L]=g.useState(null),$=(A==null?void 0:A.id)||"",{get:P}=xc($?[{entityType:"resignation",entityId:$}]:[],!!$),[E,O]=g.useState(!1),[I,q]=g.useState([]),[G,Y]=g.useState(!1),[V,Q]=g.useState(null),[_,z]=g.useState(!1),[T,F]=g.useState(null),[B,K]=g.useState(Yg[0]),[W,H]=g.useState(""),X=g.useMemo(()=>[...(A==null?void 0:A.documents)||[],...(A==null?void 0:A.uploadedDocuments)||[]].some(nt=>(nt.documentType||nt.type)==="PPT Presentation"),[A]),J=async()=>{try{O(!0);const je=await sc.getResignationById(t);L(je),ie()}catch(je){console.error("Error fetching resignation:",je)}finally{O(!1)}},ie=async()=>{try{const je=await Ee.getAuditLogs("resignation",t);je.data&&je.data.success&&q(je.data.data||[])}catch(je){console.error("Error fetching audit logs:",je)}};g.useEffect(()=>{J()},[t]);const ae=[{id:1,name:"Request Submitted",key:"Request Submitted",description:"Dealer submitted the resignation request"},{id:2,name:"ASM Review",key:"ASM",description:"Area Sales Manager review"},{id:3,name:"RBM + DD-ZM Review",key:"RBM",description:"Joint approval by Regional Business Manager and DD-ZM"},{id:4,name:"ZBH Review",key:"ZBH",description:"Zonal Business Head approval"},{id:5,name:"DD Lead Review",key:"DD Lead",description:"DD Lead consolidated review"},{id:6,name:"DD Head Review",key:"DD Head",description:"DD Head final dealer development approval"},{id:7,name:"NBH Approval",key:"NBH",description:"National Business Head approval"},{id:8,name:"Legal - Resignation Letter",key:"Legal",description:"Legal team issues resignation approval letter"},{id:9,name:"DD Admin Review",key:"DD Admin",description:"DD Admin verification and final closure"},{id:10,name:"Awaiting F&F",key:"Awaiting F&F",description:"Internal review complete — start Full & Final using Push to F&F when ready"},{id:11,name:"F&F Settlement",key:"F&F Initiated",description:"Full & Final settlement process"},{id:12,name:"Completed",key:"Completed",description:"Resignation process finalized"}],xe=["Request Submitted","ASM","RBM","ZBH","DD Lead","DD Head","NBH","Legal","DD Admin","Awaiting F&F","F&F Initiated","Completed"],ce=A?["F&F Initiated","Completed","Settled","FNF_INITIATED"].includes(String(A.status||A.currentStage||""))?!0:(Array.isArray(A.timeline)?A.timeline:[]).some(Ye=>{const pt=String((Ye==null?void 0:Ye.stage)||"").trim().toLowerCase(),yt=String((Ye==null?void 0:Ye.targetStage)||"").trim().toLowerCase(),Jt=String((Ye==null?void 0:Ye.action)||"").trim().toLowerCase(),ss=pt==="legal"||pt==="legal - resignation letter",Ss=yt==="legal"||yt==="dd admin"||yt==="awaiting f&f"||yt==="f&f initiated"||yt==="fnf_initiated"||Jt.includes("approved");return ss&&Ss}):!1,ke=(()=>{if(!A||!n)return{canApprove:!1,canDispatch:!1,dispatchMissed:!1,canWithdraw:!1,canSendBack:!1,canPushToFnF:!1,canAssign:!1};const je=A.currentStage,nt=A.status,Ye=n.role,pt=je==="RBM"||je==="RBM Review"||je==="RBM + DD-ZM Review",yt=String(n.roleCode||n.role||"").trim().toUpperCase(),Jt=pt&&I.some(xs=>{var Nn,kn,Cn,Us;return xs.action==="PARTIAL_APPROVE"&&(((Nn=xs.actor)==null?void 0:Nn.id)===n.id||xs.actorId===n.id||((kn=xs.actor)==null?void 0:kn.email)===n.email||xs.userEmail===n.email)&&(((Cn=xs.details)==null?void 0:Cn.roleCode)===yt||((Us=xs.details)==null?void 0:Us.roleCode)==="DD-ZM"&&yt==="DD ZM")}),ss=["Completed","Rejected","Withdrawn","Revoked"].includes(nt),Ss=nt==="F&F Initiated"||je==="F&F Initiated"||nt==="Settled"||nt==="FNF_INITIATED",Zs=xe.indexOf(je),on=xe.indexOf("NBH"),en=Zs!==-1&&on!==-1&&Zs>=on,tn=yt==="SUPER_ADMIN"||pt&&(yt==="RBM"||yt==="DD-ZM"||yt==="DD ZM")||Ye===bV[je],cn=je==="DD Lead"||je==="DD Lead Review",Ae=yt==="DD_LEAD"||yt==="DD LEAD",Ht=(()=>{const xs=new Date;xs.setHours(0,0,0,0);const Nn=A.lastOperationalDateServices||A.lastOperationalDateSales;if(!Nn)return!0;const kn=new Date(Nn);return kn.setHours(0,0,0,0),xs>=kn})(),Pe=je==="Awaiting F&F",ct=(()=>{const xs=String(je||"").trim();return xe.find(kn=>kn===xs||(km[kn]||[]).includes(xs))||xs})(),tt=ct==="NBH",Nt=ct==="Awaiting F&F",Mt=ct==="Legal",Pt=["DD Lead","DD Head","DD Admin","Super Admin"],ys=["DD Lead","DD Head","DD Admin","Super Admin"],Yt=je==="DD Admin"||je==="DD Admin Review",ps=yt==="DD_ADMIN"||Ye==="DD Admin",ks=yt==="SUPER_ADMIN"||Ye==="Super Admin",gn=[...A.documents||[],...A.uploadedDocuments||[]].some(xs=>{const Nn=String((xs==null?void 0:xs.documentType)||(xs==null?void 0:xs.type)||"").toLowerCase(),kn=String((xs==null?void 0:xs.stage)||"").toLowerCase();return Nn.includes("acceptance letter")||kn==="legal"}),$s=I.some(xs=>{var Cn;const Nn=String((xs==null?void 0:xs.action)||"").toUpperCase(),kn=String((xs==null?void 0:xs.description)||((Cn=xs==null?void 0:xs.details)==null?void 0:Cn.action)||"").toLowerCase();return Nn==="RESIGNATION_LETTER_DISPATCHED"||kn.includes("resignation letter dispatched")})||(A.timeline||[]).some(xs=>String((xs==null?void 0:xs.action)||"").toLowerCase().includes("resignation letter dispatched")),dn=xe.indexOf("DD Admin"),sn=xe.indexOf("Completed"),We=xe.indexOf(xe.find(xs=>xs===je||(km[xs]||[]).includes(je))||je),gt=dn!==-1&&We!==-1&&We>=dn&&(sn===-1||We0&&Ye!=="Legal Admin"&&yt!=="LEGAL_ADMIN",canWithdraw:Ye==="Dealer"&&!en&&!ss,canRevoke:(yt==="SUPER_ADMIN"||Ye==="DD Admin")&&!ss&&!Ss,canPushToFnF:Pt.includes(Ye)&&!Ss&&!ss&&!tt&&Ht&&(Nt||Mt&&ys.includes(Ye)),canAssign:Ye!=="Dealer"&&!ss}})(),Xe=["Super Admin","DD Lead","DD Head","NBH","DD Admin","Legal Admin","DD-ZM"].includes((n==null?void 0:n.role)||""),Ot={ASM:["ASM","ASM Review","Request Initiated"],RBM:["RBM","RBM Review","RBM + DD-ZM Review"],ZBH:["ZBH","ZBH Review"],"DD Lead":["DD Lead","DD Lead Review","Lead Review"],"DD Head":["DD Head","DD Head Review","Head Review"],NBH:["NBH","NBH Approval","NBH Review"],"DD Admin":["DD Admin","DD Admin Review"],"Awaiting F&F":["Awaiting F&F","Awaiting F&F — manual initiation"],Legal:["Legal","Legal - Resignation Letter","Legal Review"],"F&F Initiated":["F&F Initiated","FNF_INITIATED","F&F Settlement","Settled"],Completed:["Completed","Finalized"]},bt=je=>{if(!je)return"";const nt=String(je).trim();return xe.find(pt=>pt===nt||(Ot[pt]||[]).includes(nt))||nt},te=je=>{if(!A)return"pending";const nt=["Rejected","Revoked","Withdrawn"].includes(A.status);let Ye=A.currentStage;if(nt&&(!Ye||OS.includes(String(Ye)))){const ss=[...A.timeline||[]].reverse().find(Ss=>(Ss==null?void 0:Ss.stage)&&!OS.includes(String(Ss.stage)));ss!=null&&ss.stage&&(Ye=ss.stage)}const pt=xe.indexOf(bt(Ye)),yt=xe.indexOf(je);if((A.status==="Completed"||A.status==="Settled")&&yt<=pt)return"completed";const Jt=["Rejected","Revoked","Withdrawn"].includes(A.status);return je==="Legal"&&ce&&!Jt?"completed":pt===-1?je==="ASM"?"completed":"pending":yt{o({open:!0,type:je})},qe=(je,nt)=>{const Ye=r(je,nt).map((pt,yt)=>{var Jt;return{id:pt.id||`${je}-${yt}`,name:pt.name||pt.fileName||"Document",type:pt.type||pt.documentType||"Document",uploadDate:pt.uploadDate||(pt.createdAt?Gt(pt.createdAt):"N/A"),uploader:typeof pt.uploader=="string"?pt.uploader:((Jt=pt.uploader)==null?void 0:Jt.fullName)||pt.uploadedBy||"System",filePath:pt.filePath||pt.path}});R({open:!0,stageName:je,documents:Ye})},ge=async()=>{var je,nt,Ye,pt,yt,Jt,ss,Ss;if(!d&&!["assign","pushfnf","dispatch"].includes(l.type||"")){ee.error("Please provide remarks (min 5 characters)");return}if(["sendBack","revoke"].includes(l.type||"")&&d.trim().length<5){ee.error("Remarks are required for this action (min 5 characters).");return}if(l.type==="assign"&&!f){ee.error("Please select a designation");return}try{Y(!0);const on={action:l.type==="sendBack"?"sendBack":l.type,remarks:d,assignTo:u||f,force:C},en=await Ee.updateResignationStatus(t,on);if((je=en.data)!=null&&je.success)ee.success(((nt=en.data)==null?void 0:nt.message)||"Action completed successfully"),o({open:!1,type:null}),m(""),x(""),w(""),N([]),S(!1),J();else{const tn=((Ye=en.data)==null?void 0:Ye.message)||"Failed to submit action";ee.error(tn),(pt=en.data)!=null&&pt.canForce&&ee.info(`${Oi} restriction: use "Push to F&F" and enable "Force Initiate F&F Settlement Immediately" if urgent.`)}}catch(Zs){console.error("Error submitting action:",Zs),ee.error(((Jt=(yt=Zs.response)==null?void 0:yt.data)==null?void 0:Jt.message)||"Failed to submit action"),(Ss=(ss=Zs==null?void 0:Zs.response)==null?void 0:ss.data)!=null&&Ss.canForce&&ee.info(`${Oi} restriction: use "Push to F&F" with the force option if business-approved.`)}finally{Y(!1)}},Be=async()=>{var je,nt;if(!T){ee.error("Please select a file to upload");return}try{Y(!0);const Ye=new FormData;Ye.append("file",T),Ye.append("documentType",B),W&&Ye.append("stage",W),await sc.uploadDocument(t,Ye),ee.success("Document uploaded successfully"),z(!1),F(null),K(Yg[0]),H(""),J()}catch(Ye){ee.error(((nt=(je=Ye==null?void 0:Ye.response)==null?void 0:je.data)==null?void 0:nt.message)||"Failed to upload document")}finally{Y(!1)}};return g.useEffect(()=>{(async()=>{if(l.type==="assign"&&(f||h)){const nt=setTimeout(async()=>{var Ye;try{y(!0);const pt={asm:"ASM",rbm:"RBM",zbh:"ZBH",nbh:"NBH",legal:"Legal Admin"},yt={limit:20,search:h};f&&(yt.roleCode=pt[f]||f);const Jt=await Ee.getUsers(yt);(Ye=Jt.data)!=null&&Ye.success&&N(Jt.data.data)}catch(pt){console.error("Error fetching users:",pt)}finally{y(!1)}},300);return()=>clearTimeout(nt)}})()},[f,h,l.type]),E&&!A?e.jsx("div",{className:"flex items-center justify-center min-h-[400px]",children:e.jsx(es,{className:"w-8 h-8 animate-spin text-re-red"})}):e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"flex items-start justify-between",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(se,{variant:"outline",size:"icon",onClick:s,className:"hover:bg-slate-100 transition-colors",children:e.jsx(Jr,{className:"w-4 h-4"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl",children:(A==null?void 0:A.resignationId)||t}),e.jsx("p",{className:"text-slate-600",children:(ut=A==null?void 0:A.outlet)==null?void 0:ut.name})]}),e.jsx(Ce,{className:(A==null?void 0:A.status)==="Completed"||(A==null?void 0:A.status)==="Settled"?"bg-green-100 text-green-700 border-green-300":(A==null?void 0:A.status)==="Rejected"||(A==null?void 0:A.status)==="Withdrawn"||(A==null?void 0:A.status)==="Revoked"?"bg-red-100 text-red-700 border-red-300":"bg-yellow-100 text-yellow-700 border-yellow-300",children:(A==null?void 0:A.status)==="Settled"?"Completed":oj((A==null?void 0:A.status)||"Pending")}),e.jsx(kr,{status:P("resignation",$)})]})}),e.jsxs($n,{defaultValue:"details",className:"w-full",children:[e.jsxs(qn,{className:"bg-slate-100 p-1",children:[e.jsx(zt,{value:"details",className:"data-[state=active]:bg-white",children:"Details"}),e.jsx(zt,{value:"progress",className:"data-[state=active]:bg-white",children:"Progress"}),e.jsx(zt,{value:"documents",className:"data-[state=active]:bg-white",children:"Documents"}),e.jsx(zt,{value:"audit",className:"data-[state=active]:bg-white",children:"Audit Trail"}),Xe&&e.jsx(zt,{value:"approvals",className:"data-[state=active]:bg-white",children:"Approval Summary"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6 mt-6",children:[e.jsxs("div",{className:"lg:col-span-2 space-y-6",children:[e.jsxs(qt,{value:"details",className:"space-y-6",children:[e.jsxs(Le,{children:[e.jsx(Qe,{children:e.jsx(et,{children:"Resignation Details"})}),e.jsx(Fe,{children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Resignation Type"}),e.jsx("p",{children:A==null?void 0:A.resignationType})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Reason"}),e.jsx("p",{children:A==null?void 0:A.reason})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Last Operational Date (Sales)"}),e.jsx("p",{children:A!=null&&A.lastOperationalDateSales?Gt(A.lastOperationalDateSales,"date"):"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Last Operational Date (Services)"}),e.jsx("p",{children:A!=null&&A.lastOperationalDateServices?Gt(A.lastOperationalDateServices,"date"):"N/A"})]})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Additional Info / Dealer Voice"}),e.jsx("p",{children:(A==null?void 0:A.additionalInfo)||"No additional info provided"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Submitted On"}),e.jsx("p",{children:A!=null&&A.submittedOn?Gt(A.submittedOn):"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Current Stage"}),e.jsx("p",{children:A==null?void 0:A.currentStage})]})]})]})})]}),e.jsxs(Le,{children:[e.jsx(Qe,{children:e.jsx(et,{children:"Request Information"})}),e.jsx(Fe,{children:e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-6",children:[e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealer Name"}),e.jsx("p",{children:((ht=A==null?void 0:A.dealer)==null?void 0:ht.fullName)||((it=A==null?void 0:A.outlet)==null?void 0:it.name)})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"GST"}),e.jsx("p",{children:((It=(Tt=A==null?void 0:A.dealer)==null?void 0:Tt.dealerProfile)==null?void 0:It.gstNumber)||((he=A==null?void 0:A.outlet)==null?void 0:he.gstNumber)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealer Email"}),e.jsx("p",{children:((vt=A==null?void 0:A.dealer)==null?void 0:vt.email)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Sales Code"}),e.jsx("p",{children:((Vt=(_e=(mt=A==null?void 0:A.dealer)==null?void 0:mt.dealerProfile)==null?void 0:_e.dealerCode)==null?void 0:Vt.salesCode)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Service Code"}),e.jsx("p",{children:((ln=(Ds=(Et=A==null?void 0:A.dealer)==null?void 0:Et.dealerProfile)==null?void 0:Ds.dealerCode)==null?void 0:ln.serviceCode)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"GMA Code"}),e.jsx("p",{children:((Xs=(Ys=(Bs=A==null?void 0:A.dealer)==null?void 0:Bs.dealerProfile)==null?void 0:Ys.dealerCode)==null?void 0:Xs.gmaCode)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Gear Code"}),e.jsx("p",{children:((Z=(Ws=(Js=A==null?void 0:A.dealer)==null?void 0:Js.dealerProfile)==null?void 0:Ws.dealerCode)==null?void 0:Z.gearCode)||"N/A"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(de,{className:"text-slate-600",children:"Address"}),e.jsx("p",{children:((Ne=(oe=A==null?void 0:A.dealer)==null?void 0:oe.dealerProfile)==null?void 0:Ne.registeredAddress)||((Oe=A==null?void 0:A.outlet)==null?void 0:Oe.address)})]})]})})]}),e.jsxs(Le,{children:[e.jsx(Qe,{children:e.jsx(et,{children:"Operational Details"})}),e.jsx(Fe,{children:e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-6",children:[e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Inauguration"}),e.jsx("p",{children:(ye=(De=A==null?void 0:A.dealer)==null?void 0:De.dealerProfile)!=null&&ye.onboardedAt?Gt(A.dealer.dealerProfile.onboardedAt,"date"):(Ve=A==null?void 0:A.outlet)!=null&&Ve.inaugurationDate?Gt(A.outlet.inaugurationDate,"date"):"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"LOA Date"}),e.jsx("p",{children:(st=(Ge=A==null?void 0:A.dealer)==null?void 0:Ge.dealerProfile)!=null&&st.loaDate?Gt(A.dealer.dealerProfile.loaDate,"date"):"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"LOI Date"}),e.jsx("p",{children:(Xt=(Kt=A==null?void 0:A.dealer)==null?void 0:Kt.dealerProfile)!=null&&Xt.loiDate?Gt(A.dealer.dealerProfile.loiDate,"date"):"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealership Type"}),e.jsx("p",{children:((Es=(ft=(ot=A==null?void 0:A.dealer)==null?void 0:ot.dealerProfile)==null?void 0:ft.application)==null?void 0:Es.businessType)||((ts=A==null?void 0:A.outlet)==null?void 0:ts.type)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"City Category"}),e.jsx("p",{children:((vs=A==null?void 0:A.outlet)==null?void 0:vs.cityCategory)||"N/A"})]})]})})]})]}),e.jsx(qt,{value:"progress",children:e.jsxs(Le,{children:[e.jsxs(Qe,{children:[e.jsx(et,{children:"Progress Timeline"}),e.jsx(Qt,{children:"Track the resignation request approval process"})]}),e.jsx(Fe,{children:e.jsx("div",{className:"space-y-4",children:ae.map((je,nt)=>{const Ye=te(je.key),pt=r(je.name,je.key).length,yt=((A==null?void 0:A.timeline)||[]).filter(ss=>ss.stage===je.key||ss.stage===je.name),Jt=yt.length>0?yt[yt.length-1]:null;return e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsx("div",{className:`w-10 h-10 rounded-full flex items-center justify-center ${Ye==="completed"?"bg-green-100 text-green-600":Ye==="active"?"bg-blue-100 text-re-red":"bg-slate-100 text-slate-400"}`,children:Ye==="completed"?e.jsx(Wn,{className:"w-5 h-5"}):e.jsx("span",{children:je.id})}),nt0&&e.jsxs("button",{onClick:()=>qe(je.name,je.key),className:"flex items-center gap-1 px-2 py-1 rounded-full bg-red-50 hover:bg-red-100 text-re-red-hover text-xs transition-colors cursor-pointer",children:[e.jsx(Ns,{className:"w-3 h-3"}),e.jsxs("span",{children:[pt," ",pt===1?"doc":"docs"]})]})]}),Jt&&e.jsxs("div",{className:"flex items-center gap-1 text-sm text-slate-600",children:[e.jsx(dr,{className:"w-4 h-4"}),e.jsx("span",{children:Gt(Jt.timestamp||Jt.createdAt)})]})]}),e.jsx("p",{className:"text-slate-600 text-sm mb-1",children:je.description}),yt.length>0&&e.jsx("div",{className:"space-y-4 mt-3",children:yt.map((ss,Ss)=>e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ce,{variant:"secondary",className:"bg-slate-100 text-[10px] font-bold uppercase",children:ss.user||"System"}),e.jsx("span",{className:"text-[10px] text-slate-500 italic",children:ss.action}),e.jsx("span",{className:"text-[10px] text-slate-400 ml-auto",children:Gt(ss.timestamp||ss.createdAt)})]}),e.jsx("div",{className:"bg-slate-50 p-3 rounded-lg border border-slate-100 text-sm text-slate-700 shadow-sm",children:ss.comments||ss.remarks||"No remarks provided."})]},Ss))})]})]},je.id)})})})]})}),e.jsx(qt,{value:"documents",children:e.jsxs(Le,{children:[e.jsxs(Qe,{className:"flex flex-row items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(et,{children:"Documents"}),e.jsx(Qt,{children:"View and manage resignation documents"})]}),e.jsxs(se,{size:"sm",onClick:()=>z(!0),className:"bg-re-red hover:bg-re-red-hover",children:[e.jsx(or,{className:"w-4 h-4 mr-2"}),"Upload Document"]})]}),e.jsx(Fe,{children:e.jsxs(Ps,{children:[e.jsx(Os,{children:e.jsxs(lt,{children:[e.jsx(fe,{children:"Document Name"}),e.jsx(fe,{children:"Type"}),e.jsx(fe,{children:"Upload Date"}),e.jsx(fe,{children:"Uploader"}),e.jsx(fe,{children:"Actions"})]})}),e.jsx(Ls,{children:(()=>{var nt;const je=[...(A==null?void 0:A.documents)||[],...(A==null?void 0:A.uploadedDocuments)||[]];return A!=null&&A.departmentalClearances&&Object.entries(A.departmentalClearances).forEach(([Ye,pt])=>{pt.supportingDocument&&je.push({name:`${Ye} Clearance Proof`,type:"Clearance NOC",path:pt.supportingDocument,createdAt:pt.updatedAt,uploadedBy:pt.updatedBy||"Department Admin"})}),(nt=A==null?void 0:A.settlement)!=null&&nt.clearances&&A.settlement.clearances.forEach(Ye=>{Ye.supportingDocument&&je.push({name:`${Ye.department} Clearance NOC`,type:"Live NOC",path:Ye.supportingDocument,createdAt:Ye.clearedAt||Ye.updatedAt,uploadedBy:"Department Admin"})}),je.length===0?e.jsx(lt,{children:e.jsx(ue,{colSpan:5,className:"text-center py-4 text-slate-500",children:"No documents found"})}):je.map((Ye,pt)=>{var yt;return e.jsxs(lt,{children:[e.jsx(ue,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ns,{className:"w-4 h-4 text-slate-500"}),e.jsx("span",{children:Ye.name||Ye.fileName})]})}),e.jsx(ue,{children:Ye.documentType||Ye.type||"Document"}),e.jsx(ue,{children:Ye.createdAt?Gt(Ye.createdAt):"N/A"}),e.jsx(ue,{children:((yt=Ye.uploader)==null?void 0:yt.fullName)||Ye.uploadedBy||"Dealer"}),e.jsx(ue,{children:e.jsx(se,{size:"sm",variant:"outline",onClick:()=>{const Jt=Ye.filePath||Ye.path,ss=Jt!=null&&Jt.startsWith("/uploads/")&&!Jt.startsWith("/uploads/documents/")?Jt.replace("/uploads/","/uploads/documents/"):Jt;Q({fileName:Ye.fileName||Ye.name,filePath:ss,documentType:Ye.documentType||Ye.type})},children:"View"})})]},pt)})})()})]})})]})}),e.jsx(qt,{value:"audit",children:e.jsxs(Le,{children:[e.jsxs(Qe,{children:[e.jsx(et,{children:"Audit Trail"}),e.jsx(Qt,{children:"Complete history of actions on this resignation request"})]}),e.jsx(Fe,{children:e.jsx("div",{className:"space-y-4",children:I.length>0?I.map((je,nt)=>{var Ye,pt,yt,Jt,ss,Ss,Zs,on,en,tn,cn;return e.jsxs("div",{className:"flex gap-3 pb-6 border-b border-slate-100 last:border-0 relative",children:[e.jsx("div",{className:"w-2 h-2 rounded-full bg-slate-300 mt-2 z-10"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ce,{className:` ${(je.description||je.action||((Ye=je.details)==null?void 0:Ye.action)||"").toLowerCase().includes("reject")||(je.description||je.action||((pt=je.details)==null?void 0:pt.action)||"").toLowerCase().includes("revok")?"bg-red-100 text-red-700 border-red-200":(je.description||je.action||((yt=je.details)==null?void 0:yt.action)||"").toLowerCase().includes("sent back")||(je.description||je.action||((Jt=je.details)==null?void 0:Jt.action)||"").toLowerCase().includes("send back")?"bg-red-50 text-re-red-hover border-red-200":(je.description||je.action||((ss=je.details)==null?void 0:ss.action)||"").toLowerCase().includes("approv")||(je.description||je.action||((Ss=je.details)==null?void 0:Ss.action)||"").toLowerCase().includes("initi")?"bg-emerald-100 text-emerald-700 border-emerald-200":"bg-slate-100 text-slate-700 border-slate-200"} - `,children:je.description||je.action}),e.jsxs("span",{className:"text-xs text-slate-500 font-medium italic",children:["by ",((Zs=je.actor)==null?void 0:Zs.name)||je.userName||"System"]})]}),e.jsx("span",{className:"text-xs text-slate-500",children:Gt(je.timestamp||je.createdAt)})]}),(je.remarks||((on=je.newData)==null?void 0:on.remarks)||((en=je.details)==null?void 0:en.remarks))&&e.jsx("div",{className:"p-3 bg-slate-50 border border-slate-100 rounded-lg text-sm text-slate-700 shadow-sm ml-1",children:je.remarks||((tn=je.newData)==null?void 0:tn.remarks)||((cn=je.details)==null?void 0:cn.remarks)})]})]},nt)}):e.jsx("div",{className:"text-center py-8 text-slate-500",children:e.jsx("p",{children:"No activity logs found for this case."})})})})]})}),Xe&&e.jsx(qt,{value:"approvals",children:e.jsxs(Le,{children:[e.jsxs(Qe,{className:"flex flex-row items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(et,{children:"Approval Summary"}),e.jsx(Qt,{children:"Comprehensive view of all approvals and remarks"})]}),ke.canApprove&&e.jsxs(se,{onClick:()=>ve("approve"),className:"bg-green-600 hover:bg-green-700",children:[e.jsx(Wn,{className:"w-4 h-4 mr-2"}),"Approve Request"]})]}),e.jsx(Fe,{children:e.jsxs(Ps,{className:"w-full border-collapse",children:[e.jsx(Os,{children:e.jsxs(lt,{className:"bg-slate-50/50",children:[e.jsx(fe,{className:"min-w-[120px]",children:"Stage"}),e.jsx(fe,{className:"min-w-[120px]",children:"Approver"}),e.jsx(fe,{className:"min-w-[200px]",children:"Action"}),e.jsx(fe,{className:"w-full min-w-[300px]",children:"Remarks"}),e.jsx(fe,{className:"min-w-[180px] text-right",children:"Date"})]})}),e.jsx(Ls,{children:((A==null?void 0:A.timeline)||[]).length>0?A.timeline.map((je,nt)=>e.jsxs(lt,{children:[e.jsx(ue,{className:"font-medium",children:je.stage}),e.jsx(ue,{children:e.jsx(Ce,{variant:"outline",children:je.user||"System"})}),e.jsx(ue,{className:"whitespace-normal break-words",children:je.action}),e.jsx(ue,{className:"whitespace-normal break-words",children:je.remarks||je.comments||"-"}),e.jsx(ue,{className:"text-slate-500 whitespace-nowrap text-right",children:Gt(je.timestamp||je.createdAt)})]},nt)):e.jsx(lt,{children:e.jsx(ue,{colSpan:5,className:"text-center py-6 text-slate-500",children:"No approval records found"})})})]})})]})})]}),e.jsx("div",{className:"space-y-6",children:e.jsxs(Le,{children:[e.jsx(Qe,{children:e.jsx(et,{children:"Actions"})}),e.jsxs(Fe,{className:"space-y-3",children:[(()=>{const je=String((n==null?void 0:n.roleCode)||(n==null?void 0:n.role)||"").trim().toUpperCase(),nt=je==="DD LEAD"||je==="DD_LEAD",Ye=["DD Lead","DD Lead Review","DDL Review"].includes(A==null?void 0:A.currentStage);return nt&&Ye?e.jsxs(se,{variant:"outline",className:"w-full text-re-red-hover border-red-300 hover:bg-red-50",onClick:()=>{K("PPT Presentation"),H("DD Lead"),z(!0)},children:[e.jsx(or,{className:"w-4 h-4 mr-2"}),"Upload PPT"]}):null})(),ke.canApprove&&e.jsxs(se,{disabled:G,className:"w-full bg-green-600 hover:bg-green-700 font-bold",onClick:()=>ve("approve"),children:[G&&l.type==="approve"?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(Wn,{className:"w-4 h-4 mr-2"}),"Approve"]}),ke.canDispatch&&e.jsxs(e.Fragment,{children:[ke.dispatchMissed&&e.jsxs("div",{className:"rounded-md border border-amber-300 bg-amber-50 text-amber-800 px-3 py-2 text-xs flex items-start gap-2",children:[e.jsx(an,{className:"w-4 h-4 mt-0.5 flex-shrink-0"}),e.jsx("span",{children:"Resignation acceptance letter was not dispatched at the DD Admin step. Please send it to the dealer now."})]}),e.jsxs(se,{disabled:G,className:`w-full font-bold ${ke.dispatchMissed?"bg-amber-600 hover:bg-amber-700":"bg-re-red hover:bg-re-red-hover"}`,onClick:()=>ve("dispatch"),children:[G&&l.type==="dispatch"?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(Dr,{className:"w-4 h-4 mr-2"}),ke.dispatchMissed?"Dispatch Resignation Letter (Pending)":"Dispatch Resignation Letter"]})]}),ke.canSendBack&&e.jsxs(se,{variant:"outline",disabled:G,className:"w-full font-bold",onClick:()=>ve("sendBack"),children:[G&&l.type==="sendBack"?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(rb,{className:"w-4 h-4 mr-2"}),"Send Back"]}),ke.canWithdraw&&e.jsxs(se,{variant:"outline",disabled:G,className:"w-full text-red-600 border-red-300 hover:bg-red-50 font-bold",onClick:()=>ve("withdrawal"),children:[G&&l.type==="withdrawal"?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(id,{className:"w-4 h-4 mr-2"}),"Withdrawal"]}),ke.canRevoke&&e.jsxs(se,{variant:"outline",disabled:G,className:"w-full text-orange-600 border-orange-300 hover:bg-orange-50 font-bold",onClick:()=>ve("revoke"),children:[G&&l.type==="revoke"?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(tb,{className:"w-4 h-4 mr-2"}),"Revoke"]}),ke.canPushToFnF&&e.jsxs(se,{variant:"outline",disabled:G,className:"w-full text-re-red-hover border-red-300 hover:bg-red-50",onClick:()=>ve("pushfnf"),children:[G&&l.type==="pushfnf"?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(Ku,{className:"w-4 h-4 mr-2"}),"Push to F&F"]}),ke.canAssign&&e.jsxs(se,{variant:"outline",disabled:G,className:"w-full",onClick:()=>ve("assign"),children:[G&&l.type==="assign"?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(ab,{className:"w-4 h-4 mr-2"}),"Assign User"]}),e.jsx(tc,{}),e.jsxs(se,{variant:"outline",className:"w-full",onClick:()=>{var je;return a(`/worknotes/resignation/${t}`,{state:{applicationName:((je=A==null?void 0:A.outlet)==null?void 0:je.name)||"Resignation",registrationNumber:(A==null?void 0:A.resignationId)||"",participants:(A==null?void 0:A.participants)||[]}})},children:[e.jsx(Ga,{className:"w-4 h-4 mr-2"}),"View Work Notes",((Te=A==null?void 0:A.worknotes)==null?void 0:Te.length)>0&&e.jsx(Ce,{className:"ml-auto bg-re-red hover:bg-re-red-hover text-white h-5 px-2",children:A.worknotes.length})]})]})]})})]})]}),e.jsx(ls,{open:l.open,onOpenChange:je=>o({open:je,type:null}),children:e.jsxs(as,{children:[e.jsxs(fs,{children:[e.jsxs(us,{children:[l.type==="approve"&&"Approve Resignation Request",l.type==="withdrawal"&&"Withdraw Resignation Request",l.type==="sendBack"&&"Send Back for Clarification",l.type==="revoke"&&"Revoke Resignation Request",l.type==="assign"&&"Assign to User",l.type==="pushfnf"&&"Push to Full & Final Settlement",l.type==="dispatch"&&"Dispatch Resignation Letter"]}),e.jsx(bs,{children:l.type==="assign"?"Select a user to assign this request to":l.type==="pushfnf"?"This will move the resignation request to F&F for dues clearance":l.type==="dispatch"?"The Legal-issued acceptance letter will be emailed to the dealer and the request will advance to Awaiting F&F. Remarks are optional.":"Please provide remarks for this action"})]}),e.jsx("div",{className:"space-y-4",children:l.type==="assign"?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Designation Filter"}),e.jsxs(At,{value:f,onValueChange:je=>{x(je),w("")},children:[e.jsx(Dt,{children:e.jsx(kt,{placeholder:"All Roles"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"all",children:"All Roles"}),e.jsx(Me,{value:"asm",children:"ASM"}),e.jsx(Me,{value:"rbm",children:"RBM"}),e.jsx(Me,{value:"zbh",children:"ZBH"}),e.jsx(Me,{value:"nbh",children:"NBH"}),e.jsx(Me,{value:"legal",children:"Legal"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Search Name/Email"}),e.jsxs("div",{className:"relative",children:[e.jsx(at,{placeholder:"Search...",value:h,onChange:je=>p(je.target.value),className:"pr-8"}),j&&e.jsx(es,{className:"w-4 h-4 animate-spin absolute right-2 top-2.5 text-slate-400"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Select Specific Person *"}),e.jsxs(At,{value:u,onValueChange:w,children:[e.jsx(Dt,{children:e.jsx(kt,{placeholder:v.length>0?"Choose a user":"No users found"})}),e.jsx(Rt,{className:"max-h-60",children:v.map(je=>e.jsx(Me,{value:je.id,children:e.jsxs("div",{className:"flex flex-col text-left",children:[e.jsx("span",{className:"font-medium",children:je.fullName}),e.jsxs("span",{className:"text-[10px] text-slate-500",children:[je.roleCode," • ",je.email]})]})},je.id))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Assignment Remarks *"}),e.jsx(Gs,{value:d,onChange:je=>m(je.target.value),placeholder:"Why are you assigning this user?",rows:2})]})]}):l.type==="pushfnf"?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-3 bg-red-50 border border-red-200 rounded-lg flex items-start gap-3",children:[e.jsx(an,{className:"w-5 h-5 text-re-red mt-0.5"}),e.jsxs("div",{className:"text-sm text-red-800",children:[e.jsx("p",{className:"font-bold",children:"Manual Trigger Notice"}),e.jsxs("p",{children:["Normally F&F is triggered after the ",Oi.toLowerCase(),". Use manual trigger only if urgent clearance is required."]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",id:"forceFnF",checked:C,onChange:je=>S(je.target.checked),className:"w-4 h-4 rounded border-slate-300"}),e.jsx(de,{htmlFor:"forceFnF",className:"font-medium text-slate-900 cursor-pointer",children:"Force Initiate F&F Settlement Immediately"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Remarks (Optional)"}),e.jsx(Gs,{value:d,onChange:je=>m(je.target.value),placeholder:"Add any additional notes...",rows:3})]})]}):e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Remarks *"}),e.jsx(Gs,{value:d,onChange:je=>m(je.target.value),placeholder:"Enter your remarks here...",rows:4})]})}),e.jsxs(xn,{children:[e.jsx(se,{variant:"outline",onClick:()=>o({open:!1,type:null}),disabled:G,children:"Cancel"}),e.jsx(se,{onClick:ge,disabled:G,className:l.type==="approve"?"bg-green-600 hover:bg-green-700":l.type==="withdrawal"?"bg-red-600 hover:bg-red-700":"bg-re-red hover:bg-re-red-hover",children:G?e.jsxs(e.Fragment,{children:[e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}),l.type==="dispatch"?"Dispatching...":"Processing..."]}):e.jsxs(e.Fragment,{children:[l.type==="approve"&&"Approve",l.type==="withdrawal"&&"Withdraw",l.type==="sendBack"&&"Send Back",l.type==="revoke"&&"Revoke",l.type==="assign"&&"Assign",l.type==="pushfnf"&&"Push to F&F",l.type==="dispatch"&&"Send to Dealer"]})})]})]})}),e.jsx(ls,{open:D.open,onOpenChange:je=>R({open:je,stageName:"",documents:[]}),children:e.jsxs(as,{className:Kb,children:[e.jsxs(fs,{children:[e.jsxs(us,{className:"flex items-center gap-2",children:[e.jsx(Ns,{className:"w-5 h-5 text-re-red"}),"Documents - ",D.stageName]}),e.jsxs(bs,{children:["Documents uploaded for this stage (",D.documents.length," ",D.documents.length===1?"document":"documents",")"]})]}),e.jsx("div",{className:"max-h-96 overflow-y-auto",children:D.documents.length>0?e.jsxs(Ps,{children:[e.jsx(Os,{children:e.jsxs(lt,{children:[e.jsx(fe,{children:"Document Name"}),e.jsx(fe,{children:"Type"}),e.jsx(fe,{children:"Upload Date"}),e.jsx(fe,{children:"Uploader"}),e.jsx(fe,{children:"Action"})]})}),e.jsx(Ls,{children:D.documents.map(je=>e.jsxs(lt,{children:[e.jsx(ue,{children:je.name}),e.jsx(ue,{children:e.jsx(Ce,{variant:"outline",children:je.type})}),e.jsx(ue,{children:je.uploadDate}),e.jsx(ue,{children:je.uploader}),e.jsx(ue,{children:e.jsxs(se,{size:"sm",variant:"outline",className:"text-re-red hover:text-blue-700",onClick:()=>{if(!je.filePath)return;const nt=je.filePath.startsWith("/uploads/")&&!je.filePath.startsWith("/uploads/documents/")?je.filePath.replace("/uploads/","/uploads/documents/"):je.filePath;Q({fileName:je.name,filePath:nt,documentType:je.type})},children:[e.jsx(Ns,{className:"w-4 h-4 mr-1"}),"View"]})})]},je.id))})]}):e.jsx("div",{className:"text-center py-8 text-slate-500",children:"No documents uploaded for this stage yet"})}),e.jsx(xn,{children:e.jsx(se,{variant:"outline",onClick:()=>R({open:!1,stageName:"",documents:[]}),children:"Close"})})]})}),e.jsx(ls,{open:_,onOpenChange:z,children:e.jsxs(as,{children:[e.jsxs(fs,{children:[e.jsx(us,{children:"Upload Resignation Document"}),e.jsx(bs,{children:"Add a document and map it to a stage (optional)."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Document Type"}),e.jsxs(At,{value:B,onValueChange:K,children:[e.jsx(Dt,{children:e.jsx(kt,{placeholder:"Select document type"})}),e.jsx(Rt,{children:Yg.map(je=>e.jsx(Me,{value:je,children:je},je))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Stage (Optional)"}),e.jsxs(At,{value:W||"none",onValueChange:je=>H(je==="none"?"":je),children:[e.jsx(Dt,{children:e.jsx(kt,{placeholder:"Select stage"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"none",children:"No Stage Mapping"}),vV.map(je=>e.jsx(Me,{value:je,children:je},je))]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"File"}),e.jsx(at,{type:"file",onChange:je=>{var nt;return F(((nt=je.target.files)==null?void 0:nt[0])||null)}})]})]}),e.jsxs(xn,{children:[e.jsx(se,{variant:"outline",onClick:()=>z(!1),disabled:G,children:"Cancel"}),e.jsx(se,{onClick:Be,disabled:G,children:G?"Uploading...":"Upload"})]})]})}),e.jsx(mo,{isOpen:!!V,onClose:()=>Q(null),document:V})]})}const zo={getTerminationById:async t=>{const n=(await Ee.getTerminationById(t)).data;return(n==null?void 0:n.termination)||(n==null?void 0:n.data)||n},updateTerminationStatus:async(t,s,n,r)=>(await Ee.updateTerminationStatus(t,{action:s,remarks:n,...r!=null&&r.force?{force:!0}:{}})).data,issueSCN:async(t,s)=>(await Ee.issueSCN(t,s)).data,uploadSCNResponse:async(t,s,n)=>{const r=new FormData;return r.append("file",s),n&&r.append("remarks",n),(await Ee.uploadSCNResponse(t,r)).data},uploadDocument:async(t,s)=>(await Ee.uploadTerminationDocument(t,s)).data,finalizeTermination:async(t,s,n)=>(await Ee.finalizeTermination(t,{decision:s,remarks:n})).data},Nf=t=>String(t||"").toLowerCase().replace(/\s+/g," ").trim(),NV="Evaluation of Dealer SCN Response",wV=t=>{const s=Nf(t);return s?!!(s===Nf(NV)||s.includes("evaluation")&&s.includes("scn")&&s.includes("response")||s.includes("personal hearing")):!1},SV=t=>{const s=Nf(t);return s.includes("rbm")&&(s.includes("dd-zm")||s.includes("dd zm"))};function CV(t){const s=Nf(t);return s.includes("sent back")||s.includes("send back")||s.includes("reconsider")||s.includes("reconsideration")}function LS(t,s){if(!Array.isArray(t)||t.length===0)return null;const n=s==="scn_response_eval"?wV:SV,r=t;for(let a=r.length-1;a>=0;a--){const l=r[a];if(!CV(l==null?void 0:l.action)||!n(l==null?void 0:l.targetStage))continue;const o=(l==null?void 0:l.timestamp)!=null?new Date(l.timestamp).getTime():NaN;if(!Number.isNaN(o))return o}return null}function AV(t){const s=t.createdAt??t.timestamp;if(s==null)return 0;const n=new Date(s).getTime();return Number.isNaN(n)?0:n}function kV(t,s){return s==null?!0:AV(t)>=s}function DV({terminationId:t,onBack:s,currentUser:n}){var Ys,Xs,Js,Ws,Z,oe,Ne,Oe,De,ye,Ve,Ge,st,Kt,Xt,ot,ft,Es,ts,vs,Te,je,nt,Ye,pt,yt,Jt,ss,Ss,Zs,on,en,tn,cn;const r=tr(),[a,l]=g.useState({open:!1,type:null}),[o,d]=g.useState(""),[m,f]=g.useState(""),[x,h]=g.useState(!1),[p,u]=g.useState({open:!1,stageName:"",documents:[]}),[w,v]=g.useState(!0),[N,j]=g.useState(null),y=(N==null?void 0:N.id)||"",{get:C}=xc(y?[{entityType:"termination",entityId:y}]:[],!!y),[S,D]=g.useState([]),[R,A]=g.useState(!1),[L,$]=g.useState(null),[P,E]=g.useState(""),[O,I]=g.useState(!1),[q,G]=g.useState(!1),[Y,V]=g.useState("Approve"),[Q,_]=g.useState(""),[z,T]=g.useState(!1),[F,B]=g.useState(null),[K,W]=g.useState(Zg[0]),[H,X]=g.useState(""),[J,ie]=g.useState(null),ae=async()=>{try{v(!0);const Ae=await zo.getTerminationById(t);j(Ae),xe()}catch(Ae){console.error("Error fetching termination:",Ae)}finally{v(!1)}},xe=async()=>{try{const Ae=await Ee.getAuditLogs("termination",t);Ae.data&&Ae.data.success&&D(Ae.data.data||[])}catch(Ae){console.error("Error fetching audit logs:",Ae)}};if(g.useEffect(()=>{ae()},[t]),w)return e.jsxs("div",{className:"flex flex-col items-center justify-center min-h-[400px] space-y-4",children:[e.jsx(es,{className:"w-8 h-8 text-re-red animate-spin"}),e.jsx("p",{className:"text-slate-600",children:"Loading termination details..."})]});const ce=async()=>{try{I(!0),await zo.issueSCN(t,{remarks:P}),ee.success("SCN issued successfully"),A(!1),ae()}catch{ee.error("Failed to issue SCN")}finally{I(!1)}},we=async()=>{if(L)try{I(!0),await zo.uploadSCNResponse(t,L,P),ee.success("SCN response uploaded"),A(!1),ae()}catch{ee.error("Failed to upload response")}finally{I(!1)}},ke=async()=>{try{I(!0),await zo.finalizeTermination(t,Y,Q),ee.success(`Termination ${Y.toLowerCase()}ed`),G(!1),ae()}catch{ee.error("Failed to finalize termination")}finally{I(!1)}},Xe=async()=>{if(!F){ee.error("Please select a file to upload");return}try{I(!0);const Ae=new FormData;Ae.append("file",F),Ae.append("documentType",K),H&&Ae.append("stage",H),await zo.uploadDocument(t,Ae),ee.success("Document uploaded successfully"),T(!1),B(null),W(Zg[0]),X(""),ae()}catch{ee.error("Failed to upload document")}finally{I(!1)}},Ot=n&&["DD Lead","DD Head","DD_HEAD","NBH","DD Admin","Super Admin"].includes(n.role||n.roleCode),bt={Submitted:["Submitted"],"RBM + DD-ZM Review":["RBM + DD-ZM Review"],"ZBH Review":["ZBH Review"],"DD Lead Review":["DD Lead Review"],"Legal Verification":["Legal Verification"],"DD Head Review":["DD Head Review"],"NBH Evaluation":["NBH Evaluation"],"Show Cause Notice (SCN)":["Show Cause Notice","Show Cause Notice (SCN)","SCN"],"Evaluation of Dealer SCN Response":["Evaluation of Dealer SCN Response","Personal Hearing"],"NBH Final Approval":["NBH Final Approval"],"CCO Approval":["CCO Approval"],"CEO Final Approval":["CEO Final Approval"],"Legal - Termination Letter":["Legal - Termination Letter"],"Dealer Terminated":["Terminated","Dealer Terminated"]},te=["Submitted","RBM + DD-ZM Review","ZBH Review","DD Lead Review","Legal Verification","DD Head Review","NBH Evaluation","Show Cause Notice (SCN)","Evaluation of Dealer SCN Response","NBH Final Approval","CCO Approval","CEO Final Approval","Legal - Termination Letter","Dealer Terminated"],qe=(()=>{if(!N||!n)return{canApprove:!1,canWithdraw:!1,canIssueSCN:!1,canUploadSCNResponse:!1,canFinalize:!1,canPushToFnF:!1};const Ae=N.currentStage,Ht=N.status,Pe=n.role||n.roleCode,ct=["Show Cause Notice (SCN)","SCN"].includes(Ae),tt=["Completed","Rejected","Withdrawn","Terminated"].includes(Ht)||Ae==="Terminated",Nt=Ht==="F&F Initiated"||Ae==="F&F Initiated"||Ht==="Settled"||Ht==="FNF_INITIATED",Mt=(()=>{const $s=new Date;$s.setHours(0,0,0,0);const dn=N.proposedLwd;if(!dn)return!0;const sn=new Date(dn);return sn.setHours(0,0,0,0),$s>=sn})(),Pt=LS(N.timeline,"scn_response_eval"),ys=LS(N.timeline,"rbm_review"),Yt=Ae==="Evaluation of Dealer SCN Response"||Ae==="Personal Hearing",ps=Ae==="RBM + DD-ZM Review"?ys:Yt?Pt:null,ks=S.some($s=>{var Nn,kn,Cn;if(!kV($s,ps))return!1;const dn=$s.userId||((Nn=$s.user)==null?void 0:Nn.id)||((kn=$s.actor)==null?void 0:kn.id)||$s.actorId,sn=String(dn)===String(n.id),We=($s.action||$s.description||"").toUpperCase(),Ft=We.includes("PARTIAL_APPROVE")||We.includes("PARTIAL APPROVED"),gt=((Cn=$s.details)==null?void 0:Cn.stage)||$s.stage||"",rt=gt==="RBM + DD-ZM Review"||($s.remarks||"").includes("Partial approval by"),Is=gt==="Evaluation of Dealer SCN Response"||gt==="Personal Hearing"||($s.remarks||"").includes("SCN Response Review by");return sn&&Ft&&(Ae==="RBM + DD-ZM Review"&&rt||Yt&&Is)}),hs=$s=>(bt[$s]||[$s]).includes(Ae);return{canApprove:(Pe==="Super Admin"||hs("RBM + DD-ZM Review")&&(Pe==="RBM"||Pe==="DD-ZM")&&!ks||hs("ZBH Review")&&Pe==="ZBH"||hs("DD Lead Review")&&Pe==="DD Lead"||hs("Legal Verification")&&Pe==="Legal Admin"||hs("DD Head Review")&&(Pe==="DD Head"||Pe==="DD_HEAD")||hs("NBH Evaluation")&&Pe==="NBH"||hs("Evaluation of Dealer SCN Response")&&["DD Lead","ZBH","RBM","DD Head","DD_HEAD"].includes(Pe)&&!ks||hs("NBH Final Approval")&&Pe==="NBH"||hs("CCO Approval")&&Pe==="CCO"||hs("CEO Final Approval")&&Pe==="CEO"||hs("Legal - Termination Letter")&&Pe==="Legal Admin")&&!tt&&!Nt&&!["NBH Final Approval","CCO Approval","CEO Final Approval","Show Cause Notice (SCN)","SCN"].includes(Ae),canIssueSCN:Ae==="NBH Evaluation"&&(Pe==="NBH"||Pe==="Super Admin")&&!tt,canUploadSCNResponse:ct&&["Legal Admin","DD Admin","DD Lead","Super Admin"].includes(Pe)&&!tt,canHold:(hs("NBH Evaluation")||hs("NBH Final Approval"))&&(Pe==="NBH"||Pe==="Super Admin")&&Ht!=="On Hold"&&!tt,canFinalize:(Ae==="NBH Final Approval"&&Pe==="NBH"||Ae==="CCO Approval"&&Pe==="CCO"||Ae==="CEO Final Approval"&&Pe==="CEO"||Pe==="Super Admin")&&["NBH Final Approval","CCO Approval","CEO Final Approval"].includes(Ae)&&!tt,canPushToFnF:Ot&&!Nt&&!N.fnfSettlement&&(Ae==="Terminated"||Ht===Vc.AWAITING_FNF||Ht===Vc.AWAITING_FNF_LWD_PENDING)&&Mt,isLwdReached:Mt,canWithdraw:Pe==="ASM"&&Ae==="Request Initiated"&&!tt,isFinalState:tt,isSettlementPhase:Nt}})(),ge=N||{},Be=["Show Cause Notice","Show Cause Notice (SCN)","SCN"].includes(ge.currentStage),ut=Ae=>{if(!Ae)return"";const Ht=String(Ae).trim();return te.find(ct=>(bt[ct]||[ct]).includes(Ht))||Ht},ht=Ae=>{const Ht=bt[Ae]||[Ae];return(ge.timeline||[]).some(Pe=>Pe!=null&&Pe.stage?!!(Ht.includes(Pe.stage)||Ae==="Submitted"&&(Pe.stage==="Submitted"||Pe.stage==="Request Initiated")):!1)},it=Ae=>{const Ht=["Rejected","Revoked","Withdrawn"].includes(ge.status),Pe=["Completed","Terminated","Settled","F&F Initiated","FNF_INITIATED",Vc.AWAITING_FNF,Vc.AWAITING_FNF_LWD_PENDING].includes(ge.status)||ge.currentStage==="Terminated";let ct=ge.currentStage||ge.status;if(Ht&&(ge.currentStage==="Rejected"||ge.currentStage==="Revoked"||!ge.currentStage)){const Pt=[...ge.timeline||[]].reverse().find(ys=>ys.stage&&ys.stage!=="Rejected"&&ys.stage!=="Revoked");Pt&&(ct=Pt.stage)}const tt=ut(ct),Nt=te.indexOf(tt),Mt=te.indexOf(Ae);return Pe&&Mt<=Nt?Mt{const Pe=bt[Ht]||[Ht],ct=Tt.filter(tt=>!tt.stage||Pe.includes(tt.stage)).map(tt=>{var Nt;return{id:tt.id||`${Ht}-${tt.fileName||tt.name}`,name:tt.fileName||tt.name||"Document",type:tt.documentType||tt.type||"Document",uploadDate:tt.uploadDate||tt.createdAt?Gt(tt.uploadDate||tt.createdAt):"N/A",uploader:((Nt=tt.uploader)==null?void 0:Nt.fullName)||tt.uploader||"-",path:tt.filePath||tt.path||tt.url}});return Ae[Ht]=ct,Ae},{}),he=Ae=>{const Ht=bt[Ae]||[Ae];return(ge.timeline||[]).filter(ct=>Ht.includes(ct.stage)||Ae==="Submitted"&&(ct.stage==="Submitted"||ct.stage==="Request Initiated")).sort((ct,tt)=>new Date(ct.timestamp).getTime()-new Date(tt.timestamp).getTime())},mt=String(ge.category||"").trim().toLowerCase().includes("unethical")?"Unethical Practice category — request was escalated directly to DD Lead Review.":null,_e=[{id:1,name:"Submitted",status:it("Submitted"),description:"Termination request initiated",date:"",actionType:"",actionBy:"",remarks:"",feedback:""},{id:2,name:"RBM + DD-ZM Review",status:it("RBM + DD-ZM Review"),description:"Joint review and approval by RBM and DD-ZM"},{id:3,name:"ZBH Review",status:it("ZBH Review"),description:"Zonal Business Head evaluation"},{id:4,name:"DD Lead Review",status:it("DD Lead Review"),description:"DD Lead validation"},{id:5,name:"Legal Verification",status:it("Legal Verification"),description:"Legal team validates termination grounds"},{id:6,name:"DD Head Review",status:it("DD Head Review"),description:"DD Head strategic review"},{id:7,name:"NBH Evaluation",status:it("NBH Evaluation"),description:"National Business Head decision"},{id:8,name:"Show Cause Notice (SCN)",status:it("Show Cause Notice (SCN)"),description:"SCN sent to dealer, awaiting response"},{id:9,name:"Evaluation of Dealer SCN Response",status:it("Evaluation of Dealer SCN Response"),description:"Joint evaluation of SCN response by DD-Lead, ZBH, RBM, and DD-Head"},{id:10,name:"NBH Final Approval",status:it("NBH Final Approval"),description:"NBH final termination decision"},{id:11,name:"CCO Approval",status:it("CCO Approval"),description:"Chief Commercial Officer approval"},{id:12,name:"CEO Final Approval",status:it("CEO Final Approval"),description:"CEO final authorization"},{id:13,name:"Legal - Termination Letter",status:it("Legal - Termination Letter"),description:"Legal team issues final termination letter"},{id:14,name:"Dealer Terminated",status:it("Dealer Terminated"),description:"Dealership termination effective",date:"",actionType:"",actionBy:"",remarks:"",feedback:""}],Vt=Ae=>{const Ht=It[Ae]||[];u({open:!0,stageName:Ae,documents:Ht})},Et=Ae=>{l({open:!0,type:Ae})},Ds=async()=>{var ct,tt,Nt,Mt,Pt,ys;const Ae=a.type,Ht=Ae==="sendBack"?"sendBack":Ae||"approve",Pe=o.trim();if(["sendBack","revoke"].includes(Ae||"")&&Pe.length<5){ee.error("Please provide detailed remarks (minimum 5 characters required for Send Back / Revoke)");return}if(!Pe&&!["assign","pushfnf"].includes(Ae||"")){ee.error("Please provide remarks/comments for this action");return}if(Ae==="assign"&&!m){ee.error("Please select a user");return}I(!0);try{let Yt;if(Ae==="approve"||Ae==="sendBack"||Ae==="withdrawal"||Ae==="revoke"||Ae==="hold")Yt=await zo.updateTerminationStatus(t,Ht,o);else if(Ae==="pushfnf")Yt=await zo.updateTerminationStatus(t,"pushfnf",o,{force:x});else{ee.error("Action logic not fully implemented for this type"),I(!1);return}if(Yt&&(Yt.success===!1||Yt.ok===!1)){console.error("[TerminationDetails] Action failed:",Yt);const ks=Yt.message||((ct=Yt.data)==null?void 0:ct.message)||"Failed to perform action";ee.error(ks),(Yt.canForce||(tt=Yt.data)!=null&&tt.canForce)&&ee.info('Enable "Force initiate F&F" in the dialog if an exception is approved.'),I(!1);return}const ps={approve:"Request approved and forwarded",withdrawal:"Request withdrawn successfully",sendBack:"Request sent back for clarification",assign:"Request assigned successfully",pushfnf:"Request pushed to F&F successfully",revoke:"Request revoked and withdrawn"};ee.success(ps[Ae]||(Yt==null?void 0:Yt.message)||"Action completed"),l({open:!1,type:null}),d(""),f(""),h(!1),ae()}catch(Yt){const ps=((Mt=(Nt=Yt.response)==null?void 0:Nt.data)==null?void 0:Mt.message)||"Failed to perform action";ee.error(ps),(ys=(Pt=Yt==null?void 0:Yt.response)==null?void 0:Pt.data)!=null&&ys.canForce&&ee.info('Enable "Force initiate F&F" in the dialog if an exception is approved.')}finally{I(!1)}},ln=Ae=>{switch(Ae){case"Critical":return"bg-red-100 text-red-700 border-red-300";case"High":return"bg-orange-100 text-orange-700 border-orange-300";case"Medium":return"bg-yellow-100 text-yellow-700 border-yellow-300";default:return"bg-blue-100 text-blue-700 border-blue-300"}},Bs=(ge.worknotes||[]).length;return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"flex items-start justify-between",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(se,{variant:"outline",size:"icon",onClick:s,className:"hover:bg-slate-100 transition-colors",children:e.jsx(Jr,{className:"w-4 h-4"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl",children:ge.requestId||t}),e.jsx("p",{className:"text-slate-600",children:((Ys=ge.dealer)==null?void 0:Ys.businessName)||((Xs=ge.dealer)==null?void 0:Xs.legalName)||"Termination"})]}),e.jsx(Ce,{className:ln(ge.severity),children:ge.severity}),e.jsx(Ce,{className:ge.status==="Completed"||ge.status==="Terminated"||ge.status==="Settled"?"bg-green-100 text-green-700 border-green-300":ge.status==="Rejected"||ge.status==="Withdrawn"?"bg-red-100 text-red-700 border-red-300":"bg-yellow-100 text-yellow-700 border-yellow-300",children:ge.status==="Settled"?"Completed":oj(ge.status||"Pending")}),e.jsx(kr,{status:C("termination",y)})]})}),e.jsxs($n,{defaultValue:"details",className:"w-full",children:[e.jsxs(qn,{className:"bg-slate-100 p-1",children:[e.jsx(zt,{value:"details",className:"data-[state=active]:bg-white",children:"Details"}),e.jsx(zt,{value:"progress",className:"data-[state=active]:bg-white",children:"Progress"}),e.jsx(zt,{value:"documents",className:"data-[state=active]:bg-white",children:"Documents"}),e.jsx(zt,{value:"audit",className:"data-[state=active]:bg-white",children:"Audit Trail"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6 mt-6",children:[e.jsxs("div",{className:"lg:col-span-2 space-y-6",children:[e.jsxs(qt,{value:"details",className:"space-y-6",children:[e.jsxs(Le,{children:[e.jsx(Qe,{children:e.jsx(et,{children:"Dealer Information"})}),e.jsx(Fe,{children:e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-6",children:[e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealer Code"}),e.jsx("p",{children:((Ws=(Js=ge.dealer)==null?void 0:Js.dealerCode)==null?void 0:Ws.dealerCode)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealer Name"}),e.jsx("p",{children:((Z=ge.dealer)==null?void 0:Z.businessName)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"GST"}),e.jsx("p",{children:((oe=ge.dealer)==null?void 0:oe.gstNumber)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealer Email"}),e.jsx("p",{children:((Oe=(Ne=ge.dealer)==null?void 0:Ne.user)==null?void 0:Oe.email)||"N/A"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(de,{className:"text-slate-600",children:"Address"}),e.jsx("p",{children:((De=ge.dealer)==null?void 0:De.registeredAddress)||((Ve=(ye=ge.dealer)==null?void 0:ye.application)==null?void 0:Ve.address)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"City"}),e.jsx("p",{children:((st=(Ge=ge.dealer)==null?void 0:Ge.application)==null?void 0:st.city)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"District"}),e.jsx("p",{children:((ot=(Xt=(Kt=ge.dealer)==null?void 0:Kt.application)==null?void 0:Xt.district)==null?void 0:ot.name)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealership Name"}),e.jsx("p",{children:((ft=ge.dealer)==null?void 0:ft.businessName)||ge.dealershipName})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Sales Code"}),e.jsx("p",{children:((ts=(Es=ge.dealer)==null?void 0:Es.dealerCode)==null?void 0:ts.salesCode)||ge.salesCode||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Service Code"}),e.jsx("p",{children:((Te=(vs=ge.dealer)==null?void 0:vs.dealerCode)==null?void 0:Te.serviceCode)||ge.serviceCode||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"GMA Code"}),e.jsx("p",{children:((nt=(je=ge.dealer)==null?void 0:je.dealerCode)==null?void 0:nt.gmaCode)||ge.accessoriesCode||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"GMA Code"}),e.jsx("p",{children:((pt=(Ye=ge.dealer)==null?void 0:Ye.dealerCode)==null?void 0:pt.gmaCode)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Gear Code"}),e.jsx("p",{children:((Jt=(yt=ge.dealer)==null?void 0:yt.dealerCode)==null?void 0:Jt.gearCode)||"N/A"})]})]})})]}),e.jsxs(Le,{children:[e.jsx(Qe,{children:e.jsx(et,{children:"Operational Details"})}),e.jsx(Fe,{children:e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-6",children:[e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Inauguration"}),e.jsx("p",{children:(ss=ge.dealer)!=null&&ss.onboardedAt?Gt(ge.dealer.onboardedAt,"date"):ge.inauguration||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"LOA Date"}),e.jsx("p",{children:(Ss=ge.dealer)!=null&&Ss.loaDate?Gt(ge.dealer.loaDate,"date"):"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"LOI Date"}),e.jsx("p",{children:(Zs=ge.dealer)!=null&&Zs.loiDate?Gt(ge.dealer.loiDate,"date"):"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Last 6 Months Sales"}),e.jsx("p",{children:ge.lastSixMonthsSales})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Number of Dealerships"}),e.jsx("p",{children:ge.numberOfDealerships})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Number of Studios"}),e.jsx("p",{children:ge.numberOfStudios})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Constitution"}),e.jsx("p",{children:((on=ge.dealer)==null?void 0:on.constitutionType)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealership Type"}),e.jsx("p",{children:((tn=(en=ge.dealer)==null?void 0:en.application)==null?void 0:tn.businessType)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Type of Closure"}),e.jsx("p",{children:ge.typeOfClosure||"Complete"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Format Category"}),e.jsx("p",{children:ge.formatCategory||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealer Score Card Band"}),e.jsx("p",{children:ge.dealerScoreCardBand||"N/A"})]})]})})]}),e.jsxs(Le,{className:"border-red-200 bg-red-50/30",children:[e.jsx(Qe,{children:e.jsxs(et,{className:"text-red-900 flex items-center gap-2",children:[e.jsx(Ha,{className:"w-5 h-5"}),"Termination Details"]})}),e.jsx(Fe,{children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Termination Category"}),e.jsx("p",{className:"text-red-900",children:ge.category})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Sub Category"}),e.jsx("p",{children:ge.subCategory||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Description"}),e.jsx("p",{children:ge.reason})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Severity"}),e.jsx("div",{className:"mt-1",children:e.jsx(Ce,{className:ln(ge.severity),children:ge.severity})})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Submitted By"}),e.jsx("p",{children:((cn=ge.initiator)==null?void 0:cn.fullName)||"System"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Submitted On"}),e.jsx("p",{children:Gt(ge.createdAt)})]})]})]})})]})]}),e.jsx(qt,{value:"progress",children:e.jsxs(Le,{children:[e.jsxs(Qe,{children:[e.jsx(et,{children:"Termination Progress Timeline"}),e.jsx(Qt,{children:"Track the termination request approval process"})]}),e.jsxs(Fe,{children:[mt&&_e.some(Ae=>Ae.status==="skipped")&&e.jsxs(di,{className:"mb-4 border-amber-300 bg-amber-50 text-amber-900",children:[e.jsx(_a,{className:"h-4 w-4 text-amber-600"}),e.jsx(Ti,{children:"Fast-tracked workflow"}),e.jsxs(ui,{children:[mt," Stages marked “Skipped” below were intentionally bypassed and never reviewed."]})]}),e.jsx("div",{className:"space-y-4",children:_e.map((Ae,Ht)=>{var tt,Nt,Mt;const Pe=((tt=It[Ae.name])==null?void 0:tt.length)||0,ct=he(Ae.name);return e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsx("div",{className:`w-10 h-10 rounded-full flex items-center justify-center ${Ae.status==="completed"?"bg-green-100 text-green-600":Ae.status==="active"?"bg-red-50 text-re-red":Ae.status==="skipped"?"bg-amber-50 text-amber-600 border border-dashed border-amber-300":"bg-slate-100 text-slate-400"}`,children:Ae.status==="completed"?e.jsx(Wn,{className:"w-5 h-5"}):Ae.status==="active"?e.jsx(Ha,{className:"w-5 h-5"}):Ae.status==="skipped"?e.jsx(k1,{className:"w-5 h-5"}):e.jsx("span",{children:Ae.id})}),Ht<_e.length-1&&e.jsx("div",{className:`w-0.5 ${Ae.remarks?"h-32":"h-16"} ${Ae.status==="completed"?"bg-green-300":Ae.status==="skipped"?"bg-amber-200":"bg-slate-200"}`})]}),e.jsxs("div",{className:"flex-1 pb-8",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:Ae.status==="completed"?"text-green-600":Ae.status==="active"?"text-re-red":Ae.status==="skipped"?"text-amber-700":"text-slate-400",children:Ae.name}),Ae.status==="skipped"&&e.jsx(Ce,{className:"bg-amber-100 text-amber-800 border-amber-300 hover:bg-amber-100",title:mt||"This stage was bypassed by the workflow.",children:"Skipped"}),Pe>0&&e.jsxs("button",{onClick:()=>Vt(Ae.name),className:"flex items-center gap-1 px-2 py-1 rounded-full bg-red-50 hover:bg-red-100 text-re-red-hover text-xs transition-colors cursor-pointer",children:[e.jsx(Ns,{className:"w-3 h-3"}),e.jsxs("span",{children:[Pe," ",Pe===1?"doc":"docs"]})]})]}),(((Nt=ct[0])==null?void 0:Nt.timestamp)||Ae.date)&&e.jsxs("div",{className:"flex items-center gap-1 text-xs text-slate-500 bg-slate-50 px-2 py-0.5 rounded-full border border-slate-100",children:[e.jsx(dr,{className:"w-3 h-3"}),e.jsx("span",{children:Gt(((Mt=ct[0])==null?void 0:Mt.timestamp)||Ae.date)})]})]}),e.jsx("p",{className:"text-slate-600 text-sm",children:Ae.description}),Ae.status==="skipped"&&e.jsxs("p",{className:"text-xs text-amber-700 mt-1 flex items-center gap-1",children:[e.jsx(k1,{className:"w-3 h-3"}),mt?`Bypassed — ${mt}`:"This stage was bypassed by the workflow and not reviewed."]}),ct.length>0&&e.jsx("div",{className:"mt-3 space-y-3",children:ct.map((Pt,ys)=>{var hs,gn,$s;const Yt=Pt.remarks||Pt.comments||"",ps=Yt==null?void 0:Yt.startsWith("Attachment:"),ks=ps?Yt.replace("Attachment:","").trim():Yt;return e.jsxs("div",{className:"group",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(Ce,{className:` + `,children:je.description||je.action}),e.jsxs("span",{className:"text-xs text-slate-500 font-medium italic",children:["by ",((Zs=je.actor)==null?void 0:Zs.name)||je.userName||"System"]})]}),e.jsx("span",{className:"text-xs text-slate-500",children:Gt(je.timestamp||je.createdAt)})]}),(je.remarks||((on=je.newData)==null?void 0:on.remarks)||((en=je.details)==null?void 0:en.remarks))&&e.jsx("div",{className:"p-3 bg-slate-50 border border-slate-100 rounded-lg text-sm text-slate-700 shadow-sm ml-1",children:je.remarks||((tn=je.newData)==null?void 0:tn.remarks)||((cn=je.details)==null?void 0:cn.remarks)})]})]},nt)}):e.jsx("div",{className:"text-center py-8 text-slate-500",children:e.jsx("p",{children:"No activity logs found for this case."})})})})]})}),Xe&&e.jsx(qt,{value:"approvals",children:e.jsxs(Le,{children:[e.jsxs(Qe,{className:"flex flex-row items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(et,{children:"Approval Summary"}),e.jsx(Qt,{children:"Comprehensive view of all approvals and remarks"})]}),ke.canApprove&&e.jsxs(se,{onClick:()=>ve("approve"),className:"bg-green-600 hover:bg-green-700",children:[e.jsx(Wn,{className:"w-4 h-4 mr-2"}),"Approve Request"]})]}),e.jsx(Fe,{children:e.jsxs(Ps,{className:"w-full border-collapse",children:[e.jsx(Os,{children:e.jsxs(lt,{className:"bg-slate-50/50",children:[e.jsx(fe,{className:"min-w-[120px]",children:"Stage"}),e.jsx(fe,{className:"min-w-[120px]",children:"Approver"}),e.jsx(fe,{className:"min-w-[200px]",children:"Action"}),e.jsx(fe,{className:"w-full min-w-[300px]",children:"Remarks"}),e.jsx(fe,{className:"min-w-[180px] text-right",children:"Date"})]})}),e.jsx(Ls,{children:((A==null?void 0:A.timeline)||[]).length>0?A.timeline.map((je,nt)=>e.jsxs(lt,{children:[e.jsx(ue,{className:"font-medium",children:je.stage}),e.jsx(ue,{children:e.jsx(Ce,{variant:"outline",children:je.user||"System"})}),e.jsx(ue,{className:"whitespace-normal break-words",children:je.action}),e.jsx(ue,{className:"whitespace-normal break-words",children:je.remarks||je.comments||"-"}),e.jsx(ue,{className:"text-slate-500 whitespace-nowrap text-right",children:Gt(je.timestamp||je.createdAt)})]},nt)):e.jsx(lt,{children:e.jsx(ue,{colSpan:5,className:"text-center py-6 text-slate-500",children:"No approval records found"})})})]})})]})})]}),e.jsx("div",{className:"space-y-6",children:e.jsxs(Le,{children:[e.jsx(Qe,{children:e.jsx(et,{children:"Actions"})}),e.jsxs(Fe,{className:"space-y-3",children:[(()=>{const je=String((n==null?void 0:n.roleCode)||(n==null?void 0:n.role)||"").trim().toUpperCase(),nt=je==="DD LEAD"||je==="DD_LEAD",Ye=["DD Lead","DD Lead Review","DDL Review"].includes(A==null?void 0:A.currentStage);return nt&&Ye?e.jsxs(se,{variant:"outline",className:"w-full text-re-red-hover border-red-300 hover:bg-red-50",onClick:()=>{K("PPT Presentation"),H("DD Lead"),z(!0)},children:[e.jsx(or,{className:"w-4 h-4 mr-2"}),"Upload PPT"]}):null})(),ke.canApprove&&e.jsxs(se,{disabled:G,className:"w-full bg-green-600 hover:bg-green-700 font-bold",onClick:()=>ve("approve"),children:[G&&l.type==="approve"?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(Wn,{className:"w-4 h-4 mr-2"}),"Approve"]}),ke.canDispatch&&e.jsxs(e.Fragment,{children:[ke.dispatchMissed&&e.jsxs("div",{className:"rounded-md border border-amber-300 bg-amber-50 text-amber-800 px-3 py-2 text-xs flex items-start gap-2",children:[e.jsx(an,{className:"w-4 h-4 mt-0.5 flex-shrink-0"}),e.jsx("span",{children:"Resignation acceptance letter was not dispatched at the DD Admin step. Please send it to the dealer now."})]}),e.jsxs(se,{disabled:G,className:`w-full font-bold ${ke.dispatchMissed?"bg-amber-600 hover:bg-amber-700":"bg-re-red hover:bg-re-red-hover"}`,onClick:()=>ve("dispatch"),children:[G&&l.type==="dispatch"?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(Dr,{className:"w-4 h-4 mr-2"}),ke.dispatchMissed?"Dispatch Resignation Letter (Pending)":"Dispatch Resignation Letter"]})]}),ke.canSendBack&&e.jsxs(se,{variant:"outline",disabled:G,className:"w-full font-bold",onClick:()=>ve("sendBack"),children:[G&&l.type==="sendBack"?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(rb,{className:"w-4 h-4 mr-2"}),"Send Back"]}),ke.canWithdraw&&e.jsxs(se,{variant:"outline",disabled:G,className:"w-full text-red-600 border-red-300 hover:bg-red-50 font-bold",onClick:()=>ve("withdrawal"),children:[G&&l.type==="withdrawal"?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(id,{className:"w-4 h-4 mr-2"}),"Withdrawal"]}),ke.canRevoke&&e.jsxs(se,{variant:"outline",disabled:G,className:"w-full text-orange-600 border-orange-300 hover:bg-orange-50 font-bold",onClick:()=>ve("revoke"),children:[G&&l.type==="revoke"?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(tb,{className:"w-4 h-4 mr-2"}),"Revoke"]}),ke.canPushToFnF&&e.jsxs(se,{variant:"outline",disabled:G,className:"w-full text-re-red-hover border-red-300 hover:bg-red-50",onClick:()=>ve("pushfnf"),children:[G&&l.type==="pushfnf"?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(Ku,{className:"w-4 h-4 mr-2"}),"Push to F&F"]}),ke.canAssign&&e.jsxs(se,{variant:"outline",disabled:G,className:"w-full",onClick:()=>ve("assign"),children:[G&&l.type==="assign"?e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(ab,{className:"w-4 h-4 mr-2"}),"Assign User"]}),e.jsx(tc,{}),e.jsxs(se,{variant:"outline",className:"w-full",onClick:()=>{var je;return a(`/worknotes/resignation/${t}`,{state:{applicationName:((je=A==null?void 0:A.outlet)==null?void 0:je.name)||"Resignation",registrationNumber:(A==null?void 0:A.resignationId)||"",participants:(A==null?void 0:A.participants)||[]}})},children:[e.jsx(Ga,{className:"w-4 h-4 mr-2"}),"View Work Notes",((Te=A==null?void 0:A.worknotes)==null?void 0:Te.length)>0&&e.jsx(Ce,{className:"ml-auto bg-re-red hover:bg-re-red-hover text-white h-5 px-2",children:A.worknotes.length})]})]})]})})]})]}),e.jsx(ls,{open:l.open,onOpenChange:je=>o({open:je,type:null}),children:e.jsxs(as,{children:[e.jsxs(fs,{children:[e.jsxs(us,{children:[l.type==="approve"&&"Approve Resignation Request",l.type==="withdrawal"&&"Withdraw Resignation Request",l.type==="sendBack"&&"Send Back for Clarification",l.type==="revoke"&&"Revoke Resignation Request",l.type==="assign"&&"Assign to User",l.type==="pushfnf"&&"Push to Full & Final Settlement",l.type==="dispatch"&&"Dispatch Resignation Letter"]}),e.jsx(bs,{children:l.type==="assign"?"Select a user to assign this request to":l.type==="pushfnf"?"This will move the resignation request to F&F for dues clearance":l.type==="dispatch"?"The Legal-issued acceptance letter will be emailed to the dealer and the request will advance to Awaiting F&F. Remarks are optional.":"Please provide remarks for this action"})]}),e.jsx("div",{className:"space-y-4",children:l.type==="assign"?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Designation Filter"}),e.jsxs(At,{value:f,onValueChange:je=>{x(je),w("")},children:[e.jsx(Dt,{children:e.jsx(kt,{placeholder:"All Roles"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"all",children:"All Roles"}),e.jsx(Me,{value:"asm",children:"ASM"}),e.jsx(Me,{value:"rbm",children:"RBM"}),e.jsx(Me,{value:"zbh",children:"ZBH"}),e.jsx(Me,{value:"nbh",children:"NBH"}),e.jsx(Me,{value:"legal",children:"Legal"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Search Name/Email"}),e.jsxs("div",{className:"relative",children:[e.jsx(at,{placeholder:"Search...",value:h,onChange:je=>p(je.target.value),className:"pr-8"}),j&&e.jsx(es,{className:"w-4 h-4 animate-spin absolute right-2 top-2.5 text-slate-400"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Select Specific Person *"}),e.jsxs(At,{value:u,onValueChange:w,children:[e.jsx(Dt,{children:e.jsx(kt,{placeholder:v.length>0?"Choose a user":"No users found"})}),e.jsx(Rt,{className:"max-h-60",children:v.map(je=>e.jsx(Me,{value:je.id,children:e.jsxs("div",{className:"flex flex-col text-left",children:[e.jsx("span",{className:"font-medium",children:je.fullName}),e.jsxs("span",{className:"text-[10px] text-slate-500",children:[je.roleCode," • ",je.email]})]})},je.id))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Assignment Remarks *"}),e.jsx(Gs,{value:d,onChange:je=>m(je.target.value),placeholder:"Why are you assigning this user?",rows:2})]})]}):l.type==="pushfnf"?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-3 bg-red-50 border border-red-200 rounded-lg flex items-start gap-3",children:[e.jsx(an,{className:"w-5 h-5 text-re-red mt-0.5"}),e.jsxs("div",{className:"text-sm text-red-800",children:[e.jsx("p",{className:"font-bold",children:"Manual Trigger Notice"}),e.jsxs("p",{children:["Normally F&F is triggered after the ",Oi.toLowerCase(),". Use manual trigger only if urgent clearance is required."]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",id:"forceFnF",checked:C,onChange:je=>S(je.target.checked),className:"w-4 h-4 rounded border-slate-300"}),e.jsx(de,{htmlFor:"forceFnF",className:"font-medium text-slate-900 cursor-pointer",children:"Force Initiate F&F Settlement Immediately"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Remarks (Optional)"}),e.jsx(Gs,{value:d,onChange:je=>m(je.target.value),placeholder:"Add any additional notes...",rows:3})]})]}):e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Remarks *"}),e.jsx(Gs,{value:d,onChange:je=>m(je.target.value),placeholder:"Enter your remarks here...",rows:4})]})}),e.jsxs(xn,{children:[e.jsx(se,{variant:"outline",onClick:()=>o({open:!1,type:null}),disabled:G,children:"Cancel"}),e.jsx(se,{onClick:ge,disabled:G,className:l.type==="approve"?"bg-green-600 hover:bg-green-700":l.type==="withdrawal"?"bg-red-600 hover:bg-red-700":"bg-re-red hover:bg-re-red-hover",children:G?e.jsxs(e.Fragment,{children:[e.jsx(es,{className:"w-4 h-4 mr-2 animate-spin"}),l.type==="dispatch"?"Dispatching...":"Processing..."]}):e.jsxs(e.Fragment,{children:[l.type==="approve"&&"Approve",l.type==="withdrawal"&&"Withdraw",l.type==="sendBack"&&"Send Back",l.type==="revoke"&&"Revoke",l.type==="assign"&&"Assign",l.type==="pushfnf"&&"Push to F&F",l.type==="dispatch"&&"Send to Dealer"]})})]})]})}),e.jsx(ls,{open:D.open,onOpenChange:je=>R({open:je,stageName:"",documents:[]}),children:e.jsxs(as,{className:Kb,children:[e.jsxs(fs,{children:[e.jsxs(us,{className:"flex items-center gap-2",children:[e.jsx(Ns,{className:"w-5 h-5 text-re-red"}),"Documents - ",D.stageName]}),e.jsxs(bs,{children:["Documents uploaded for this stage (",D.documents.length," ",D.documents.length===1?"document":"documents",")"]})]}),e.jsx("div",{className:"max-h-96 overflow-y-auto",children:D.documents.length>0?e.jsxs(Ps,{children:[e.jsx(Os,{children:e.jsxs(lt,{children:[e.jsx(fe,{children:"Document Name"}),e.jsx(fe,{children:"Type"}),e.jsx(fe,{children:"Upload Date"}),e.jsx(fe,{children:"Uploader"}),e.jsx(fe,{children:"Action"})]})}),e.jsx(Ls,{children:D.documents.map(je=>e.jsxs(lt,{children:[e.jsx(ue,{children:je.name}),e.jsx(ue,{children:e.jsx(Ce,{variant:"outline",children:je.type})}),e.jsx(ue,{children:je.uploadDate}),e.jsx(ue,{children:je.uploader}),e.jsx(ue,{children:e.jsxs(se,{size:"sm",variant:"outline",className:"text-re-red hover:text-blue-700",onClick:()=>{if(!je.filePath)return;const nt=je.filePath.startsWith("/uploads/")&&!je.filePath.startsWith("/uploads/documents/")?je.filePath.replace("/uploads/","/uploads/documents/"):je.filePath;Q({fileName:je.name,filePath:nt,documentType:je.type})},children:[e.jsx(Ns,{className:"w-4 h-4 mr-1"}),"View"]})})]},je.id))})]}):e.jsx("div",{className:"text-center py-8 text-slate-500",children:"No documents uploaded for this stage yet"})}),e.jsx(xn,{children:e.jsx(se,{variant:"outline",onClick:()=>R({open:!1,stageName:"",documents:[]}),children:"Close"})})]})}),e.jsx(ls,{open:_,onOpenChange:z,children:e.jsxs(as,{children:[e.jsxs(fs,{children:[e.jsx(us,{children:"Upload Resignation Document"}),e.jsx(bs,{children:"Add a document and map it to a stage (optional)."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Document Type"}),e.jsxs(At,{value:B,onValueChange:K,children:[e.jsx(Dt,{children:e.jsx(kt,{placeholder:"Select document type"})}),e.jsx(Rt,{children:Yg.map(je=>e.jsx(Me,{value:je,children:je},je))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"Stage (Optional)"}),e.jsxs(At,{value:W||"none",onValueChange:je=>H(je==="none"?"":je),children:[e.jsx(Dt,{children:e.jsx(kt,{placeholder:"Select stage"})}),e.jsxs(Rt,{children:[e.jsx(Me,{value:"none",children:"No Stage Mapping"}),vV.map(je=>e.jsx(Me,{value:je,children:je},je))]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(de,{children:"File"}),e.jsx(at,{type:"file",onChange:je=>{var nt;return F(((nt=je.target.files)==null?void 0:nt[0])||null)}})]})]}),e.jsxs(xn,{children:[e.jsx(se,{variant:"outline",onClick:()=>z(!1),disabled:G,children:"Cancel"}),e.jsx(se,{onClick:Be,disabled:G,children:G?"Uploading...":"Upload"})]})]})}),e.jsx(mo,{isOpen:!!V,onClose:()=>Q(null),document:V})]})}const zo={getTerminationById:async t=>{const n=(await Ee.getTerminationById(t)).data;return(n==null?void 0:n.termination)||(n==null?void 0:n.data)||n},updateTerminationStatus:async(t,s,n,r)=>(await Ee.updateTerminationStatus(t,{action:s,remarks:n,...r!=null&&r.force?{force:!0}:{}})).data,issueSCN:async(t,s)=>(await Ee.issueSCN(t,s)).data,uploadSCNResponse:async(t,s,n)=>{const r=new FormData;return r.append("file",s),n&&r.append("remarks",n),(await Ee.uploadSCNResponse(t,r)).data},uploadDocument:async(t,s)=>(await Ee.uploadTerminationDocument(t,s)).data,finalizeTermination:async(t,s,n)=>(await Ee.finalizeTermination(t,{decision:s,remarks:n})).data},Nf=t=>String(t||"").toLowerCase().replace(/\s+/g," ").trim(),NV="Evaluation of Dealer SCN Response",wV=t=>{const s=Nf(t);return s?!!(s===Nf(NV)||s.includes("evaluation")&&s.includes("scn")&&s.includes("response")||s.includes("personal hearing")):!1},SV=t=>{const s=Nf(t);return s.includes("rbm")&&(s.includes("dd-zm")||s.includes("dd zm"))};function CV(t){const s=Nf(t);return s.includes("sent back")||s.includes("send back")||s.includes("reconsider")||s.includes("reconsideration")}function LS(t,s){if(!Array.isArray(t)||t.length===0)return null;const n=s==="scn_response_eval"?wV:SV,r=t;for(let a=r.length-1;a>=0;a--){const l=r[a];if(!CV(l==null?void 0:l.action)||!n(l==null?void 0:l.targetStage))continue;const o=(l==null?void 0:l.timestamp)!=null?new Date(l.timestamp).getTime():NaN;if(!Number.isNaN(o))return o}return null}function AV(t){const s=t.createdAt??t.timestamp;if(s==null)return 0;const n=new Date(s).getTime();return Number.isNaN(n)?0:n}function kV(t,s){return s==null?!0:AV(t)>=s}function DV({terminationId:t,onBack:s,currentUser:n}){var Ys,Xs,Js,Ws,Z,oe,Ne,Oe,De,ye,Ve,Ge,st,Kt,Xt,ot,ft,Es,ts,vs,Te,je,nt,Ye,pt,yt,Jt,ss,Ss,Zs,on,en,tn,cn;const r=tr(),[a,l]=g.useState({open:!1,type:null}),[o,d]=g.useState(""),[m,f]=g.useState(""),[x,h]=g.useState(!1),[p,u]=g.useState({open:!1,stageName:"",documents:[]}),[w,v]=g.useState(!0),[N,j]=g.useState(null),y=(N==null?void 0:N.id)||"",{get:C}=xc(y?[{entityType:"termination",entityId:y}]:[],!!y),[S,D]=g.useState([]),[R,A]=g.useState(!1),[L,$]=g.useState(null),[P,E]=g.useState(""),[O,I]=g.useState(!1),[q,G]=g.useState(!1),[Y,V]=g.useState("Approve"),[Q,_]=g.useState(""),[z,T]=g.useState(!1),[F,B]=g.useState(null),[K,W]=g.useState(Zg[0]),[H,X]=g.useState(""),[J,ie]=g.useState(null),ae=async()=>{try{v(!0);const Ae=await zo.getTerminationById(t);j(Ae),xe()}catch(Ae){console.error("Error fetching termination:",Ae)}finally{v(!1)}},xe=async()=>{try{const Ae=await Ee.getAuditLogs("termination",t);Ae.data&&Ae.data.success&&D(Ae.data.data||[])}catch(Ae){console.error("Error fetching audit logs:",Ae)}};if(g.useEffect(()=>{ae()},[t]),w)return e.jsxs("div",{className:"flex flex-col items-center justify-center min-h-[400px] space-y-4",children:[e.jsx(es,{className:"w-8 h-8 text-re-red animate-spin"}),e.jsx("p",{className:"text-slate-600",children:"Loading termination details..."})]});const ce=async()=>{try{I(!0),await zo.issueSCN(t,{remarks:P}),ee.success("SCN issued successfully"),A(!1),ae()}catch{ee.error("Failed to issue SCN")}finally{I(!1)}},we=async()=>{if(L)try{I(!0),await zo.uploadSCNResponse(t,L,P),ee.success("SCN response uploaded"),A(!1),ae()}catch{ee.error("Failed to upload response")}finally{I(!1)}},ke=async()=>{try{I(!0),await zo.finalizeTermination(t,Y,Q),ee.success(`Termination ${Y.toLowerCase()}ed`),G(!1),ae()}catch{ee.error("Failed to finalize termination")}finally{I(!1)}},Xe=async()=>{if(!F){ee.error("Please select a file to upload");return}try{I(!0);const Ae=new FormData;Ae.append("file",F),Ae.append("documentType",K),H&&Ae.append("stage",H),await zo.uploadDocument(t,Ae),ee.success("Document uploaded successfully"),T(!1),B(null),W(Zg[0]),X(""),ae()}catch{ee.error("Failed to upload document")}finally{I(!1)}},Ot=n&&["DD Lead","DD Head","DD_HEAD","NBH","DD Admin","Super Admin"].includes(n.role||n.roleCode),bt={Submitted:["Submitted"],"RBM + DD-ZM Review":["RBM + DD-ZM Review"],"ZBH Review":["ZBH Review"],"DD Lead Review":["DD Lead Review"],"Legal Verification":["Legal Verification"],"DD Head Review":["DD Head Review"],"NBH Evaluation":["NBH Evaluation"],"Show Cause Notice (SCN)":["Show Cause Notice","Show Cause Notice (SCN)","SCN"],"Evaluation of Dealer SCN Response":["Evaluation of Dealer SCN Response","Personal Hearing"],"NBH Final Approval":["NBH Final Approval"],"CCO Approval":["CCO Approval"],"CEO Final Approval":["CEO Final Approval"],"Legal - Termination Letter":["Legal - Termination Letter"],"Dealer Terminated":["Terminated","Dealer Terminated"]},te=["Submitted","RBM + DD-ZM Review","ZBH Review","DD Lead Review","Legal Verification","DD Head Review","NBH Evaluation","Show Cause Notice (SCN)","Evaluation of Dealer SCN Response","NBH Final Approval","CCO Approval","CEO Final Approval","Legal - Termination Letter","Dealer Terminated"],qe=(()=>{if(!N||!n)return{canApprove:!1,canWithdraw:!1,canIssueSCN:!1,canUploadSCNResponse:!1,canFinalize:!1,canPushToFnF:!1};const Ae=N.currentStage,Ht=N.status,Pe=n.role||n.roleCode,ct=["Show Cause Notice (SCN)","SCN"].includes(Ae),tt=["Completed","Rejected","Withdrawn","Terminated"].includes(Ht)||Ae==="Terminated",Nt=Ht==="F&F Initiated"||Ae==="F&F Initiated"||Ht==="Settled"||Ht==="FNF_INITIATED",Mt=(()=>{const $s=new Date;$s.setHours(0,0,0,0);const dn=N.proposedLwd;if(!dn)return!0;const sn=new Date(dn);return sn.setHours(0,0,0,0),$s>=sn})(),Pt=LS(N.timeline,"scn_response_eval"),ys=LS(N.timeline,"rbm_review"),Yt=Ae==="Evaluation of Dealer SCN Response"||Ae==="Personal Hearing",ps=Ae==="RBM + DD-ZM Review"?ys:Yt?Pt:null,ks=S.some($s=>{var Nn,kn,Cn;if(!kV($s,ps))return!1;const dn=$s.userId||((Nn=$s.user)==null?void 0:Nn.id)||((kn=$s.actor)==null?void 0:kn.id)||$s.actorId,sn=String(dn)===String(n.id),We=($s.action||$s.description||"").toUpperCase(),Ft=We.includes("PARTIAL_APPROVE")||We.includes("PARTIAL APPROVED"),gt=((Cn=$s.details)==null?void 0:Cn.stage)||$s.stage||"",rt=gt==="RBM + DD-ZM Review"||($s.remarks||"").includes("Partial approval by"),Is=gt==="Evaluation of Dealer SCN Response"||gt==="Personal Hearing"||($s.remarks||"").includes("SCN Response Review by");return sn&&Ft&&(Ae==="RBM + DD-ZM Review"&&rt||Yt&&Is)}),hs=$s=>(bt[$s]||[$s]).includes(Ae);return{canApprove:(Pe==="Super Admin"||hs("RBM + DD-ZM Review")&&(Pe==="RBM"||Pe==="DD-ZM")&&!ks||hs("ZBH Review")&&Pe==="ZBH"||hs("DD Lead Review")&&Pe==="DD Lead"||hs("Legal Verification")&&Pe==="Legal Admin"||hs("DD Head Review")&&(Pe==="DD Head"||Pe==="DD_HEAD")||hs("NBH Evaluation")&&Pe==="NBH"||hs("Evaluation of Dealer SCN Response")&&["DD Lead","ZBH","RBM","DD Head","DD_HEAD"].includes(Pe)&&!ks||hs("NBH Final Approval")&&Pe==="NBH"||hs("CCO Approval")&&Pe==="CCO"||hs("CEO Final Approval")&&Pe==="CEO"||hs("Legal - Termination Letter")&&Pe==="Legal Admin")&&!tt&&!Nt&&!["NBH Final Approval","CCO Approval","CEO Final Approval","NBH Evaluation","Show Cause Notice (SCN)","SCN"].includes(Ae),canIssueSCN:Ae==="NBH Evaluation"&&(Pe==="NBH"||Pe==="Super Admin")&&!tt,canUploadSCNResponse:ct&&["Legal Admin","DD Admin","DD Lead","Super Admin"].includes(Pe)&&!tt,canHold:(hs("NBH Evaluation")||hs("NBH Final Approval"))&&(Pe==="NBH"||Pe==="Super Admin")&&Ht!=="On Hold"&&!tt,canFinalize:(Ae==="NBH Final Approval"&&Pe==="NBH"||Ae==="CCO Approval"&&Pe==="CCO"||Ae==="CEO Final Approval"&&Pe==="CEO"||Pe==="Super Admin")&&["NBH Final Approval","CCO Approval","CEO Final Approval"].includes(Ae)&&!tt,canPushToFnF:Ot&&!Nt&&!N.fnfSettlement&&(Ae==="Terminated"||Ht===Vc.AWAITING_FNF||Ht===Vc.AWAITING_FNF_LWD_PENDING)&&Mt,isLwdReached:Mt,canWithdraw:Pe==="ASM"&&Ae==="Request Initiated"&&!tt,isFinalState:tt,isSettlementPhase:Nt}})(),ge=N||{},Be=["Show Cause Notice","Show Cause Notice (SCN)","SCN"].includes(ge.currentStage),ut=Ae=>{if(!Ae)return"";const Ht=String(Ae).trim();return te.find(ct=>(bt[ct]||[ct]).includes(Ht))||Ht},ht=Ae=>{const Ht=bt[Ae]||[Ae];return(ge.timeline||[]).some(Pe=>Pe!=null&&Pe.stage?!!(Ht.includes(Pe.stage)||Ae==="Submitted"&&(Pe.stage==="Submitted"||Pe.stage==="Request Initiated")):!1)},it=Ae=>{const Ht=["Rejected","Revoked","Withdrawn"].includes(ge.status),Pe=["Completed","Terminated","Settled","F&F Initiated","FNF_INITIATED",Vc.AWAITING_FNF,Vc.AWAITING_FNF_LWD_PENDING].includes(ge.status)||ge.currentStage==="Terminated";let ct=ge.currentStage||ge.status;if(Ht&&(ge.currentStage==="Rejected"||ge.currentStage==="Revoked"||!ge.currentStage)){const Pt=[...ge.timeline||[]].reverse().find(ys=>ys.stage&&ys.stage!=="Rejected"&&ys.stage!=="Revoked");Pt&&(ct=Pt.stage)}const tt=ut(ct),Nt=te.indexOf(tt),Mt=te.indexOf(Ae);return Pe&&Mt<=Nt?Mt{const Pe=bt[Ht]||[Ht],ct=Tt.filter(tt=>!tt.stage||Pe.includes(tt.stage)).map(tt=>{var Nt;return{id:tt.id||`${Ht}-${tt.fileName||tt.name}`,name:tt.fileName||tt.name||"Document",type:tt.documentType||tt.type||"Document",uploadDate:tt.uploadDate||tt.createdAt?Gt(tt.uploadDate||tt.createdAt):"N/A",uploader:((Nt=tt.uploader)==null?void 0:Nt.fullName)||tt.uploader||"-",path:tt.filePath||tt.path||tt.url}});return Ae[Ht]=ct,Ae},{}),he=Ae=>{const Ht=bt[Ae]||[Ae];return(ge.timeline||[]).filter(ct=>Ht.includes(ct.stage)||Ae==="Submitted"&&(ct.stage==="Submitted"||ct.stage==="Request Initiated")).sort((ct,tt)=>new Date(ct.timestamp).getTime()-new Date(tt.timestamp).getTime())},mt=String(ge.category||"").trim().toLowerCase().includes("unethical")?"Unethical Practice category — request was escalated directly to DD Lead Review.":null,_e=[{id:1,name:"Submitted",status:it("Submitted"),description:"Termination request initiated",date:"",actionType:"",actionBy:"",remarks:"",feedback:""},{id:2,name:"RBM + DD-ZM Review",status:it("RBM + DD-ZM Review"),description:"Joint review and approval by RBM and DD-ZM"},{id:3,name:"ZBH Review",status:it("ZBH Review"),description:"Zonal Business Head evaluation"},{id:4,name:"DD Lead Review",status:it("DD Lead Review"),description:"DD Lead validation"},{id:5,name:"Legal Verification",status:it("Legal Verification"),description:"Legal team validates termination grounds"},{id:6,name:"DD Head Review",status:it("DD Head Review"),description:"DD Head strategic review"},{id:7,name:"NBH Evaluation",status:it("NBH Evaluation"),description:"National Business Head decision"},{id:8,name:"Show Cause Notice (SCN)",status:it("Show Cause Notice (SCN)"),description:"SCN sent to dealer, awaiting response"},{id:9,name:"Evaluation of Dealer SCN Response",status:it("Evaluation of Dealer SCN Response"),description:"Joint evaluation of SCN response by DD-Lead, ZBH, RBM, and DD-Head"},{id:10,name:"NBH Final Approval",status:it("NBH Final Approval"),description:"NBH final termination decision"},{id:11,name:"CCO Approval",status:it("CCO Approval"),description:"Chief Commercial Officer approval"},{id:12,name:"CEO Final Approval",status:it("CEO Final Approval"),description:"CEO final authorization"},{id:13,name:"Legal - Termination Letter",status:it("Legal - Termination Letter"),description:"Legal team issues final termination letter"},{id:14,name:"Dealer Terminated",status:it("Dealer Terminated"),description:"Dealership termination effective",date:"",actionType:"",actionBy:"",remarks:"",feedback:""}],Vt=Ae=>{const Ht=It[Ae]||[];u({open:!0,stageName:Ae,documents:Ht})},Et=Ae=>{l({open:!0,type:Ae})},Ds=async()=>{var ct,tt,Nt,Mt,Pt,ys;const Ae=a.type,Ht=Ae==="sendBack"?"sendBack":Ae||"approve",Pe=o.trim();if(["sendBack","revoke"].includes(Ae||"")&&Pe.length<5){ee.error("Please provide detailed remarks (minimum 5 characters required for Send Back / Revoke)");return}if(!Pe&&!["assign","pushfnf"].includes(Ae||"")){ee.error("Please provide remarks/comments for this action");return}if(Ae==="assign"&&!m){ee.error("Please select a user");return}I(!0);try{let Yt;if(Ae==="approve"||Ae==="sendBack"||Ae==="withdrawal"||Ae==="revoke"||Ae==="hold")Yt=await zo.updateTerminationStatus(t,Ht,o);else if(Ae==="pushfnf")Yt=await zo.updateTerminationStatus(t,"pushfnf",o,{force:x});else{ee.error("Action logic not fully implemented for this type"),I(!1);return}if(Yt&&(Yt.success===!1||Yt.ok===!1)){console.error("[TerminationDetails] Action failed:",Yt);const ks=Yt.message||((ct=Yt.data)==null?void 0:ct.message)||"Failed to perform action";ee.error(ks),(Yt.canForce||(tt=Yt.data)!=null&&tt.canForce)&&ee.info('Enable "Force initiate F&F" in the dialog if an exception is approved.'),I(!1);return}const ps={approve:"Request approved and forwarded",withdrawal:"Request withdrawn successfully",sendBack:"Request sent back for clarification",assign:"Request assigned successfully",pushfnf:"Request pushed to F&F successfully",revoke:"Request revoked and withdrawn"};ee.success(ps[Ae]||(Yt==null?void 0:Yt.message)||"Action completed"),l({open:!1,type:null}),d(""),f(""),h(!1),ae()}catch(Yt){const ps=((Mt=(Nt=Yt.response)==null?void 0:Nt.data)==null?void 0:Mt.message)||"Failed to perform action";ee.error(ps),(ys=(Pt=Yt==null?void 0:Yt.response)==null?void 0:Pt.data)!=null&&ys.canForce&&ee.info('Enable "Force initiate F&F" in the dialog if an exception is approved.')}finally{I(!1)}},ln=Ae=>{switch(Ae){case"Critical":return"bg-red-100 text-red-700 border-red-300";case"High":return"bg-orange-100 text-orange-700 border-orange-300";case"Medium":return"bg-yellow-100 text-yellow-700 border-yellow-300";default:return"bg-blue-100 text-blue-700 border-blue-300"}},Bs=(ge.worknotes||[]).length;return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"flex items-start justify-between",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(se,{variant:"outline",size:"icon",onClick:s,className:"hover:bg-slate-100 transition-colors",children:e.jsx(Jr,{className:"w-4 h-4"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl",children:ge.requestId||t}),e.jsx("p",{className:"text-slate-600",children:((Ys=ge.dealer)==null?void 0:Ys.businessName)||((Xs=ge.dealer)==null?void 0:Xs.legalName)||"Termination"})]}),e.jsx(Ce,{className:ln(ge.severity),children:ge.severity}),e.jsx(Ce,{className:ge.status==="Completed"||ge.status==="Terminated"||ge.status==="Settled"?"bg-green-100 text-green-700 border-green-300":ge.status==="Rejected"||ge.status==="Withdrawn"?"bg-red-100 text-red-700 border-red-300":"bg-yellow-100 text-yellow-700 border-yellow-300",children:ge.status==="Settled"?"Completed":oj(ge.status||"Pending")}),e.jsx(kr,{status:C("termination",y)})]})}),e.jsxs($n,{defaultValue:"details",className:"w-full",children:[e.jsxs(qn,{className:"bg-slate-100 p-1",children:[e.jsx(zt,{value:"details",className:"data-[state=active]:bg-white",children:"Details"}),e.jsx(zt,{value:"progress",className:"data-[state=active]:bg-white",children:"Progress"}),e.jsx(zt,{value:"documents",className:"data-[state=active]:bg-white",children:"Documents"}),e.jsx(zt,{value:"audit",className:"data-[state=active]:bg-white",children:"Audit Trail"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6 mt-6",children:[e.jsxs("div",{className:"lg:col-span-2 space-y-6",children:[e.jsxs(qt,{value:"details",className:"space-y-6",children:[e.jsxs(Le,{children:[e.jsx(Qe,{children:e.jsx(et,{children:"Dealer Information"})}),e.jsx(Fe,{children:e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-6",children:[e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealer Code"}),e.jsx("p",{children:((Ws=(Js=ge.dealer)==null?void 0:Js.dealerCode)==null?void 0:Ws.dealerCode)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealer Name"}),e.jsx("p",{children:((Z=ge.dealer)==null?void 0:Z.businessName)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"GST"}),e.jsx("p",{children:((oe=ge.dealer)==null?void 0:oe.gstNumber)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealer Email"}),e.jsx("p",{children:((Oe=(Ne=ge.dealer)==null?void 0:Ne.user)==null?void 0:Oe.email)||"N/A"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(de,{className:"text-slate-600",children:"Address"}),e.jsx("p",{children:((De=ge.dealer)==null?void 0:De.registeredAddress)||((Ve=(ye=ge.dealer)==null?void 0:ye.application)==null?void 0:Ve.address)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"City"}),e.jsx("p",{children:((st=(Ge=ge.dealer)==null?void 0:Ge.application)==null?void 0:st.city)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"District"}),e.jsx("p",{children:((ot=(Xt=(Kt=ge.dealer)==null?void 0:Kt.application)==null?void 0:Xt.district)==null?void 0:ot.name)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealership Name"}),e.jsx("p",{children:((ft=ge.dealer)==null?void 0:ft.businessName)||ge.dealershipName})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Sales Code"}),e.jsx("p",{children:((ts=(Es=ge.dealer)==null?void 0:Es.dealerCode)==null?void 0:ts.salesCode)||ge.salesCode||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Service Code"}),e.jsx("p",{children:((Te=(vs=ge.dealer)==null?void 0:vs.dealerCode)==null?void 0:Te.serviceCode)||ge.serviceCode||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"GMA Code"}),e.jsx("p",{children:((nt=(je=ge.dealer)==null?void 0:je.dealerCode)==null?void 0:nt.gmaCode)||ge.accessoriesCode||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"GMA Code"}),e.jsx("p",{children:((pt=(Ye=ge.dealer)==null?void 0:Ye.dealerCode)==null?void 0:pt.gmaCode)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Gear Code"}),e.jsx("p",{children:((Jt=(yt=ge.dealer)==null?void 0:yt.dealerCode)==null?void 0:Jt.gearCode)||"N/A"})]})]})})]}),e.jsxs(Le,{children:[e.jsx(Qe,{children:e.jsx(et,{children:"Operational Details"})}),e.jsx(Fe,{children:e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-6",children:[e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Inauguration"}),e.jsx("p",{children:(ss=ge.dealer)!=null&&ss.onboardedAt?Gt(ge.dealer.onboardedAt,"date"):ge.inauguration||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"LOA Date"}),e.jsx("p",{children:(Ss=ge.dealer)!=null&&Ss.loaDate?Gt(ge.dealer.loaDate,"date"):"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"LOI Date"}),e.jsx("p",{children:(Zs=ge.dealer)!=null&&Zs.loiDate?Gt(ge.dealer.loiDate,"date"):"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Last 6 Months Sales"}),e.jsx("p",{children:ge.lastSixMonthsSales})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Number of Dealerships"}),e.jsx("p",{children:ge.numberOfDealerships})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Number of Studios"}),e.jsx("p",{children:ge.numberOfStudios})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Constitution"}),e.jsx("p",{children:((on=ge.dealer)==null?void 0:on.constitutionType)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealership Type"}),e.jsx("p",{children:((tn=(en=ge.dealer)==null?void 0:en.application)==null?void 0:tn.businessType)||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Type of Closure"}),e.jsx("p",{children:ge.typeOfClosure||"Complete"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Format Category"}),e.jsx("p",{children:ge.formatCategory||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Dealer Score Card Band"}),e.jsx("p",{children:ge.dealerScoreCardBand||"N/A"})]})]})})]}),e.jsxs(Le,{className:"border-red-200 bg-red-50/30",children:[e.jsx(Qe,{children:e.jsxs(et,{className:"text-red-900 flex items-center gap-2",children:[e.jsx(Ha,{className:"w-5 h-5"}),"Termination Details"]})}),e.jsx(Fe,{children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Termination Category"}),e.jsx("p",{className:"text-red-900",children:ge.category})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Sub Category"}),e.jsx("p",{children:ge.subCategory||"N/A"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Description"}),e.jsx("p",{children:ge.reason})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Severity"}),e.jsx("div",{className:"mt-1",children:e.jsx(Ce,{className:ln(ge.severity),children:ge.severity})})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Submitted By"}),e.jsx("p",{children:((cn=ge.initiator)==null?void 0:cn.fullName)||"System"})]}),e.jsxs("div",{children:[e.jsx(de,{className:"text-slate-600",children:"Submitted On"}),e.jsx("p",{children:Gt(ge.createdAt)})]})]})]})})]})]}),e.jsx(qt,{value:"progress",children:e.jsxs(Le,{children:[e.jsxs(Qe,{children:[e.jsx(et,{children:"Termination Progress Timeline"}),e.jsx(Qt,{children:"Track the termination request approval process"})]}),e.jsxs(Fe,{children:[mt&&_e.some(Ae=>Ae.status==="skipped")&&e.jsxs(di,{className:"mb-4 border-amber-300 bg-amber-50 text-amber-900",children:[e.jsx(_a,{className:"h-4 w-4 text-amber-600"}),e.jsx(Ti,{children:"Fast-tracked workflow"}),e.jsxs(ui,{children:[mt," Stages marked “Skipped” below were intentionally bypassed and never reviewed."]})]}),e.jsx("div",{className:"space-y-4",children:_e.map((Ae,Ht)=>{var tt,Nt,Mt;const Pe=((tt=It[Ae.name])==null?void 0:tt.length)||0,ct=he(Ae.name);return e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsx("div",{className:`w-10 h-10 rounded-full flex items-center justify-center ${Ae.status==="completed"?"bg-green-100 text-green-600":Ae.status==="active"?"bg-red-50 text-re-red":Ae.status==="skipped"?"bg-amber-50 text-amber-600 border border-dashed border-amber-300":"bg-slate-100 text-slate-400"}`,children:Ae.status==="completed"?e.jsx(Wn,{className:"w-5 h-5"}):Ae.status==="active"?e.jsx(Ha,{className:"w-5 h-5"}):Ae.status==="skipped"?e.jsx(k1,{className:"w-5 h-5"}):e.jsx("span",{children:Ae.id})}),Ht<_e.length-1&&e.jsx("div",{className:`w-0.5 ${Ae.remarks?"h-32":"h-16"} ${Ae.status==="completed"?"bg-green-300":Ae.status==="skipped"?"bg-amber-200":"bg-slate-200"}`})]}),e.jsxs("div",{className:"flex-1 pb-8",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:Ae.status==="completed"?"text-green-600":Ae.status==="active"?"text-re-red":Ae.status==="skipped"?"text-amber-700":"text-slate-400",children:Ae.name}),Ae.status==="skipped"&&e.jsx(Ce,{className:"bg-amber-100 text-amber-800 border-amber-300 hover:bg-amber-100",title:mt||"This stage was bypassed by the workflow.",children:"Skipped"}),Pe>0&&e.jsxs("button",{onClick:()=>Vt(Ae.name),className:"flex items-center gap-1 px-2 py-1 rounded-full bg-red-50 hover:bg-red-100 text-re-red-hover text-xs transition-colors cursor-pointer",children:[e.jsx(Ns,{className:"w-3 h-3"}),e.jsxs("span",{children:[Pe," ",Pe===1?"doc":"docs"]})]})]}),(((Nt=ct[0])==null?void 0:Nt.timestamp)||Ae.date)&&e.jsxs("div",{className:"flex items-center gap-1 text-xs text-slate-500 bg-slate-50 px-2 py-0.5 rounded-full border border-slate-100",children:[e.jsx(dr,{className:"w-3 h-3"}),e.jsx("span",{children:Gt(((Mt=ct[0])==null?void 0:Mt.timestamp)||Ae.date)})]})]}),e.jsx("p",{className:"text-slate-600 text-sm",children:Ae.description}),Ae.status==="skipped"&&e.jsxs("p",{className:"text-xs text-amber-700 mt-1 flex items-center gap-1",children:[e.jsx(k1,{className:"w-3 h-3"}),mt?`Bypassed — ${mt}`:"This stage was bypassed by the workflow and not reviewed."]}),ct.length>0&&e.jsx("div",{className:"mt-3 space-y-3",children:ct.map((Pt,ys)=>{var hs,gn,$s;const Yt=Pt.remarks||Pt.comments||"",ps=Yt==null?void 0:Yt.startsWith("Attachment:"),ks=ps?Yt.replace("Attachment:","").trim():Yt;return e.jsxs("div",{className:"group",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(Ce,{className:` text-[10px] h-4 px-1.5 ${(hs=Pt.action)!=null&&hs.toLowerCase().includes("rejected")||(gn=Pt.action)!=null&&gn.toLowerCase().includes("revoked")?"bg-red-100 text-red-700":($s=Pt.action)!=null&&$s.toLowerCase().includes("approved")?"bg-emerald-100 text-emerald-700":"bg-blue-100 text-blue-700"} `,children:Pt.action||"Action"}),e.jsxs("span",{className:"text-[10px] text-slate-500 font-medium",children:["by ",Pt.user||"System",Pt.role?` (${Pt.role})`:""," • ",Gt(Pt.timestamp)]})]}),e.jsx("div",{className:` diff --git a/build/assets/index-DqVo88us.css b/build/assets/index-DqVo88us.css deleted file mode 100644 index 7f4685d..0000000 --- a/build/assets/index-DqVo88us.css +++ /dev/null @@ -1,6 +0,0 @@ -@import"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Public+Sans:ital,wght@0,100..900;1,100..900&display=swap";/*! -* Quill Editor v1.3.7 -* https://quilljs.com/ -* Copyright (c) 2014, Jason Chen -* Copyright (c) 2013, salesforce.com -*/.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;-o-tab-size:4;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"•"}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li *{pointer-events:all}.ql-editor ul[data-checked=true]>li:before,.ql-editor ul[data-checked=false]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"☑"}.ql-editor ul[data-checked=false]>li:before{content:"☐"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:"";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media(pointer:coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0px}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0px;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-content:""}}}@layer theme{:root,:host{--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-50:oklch(98% .016 73.684);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-200:oklch(90.1% .076 70.697);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-orange-700:oklch(55.3% .195 38.402);--color-orange-800:oklch(47% .157 37.304);--color-orange-900:oklch(40.8% .123 38.172);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-teal-100:oklch(95.3% .051 180.801);--color-teal-500:oklch(70.4% .14 182.503);--color-teal-600:oklch(60% .118 184.704);--color-teal-700:oklch(51.1% .096 186.391);--color-teal-800:oklch(43.7% .078 188.216);--color-cyan-50:oklch(98.4% .019 200.873);--color-cyan-100:oklch(95.6% .045 203.388);--color-cyan-300:oklch(86.5% .127 207.078);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-700:oklch(52% .105 223.128);--color-cyan-800:oklch(45% .085 224.283);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-100:oklch(95.1% .026 236.824);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-700:oklch(50% .134 242.749);--color-sky-800:oklch(44.3% .11 240.79);--color-sky-900:oklch(39.1% .09 240.876);--color-sky-950:oklch(29.3% .066 243.157);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-indigo-800:oklch(39.8% .195 277.366);--color-violet-50:oklch(96.9% .016 293.756);--color-violet-100:oklch(94.3% .029 294.588);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-700:oklch(49.1% .27 292.581);--color-violet-800:oklch(43.2% .232 292.759);--color-violet-900:oklch(38% .189 293.745);--color-violet-950:oklch(28.3% .141 291.089);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-800:oklch(43.8% .218 303.724);--color-pink-100:oklch(94.8% .028 342.258);--color-pink-600:oklch(59.2% .249 .584);--color-pink-800:oklch(45.9% .187 3.815);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-700:oklch(51.4% .222 16.935);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-zinc-800:oklch(27.4% .006 286.033);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--blur-md:12px;--blur-3xl:64px;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-montserrat);--default-mono-font-family:var(--font-montserrat);--font-montserrat:"Montserrat", sans-serif;--color-border:var(--border);--color-re-red:var(--re-red);--color-re-red-hover:var(--re-red-hover)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:currentColor}::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);font-family:var(--font-montserrat);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);font-family:var(--font-montserrat);color:var(--foreground)}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h1{font-size:var(--text-2xl);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h2{font-size:var(--text-xl);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h3{font-size:var(--text-lg);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h4{font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) p{font-size:var(--text-base);font-weight:var(--font-weight-normal);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) label,:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) button{font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) input{font-size:var(--text-base);font-weight:var(--font-weight-normal);line-height:1.5}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.-top-1{top:calc(var(--spacing) * -1)}.-top-3{top:calc(var(--spacing) * -3)}.-top-12{top:calc(var(--spacing) * -12)}.-top-40{top:calc(var(--spacing) * -40)}.top-0{top:calc(var(--spacing) * 0)}.top-0\.5{top:calc(var(--spacing) * .5)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2\.5{top:calc(var(--spacing) * 2.5)}.top-3\.5{top:calc(var(--spacing) * 3.5)}.top-4{top:calc(var(--spacing) * 4)}.top-6{top:calc(var(--spacing) * 6)}.top-10{top:calc(var(--spacing) * 10)}.top-\[1px\]{top:1px}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.-right-1{right:calc(var(--spacing) * -1)}.-right-3{right:calc(var(--spacing) * -3)}.-right-12{right:calc(var(--spacing) * -12)}.-right-40{right:calc(var(--spacing) * -40)}.right-0{right:calc(var(--spacing) * 0)}.right-0\.5{right:calc(var(--spacing) * .5)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.-bottom-12{bottom:calc(var(--spacing) * -12)}.-bottom-40{bottom:calc(var(--spacing) * -40)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-0\.5{bottom:calc(var(--spacing) * .5)}.bottom-12{bottom:calc(var(--spacing) * 12)}.bottom-\[-1px\]{bottom:-1px}.bottom-\[-24px\]{bottom:-24px}.bottom-full{bottom:100%}.-left-12{left:calc(var(--spacing) * -12)}.-left-40{left:calc(var(--spacing) * -40)}.left-0{left:calc(var(--spacing) * 0)}.left-1{left:calc(var(--spacing) * 1)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[100\]{z-index:100}.z-\[9999\]{z-index:9999}.order-1{order:1}.order-2{order:2}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}.col-span-6{grid-column:span 6/span 6}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.-mx-6{margin-inline:calc(var(--spacing) * -6)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-auto{margin-inline:auto}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-8{margin-block:calc(var(--spacing) * 8)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.-mb-6{margin-bottom:calc(var(--spacing) * -6)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-7{margin-bottom:calc(var(--spacing) * 7)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-5{margin-left:calc(var(--spacing) * 5)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-8{margin-left:calc(var(--spacing) * 8)}.ml-9{margin-left:calc(var(--spacing) * 9)}.ml-11{margin-left:calc(var(--spacing) * 11)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-full{width:100%;height:100%}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-4\.5{height:calc(var(--spacing) * 4.5)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-32{height:calc(var(--spacing) * 32)}.h-40{height:calc(var(--spacing) * 40)}.h-48{height:calc(var(--spacing) * 48)}.h-64{height:calc(var(--spacing) * 64)}.h-80{height:calc(var(--spacing) * 80)}.h-96{height:calc(var(--spacing) * 96)}.h-\[1\.15rem\]{height:1.15rem}.h-\[30rem\]{height:30rem}.h-\[44px\]{height:44px}.h-\[70vh\]{height:70vh}.h-\[85vh\]{height:85vh}.h-\[90vh\]{height:90vh}.h-\[400px\]{height:400px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-\(--radix-context-menu-content-available-height\){max-height:var(--radix-context-menu-content-available-height)}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-10{max-height:calc(var(--spacing) * 10)}.max-h-14{max-height:calc(var(--spacing) * 14)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[55vh\]{max-height:55vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[95vh\]{max-height:95vh}.max-h-\[250px\]{max-height:250px}.max-h-\[300px\]{max-height:300px}.max-h-\[600px\]{max-height:600px}.max-h-\[800px\]{max-height:800px}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-\[32px\]{min-height:32px}.min-h-\[44px\]{min-height:44px}.min-h-\[60px\]{min-height:60px}.min-h-\[60vh\]{min-height:60vh}.min-h-\[80px\]{min-height:80px}.min-h-\[96px\]{min-height:96px}.min-h-\[100px\]{min-height:100px}.min-h-\[120px\]{min-height:120px}.min-h-\[150px\]{min-height:150px}.min-h-\[320px\]{min-height:320px}.min-h-\[400px\]{min-height:400px}.min-h-\[420px\]{min-height:420px}.min-h-\[480px\]{min-height:480px}.min-h-\[600px\]{min-height:600px}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.\!w-\[80vw\]{width:80vw!important}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-0{width:calc(var(--spacing) * 0)}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:calc(var(--spacing) * 1)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-\[10\%\]{width:10%}.w-\[15\%\]{width:15%}.w-\[20\%\]{width:20%}.w-\[35\%\]{width:35%}.w-\[45\%\]{width:45%}.w-\[50px\]{width:50px}.w-\[100px\]{width:100px}.w-\[180px\]{width:180px}.w-\[200px\]{width:200px}.w-\[280px\]{width:280px}.w-\[360px\]{width:360px}.w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.w-\[var\(--radix-select-trigger-width\)\]{width:var(--radix-select-trigger-width)}.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}.\!max-w-\[80vw\]{max-width:80vw!important}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[8rem\]{max-width:8rem}.max-w-\[90vw\]{max-width:90vw}.max-w-\[95vw\]{max-width:95vw}.max-w-\[140px\]{max-width:140px}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[220px\]{max-width:220px}.max-w-\[250px\]{max-width:250px}.max-w-\[260px\]{max-width:260px}.max-w-\[360px\]{max-width:360px}.max-w-\[1240px\]{max-width:1240px}.max-w-\[1600px\]{max-width:1600px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-\[min\(85\%\,36rem\)\]{max-width:min(85%,36rem)}.max-w-\[min\(100\%\,42rem\)\]{max-width:min(100%,42rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-8{min-width:calc(var(--spacing) * 8)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-10{min-width:calc(var(--spacing) * 10)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[12rem\]{min-width:12rem}.min-w-\[60px\]{min-width:60px}.min-w-\[80px\]{min-width:80px}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[140px\]{min-width:140px}.min-w-\[150px\]{min-width:150px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-\[300px\]{min-width:300px}.min-w-\[900px\]{min-width:900px}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.table-auto{table-layout:auto}.table-fixed{table-layout:fixed}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\(--radix-context-menu-content-transform-origin\){transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-hover-card-content-transform-origin\){transform-origin:var(--radix-hover-card-content-transform-origin)}.origin-\(--radix-menubar-content-transform-origin\){transform-origin:var(--radix-menubar-content-transform-origin)}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0\.5{--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[loading_1\.5s_infinite_linear\]{animation:1.5s linear infinite loading}.animate-bounce{animation:var(--animate-bounce)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.resize-y{resize:vertical}.scroll-my-1{scroll-margin-block:calc(var(--spacing) * 1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing) * 1)}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.\[appearance\:textfield\]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-start{justify-items:start}.gap-0{gap:calc(var(--spacing) * 0)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-12{gap:calc(var(--spacing) * 12)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{-moz-column-gap:calc(var(--spacing) * 2);column-gap:calc(var(--spacing) * 2)}.gap-x-3{-moz-column-gap:calc(var(--spacing) * 3);column-gap:calc(var(--spacing) * 3)}.gap-x-6{-moz-column-gap:calc(var(--spacing) * 6);column-gap:calc(var(--spacing) * 6)}.gap-x-8{-moz-column-gap:calc(var(--spacing) * 8);column-gap:calc(var(--spacing) * 8)}.gap-x-10{-moz-column-gap:calc(var(--spacing) * 10);column-gap:calc(var(--spacing) * 10)}:where(.-space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-100>:not(:last-child)){border-color:var(--color-gray-100)}:where(.divide-slate-50>:not(:last-child)){border-color:var(--color-slate-50)}:where(.divide-slate-100>:not(:last-child)){border-color:var(--color-slate-100)}.self-center{align-self:center}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.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:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-lg{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.rounded-tl-none{border-top-left-radius:0}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tr-none{border-top-right-radius:0}.rounded-b-lg{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-8{border-style:var(--tw-border-style);border-width:8px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-t-4{border-top-style:var(--tw-border-style);border-top-width:4px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-b-4{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-\(--color-border\){border-color:var(--color-border)}.border-\[\#cccccc\]{border-color:#ccc}.border-amber-300{border-color:var(--color-amber-300)}.border-blue-100{border-color:var(--color-blue-100)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-300{border-color:var(--color-blue-300)}.border-blue-400{border-color:var(--color-blue-400)}.border-blue-500{border-color:var(--color-blue-500)}.border-blue-600{border-color:var(--color-blue-600)}.border-border,.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,var(--border) 50%,transparent)}}.border-cyan-300{border-color:var(--color-cyan-300)}.border-emerald-100{border-color:var(--color-emerald-100)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-emerald-400{border-color:var(--color-emerald-400)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-green-100{border-color:var(--color-green-100)}.border-green-200{border-color:var(--color-green-200)}.border-green-300{border-color:var(--color-green-300)}.border-green-400{border-color:var(--color-green-400)}.border-green-500{border-color:var(--color-green-500)}.border-green-600{border-color:var(--color-green-600)}.border-indigo-200{border-color:var(--color-indigo-200)}.border-indigo-300{border-color:var(--color-indigo-300)}.border-input{border-color:var(--input)}.border-orange-200{border-color:var(--color-orange-200)}.border-orange-300{border-color:var(--color-orange-300)}.border-primary{border-color:var(--primary)}.border-purple-100{border-color:var(--color-purple-100)}.border-purple-200{border-color:var(--color-purple-200)}.border-purple-300{border-color:var(--color-purple-300)}.border-re-red{border-color:var(--re-red)}.border-red-50{border-color:var(--color-red-50)}.border-red-100{border-color:var(--color-red-100)}.border-red-100\/50{border-color:#ffe2e280}@supports (color:color-mix(in lab,red,red)){.border-red-100\/50{border-color:color-mix(in oklab,var(--color-red-100) 50%,transparent)}}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-red-400{border-color:var(--color-red-400)}.border-red-500{border-color:var(--color-red-500)}.border-red-600{border-color:var(--color-red-600)}.border-rose-100{border-color:var(--color-rose-100)}.border-rose-200{border-color:var(--color-rose-200)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-sky-200{border-color:var(--color-sky-200)}.border-slate-50{border-color:var(--color-slate-50)}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-200\/50{border-color:#e2e8f080}@supports (color:color-mix(in lab,red,red)){.border-slate-200\/50{border-color:color-mix(in oklab,var(--color-slate-200) 50%,transparent)}}.border-slate-200\/90{border-color:#e2e8f0e6}@supports (color:color-mix(in lab,red,red)){.border-slate-200\/90{border-color:color-mix(in oklab,var(--color-slate-200) 90%,transparent)}}.border-slate-300{border-color:var(--color-slate-300)}.border-slate-400{border-color:var(--color-slate-400)}.border-slate-700{border-color:var(--color-slate-700)}.border-slate-700\/50{border-color:#31415880}@supports (color:color-mix(in lab,red,red)){.border-slate-700\/50{border-color:color-mix(in oklab,var(--color-slate-700) 50%,transparent)}}.border-slate-800{border-color:var(--color-slate-800)}.border-teal-500{border-color:var(--color-teal-500)}.border-transparent{border-color:#0000}.border-violet-200{border-color:var(--color-violet-200)}.border-white{border-color:var(--color-white)}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.border-white\/30{border-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.border-white\/30{border-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.border-yellow-200{border-color:var(--color-yellow-200)}.border-yellow-300{border-color:var(--color-yellow-300)}.border-t-slate-900{border-top-color:var(--color-slate-900)}.border-t-transparent{border-top-color:#0000}.border-t-white{border-top-color:var(--color-white)}.border-l-green-500{border-left-color:var(--color-green-500)}.border-l-re-red{border-left-color:var(--re-red)}.border-l-red-500{border-left-color:var(--color-red-500)}.border-l-transparent{border-left-color:#0000}.bg-\(--color-bg\){background-color:var(--color-bg)}.bg-accent{background-color:var(--accent)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-200{background-color:var(--color-amber-200)}.bg-amber-600{background-color:var(--color-amber-600)}.bg-background{background-color:var(--background)}.bg-black{background-color:var(--color-black)}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.bg-black\/20{background-color:color-mix(in oklab,var(--color-black) 20%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-50\/50{background-color:#eff6ff80}@supports (color:color-mix(in lab,red,red)){.bg-blue-50\/50{background-color:color-mix(in oklab,var(--color-blue-50) 50%,transparent)}}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-200{background-color:var(--color-blue-200)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-current{background-color:currentColor}.bg-cyan-100{background-color:var(--color-cyan-100)}.bg-cyan-500{background-color:var(--color-cyan-500)}.bg-destructive{background-color:var(--destructive)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-50\/40{background-color:#ecfdf566}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/40{background-color:color-mix(in oklab,var(--color-emerald-50) 40%,transparent)}}.bg-emerald-50\/90{background-color:#ecfdf5e6}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/90{background-color:color-mix(in oklab,var(--color-emerald-50) 90%,transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/20{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/20{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.bg-emerald-600{background-color:var(--color-emerald-600)}.bg-foreground{background-color:var(--foreground)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-50\/30{background-color:#f0fdf44d}@supports (color:color-mix(in lab,red,red)){.bg-green-50\/30{background-color:color-mix(in oklab,var(--color-green-50) 30%,transparent)}}.bg-green-50\/50{background-color:#f0fdf480}@supports (color:color-mix(in lab,red,red)){.bg-green-50\/50{background-color:color-mix(in oklab,var(--color-green-50) 50%,transparent)}}.bg-green-100{background-color:var(--color-green-100)}.bg-green-200{background-color:var(--color-green-200)}.bg-green-300{background-color:var(--color-green-300)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/30{background-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/30{background-color:color-mix(in oklab,var(--color-green-500) 30%,transparent)}}.bg-green-600{background-color:var(--color-green-600)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-input-background{background-color:var(--input-background)}.bg-muted,.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-orange-50{background-color:var(--color-orange-50)}.bg-orange-50\/30{background-color:#fff7ed4d}@supports (color:color-mix(in lab,red,red)){.bg-orange-50\/30{background-color:color-mix(in oklab,var(--color-orange-50) 30%,transparent)}}.bg-orange-100{background-color:var(--color-orange-100)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-orange-600{background-color:var(--color-orange-600)}.bg-pink-100{background-color:var(--color-pink-100)}.bg-pink-600{background-color:var(--color-pink-600)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-primary-600{background-color:var(--primary-600)}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-purple-600{background-color:var(--color-purple-600)}.bg-re-black{background-color:var(--re-black)}.bg-re-red,.bg-re-red\/10{background-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.bg-re-red\/10{background-color:color-mix(in oklab,var(--re-red) 10%,transparent)}}.bg-re-red\/20{background-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.bg-re-red\/20{background-color:color-mix(in oklab,var(--re-red) 20%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-50\/20{background-color:#fef2f233}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/20{background-color:color-mix(in oklab,var(--color-red-50) 20%,transparent)}}.bg-red-50\/30{background-color:#fef2f24d}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/30{background-color:color-mix(in oklab,var(--color-red-50) 30%,transparent)}}.bg-red-50\/40{background-color:#fef2f266}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/40{background-color:color-mix(in oklab,var(--color-red-50) 40%,transparent)}}.bg-red-50\/50{background-color:#fef2f280}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/50{background-color:color-mix(in oklab,var(--color-red-50) 50%,transparent)}}.bg-red-50\/80{background-color:#fef2f2cc}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/80{background-color:color-mix(in oklab,var(--color-red-50) 80%,transparent)}}.bg-red-50\/90{background-color:#fef2f2e6}@supports (color:color-mix(in lab,red,red)){.bg-red-50\/90{background-color:color-mix(in oklab,var(--color-red-50) 90%,transparent)}}.bg-red-100{background-color:var(--color-red-100)}.bg-red-300{background-color:var(--color-red-300)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.bg-red-600{background-color:var(--color-red-600)}.bg-red-600\/20{background-color:#e4001433}@supports (color:color-mix(in lab,red,red)){.bg-red-600\/20{background-color:color-mix(in oklab,var(--color-red-600) 20%,transparent)}}.bg-red-700\/15{background-color:#bf000f26}@supports (color:color-mix(in lab,red,red)){.bg-red-700\/15{background-color:color-mix(in oklab,var(--color-red-700) 15%,transparent)}}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-100{background-color:var(--color-rose-100)}.bg-rose-500\/20{background-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/20{background-color:color-mix(in oklab,var(--color-rose-500) 20%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-sky-50\/80{background-color:#f0f9ffcc}@supports (color:color-mix(in lab,red,red)){.bg-sky-50\/80{background-color:color-mix(in oklab,var(--color-sky-50) 80%,transparent)}}.bg-sky-50\/90{background-color:#f0f9ffe6}@supports (color:color-mix(in lab,red,red)){.bg-sky-50\/90{background-color:color-mix(in oklab,var(--color-sky-50) 90%,transparent)}}.bg-sky-100{background-color:var(--color-sky-100)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-50\/30{background-color:#f8fafc4d}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/30{background-color:color-mix(in oklab,var(--color-slate-50) 30%,transparent)}}.bg-slate-50\/40{background-color:#f8fafc66}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/40{background-color:color-mix(in oklab,var(--color-slate-50) 40%,transparent)}}.bg-slate-50\/50{background-color:#f8fafc80}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/50{background-color:color-mix(in oklab,var(--color-slate-50) 50%,transparent)}}.bg-slate-50\/80{background-color:#f8fafccc}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/80{background-color:color-mix(in oklab,var(--color-slate-50) 80%,transparent)}}.bg-slate-50\/95{background-color:#f8fafcf2}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/95{background-color:color-mix(in oklab,var(--color-slate-50) 95%,transparent)}}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-100\/80{background-color:#f1f5f9cc}@supports (color:color-mix(in lab,red,red)){.bg-slate-100\/80{background-color:color-mix(in oklab,var(--color-slate-100) 80%,transparent)}}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-200\/70{background-color:#e2e8f0b3}@supports (color:color-mix(in lab,red,red)){.bg-slate-200\/70{background-color:color-mix(in oklab,var(--color-slate-200) 70%,transparent)}}.bg-slate-300{background-color:var(--color-slate-300)}.bg-slate-400{background-color:var(--color-slate-400)}.bg-slate-500{background-color:var(--color-slate-500)}.bg-slate-600{background-color:var(--color-slate-600)}.bg-slate-700{background-color:var(--color-slate-700)}.bg-slate-700\/50{background-color:#31415880}@supports (color:color-mix(in lab,red,red)){.bg-slate-700\/50{background-color:color-mix(in oklab,var(--color-slate-700) 50%,transparent)}}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-800\/50{background-color:#1d293d80}@supports (color:color-mix(in lab,red,red)){.bg-slate-800\/50{background-color:color-mix(in oklab,var(--color-slate-800) 50%,transparent)}}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-900\/5{background-color:#0f172b0d}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/5{background-color:color-mix(in oklab,var(--color-slate-900) 5%,transparent)}}.bg-slate-900\/20{background-color:#0f172b33}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/20{background-color:color-mix(in oklab,var(--color-slate-900) 20%,transparent)}}.bg-slate-950{background-color:var(--color-slate-950)}.bg-teal-100{background-color:var(--color-teal-100)}.bg-teal-500{background-color:var(--color-teal-500)}.bg-teal-600{background-color:var(--color-teal-600)}.bg-transparent{background-color:#0000}.bg-violet-50\/80{background-color:#f5f3ffcc}@supports (color:color-mix(in lab,red,red)){.bg-violet-50\/80{background-color:color-mix(in oklab,var(--color-violet-50) 80%,transparent)}}.bg-violet-50\/90{background-color:#f5f3ffe6}@supports (color:color-mix(in lab,red,red)){.bg-violet-50\/90{background-color:color-mix(in oklab,var(--color-violet-50) 90%,transparent)}}.bg-violet-100{background-color:var(--color-violet-100)}.bg-white{background-color:var(--color-white)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.bg-white\/20{background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.bg-white\/40{background-color:#fff6}@supports (color:color-mix(in lab,red,red)){.bg-white\/40{background-color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.bg-white\/50{background-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.bg-white\/50{background-color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.bg-white\/60{background-color:#fff9}@supports (color:color-mix(in lab,red,red)){.bg-white\/60{background-color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.bg-yellow-50\/30{background-color:#fefce84d}@supports (color:color-mix(in lab,red,red)){.bg-yellow-50\/30{background-color:color-mix(in oklab,var(--color-yellow-50) 30%,transparent)}}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-50{--tw-gradient-from:var(--color-blue-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-green-50{--tw-gradient-from:var(--color-green-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-green-600{--tw-gradient-from:var(--color-green-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-50{--tw-gradient-from:var(--color-purple-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-re-red{--tw-gradient-from:var(--re-red);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-re-red\/20{--tw-gradient-from:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.from-re-red\/20{--tw-gradient-from:color-mix(in oklab, var(--re-red) 20%, transparent)}}.from-re-red\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-red-50{--tw-gradient-from:var(--color-red-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-red-500{--tw-gradient-from:var(--color-red-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-red-600{--tw-gradient-from:var(--color-red-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-red-600\/20{--tw-gradient-from:#e4001433}@supports (color:color-mix(in lab,red,red)){.from-red-600\/20{--tw-gradient-from:color-mix(in oklab, var(--color-red-600) 20%, transparent)}}.from-red-600\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-slate-900{--tw-gradient-from:var(--color-slate-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white{--tw-gradient-from:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-slate-800{--tw-gradient-via:var(--color-slate-800);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-cyan-50{--tw-gradient-to:var(--color-cyan-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-emerald-50{--tw-gradient-to:var(--color-emerald-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-green-500{--tw-gradient-to:var(--color-green-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-50{--tw-gradient-to:var(--color-indigo-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-50{--tw-gradient-to:var(--color-orange-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-re-red{--tw-gradient-to:var(--re-red);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-re-red-hover{--tw-gradient-to:var(--re-red-hover);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-red-50{--tw-gradient-to:var(--color-red-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-red-500{--tw-gradient-to:var(--color-red-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-red-700{--tw-gradient-to:var(--color-red-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-50{--tw-gradient-to:var(--color-slate-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-50\/50{--tw-gradient-to:#f8fafc80}@supports (color:color-mix(in lab,red,red)){.to-slate-50\/50{--tw-gradient-to:color-mix(in oklab, var(--color-slate-50) 50%, transparent)}}.to-slate-50\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-800{--tw-gradient-to:var(--color-slate-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-900{--tw-gradient-to:var(--color-slate-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-current{fill:currentColor}.fill-primary{fill:var(--primary)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-7{padding:calc(var(--spacing) * 7)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.p-12{padding:calc(var(--spacing) * 12)}.p-20{padding:calc(var(--spacing) * 20)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-10{padding-inline:calc(var(--spacing) * 10)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pt-24{padding-top:calc(var(--spacing) * 24)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-mono{font-family:var(--font-montserrat)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[28px\]{font-size:28px}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#333333\]{color:#333}.text-\[\#666666\]{color:#666}.text-accent-foreground{color:var(--accent-foreground)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-black{color:var(--color-black)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-blue-900{color:var(--color-blue-900)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-cyan-700{color:var(--color-cyan-700)}.text-cyan-800{color:var(--color-cyan-800)}.text-destructive{color:var(--destructive)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-emerald-900{color:var(--color-emerald-900)}.text-foreground{color:var(--foreground)}.text-gray-300{color:var(--color-gray-300)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-green-900{color:var(--color-green-900)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-indigo-800{color:var(--color-indigo-800)}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-600{color:var(--color-orange-600)}.text-orange-700{color:var(--color-orange-700)}.text-orange-800{color:var(--color-orange-800)}.text-orange-900{color:var(--color-orange-900)}.text-pink-800{color:var(--color-pink-800)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-600{color:var(--primary-600)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-600{color:var(--color-purple-600)}.text-purple-700{color:var(--color-purple-700)}.text-purple-800{color:var(--color-purple-800)}.text-re-red{color:var(--re-red)}.text-re-red-hover{color:var(--re-red-hover)}.text-red-100{color:var(--color-red-100)}.text-red-100\/80{color:#ffe2e2cc}@supports (color:color-mix(in lab,red,red)){.text-red-100\/80{color:color-mix(in oklab,var(--color-red-100) 80%,transparent)}}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-red-800\/80{color:#9f0712cc}@supports (color:color-mix(in lab,red,red)){.text-red-800\/80{color:color-mix(in oklab,var(--color-red-800) 80%,transparent)}}.text-red-900{color:var(--color-red-900)}.text-rose-400{color:var(--color-rose-400)}.text-rose-700{color:var(--color-rose-700)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground) 70%,transparent)}}.text-sky-700{color:var(--color-sky-700)}.text-sky-800{color:var(--color-sky-800)}.text-sky-900{color:var(--color-sky-900)}.text-sky-900\/90{color:#024a70e6}@supports (color:color-mix(in lab,red,red)){.text-sky-900\/90{color:color-mix(in oklab,var(--color-sky-900) 90%,transparent)}}.text-sky-950{color:var(--color-sky-950)}.text-slate-100{color:var(--color-slate-100)}.text-slate-200{color:var(--color-slate-200)}.text-slate-300{color:var(--color-slate-300)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-teal-700{color:var(--color-teal-700)}.text-teal-800{color:var(--color-teal-800)}.text-violet-700{color:var(--color-violet-700)}.text-violet-800{color:var(--color-violet-800)}.text-violet-900{color:var(--color-violet-900)}.text-violet-900\/90{color:#4d179ae6}@supports (color:color-mix(in lab,red,red)){.text-violet-900\/90{color:color-mix(in oklab,var(--color-violet-900) 90%,transparent)}}.text-violet-950{color:var(--color-violet-950)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.text-white\/90{color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.text-white\/90{color:color-mix(in oklab,var(--color-white) 90%,transparent)}}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.decoration-re-red{text-decoration-color:var(--re-red)}.decoration-2{text-decoration-thickness:2px}.underline-offset-4{text-underline-offset:4px}.accent-slate-900{accent-color:var(--color-slate-900)}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_-4px_10px_-5px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:0 -4px 10px -5px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(34\,197\,94\,0\.4\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,#22c55e66);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_40px_rgba\(218\,41\,28\,0\.2\)\]{--tw-shadow:0 0 40px var(--tw-shadow-color,#da291c33);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_40px_rgba\(220\,38\,38\,0\.2\)\]{--tw-shadow:0 0 40px var(--tw-shadow-color,#dc262633);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-green-100{--tw-shadow-color:oklch(96.2% .044 156.743)}@supports (color:color-mix(in lab,red,red)){.shadow-green-100{--tw-shadow-color:color-mix(in oklab, var(--color-green-100) var(--tw-shadow-alpha), transparent)}}.shadow-green-600\/20{--tw-shadow-color:#00a54433}@supports (color:color-mix(in lab,red,red)){.shadow-green-600\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-green-600) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-purple-200{--tw-shadow-color:oklch(90.2% .063 306.703)}@supports (color:color-mix(in lab,red,red)){.shadow-purple-200{--tw-shadow-color:color-mix(in oklab, var(--color-purple-200) var(--tw-shadow-alpha), transparent)}}.shadow-re-red\/10{--tw-shadow-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.shadow-re-red\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--re-red) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-re-red\/15{--tw-shadow-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.shadow-re-red\/15{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--re-red) 15%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-re-red\/20{--tw-shadow-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.shadow-re-red\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--re-red) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-red-200{--tw-shadow-color:oklch(88.5% .062 18.334)}@supports (color:color-mix(in lab,red,red)){.shadow-red-200{--tw-shadow-color:color-mix(in oklab, var(--color-red-200) var(--tw-shadow-alpha), transparent)}}.shadow-red-200\/50{--tw-shadow-color:#ffcaca80}@supports (color:color-mix(in lab,red,red)){.shadow-red-200\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-red-200) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-slate-200{--tw-shadow-color:oklch(92.9% .013 255.508)}@supports (color:color-mix(in lab,red,red)){.shadow-slate-200{--tw-shadow-color:color-mix(in oklab, var(--color-slate-200) var(--tw-shadow-alpha), transparent)}}.ring-black\/5{--tw-ring-color:#0000000d}@supports (color:color-mix(in lab,red,red)){.ring-black\/5{--tw-ring-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.ring-emerald-300{--tw-ring-color:var(--color-emerald-300)}.ring-emerald-300\/70{--tw-ring-color:#5ee9b5b3}@supports (color:color-mix(in lab,red,red)){.ring-emerald-300\/70{--tw-ring-color:color-mix(in oklab, var(--color-emerald-300) 70%, transparent)}}.ring-re-red\/20{--tw-ring-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.ring-re-red\/20{--tw-ring-color:color-mix(in oklab, var(--re-red) 20%, transparent)}}.ring-red-300\/70{--tw-ring-color:#ffa3a3b3}@supports (color:color-mix(in lab,red,red)){.ring-red-300\/70{--tw-ring-color:color-mix(in oklab, var(--color-red-300) 70%, transparent)}}.ring-ring\/50{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.ring-ring\/50{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-slate-100{--tw-ring-color:var(--color-slate-100)}.ring-slate-200{--tw-ring-color:var(--color-slate-200)}.ring-transparent{--tw-ring-color:transparent}.ring-white\/20{--tw-ring-color:#fff3}@supports (color:color-mix(in lab,red,red)){.ring-white\/20{--tw-ring-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.ring-offset-background{--tw-ring-offset-color:var(--background)}.ring-offset-white{--tw-ring-offset-color:var(--color-white)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur-3xl{--tw-blur:blur(var(--blur-3xl));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-\[0\.5\]{--tw-grayscale:grayscale(.5);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-\[1px\]{--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,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-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(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-1000{--tw-duration:1s;transition-duration:1s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media(hover:hover){.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:bg-blue-50:is(:where(.group):hover *){background-color:var(--color-blue-50)}.group-hover\:bg-re-red:is(:where(.group):hover *){background-color:var(--re-red)}.group-hover\:bg-red-50:is(:where(.group):hover *){background-color:var(--color-red-50)}.group-hover\:bg-slate-100:is(:where(.group):hover *){background-color:var(--color-slate-100)}.group-hover\:bg-white:is(:where(.group):hover *){background-color:var(--color-white)}.group-hover\:text-blue-600:is(:where(.group):hover *){color:var(--color-blue-600)}.group-hover\:text-emerald-900:is(:where(.group):hover *){color:var(--color-emerald-900)}.group-hover\:text-re-red:is(:where(.group):hover *){color:var(--re-red)}.group-hover\:text-re-red-hover:is(:where(.group):hover *){color:var(--re-red-hover)}.group-hover\:text-red-900:is(:where(.group):hover *){color:var(--color-red-900)}.group-hover\:text-slate-400:is(:where(.group):hover *){color:var(--color-slate-400)}.group-hover\:text-slate-900:is(:where(.group):hover *){color:var(--color-slate-900)}.group-hover\:text-white:is(:where(.group):hover *){color:var(--color-white)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\:ring-blue-100:is(:where(.group):hover *){--tw-ring-color:var(--color-blue-100)}.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *),.group-hover\/num\:opacity-100:is(:where(.group\/num):hover *){opacity:1}.group-hover\/opt\:text-slate-900:is(:where(.group\/opt):hover *){color:var(--color-slate-900)}.group-hover\/opt\:opacity-100:is(:where(.group\/opt):hover *),.group-hover\/optnum\:opacity-100:is(:where(.group\/optnum):hover *){opacity:1}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing) * 8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing) * -8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing) * 8)!important;height:calc(var(--spacing) * 8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 0)!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing) * 0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing) * -4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing) * 0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block:is(:where(.group\/drawer-content)[data-vaul-drawer-direction=bottom] *){display:block}.group-data-\[viewport\=false\]\/navigation-menu\:top-full:is(:where(.group\/navigation-menu)[data-viewport=false] *){top:100%}.group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5:is(:where(.group\/navigation-menu)[data-viewport=false] *){margin-top:calc(var(--spacing) * 1.5)}.group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden:is(:where(.group\/navigation-menu)[data-viewport=false] *){overflow:hidden}.group-data-\[viewport\=false\]\/navigation-menu\:rounded-md:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-radius:calc(var(--radius) - 2px)}.group-data-\[viewport\=false\]\/navigation-menu\:border:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[viewport\=false\]\/navigation-menu\:bg-popover:is(:where(.group\/navigation-menu)[data-viewport=false] *){background-color:var(--popover)}.group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground:is(:where(.group\/navigation-menu)[data-viewport=false] *){color:var(--popover-foreground)}.group-data-\[viewport\=false\]\/navigation-menu\:shadow:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[viewport\=false\]\/navigation-menu\:duration-200:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-duration:.2s;transition-duration:.2s}@media(hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing) * 1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing) * 2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing) * 1)}.selection\:bg-primary ::-moz-selection{background-color:var(--primary)}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::-moz-selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::-moz-selection{color:var(--primary-foreground)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::-moz-selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:mr-4::file-selector-button{margin-right:calc(var(--spacing) * 4)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing) * 7)}.file\:rounded-full::file-selector-button{border-radius:3.40282e38px}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-red-50::file-selector-button{background-color:var(--color-red-50)}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:px-4::file-selector-button{padding-inline:calc(var(--spacing) * 4)}.file\:py-1::file-selector-button{padding-block:calc(var(--spacing) * 1)}.file\:py-2::file-selector-button{padding-block:calc(var(--spacing) * 2)}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:text-xs::file-selector-button{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:font-semibold::file-selector-button{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.file\:text-re-red::file-selector-button{color:var(--re-red)}.file\:text-re-red-hover::file-selector-button{color:var(--re-red-hover)}.placeholder\:font-bold::-moz-placeholder{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.placeholder\:font-bold::placeholder{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.placeholder\:text-\[\#999999\]::-moz-placeholder{color:#999}.placeholder\:text-\[\#999999\]::placeholder{color:#999}.placeholder\:text-muted-foreground::-moz-placeholder{color:var(--muted-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.placeholder\:text-slate-300::-moz-placeholder{color:var(--color-slate-300)}.placeholder\:text-slate-300::placeholder{color:var(--color-slate-300)}.placeholder\:text-slate-400::-moz-placeholder{color:var(--color-slate-400)}.placeholder\:text-slate-400::placeholder{color:var(--color-slate-400)}.placeholder\:text-slate-500::-moz-placeholder{color:var(--color-slate-500)}.placeholder\:text-slate-500::placeholder{color:var(--color-slate-500)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing) * -2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:calc(var(--spacing) * 1)}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.first\:border-l:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pb-0:last-child{padding-bottom:calc(var(--spacing) * 0)}.focus-within\:relative:focus-within{position:relative}.focus-within\:z-20:focus-within{z-index:20}.focus-within\:border-blue-400:focus-within{border-color:var(--color-blue-400)}.focus-within\:ring-1:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:ring-blue-100:focus-within{--tw-ring-color:var(--color-blue-100)}@media(hover:hover){.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-\[1\.01\]:hover{scale:1.01}.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:border-blue-300:hover{border-color:var(--color-blue-300)}.hover\:border-re-red:hover{border-color:var(--re-red)}.hover\:border-red-200:hover{border-color:var(--color-red-200)}.hover\:border-red-300:hover{border-color:var(--color-red-300)}.hover\:border-red-400:hover{border-color:var(--color-red-400)}.hover\:border-red-500:hover{border-color:var(--color-red-500)}.hover\:border-slate-100:hover{border-color:var(--color-slate-100)}.hover\:border-slate-200:hover{border-color:var(--color-slate-200)}.hover\:border-slate-300:hover{border-color:var(--color-slate-300)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-amber-50:hover{background-color:var(--color-amber-50)}.hover\:bg-amber-100:hover{background-color:var(--color-amber-100)}.hover\:bg-amber-700:hover{background-color:var(--color-amber-700)}.hover\:bg-black:hover{background-color:var(--color-black)}.hover\:bg-blue-50:hover{background-color:var(--color-blue-50)}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}.hover\:bg-emerald-50\/30:hover{background-color:#ecfdf54d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-emerald-50\/30:hover{background-color:color-mix(in oklab,var(--color-emerald-50) 30%,transparent)}}.hover\:bg-emerald-100:hover{background-color:var(--color-emerald-100)}.hover\:bg-emerald-200:hover{background-color:var(--color-emerald-200)}.hover\:bg-emerald-700:hover{background-color:var(--color-emerald-700)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-green-100:hover{background-color:var(--color-green-100)}.hover\:bg-green-600:hover{background-color:var(--color-green-600)}.hover\:bg-green-700:hover{background-color:var(--color-green-700)}.hover\:bg-indigo-50:hover{background-color:var(--color-indigo-50)}.hover\:bg-indigo-700:hover{background-color:var(--color-indigo-700)}.hover\:bg-muted:hover,.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.hover\:bg-orange-50:hover{background-color:var(--color-orange-50)}.hover\:bg-orange-700:hover{background-color:var(--color-orange-700)}.hover\:bg-primary:hover{background-color:var(--primary)}.hover\:bg-primary-50:hover{background-color:var(--primary-50)}.hover\:bg-primary-700:hover{background-color:var(--primary-700)}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}.hover\:bg-purple-50:hover{background-color:var(--color-purple-50)}.hover\:bg-purple-700:hover{background-color:var(--color-purple-700)}.hover\:bg-re-red:hover{background-color:var(--re-red)}.hover\:bg-re-red-hover:hover{background-color:var(--re-red-hover)}.hover\:bg-re-red\/90:hover{background-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-re-red\/90:hover{background-color:color-mix(in oklab,var(--re-red) 90%,transparent)}}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-50\/20:hover{background-color:#fef2f233}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-50\/20:hover{background-color:color-mix(in oklab,var(--color-red-50) 20%,transparent)}}.hover\:bg-red-50\/30:hover{background-color:#fef2f24d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-50\/30:hover{background-color:color-mix(in oklab,var(--color-red-50) 30%,transparent)}}.hover\:bg-red-100:hover{background-color:var(--color-red-100)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:bg-slate-50\/10:hover{background-color:#f8fafc1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/10:hover{background-color:color-mix(in oklab,var(--color-slate-50) 10%,transparent)}}.hover\:bg-slate-50\/50:hover{background-color:#f8fafc80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/50:hover{background-color:color-mix(in oklab,var(--color-slate-50) 50%,transparent)}}.hover\:bg-slate-50\/70:hover{background-color:#f8fafcb3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/70:hover{background-color:color-mix(in oklab,var(--color-slate-50) 70%,transparent)}}.hover\:bg-slate-50\/80:hover{background-color:#f8fafccc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-50\/80:hover{background-color:color-mix(in oklab,var(--color-slate-50) 80%,transparent)}}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:bg-slate-200:hover{background-color:var(--color-slate-200)}.hover\:bg-slate-200\/50:hover{background-color:#e2e8f080}@supports (color:color-mix(in lab,red,red)){.hover\:bg-slate-200\/50:hover{background-color:color-mix(in oklab,var(--color-slate-200) 50%,transparent)}}.hover\:bg-slate-700:hover{background-color:var(--color-slate-700)}.hover\:bg-slate-800:hover{background-color:var(--color-slate-800)}.hover\:bg-slate-900:hover{background-color:var(--color-slate-900)}.hover\:bg-slate-950:hover{background-color:var(--color-slate-950)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.hover\:bg-white\/30:hover{background-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/30:hover{background-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.hover\:bg-white\/40:hover{background-color:#fff6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/40:hover{background-color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.hover\:bg-zinc-800:hover{background-color:var(--color-zinc-800)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-black:hover{color:var(--color-black)}.hover\:text-blue-600:hover{color:var(--color-blue-600)}.hover\:text-blue-700:hover{color:var(--color-blue-700)}.hover\:text-blue-800:hover{color:var(--color-blue-800)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-green-800:hover{color:var(--color-green-800)}.hover\:text-indigo-600:hover{color:var(--color-indigo-600)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:text-primary-700:hover{color:var(--primary-700)}.hover\:text-primary-foreground:hover{color:var(--primary-foreground)}.hover\:text-re-red:hover{color:var(--re-red)}.hover\:text-re-red-hover:hover{color:var(--re-red-hover)}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:text-red-800:hover{color:var(--color-red-800)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:text-slate-600:hover{color:var(--color-slate-600)}.hover\:text-slate-700:hover{color:var(--color-slate-700)}.hover\:text-slate-900:hover{color:var(--color-slate-900)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-4:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.hover\:file\:bg-red-50:hover::file-selector-button{background-color:var(--color-red-50)}.hover\:file\:bg-red-100:hover::file-selector-button{background-color:var(--color-red-100)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:z-10:focus{z-index:10}.focus\:border-re-red:focus,.focus\:border-re-red\/40:focus{border-color:var(--re-red)}@supports (color:color-mix(in lab,red,red)){.focus\:border-re-red\/40:focus{border-color:color-mix(in oklab,var(--re-red) 40%,transparent)}}.focus\:border-red-500:focus{border-color:var(--color-red-500)}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:bg-primary:focus{background-color:var(--primary)}.focus\:bg-red-50:focus{background-color:var(--color-red-50)}.focus\:bg-slate-50:focus{background-color:var(--color-slate-50)}.focus\:bg-white:focus{background-color:var(--color-white)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:text-primary-foreground:focus{color:var(--primary-foreground)}.focus\:text-slate-900:focus{color:var(--color-slate-900)}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-re-red:focus{--tw-ring-color:var(--re-red)}.focus\:ring-red-200:focus{--tw-ring-color:var(--color-red-200)}.focus\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.focus\:ring-red-500\/30:focus{--tw-ring-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.focus\:ring-red-500\/30:focus{--tw-ring-color:color-mix(in oklab, var(--color-red-500) 30%, transparent)}}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-blue-500:focus-visible{border-color:var(--color-blue-500)}.focus-visible\:border-red-500:focus-visible{border-color:var(--color-red-500)}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:bg-white:focus-visible{background-color:var(--color-white)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-4:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-black:focus-visible{--tw-ring-color:var(--color-black)}.focus-visible\:ring-blue-500\/30:focus-visible{--tw-ring-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-blue-500\/30:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-blue-500) 30%, transparent)}}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-re-red:focus-visible{--tw-ring-color:var(--re-red)}.focus-visible\:ring-red-500\/30:focus-visible{--tw-ring-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-red-500\/30:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-red-500) 30%, transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-90:active{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-\[0\.98\]:active{scale:.98}.active\:scale-\[0\.99\]:active{scale:.99}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-100:disabled{background-color:var(--color-gray-100)}.disabled\:bg-slate-300:disabled{background-color:var(--color-slate-300)}.disabled\:bg-slate-400:disabled{background-color:var(--color-slate-400)}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){-moz-column-gap:calc(var(--spacing) * 3);column-gap:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-selected\:bg-accent[aria-selected=true]{background-color:var(--accent)}.aria-selected\:bg-primary[aria-selected=true]{background-color:var(--primary)}.aria-selected\:text-accent-foreground[aria-selected=true]{color:var(--accent-foreground)}.aria-selected\:text-muted-foreground[aria-selected=true]{color:var(--muted-foreground)}.aria-selected\:text-primary-foreground[aria-selected=true]{color:var(--primary-foreground)}.aria-selected\:opacity-100[aria-selected=true]{opacity:1}.data-\[active\=true\]\:z-10[data-active=true]{z-index:10}.data-\[active\=true\]\:border-ring[data-active=true]{border-color:var(--ring)}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:var(--accent-foreground)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[active\=true\]\:ring-\[3px\][data-active=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}@media(hover:hover){.data-\[active\=true\]\:hover\:bg-accent[data-active=true]:hover{background-color:var(--accent)}}.data-\[active\=true\]\:focus\:bg-accent[data-active=true]:focus{background-color:var(--accent)}.data-\[active\=true\]\:aria-invalid\:border-destructive[data-active=true][aria-invalid=true]{border-color:var(--destructive)}.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[error\=true\]\:text-destructive[data-error=true]{color:var(--destructive)}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing) * 8)}.data-\[orientation\=horizontal\]\:h-4[data-orientation=horizontal]{height:calc(var(--spacing) * 4)}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:calc(var(--spacing) * 44)}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:calc(var(--spacing) * 1.5)}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:calc(var(--spacing) * 0)}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:calc(var(--spacing) * 1)}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:var(--accent)}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:var(--accent-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing) * 9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing) * 8)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive) 90%,transparent)}}:is(.\*\*\:data-\[slot\=command-input-wrapper\]\:h-12 *)[data-slot=command-input-wrapper]{height:calc(var(--spacing) * 12)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:ring-0 *)[data-slot=navigation-menu-link]:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:outline-none *)[data-slot=navigation-menu-link]:focus{--tw-outline-style:none;outline-style:none}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing) * 2)}.data-\[state\=active\]\:bg-card[data-state=active]{background-color:var(--card)}.data-\[state\=active\]\:bg-re-red[data-state=active]{background-color:var(--re-red)}.data-\[state\=active\]\:bg-white[data-state=active]{background-color:var(--color-white)}.data-\[state\=active\]\:text-white[data-state=active]{color:var(--color-white)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-black[data-state=checked]{border-color:var(--color-black)}.data-\[state\=checked\]\:border-emerald-600[data-state=checked]{border-color:var(--color-emerald-600)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:border-purple-600[data-state=checked]{border-color:var(--color-purple-600)}.data-\[state\=checked\]\:border-re-red[data-state=checked]{border-color:var(--re-red)}.data-\[state\=checked\]\:bg-black[data-state=checked]{background-color:var(--color-black)}.data-\[state\=checked\]\:bg-emerald-600[data-state=checked]{background-color:var(--color-emerald-600)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:bg-purple-600[data-state=checked]{background-color:var(--color-purple-600)}.data-\[state\=checked\]\:bg-re-red[data-state=checked]{background-color:var(--re-red)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=inactive\]\:hidden[data-state=inactive]{display:none}.data-\[state\=on\]\:bg-accent[data-state=on]{background-color:var(--accent)}.data-\[state\=on\]\:text-accent-foreground[data-state=on]{color:var(--accent-foreground)}.data-\[state\=open\]\:bg-accent[data-state=open],.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}@media(hover:hover){.data-\[state\=open\]\:hover\:bg-accent[data-state=open]:hover{background-color:var(--accent)}.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=open\]\:focus\:bg-accent[data-state=open]:focus{background-color:var(--accent)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-switch-background[data-state=unchecked]{background-color:var(--switch-background)}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}.data-\[variant\=outline\]\:border-l-0[data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0}.data-\[variant\=outline\]\:shadow-xs[data-variant=outline]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[variant\=outline\]\:first\:border-l[data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[vaul-drawer-direction\=bottom\]\:inset-x-0[data-vaul-drawer-direction=bottom]{inset-inline:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=bottom\]\:bottom-0[data-vaul-drawer-direction=bottom]{bottom:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction=bottom]{margin-top:calc(var(--spacing) * 24)}.data-\[vaul-drawer-direction\=bottom\]\:max-h-\[80vh\][data-vaul-drawer-direction=bottom]{max-height:80vh}.data-\[vaul-drawer-direction\=bottom\]\:rounded-t-lg[data-vaul-drawer-direction=bottom]{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.data-\[vaul-drawer-direction\=bottom\]\:border-t[data-vaul-drawer-direction=bottom]{border-top-style:var(--tw-border-style);border-top-width:1px}.data-\[vaul-drawer-direction\=left\]\:inset-y-0[data-vaul-drawer-direction=left]{inset-block:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=left\]\:left-0[data-vaul-drawer-direction=left]{left:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=left\]\:w-3\/4[data-vaul-drawer-direction=left]{width:75%}.data-\[vaul-drawer-direction\=left\]\:border-r[data-vaul-drawer-direction=left]{border-right-style:var(--tw-border-style);border-right-width:1px}.data-\[vaul-drawer-direction\=right\]\:inset-y-0[data-vaul-drawer-direction=right]{inset-block:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=right\]\:right-0[data-vaul-drawer-direction=right]{right:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=right\]\:w-3\/4[data-vaul-drawer-direction=right]{width:75%}.data-\[vaul-drawer-direction\=right\]\:border-l[data-vaul-drawer-direction=right]{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[vaul-drawer-direction\=top\]\:inset-x-0[data-vaul-drawer-direction=top]{inset-inline:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=top\]\:top-0[data-vaul-drawer-direction=top]{top:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction=top]{margin-bottom:calc(var(--spacing) * 24)}.data-\[vaul-drawer-direction\=top\]\:max-h-\[80vh\][data-vaul-drawer-direction=top]{max-height:80vh}.data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction=top]{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.data-\[vaul-drawer-direction\=top\]\:border-b[data-vaul-drawer-direction=top]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}@media(min-width:40rem){.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:-mx-6{margin-inline:calc(var(--spacing) * -6)}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:inline{display:inline}.sm\:w-auto{width:auto}.sm\:\!max-w-\[80vw\]{max-width:80vw!important}.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:max-w-7xl{max-width:var(--container-7xl)}.sm\:max-w-\[460px\]{max-width:460px}.sm\:max-w-\[480px\]{max-width:480px}.sm\:max-w-\[500px\]{max-width:500px}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-1{flex:1}.sm\:flex-none{flex:none}.sm\:shrink-0{flex-shrink:0}.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\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:gap-0{gap:calc(var(--spacing) * 0)}.sm\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:px-2{padding-inline:calc(var(--spacing) * 2)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:py-5{padding-block:calc(var(--spacing) * 5)}.sm\:pt-6{padding-top:calc(var(--spacing) * 6)}.sm\:pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.sm\:pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.sm\:text-left{text-align:left}.sm\:text-\[11px\]{font-size:11px}.data-\[vaul-drawer-direction\=left\]\:sm\:max-w-sm[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:sm\:max-w-sm[data-vaul-drawer-direction=right]{max-width:var(--container-sm)}}@media(min-width:48rem){.md\:absolute{position:absolute}.md\:static{position:static}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-6{grid-column:span 6/span 6}.md\:mt-8{margin-top:calc(var(--spacing) * 8)}.md\:mr-2{margin-right:calc(var(--spacing) * 2)}.md\:block{display:block}.md\:flex{display:flex}.md\:inline{display:inline}.md\:h-12{height:calc(var(--spacing) * 12)}.md\:w-36{width:calc(var(--spacing) * 36)}.md\:w-40{width:calc(var(--spacing) * 40)}.md\:w-48{width:calc(var(--spacing) * 48)}.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:max-w-3xl{max-width:var(--container-3xl)}.md\:max-w-\[300px\]{max-width:300px}.md\:flex-initial{flex:0 auto}.md\:flex-none{flex:none}.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-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:border-transparent{border-color:#0000}.md\:bg-transparent{background-color:#0000}.md\:p-16{padding:calc(var(--spacing) * 16)}.md\:px-12{padding-inline:calc(var(--spacing) * 12)}.md\:pl-16{padding-left:calc(var(--spacing) * 16)}.md\:text-right{text-align:right}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:opacity-0{opacity:0}.md\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing) * 2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing) * 0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing) * 2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media(min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:flex{display:flex}.lg\:w-48{width:calc(var(--spacing) * 48)}.lg\:w-\[320px\]{width:320px}.lg\:max-w-4xl{max-width:var(--container-4xl)}.lg\:max-w-7xl{max-width:var(--container-7xl)}.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-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.lg\:pl-8{padding-left:calc(var(--spacing) * 8)}}@media(min-width:80rem){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 60%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}@media(hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:data-\[state\=checked\]\:bg-primary:is(.dark *)[data-state=checked]{background-color:var(--primary)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-card-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--card-foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.\[\&_\.ql-container\]\:border-0 .ql-container{border-style:var(--tw-border-style);border-width:0}.\[\&_\.ql-editor\]\:min-h-\[380px\] .ql-editor{min-height:380px}.\[\&_\.ql-editor\]\:text-sm .ql-editor{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.\[\&_\.ql-editor\]\:text-slate-900 .ql-editor{color:var(--color-slate-900)}.\[\&_\.ql-toolbar\]\:border-slate-200 .ql-toolbar{border-color:var(--color-slate-200)}.\[\&_\.ql-toolbar\]\:bg-slate-50 .ql-toolbar{background-color:var(--color-slate-50)}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:var(--muted-foreground)}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:var(--border)}@supports (color:color-mix(in lab,red,red)){.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:color-mix(in oklab,var(--border) 50%,transparent)}}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:var(--border)}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:#0000}.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{outline-offset:2px;outline:2px solid #0000}}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:var(--border)}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:var(--muted)}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:var(--border)}.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{outline-offset:2px;outline:2px solid #0000}}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:#0000}.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{outline-offset:2px;outline:2px solid #0000}}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing) * 1.5)}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:var(--muted-foreground)}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing) * 0)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:calc(var(--spacing) * 5)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing) * 5)}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:calc(var(--spacing) * 12)}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-block:calc(var(--spacing) * 3)}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:calc(var(--spacing) * 5)}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:calc(var(--spacing) * 5)}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:\:-webkit-inner-spin-button\]\:appearance-none::-webkit-inner-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none}.\[\&\:\:-webkit-outer-spin-button\]\:appearance-none::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none}.\[\&\:has\(\>\.day-range-end\)\]\:rounded-r-md:has(>.day-range-end){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\>\.day-range-start\)\]\:rounded-l-md:has(>.day-range-start){border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[aria-selected\]\)\]\:rounded-md:has([aria-selected]){border-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[aria-selected\]\)\]\:bg-accent:has([aria-selected]){background-color:var(--accent)}.first\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-l-md:first-child:has([aria-selected]){border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.last\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-r-md:last-child:has([aria-selected]),.\[\&\:has\(\[aria-selected\]\.day-range-end\)\]\:rounded-r-md:has([aria-selected].day-range-end){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing) * 6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing) * 6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\:last-child\]\:pb-6:last-child{padding-bottom:calc(var(--spacing) * 6)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>button\]\:text-white>button{color:var(--color-white)}.\[\&\>button\]\:opacity-100>button{opacity:1}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:size-3\.5>svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:h-2\.5>svg{height:calc(var(--spacing) * 2.5)}.\[\&\>svg\]\:h-3>svg{height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:w-2\.5>svg{width:calc(var(--spacing) * 2.5)}.\[\&\>svg\]\:w-3>svg{width:calc(var(--spacing) * 3)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-muted-foreground>svg{color:var(--muted-foreground)}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{rotate:90deg}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing) * -2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing) * -2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@media(hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary) 90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}.bg-status-progress{background-color:var(--status-in-progress)}.hover\:bg-status-progress-hover:hover{background-color:var(--status-in-progress-hover)}.text-status-progress{color:var(--status-in-progress)}.text-status-progress-muted{color:var(--status-in-progress-hover)}.text-status-progress-strong{color:#92400e}.bg-status-progress-soft{background-color:#fffbeb}.border-status-progress{border-color:#fde68a}.bg-status-workflow-icon{color:var(--status-in-progress);background-color:#fef3c7}.bg-status-workflow-panel{background-color:#fffbeb;border-color:#fde68a}.border-status-workflow-panel{border-color:#fde68a}.bg-status-workflow-badge{color:#b45309;background-color:#fef3c7;border-color:#fcd34d}.bg-status-workflow-active{background-color:var(--status-in-progress);border-color:var(--status-in-progress)}.ring-status-workflow-active{--tw-ring-color:var(--status-in-progress)}.btn-re-primary,button.bg-amber-600,a.bg-amber-600,[data-slot=button].bg-amber-600{color:#fff;background-color:var(--color-re-red)!important}.btn-re-primary:hover,button.bg-amber-600:hover,button.hover\:bg-amber-700:hover,a.bg-amber-600:hover,a.hover\:bg-amber-700:hover{background-color:var(--color-re-red-hover)!important}.bg-amber-600:not(.bg-status-progress):not(.bg-status-workflow-active):not(.bg-status-workflow-badge):not(.bg-status-workflow-icon){background-color:var(--color-re-red)!important}.hover\:bg-amber-700:hover:not(.hover\:bg-status-progress-hover){background-color:var(--color-re-red-hover)!important}}:root{--font-size:16px;--background:#fff;--foreground:oklch(14.5% 0 0);--card:#fff;--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:#da291c;--primary-600:#da291c;--primary-700:#b82216;--primary-50:#fef2f2;--primary-foreground:oklch(100% 0 0);--secondary:oklch(95% .0058 264.53);--secondary-foreground:#030213;--muted:#ececf0;--muted-foreground:#717182;--accent:#e9ebef;--accent-foreground:#030213;--destructive:#d4183d;--destructive-foreground:#fff;--border:#0000001a;--input:transparent;--input-background:#f3f3f5;--switch-background:#cbced4;--font-weight-medium:500;--font-weight-normal:400;--ring:oklch(70.8% 0 0);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--radius:.625rem;--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:#030213;--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0);--re-red:#da291c;--re-red-hover:#b82216;--re-black:#000;--re-white:#fff;--re-gray:#717171;--status-in-progress:#d97706;--status-in-progress-hover:#b45309;--status-success:#16a34a;--status-success-hover:#15803d;--status-negative:var(--re-red);--status-negative-hover:var(--re-red-hover)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(14.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(14.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(98.5% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(39.6% .141 25.723);--destructive-foreground:oklch(63.7% .237 25.331);--border:oklch(26.9% 0 0);--input:oklch(26.9% 0 0);--ring:oklch(43.9% 0 0);--font-weight-medium:500;--font-weight-normal:400;--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(26.9% 0 0);--sidebar-ring:oklch(43.9% 0 0)}.re-heading{text-transform:uppercase;letter-spacing:.1em;font-family:Montserrat,sans-serif;font-weight:700}.re-card{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-200);background-color:var(--color-white);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-radius:0}.re-input{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-300);width:100%;padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;--tw-outline-style:none;border-radius:0;outline-style:none;transition-duration:.2s}.re-input:focus{border-color:var(--color-red-600);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:#e4001433}@supports (color:color-mix(in lab,red,red)){.re-input:focus{--tw-ring-color:color-mix(in oklab, var(--color-red-600) 20%, transparent)}}.re-label{margin-bottom:calc(var(--spacing) * 1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide);color:var(--color-slate-800);text-transform:uppercase;display:block}.re-btn-primary{background-color:var(--color-black);padding-inline:calc(var(--spacing) * 8);padding-block:calc(var(--spacing) * 3);--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest);color:var(--color-white);text-transform:uppercase;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.re-btn-primary:hover{background-color:var(--color-slate-900)}}.re-btn-primary:active{scale:.98}.re-btn-outline{border-style:var(--tw-border-style);border-width:2px;border-color:var(--color-black);padding-inline:calc(var(--spacing) * 8);padding-block:calc(var(--spacing) * 3);--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest);color:var(--color-black);text-transform:uppercase;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.re-btn-outline:hover{background-color:var(--color-black);color:var(--color-white)}}.re-btn-outline:active{scale:.98}.re-intro-text{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--color-slate-700)}.re-disclaimer{border-left-style:var(--tw-border-style);border-left-width:4px;border-color:var(--color-red-600);background-color:var(--color-slate-50);padding:calc(var(--spacing) * 4);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-slate-600);font-style:italic}html{font-size:var(--font-size)}.custom-scrollbar::-webkit-scrollbar{width:3px}.custom-scrollbar::-webkit-scrollbar-track{background:0 0}.custom-scrollbar::-webkit-scrollbar-thumb{background:#e2e8f0;border-radius:10px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#cbd5e1}.custom-scrollbar{scrollbar-width:thin;scrollbar-color:#e2e8f0 transparent}.custom-scrollbar-x::-webkit-scrollbar{height:2px}.custom-scrollbar-x::-webkit-scrollbar-track{background:0 0}.custom-scrollbar-x::-webkit-scrollbar-thumb{background:#f1f5f9;border-radius:9999px}.custom-scrollbar-x::-webkit-scrollbar-thumb:hover{background:#e2e8f0}.custom-scrollbar-x{scrollbar-width:thin;scrollbar-color:#f1f5f9 transparent}.custom-scrollbar-x-slim::-webkit-scrollbar{height:2px}.custom-scrollbar-x-slim::-webkit-scrollbar-track{background:0 0}.custom-scrollbar-x-slim::-webkit-scrollbar-thumb{background:#f8fafc;border-radius:9999px}.custom-scrollbar-x-slim::-webkit-scrollbar-thumb:hover{background:#f1f5f9}.custom-scrollbar-x-slim{scrollbar-width:thin;scrollbar-color:#f8fafc transparent}.custom-scrollbar-slim::-webkit-scrollbar{width:2px}.custom-scrollbar-slim::-webkit-scrollbar-track{background:0 0}.custom-scrollbar-slim::-webkit-scrollbar-thumb{background:#f1f5f9;border-radius:9999px}.custom-scrollbar-slim::-webkit-scrollbar-thumb:hover{background:#e2e8f0}.custom-scrollbar-slim{scrollbar-width:thin;scrollbar-color:#f1f5f9 transparent}.no-native-password-reveal::-ms-reveal{display:none}.no-native-password-reveal::-ms-clear{display:none}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}} diff --git a/build/index.html b/build/index.html index 7092ca3..eec16c7 100644 --- a/build/index.html +++ b/build/index.html @@ -5,8 +5,8 @@ Royal Enfield Onboarding - - + +
diff --git a/docs/sla/PENDING_WORK.md b/docs/sla/PENDING_WORK.md index e74193f..1688c3a 100644 --- a/docs/sla/PENDING_WORK.md +++ b/docs/sla/PENDING_WORK.md @@ -41,7 +41,7 @@ Ordered by impact. Update this file when items ship. ## Verification checklist -1. `npx tsx scripts/migrate-sla-tracking-schema.ts` (once per DB if needed) +1. `npm run migrate:up` (applies pending versioned migrations, including SLA schema) 2. `npx tsx scripts/seed-sla-configs.ts` 3. `ENABLE_REDIS=true` + restart API 4. Operations monitor → analytics cards, **My queue**, **Export CSV**, **Schedulers** → questionnaire settings diff --git a/docs/sla/README.md b/docs/sla/README.md index b304677..510cf23 100644 --- a/docs/sla/README.md +++ b/docs/sla/README.md @@ -38,19 +38,20 @@ Or use **Master → SLA Configuration → Initialize defaults** in the UI. ## DB note -If `sla_tracking.metadata` (or `entityType` / `entityId`) is missing on an older database, run: +Schema for `sla_tracking` and `sla_notification_dispatches` is defined in the +Sequelize models (`src/database/models/compliance/`). On a fresh database +`npm run migrate` builds them automatically. + +For environments that already hold data, run the versioned migration runner +which only applies the migrations not yet recorded in the `migrations` table: ```bash -npx tsx scripts/migrate-sla-tracking-schema.ts +npm run migrate:up ``` ### SLA notification dispatch log (idempotency + audit) -Table `sla_notification_dispatches` records **one row per threshold per active track** (pre-breach reminder, breach, escalation L1–L3, repeat overdue window). Unique on `(trackingId, thresholdKey)` prevents duplicate emails even if the worker runs every minute. - -```bash -npx tsx scripts/migrate-sla-notification-dispatches.ts -``` +Table `sla_notification_dispatches` records **one row per threshold per active track** (pre-breach reminder, breach, escalation L1–L3, repeat overdue window). Unique on `(trackingId, thresholdKey)` prevents duplicate emails even if the worker runs every minute. Created by the model definition + the migration `scripts/migrations/20260526000000_create_sla_notification_dispatches.ts`. | `dispatchType` | `thresholdKey` example | Sends | |----------------|------------------------|--------| diff --git a/package.json b/package.json index 5c3c103..60456e0 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,10 @@ "build": "tsc", "type-check": "tsc --noEmit", "migrate": "tsx scripts/migrate.ts", - "migrate:sla-dispatches": "tsx scripts/migrate-sla-notification-dispatches.ts", + "migrate:up": "tsx scripts/run-migrations.ts", + "migrate:status": "tsx scripts/run-migrations.ts --status", + "migrate:baseline": "tsx scripts/run-migrations.ts --baseline", + "migrate:create": "tsx scripts/create-migration.ts", "reset:stable": "tsx scripts/reset_db_stable.ts", "seed": "tsx scripts/seed_normalized_data.ts", "seed:roles": "tsx scripts/seed-roles.ts", diff --git a/scripts/add-architecture-role.ts b/scripts/add-architecture-role.ts deleted file mode 100644 index c893dd2..0000000 --- a/scripts/add-architecture-role.ts +++ /dev/null @@ -1,39 +0,0 @@ -import 'dotenv/config'; -import db from '../src/database/models/index.js'; -const { Role } = db; - -async function addArchitectureRole() { - console.log('Adding Architecture Role...'); - try { - await db.sequelize.authenticate(); - - await Role.findOrCreate({ - where: { roleCode: 'ARCHITECTURE' }, - defaults: { - roleCode: 'ARCHITECTURE', - roleName: 'Architecture', - category: 'DEPARTMENT', - isActive: true - } - }); - - // Also add the 'Architecture' alias if needed for frontend mapping - await Role.findOrCreate({ - where: { roleCode: 'Architecture' }, - defaults: { - roleCode: 'Architecture', - roleName: 'Architecture Team', - category: 'DEPARTMENT', - isActive: true - } - }); - - console.log('✅ Architecture role added successfully!'); - process.exit(0); - } catch (error) { - console.error('❌ Failed to add role:', error); - process.exit(1); - } -} - -addArchitectureRole(); diff --git a/scripts/add-decision-column.ts b/scripts/add-decision-column.ts deleted file mode 100644 index e04068f..0000000 --- a/scripts/add-decision-column.ts +++ /dev/null @@ -1,26 +0,0 @@ - -import { Sequelize } from 'sequelize'; - -const sequelize = new Sequelize('royal_enfield_onboarding', 'laxman', '<.efvP1D0^80Z)r5', { - host: 'localhost', - dialect: 'postgres', - logging: console.log -}); - -const run = async () => { - try { - await sequelize.authenticate(); - console.log('Connected to database.'); - - console.log('Adding decision column to interview_evaluations table...'); - await sequelize.query('ALTER TABLE "interview_evaluations" ADD COLUMN IF NOT EXISTS "decision" VARCHAR(255);'); - - console.log('Column added successfully.'); - process.exit(0); - } catch (error) { - console.error('Error:', error); - process.exit(1); - } -}; - -run(); diff --git a/scripts/add-level3-enum.ts b/scripts/add-level3-enum.ts deleted file mode 100644 index 0611898..0000000 --- a/scripts/add-level3-enum.ts +++ /dev/null @@ -1,28 +0,0 @@ - -import 'dotenv/config'; -import db from '../src/database/models/index.js'; - -const updateEnum = async () => { - try { - console.log('>>> STARTING ENUM MIGRATION (Level 3) <<<'); - await db.sequelize.authenticate(); - console.log('Database connection established.'); - - try { - await db.sequelize.query(`ALTER TYPE "enum_applications_overallStatus" ADD VALUE IF NOT EXISTS 'Level 3 Approved';`); - console.log('Added Level 3 Approved'); - } catch (e) { - console.log('Level 3 Approved likely exists or error', e instanceof Error ? e.message : String(e)); - } - - console.log('>>> SUCCESS: Enum values updated <<<'); - - await db.sequelize.close(); - process.exit(0); - } catch (error) { - console.error('>>> ERROR: Failed to update Enum', error); - process.exit(1); - } -}; - -updateEnum(); diff --git a/scripts/add-recovery-enum.ts b/scripts/add-recovery-enum.ts deleted file mode 100644 index 2f3b540..0000000 --- a/scripts/add-recovery-enum.ts +++ /dev/null @@ -1,27 +0,0 @@ -import 'dotenv/config'; -import db from '../src/database/models/index.js'; - -const addRecoveryEnum = async () => { - try { - console.log('>>> STARTING ENUM UPDATE: FnFLineItem itemType <<<'); - await db.sequelize.authenticate(); - console.log('Database connection established.'); - - // Raw query to add 'Recovery' to the itemType enum - try { - await db.sequelize.query(`ALTER TYPE "enum_fnf_line_items_itemType" ADD VALUE IF NOT EXISTS 'Recovery';`); - console.log('SUCCESS: Added "Recovery" to "enum_fnf_line_items_itemType"'); - } catch (e) { - console.log('NOTICE: "Recovery" likely already exists or another error occurred:', e.message); - } - - await db.sequelize.close(); - console.log('>>> ENUM UPDATE COMPLETED <<<'); - process.exit(0); - } catch (error) { - console.error('>>> ERROR: Failed to update Enum:', error); - process.exit(1); - } -}; - -addRecoveryEnum(); diff --git a/scripts/assign_south_delhi.ts b/scripts/assign_south_delhi.ts deleted file mode 100644 index a8b9ed4..0000000 --- a/scripts/assign_south_delhi.ts +++ /dev/null @@ -1,74 +0,0 @@ - -import dotenv from 'dotenv'; -import path from 'path'; -import { fileURLToPath } from 'url'; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); -dotenv.config({ path: path.join(__dirname, '../.env') }); - -import db from '../src/database/models/index.js'; -import { syncLocationManagers } from '../src/modules/master/syncHierarchy.service.js'; - -async function run() { - try { - // 1. Find the South Delhi district - const district = await db.District.findOne({ - where: { name: { [db.Sequelize.Op.iLike]: '%South Delhi%' } } - }); - - if (!district) { - console.log('District "South Delhi" not found'); - return; - } - console.log(`Found District: ${district.name} (${district.id})`); - - // 2. Find a DD-AM user - // The role code might be 'DD AM' or 'DD-AM' based on constants - const user = await db.User.findOne({ - where: { - [db.Sequelize.Op.or]: [ - { roleCode: 'DD AM' }, - { roleCode: 'DD-AM' } - ], - isActive: true - } - }); - - if (!user) { - console.log('No active DD-AM user found'); - return; - } - console.log(`Found DD-AM User: ${user.fullName} (${user.id})`); - - // 3. Create/Update UserRole mapping - const [userRole, created] = await db.UserRole.findOrCreate({ - where: { - userId: user.id, - districtId: district.id, - isActive: true - }, - defaults: { - roleId: (await db.Role.findOne({ where: { roleCode: user.roleCode } })).id, - isPrimary: true, - isActive: true - } - }); - - if (created) { - console.log('Created new UserRole assignment'); - } else { - console.log('UserRole assignment already exists'); - } - - // 4. Sync Location Managers - await syncLocationManagers(district.id); - console.log('Sync completed'); - - process.exit(0); - } catch (error) { - console.error('Error:', error); - process.exit(1); - } -} - -run(); diff --git a/scripts/check-sla-dispatches.ts b/scripts/check-sla-dispatches.ts deleted file mode 100644 index 64f7b00..0000000 --- a/scripts/check-sla-dispatches.ts +++ /dev/null @@ -1,28 +0,0 @@ -import 'dotenv/config'; -import db from '../src/database/models/index.js'; - -async function main() { - const { sequelize, SLANotificationDispatch, SLATracking } = db; - await sequelize.authenticate(); - const count = await SLANotificationDispatch.count(); - const activeTracks = await SLATracking.count({ where: { isActive: true, endTime: null } }); - const recent = await SLANotificationDispatch.findAll({ - limit: 15, - order: [['sentAt', 'DESC']] - }); - console.log('dispatches:', count, 'active tracks:', activeTracks); - for (const r of recent) { - console.log( - r.dispatchType, - r.thresholdKey, - String(r.trackingId).slice(0, 8), - r.sentAt - ); - } - await sequelize.close(); -} - -main().catch((e) => { - console.error(e); - process.exit(1); -}); diff --git a/scripts/check-smtp-config.ts b/scripts/check-smtp-config.ts deleted file mode 100644 index 1c11c37..0000000 --- a/scripts/check-smtp-config.ts +++ /dev/null @@ -1,18 +0,0 @@ -import 'dotenv/config'; -import { initializeSmtpConfig } from '../src/services/smtpConfig.service.js'; - -async function main() { - const cfg = await initializeSmtpConfig(); - console.log('enabled:', cfg.enabled); - console.log('source:', cfg.source); - console.log('host:', cfg.host); - console.log('port:', cfg.port); - console.log('user:', cfg.auth.user || '(empty)'); - console.log('pass:', cfg.auth.pass ? `*** (${cfg.auth.pass.length})` : '(empty)'); - console.log('from:', cfg.from); -} - -main().catch((e) => { - console.error(e); - process.exit(1); -}); diff --git a/scripts/check_app.ts b/scripts/check_app.ts deleted file mode 100644 index 29e79e5..0000000 --- a/scripts/check_app.ts +++ /dev/null @@ -1,26 +0,0 @@ -import db from '../src/database/models/index.js'; - -async function check() { - try { - const app = await (db as any).Application.findOne({ - where: { email: 'test-dealer-tumkur@example.com' }, - include: [{ model: (db as any).District, as: 'district' }] - }); - - if (app) { - console.log('Application Found:'); - console.log('ID:', app.applicationId); - console.log('District Name:', app.district ? app.district.name : 'NULL'); - console.log('District ID:', app.districtId); - console.log('Is Opportunity Available (Status):', app.overallStatus); - } else { - console.log('Application not found.'); - } - process.exit(0); - } catch (err) { - console.error(err); - process.exit(1); - } -} - -check(); diff --git a/scripts/check_column.ts b/scripts/check_column.ts deleted file mode 100644 index 3de4626..0000000 --- a/scripts/check_column.ts +++ /dev/null @@ -1,18 +0,0 @@ -import db from '../src/database/models/index.js'; - -async function checkColumn() { - try { - const [results]: any = await db.sequelize.query(` - SELECT column_name, data_type, udt_name - FROM information_schema.columns - WHERE table_name = 'request_participants' AND column_name = 'participantType' - `); - console.log('Column definition:', results[0]); - } catch (error: any) { - console.error('Error fetching column:', error.message); - } finally { - process.exit(0); - } -} - -checkColumn(); diff --git a/scripts/check_enum.ts b/scripts/check_enum.ts deleted file mode 100644 index d9fc088..0000000 --- a/scripts/check_enum.ts +++ /dev/null @@ -1,19 +0,0 @@ -import db from '../src/database/models/index.js'; - -async function checkEnum() { - try { - const [results]: any = await db.sequelize.query(` - SELECT enumlabel - FROM pg_enum - JOIN pg_type ON pg_enum.enumtypid = pg_type.oid - WHERE typname = 'enum_request_participants_participantType' - `); - console.log('Current enum values:', results.map((r: any) => r.enumlabel).join(', ')); - } catch (error: any) { - console.error('Error fetching enum:', error.message); - } finally { - process.exit(0); - } -} - -checkEnum(); diff --git a/scripts/check_recent_app.ts b/scripts/check_recent_app.ts deleted file mode 100644 index a284706..0000000 --- a/scripts/check_recent_app.ts +++ /dev/null @@ -1,48 +0,0 @@ - -import dotenv from 'dotenv'; -import path from 'path'; -import { fileURLToPath } from 'url'; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); -dotenv.config({ path: path.join(__dirname, '../.env') }); - -import db from '../src/database/models/index.js'; - -async function run() { - try { - const app = await db.Application.findOne({ - order: [['updatedAt', 'DESC']], - include: [ - { model: db.District, as: 'district' }, - { - model: db.RequestParticipant, - as: 'participants', - include: [{ model: db.User, as: 'user' }] - } - ] - }); - - if (!app) { - console.log('No applications found'); - return; - } - - console.log('Application ID:', app.id); - console.log('Status:', app.status); - console.log('District:', app.district?.name); - console.log('District ddAmId:', app.district?.ddAmId); - console.log('District asmId:', app.district?.asmId); - - console.log('Participants:'); - app.participants?.forEach(p => { - console.log(`- ${p.user?.fullName} (${p.metadata?.role})`); - }); - - process.exit(0); - } catch (error) { - console.error('Error:', error); - process.exit(1); - } -} - -run(); diff --git a/scripts/cleanup-interview-orphans.ts b/scripts/cleanup-interview-orphans.ts deleted file mode 100644 index 3d948d0..0000000 --- a/scripts/cleanup-interview-orphans.ts +++ /dev/null @@ -1,26 +0,0 @@ -import db from '../src/database/models/index.js'; - -async function cleanup() { - try { - await db.sequelize.authenticate(); - console.log('Database connected.'); - - const [results1]: any = await db.sequelize.query(` - DELETE FROM interview_participants - WHERE "interviewId" NOT IN (SELECT id FROM interviews) - `); - - const [results2]: any = await db.sequelize.query(` - DELETE FROM interview_evaluations - WHERE "interviewId" NOT IN (SELECT id FROM interviews) - `); - - console.log('Cleanup finished.'); - process.exit(0); - } catch (err) { - console.error('Cleanup failed:', err); - process.exit(1); - } -} - -cleanup(); diff --git a/scripts/create-migration.ts b/scripts/create-migration.ts new file mode 100644 index 0000000..d18ab52 --- /dev/null +++ b/scripts/create-migration.ts @@ -0,0 +1,106 @@ +/** + * Scaffold a new migration file under `scripts/migrations/`. + * + * Usage: npm run migrate:create -- + * e.g.: npm run migrate:create -- add_finance_kyc_column + * + * The file is named `_.ts` (UTC timestamp). + * Author then edits `up()` to implement the schema change. + */ + +import { promises as fs } from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const SCRIPTS_DIR = path.dirname(fileURLToPath(import.meta.url)); +const MIGRATIONS_DIR = path.join(SCRIPTS_DIR, 'migrations'); + +function pad(n: number, width = 2): string { + return String(n).padStart(width, '0'); +} + +function utcTimestamp(): string { + const d = new Date(); + return ( + d.getUTCFullYear().toString() + + pad(d.getUTCMonth() + 1) + + pad(d.getUTCDate()) + + pad(d.getUTCHours()) + + pad(d.getUTCMinutes()) + + pad(d.getUTCSeconds()) + ); +} + +function sanitizeName(input: string): string { + const cleaned = input + .trim() + .toLowerCase() + .replace(/[^a-z0-9]+/g, '_') + .replace(/^_+|_+$/g, ''); + if (!cleaned) { + throw new Error('Migration name is empty after sanitisation.'); + } + if (cleaned.length > 80) { + throw new Error( + `Migration name "${cleaned}" is too long (${cleaned.length}). Keep it under 80 chars.` + ); + } + return cleaned; +} + +async function main(): Promise { + const rawName = process.argv.slice(2).join('_'); + if (!rawName) { + console.error('Missing migration name.'); + console.error('Usage: npm run migrate:create -- '); + process.exit(1); + } + + const name = sanitizeName(rawName); + const ts = utcTimestamp(); + const filename = `${ts}_${name}.ts`; + const target = path.join(MIGRATIONS_DIR, filename); + + const body = `/** + * Migration: ${name.replace(/_/g, ' ')} + * + * Generated at ${new Date().toISOString()}. + * Implement up() with idempotent DDL where possible. + */ + +import type { QueryInterface, Sequelize, Transaction } from 'sequelize'; + +export interface MigrationContext { + queryInterface: QueryInterface; + sequelize: Sequelize; + transaction: Transaction; +} + +const migration = { + async up({ sequelize, transaction }: MigrationContext): Promise { + // TODO: implement the schema change. + // Example: + // await sequelize.query(\` + // ALTER TABLE "applications" + // ADD COLUMN IF NOT EXISTS "kycReviewedAt" TIMESTAMPTZ NULL; + // \`, { transaction }); + throw new Error('Migration ${filename} has no up() implementation yet.'); + } +}; + +export default migration; +`; + + await fs.mkdir(MIGRATIONS_DIR, { recursive: true }); + await fs.writeFile(target, body, { flag: 'wx' }); + console.log(`Created ${path.relative(process.cwd(), target)}`); + console.log('Next:'); + console.log(' 1. Edit the file and implement up().'); + console.log(' 2. Update the matching Sequelize model.'); + console.log(' 3. Run: npm run migrate:up'); +} + +main().catch((err) => { + console.error('create-migration failed:', err?.message || err); + process.exit(1); +}); diff --git a/scripts/create-system-audit-log-table.ts b/scripts/create-system-audit-log-table.ts deleted file mode 100644 index a31dd6e..0000000 --- a/scripts/create-system-audit-log-table.ts +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Create System Audit Log Table - * - * Bootstraps the new `system_audit_logs` table on environments where the - * full `migrate.ts` (sequelize.sync({ force: true })) cannot be run because - * the database already holds production / shared data. - * - * Safe to re-run: uses `SystemAuditLog.sync()` (no `force`, no `alter`), - * which is a no-op once the table exists. - * - * Run: npx tsx scripts/create-system-audit-log-table.ts - */ - -import 'dotenv/config'; -import db from '../src/database/models/index.js'; - -async function run() { - console.log('🔄 Ensuring system_audit_logs table exists...'); - try { - await db.sequelize.authenticate(); - console.log('📡 Database connection OK'); - - await db.SystemAuditLog.sync(); - - const [rows] = await db.sequelize.query( - `SELECT COUNT(*)::int AS total FROM system_audit_logs` - ); - const total = (rows as any[])[0]?.total ?? 0; - - console.log('✅ system_audit_logs is ready'); - console.log(` Existing rows: ${total}`); - process.exit(0); - } catch (err: any) { - console.error('❌ Failed to ensure system_audit_logs table:', err.message || err); - if (err.stack) console.error(err.stack); - process.exit(1); - } -} - -run(); diff --git a/scripts/debug-area-manager.ts b/scripts/debug-area-manager.ts deleted file mode 100644 index 5651666..0000000 --- a/scripts/debug-area-manager.ts +++ /dev/null @@ -1,63 +0,0 @@ - -import db from '../src/database/models/index.js'; - -async function checkAreaManager() { - try { - console.log('Connecting to database...'); - await db.sequelize.authenticate(); - console.log('Database connected.'); - - // Fetch all areas - const areas = await db.Area.findAll({ - include: [ - { model: db.User, as: 'manager', attributes: ['id', 'fullName'] } - ] - }); - - console.log(`Found ${areas.length} areas.`); - - if (areas.length > 0) { - areas.forEach((area: any) => { - console.log(`Area: ${area.areaName} (${area.id})`); - console.log(` - Manager ID (Field): ${area.managerId}`); - console.log(` - Manager (Association): ${area.manager ? area.manager.fullName : 'None'}`); - console.log('-----------------------------------'); - }); - - // Pick the first area and try to update it manually if managerId is null - const targetArea = areas[0]; - // Find a user to assign (any user) - const user = await db.User.findOne(); - - if (user) { - console.log(`Attempting to assign User ${user.fullName} (${user.id}) to Area ${targetArea.areaName}...`); - - targetArea.managerId = user.id; - await targetArea.save(); - - console.log('Update saved. Re-fetching to verify...'); - - const updatedArea = await db.Area.findByPk(targetArea.id); - console.log(`Re-fetched Area Manager ID: ${updatedArea?.managerId}`); - - if (updatedArea?.managerId === user.id) { - console.log('SUCCESS: Manager ID persisted correctly.'); - } else { - console.error('FAILURE: Manager ID did not persist.'); - } - } else { - console.log('No users found to test assignment.'); - } - - } else { - console.log('No areas found.'); - } - - } catch (error) { - console.error('Error:', error); - } finally { - await db.sequelize.close(); - } -} - -checkAreaManager(); diff --git a/scripts/debug-evaluations.ts b/scripts/debug-evaluations.ts deleted file mode 100644 index 560873b..0000000 --- a/scripts/debug-evaluations.ts +++ /dev/null @@ -1,34 +0,0 @@ - -import { Sequelize } from 'sequelize'; - -const sequelize = new Sequelize('royal_enfield_onboarding', 'laxman', '<.efvP1D0^80Z)r5', { - host: 'localhost', - dialect: 'postgres', - logging: false -}); - -const run = async () => { - try { - await sequelize.authenticate(); - console.log('Connected to database.'); - - const [results] = await sequelize.query(` - SELECT column_name, data_type - FROM information_schema.columns - WHERE table_name = 'interview_evaluations'; - `); - console.log('Columns in interview_evaluations:'); - console.table(results); - - const [evals] = await sequelize.query('SELECT * FROM "interview_evaluations" ORDER BY "createdAt" DESC LIMIT 1;'); - console.log('Latest evaluation:'); - console.log(evals[0]); - - process.exit(0); - } catch (error) { - console.error('Error:', error); - process.exit(1); - } -}; - -run(); diff --git a/scripts/debug_roles.ts b/scripts/debug_roles.ts deleted file mode 100644 index ea96cb7..0000000 --- a/scripts/debug_roles.ts +++ /dev/null @@ -1,20 +0,0 @@ -import db from '../src/database/models/index.js'; - -async function check() { - try { - const roles = await (db as any).Role.findAll(); - console.log('--- ROLES START ---'); - console.log(JSON.stringify(roles.map((r: any) => ({ - name: r.roleName, - code: r.roleCode, - id: r.id - })), null, 2)); - console.log('--- ROLES END ---'); - process.exit(0); - } catch (error) { - console.error('Error listing roles:', error); - process.exit(1); - } -} - -check(); diff --git a/scripts/delete-test-relocation.ts b/scripts/delete-test-relocation.ts deleted file mode 100644 index 3965226..0000000 --- a/scripts/delete-test-relocation.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * Script to delete a test relocation request by requestId - * Usage: npx tsx scripts/delete-test-relocation.ts REL-1775129490244-5B9C - */ -import db from '../src/database/models/index.js'; - -async function deleteRelocationRequest(requestId: string) { - try { - console.log(`Deleting relocation request: ${requestId}`); - - // Find the request - const request = await db.RelocationRequest.findOne({ - where: { requestId } - }); - - if (!request) { - console.log(`Request ${requestId} not found`); - process.exit(0); - } - - // Delete associated RequestParticipants - await db.RequestParticipant.destroy({ - where: { requestId: request.id, requestType: 'relocation' } - }); - console.log('Deleted associated participants'); - - // Delete associated Worknotes - await db.Worknote.destroy({ - where: { requestId: request.id, requestType: 'relocation' } - }); - console.log('Deleted associated worknotes'); - - // Delete the request - await request.destroy(); - console.log(`Deleted relocation request: ${requestId}`); - - console.log('✅ Done!'); - process.exit(0); - } catch (error) { - console.error('❌ Error:', error); - process.exit(1); - } finally { - await db.sequelize.close(); - } -} - -const requestId = process.argv[2]; -if (!requestId) { - console.log('Usage: npx tsx scripts/delete-test-relocation.ts '); - process.exit(1); -} - -deleteRelocationRequest(requestId); \ No newline at end of file diff --git a/scripts/diagnose_associations.ts b/scripts/diagnose_associations.ts deleted file mode 100644 index 38b294a..0000000 --- a/scripts/diagnose_associations.ts +++ /dev/null @@ -1,76 +0,0 @@ - -import dotenv from 'dotenv'; -import path from 'path'; -import { fileURLToPath } from 'url'; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); -dotenv.config({ path: path.join(__dirname, '../.env') }); - -import db from '../src/database/models/index.js'; - -async function run() { - try { - console.log('Associations for User:'); - const userAssoc = db.User.associations; - Object.keys(userAssoc).forEach(key => { - console.log(`- ${key}: ${userAssoc[key].associationType} to ${userAssoc[key].target.name}`); - }); - - console.log('\nTrying findAll with managedAsmDistricts...'); - await db.User.findAll({ - limit: 1, - include: [{ model: db.District, as: 'managedAsmDistricts' }] - }); - console.log('Success with managedAsmDistricts'); - - console.log('\nTrying findAll with managedAreaDistricts...'); - await db.User.findAll({ - limit: 1, - include: [{ model: db.District, as: 'managedAreaDistricts' }] - }); - console.log('Success with managedAreaDistricts'); - - console.log('\nTrying FULL query from getASMs...'); - await db.User.findAll({ - where: { - roleCode: { [db.Sequelize.Op.in]: ['ASM', 'AREA SALES MANAGER', 'DD-AM', 'DD AM'] }, - isActive: true - }, - include: [ - { - model: db.UserRole, - as: 'userRoles', - where: { isActive: true }, - required: false, - include: [{ model: db.Role, as: 'role', where: { roleCode: { [db.Sequelize.Op.in]: ['ASM', 'DD-AM', 'DD AM'] } } }] - }, - { - model: db.District, - as: 'managedAsmDistricts', - include: [ - { model: db.State, as: 'state', attributes: ['id', 'name'] }, - { model: db.Region, as: 'region', attributes: ['id', 'name'] }, - { model: db.Zone, as: 'zone', attributes: ['id', 'name'] } - ] - }, - { - model: db.District, - as: 'managedAreaDistricts', - include: [ - { model: db.State, as: 'state', attributes: ['id', 'name'] }, - { model: db.Region, as: 'region', attributes: ['id', 'name'] }, - { model: db.Zone, as: 'zone', attributes: ['id', 'name'] } - ] - } - ], - }); - console.log('Success with FULL query'); - - process.exit(0); - } catch (error) { - console.error('Error:', error); - process.exit(1); - } -} - -run(); diff --git a/scripts/find_abhishek.ts b/scripts/find_abhishek.ts deleted file mode 100644 index 8415c8a..0000000 --- a/scripts/find_abhishek.ts +++ /dev/null @@ -1,24 +0,0 @@ - -import dotenv from 'dotenv'; -import path from 'path'; -import { fileURLToPath } from 'url'; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); -dotenv.config({ path: path.join(__dirname, '../.env') }); - -import db from '../src/database/models/index.js'; - -async function run() { - try { - const u = await db.User.findOne({ - where: { fullName: { [db.Sequelize.Op.iLike]: '%abhishek%' } } - }); - console.log(JSON.stringify(u, null, 2)); - process.exit(0); - } catch (error) { - console.error('Error:', error); - process.exit(1); - } -} - -run(); diff --git a/scripts/fix-asm-column.ts b/scripts/fix-asm-column.ts deleted file mode 100644 index ec0beb2..0000000 --- a/scripts/fix-asm-column.ts +++ /dev/null @@ -1,26 +0,0 @@ - -import { Sequelize } from 'sequelize'; - -const sequelize = new Sequelize('royal_enfield_onboarding', 'laxman', 'Admin@123', { - host: 'localhost', - dialect: 'postgres', - logging: console.log -}); - -const run = async () => { - try { - await sequelize.authenticate(); - console.log('Connected to database.'); - - console.log('Adding asmCode column to area_managers table...'); - await sequelize.query('ALTER TABLE "area_managers" ADD COLUMN IF NOT EXISTS "asmCode" VARCHAR(255);'); - - console.log('Column added successfully.'); - process.exit(0); - } catch (error) { - console.error('Error:', error); - process.exit(1); - } -}; - -run(); diff --git a/scripts/fix-remarks-column.ts b/scripts/fix-remarks-column.ts deleted file mode 100644 index 73f093c..0000000 --- a/scripts/fix-remarks-column.ts +++ /dev/null @@ -1,26 +0,0 @@ - -import { Sequelize } from 'sequelize'; - -const sequelize = new Sequelize('royal_enfield_onboarding', 'laxman', '<.efvP1D0^80Z)r5', { - host: 'localhost', - dialect: 'postgres', - logging: console.log -}); - -const run = async () => { - try { - await sequelize.authenticate(); - console.log('Connected to database.'); - - console.log('Adding remarks column to interview_evaluations table...'); - await sequelize.query('ALTER TABLE "interview_evaluations" ADD COLUMN IF NOT EXISTS "remarks" TEXT;'); - - console.log('Column added successfully.'); - process.exit(0); - } catch (error) { - console.error('Error:', error); - process.exit(1); - } -}; - -run(); diff --git a/scripts/fix-stages-enum.ts b/scripts/fix-stages-enum.ts deleted file mode 100644 index 641cc64..0000000 --- a/scripts/fix-stages-enum.ts +++ /dev/null @@ -1,47 +0,0 @@ - -import 'dotenv/config'; -import { Sequelize } from 'sequelize'; - -const sequelize = new Sequelize('royal_enfield_onboarding', 'laxman', '<.efvP1D0^80Z)r5', { - host: 'localhost', - dialect: 'postgres', - logging: console.log -}); - -const run = async () => { - try { - await sequelize.authenticate(); - console.log('Connected to database.'); - - const stagesToAdd = [ - 'Level 1 Approved', - 'Level 2 Approved', - 'Level 2 Recommended', - 'Level 3 Approved' - ]; - - for (const stage of stagesToAdd) { - try { - await sequelize.query(`ALTER TYPE "enum_applications_currentStage" ADD VALUE IF NOT EXISTS '${stage}';`); - console.log(`Added '${stage}' to enum_applications_currentStage`); - } catch (e: any) { - console.log(`'${stage}' might already exist in enum_applications_currentStage or error:`, e.message); - } - - try { - await sequelize.query(`ALTER TYPE "enum_applications_overallStatus" ADD VALUE IF NOT EXISTS '${stage}';`); - console.log(`Added '${stage}' to enum_applications_overallStatus`); - } catch (e: any) { - console.log(`'${stage}' might already exist in enum_applications_overallStatus or error:`, e.message); - } - } - - console.log('Successfully updated enums.'); - process.exit(0); - } catch (error) { - console.error('Error:', error); - process.exit(1); - } -}; - -run(); diff --git a/scripts/fix_south_delhi.ts b/scripts/fix_south_delhi.ts deleted file mode 100644 index ba8d4a6..0000000 --- a/scripts/fix_south_delhi.ts +++ /dev/null @@ -1,40 +0,0 @@ - -import dotenv from 'dotenv'; -import path from 'path'; -import { fileURLToPath } from 'url'; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); -dotenv.config({ path: path.join(__dirname, '../.env') }); - -import db from '../src/database/models/index.js'; - -async function run() { - try { - const district = await db.District.findOne({ - where: { name: { [db.Sequelize.Op.iLike]: '%South Delhi%' } } - }); - - if (!district) { - console.log('South Delhi not found'); - return; - } - - console.log('Current assignment for South Delhi:'); - console.log(`ddAmId: ${district.ddAmId}`); - console.log(`asmId: ${district.asmId}`); - console.log(`zmId: ${district.zmId}`); - - if (district.asmId) { - console.log(`Removing ASM ${district.asmId} from South Delhi...`); - await district.update({ asmId: null, asmCode: null }); - console.log('ASM removed.'); - } - - process.exit(0); - } catch (error) { - console.error('Error:', error); - process.exit(1); - } -} - -run(); diff --git a/scripts/force-sync.ts b/scripts/force-sync.ts deleted file mode 100644 index bbfc2e2..0000000 --- a/scripts/force-sync.ts +++ /dev/null @@ -1,21 +0,0 @@ - -import db from '../src/database/models/index.ts'; - -const syncDb = async () => { - try { - console.log('Connecting to database...'); - await db.sequelize.authenticate(); - console.log('Database connected.'); - - console.log('Syncing database schema (alter: true)...'); - await db.sequelize.sync({ alter: true }); - console.log('Database synced successfully.'); - - process.exit(0); - } catch (error) { - console.error('Error syncing database:', error); - process.exit(1); - } -}; - -syncDb(); diff --git a/scripts/migrate-evaluation-schema.ts b/scripts/migrate-evaluation-schema.ts deleted file mode 100644 index d24f4ab..0000000 --- a/scripts/migrate-evaluation-schema.ts +++ /dev/null @@ -1,29 +0,0 @@ - -import { Sequelize } from 'sequelize'; - -const sequelize = new Sequelize('royal_enfield_onboarding', 'laxman', '<.efvP1D0^80Z)r5', { - host: 'localhost', - dialect: 'postgres', - logging: console.log -}); - -const run = async () => { - try { - await sequelize.authenticate(); - console.log('Connected to database.'); - - console.log('Renaming recommendation to decision and remarks to decisionRemarks in interview_evaluations...'); - - // Use a transaction for safety - await sequelize.query('ALTER TABLE "interview_evaluations" RENAME COLUMN "recommendation" TO "decision";'); - await sequelize.query('ALTER TABLE "interview_evaluations" RENAME COLUMN "remarks" TO "decisionRemarks";'); - - console.log('Columns renamed successfully.'); - process.exit(0); - } catch (error) { - console.error('Error during migration:', error); - process.exit(1); - } -}; - -run(); diff --git a/scripts/migrate-onboarding-documents-cleanup.ts b/scripts/migrate-onboarding-documents-cleanup.ts deleted file mode 100644 index 1d46c76..0000000 --- a/scripts/migrate-onboarding-documents-cleanup.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * Migration Script: Clean up onboarding_documents table. - * - * What it does (idempotent — safe to re-run): - * 1. Drops legacy columns `requestId` and `requestType` (and their indexes). - * These were generic catch-alls from when a single documents table routed - * across modules. Each module now has its own dedicated documents table - * (resignation_documents, termination_documents, constitutional_documents, - * relocation_documents), so these columns are dead weight on - * onboarding_documents and are not read or written anywhere in code. - * 2. Adds two indexes the UI actually queries: - * - (applicationId, stage) -> Progress / Documents tab grouping - * - documentType -> EOR auto-link in onboarding.controller.ts - * - * What it does NOT do: - * - No new "documentName" column. The user-entered document name is sent as - * the FormData filename and stored in the existing `fileName` column. - * - Does not touch `dealerId` (the Dealer <-> OnboardingDocument association - * references it; it stays for future use). - * - * Run: npx tsx scripts/migrate-onboarding-documents-cleanup.ts - */ -import 'dotenv/config'; -import db from '../src/database/models/index.js'; - -const TABLE = 'onboarding_documents'; - -async function migrate() { - const queryInterface = db.sequelize.getQueryInterface(); - - try { - console.log(`🔄 Cleaning up ${TABLE} ...\n`); - await db.sequelize.authenticate(); - - const tableInfo = await queryInterface.describeTable(TABLE); - - // 1) Drop the index on requestId first (if it exists). Index name depends on - // how Sequelize/Postgres generated it — try the common variants. - for (const idxName of [ - `${TABLE}_requestId`, - `${TABLE}_request_id`, - ]) { - try { - await db.sequelize.query(`DROP INDEX IF EXISTS "${idxName}"`); - console.log(`✓ Dropped index ${idxName} (if existed)`); - } catch (err: any) { - console.log(`- Skipped index ${idxName}: ${err.message}`); - } - } - - // 2) Drop the unused columns (idempotent via describeTable check). - for (const col of ['requestId', 'requestType']) { - if (tableInfo[col]) { - console.log(`Dropping column ${col} ...`); - await queryInterface.removeColumn(TABLE, col); - console.log(`✓ Dropped column ${col}`); - } else { - console.log(`- Column ${col} not present (already cleaned)`); - } - } - - // 3) Add useful indexes (idempotent — Postgres IF NOT EXISTS). - await db.sequelize.query( - `CREATE INDEX IF NOT EXISTS "${TABLE}_applicationId_stage" ON ${TABLE} ("applicationId", "stage")` - ); - console.log(`✓ Ensured index ${TABLE}_applicationId_stage`); - - await db.sequelize.query( - `CREATE INDEX IF NOT EXISTS "${TABLE}_documentType" ON ${TABLE} ("documentType")` - ); - console.log(`✓ Ensured index ${TABLE}_documentType`); - - console.log('\n✅ Migration completed successfully!'); - } catch (error: any) { - console.error('\n❌ Migration failed:', error.message); - if (error.stack) console.error('\nStack Trace:\n', error.stack); - process.exit(1); - } finally { - await db.sequelize.close(); - } -} - -migrate(); diff --git a/scripts/migrate-relocation-schema.ts b/scripts/migrate-relocation-schema.ts deleted file mode 100644 index be4a69e..0000000 --- a/scripts/migrate-relocation-schema.ts +++ /dev/null @@ -1,74 +0,0 @@ -/** - * Migration Script: Add newDistrictId and newStateId to RelocationRequest - * Run: npx ts-node scripts/migrate-relocation-schema.ts - */ -import db from '../src/database/models/index.js'; - -async function migrate() { - const queryInterface = db.sequelize.getQueryInterface(); - - try { - console.log('Starting relocation schema migration...'); - - // Get table description to check existing columns - const tableInfo = await queryInterface.describeTable('relocation_requests'); - - // Add newDistrictId column if not exists - if (!tableInfo.newDistrictId) { - console.log('Adding newDistrictId column...'); - await queryInterface.addColumn('relocation_requests', 'newDistrictId', { - type: db.Sequelize.DataTypes.UUID, - allowNull: true, - references: { - model: 'districts', - key: 'id' - } - }); - console.log('✓ newDistrictId column added'); - } else { - console.log('- newDistrictId column already exists'); - } - - // Add newStateId column if not exists - if (!tableInfo.newStateId) { - console.log('Adding newStateId column...'); - await queryInterface.addColumn('relocation_requests', 'newStateId', { - type: db.Sequelize.DataTypes.UUID, - allowNull: true, - references: { - model: 'states', - key: 'id' - } - }); - console.log('✓ newStateId column added'); - } else { - console.log('- newStateId column already exists'); - } - - // Update enum to include 'Intercity' if not already present - console.log('Checking relocationType enum...'); - try { - await db.sequelize.query(` - ALTER TYPE "enum_relocation_requests_relocationType" - ADD VALUE IF NOT EXISTS 'Intercity'; - `); - console.log('✓ Intercity added to enum (if not already present)'); - } catch (enumError: any) { - // PostgreSQL doesn't support IF NOT EXISTS for enum values in some versions - if (enumError.code === '42710') { - console.log('- Intercity already exists in enum'); - } else { - console.log('Warning: Could not update enum:', enumError.message); - } - } - - console.log('\n✅ Migration completed successfully!'); - } catch (error) { - console.error('❌ Migration failed:', error); - process.exit(1); - } finally { - await db.sequelize.close(); - } -} - -migrate(); \ No newline at end of file diff --git a/scripts/migrate-sla-notification-dispatches.ts b/scripts/migrate-sla-notification-dispatches.ts deleted file mode 100644 index 216ccec..0000000 --- a/scripts/migrate-sla-notification-dispatches.ts +++ /dev/null @@ -1,49 +0,0 @@ -import 'dotenv/config'; -import db from '../src/database/models/index.js'; - -/** - * Creates sla_notification_dispatches — idempotent audit log for SLA emails/alerts. - * Safe to run multiple times. - */ -async function migrate() { - const { sequelize } = db as { sequelize: { authenticate: () => Promise; query: (sql: string) => Promise; close: () => Promise } }; - await sequelize.authenticate(); - console.log('Database connected.'); - - const statements = [ - `CREATE TABLE IF NOT EXISTS sla_notification_dispatches ( - id UUID PRIMARY KEY DEFAULT gen_random_uuid(), - "trackingId" UUID NOT NULL REFERENCES sla_tracking(id) ON DELETE CASCADE, - "thresholdKey" VARCHAR(128) NOT NULL, - "dispatchType" VARCHAR(32) NOT NULL, - "templateCode" VARCHAR(64), - "stageName" VARCHAR(255), - "reminderId" UUID, - "escalationLevel" INTEGER, - "recipientCount" INTEGER NOT NULL DEFAULT 0, - "sentAt" TIMESTAMPTZ NOT NULL DEFAULT NOW(), - status VARCHAR(24) NOT NULL DEFAULT 'sent', - "createdAt" TIMESTAMPTZ NOT NULL DEFAULT NOW(), - "updatedAt" TIMESTAMPTZ NOT NULL DEFAULT NOW() - )`, - `CREATE UNIQUE INDEX IF NOT EXISTS sla_notification_dispatches_tracking_threshold_uq - ON sla_notification_dispatches ("trackingId", "thresholdKey")`, - `CREATE INDEX IF NOT EXISTS sla_notification_dispatches_tracking_sent_idx - ON sla_notification_dispatches ("trackingId", "sentAt")`, - `CREATE INDEX IF NOT EXISTS sla_notification_dispatches_type_idx - ON sla_notification_dispatches ("dispatchType")` - ]; - - for (const sql of statements) { - console.log('Running:', sql.split('\n')[0].slice(0, 72) + '...'); - await sequelize.query(sql); - } - - console.log('sla_notification_dispatches migration complete.'); - await sequelize.close(); -} - -migrate().catch((err) => { - console.error(err); - process.exit(1); -}); diff --git a/scripts/migrate-sla-tracking-schema.ts b/scripts/migrate-sla-tracking-schema.ts deleted file mode 100644 index 46ca3b0..0000000 --- a/scripts/migrate-sla-tracking-schema.ts +++ /dev/null @@ -1,34 +0,0 @@ -import 'dotenv/config'; -import db from '../src/database/models/index.js'; - -/** - * Aligns sla_tracking with SLATracking model (entity columns + metadata for reminder state). - * Safe to run multiple times (IF NOT EXISTS). - */ -async function migrate() { - const { sequelize } = db as any; - await sequelize.authenticate(); - console.log('Database connected.'); - - const statements = [ - `ALTER TABLE sla_tracking ADD COLUMN IF NOT EXISTS "entityType" VARCHAR(255)`, - `ALTER TABLE sla_tracking ADD COLUMN IF NOT EXISTS "entityId" UUID`, - `ALTER TABLE sla_tracking ADD COLUMN IF NOT EXISTS metadata JSONB DEFAULT '{}'::jsonb`, - // Backfill entity columns for legacy rows that only had applicationId - `UPDATE sla_tracking SET "entityType" = 'application' WHERE "entityType" IS NULL AND "applicationId" IS NOT NULL`, - `UPDATE sla_tracking SET "entityId" = "applicationId" WHERE "entityId" IS NULL AND "applicationId" IS NOT NULL` - ]; - - for (const sql of statements) { - console.log('Running:', sql.slice(0, 80) + '...'); - await sequelize.query(sql); - } - - console.log('sla_tracking schema migration complete.'); - await sequelize.close(); -} - -migrate().catch((err) => { - console.error(err); - process.exit(1); -}); diff --git a/scripts/migrate.ts b/scripts/migrate.ts index 763bfd3..9f1b176 100644 --- a/scripts/migrate.ts +++ b/scripts/migrate.ts @@ -1,36 +1,89 @@ /** - * Database Migration Script - * Synchronizes all Sequelize models with the database (PostgreSQL). - * This script will DROP all existing tables and recreate them. + * Database Migration Script — destructive fresh sync. * - * Schema for modules such as constitutional change (ENUM values, partial unique indexes, - * columns) is defined only on Sequelize models — no separate "table alteration" scripts are - * required after a fresh `migrate` + `seed:all` (see package.json `setup:fresh`). + * Drops every table and recreates the schema from Sequelize model definitions + * in `src/database/models/`. After the fresh schema is in place, every + * versioned migration file under `scripts/migrations/` is automatically + * stamped into the `migrations` table as "already applied" so subsequent + * `npm run migrate:up` runs on this DB will be no-ops until a newer + * migration is added. + * + * For incremental schema changes on environments that already hold data, + * use `npm run migrate:up` instead. * * Run: npx tsx scripts/migrate.ts + * Flags: + * --no-baseline Skip stamping migration files as applied (advanced). */ import 'dotenv/config'; +import { promises as fs } from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import { createHash } from 'crypto'; import db from '../src/database/models/index.js'; +const MIGRATIONS_DIR = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + 'migrations' +); + +async function discoverMigrations(): Promise { + try { + const entries = await fs.readdir(MIGRATIONS_DIR); + return entries + .filter((name) => name.endsWith('.ts') && !name.startsWith('_')) + .sort(); + } catch { + return []; + } +} + +async function fileChecksum(file: string): Promise { + const buf = await fs.readFile(path.join(MIGRATIONS_DIR, file)); + return createHash('sha256').update(buf).digest('hex'); +} + +async function baselineMigrationsTable(): Promise { + const files = await discoverMigrations(); + if (files.length === 0) { + console.log('No versioned migrations to baseline.'); + return; + } + console.log(`📌 Stamping ${files.length} migration(s) as already-applied:`); + for (const file of files) { + const name = file.replace(/\.ts$/, ''); + const checksum = await fileChecksum(file); + await db.Migration.create({ name, checksum }); + console.log(` + ${name}`); + } +} + async function runMigrations() { console.log('🔄 Starting database synchronization (Fresh Startup)...\n'); console.log('⚠️ WARNING: This will drop all existing tables in the database.\n'); + const skipBaseline = process.argv.includes('--no-baseline'); + try { - // Authenticate with the database await db.sequelize.authenticate(); console.log('📡 Connected to the database successfully.'); - // Synchronize models (force: true drops existing tables) - // This ensures that the schema exactly matches the Sequelize models + // force: true drops existing tables — schema is rebuilt exactly from + // Sequelize models, so every enum / column / index matches code. await db.sequelize.sync({ force: true }); console.log('\n✅ All tables created and synchronized successfully!'); console.log('----------------------------------------------------'); - const modelNames = Object.keys(db).filter(k => k !== 'sequelize' && k !== 'Sequelize'); + const modelNames = Object.keys(db).filter((k) => k !== 'sequelize' && k !== 'Sequelize'); console.log(`Available Models (${modelNames.length}): ${modelNames.join(', ')}`); - console.log('----------------------------------------------------'); + console.log('----------------------------------------------------\n'); + + if (!skipBaseline) { + await baselineMigrationsTable(); + } else { + console.log('Skipping migration baseline (--no-baseline).'); + } process.exit(0); } catch (error: any) { diff --git a/scripts/migrate_user_columns.ts b/scripts/migrate_user_columns.ts deleted file mode 100644 index ec5d714..0000000 --- a/scripts/migrate_user_columns.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { Sequelize } from 'sequelize'; -import config from '../src/common/config/database.js'; - -const env = process.env.NODE_ENV || 'development'; -const dbConfig = config[env]; - -const sequelize = new Sequelize( - dbConfig.database, - dbConfig.username, - dbConfig.password, - { - host: dbConfig.host, - port: dbConfig.port, - dialect: dbConfig.dialect, - logging: console.log - } -); - -async function migrate() { - try { - await sequelize.authenticate(); - console.log('Connected to database.'); - - const queryInterface = sequelize.getQueryInterface(); - - // Check if users table exists - const tables = await queryInterface.showAllTables(); - if (!tables.includes('users')) { - console.log('Users table does not exist. Skipping rename.'); - return; - } - - // Rename fullName to name - const columns = await queryInterface.describeTable('users'); - - if (columns.fullName && !columns.name) { - console.log('Renaming fullName to name...'); - await queryInterface.renameColumn('users', 'fullName', 'name'); - } else if (columns.fullName && columns.name) { - console.log('Both fullName and name exist. Manual intervention needed.'); - } else { - console.log('fullName not found or name already exists.'); - } - - // Rename mobileNumber to phone - if (columns.mobileNumber && !columns.phone) { - console.log('Renaming mobileNumber to phone...'); - await queryInterface.renameColumn('users', 'mobileNumber', 'phone'); - } else if (columns.mobileNumber && columns.phone) { - console.log('Both mobileNumber and phone exist. Manual intervention needed.'); - } else { - console.log('mobileNumber not found or phone already exists.'); - } - - console.log('Migration successful.'); - } catch (error) { - console.error('Migration failed:', error); - } finally { - await sequelize.close(); - } -} - -migrate(); diff --git a/scripts/migrations/20260526000000_create_sla_notification_dispatches.ts b/scripts/migrations/20260526000000_create_sla_notification_dispatches.ts new file mode 100644 index 0000000..e1c63ff --- /dev/null +++ b/scripts/migrations/20260526000000_create_sla_notification_dispatches.ts @@ -0,0 +1,52 @@ +/** + * Migration: create sla_notification_dispatches + * + * Folds the legacy `scripts/migrate-sla-notification-dispatches.ts` script + * into the new versioned migrations system. Creates the idempotent dispatch + * audit log used to dedupe SLA emails/alerts per tracking entry + threshold. + * + * Fresh `npm run migrate` runs already build this table from + * `SLANotificationDispatch` model — this migration exists so environments + * that predate the model can catch up via `npm run migrate:up`. + */ + +import type { Sequelize, Transaction } from 'sequelize'; + +export interface MigrationContext { + sequelize: Sequelize; + transaction: Transaction; +} + +const migration = { + async up({ sequelize, transaction }: MigrationContext): Promise { + const statements = [ + `CREATE TABLE IF NOT EXISTS sla_notification_dispatches ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + "trackingId" UUID NOT NULL REFERENCES sla_tracking(id) ON DELETE CASCADE, + "thresholdKey" VARCHAR(128) NOT NULL, + "dispatchType" VARCHAR(32) NOT NULL, + "templateCode" VARCHAR(64), + "stageName" VARCHAR(255), + "reminderId" UUID, + "escalationLevel" INTEGER, + "recipientCount" INTEGER NOT NULL DEFAULT 0, + "sentAt" TIMESTAMPTZ NOT NULL DEFAULT NOW(), + status VARCHAR(24) NOT NULL DEFAULT 'sent', + "createdAt" TIMESTAMPTZ NOT NULL DEFAULT NOW(), + "updatedAt" TIMESTAMPTZ NOT NULL DEFAULT NOW() + )`, + `CREATE UNIQUE INDEX IF NOT EXISTS sla_notification_dispatches_tracking_threshold_uq + ON sla_notification_dispatches ("trackingId", "thresholdKey")`, + `CREATE INDEX IF NOT EXISTS sla_notification_dispatches_tracking_sent_idx + ON sla_notification_dispatches ("trackingId", "sentAt")`, + `CREATE INDEX IF NOT EXISTS sla_notification_dispatches_type_idx + ON sla_notification_dispatches ("dispatchType")` + ]; + + for (const sql of statements) { + await sequelize.query(sql, { transaction }); + } + } +}; + +export default migration; diff --git a/scripts/migrations/README.md b/scripts/migrations/README.md new file mode 100644 index 0000000..0d33b87 --- /dev/null +++ b/scripts/migrations/README.md @@ -0,0 +1,58 @@ +# Database Migrations + +This folder holds versioned, incremental database migrations for environments +that already have a populated schema (UAT / production). On a fresh dev box, +`npm run migrate` (destructive `sync({ force: true })`) is still the fastest +route — the model definitions in `src/database/models/` remain the source of +truth for the desired schema. + +## Workflow + +| Goal | Command | +|-----------------------------------------------------|---------| +| Fresh / dev: drop everything, recreate from models | `npm run migrate` | +| Mark every migration file here as already-applied | `npm run migrate:baseline` | +| Apply only the migrations not yet recorded in DB | `npm run migrate:up` | +| List applied vs pending | `npm run migrate:status` | +| Scaffold a new migration file | `npm run migrate:create -- ` | + +A typical post-fresh-setup sequence is therefore: + +```bash +npm run migrate # drop + recreate +npm run migrate:baseline # stamp this folder's files as already applied +npm run seed:all # seed master data +``` + +After every subsequent deploy on the same DB: + +```bash +npm run migrate:up # apply only the new migrations +``` + +## File naming convention + +``` +_.ts +``` + +Examples: +- `20260526143000_add_finance_kyc_column.ts` +- `20260601090000_drop_legacy_questionnaire_column.ts` + +The runner sorts files lexicographically, so the timestamp prefix dictates +execution order. Always use UTC when manually creating timestamps; the +scaffolder (`npm run migrate:create`) emits a current-time UTC stamp for you. + +## Authoring a migration + +1. Run `npm run migrate:create -- add_finance_kyc_column`. +2. Edit the generated file — implement `up({ sequelize })`. +3. Update the corresponding Sequelize model so fresh `migrate` runs produce + the same end state. +4. Commit both the migration and the model changes in the same PR. +5. On every environment that holds real data, run `npm run migrate:up`. + +The runner records each successful migration in the `migrations` table +(`{ name, appliedAt, checksum }`) so re-runs are safe and idempotent at the +runner level — independently of the migration's own SQL. diff --git a/scripts/migrations/_template.ts b/scripts/migrations/_template.ts new file mode 100644 index 0000000..dd188f1 --- /dev/null +++ b/scripts/migrations/_template.ts @@ -0,0 +1,42 @@ +/** + * Migration template — copy into a new file via `npm run migrate:create -- `. + * + * File naming convention: `_.ts` + * e.g. `20260526143000_add_finance_kyc_column.ts` + * + * The runner (`scripts/run-migrations.ts`) imports the default export and + * invokes `up()`. After `up()` resolves it records the filename (without + * extension) in the `migrations` table so the migration is never re-run on + * this environment. + * + * Guidelines: + * - Always wrap multi-statement changes in a single Sequelize transaction. + * - Prefer idempotent DDL (`IF NOT EXISTS`, `IF EXISTS`) so accidental + * re-runs are safe. + * - Never destructively drop columns/tables that hold real production data + * unless you have a separate, explicit data-migration step. + * - Update the corresponding Sequelize model in `src/database/models/` + * in the same PR — migrations are a delta for environments that already + * have a populated schema; the model definitions remain the source of + * truth for fresh `npm run migrate` builds. + */ + +import type { QueryInterface, Sequelize } from 'sequelize'; + +export interface MigrationContext { + queryInterface: QueryInterface; + sequelize: Sequelize; +} + +const migration = { + async up({ sequelize }: MigrationContext): Promise { + // Example: + // await sequelize.query(` + // ALTER TABLE "applications" + // ADD COLUMN IF NOT EXISTS "kycReviewedAt" TIMESTAMPTZ NULL; + // `); + throw new Error('Migration template — implement up() before running.'); + } +}; + +export default migration; diff --git a/scripts/remove_abhishek_app.ts b/scripts/remove_abhishek_app.ts deleted file mode 100644 index befa1ba..0000000 --- a/scripts/remove_abhishek_app.ts +++ /dev/null @@ -1,36 +0,0 @@ - -import dotenv from 'dotenv'; -import path from 'path'; -import { fileURLToPath } from 'url'; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); -dotenv.config({ path: path.join(__dirname, '../.env') }); - -import db from '../src/database/models/index.js'; - -async function run() { - try { - const appId = '1f1fec7d-7034-4588-a4b2-0e1d4cc3f149'; - const abhishekId = '9284a190-f4d2-49f3-9186-bb7c93dc9b6d'; - - const deleted = await db.RequestParticipant.destroy({ - where: { - requestId: appId, - userId: abhishekId - } - }); - - if (deleted) { - console.log('Successfully removed Abhishek from application participants.'); - } else { - console.log('Abhishek was not found in participants for this application.'); - } - - process.exit(0); - } catch (error) { - console.error('Error:', error); - process.exit(1); - } -} - -run(); diff --git a/scripts/run-migrations.ts b/scripts/run-migrations.ts new file mode 100644 index 0000000..f9b6e94 --- /dev/null +++ b/scripts/run-migrations.ts @@ -0,0 +1,181 @@ +/** + * Migration runner. + * + * Usage: + * npm run migrate:up -> apply pending migrations + * npm run migrate:status -> list applied vs pending + * npm run migrate:baseline -> mark every existing migration as already applied + * + * The runner is intentionally minimal: it discovers `.ts` files inside + * `scripts/migrations/`, ignores anything starting with `_` (template files, + * shared helpers), sorts them lexicographically (filename-based ordering == + * timestamp ordering when authors follow the convention), and applies each + * file whose `name` is not yet recorded in the `migrations` table. + * + * Each migration file must `export default` an object exposing + * async up({ sequelize, queryInterface }): Promise + * See `scripts/migrations/_template.ts` for the contract. + */ + +import 'dotenv/config'; +import { fileURLToPath, pathToFileURL } from 'url'; +import { createHash } from 'crypto'; +import { promises as fs } from 'fs'; +import path from 'path'; +import db from '../src/database/models/index.js'; + +const MIGRATIONS_DIR = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + 'migrations' +); + +type Mode = 'up' | 'status' | 'baseline'; + +function parseMode(argv: string[]): Mode { + if (argv.includes('--status')) return 'status'; + if (argv.includes('--baseline')) return 'baseline'; + return 'up'; +} + +async function discoverMigrationFiles(): Promise { + const entries = await fs.readdir(MIGRATIONS_DIR); + return entries + .filter((name) => name.endsWith('.ts') && !name.startsWith('_')) + .sort(); +} + +async function ensureMigrationsTable(): Promise { + // The Migration model has the canonical schema. We create the table only + // if it does not yet exist so this script remains safe to run on any + // environment (fresh sync OR already-migrated DB). + await db.Migration.sync(); +} + +async function loadMigration(file: string): Promise<{ up: (ctx: any) => Promise }> { + const fullPath = path.join(MIGRATIONS_DIR, file); + const mod: any = await import(pathToFileURL(fullPath).href); + const migration = mod.default ?? mod; + if (!migration || typeof migration.up !== 'function') { + throw new Error(`Migration ${file} does not export a default { up } function.`); + } + return migration; +} + +async function fileChecksum(file: string): Promise { + const buf = await fs.readFile(path.join(MIGRATIONS_DIR, file)); + return createHash('sha256').update(buf).digest('hex'); +} + +async function listApplied(): Promise> { + const rows = await db.Migration.findAll({ attributes: ['name'] }); + return new Set(rows.map((r: any) => r.name as string)); +} + +function stripExt(file: string): string { + return file.replace(/\.ts$/, ''); +} + +async function runUp(): Promise { + const files = await discoverMigrationFiles(); + const applied = await listApplied(); + + const pending = files.filter((f) => !applied.has(stripExt(f))); + if (pending.length === 0) { + console.log('All migrations are already applied. Nothing to do.'); + return; + } + + console.log(`Applying ${pending.length} migration(s)...\n`); + for (const file of pending) { + const name = stripExt(file); + process.stdout.write(` → ${name} ... `); + try { + const migration = await loadMigration(file); + await db.sequelize.transaction(async (transaction: any) => { + await migration.up({ + sequelize: db.sequelize, + queryInterface: db.sequelize.getQueryInterface(), + transaction + }); + }); + const checksum = await fileChecksum(file); + await db.Migration.create({ name, checksum }); + console.log('OK'); + } catch (err: any) { + console.log('FAILED'); + console.error(`\n${file} failed:`, err.message || err); + throw err; + } + } + console.log('\nMigrations complete.'); +} + +async function runStatus(): Promise { + const files = await discoverMigrationFiles(); + const applied = await listApplied(); + + if (files.length === 0) { + console.log('No migration files in scripts/migrations/.'); + return; + } + + console.log('Migration status:'); + for (const file of files) { + const name = stripExt(file); + const mark = applied.has(name) ? '✓' : ' '; + console.log(` [${mark}] ${name}`); + } + + const pendingCount = files.filter((f) => !applied.has(stripExt(f))).length; + console.log(`\nApplied: ${files.length - pendingCount} Pending: ${pendingCount}`); +} + +async function runBaseline(): Promise { + const files = await discoverMigrationFiles(); + const applied = await listApplied(); + + const toStamp = files.filter((f) => !applied.has(stripExt(f))); + if (toStamp.length === 0) { + console.log('Baseline: every migration is already recorded. Nothing to do.'); + return; + } + + console.log(`Stamping ${toStamp.length} migration(s) as already-applied (no SQL executed):\n`); + for (const file of toStamp) { + const name = stripExt(file); + const checksum = await fileChecksum(file); + await db.Migration.create({ name, checksum }); + console.log(` + ${name}`); + } + console.log('\nBaseline complete.'); +} + +async function main(): Promise { + const mode = parseMode(process.argv.slice(2)); + + try { + await db.sequelize.authenticate(); + await ensureMigrationsTable(); + + if (mode === 'status') { + await runStatus(); + } else if (mode === 'baseline') { + await runBaseline(); + } else { + await runUp(); + } + + await db.sequelize.close(); + process.exit(0); + } catch (err: any) { + console.error('\nMigration runner aborted:', err?.message || err); + try { + await db.sequelize.close(); + } catch { + /* ignore */ + } + process.exit(1); + } +} + +main(); diff --git a/scripts/test-areas.ts b/scripts/test-areas.ts deleted file mode 100644 index 31aeeed..0000000 --- a/scripts/test-areas.ts +++ /dev/null @@ -1,21 +0,0 @@ - -import db from '../src/database/models/index.js'; -const { Area, District, User } = db; - -async function testAreas() { - try { - console.log('Testing Area.findAll...'); - const areas = await Area.findAll({ - include: [ - { model: District, as: 'district', attributes: ['districtName'] }, - { model: User, as: 'manager', attributes: ['id', 'fullName', 'email', 'mobileNumber'] } - ], - order: [['areaName', 'ASC']] - }); - console.log('Successfully fetched areas:', JSON.stringify(areas, null, 2)); - } catch (error) { - console.error('Error fetching areas:', error); - } -} - -testAreas(); diff --git a/scripts/test-regions.ts b/scripts/test-regions.ts deleted file mode 100644 index 612d4db..0000000 --- a/scripts/test-regions.ts +++ /dev/null @@ -1,34 +0,0 @@ - -import db from '../src/database/models/index.js'; -const { Region, Zone, State, User } = db; - -async function testRegions() { - try { - console.log('Testing Region.findAll...'); - const regions = await Region.findAll({ - include: [ - { - model: State, - as: 'states', - attributes: ['id', 'stateName'] - }, - { - model: Zone, - as: 'zone', - attributes: ['id', 'zoneName'] - }, - { - model: User, - as: 'regionalManager', - attributes: ['id', 'fullName', 'email', 'mobileNumber'] - } - ], - order: [['regionName', 'ASC']] - }); - console.log('Successfully fetched regions:', JSON.stringify(regions, null, 2)); - } catch (error) { - console.error('Error fetching regions:', error); - } -} - -testRegions(); diff --git a/scripts/test_enum_cast.ts b/scripts/test_enum_cast.ts deleted file mode 100644 index 58c1729..0000000 --- a/scripts/test_enum_cast.ts +++ /dev/null @@ -1,26 +0,0 @@ -import db from '../src/database/models/index.js'; - -async function testInsert() { - try { - // Attempt insert without checking existing records - // If it fails with "invalid input value", the enum is truly not updated. - // If it fails with "foreign key", the enum was VALID but the data was wrong. - await db.sequelize.query(` - DO $$ - BEGIN - -- This will fail if 'architecture' is invalid for the enum - PERFORM 'architecture'::"enum_request_participants_participantType"; - RAISE NOTICE '✅ Enum check passed!'; - EXCEPTION WHEN OTHERS THEN - RAISE EXCEPTION '❌ Enum check failed: %', SQLERRM; - END $$; - `); - console.log('✅ PL/pgSQL Enum check passed!'); - } catch (error: any) { - console.error(error.message); - } finally { - process.exit(0); - } -} - -testInsert(); diff --git a/scripts/test_insert.ts b/scripts/test_insert.ts deleted file mode 100644 index 05a1c84..0000000 --- a/scripts/test_insert.ts +++ /dev/null @@ -1,22 +0,0 @@ -import db from '../src/database/models/index.js'; - -async function testInsert() { - try { - const testId = '00000000-0000-0000-0000-000000000000'; - await db.sequelize.query(` - INSERT INTO request_participants ("id", "requestId", "requestType", "userId", "participantType", "joinedMethod", "createdAt", "updatedAt") - VALUES (gen_random_uuid(), '${testId}', 'test', '9950ee60-ddf6-4091-a1e6-e7161e6d8bb6', 'architecture', 'manual', now(), now()) - `); - console.log('✅ Manual insert successful!'); - - // Clean up - await db.sequelize.query(`DELETE FROM request_participants WHERE "requestId" = '${testId}'`); - console.log('✅ Clean up successful!'); - } catch (error: any) { - console.error('❌ Manual insert failed:', error.message); - } finally { - process.exit(0); - } -} - -testInsert(); diff --git a/scripts/update-enum.ts b/scripts/update-enum.ts deleted file mode 100644 index c18dece..0000000 --- a/scripts/update-enum.ts +++ /dev/null @@ -1,42 +0,0 @@ - -import 'dotenv/config'; -import db from '../src/database/models/index.js'; - -const updateEnum = async () => { - try { - console.log('>>> STARTING ENUM MIGRATION <<<'); - await db.sequelize.authenticate(); - console.log('Database connection established.'); - - // Raw query to add values to enum - // Note: PostgreSQL cannot remove enum values, only add. - // We will add the "Interview Pending" variations. - - const queryInterface = db.sequelize.getQueryInterface(); - - try { - await db.sequelize.query(`ALTER TYPE "enum_applications_overallStatus" ADD VALUE IF NOT EXISTS 'Level 1 Interview Pending';`); - console.log('Added Level 1 Interview Pending'); - } catch (e) { console.log('Level 1 Interview Pending likely exists or error', e.message); } - - try { - await db.sequelize.query(`ALTER TYPE "enum_applications_overallStatus" ADD VALUE IF NOT EXISTS 'Level 2 Interview Pending';`); - console.log('Added Level 2 Interview Pending'); - } catch (e) { console.log('Level 2 Interview Pending likely exists or error', e.message); } - - try { - await db.sequelize.query(`ALTER TYPE "enum_applications_overallStatus" ADD VALUE IF NOT EXISTS 'Level 3 Interview Pending';`); - console.log('Added Level 3 Interview Pending'); - } catch (e) { console.log('Level 3 Interview Pending likely exists or error', e.message); } - - console.log('>>> SUCCESS: Enum values updated <<<'); - - await db.sequelize.close(); - process.exit(0); - } catch (error) { - console.error('>>> ERROR: Failed to update Enum', error); - process.exit(1); - } -}; - -updateEnum(); diff --git a/scripts/update_dealer_codes_table.ts b/scripts/update_dealer_codes_table.ts deleted file mode 100644 index 5c6430d..0000000 --- a/scripts/update_dealer_codes_table.ts +++ /dev/null @@ -1,46 +0,0 @@ -import db from '../src/database/models/index.js'; -const { sequelize } = db; - -async function updateDealerCodesTable() { - console.log('🔄 Checking and updating dealer_codes table schema...'); - - try { - // Add applicationId - await sequelize.query(` - DO $$ - BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='dealer_codes' AND column_name='applicationId') THEN - ALTER TABLE dealer_codes ADD COLUMN "applicationId" UUID REFERENCES applications(id); - END IF; - - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='dealer_codes' AND column_name='salesCode') THEN - ALTER TABLE dealer_codes ADD COLUMN "salesCode" VARCHAR(255); - END IF; - - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='dealer_codes' AND column_name='serviceCode') THEN - ALTER TABLE dealer_codes ADD COLUMN "serviceCode" VARCHAR(255); - END IF; - - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='dealer_codes' AND column_name='gmaCode') THEN - ALTER TABLE dealer_codes ADD COLUMN "gmaCode" VARCHAR(255); - END IF; - - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='dealer_codes' AND column_name='gearCode') THEN - ALTER TABLE dealer_codes ADD COLUMN "gearCode" VARCHAR(255); - END IF; - - IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='dealer_codes' AND column_name='sapMasterId') THEN - ALTER TABLE dealer_codes ADD COLUMN "sapMasterId" VARCHAR(255); - END IF; - END $$; - `); - - console.log('✅ dealer_codes table schema updated successfully.'); - process.exit(0); - } catch (error) { - console.error('❌ Error updating dealer_codes table:', error); - process.exit(1); - } -} - -updateDealerCodesTable(); diff --git a/scripts/update_enum.ts b/scripts/update_enum.ts deleted file mode 100644 index 47491aa..0000000 --- a/scripts/update_enum.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { APPLICATION_STATUS } from '../src/common/config/constants.js'; -import db from '../src/database/models/index.js'; - -async function updateEnum() { - try { - console.log('🔄 Syncing all APPLICATION_STATUS values with DB Enum...'); - - const statuses = Object.values(APPLICATION_STATUS); - - for (const status of statuses) { - try { - // Posgres doesn't support IF NOT EXISTS for ADD VALUE in 9.5 and below - // so we do it one by one and ignore "already exists" errors. - await db.sequelize.query(`ALTER TYPE "enum_applications_overallStatus" ADD VALUE '${status}'`); - console.log(`✅ Added: ${status}`); - } catch (e: any) { - if (e.message.includes('already exists')) { - // console.log(`ℹ️ Already exists: ${status}`); - } else { - console.error(`❌ Error adding ${status}:`, e.message); - } - } - } - - console.log('\n✅ Database Enum successfully synchronized with constants.'); - } catch (error: any) { - console.error('❌ Critical failure during sync:', error.message); - } finally { - process.exit(0); - } -} - -updateEnum(); diff --git a/scripts/update_participant_enum.ts b/scripts/update_participant_enum.ts deleted file mode 100644 index 581a92c..0000000 --- a/scripts/update_participant_enum.ts +++ /dev/null @@ -1,26 +0,0 @@ -import db from '../src/database/models/index.js'; - -async function updateParticipantEnum() { - try { - console.log('🔄 Adding "architecture" to participantType enum...'); - - try { - await db.sequelize.query(`ALTER TYPE "enum_request_participants_participantType" ADD VALUE 'architecture'`); - console.log(`✅ Added: architecture`); - } catch (e: any) { - if (e.message.includes('already exists')) { - console.log(`ℹ️ Already exists: architecture`); - } else { - console.error(`❌ Error adding architecture:`, e.message); - } - } - - console.log('\n✅ Database Enum successfully updated.'); - } catch (error: any) { - console.error('❌ Critical failure:', error.message); - } finally { - process.exit(0); - } -} - -updateParticipantEnum(); diff --git a/scripts/verify-offboarding-status.ts b/scripts/verify-offboarding-status.ts deleted file mode 100644 index 72cf17b..0000000 --- a/scripts/verify-offboarding-status.ts +++ /dev/null @@ -1,47 +0,0 @@ -import assert from 'node:assert/strict'; -import { - getResignationStatusForStage, - getTerminationStatusForStage, - normalizeClearanceStatus, - normalizeFnFStatus, - normalizeTerminationCurrentStage, - getLegacyTerminationRowFixes -} from '../src/common/utils/offboardingStatus.js'; -import { getJointRoundCutoffMsFromTimeline } from '../src/common/utils/terminationJointReviewRound.util.js'; - -assert.equal(normalizeFnFStatus('settled'), 'Completed'); -assert.equal(normalizeFnFStatus('finance approval'), 'Finance Approval'); - -assert.equal(getResignationStatusForStage('ASM'), 'ASM Review'); -assert.equal(getResignationStatusForStage('F&F Initiated'), 'F&F Initiated'); - -assert.equal(getTerminationStatusForStage('Submitted'), 'Submitted'); -assert.equal(getTerminationStatusForStage('Terminated'), 'Terminated'); - -assert.equal( - normalizeTerminationCurrentStage('Personal Hearing'), - 'Evaluation of Dealer SCN Response' -); -assert.deepEqual(getLegacyTerminationRowFixes({ currentStage: 'Personal Hearing', status: 'Personal Hearing Pending' }), { - currentStage: 'Evaluation of Dealer SCN Response', - status: 'SCN Response Evaluation Pending' -}); - -const reconsiderTimeline = [ - { action: 'Approved', targetStage: 'NBH Final Approval', timestamp: new Date('2024-01-01').toISOString() }, - { - action: 'Sent for Reconsideration', - targetStage: 'Evaluation of Dealer SCN Response', - timestamp: new Date('2025-06-15T12:00:00.000Z').toISOString() - } -]; -assert.equal( - getJointRoundCutoffMsFromTimeline(reconsiderTimeline, 'scn_response_eval'), - new Date('2025-06-15T12:00:00.000Z').getTime() -); - -assert.equal(normalizeClearanceStatus('Cleared', 0), 'NOC Submitted'); -assert.equal(normalizeClearanceStatus('Cleared', 100), 'Dues Pending'); -assert.equal(normalizeClearanceStatus('Pending', 0), 'Pending'); - -console.log('Offboarding status normalization checks passed.'); diff --git a/scripts/verify-standardized-offboarding.ts b/scripts/verify-standardized-offboarding.ts deleted file mode 100644 index 232ee60..0000000 --- a/scripts/verify-standardized-offboarding.ts +++ /dev/null @@ -1,58 +0,0 @@ -import assert from 'node:assert/strict'; -import { - validateOffboardingAction, - getPreviousStage, - getOffboardingAuditAction -} from '../src/common/utils/offboardingWorkflow.utils.js'; -import { - OFFBOARDING_ACTIONS, - REQUEST_TYPES, - TERMINATION_STAGES, - RESIGNATION_STAGES, - CONSTITUTIONAL_STAGES, - AUDIT_ACTIONS -} from '../src/common/config/constants.js'; - -console.log('--- Testing Standardized Offboarding Utilities ---'); - -// 1. Test validateOffboardingAction -console.log('Testing validateOffboardingAction...'); -assert.deepEqual(validateOffboardingAction(OFFBOARDING_ACTIONS.APPROVE, ''), { valid: true }); -assert.deepEqual(validateOffboardingAction(OFFBOARDING_ACTIONS.SEND_BACK, 'Short'), { valid: true }); // 'Short' is 5 chars -assert.equal(validateOffboardingAction(OFFBOARDING_ACTIONS.SEND_BACK, 'No').valid, false); -assert.equal(validateOffboardingAction(OFFBOARDING_ACTIONS.REVOKE, '').valid, false); -assert.equal(validateOffboardingAction(OFFBOARDING_ACTIONS.REJECT, '').valid, true); // Remarks not mandatory for reject in current util choice -console.log('✓ validateOffboardingAction passed.'); - -// 2. Test getPreviousStage - Termination -console.log('Testing getPreviousStage (Termination)...'); -assert.equal(getPreviousStage(REQUEST_TYPES.TERMINATION, TERMINATION_STAGES.RBM_REVIEW), TERMINATION_STAGES.SUBMITTED); -assert.equal(getPreviousStage(REQUEST_TYPES.TERMINATION, TERMINATION_STAGES.ZBH_REVIEW), TERMINATION_STAGES.RBM_REVIEW); -assert.equal(getPreviousStage(REQUEST_TYPES.TERMINATION, TERMINATION_STAGES.TERMINATED), TERMINATION_STAGES.LEGAL_LETTER); -console.log('✓ Termination stage resolution passed.'); - -// 3. Test getPreviousStage - Resignation -console.log('Testing getPreviousStage (Resignation)...'); -assert.equal(getPreviousStage(REQUEST_TYPES.RESIGNATION, RESIGNATION_STAGES.RBM), RESIGNATION_STAGES.ASM); -assert.equal(getPreviousStage(REQUEST_TYPES.RESIGNATION, RESIGNATION_STAGES.ZBH), RESIGNATION_STAGES.RBM); -assert.equal(getPreviousStage(REQUEST_TYPES.RESIGNATION, RESIGNATION_STAGES.FNF_INITIATED), RESIGNATION_STAGES.AWAITING_FNF); -assert.equal(getPreviousStage(REQUEST_TYPES.RESIGNATION, RESIGNATION_STAGES.DD_ADMIN), RESIGNATION_STAGES.LEGAL); -assert.equal(getPreviousStage(REQUEST_TYPES.RESIGNATION, RESIGNATION_STAGES.COMPLETED), RESIGNATION_STAGES.FNF_INITIATED); -console.log('✓ Resignation stage resolution passed.'); - -// 4. Test getPreviousStage - Constitutional -console.log('Testing getPreviousStage (Constitutional)...'); -assert.equal(getPreviousStage(REQUEST_TYPES.CONSTITUTIONAL, CONSTITUTIONAL_STAGES.ASM_REVIEW), CONSTITUTIONAL_STAGES.SUBMITTED); -assert.equal(getPreviousStage(REQUEST_TYPES.CONSTITUTIONAL, CONSTITUTIONAL_STAGES.ZM_RBM_REVIEW), CONSTITUTIONAL_STAGES.ASM_REVIEW); -assert.equal(getPreviousStage(REQUEST_TYPES.CONSTITUTIONAL, CONSTITUTIONAL_STAGES.COMPLETED), CONSTITUTIONAL_STAGES.LEGAL_REVIEW); -console.log('✓ Constitutional stage resolution passed.'); - -// 5. Test getOffboardingAuditAction mapping -console.log('Testing getOffboardingAuditAction...'); -assert.equal(getOffboardingAuditAction('Sent Back', REQUEST_TYPES.TERMINATION), AUDIT_ACTIONS.UPDATED); -assert.equal(getOffboardingAuditAction('Revoke', REQUEST_TYPES.RESIGNATION), AUDIT_ACTIONS.UPDATED); -assert.equal(getOffboardingAuditAction('Approve', REQUEST_TYPES.CONSTITUTIONAL), AUDIT_ACTIONS.APPROVED); -assert.equal(getOffboardingAuditAction('REJECT', REQUEST_TYPES.TERMINATION), AUDIT_ACTIONS.REJECTED); -console.log('✓ Audit action mapping passed.'); - -console.log('\nALL STANDARDIZATION UTILITY CHECKS PASSED SUCCESSFULLY.'); diff --git a/src/database/models/index.ts b/src/database/models/index.ts index de83995..cfb72f9 100644 --- a/src/database/models/index.ts +++ b/src/database/models/index.ts @@ -108,6 +108,9 @@ import createWorknote from './activity/Worknote.js'; import createWorkNoteAttachment from './activity/WorkNoteAttachment.js'; import createWorkNoteTag from './activity/WorkNoteTag.js'; +// System +import createMigration from './system/Migration.js'; + const env = process.env.NODE_ENV || 'development'; const dbConfig = config[env]; @@ -233,6 +236,9 @@ db.StageApprovalPolicy = createStageApprovalPolicy(sequelize); db.StageApprovalAction = createStageApprovalAction(sequelize); db.SystemConfiguration = createSystemConfiguration(sequelize); +// Batch 9: System internals +db.Migration = createMigration(sequelize); + // Define associations Object.keys(db).forEach((modelName) => { if (db[modelName].associate) { diff --git a/src/database/models/system/Migration.ts b/src/database/models/system/Migration.ts new file mode 100644 index 0000000..18794fa --- /dev/null +++ b/src/database/models/system/Migration.ts @@ -0,0 +1,73 @@ +import { Model, DataTypes, Sequelize } from 'sequelize'; + +/** + * Migration + * ----------- + * Tracks which database migrations have been applied to this environment. + * + * Workflow: + * - `npm run migrate` -> destructive fresh sync (drops everything and + * recreates schema from Sequelize models). + * - `npm run migrate:baseline` -> stamps every existing migration file under + * `scripts/migrations/` as already-applied + * (use this immediately after a fresh sync so + * future incremental runs don't re-execute + * them on top of an already-correct schema). + * - `npm run migrate:up` -> applies any migration file under + * `scripts/migrations/` that is not yet + * recorded in this table. + * - `npm run migrate:status` -> lists applied vs pending migrations. + * - `npm run migrate:create` -> scaffolds a new `_.ts` file. + * + * `name` is the canonical filename (without extension) so it remains stable + * even if the file is moved between directories. + */ +export interface MigrationAttributes { + id: string; + name: string; + appliedAt: Date; + checksum: string | null; +} + +export interface MigrationInstance + extends Model, + MigrationAttributes { } + +export default (sequelize: Sequelize) => { + const Migration = sequelize.define( + 'Migration', + { + id: { + type: DataTypes.UUID, + defaultValue: DataTypes.UUIDV4, + primaryKey: true + }, + name: { + type: DataTypes.STRING(255), + allowNull: false, + unique: true + }, + appliedAt: { + type: DataTypes.DATE, + allowNull: false, + defaultValue: DataTypes.NOW + }, + checksum: { + // Optional SHA-256 of the migration file contents, useful to detect + // edits to an already-applied migration during code review. + type: DataTypes.STRING(64), + allowNull: true + } + }, + { + tableName: 'migrations', + timestamps: false, + indexes: [ + { unique: true, fields: ['name'] }, + { fields: ['appliedAt'] } + ] + } + ); + + return Migration; +}; diff --git a/src/modules/self-service/relocation.controller.ts b/src/modules/self-service/relocation.controller.ts index d9d66e4..f159fc2 100644 --- a/src/modules/self-service/relocation.controller.ts +++ b/src/modules/self-service/relocation.controller.ts @@ -784,23 +784,12 @@ export const takeAction = async (req: AuthRequest, res: Response) => { newCurrentStage = RELOCATION_STAGES.REJECTED; } - // SRS §12.2.8 — enforce mandatory document submission + verification before late-stage approvals - if ( - normalizedAction === 'APPROVE' && - ( - request.currentStage === RELOCATION_STAGES.NBH_APPROVAL || - request.currentStage === RELOCATION_STAGES.LEGAL_CLEARANCE - ) - ) { - const readiness = getRelocationDocumentReadiness(request.documents || []); - if (readiness.missingUploads.length || readiness.pendingVerification.length) { - return res.status(400).json({ - success: false, - message: 'Mandatory relocation documents are incomplete or pending verification.', - readiness - }); - } - } + // SRS §12.2.8 — document upload/verification is tracked for readiness display + // (see getRelocationDocumentReadiness + progress calculation) but is NOT a hard + // blocker on NBH Approval / Legal Clearance. Per business decision, these are + // senior approval authorities who retain discretion to proceed even when the + // readiness panel still shows missing uploads or pending verifications. The + // readiness data continues to be surfaced on the UI so gaps remain visible. let newProgress = request.progressPercentage; if (normalizedAction === 'APPROVE') { diff --git a/trigger-constitutional.js b/trigger-constitutional.js index 0640d71..a3f21ff 100644 --- a/trigger-constitutional.js +++ b/trigger-constitutional.js @@ -59,25 +59,69 @@ async function apiRequest(endpoint, method = 'GET', body = null, token = null) { return data; } -async function login(email) { +async function login(email, password = PASSWORD) { if (!login.cache) login.cache = {}; if (login.cache[email]) return login.cache[email]; - const data = await apiRequest('/auth/login', 'POST', { email, password: PASSWORD }); + const data = await apiRequest('/auth/login', 'POST', { email, password }); login.cache[email] = data.token; return login.cache[email]; } +async function discoverDealer(adminToken, preferredEmail) { + if (preferredEmail) { + try { + console.log(`Attempting login for dealer: ${preferredEmail}...`); + const token = await login(preferredEmail, 'Dealer@123'); + return { dealerEmail: preferredEmail, dealerToken: token }; + } catch (e) { + console.log(`Provided dealer login failed (${e.message}). Searching for an active onboarded dealer...`); + } + } else { + console.log('No --dealerEmail supplied. Searching for an active onboarded dealer...'); + } + + const appsRes = await apiRequest('/onboarding/applications', 'GET', null, adminToken); + const apps = appsRes?.data || []; + const onboarded = apps.filter(a => String(a.overallStatus || a.status || '').toLowerCase() === 'onboarded'); + + if (!onboarded.length) { + throw new Error('No onboarded dealers found in the system. Run trigger-workflow.js first to onboard a dealer, then retry.'); + } + + for (const app of onboarded) { + if (!app.email) continue; + try { + process.stdout.write(`Testing login for ${app.email}... `); + const data = await apiRequest('/auth/login', 'POST', { email: app.email, password: 'Dealer@123' }); + // /auth/login only returns a token when the account is Active; inactive accounts + // are rejected upstream with HTTP 403 (caught below). + console.log('SUCCESS'); + login.cache[app.email] = data.token; + return { dealerEmail: app.email, dealerToken: data.token }; + } catch (err) { + console.log('FAILED'); + } + } + + throw new Error( + `Found ${onboarded.length} onboarded dealer(s), but none could be logged into with Dealer@123. ` + + `Either an active dealer doesn't exist, or the password has been rotated. ` + + `Pass --dealerEmail explicitly or activate one of: ${onboarded.map(a => a.email).filter(Boolean).join(', ')}.` + ); +} + const delay = (ms = STEP_DELAY_MS) => new Promise(res => setTimeout(res, ms)); async function run() { try { console.log('--- STARTING CONSTITUTIONAL CHANGE E2E FLOW ---'); - if (!EMAILS.DEALER) { - throw new Error('Missing --dealerEmail. This script requires an existing dealer user email.'); - } - console.log(`[STEP 0] Logging in as Dealer: ${EMAILS.DEALER}...`); - const dealerToken = await login(EMAILS.DEALER); + const adminTokenEarly = await login(EMAILS.DD_ADMIN); + const discovered = await discoverDealer(adminTokenEarly, EMAILS.DEALER); + EMAILS.DEALER = discovered.dealerEmail; + const dealerToken = discovered.dealerToken; + + console.log(`[STEP 0] Logged in as Dealer: ${EMAILS.DEALER}.`); let requestId = args.requestId; if (!requestId) { @@ -95,19 +139,7 @@ async function run() { console.log(`[STEP 1] Resuming request: ${requestId}`); } - // Sequence of users taking actions to advance stages - const approvalSequence = [ - { name: 'ASM', email: EMAILS.ASM }, - { name: 'ZM/RBM', email: EMAILS.RBM_L1 }, - { name: 'ZBH', email: EMAILS.ZBH }, - { name: 'DD Lead', email: EMAILS.DD_LEAD }, - { name: 'DD Head', email: EMAILS.DD_HEAD }, - { name: 'NBH', email: EMAILS.NBH }, - { name: 'Legal Review', email: EMAILS.LEGAL }, - { name: 'Legal Finalize', email: EMAILS.LEGAL } - ]; - - const adminToken = await login(EMAILS.DD_ADMIN); + const adminToken = adminTokenEarly; const asmFromMapping = args.asmEmail || await resolveDealerAsmEmail(adminToken, EMAILS.DEALER); if (asmFromMapping) { EMAILS.ASM = asmFromMapping; @@ -115,15 +147,44 @@ async function run() { } else { console.log(`[WARN] Dealer-level ASM not found. Falling back to default ASM email: ${EMAILS.ASM}`); } - const current = await apiRequest(`/self-service/constitutional/${requestId}`, 'GET', null, adminToken); - const currentStage = current?.request?.currentStage; - const stageOrder = ['Submitted', 'ASM Review', 'ZM/RBM Review', 'ZBH Review', 'DD Lead Review', 'DD Head Review', 'NBH Approval', 'Legal Review', 'Completed']; - const startIndex = Math.max(0, stageOrder.indexOf(currentStage)); - let currentStep = 2 + startIndex; - for (let i = startIndex; i < approvalSequence.length; i++) { - const actor = approvalSequence[i]; - console.log(`[STEP ${currentStep}] ${actor.name} (${actor.email}) processing approval...`); + // Stage → actor mapping mirrors constitutional.controller.ts stageRoleMap. + // Driving the loop off the live currentStage (not a pre-computed index) keeps + // the script self-healing if the workflow shape ever changes. + const ACTOR_BY_STAGE = { + 'ASM Review': { name: 'ASM', email: EMAILS.ASM }, + 'ZM/RBM Review': { name: 'ZM/RBM', email: EMAILS.RBM_L1 }, + 'ZBH Review': { name: 'ZBH', email: EMAILS.ZBH }, + 'DD Lead Review': { name: 'DD Lead', email: EMAILS.DD_LEAD }, + 'DD Head Review': { name: 'DD Head', email: EMAILS.DD_HEAD }, + 'NBH Approval': { name: 'NBH', email: EMAILS.NBH }, + 'Legal Review': { name: 'Legal', email: EMAILS.LEGAL } + }; + + let currentStep = 2; + const MAX_ITER = 12; // safety cap + for (let i = 0; i < MAX_ITER; i++) { + const detailsRes = await apiRequest(`/self-service/constitutional/${requestId}`, 'GET', null, adminToken); + const stage = detailsRes?.request?.currentStage; + const status = detailsRes?.request?.status; + + if (stage === 'Completed' || status === 'Completed') { + console.log(`[STEP ${currentStep}] SUCCESS: Request reached COMPLETED state.`); + break; + } + if (stage === 'Rejected' || status === 'Rejected' || stage === 'Revoked' || status === 'Revoked') { + throw new Error(`Constitutional change ended in ${stage || status} state before completion.`); + } + + const actor = ACTOR_BY_STAGE[stage]; + if (!actor) { + throw new Error(`No actor mapping found for stage: ${stage}`); + } + if (!actor.email) { + throw new Error(`Missing approver email for stage ${stage} (actor ${actor.name}).`); + } + + console.log(`[STEP ${currentStep}] ${actor.name} (${actor.email}) processing ${stage}...`); const token = await login(actor.email); const res = await apiRequest(`/self-service/constitutional/${requestId}/action`, 'POST', { action: 'Approve', @@ -136,7 +197,7 @@ async function run() { console.log('[FINAL STEP] Verifying Completion Status...'); const finalDetails = await apiRequest(`/self-service/constitutional/${requestId}`, 'GET', null, adminToken); - + if (finalDetails.request.status === 'Completed' || finalDetails.request.currentStage === 'Completed') { console.log(`[STEP ${currentStep}] SUCCESS: Request reached COMPLETED state.`); } else { diff --git a/trigger-resignation.js b/trigger-resignation.js index 607782b..53e4ac9 100644 --- a/trigger-resignation.js +++ b/trigger-resignation.js @@ -4,6 +4,7 @@ const args = Object.fromEntries( .map(([k, v]) => [k, v ?? 'true']) ); const BASE_URL = args.baseUrl || process.env.BASE_URL || 'http://localhost:5000/api'; +// const BASE_URL = 'https://dealeronboarding-uat.royalenfield.com/api'; const PASSWORD = 'Admin@123'; const STEP_DELAY_MS = Number(args.delayMs || 500); const SHOULD_SKIP_CLEARANCES = String(args.skipClearances || 'false') === 'true'; diff --git a/trigger-termination.js b/trigger-termination.js index 879abbd..96e1582 100644 --- a/trigger-termination.js +++ b/trigger-termination.js @@ -312,18 +312,23 @@ async function run() { if (!terminationId) { log(1, 'Creating termination (ASM)...'); const asmToken = await login(EMAILS.ASM); - const createRes = await apiRequest( - '/termination', - 'POST', - { - dealerId: targetDealer.id, - category: args.category || 'Performance', - reason: args.reason || 'Consistently failed to meet commitment targets.', - proposedLwd: new Date().toISOString().split('T')[0], - comments: 'E2E termination — follows UI stage order (no stacked partial approvals).' - }, - asmToken - ); + + // Backend (termination.controller.ts) requires at least one .ppt/.pptx + // file for non-Super-Admin initiators, sent as multipart "files". + const form = new FormData(); + form.append('dealerId', targetDealer.id); + form.append('category', args.category || 'Performance'); + form.append('reason', args.reason || 'Consistently failed to meet commitment targets.'); + form.append('proposedLwd', new Date().toISOString().split('T')[0]); + form.append('comments', 'E2E termination — follows UI stage order (no stacked partial approvals).'); + + const dummyPptxBytes = Buffer.from('E2E placeholder presentation'); + const dummyPptxBlob = new Blob([dummyPptxBytes], { + type: 'application/vnd.openxmlformats-officedocument.presentationml.presentation' + }); + form.append('files', dummyPptxBlob, 'e2e-termination-presentation.pptx'); + + const createRes = await apiRequest('/termination', 'POST', form, asmToken, true); terminationId = createRes.termination.id; log(1, `Created: ${terminationId} (${args.category || 'Performance'})`); } else { diff --git a/trigger-workflow.js b/trigger-workflow.js index ba8b7c5..b07e565 100644 --- a/trigger-workflow.js +++ b/trigger-workflow.js @@ -10,6 +10,7 @@ const args = Object.fromEntries( .map(([k, v]) => [k, v ?? 'true']) ); const BASE_URL = args.baseUrl || process.env.BASE_URL || 'http://localhost:5000/api'; +// const BASE_URL = 'https://dealeronboarding-uat.royalenfield.com/api'; const PASSWORD = 'Admin@123'; const OTP = '123456'; const STEP_DELAY_MS = Number(args.delayMs || 1000); @@ -381,204 +382,205 @@ async function triggerWorkflow() { log(7, 'FDD Milestone Complete.'); await delay(); - // log(7.4, 'Uploading mandatory pre-LOI evidence documents (CIBIL / Site / Bank / GST / PAN)...'); - // const preLoiDocs = ['CIBIL Report', 'Proposed Site City Map', 'Bank Statement', 'GST Certificate', 'PAN Card']; - // for (const doc of preLoiDocs) { - // await mockUploadDocument(applicationUUID, adminToken, doc); - // } - // await delay(1000); + log(7.4, 'Uploading mandatory pre-LOI evidence documents (CIBIL / Site / Bank / GST / PAN)...'); + const preLoiDocs = ['CIBIL Report', 'Proposed Site City Map', 'Bank Statement', 'GST Certificate', 'PAN Card']; + for (const doc of preLoiDocs) { + await mockUploadDocument(applicationUUID, adminToken, doc); + } + await delay(1000); - // // 7.5 LOI APPROVAL (multi-approver: DD-Head + NBH) - // log(7.5, 'Requesting LOI and collecting required approvals...'); - // const loiRes = await apiRequest('/loi/request', 'POST', { applicationId: applicationUUID }, adminToken); - // const loiRequestId = loiRes.data.id; - // log(7.5, `LOI Request created (ID: ${loiRequestId})`); + // 7.5 LOI APPROVAL (multi-approver: DD-Head + NBH) + log(7.5, 'Requesting LOI and collecting required approvals...'); + const loiRes = await apiRequest('/loi/request', 'POST', { applicationId: applicationUUID }, adminToken); + const loiRequestId = loiRes.data.id; + log(7.5, `LOI Request created (ID: ${loiRequestId})`); - // // DD-Head Approval - // await apiRequest(`/loi/request/${loiRequestId}/approve`, 'POST', { - // action: 'Approved', - // remarks: 'DD-Head authorization for LOI' - // }, headToken); + // DD-Head Approval + await apiRequest(`/loi/request/${loiRequestId}/approve`, 'POST', { + action: 'Approved', + remarks: 'DD-Head authorization for LOI' + }, headToken); - // // NBH Approval — final approver flips overallStatus to "Security Details" - // // (LOI Approved → moves into the Security Deposit corridor before LOI Issue). - // await apiRequest(`/loi/request/${loiRequestId}/approve`, 'POST', { - // action: 'Approved', - // remarks: 'NBH authorization for LOI' - // }, nbhToken); + // NBH Approval — final approver flips overallStatus to "Security Details" + // (LOI Approved → moves into the Security Deposit corridor before LOI Issue). + await apiRequest(`/loi/request/${loiRequestId}/approve`, 'POST', { + action: 'Approved', + remarks: 'NBH authorization for LOI' + }, nbhToken); - // log(7.5, 'LOI fully approved. Backend transitioned to Security Deposit corridor.'); - // await delay(); + log(7.5, 'LOI fully approved. Backend transitioned to Security Deposit corridor.'); + await delay(); - // // 8. SECURITY DEPOSIT — Finance verifies advance payment. - // // Backend keeps app at "Security Details" (no auto-jump to LOI Issued) — admin must - // // (a) upload LOI documents and (b) explicitly transition. See loa.controller.ts. - // log(8, 'Finance Verifying SECURITY_DEPOSIT (₹5L advance)...'); - // const financeToken = await login(EMAILS.FINANCE); - // await apiRequest('/loa/security-deposit', 'POST', { - // applicationId: applicationUUID, - // amount: 500000, - // paymentReference: `PAY-SD-${Date.now()}`, - // depositType: 'SECURITY_DEPOSIT', - // status: 'Verified' - // }, financeToken); - // log(8, 'Security Deposit Verified.'); - // await delay(); + // 8. SECURITY DEPOSIT — Finance verifies advance payment. + // Backend keeps app at "Security Details" (no auto-jump to LOI Issued) — admin must + // (a) upload LOI documents and (b) explicitly transition. See loa.controller.ts. + log(8, 'Finance Verifying SECURITY_DEPOSIT (₹5L advance)...'); + const financeToken = await login(EMAILS.FINANCE); + await apiRequest('/loa/security-deposit', 'POST', { + applicationId: applicationUUID, + amount: 500000, + paymentReference: `PAY-SD-${Date.now()}`, + depositType: 'SECURITY_DEPOSIT', + status: 'Verified' + }, financeToken); + log(8, 'Security Deposit Verified.'); + await delay(); - // // 8.5 LOI DOCUMENTS COLLECTION - // // Per business rule (and the new UI "LOI Documents" stage), the dealer-side LOI artefacts - // // must be uploaded BEFORE the admin transitions the application to "LOI Issued". - // log(8.5, 'Uploading LOI Documents (Letter of Intent + Signed LOI) prior to LOI Issuance...'); - // const loiDocs = ['Letter of Intent', 'Signed LOI']; - // for (const doc of loiDocs) { - // await mockUploadDocument(applicationUUID, adminToken, doc); - // } - // log(8.5, 'LOI Documents uploaded. Ready for LOI Issued transition.'); - // await delay(); + // 8.5 LOI DOCUMENTS COLLECTION + // Per business rule (and the new UI "LOI Documents" stage), the dealer-side LOI artefacts + // must be uploaded BEFORE the admin transitions the application to "LOI Issued". + log(8.5, 'Uploading LOI Documents (Letter of Intent + Signed LOI) prior to LOI Issuance...'); + const loiDocs = ['Letter of Intent', 'Signed LOI']; + for (const doc of loiDocs) { + await mockUploadDocument(applicationUUID, adminToken, doc); + } + log(8.5, 'LOI Documents uploaded. Ready for LOI Issued transition.'); + await delay(); - // // 9. LOI ISSUE — explicit admin transition + LOI document generation. - // let statusBeforeCodeGen = await getApplicationStatus(applicationUUID, adminToken); - // log(9, `Current status before LOI Issued transition: ${statusBeforeCodeGen}`); + // 9. LOI ISSUE — explicit admin transition + LOI document generation. + let statusBeforeCodeGen = await getApplicationStatus(applicationUUID, adminToken); + log(9, `Current status before LOI Issued transition: ${statusBeforeCodeGen}`); - // log(9, 'Ensuring mandatory PAN/GST/Bank fields are populated...'); - // await ensureMandatoryCodeGenFields(applicationUUID, adminToken); - // await delay(300); + log(9, 'Ensuring mandatory PAN/GST/Bank fields are populated...'); + await ensureMandatoryCodeGenFields(applicationUUID, adminToken); + await delay(300); - // if (statusBeforeCodeGen === 'Security Deposit' || statusBeforeCodeGen === 'Security Details') { - // log(9, 'Applying admin transition: Security Deposit -> LOI Issued...'); - // await apiRequest(`/onboarding/applications/${applicationUUID}/status`, 'PUT', { - // status: 'LOI Issued', - // stage: 'LOI', - // reason: 'LOI documents collected and verified. Releasing LOI Issued milestone.' - // }, adminToken); - // await delay(); - // statusBeforeCodeGen = await getApplicationStatus(applicationUUID, adminToken); - // log(9, `Status after admin transition: ${statusBeforeCodeGen}`); - // } + if (statusBeforeCodeGen === 'Security Deposit' || statusBeforeCodeGen === 'Security Details') { + log(9, 'Applying admin transition: Security Deposit -> LOI Issued...'); + await apiRequest(`/onboarding/applications/${applicationUUID}/status`, 'PUT', { + status: 'LOI Issued', + stage: 'LOI', + reason: 'LOI documents collected and verified. Releasing LOI Issued milestone.' + }, adminToken); + await delay(); + statusBeforeCodeGen = await getApplicationStatus(applicationUUID, adminToken); + log(9, `Status after admin transition: ${statusBeforeCodeGen}`); + } - // // generateDocument bridges LOI Issued -> Dealer Code Generation (loi.controller.ts:459). - // log(9, 'Generating final LOI document (bridges to Dealer Code Generation)...'); - // await apiRequest('/loi/generate-document', 'POST', { requestId: loiRequestId }, adminToken); - // await delay(); - // statusBeforeCodeGen = await getApplicationStatus(applicationUUID, adminToken); - // log(9, `Status after LOI generateDocument: ${statusBeforeCodeGen}`); + // generateDocument bridges LOI Issued -> Dealer Code Generation (loi.controller.ts:459). + // Route is POST /loi/request/:requestId/generate — requestId goes in the URL, not the body. + log(9, 'Generating final LOI document (bridges to Dealer Code Generation)...'); + await apiRequest(`/loi/request/${loiRequestId}/generate`, 'POST', {}, adminToken); + await delay(); + statusBeforeCodeGen = await getApplicationStatus(applicationUUID, adminToken); + log(9, `Status after LOI generateDocument: ${statusBeforeCodeGen}`); - // if (statusBeforeCodeGen !== 'LOI Issued' && statusBeforeCodeGen !== 'Dealer Code Generation') { - // throw new Error(`Cannot generate codes: expected LOI Issued/Dealer Code Generation, got ${statusBeforeCodeGen}`); - // } + if (statusBeforeCodeGen !== 'LOI Issued' && statusBeforeCodeGen !== 'Dealer Code Generation') { + throw new Error(`Cannot generate codes: expected LOI Issued/Dealer Code Generation, got ${statusBeforeCodeGen}`); + } - // log(9, 'Admin Generating SAP Dealer Codes...'); - // await apiRequest(`/onboarding/applications/${applicationUUID}/generate-codes`, 'POST', {}, adminToken); - // log(9, 'Dealer Codes Generated.'); - // await delay(); + log(9, 'Admin Generating SAP Dealer Codes...'); + await apiRequest(`/onboarding/applications/${applicationUUID}/generate-codes`, 'POST', {}, adminToken); + log(9, 'Dealer Codes Generated.'); + await delay(); - // // 10. FIRST FILL (POST CODE-GENERATION) - // log(10, 'Finance Verifying FIRST FILL (₹15L)...'); - // await apiRequest('/loa/security-deposit', 'POST', { - // applicationId: applicationUUID, - // amount: 1500000, - // paymentReference: `PAY-FF-${Date.now()}`, - // depositType: 'FIRST_FILL', - // status: 'Verified' - // }, financeToken); - // log(10, 'First Fill Verified.'); - // await delay(); + // 10. FIRST FILL (POST CODE-GENERATION) + log(10, 'Finance Verifying FIRST FILL (₹15L)...'); + await apiRequest('/loa/security-deposit', 'POST', { + applicationId: applicationUUID, + amount: 1500000, + paymentReference: `PAY-FF-${Date.now()}`, + depositType: 'FIRST_FILL', + status: 'Verified' + }, financeToken); + log(10, 'First Fill Verified.'); + await delay(); - // // 11. ADMIN UPDATING STATUTORY & BANK DETAILS - // log(11, 'Admin Updating Statutory & Bank Details for LOA Approval Gate...'); - // await apiRequest(`/onboarding/applications/${applicationUUID}`, 'PUT', { - // accountHolderName: 'Ramesh Automobiles Private Limited', - // panNumber: 'ABCDE1234F', - // gstNumber: '07ABCDE1234F1Z5', - // bankName: 'HDFC Bank', - // accountNumber: '50100223344556', - // ifscCode: 'HDFC0001234' - // }, adminToken); - // log(11, 'Statutory & Bank details updated.'); - // await delay(); + // 11. ADMIN UPDATING STATUTORY & BANK DETAILS + log(11, 'Admin Updating Statutory & Bank Details for LOA Approval Gate...'); + await apiRequest(`/onboarding/applications/${applicationUUID}`, 'PUT', { + accountHolderName: 'Ramesh Automobiles Private Limited', + panNumber: 'ABCDE1234F', + gstNumber: '07ABCDE1234F1Z5', + bankName: 'HDFC Bank', + accountNumber: '50100223344556', + ifscCode: 'HDFC0001234' + }, adminToken); + log(11, 'Statutory & Bank details updated.'); + await delay(); - // // 12. FINAL LOA APPROVAL - // log(12, 'NBH & Head Approving Final LOA...'); - // const loaRes = await apiRequest('/loa/request', 'POST', { applicationId: applicationUUID }, headToken); - // const finalLoaRequestId = loaRes.data.id; + // 12. FINAL LOA APPROVAL + log(12, 'NBH & Head Approving Final LOA...'); + const loaRes = await apiRequest('/loa/request', 'POST', { applicationId: applicationUUID }, headToken); + const finalLoaRequestId = loaRes.data.id; - // await apiRequest(`/loa/request/${finalLoaRequestId}/approve`, 'POST', { - // action: 'Approved', - // remarks: 'Head Authorization (Level 1)' - // }, headToken); + await apiRequest(`/loa/request/${finalLoaRequestId}/approve`, 'POST', { + action: 'Approved', + remarks: 'Head Authorization (Level 1)' + }, headToken); - // await apiRequest(`/loa/request/${finalLoaRequestId}/approve`, 'POST', { - // action: 'Approved', - // remarks: 'NBH Approval (Level 2)' - // }, nbhToken); - // log(12, 'LOA Fully Approved.'); - // await delay(); + await apiRequest(`/loa/request/${finalLoaRequestId}/approve`, 'POST', { + action: 'Approved', + remarks: 'NBH Approval (Level 2)' + }, nbhToken); + log(12, 'LOA Fully Approved.'); + await delay(); - // // 13. EOR (EVIDENCE OF READINESS) CHECKLIST VERIFICATION - // log(13, 'Admin Initializing EOR Checklist (100% Readiness Requirement)...'); - // const eorInit = await apiRequest('/eor', 'POST', { applicationId: applicationUUID }, adminToken); - // const checklistId = eorInit.data.id; - // log(13, `EOR Checklist Created (ID: ${checklistId})`); + // 13. EOR (EVIDENCE OF READINESS) CHECKLIST VERIFICATION + log(13, 'Admin Initializing EOR Checklist (100% Readiness Requirement)...'); + const eorInit = await apiRequest('/eor', 'POST', { applicationId: applicationUUID }, adminToken); + const checklistId = eorInit.data.id; + log(13, `EOR Checklist Created (ID: ${checklistId})`); - // log(13.1, 'Auditor Verifying all 12 mandatory EOR items as COMPLIANT...'); - // const eorItems = [ - // { itemType: 'Sales', description: 'Sales Standards' }, - // { itemType: 'Service', description: 'Service & Spares' }, - // { itemType: 'IT', description: 'DMS infra' }, - // { itemType: 'Training', description: 'Manpower Training' }, - // { itemType: 'Statutory', description: 'Trade certificate with test ride bikes registration' }, - // { itemType: 'Statutory', description: 'GST certificate including Accessories & Apparels billing' }, - // { itemType: 'Finance', description: 'Inventory Funding' }, - // { itemType: 'IT', description: 'Virtual code availability' }, - // { itemType: 'Finance', description: 'Vendor payments' }, - // { itemType: 'Marketing', description: 'Details for website submission' }, - // { itemType: 'Insurance', description: 'Infra Insurance both Showroom and Service center' }, - // { itemType: 'IT', description: 'Auto ordering' } - // ]; + log(13.1, 'Auditor Verifying all 12 mandatory EOR items as COMPLIANT...'); + const eorItems = [ + { itemType: 'Sales', description: 'Sales Standards' }, + { itemType: 'Service', description: 'Service & Spares' }, + { itemType: 'IT', description: 'DMS infra' }, + { itemType: 'Training', description: 'Manpower Training' }, + { itemType: 'Statutory', description: 'Trade certificate with test ride bikes registration' }, + { itemType: 'Statutory', description: 'GST certificate including Accessories & Apparels billing' }, + { itemType: 'Finance', description: 'Inventory Funding' }, + { itemType: 'IT', description: 'Virtual code availability' }, + { itemType: 'Finance', description: 'Vendor payments' }, + { itemType: 'Marketing', description: 'Details for website submission' }, + { itemType: 'Insurance', description: 'Infra Insurance both Showroom and Service center' }, + { itemType: 'IT', description: 'Auto ordering' } + ]; - // for (const item of eorItems) { - // process.stdout.write(`.`); - // await apiRequest(`/eor/item/${checklistId}`, 'POST', { - // ...item, - // isCompliant: true, - // remarks: 'Verified by Auditor - Compliant' - // }, adminToken); - // } - // console.log('\n[STEP 13.1] All EOR items marked as compliant.'); + for (const item of eorItems) { + process.stdout.write(`.`); + await apiRequest(`/eor/item/${checklistId}`, 'POST', { + ...item, + isCompliant: true, + remarks: 'Verified by Auditor - Compliant' + }, adminToken); + } + console.log('\n[STEP 13.1] All EOR items marked as compliant.'); - // log(13.2, 'Auditor Submitting Final EOR Audit...'); - // await apiRequest(`/eor/audit/${checklistId}`, 'POST', { - // status: 'Completed', - // overallComments: 'Dealer is 100% ready for inauguration. All infra and statutory items verified.' - // }, adminToken); + log(13.2, 'Auditor Submitting Final EOR Audit...'); + await apiRequest(`/eor/audit/${checklistId}`, 'POST', { + status: 'Completed', + overallComments: 'Dealer is 100% ready for inauguration. All infra and statutory items verified.' + }, adminToken); - // const finalAppStatus = await apiRequest(`/onboarding/applications/${applicationUUID}`, 'GET', null, adminToken); - // log(13.2, `Application Status after EOR: ${finalAppStatus.data.overallStatus}`); - // await delay(); + const finalAppStatus = await apiRequest(`/onboarding/applications/${applicationUUID}`, 'GET', null, adminToken); + log(13.2, `Application Status after EOR: ${finalAppStatus.data.overallStatus}`); + await delay(); - // // 14. FINAL ONBOARDING - // log(14, 'Admin Finalizing Dealer Onboarding...'); - // await apiRequest('/dealers', 'POST', { applicationId: applicationUUID }, adminToken); - // await delay(); + // 14. FINAL ONBOARDING + log(14, 'Admin Finalizing Dealer Onboarding...'); + await apiRequest('/dealers', 'POST', { applicationId: applicationUUID }, adminToken); + await delay(); - // // 15. VERIFICATION - // log(15, 'Verifying Dealer Record Creation...'); - // const dealerRes = await apiRequest(`/dealers/application/${applicationUUID}`, 'GET', null, adminToken); - // if (!dealerRes.success || !dealerRes.data) { - // throw new Error('Verification Failed: Dealer record not found after onboarding.'); - // } - // log(15, `Dealer Found: ${dealerRes.data.legalName} (${dealerRes.data.id})`); + // 15. VERIFICATION + log(15, 'Verifying Dealer Record Creation...'); + const dealerRes = await apiRequest(`/dealers/application/${applicationUUID}`, 'GET', null, adminToken); + if (!dealerRes.success || !dealerRes.data) { + throw new Error('Verification Failed: Dealer record not found after onboarding.'); + } + log(15, `Dealer Found: ${dealerRes.data.legalName} (${dealerRes.data.id})`); - // log(15.1, 'Verifying User Account Role Update...'); - // const userRes = await apiRequest(`/admin/users`, 'GET', null, adminToken); - // const dealerUser = userRes.data.find(u => u.email === PROSPECT_EMAIL); - // if (!dealerUser || dealerUser.roleCode !== 'Dealer') { - // throw new Error(`Verification Failed: User role not updated to 'Dealer'. Current role: ${dealerUser?.roleCode}`); - // } - // log(15.1, `User role confirmed: ${dealerUser.roleCode}`); + log(15.1, 'Verifying User Account Role Update...'); + const userRes = await apiRequest(`/admin/users`, 'GET', null, adminToken); + const dealerUser = userRes.data.find(u => u.email === PROSPECT_EMAIL); + if (!dealerUser || dealerUser.roleCode !== 'Dealer') { + throw new Error(`Verification Failed: User role not updated to 'Dealer'. Current role: ${dealerUser?.roleCode}`); + } + log(15.1, `User role confirmed: ${dealerUser.roleCode}`); - // log(15.2, '--- WORKFLOW COMPLETED SUCCESSFULLY! ---'); - // log(15.2, `The application ${applicationId} is now at 'ONBOARDED' status and Dealer profile is active.`); + log(15.2, '--- WORKFLOW COMPLETED SUCCESSFULLY! ---'); + log(15.2, `The application ${applicationId} is now at 'ONBOARDED' status and Dealer profile is active.`); } /**