From e24def54a9d88360b7cc5dbb0426e94eb64ded5c Mon Sep 17 00:00:00 2001 From: Sandra Kuipers Date: Sun, 3 Nov 2024 13:00:17 +0800 Subject: [PATCH] System: fix password validation check, improve the password policy and add a strength checker --- CHANGELOG.txt | 1 + installer/install.php | 2 +- modules/User Admin/user_manage_add.php | 7 +-- modules/User Admin/user_manage_password.php | 10 +--- passwordReset.php | 6 +-- preferences.php | 8 +-- resources/assets/css/core.min.css | 2 +- resources/assets/js/core.js | 2 + resources/assets/js/core.min.js | 2 +- resources/templates/index.twig.html | 2 +- resources/templates/navigation.twig.html | 2 + src/Data/PasswordPolicy.php | 41 ++++++++++++-- src/Forms/Input/Password.php | 41 ++++---------- src/Forms/Input/Password.template.php | 47 ++++++++++++++-- src/Install/Http/InstallController.php | 59 +++++++-------------- src/Install/Installer.php | 34 ------------ 16 files changed, 122 insertions(+), 144 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 468dea620b..50014ce247 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -39,6 +39,7 @@ v28.0.00 System: updated Core modules to have Gibbon Foundation as author System: updates the timetable navigation to use AJAX reloading rather than page refresh System: moved the login form to the bottom of the page when viewing subpages and not logged in + System: added a password strength checker and improved password policy display Attendance: added an index to the attendance log to help speed up attendance pages Attendance: added an indicator to Student Not Present/Onsite when attendance logs conflict Activities: updated Activity Attendance to always count participants for dates in the past diff --git a/installer/install.php b/installer/install.php index dd00f72596..b52c270f2d 100644 --- a/installer/install.php +++ b/installer/install.php @@ -210,7 +210,7 @@ 'gibbonThemeName' => 'Default', 'absolutePath' => realpath(dirname(__DIR__)), 'absoluteURL' => InstallController::guessAbsoluteUrl(), - 'sidebar' => true, + 'sidebar' => false, 'contentClass' => 'max-w-4xl mx-auto px-12 pt-6 pb-12', 'step' => $step, ]); diff --git a/modules/User Admin/user_manage_add.php b/modules/User Admin/user_manage_add.php index 5b7f0738ed..e11ca3f38c 100644 --- a/modules/User Admin/user_manage_add.php +++ b/modules/User Admin/user_manage_add.php @@ -146,15 +146,10 @@ ->required() ->addGenerateUsernameButton($form); - /** @var PasswordPolicy */ - $policies = $container->get(PasswordPolicy::class); - if (($policiesHTML = $policies->describeHTML()) !== '') { - $form->addRow()->addAlert($policiesHTML, 'warning'); - } $row = $form->addRow(); $row->addLabel('passwordNew', __('Password')); $row->addPassword('passwordNew') - ->addPasswordPolicy($pdo) + ->addPasswordPolicy($container->get(PasswordPolicy::class)) ->addGeneratePasswordButton($form) ->required() ->maxLength(30); diff --git a/modules/User Admin/user_manage_password.php b/modules/User Admin/user_manage_password.php index dea9fcedaf..8165eaf7de 100644 --- a/modules/User Admin/user_manage_password.php +++ b/modules/User Admin/user_manage_password.php @@ -68,14 +68,6 @@ $page->navigator->addSearchResultsAction(Url::fromModuleRoute('User Admin', 'user_manage.php')->withQueryParam('search', $search)); } - /** @var PasswordPolicy */ - $policies = $container->get(PasswordPolicy::class); - if (($policiesHTML = $policies->describeHTML()) !== '') { - echo "
"; - echo $policiesHTML; - echo '
'; - } - $form = Form::create('resetUserPassword', $session->get('absoluteURL').'/modules/'.$session->get('module').'/user_manage_passwordProcess.php?gibbonPersonID='.$gibbonPersonID.'&search='.$search); $form->addHiddenValue('address', $session->get('address')); @@ -87,7 +79,7 @@ $row = $form->addRow(); $row->addLabel('passwordNew', __('Password')); $row->addPassword('passwordNew') - ->addPasswordPolicy($pdo) + ->addPasswordPolicy($container->get(PasswordPolicy::class)) ->addGeneratePasswordButton($form) ->required() ->maxLength(30); diff --git a/passwordReset.php b/passwordReset.php index b900699add..f7ffbb7551 100644 --- a/passwordReset.php +++ b/passwordReset.php @@ -93,15 +93,15 @@ $form->addRow()->addHeading('Reset Password', __('Reset Password')); /** @var PasswordPolicy */ - $policies = $container->get(PasswordPolicy::class); - if (($policiesHTML = $policies->describeHTML()) !== '') { + $passwordPolicy = $container->get(PasswordPolicy::class); + if (($policiesHTML = $passwordPolicy->describeHTML()) !== '') { $form->addRow()->addAlert($policiesHTML, 'warning'); } $row = $form->addRow(); $row->addLabel('passwordNew', __('New Password')); $row->addPassword('passwordNew') - ->addPasswordPolicy($pdo) + ->addPasswordPolicy($passwordPolicy) ->addGeneratePasswordButton($form) ->required() ->maxLength(30); diff --git a/preferences.php b/preferences.php index f8a317fbe6..fe75cba5cf 100644 --- a/preferences.php +++ b/preferences.php @@ -71,12 +71,6 @@ $form->addRow()->addHeading('Reset Password', __('Reset Password')); - /** @var PasswordPolicy */ - $policies = $container->get(PasswordPolicy::class); - if (($policiesHTML = $policies->describeHTML()) !== '') { - $form->addRow()->addAlert($policiesHTML, 'warning'); - } - $row = $form->addRow(); $row->addLabel('password', __('Current Password')); $row->addPassword('password') @@ -86,7 +80,7 @@ $row = $form->addRow(); $row->addLabel('passwordNew', __('New Password')); $row->addPassword('passwordNew') - ->addPasswordPolicy($pdo) + ->addPasswordPolicy($container->get(PasswordPolicy::class)) ->addGeneratePasswordButton($form) ->required() ->maxLength(30); diff --git a/resources/assets/css/core.min.css b/resources/assets/css/core.min.css index fd080de4f7..6a62192d6e 100644 --- a/resources/assets/css/core.min.css +++ b/resources/assets/css/core.min.css @@ -1 +1 @@ -.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.\!static{position:static!important}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-bottom-px{bottom:-1px}.-left-8{left:-2rem}.bottom-0{bottom:0}.bottom-5{bottom:1.25rem}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:.5rem}.right-0{right:0}.right-0\.5{right:.125rem}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-span-1{grid-column:span 1/span 1}.col-span-10{grid-column:span 10/span 10}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-6{grid-column:span 6/span 6}.col-span-8{grid-column:span 8/span 8}.row-span-1{grid-row:span 1/span 1}.row-span-2{grid-row:span 2/span 2}.row-span-3{grid-row:span 3/span 3}.row-span-4{grid-row:span 4/span 4}.row-span-5{grid-row:span 5/span 5}.float-right{float:right}.float-left{float:left}.float-none{float:none}.-m-2{margin:-.5rem}.-m-4{margin:-1rem}.m-0{margin:0}.m-0\.5{margin:.125rem}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:.75rem}.m-4{margin:1rem}.m-auto{margin:auto}.m-px{margin:1px}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-3{margin-left:-.75rem;margin-right:-.75rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-px{margin-left:-1px;margin-right:-1px}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.-my-2{margin-bottom:-.5rem;margin-top:-.5rem}.-my-6{margin-bottom:-1.5rem;margin-top:-1.5rem}.-my-px{margin-bottom:-1px;margin-top:-1px}.mx-0{margin-left:0;margin-right:0}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-5{margin-left:1.25rem;margin-right:1.25rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-bottom:0;margin-top:0}.my-1{margin-bottom:.25rem;margin-top:.25rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-20{margin-bottom:5rem;margin-top:5rem}.my-3{margin-bottom:.75rem;margin-top:.75rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-6{margin-bottom:1.5rem;margin-top:1.5rem}.my-8{margin-bottom:2rem;margin-top:2rem}.-mb-0\.5{margin-bottom:-.125rem}.-mb-1{margin-bottom:-.25rem}.-mb-2{margin-bottom:-.5rem}.-mb-3{margin-bottom:-.75rem}.-mb-4{margin-bottom:-1rem}.-mb-px{margin-bottom:-1px}.-ml-1{margin-left:-.25rem}.-ml-1\.5{margin-left:-.375rem}.-ml-2{margin-left:-.5rem}.-ml-3{margin-left:-.75rem}.-ml-4{margin-left:-1rem}.-ml-6{margin-left:-1.5rem}.-ml-px{margin-left:-1px}.-mr-1{margin-right:-.25rem}.-mr-1\.5{margin-right:-.375rem}.-mr-2{margin-right:-.5rem}.-mr-3{margin-right:-.75rem}.-mr-4{margin-right:-1rem}.-mr-5{margin-right:-1.25rem}.-mr-px{margin-right:-1px}.-mt-1{margin-top:-.25rem}.-mt-1\.5{margin-top:-.375rem}.-mt-10{margin-top:-2.5rem}.-mt-2{margin-top:-.5rem}.-mt-3{margin-top:-.75rem}.-mt-4{margin-top:-1rem}.-mt-48{margin-top:-12rem}.-mt-5{margin-top:-1.25rem}.-mt-6{margin-top:-1.5rem}.-mt-8{margin-top:-2rem}.-mt-px{margin-top:-1px}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-24{margin-bottom:6rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-px{margin-bottom:1px}.me-4{margin-inline-end:1rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-2\.5{margin-left:.625rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-56{margin-left:14rem}.ml-6{margin-left:1.5rem}.ml-px{margin-left:1px}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mr-6{margin-right:1.5rem}.mr-8{margin-right:2rem}.ms-4{margin-inline-start:1rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-24{margin-top:6rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-px{margin-top:1px}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-row{display:table-row}.grid{display:grid}.contents{display:contents}.hidden{display:none}.size-10{height:2.5rem;width:2.5rem}.size-3{height:.75rem;width:.75rem}.size-4{height:1rem;width:1rem}.size-5{height:1.25rem;width:1.25rem}.size-6{height:1.5rem;width:1.5rem}.size-7{height:1.75rem;width:1.75rem}.size-8{height:2rem;width:2rem}.size-9{height:2.25rem;width:2.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-56{height:14rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-8{height:2rem}.h-full{height:100%}.h-min{height:-moz-min-content;height:min-content}.h-screen{height:100vh}.max-h-screen{max-height:100vh}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-1\/5{width:20%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-2\/3{width:66.666667%}.w-2\/5{width:40%}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-4\/5{width:80%}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-auto{width:auto}.w-full{width:100%}.min-w-0{min-width:0}.min-w-24{min-width:6rem}.max-w-24{max-width:6rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-none{flex:none}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.origin-bottom-left{transform-origin:bottom left}.origin-top-left{transform-origin:top left}.origin-top-right{transform-origin:top right}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.-translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y:-100%}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.translate-y-4{--tw-translate-y:1rem}.translate-y-4,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-full{--tw-translate-y:100%}.-rotate-45{--tw-rotate:-45deg}.-rotate-45,.-rotate-90{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate:-90deg}.rotate-45{--tw-rotate:45deg}.rotate-45,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-50{--tw-scale-x:.5;--tw-scale-y:.5}.scale-50,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.snap-start{scroll-snap-align:start}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.columns-1{-moz-columns:1;-moz-column-count:1;column-count:1}.columns-2{-moz-columns:2;-moz-column-count:2;column-count:2}.columns-3{-moz-columns:3;-moz-column-count:3;column-count:3}.columns-4{-moz-columns:4;-moz-column-count:4;column-count:4}.columns-auto{-moz-columns:auto;columns:auto}.grid-flow-row{grid-auto-flow:row}.grid-flow-col{grid-auto-flow:column}.auto-rows-fr{grid-auto-rows:minmax(0,1fr)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.content-center{align-content:center}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.self-end{align-self:flex-end}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-y-visible{overflow-y:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-scroll{overflow-y:scroll}.overscroll-contain{overscroll-behavior:contain}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-b{border-bottom-right-radius:.25rem}.rounded-b,.rounded-l{border-bottom-left-radius:.25rem}.rounded-l{border-top-left-radius:.25rem}.rounded-l-md{border-bottom-left-radius:.375rem;border-top-left-radius:.375rem}.rounded-l-none{border-bottom-left-radius:0;border-top-left-radius:0}.rounded-r{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.rounded-r-md{border-bottom-right-radius:.375rem;border-top-right-radius:.375rem}.rounded-r-none{border-bottom-right-radius:0;border-top-right-radius:0}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-md{border-top-left-radius:.375rem;border-top-right-radius:.375rem}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-4{border-width:4px}.border-8{border-width:8px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-l{border-left-width:1px}.border-l-0{border-left-width:0}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-r-0{border-right-width:0}.border-r-8{border-right-width:8px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0}.border-t-2{border-top-width:2px}.border-t-4{border-top-width:4px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-blue-300{border-color:rgb(147 197 253/var(--tw-border-opacity))}.border-blue-300,.border-blue-500{--tw-border-opacity:1}.border-blue-500{border-color:rgb(59 130 246/var(--tw-border-opacity))}.border-blue-600{border-color:rgb(37 99 235/var(--tw-border-opacity))}.border-blue-600,.border-blue-700{--tw-border-opacity:1}.border-blue-700{border-color:rgb(29 78 216/var(--tw-border-opacity))}.border-blue-800{border-color:rgb(30 64 175/var(--tw-border-opacity))}.border-blue-800,.border-fuchsia-300{--tw-border-opacity:1}.border-fuchsia-300{border-color:rgb(240 171 252/var(--tw-border-opacity))}.border-fuchsia-500{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}.border-fuchsia-600{border-color:rgb(192 38 211/var(--tw-border-opacity))}.border-fuchsia-600,.border-gray-200{--tw-border-opacity:1}.border-gray-200{border-color:hsl(220 24% 95%/var(--tw-border-opacity))}.border-gray-300{border-color:hsl(220 18% 92%/var(--tw-border-opacity))}.border-gray-300,.border-gray-400{--tw-border-opacity:1}.border-gray-400{border-color:hsl(220 14% 84%/var(--tw-border-opacity))}.border-gray-500{border-color:hsl(220 10% 69%/var(--tw-border-opacity))}.border-gray-500,.border-gray-600{--tw-border-opacity:1}.border-gray-600{border-color:hsl(220 8% 52%/var(--tw-border-opacity))}.border-gray-700{border-color:hsl(220 8% 38%/var(--tw-border-opacity))}.border-gray-700,.border-gray-800{--tw-border-opacity:1}.border-gray-800{border-color:hsl(220 8% 23%/var(--tw-border-opacity))}.border-gray-900{border-color:hsl(220 8% 16%/var(--tw-border-opacity))}.border-gray-900,.border-green-300{--tw-border-opacity:1}.border-green-300{border-color:rgb(134 239 172/var(--tw-border-opacity))}.border-green-500{border-color:rgb(34 197 94/var(--tw-border-opacity))}.border-green-500,.border-green-600{--tw-border-opacity:1}.border-green-600{border-color:rgb(22 163 74/var(--tw-border-opacity))}.border-green-700{border-color:rgb(21 128 61/var(--tw-border-opacity))}.border-green-700,.border-indigo-300{--tw-border-opacity:1}.border-indigo-300{border-color:rgb(165 180 252/var(--tw-border-opacity))}.border-indigo-500{border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-indigo-500,.border-indigo-600{--tw-border-opacity:1}.border-indigo-600{border-color:rgb(79 70 229/var(--tw-border-opacity))}.border-orange-300{border-color:rgb(253 186 116/var(--tw-border-opacity))}.border-orange-300,.border-orange-500{--tw-border-opacity:1}.border-orange-500{border-color:rgb(249 115 22/var(--tw-border-opacity))}.border-orange-600{border-color:rgb(234 88 12/var(--tw-border-opacity))}.border-orange-600,.border-orange-700{--tw-border-opacity:1}.border-orange-700{border-color:rgb(194 65 12/var(--tw-border-opacity))}.border-pink-300{border-color:rgb(249 168 212/var(--tw-border-opacity))}.border-pink-300,.border-pink-500{--tw-border-opacity:1}.border-pink-500{border-color:rgb(236 72 153/var(--tw-border-opacity))}.border-pink-600{border-color:rgb(219 39 119/var(--tw-border-opacity))}.border-pink-600,.border-purple-300{--tw-border-opacity:1}.border-purple-300{border-color:rgb(196 181 253/var(--tw-border-opacity))}.border-purple-500{border-color:rgb(139 92 246/var(--tw-border-opacity))}.border-purple-500,.border-purple-600{--tw-border-opacity:1}.border-purple-600{border-color:rgb(125 62 234/var(--tw-border-opacity))}.border-purple-700{border-color:rgb(109 48 207/var(--tw-border-opacity))}.border-purple-700,.border-red-300{--tw-border-opacity:1}.border-red-300{border-color:rgb(254 178 178/var(--tw-border-opacity))}.border-red-500{border-color:rgb(245 101 101/var(--tw-border-opacity))}.border-red-500,.border-red-600{--tw-border-opacity:1}.border-red-600{border-color:rgb(229 62 62/var(--tw-border-opacity))}.border-red-700{border-color:rgb(197 48 48/var(--tw-border-opacity))}.border-red-700,.border-red-800{--tw-border-opacity:1}.border-red-800{border-color:rgb(155 44 44/var(--tw-border-opacity))}.border-sky-300{border-color:rgb(125 211 252/var(--tw-border-opacity))}.border-sky-300,.border-sky-500{--tw-border-opacity:1}.border-sky-500{border-color:rgb(14 165 233/var(--tw-border-opacity))}.border-sky-600{border-color:rgb(2 132 199/var(--tw-border-opacity))}.border-sky-600,.border-teal-300{--tw-border-opacity:1}.border-teal-300{border-color:rgb(94 234 212/var(--tw-border-opacity))}.border-teal-500{border-color:rgb(20 184 166/var(--tw-border-opacity))}.border-teal-500,.border-teal-600{--tw-border-opacity:1}.border-teal-600{border-color:rgb(13 148 136/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-white{border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-white,.border-yellow-300{--tw-border-opacity:1}.border-yellow-300{border-color:rgb(252 211 77/var(--tw-border-opacity))}.border-yellow-500{border-color:rgb(245 158 11/var(--tw-border-opacity))}.border-yellow-500,.border-yellow-600{--tw-border-opacity:1}.border-yellow-600{border-color:rgb(217 119 6/var(--tw-border-opacity))}.border-b-gray-400{border-bottom-color:hsl(220 14% 84%/var(--tw-border-opacity))}.border-b-gray-400,.border-b-white{--tw-border-opacity:1}.border-b-white{border-bottom-color:rgb(255 255 255/var(--tw-border-opacity))}.border-t-gray-400{--tw-border-opacity:1;border-top-color:hsl(220 14% 84%/var(--tw-border-opacity))}.bg-black{background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-black,.bg-blue-100{--tw-bg-opacity:1}.bg-blue-100{background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-blue-200{background-color:rgb(191 219 254/var(--tw-bg-opacity))}.bg-blue-200,.bg-blue-300{--tw-bg-opacity:1}.bg-blue-300{background-color:rgb(147 197 253/var(--tw-bg-opacity))}.bg-blue-400{background-color:rgb(96 165 250/var(--tw-bg-opacity))}.bg-blue-400,.bg-blue-50{--tw-bg-opacity:1}.bg-blue-50{background-color:rgb(239 246 255/var(--tw-bg-opacity))}.bg-blue-500{background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-blue-500,.bg-blue-600{--tw-bg-opacity:1}.bg-blue-600{background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-blue-700{background-color:rgb(29 78 216/var(--tw-bg-opacity))}.bg-blue-700,.bg-fuchsia-100{--tw-bg-opacity:1}.bg-fuchsia-100{background-color:rgb(250 232 255/var(--tw-bg-opacity))}.bg-fuchsia-400{background-color:rgb(232 121 249/var(--tw-bg-opacity))}.bg-fuchsia-400,.bg-fuchsia-600{--tw-bg-opacity:1}.bg-fuchsia-600{background-color:rgb(192 38 211/var(--tw-bg-opacity))}.bg-fuchsia-700{background-color:rgb(162 28 175/var(--tw-bg-opacity))}.bg-fuchsia-700,.bg-gray-100{--tw-bg-opacity:1}.bg-gray-100{background-color:hsl(220 24% 98%/var(--tw-bg-opacity))}.bg-gray-150{background-color:hsl(210 24% 97%/var(--tw-bg-opacity))}.bg-gray-150,.bg-gray-200{--tw-bg-opacity:1}.bg-gray-200{background-color:hsl(220 24% 95%/var(--tw-bg-opacity))}.bg-gray-300{background-color:hsl(220 18% 92%/var(--tw-bg-opacity))}.bg-gray-300,.bg-gray-400{--tw-bg-opacity:1}.bg-gray-400{background-color:hsl(220 14% 84%/var(--tw-bg-opacity))}.bg-gray-50{background-color:hsl(220 24% 99%/var(--tw-bg-opacity))}.bg-gray-50,.bg-gray-500{--tw-bg-opacity:1}.bg-gray-500{background-color:hsl(220 10% 69%/var(--tw-bg-opacity))}.bg-gray-600{background-color:hsl(220 8% 52%/var(--tw-bg-opacity))}.bg-gray-600,.bg-gray-800{--tw-bg-opacity:1}.bg-gray-800{background-color:hsl(220 8% 23%/var(--tw-bg-opacity))}.bg-green-100{background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-green-100,.bg-green-200{--tw-bg-opacity:1}.bg-green-200{background-color:rgb(187 247 208/var(--tw-bg-opacity))}.bg-green-400{background-color:rgb(74 222 128/var(--tw-bg-opacity))}.bg-green-400,.bg-green-600{--tw-bg-opacity:1}.bg-green-600{background-color:rgb(22 163 74/var(--tw-bg-opacity))}.bg-green-700{background-color:rgb(21 128 61/var(--tw-bg-opacity))}.bg-green-700,.bg-indigo-100{--tw-bg-opacity:1}.bg-indigo-100{background-color:rgb(224 231 255/var(--tw-bg-opacity))}.bg-indigo-400{background-color:rgb(129 140 248/var(--tw-bg-opacity))}.bg-indigo-400,.bg-indigo-600{--tw-bg-opacity:1}.bg-indigo-600{background-color:rgb(79 70 229/var(--tw-bg-opacity))}.bg-indigo-700{background-color:rgb(67 56 202/var(--tw-bg-opacity))}.bg-indigo-700,.bg-orange-100{--tw-bg-opacity:1}.bg-orange-100{background-color:rgb(255 237 213/var(--tw-bg-opacity))}.bg-orange-200{background-color:rgb(254 215 170/var(--tw-bg-opacity))}.bg-orange-200,.bg-orange-300{--tw-bg-opacity:1}.bg-orange-300{background-color:rgb(253 186 116/var(--tw-bg-opacity))}.bg-orange-400{background-color:rgb(251 146 60/var(--tw-bg-opacity))}.bg-orange-400,.bg-orange-500{--tw-bg-opacity:1}.bg-orange-500{background-color:rgb(249 115 22/var(--tw-bg-opacity))}.bg-orange-600{background-color:rgb(234 88 12/var(--tw-bg-opacity))}.bg-orange-600,.bg-orange-700{--tw-bg-opacity:1}.bg-orange-700{background-color:rgb(194 65 12/var(--tw-bg-opacity))}.bg-pink-100{background-color:rgb(252 231 243/var(--tw-bg-opacity))}.bg-pink-100,.bg-pink-400{--tw-bg-opacity:1}.bg-pink-400{background-color:rgb(244 114 182/var(--tw-bg-opacity))}.bg-pink-500{background-color:rgb(236 72 153/var(--tw-bg-opacity))}.bg-pink-500,.bg-pink-600{--tw-bg-opacity:1}.bg-pink-600{background-color:rgb(219 39 119/var(--tw-bg-opacity))}.bg-pink-700{background-color:rgb(190 24 93/var(--tw-bg-opacity))}.bg-pink-700,.bg-purple-100{--tw-bg-opacity:1}.bg-purple-100{background-color:rgb(237 233 254/var(--tw-bg-opacity))}.bg-purple-200{background-color:rgb(221 214 254/var(--tw-bg-opacity))}.bg-purple-200,.bg-purple-400{--tw-bg-opacity:1}.bg-purple-400{background-color:rgb(167 139 250/var(--tw-bg-opacity))}.bg-purple-500{background-color:rgb(139 92 246/var(--tw-bg-opacity))}.bg-purple-500,.bg-purple-600{--tw-bg-opacity:1}.bg-purple-600{background-color:rgb(125 62 234/var(--tw-bg-opacity))}.bg-purple-700{background-color:rgb(109 48 207/var(--tw-bg-opacity))}.bg-purple-700,.bg-purple-800{--tw-bg-opacity:1}.bg-purple-800{background-color:rgb(93 45 170/var(--tw-bg-opacity))}.bg-red-100{background-color:rgb(255 245 245/var(--tw-bg-opacity))}.bg-red-100,.bg-red-200{--tw-bg-opacity:1}.bg-red-200{background-color:rgb(254 215 215/var(--tw-bg-opacity))}.bg-red-300{background-color:rgb(254 178 178/var(--tw-bg-opacity))}.bg-red-300,.bg-red-400{--tw-bg-opacity:1}.bg-red-400{background-color:rgb(252 129 129/var(--tw-bg-opacity))}.bg-red-500{background-color:rgb(245 101 101/var(--tw-bg-opacity))}.bg-red-500,.bg-red-600{--tw-bg-opacity:1}.bg-red-600{background-color:rgb(229 62 62/var(--tw-bg-opacity))}.bg-red-700{background-color:rgb(197 48 48/var(--tw-bg-opacity))}.bg-red-700,.bg-sky-100{--tw-bg-opacity:1}.bg-sky-100{background-color:rgb(224 242 254/var(--tw-bg-opacity))}.bg-sky-400{background-color:rgb(56 189 248/var(--tw-bg-opacity))}.bg-sky-400,.bg-sky-600{--tw-bg-opacity:1}.bg-sky-600{background-color:rgb(2 132 199/var(--tw-bg-opacity))}.bg-sky-700{background-color:rgb(3 105 161/var(--tw-bg-opacity))}.bg-sky-700,.bg-teal-100{--tw-bg-opacity:1}.bg-teal-100{background-color:rgb(204 251 241/var(--tw-bg-opacity))}.bg-teal-400{background-color:rgb(45 212 191/var(--tw-bg-opacity))}.bg-teal-400,.bg-teal-600{--tw-bg-opacity:1}.bg-teal-600{background-color:rgb(13 148 136/var(--tw-bg-opacity))}.bg-teal-700{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white,.bg-yellow-100{--tw-bg-opacity:1}.bg-yellow-100{background-color:rgb(254 243 199/var(--tw-bg-opacity))}.bg-yellow-200{background-color:rgb(253 230 138/var(--tw-bg-opacity))}.bg-yellow-200,.bg-yellow-400{--tw-bg-opacity:1}.bg-yellow-400{background-color:rgb(251 191 36/var(--tw-bg-opacity))}.bg-yellow-600{background-color:rgb(217 119 6/var(--tw-bg-opacity))}.bg-yellow-600,.bg-yellow-700{--tw-bg-opacity:1}.bg-yellow-700{background-color:rgb(180 83 9/var(--tw-bg-opacity))}.bg-opacity-40{--tw-bg-opacity:0.4}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-opacity-75{--tw-bg-opacity:0.75}.bg-opacity-80{--tw-bg-opacity:0.8}.bg-cover{background-size:cover}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.fill-current{fill:currentColor}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-px{padding:1px}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-px{padding-left:1px;padding-right:1px}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-16{padding-bottom:4rem;padding-top:4rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.py-px{padding-bottom:1px;padding-top:1px}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-24{padding-bottom:6rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pl-1{padding-left:.25rem}.pl-10{padding-left:2.5rem}.pl-12{padding-left:3rem}.pl-2{padding-left:.5rem}.pl-24{padding-left:6rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pr-px{padding-right:1px}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-10{padding-top:2.5rem}.pt-12{padding-top:3rem}.pt-2{padding-top:.5rem}.pt-24{padding-top:6rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.pt-px{padding-top:1px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-text-bottom{vertical-align:text-bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-2xl,.text-2xl\/8{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base,.text-base\/6{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{line-height:1.25rem}.text-sm,.text-sm\/6{font-size:.875rem}.text-sm\/6{line-height:1.5rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{line-height:1rem}.text-xs,.text-xs\/6{font-size:.75rem}.text-xs\/6{line-height:1.5rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.leading-6{line-height:1.5rem}.leading-loose{line-height:2}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.text-black{color:rgb(0 0 0/var(--tw-text-opacity))}.text-black,.text-blue-200{--tw-text-opacity:1}.text-blue-200{color:rgb(191 219 254/var(--tw-text-opacity))}.text-blue-500{color:rgb(59 130 246/var(--tw-text-opacity))}.text-blue-500,.text-blue-600{--tw-text-opacity:1}.text-blue-600{color:rgb(37 99 235/var(--tw-text-opacity))}.text-blue-700{color:rgb(29 78 216/var(--tw-text-opacity))}.text-blue-700,.text-blue-800{--tw-text-opacity:1}.text-blue-800{color:rgb(30 64 175/var(--tw-text-opacity))}.text-fuchsia-200{color:rgb(245 208 254/var(--tw-text-opacity))}.text-fuchsia-200,.text-fuchsia-600{--tw-text-opacity:1}.text-fuchsia-600{color:rgb(192 38 211/var(--tw-text-opacity))}.text-fuchsia-800{color:rgb(134 25 143/var(--tw-text-opacity))}.text-fuchsia-800,.text-gray-100{--tw-text-opacity:1}.text-gray-100{color:hsl(220 24% 98%/var(--tw-text-opacity))}.text-gray-400{color:hsl(220 14% 84%/var(--tw-text-opacity))}.text-gray-400,.text-gray-500{--tw-text-opacity:1}.text-gray-500{color:hsl(220 10% 69%/var(--tw-text-opacity))}.text-gray-600{color:hsl(220 8% 52%/var(--tw-text-opacity))}.text-gray-600,.text-gray-700{--tw-text-opacity:1}.text-gray-700{color:hsl(220 8% 38%/var(--tw-text-opacity))}.text-gray-800{color:hsl(220 8% 23%/var(--tw-text-opacity))}.text-gray-800,.text-gray-900{--tw-text-opacity:1}.text-gray-900{color:hsl(220 8% 16%/var(--tw-text-opacity))}.text-gray-950{color:hsl(220 8% 10%/var(--tw-text-opacity))}.text-gray-950,.text-green-200{--tw-text-opacity:1}.text-green-200{color:rgb(187 247 208/var(--tw-text-opacity))}.text-green-500{color:rgb(34 197 94/var(--tw-text-opacity))}.text-green-500,.text-green-600{--tw-text-opacity:1}.text-green-600{color:rgb(22 163 74/var(--tw-text-opacity))}.text-green-700{color:rgb(21 128 61/var(--tw-text-opacity))}.text-green-700,.text-green-800{--tw-text-opacity:1}.text-green-800{color:rgb(22 101 52/var(--tw-text-opacity))}.text-indigo-200{color:rgb(199 210 254/var(--tw-text-opacity))}.text-indigo-200,.text-indigo-600{--tw-text-opacity:1}.text-indigo-600{color:rgb(79 70 229/var(--tw-text-opacity))}.text-indigo-800{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.text-inherit{color:inherit}.text-orange-200{color:rgb(254 215 170/var(--tw-text-opacity))}.text-orange-200,.text-orange-600{--tw-text-opacity:1}.text-orange-600{color:rgb(234 88 12/var(--tw-text-opacity))}.text-orange-700{color:rgb(194 65 12/var(--tw-text-opacity))}.text-orange-700,.text-orange-800{--tw-text-opacity:1}.text-orange-800{color:rgb(154 52 18/var(--tw-text-opacity))}.text-pink-200{color:rgb(251 207 232/var(--tw-text-opacity))}.text-pink-200,.text-pink-600{--tw-text-opacity:1}.text-pink-600{color:rgb(219 39 119/var(--tw-text-opacity))}.text-pink-800{color:rgb(157 23 77/var(--tw-text-opacity))}.text-pink-800,.text-purple-200{--tw-text-opacity:1}.text-purple-200{color:rgb(221 214 254/var(--tw-text-opacity))}.text-purple-600{color:rgb(125 62 234/var(--tw-text-opacity))}.text-purple-600,.text-purple-700{--tw-text-opacity:1}.text-purple-700{color:rgb(109 48 207/var(--tw-text-opacity))}.text-purple-800{color:rgb(93 45 170/var(--tw-text-opacity))}.text-purple-800,.text-red-200{--tw-text-opacity:1}.text-red-200{color:rgb(254 215 215/var(--tw-text-opacity))}.text-red-500{color:rgb(245 101 101/var(--tw-text-opacity))}.text-red-500,.text-red-600{--tw-text-opacity:1}.text-red-600{color:rgb(229 62 62/var(--tw-text-opacity))}.text-red-700{color:rgb(197 48 48/var(--tw-text-opacity))}.text-red-700,.text-red-800{--tw-text-opacity:1}.text-red-800{color:rgb(155 44 44/var(--tw-text-opacity))}.text-sky-200{color:rgb(186 230 253/var(--tw-text-opacity))}.text-sky-200,.text-sky-600{--tw-text-opacity:1}.text-sky-600{color:rgb(2 132 199/var(--tw-text-opacity))}.text-sky-800{color:rgb(7 89 133/var(--tw-text-opacity))}.text-sky-800,.text-teal-200{--tw-text-opacity:1}.text-teal-200{color:rgb(153 246 228/var(--tw-text-opacity))}.text-teal-600{color:rgb(13 148 136/var(--tw-text-opacity))}.text-teal-600,.text-teal-800{--tw-text-opacity:1}.text-teal-800{color:rgb(17 94 89/var(--tw-text-opacity))}.text-white{color:rgb(255 255 255/var(--tw-text-opacity))}.text-white,.text-yellow-200{--tw-text-opacity:1}.text-yellow-200{color:rgb(253 230 138/var(--tw-text-opacity))}.text-yellow-500{color:rgb(245 158 11/var(--tw-text-opacity))}.text-yellow-500,.text-yellow-600{--tw-text-opacity:1}.text-yellow-600{color:rgb(217 119 6/var(--tw-text-opacity))}.text-yellow-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.text-opacity-50{--tw-text-opacity:0.5}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-inner{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-inset{--tw-ring-inset:inset}.ring-black{--tw-ring-opacity:1;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity))}.ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.ring-blue-700{--tw-ring-opacity:1;--tw-ring-color:rgb(29 78 216/var(--tw-ring-opacity))}.ring-gray-400{--tw-ring-opacity:1;--tw-ring-color:hsl(220 14% 84%/var(--tw-ring-opacity))}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-opacity-25{--tw-ring-opacity:0.25}.ring-opacity-5{--tw-ring-opacity:0.05}.ring-opacity-75{--tw-ring-opacity:0.75}.blur{--tw-blur:blur(8px)}.blur,.drop-shadow-md{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)}.drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px rgba(0,0,0,.07)) drop-shadow(0 2px 2px rgba(0,0,0,.06))}.invert{--tw-invert:invert(100%)}.filter,.invert{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-lg{--tw-backdrop-blur:blur(16px)}.backdrop-blur-lg,.backdrop-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)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.backdrop-contrast-125{--tw-backdrop-contrast:contrast(1.25)}.backdrop-contrast-125,.backdrop-saturate-150{-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-saturate-150{--tw-backdrop-saturate:saturate(1.5)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-75{transition-delay:75ms}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.column-1{-moz-column-count:1;column-count:1}.column-1,.column-2{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-2{-moz-column-count:2;column-count:2}.text-xxs{font-size:.65rem}.\[preferredName\:1\]{preferred-name:1}.column-no-break{-moz-column-break-inside:avoid;-o-column-break-inside:avoid;-ms-column-break-inside:avoid;column-break-inside:avoid;break-inside:avoid;display:table;padding-top:1px;page-break-inside:avoid;width:100%}.bg-transparent-100{background-color:hsla(0,0%,100%,.9)}.bg-transparent-300{background-color:rgba(50,50,50,.1)}.bg-transparent-600{background-color:rgba(50,50,50,.6)}.bg-transparent-900{background-color:rgba(50,50,50,.95)}.min-h-1\/2{min-height:50vh}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:hsl(220 10% 69%/var(--tw-text-opacity))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity:1;color:hsl(220 10% 69%/var(--tw-text-opacity))}.placeholder\:text-white::-moz-placeholder{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.placeholder\:text-white::placeholder{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.placeholder\:text-opacity-60::-moz-placeholder{--tw-text-opacity:0.6}.placeholder\:text-opacity-60::placeholder{--tw-text-opacity:0.6}.focus-within\:border-t-blue-500:focus-within{--tw-border-opacity:1;border-top-color:rgb(59 130 246/var(--tw-border-opacity))}.hover\:-translate-y-1:hover{--tw-translate-y:-0.25rem}.hover\:-translate-y-1:hover,.hover\:scale-105:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}.hover\:border-blue-500:hover{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.hover\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}.hover\:border-blue-700:hover{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.hover\:border-fuchsia-600:hover{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}.hover\:border-gray-500:hover{--tw-border-opacity:1;border-color:hsl(220 10% 69%/var(--tw-border-opacity))}.hover\:border-gray-700:hover{--tw-border-opacity:1;border-color:hsl(220 8% 38%/var(--tw-border-opacity))}.hover\:border-green-500:hover{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.hover\:border-green-600:hover{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.hover\:border-indigo-600:hover{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.hover\:border-orange-600:hover{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.hover\:border-pink-600:hover{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}.hover\:border-purple-600:hover{--tw-border-opacity:1;border-color:rgb(125 62 234/var(--tw-border-opacity))}.hover\:border-purple-800:hover{--tw-border-opacity:1;border-color:rgb(93 45 170/var(--tw-border-opacity))}.hover\:border-red-600:hover{--tw-border-opacity:1;border-color:rgb(229 62 62/var(--tw-border-opacity))}.hover\:border-red-700:hover{--tw-border-opacity:1;border-color:rgb(197 48 48/var(--tw-border-opacity))}.hover\:border-red-900:hover{--tw-border-opacity:1;border-color:rgb(116 42 42/var(--tw-border-opacity))}.hover\:border-sky-600:hover{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.hover\:border-teal-600:hover{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}.hover\:border-yellow-600:hover{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.hover\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.hover\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.hover\:bg-blue-300:hover{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.hover\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.hover\:bg-blue-500:hover{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.hover\:bg-fuchsia-100:hover{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}.hover\:bg-fuchsia-700:hover{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:hsl(220 24% 98%/var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:hsl(220 24% 95%/var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:hsl(220 18% 92%/var(--tw-bg-opacity))}.hover\:bg-gray-400:hover{--tw-bg-opacity:1;background-color:hsl(220 14% 84%/var(--tw-bg-opacity))}.hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:hsl(220 8% 52%/var(--tw-bg-opacity))}.hover\:bg-gray-900:hover{--tw-bg-opacity:1;background-color:hsl(220 8% 16%/var(--tw-bg-opacity))}.hover\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.hover\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.hover\:bg-indigo-100:hover{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.hover\:bg-indigo-500:hover{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.hover\:bg-indigo-700:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.hover\:bg-orange-100:hover{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.hover\:bg-orange-700:hover{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.hover\:bg-pink-100:hover{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}.hover\:bg-pink-700:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}.hover\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.hover\:bg-purple-700:hover{--tw-bg-opacity:1;background-color:rgb(109 48 207/var(--tw-bg-opacity))}.hover\:bg-purple-800:hover{--tw-bg-opacity:1;background-color:rgb(93 45 170/var(--tw-bg-opacity))}.hover\:bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(255 245 245/var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(229 62 62/var(--tw-bg-opacity))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(197 48 48/var(--tw-bg-opacity))}.hover\:bg-red-900:hover{--tw-bg-opacity:1;background-color:rgb(116 42 42/var(--tw-bg-opacity))}.hover\:bg-sky-100:hover{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.hover\:bg-sky-700:hover{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.hover\:bg-teal-100:hover{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}.hover\:bg-teal-700:hover{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\:bg-yellow-100:hover{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.hover\:bg-yellow-700:hover{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.hover\:text-black:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.hover\:text-blue-200:hover{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}.hover\:text-blue-500:hover{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.hover\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.hover\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.hover\:text-fuchsia-200:hover{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}.hover\:text-fuchsia-600:hover{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}.hover\:text-fuchsia-800:hover{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:hsl(220 10% 69%/var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:hsl(220 8% 38%/var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:hsl(220 8% 23%/var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:hsl(220 8% 16%/var(--tw-text-opacity))}.hover\:text-green-200:hover{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.hover\:text-green-500:hover{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.hover\:text-green-600:hover{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.hover\:text-green-800:hover{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.hover\:text-indigo-200:hover{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}.hover\:text-indigo-600:hover{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.hover\:text-indigo-800:hover{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.hover\:text-orange-200:hover{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}.hover\:text-orange-600:hover{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.hover\:text-orange-800:hover{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.hover\:text-pink-200:hover{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}.hover\:text-pink-600:hover{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.hover\:text-pink-800:hover{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}.hover\:text-purple-200:hover{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.hover\:text-purple-500:hover{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.hover\:text-purple-600:hover{--tw-text-opacity:1;color:rgb(125 62 234/var(--tw-text-opacity))}.hover\:text-purple-700:hover{--tw-text-opacity:1;color:rgb(109 48 207/var(--tw-text-opacity))}.hover\:text-purple-800:hover{--tw-text-opacity:1;color:rgb(93 45 170/var(--tw-text-opacity))}.hover\:text-red-200:hover{--tw-text-opacity:1;color:rgb(254 215 215/var(--tw-text-opacity))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgb(229 62 62/var(--tw-text-opacity))}.hover\:text-red-700:hover{--tw-text-opacity:1;color:rgb(197 48 48/var(--tw-text-opacity))}.hover\:text-red-800:hover{--tw-text-opacity:1;color:rgb(155 44 44/var(--tw-text-opacity))}.hover\:text-sky-200:hover{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.hover\:text-sky-600:hover{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.hover\:text-sky-800:hover{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.hover\:text-teal-200:hover{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}.hover\:text-teal-600:hover{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}.hover\:text-teal-800:hover{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\:text-yellow-200:hover{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}.hover\:text-yellow-600:hover{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.hover\:text-yellow-800:hover{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow:hover{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.hover\:shadow-2xl:hover,.hover\:shadow:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-2xl:hover{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.hover\:shadow-lg:hover,.hover\:shadow-md:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.focus\:border-gray-400:focus{--tw-border-opacity:1;border-color:hsl(220 14% 84%/var(--tw-border-opacity))}.focus\:border-gray-500:focus{--tw-border-opacity:1;border-color:hsl(220 10% 69%/var(--tw-border-opacity))}.focus\:bg-white:focus{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.focus\:text-purple-200:focus{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.focus\:shadow-none:focus{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:outline-offset-0:focus{outline-offset:0}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-1:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-inset:focus{--tw-ring-inset:inset}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.focus\:ring-blue-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(37 99 235/var(--tw-ring-opacity))}.focus\:ring-gray-400:focus{--tw-ring-opacity:1;--tw-ring-color:hsl(220 14% 84%/var(--tw-ring-opacity))}.focus\:ring-gray-600:focus{--tw-ring-opacity:1;--tw-ring-color:hsl(220 8% 52%/var(--tw-ring-opacity))}.focus-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-blue-500:focus-visible{outline-color:#3b82f6}.group:hover .group-hover\:block{display:block}.group:hover .group-hover\:flex{display:flex}@media (min-width:640px){.sm\:static{position:static}.sm\:absolute{position:absolute}.sm\:relative{position:relative}.sm\:sticky{position:sticky}.sm\:right-0{right:0}.sm\:top-0{top:0}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-3{grid-column-start:3}.sm\:m-0{margin:0}.sm\:-mx-8{margin-left:-2rem;margin-right:-2rem}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mx-2{margin-left:.5rem;margin-right:.5rem}.sm\:my-4{margin-bottom:1rem;margin-top:1rem}.sm\:-ml-1{margin-left:-.25rem}.sm\:-mr-2{margin-right:-.5rem}.sm\:mb-0{margin-bottom:0}.sm\:ml-0{margin-left:0}.sm\:mr-0{margin-right:0}.sm\:mr-3{margin-right:.75rem}.sm\:mr-4{margin-right:1rem}.sm\:mr-6{margin-right:1.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-12{margin-top:3rem}.sm\:mt-16{margin-top:4rem}.sm\:mt-2{margin-top:.5rem}.sm\:mt-4{margin-top:1rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:inline-flex{display:inline-flex}.sm\:table-cell{display:table-cell}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:size-12{height:3rem;width:3rem}.sm\:size-5{height:1.25rem;width:1.25rem}.sm\:size-6{height:1.5rem;width:1.5rem}.sm\:h-12{height:3rem}.sm\:h-16{height:4rem}.sm\:h-3{height:.75rem}.sm\:h-32{height:8rem}.sm\:h-48{height:12rem}.sm\:h-5{height:1.25rem}.sm\:h-6{height:1.5rem}.sm\:h-8{height:2rem}.sm\:w-1\/2{width:50%}.sm\:w-1\/3{width:33.333333%}.sm\:w-1\/4{width:25%}.sm\:w-1\/6{width:16.666667%}.sm\:w-12{width:3rem}.sm\:w-16{width:4rem}.sm\:w-2\/3{width:66.666667%}.sm\:w-2\/5{width:40%}.sm\:w-20{width:5rem}.sm\:w-3{width:.75rem}.sm\:w-32{width:8rem}.sm\:w-48{width:12rem}.sm\:w-5{width:1.25rem}.sm\:w-52{width:13rem}.sm\:w-64{width:16rem}.sm\:w-full{width:100%}.sm\:max-w-full{max-width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xs{max-width:20rem}.sm\:flex-1{flex:1 1 0%}.sm\:translate-y-0{--tw-translate-y:0px}.sm\:scale-100,.sm\:translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-100{--tw-scale-x:1;--tw-scale-y:1}.sm\:scale-95{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:columns-2{-moz-columns:2;-moz-column-count:2;column-count:2}.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\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2{gap:.5rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:self-center{align-self:center}.sm\:overflow-x-auto{overflow-x:auto}.sm\:rounded{border-radius:.25rem}.sm\:border{border-width:1px}.sm\:border-b{border-bottom-width:1px}.sm\:border-b-0{border-bottom-width:0}.sm\:border-r{border-right-width:1px}.sm\:border-gray-400{--tw-border-opacity:1;border-color:hsl(220 14% 84%/var(--tw-border-opacity))}.sm\:bg-transparent{background-color:transparent}.sm\:p-0{padding:0}.sm\:p-1{padding:.25rem}.sm\:p-1\.5{padding:.375rem}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-0{padding-bottom:0;padding-top:0}.sm\:py-2{padding-bottom:.5rem;padding-top:.5rem}.sm\:py-3{padding-bottom:.75rem;padding-top:.75rem}.sm\:py-6{padding-bottom:1.5rem;padding-top:1.5rem}.sm\:pl-6{padding-left:1.5rem}.sm\:pt-10{padding-top:2.5rem}.sm\:pt-16{padding-top:4rem}.sm\:pt-6{padding-top:1.5rem}.sm\:text-left{text-align:left}.sm\:text-center{text-align:center}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{line-height:1.25rem}.sm\:text-sm,.sm\:text-sm\/6{font-size:.875rem}.sm\:text-sm\/6{line-height:1.5rem}.sm\:text-xl\/8{font-size:1.25rem;line-height:2rem}.sm\:text-xs{line-height:1rem}.sm\:text-xs,.sm\:text-xs\/6{font-size:.75rem}.sm\:leading-6,.sm\:text-xs\/6{line-height:1.5rem}.sm\:leading-none{line-height:1}.sm\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.sm\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.sm\:column-2{-moz-column-count:2;column-count:2;-moz-column-gap:1.5rem;column-gap:1.5rem}}@media (min-width:768px){.md\:static{position:static}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-start-5{grid-column-start:5}.md\:-mt-1{margin-top:-.25rem}.md\:ml-16{margin-left:4rem}.md\:mr-12{margin-right:3rem}.md\:mr-16{margin-right:4rem}.md\:mr-4{margin-right:1rem}.md\:block{display:block}.md\:inline-block{display:inline-block}.md\:hidden{display:none}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:w-1\/5{width:20%}.md\:w-auto{width:auto}.md\:max-w-lg{max-width:32rem}.md\:max-w-md{max-width:28rem}.md\:flex-1{flex:1 1 0%}.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-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:justify-between{justify-content:space-between}.md\:border-r{border-right-width:1px}.md\:px-5{padding-left:1.25rem;padding-right:1.25rem}.md\:py-1{padding-bottom:.25rem;padding-top:.25rem}.md\:pl-12{padding-left:3rem}.md\:pl-4{padding-left:1rem}.md\:pr-12{padding-right:3rem}.md\:text-right{text-align:right}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}.md\:column-2{-moz-column-count:2;column-count:2}.md\:column-2,.md\:column-3{-moz-column-gap:1.5rem;column-gap:1.5rem}.md\:column-3{-moz-column-count:3;column-count:3}}@media (min-width:1024px){.lg\:static{position:static}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-start-7{grid-column-start:7}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:my-6{margin-bottom:1.5rem;margin-top:1.5rem}.lg\:-ml-0\.5{margin-left:-.125rem}.lg\:ml-6{margin-left:1.5rem}.lg\:mr-1\.5{margin-right:.375rem}.lg\:mr-6{margin-right:1.5rem}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:table-cell{display:table-cell}.lg\:hidden{display:none}.lg\:h-16{height:4rem}.lg\:h-56{height:14rem}.lg\:w-1\/2{width:50%}.lg\:w-1\/4{width:25%}.lg\:w-16{width:4rem}.lg\:w-2\/5{width:40%}.lg\:w-24{width:6rem}.lg\:w-48{width:12rem}.lg\:min-w-72{min-width:18rem}.lg\:max-w-xs{max-width:20rem}.lg\:flex-1{flex:1 1 0%}.lg\:columns-3{-moz-columns:3;-moz-column-count:3;column-count:3}.lg\:columns-4{-moz-columns:4;-moz-column-count:4;column-count:4}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:flex-row-reverse{flex-direction:row-reverse}.lg\:gap-6{gap:1.5rem}.lg\:overflow-x-auto{overflow-x:auto}.lg\:border-0{border-width:0}.lg\:border-l{border-left-width:1px}.lg\:bg-transparent{background-color:transparent}.lg\:p-0{padding:0}.lg\:px-12{padding-left:3rem;padding-right:3rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-6{padding-bottom:1.5rem;padding-top:1.5rem}.lg\:pb-8{padding-bottom:2rem}.lg\:pl-0{padding-left:0}.lg\:pl-4{padding-left:1rem}.lg\:pt-0{padding-top:0}.lg\:pt-6{padding-top:1.5rem}.lg\:leading-normal{line-height:1.5}.lg\:text-gray-500{--tw-text-opacity:1;color:hsl(220 10% 69%/var(--tw-text-opacity))}.lg\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lg\:column-1{-moz-column-count:1;column-count:1;-moz-column-gap:1.5rem;column-gap:1.5rem}.lg\:w-sidebar{width:28%}}@media (min-width:1440px){.xl\:flex{display:flex}.xl\:w-1\/3{width:33.333333%}.xl\:w-1\/5{width:20%}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xl\:px-0{padding-left:0;padding-right:0}.xl\:px-6{padding-left:1.5rem;padding-right:1.5rem}} +.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.\!static{position:static!important}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-bottom-px{bottom:-1px}.-left-8{left:-2rem}.bottom-0{bottom:0}.bottom-5{bottom:1.25rem}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:.5rem}.right-0{right:0}.right-0\.5{right:.125rem}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-span-1{grid-column:span 1/span 1}.col-span-10{grid-column:span 10/span 10}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-6{grid-column:span 6/span 6}.col-span-8{grid-column:span 8/span 8}.row-span-1{grid-row:span 1/span 1}.row-span-2{grid-row:span 2/span 2}.row-span-3{grid-row:span 3/span 3}.row-span-4{grid-row:span 4/span 4}.row-span-5{grid-row:span 5/span 5}.float-right{float:right}.float-left{float:left}.float-none{float:none}.-m-2{margin:-.5rem}.-m-4{margin:-1rem}.m-0{margin:0}.m-0\.5{margin:.125rem}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:.75rem}.m-4{margin:1rem}.m-auto{margin:auto}.m-px{margin:1px}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-3{margin-left:-.75rem;margin-right:-.75rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-px{margin-left:-1px;margin-right:-1px}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.-my-2{margin-bottom:-.5rem;margin-top:-.5rem}.-my-6{margin-bottom:-1.5rem;margin-top:-1.5rem}.-my-px{margin-bottom:-1px;margin-top:-1px}.mx-0{margin-left:0;margin-right:0}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-5{margin-left:1.25rem;margin-right:1.25rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-bottom:0;margin-top:0}.my-1{margin-bottom:.25rem;margin-top:.25rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-20{margin-bottom:5rem;margin-top:5rem}.my-3{margin-bottom:.75rem;margin-top:.75rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-6{margin-bottom:1.5rem;margin-top:1.5rem}.my-8{margin-bottom:2rem;margin-top:2rem}.-mb-0\.5{margin-bottom:-.125rem}.-mb-1{margin-bottom:-.25rem}.-mb-2{margin-bottom:-.5rem}.-mb-3{margin-bottom:-.75rem}.-mb-4{margin-bottom:-1rem}.-mb-px{margin-bottom:-1px}.-ml-1{margin-left:-.25rem}.-ml-1\.5{margin-left:-.375rem}.-ml-2{margin-left:-.5rem}.-ml-3{margin-left:-.75rem}.-ml-4{margin-left:-1rem}.-ml-6{margin-left:-1.5rem}.-ml-px{margin-left:-1px}.-mr-1{margin-right:-.25rem}.-mr-1\.5{margin-right:-.375rem}.-mr-2{margin-right:-.5rem}.-mr-3{margin-right:-.75rem}.-mr-4{margin-right:-1rem}.-mr-5{margin-right:-1.25rem}.-mr-px{margin-right:-1px}.-mt-1{margin-top:-.25rem}.-mt-1\.5{margin-top:-.375rem}.-mt-10{margin-top:-2.5rem}.-mt-2{margin-top:-.5rem}.-mt-3{margin-top:-.75rem}.-mt-4{margin-top:-1rem}.-mt-48{margin-top:-12rem}.-mt-5{margin-top:-1.25rem}.-mt-6{margin-top:-1.5rem}.-mt-8{margin-top:-2rem}.-mt-px{margin-top:-1px}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-24{margin-bottom:6rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-px{margin-bottom:1px}.me-4{margin-inline-end:1rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-2\.5{margin-left:.625rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-56{margin-left:14rem}.ml-6{margin-left:1.5rem}.ml-px{margin-left:1px}.mr-0\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mr-6{margin-right:1.5rem}.mr-8{margin-right:2rem}.ms-4{margin-inline-start:1rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-24{margin-top:6rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-px{margin-top:1px}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-row{display:table-row}.grid{display:grid}.contents{display:contents}.hidden{display:none}.size-10{height:2.5rem;width:2.5rem}.size-3{height:.75rem;width:.75rem}.size-4{height:1rem;width:1rem}.size-5{height:1.25rem;width:1.25rem}.size-6{height:1.5rem;width:1.5rem}.size-7{height:1.75rem;width:1.75rem}.size-8{height:2rem;width:2rem}.size-9{height:2.25rem;width:2.25rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-56{height:14rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-8{height:2rem}.h-full{height:100%}.h-min{height:-moz-min-content;height:min-content}.h-screen{height:100vh}.max-h-screen{max-height:100vh}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-1\/5{width:20%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-2\/3{width:66.666667%}.w-2\/5{width:40%}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-4\/5{width:80%}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-auto{width:auto}.w-full{width:100%}.min-w-0{min-width:0}.min-w-24{min-width:6rem}.max-w-24{max-width:6rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-none{flex:none}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.origin-bottom-left{transform-origin:bottom left}.origin-top-left{transform-origin:top left}.origin-top-right{transform-origin:top right}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.-translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y:-100%}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.translate-y-4{--tw-translate-y:1rem}.translate-y-4,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-full{--tw-translate-y:100%}.-rotate-45{--tw-rotate:-45deg}.-rotate-45,.-rotate-90{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate:-90deg}.rotate-45{--tw-rotate:45deg}.rotate-45,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-50{--tw-scale-x:.5;--tw-scale-y:.5}.scale-50,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.snap-start{scroll-snap-align:start}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.columns-1{-moz-columns:1;-moz-column-count:1;column-count:1}.columns-2{-moz-columns:2;-moz-column-count:2;column-count:2}.columns-3{-moz-columns:3;-moz-column-count:3;column-count:3}.columns-4{-moz-columns:4;-moz-column-count:4;column-count:4}.columns-auto{-moz-columns:auto;columns:auto}.grid-flow-row{grid-auto-flow:row}.grid-flow-col{grid-auto-flow:column}.auto-rows-fr{grid-auto-rows:minmax(0,1fr)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.content-center{align-content:center}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.self-end{align-self:flex-end}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-y-visible{overflow-y:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-scroll{overflow-y:scroll}.overscroll-contain{overscroll-behavior:contain}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-b{border-bottom-right-radius:.25rem}.rounded-b,.rounded-l{border-bottom-left-radius:.25rem}.rounded-l{border-top-left-radius:.25rem}.rounded-l-md{border-bottom-left-radius:.375rem;border-top-left-radius:.375rem}.rounded-l-none{border-bottom-left-radius:0;border-top-left-radius:0}.rounded-r{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.rounded-r-md{border-bottom-right-radius:.375rem;border-top-right-radius:.375rem}.rounded-r-none{border-bottom-right-radius:0;border-top-right-radius:0}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-md{border-top-left-radius:.375rem;border-top-right-radius:.375rem}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-4{border-width:4px}.border-8{border-width:8px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-l{border-left-width:1px}.border-l-0{border-left-width:0}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-r-0{border-right-width:0}.border-r-8{border-right-width:8px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0}.border-t-2{border-top-width:2px}.border-t-4{border-top-width:4px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-blue-300{border-color:rgb(147 197 253/var(--tw-border-opacity))}.border-blue-300,.border-blue-500{--tw-border-opacity:1}.border-blue-500{border-color:rgb(59 130 246/var(--tw-border-opacity))}.border-blue-600{border-color:rgb(37 99 235/var(--tw-border-opacity))}.border-blue-600,.border-blue-700{--tw-border-opacity:1}.border-blue-700{border-color:rgb(29 78 216/var(--tw-border-opacity))}.border-blue-800{border-color:rgb(30 64 175/var(--tw-border-opacity))}.border-blue-800,.border-fuchsia-300{--tw-border-opacity:1}.border-fuchsia-300{border-color:rgb(240 171 252/var(--tw-border-opacity))}.border-fuchsia-500{--tw-border-opacity:1;border-color:rgb(217 70 239/var(--tw-border-opacity))}.border-fuchsia-600{border-color:rgb(192 38 211/var(--tw-border-opacity))}.border-fuchsia-600,.border-gray-200{--tw-border-opacity:1}.border-gray-200{border-color:hsl(220 24% 95%/var(--tw-border-opacity))}.border-gray-300{border-color:hsl(220 18% 92%/var(--tw-border-opacity))}.border-gray-300,.border-gray-400{--tw-border-opacity:1}.border-gray-400{border-color:hsl(220 14% 84%/var(--tw-border-opacity))}.border-gray-500{border-color:hsl(220 10% 69%/var(--tw-border-opacity))}.border-gray-500,.border-gray-600{--tw-border-opacity:1}.border-gray-600{border-color:hsl(220 8% 52%/var(--tw-border-opacity))}.border-gray-700{border-color:hsl(220 8% 38%/var(--tw-border-opacity))}.border-gray-700,.border-gray-800{--tw-border-opacity:1}.border-gray-800{border-color:hsl(220 8% 23%/var(--tw-border-opacity))}.border-gray-900{border-color:hsl(220 8% 16%/var(--tw-border-opacity))}.border-gray-900,.border-green-300{--tw-border-opacity:1}.border-green-300{border-color:rgb(134 239 172/var(--tw-border-opacity))}.border-green-500{border-color:rgb(34 197 94/var(--tw-border-opacity))}.border-green-500,.border-green-600{--tw-border-opacity:1}.border-green-600{border-color:rgb(22 163 74/var(--tw-border-opacity))}.border-green-700{border-color:rgb(21 128 61/var(--tw-border-opacity))}.border-green-700,.border-indigo-300{--tw-border-opacity:1}.border-indigo-300{border-color:rgb(165 180 252/var(--tw-border-opacity))}.border-indigo-500{border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-indigo-500,.border-indigo-600{--tw-border-opacity:1}.border-indigo-600{border-color:rgb(79 70 229/var(--tw-border-opacity))}.border-orange-300{border-color:rgb(253 186 116/var(--tw-border-opacity))}.border-orange-300,.border-orange-500{--tw-border-opacity:1}.border-orange-500{border-color:rgb(249 115 22/var(--tw-border-opacity))}.border-orange-600{border-color:rgb(234 88 12/var(--tw-border-opacity))}.border-orange-600,.border-orange-700{--tw-border-opacity:1}.border-orange-700{border-color:rgb(194 65 12/var(--tw-border-opacity))}.border-pink-300{border-color:rgb(249 168 212/var(--tw-border-opacity))}.border-pink-300,.border-pink-500{--tw-border-opacity:1}.border-pink-500{border-color:rgb(236 72 153/var(--tw-border-opacity))}.border-pink-600{border-color:rgb(219 39 119/var(--tw-border-opacity))}.border-pink-600,.border-purple-300{--tw-border-opacity:1}.border-purple-300{border-color:rgb(196 181 253/var(--tw-border-opacity))}.border-purple-500{border-color:rgb(139 92 246/var(--tw-border-opacity))}.border-purple-500,.border-purple-600{--tw-border-opacity:1}.border-purple-600{border-color:rgb(125 62 234/var(--tw-border-opacity))}.border-purple-700{border-color:rgb(109 48 207/var(--tw-border-opacity))}.border-purple-700,.border-red-300{--tw-border-opacity:1}.border-red-300{border-color:rgb(254 178 178/var(--tw-border-opacity))}.border-red-500{border-color:rgb(245 101 101/var(--tw-border-opacity))}.border-red-500,.border-red-600{--tw-border-opacity:1}.border-red-600{border-color:rgb(229 62 62/var(--tw-border-opacity))}.border-red-700{border-color:rgb(197 48 48/var(--tw-border-opacity))}.border-red-700,.border-red-800{--tw-border-opacity:1}.border-red-800{border-color:rgb(155 44 44/var(--tw-border-opacity))}.border-sky-300{border-color:rgb(125 211 252/var(--tw-border-opacity))}.border-sky-300,.border-sky-500{--tw-border-opacity:1}.border-sky-500{border-color:rgb(14 165 233/var(--tw-border-opacity))}.border-sky-600{border-color:rgb(2 132 199/var(--tw-border-opacity))}.border-sky-600,.border-teal-300{--tw-border-opacity:1}.border-teal-300{border-color:rgb(94 234 212/var(--tw-border-opacity))}.border-teal-500{border-color:rgb(20 184 166/var(--tw-border-opacity))}.border-teal-500,.border-teal-600{--tw-border-opacity:1}.border-teal-600{border-color:rgb(13 148 136/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-white{border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-white,.border-yellow-300{--tw-border-opacity:1}.border-yellow-300{border-color:rgb(252 211 77/var(--tw-border-opacity))}.border-yellow-500{border-color:rgb(245 158 11/var(--tw-border-opacity))}.border-yellow-500,.border-yellow-600{--tw-border-opacity:1}.border-yellow-600{border-color:rgb(217 119 6/var(--tw-border-opacity))}.border-b-gray-400{border-bottom-color:hsl(220 14% 84%/var(--tw-border-opacity))}.border-b-gray-400,.border-b-white{--tw-border-opacity:1}.border-b-white{border-bottom-color:rgb(255 255 255/var(--tw-border-opacity))}.border-t-gray-400{--tw-border-opacity:1;border-top-color:hsl(220 14% 84%/var(--tw-border-opacity))}.bg-black{background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-black,.bg-blue-100{--tw-bg-opacity:1}.bg-blue-100{background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-blue-200{background-color:rgb(191 219 254/var(--tw-bg-opacity))}.bg-blue-200,.bg-blue-300{--tw-bg-opacity:1}.bg-blue-300{background-color:rgb(147 197 253/var(--tw-bg-opacity))}.bg-blue-400{background-color:rgb(96 165 250/var(--tw-bg-opacity))}.bg-blue-400,.bg-blue-50{--tw-bg-opacity:1}.bg-blue-50{background-color:rgb(239 246 255/var(--tw-bg-opacity))}.bg-blue-500{background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-blue-500,.bg-blue-600{--tw-bg-opacity:1}.bg-blue-600{background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-blue-700{background-color:rgb(29 78 216/var(--tw-bg-opacity))}.bg-blue-700,.bg-fuchsia-100{--tw-bg-opacity:1}.bg-fuchsia-100{background-color:rgb(250 232 255/var(--tw-bg-opacity))}.bg-fuchsia-400{background-color:rgb(232 121 249/var(--tw-bg-opacity))}.bg-fuchsia-400,.bg-fuchsia-600{--tw-bg-opacity:1}.bg-fuchsia-600{background-color:rgb(192 38 211/var(--tw-bg-opacity))}.bg-fuchsia-700{background-color:rgb(162 28 175/var(--tw-bg-opacity))}.bg-fuchsia-700,.bg-gray-100{--tw-bg-opacity:1}.bg-gray-100{background-color:hsl(220 24% 98%/var(--tw-bg-opacity))}.bg-gray-150{background-color:hsl(210 24% 97%/var(--tw-bg-opacity))}.bg-gray-150,.bg-gray-200{--tw-bg-opacity:1}.bg-gray-200{background-color:hsl(220 24% 95%/var(--tw-bg-opacity))}.bg-gray-300{background-color:hsl(220 18% 92%/var(--tw-bg-opacity))}.bg-gray-300,.bg-gray-400{--tw-bg-opacity:1}.bg-gray-400{background-color:hsl(220 14% 84%/var(--tw-bg-opacity))}.bg-gray-50{background-color:hsl(220 24% 99%/var(--tw-bg-opacity))}.bg-gray-50,.bg-gray-500{--tw-bg-opacity:1}.bg-gray-500{background-color:hsl(220 10% 69%/var(--tw-bg-opacity))}.bg-gray-600{background-color:hsl(220 8% 52%/var(--tw-bg-opacity))}.bg-gray-600,.bg-gray-800{--tw-bg-opacity:1}.bg-gray-800{background-color:hsl(220 8% 23%/var(--tw-bg-opacity))}.bg-green-100{background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-green-100,.bg-green-200{--tw-bg-opacity:1}.bg-green-200{background-color:rgb(187 247 208/var(--tw-bg-opacity))}.bg-green-400{background-color:rgb(74 222 128/var(--tw-bg-opacity))}.bg-green-400,.bg-green-500{--tw-bg-opacity:1}.bg-green-500{background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-green-600{background-color:rgb(22 163 74/var(--tw-bg-opacity))}.bg-green-600,.bg-green-700{--tw-bg-opacity:1}.bg-green-700{background-color:rgb(21 128 61/var(--tw-bg-opacity))}.bg-indigo-100{background-color:rgb(224 231 255/var(--tw-bg-opacity))}.bg-indigo-100,.bg-indigo-400{--tw-bg-opacity:1}.bg-indigo-400{background-color:rgb(129 140 248/var(--tw-bg-opacity))}.bg-indigo-600{background-color:rgb(79 70 229/var(--tw-bg-opacity))}.bg-indigo-600,.bg-indigo-700{--tw-bg-opacity:1}.bg-indigo-700{background-color:rgb(67 56 202/var(--tw-bg-opacity))}.bg-lime-500{background-color:rgb(132 204 22/var(--tw-bg-opacity))}.bg-lime-500,.bg-orange-100{--tw-bg-opacity:1}.bg-orange-100{background-color:rgb(255 237 213/var(--tw-bg-opacity))}.bg-orange-200{background-color:rgb(254 215 170/var(--tw-bg-opacity))}.bg-orange-200,.bg-orange-300{--tw-bg-opacity:1}.bg-orange-300{background-color:rgb(253 186 116/var(--tw-bg-opacity))}.bg-orange-400{background-color:rgb(251 146 60/var(--tw-bg-opacity))}.bg-orange-400,.bg-orange-500{--tw-bg-opacity:1}.bg-orange-500{background-color:rgb(249 115 22/var(--tw-bg-opacity))}.bg-orange-600{background-color:rgb(234 88 12/var(--tw-bg-opacity))}.bg-orange-600,.bg-orange-700{--tw-bg-opacity:1}.bg-orange-700{background-color:rgb(194 65 12/var(--tw-bg-opacity))}.bg-pink-100{background-color:rgb(252 231 243/var(--tw-bg-opacity))}.bg-pink-100,.bg-pink-400{--tw-bg-opacity:1}.bg-pink-400{background-color:rgb(244 114 182/var(--tw-bg-opacity))}.bg-pink-500{background-color:rgb(236 72 153/var(--tw-bg-opacity))}.bg-pink-500,.bg-pink-600{--tw-bg-opacity:1}.bg-pink-600{background-color:rgb(219 39 119/var(--tw-bg-opacity))}.bg-pink-700{background-color:rgb(190 24 93/var(--tw-bg-opacity))}.bg-pink-700,.bg-purple-100{--tw-bg-opacity:1}.bg-purple-100{background-color:rgb(237 233 254/var(--tw-bg-opacity))}.bg-purple-200{background-color:rgb(221 214 254/var(--tw-bg-opacity))}.bg-purple-200,.bg-purple-400{--tw-bg-opacity:1}.bg-purple-400{background-color:rgb(167 139 250/var(--tw-bg-opacity))}.bg-purple-500{background-color:rgb(139 92 246/var(--tw-bg-opacity))}.bg-purple-500,.bg-purple-600{--tw-bg-opacity:1}.bg-purple-600{background-color:rgb(125 62 234/var(--tw-bg-opacity))}.bg-purple-700{background-color:rgb(109 48 207/var(--tw-bg-opacity))}.bg-purple-700,.bg-purple-800{--tw-bg-opacity:1}.bg-purple-800{background-color:rgb(93 45 170/var(--tw-bg-opacity))}.bg-red-100{background-color:rgb(255 245 245/var(--tw-bg-opacity))}.bg-red-100,.bg-red-200{--tw-bg-opacity:1}.bg-red-200{background-color:rgb(254 215 215/var(--tw-bg-opacity))}.bg-red-300{background-color:rgb(254 178 178/var(--tw-bg-opacity))}.bg-red-300,.bg-red-400{--tw-bg-opacity:1}.bg-red-400{background-color:rgb(252 129 129/var(--tw-bg-opacity))}.bg-red-500{background-color:rgb(245 101 101/var(--tw-bg-opacity))}.bg-red-500,.bg-red-600{--tw-bg-opacity:1}.bg-red-600{background-color:rgb(229 62 62/var(--tw-bg-opacity))}.bg-red-700{background-color:rgb(197 48 48/var(--tw-bg-opacity))}.bg-red-700,.bg-sky-100{--tw-bg-opacity:1}.bg-sky-100{background-color:rgb(224 242 254/var(--tw-bg-opacity))}.bg-sky-400{background-color:rgb(56 189 248/var(--tw-bg-opacity))}.bg-sky-400,.bg-sky-600{--tw-bg-opacity:1}.bg-sky-600{background-color:rgb(2 132 199/var(--tw-bg-opacity))}.bg-sky-700{background-color:rgb(3 105 161/var(--tw-bg-opacity))}.bg-sky-700,.bg-teal-100{--tw-bg-opacity:1}.bg-teal-100{background-color:rgb(204 251 241/var(--tw-bg-opacity))}.bg-teal-400{background-color:rgb(45 212 191/var(--tw-bg-opacity))}.bg-teal-400,.bg-teal-600{--tw-bg-opacity:1}.bg-teal-600{background-color:rgb(13 148 136/var(--tw-bg-opacity))}.bg-teal-700{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white,.bg-yellow-100{--tw-bg-opacity:1}.bg-yellow-100{background-color:rgb(254 243 199/var(--tw-bg-opacity))}.bg-yellow-200{background-color:rgb(253 230 138/var(--tw-bg-opacity))}.bg-yellow-200,.bg-yellow-400{--tw-bg-opacity:1}.bg-yellow-400{background-color:rgb(251 191 36/var(--tw-bg-opacity))}.bg-yellow-500{background-color:rgb(245 158 11/var(--tw-bg-opacity))}.bg-yellow-500,.bg-yellow-600{--tw-bg-opacity:1}.bg-yellow-600{background-color:rgb(217 119 6/var(--tw-bg-opacity))}.bg-yellow-700{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.bg-opacity-40{--tw-bg-opacity:0.4}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-opacity-75{--tw-bg-opacity:0.75}.bg-opacity-80{--tw-bg-opacity:0.8}.bg-cover{background-size:cover}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.fill-current{fill:currentColor}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-px{padding:1px}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-px{padding-left:1px;padding-right:1px}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-16{padding-bottom:4rem;padding-top:4rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.py-px{padding-bottom:1px;padding-top:1px}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-24{padding-bottom:6rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pl-1{padding-left:.25rem}.pl-10{padding-left:2.5rem}.pl-12{padding-left:3rem}.pl-2{padding-left:.5rem}.pl-24{padding-left:6rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pr-px{padding-right:1px}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-10{padding-top:2.5rem}.pt-12{padding-top:3rem}.pt-2{padding-top:.5rem}.pt-24{padding-top:6rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.pt-px{padding-top:1px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-text-bottom{vertical-align:text-bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-2xl,.text-2xl\/8{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base,.text-base\/6{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{line-height:1.25rem}.text-sm,.text-sm\/6{font-size:.875rem}.text-sm\/6{line-height:1.5rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{line-height:1rem}.text-xs,.text-xs\/6{font-size:.75rem}.text-xs\/6{line-height:1.5rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.leading-6{line-height:1.5rem}.leading-loose{line-height:2}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.text-black{color:rgb(0 0 0/var(--tw-text-opacity))}.text-black,.text-blue-200{--tw-text-opacity:1}.text-blue-200{color:rgb(191 219 254/var(--tw-text-opacity))}.text-blue-500{color:rgb(59 130 246/var(--tw-text-opacity))}.text-blue-500,.text-blue-600{--tw-text-opacity:1}.text-blue-600{color:rgb(37 99 235/var(--tw-text-opacity))}.text-blue-700{color:rgb(29 78 216/var(--tw-text-opacity))}.text-blue-700,.text-blue-800{--tw-text-opacity:1}.text-blue-800{color:rgb(30 64 175/var(--tw-text-opacity))}.text-fuchsia-200{color:rgb(245 208 254/var(--tw-text-opacity))}.text-fuchsia-200,.text-fuchsia-600{--tw-text-opacity:1}.text-fuchsia-600{color:rgb(192 38 211/var(--tw-text-opacity))}.text-fuchsia-800{color:rgb(134 25 143/var(--tw-text-opacity))}.text-fuchsia-800,.text-gray-100{--tw-text-opacity:1}.text-gray-100{color:hsl(220 24% 98%/var(--tw-text-opacity))}.text-gray-400{color:hsl(220 14% 84%/var(--tw-text-opacity))}.text-gray-400,.text-gray-500{--tw-text-opacity:1}.text-gray-500{color:hsl(220 10% 69%/var(--tw-text-opacity))}.text-gray-600{color:hsl(220 8% 52%/var(--tw-text-opacity))}.text-gray-600,.text-gray-700{--tw-text-opacity:1}.text-gray-700{color:hsl(220 8% 38%/var(--tw-text-opacity))}.text-gray-800{color:hsl(220 8% 23%/var(--tw-text-opacity))}.text-gray-800,.text-gray-900{--tw-text-opacity:1}.text-gray-900{color:hsl(220 8% 16%/var(--tw-text-opacity))}.text-gray-950{color:hsl(220 8% 10%/var(--tw-text-opacity))}.text-gray-950,.text-green-200{--tw-text-opacity:1}.text-green-200{color:rgb(187 247 208/var(--tw-text-opacity))}.text-green-500{color:rgb(34 197 94/var(--tw-text-opacity))}.text-green-500,.text-green-600{--tw-text-opacity:1}.text-green-600{color:rgb(22 163 74/var(--tw-text-opacity))}.text-green-700{color:rgb(21 128 61/var(--tw-text-opacity))}.text-green-700,.text-green-800{--tw-text-opacity:1}.text-green-800{color:rgb(22 101 52/var(--tw-text-opacity))}.text-indigo-200{color:rgb(199 210 254/var(--tw-text-opacity))}.text-indigo-200,.text-indigo-600{--tw-text-opacity:1}.text-indigo-600{color:rgb(79 70 229/var(--tw-text-opacity))}.text-indigo-800{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.text-inherit{color:inherit}.text-orange-200{color:rgb(254 215 170/var(--tw-text-opacity))}.text-orange-200,.text-orange-600{--tw-text-opacity:1}.text-orange-600{color:rgb(234 88 12/var(--tw-text-opacity))}.text-orange-700{color:rgb(194 65 12/var(--tw-text-opacity))}.text-orange-700,.text-orange-800{--tw-text-opacity:1}.text-orange-800{color:rgb(154 52 18/var(--tw-text-opacity))}.text-pink-200{color:rgb(251 207 232/var(--tw-text-opacity))}.text-pink-200,.text-pink-600{--tw-text-opacity:1}.text-pink-600{color:rgb(219 39 119/var(--tw-text-opacity))}.text-pink-800{color:rgb(157 23 77/var(--tw-text-opacity))}.text-pink-800,.text-purple-200{--tw-text-opacity:1}.text-purple-200{color:rgb(221 214 254/var(--tw-text-opacity))}.text-purple-600{color:rgb(125 62 234/var(--tw-text-opacity))}.text-purple-600,.text-purple-700{--tw-text-opacity:1}.text-purple-700{color:rgb(109 48 207/var(--tw-text-opacity))}.text-purple-800{color:rgb(93 45 170/var(--tw-text-opacity))}.text-purple-800,.text-red-200{--tw-text-opacity:1}.text-red-200{color:rgb(254 215 215/var(--tw-text-opacity))}.text-red-500{color:rgb(245 101 101/var(--tw-text-opacity))}.text-red-500,.text-red-600{--tw-text-opacity:1}.text-red-600{color:rgb(229 62 62/var(--tw-text-opacity))}.text-red-700{color:rgb(197 48 48/var(--tw-text-opacity))}.text-red-700,.text-red-800{--tw-text-opacity:1}.text-red-800{color:rgb(155 44 44/var(--tw-text-opacity))}.text-sky-200{color:rgb(186 230 253/var(--tw-text-opacity))}.text-sky-200,.text-sky-600{--tw-text-opacity:1}.text-sky-600{color:rgb(2 132 199/var(--tw-text-opacity))}.text-sky-800{color:rgb(7 89 133/var(--tw-text-opacity))}.text-sky-800,.text-teal-200{--tw-text-opacity:1}.text-teal-200{color:rgb(153 246 228/var(--tw-text-opacity))}.text-teal-600{color:rgb(13 148 136/var(--tw-text-opacity))}.text-teal-600,.text-teal-800{--tw-text-opacity:1}.text-teal-800{color:rgb(17 94 89/var(--tw-text-opacity))}.text-white{color:rgb(255 255 255/var(--tw-text-opacity))}.text-white,.text-yellow-200{--tw-text-opacity:1}.text-yellow-200{color:rgb(253 230 138/var(--tw-text-opacity))}.text-yellow-500{color:rgb(245 158 11/var(--tw-text-opacity))}.text-yellow-500,.text-yellow-600{--tw-text-opacity:1}.text-yellow-600{color:rgb(217 119 6/var(--tw-text-opacity))}.text-yellow-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.text-opacity-50{--tw-text-opacity:0.5}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-inner{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-inset{--tw-ring-inset:inset}.ring-black{--tw-ring-opacity:1;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity))}.ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.ring-blue-700{--tw-ring-opacity:1;--tw-ring-color:rgb(29 78 216/var(--tw-ring-opacity))}.ring-gray-400{--tw-ring-opacity:1;--tw-ring-color:hsl(220 14% 84%/var(--tw-ring-opacity))}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-opacity-25{--tw-ring-opacity:0.25}.ring-opacity-5{--tw-ring-opacity:0.05}.ring-opacity-75{--tw-ring-opacity:0.75}.blur{--tw-blur:blur(8px)}.blur,.drop-shadow-md{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)}.drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px rgba(0,0,0,.07)) drop-shadow(0 2px 2px rgba(0,0,0,.06))}.invert{--tw-invert:invert(100%)}.filter,.invert{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-lg{--tw-backdrop-blur:blur(16px)}.backdrop-blur-lg,.backdrop-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)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.backdrop-contrast-125{--tw-backdrop-contrast:contrast(1.25)}.backdrop-contrast-125,.backdrop-saturate-150{-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-saturate-150{--tw-backdrop-saturate:saturate(1.5)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-75{transition-delay:75ms}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.column-1{-moz-column-count:1;column-count:1}.column-1,.column-2{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-2{-moz-column-count:2;column-count:2}.text-xxs{font-size:.65rem}.\[preferredName\:1\]{preferred-name:1}.column-no-break{-moz-column-break-inside:avoid;-o-column-break-inside:avoid;-ms-column-break-inside:avoid;column-break-inside:avoid;break-inside:avoid;display:table;padding-top:1px;page-break-inside:avoid;width:100%}.bg-transparent-100{background-color:hsla(0,0%,100%,.9)}.bg-transparent-300{background-color:rgba(50,50,50,.1)}.bg-transparent-600{background-color:rgba(50,50,50,.6)}.bg-transparent-900{background-color:rgba(50,50,50,.95)}.min-h-1\/2{min-height:50vh}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:hsl(220 10% 69%/var(--tw-text-opacity))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity:1;color:hsl(220 10% 69%/var(--tw-text-opacity))}.placeholder\:text-white::-moz-placeholder{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.placeholder\:text-white::placeholder{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.placeholder\:text-opacity-60::-moz-placeholder{--tw-text-opacity:0.6}.placeholder\:text-opacity-60::placeholder{--tw-text-opacity:0.6}.focus-within\:border-t-blue-500:focus-within{--tw-border-opacity:1;border-top-color:rgb(59 130 246/var(--tw-border-opacity))}.hover\:-translate-y-1:hover{--tw-translate-y:-0.25rem}.hover\:-translate-y-1:hover,.hover\:scale-105:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}.hover\:border-blue-500:hover{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.hover\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}.hover\:border-blue-700:hover{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.hover\:border-fuchsia-600:hover{--tw-border-opacity:1;border-color:rgb(192 38 211/var(--tw-border-opacity))}.hover\:border-gray-500:hover{--tw-border-opacity:1;border-color:hsl(220 10% 69%/var(--tw-border-opacity))}.hover\:border-gray-700:hover{--tw-border-opacity:1;border-color:hsl(220 8% 38%/var(--tw-border-opacity))}.hover\:border-green-500:hover{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.hover\:border-green-600:hover{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.hover\:border-indigo-600:hover{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.hover\:border-orange-600:hover{--tw-border-opacity:1;border-color:rgb(234 88 12/var(--tw-border-opacity))}.hover\:border-pink-600:hover{--tw-border-opacity:1;border-color:rgb(219 39 119/var(--tw-border-opacity))}.hover\:border-purple-600:hover{--tw-border-opacity:1;border-color:rgb(125 62 234/var(--tw-border-opacity))}.hover\:border-purple-800:hover{--tw-border-opacity:1;border-color:rgb(93 45 170/var(--tw-border-opacity))}.hover\:border-red-600:hover{--tw-border-opacity:1;border-color:rgb(229 62 62/var(--tw-border-opacity))}.hover\:border-red-700:hover{--tw-border-opacity:1;border-color:rgb(197 48 48/var(--tw-border-opacity))}.hover\:border-red-900:hover{--tw-border-opacity:1;border-color:rgb(116 42 42/var(--tw-border-opacity))}.hover\:border-sky-600:hover{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.hover\:border-teal-600:hover{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}.hover\:border-yellow-600:hover{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.hover\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.hover\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.hover\:bg-blue-300:hover{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity))}.hover\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.hover\:bg-blue-500:hover{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.hover\:bg-fuchsia-100:hover{--tw-bg-opacity:1;background-color:rgb(250 232 255/var(--tw-bg-opacity))}.hover\:bg-fuchsia-700:hover{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:hsl(220 24% 98%/var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:hsl(220 24% 95%/var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:hsl(220 18% 92%/var(--tw-bg-opacity))}.hover\:bg-gray-400:hover{--tw-bg-opacity:1;background-color:hsl(220 14% 84%/var(--tw-bg-opacity))}.hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:hsl(220 8% 52%/var(--tw-bg-opacity))}.hover\:bg-gray-900:hover{--tw-bg-opacity:1;background-color:hsl(220 8% 16%/var(--tw-bg-opacity))}.hover\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.hover\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.hover\:bg-indigo-100:hover{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.hover\:bg-indigo-500:hover{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.hover\:bg-indigo-700:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.hover\:bg-orange-100:hover{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.hover\:bg-orange-700:hover{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.hover\:bg-pink-100:hover{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity))}.hover\:bg-pink-700:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity))}.hover\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.hover\:bg-purple-700:hover{--tw-bg-opacity:1;background-color:rgb(109 48 207/var(--tw-bg-opacity))}.hover\:bg-purple-800:hover{--tw-bg-opacity:1;background-color:rgb(93 45 170/var(--tw-bg-opacity))}.hover\:bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(255 245 245/var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(229 62 62/var(--tw-bg-opacity))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(197 48 48/var(--tw-bg-opacity))}.hover\:bg-red-900:hover{--tw-bg-opacity:1;background-color:rgb(116 42 42/var(--tw-bg-opacity))}.hover\:bg-sky-100:hover{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.hover\:bg-sky-700:hover{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.hover\:bg-teal-100:hover{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}.hover\:bg-teal-700:hover{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\:bg-yellow-100:hover{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.hover\:bg-yellow-700:hover{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.hover\:text-black:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.hover\:text-blue-200:hover{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity))}.hover\:text-blue-500:hover{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.hover\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.hover\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.hover\:text-fuchsia-200:hover{--tw-text-opacity:1;color:rgb(245 208 254/var(--tw-text-opacity))}.hover\:text-fuchsia-600:hover{--tw-text-opacity:1;color:rgb(192 38 211/var(--tw-text-opacity))}.hover\:text-fuchsia-800:hover{--tw-text-opacity:1;color:rgb(134 25 143/var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:hsl(220 10% 69%/var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:hsl(220 8% 38%/var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:hsl(220 8% 23%/var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:hsl(220 8% 16%/var(--tw-text-opacity))}.hover\:text-green-200:hover{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.hover\:text-green-500:hover{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.hover\:text-green-600:hover{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.hover\:text-green-800:hover{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.hover\:text-indigo-200:hover{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}.hover\:text-indigo-600:hover{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.hover\:text-indigo-800:hover{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.hover\:text-orange-200:hover{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}.hover\:text-orange-600:hover{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.hover\:text-orange-800:hover{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.hover\:text-pink-200:hover{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity))}.hover\:text-pink-600:hover{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.hover\:text-pink-800:hover{--tw-text-opacity:1;color:rgb(157 23 77/var(--tw-text-opacity))}.hover\:text-purple-200:hover{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.hover\:text-purple-500:hover{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.hover\:text-purple-600:hover{--tw-text-opacity:1;color:rgb(125 62 234/var(--tw-text-opacity))}.hover\:text-purple-700:hover{--tw-text-opacity:1;color:rgb(109 48 207/var(--tw-text-opacity))}.hover\:text-purple-800:hover{--tw-text-opacity:1;color:rgb(93 45 170/var(--tw-text-opacity))}.hover\:text-red-200:hover{--tw-text-opacity:1;color:rgb(254 215 215/var(--tw-text-opacity))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgb(229 62 62/var(--tw-text-opacity))}.hover\:text-red-700:hover{--tw-text-opacity:1;color:rgb(197 48 48/var(--tw-text-opacity))}.hover\:text-red-800:hover{--tw-text-opacity:1;color:rgb(155 44 44/var(--tw-text-opacity))}.hover\:text-sky-200:hover{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.hover\:text-sky-600:hover{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.hover\:text-sky-800:hover{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.hover\:text-teal-200:hover{--tw-text-opacity:1;color:rgb(153 246 228/var(--tw-text-opacity))}.hover\:text-teal-600:hover{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}.hover\:text-teal-800:hover{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\:text-yellow-200:hover{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}.hover\:text-yellow-600:hover{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.hover\:text-yellow-800:hover{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow:hover{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.hover\:shadow-2xl:hover,.hover\:shadow:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-2xl:hover{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.hover\:shadow-lg:hover,.hover\:shadow-md:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.focus\:border-gray-400:focus{--tw-border-opacity:1;border-color:hsl(220 14% 84%/var(--tw-border-opacity))}.focus\:border-gray-500:focus{--tw-border-opacity:1;border-color:hsl(220 10% 69%/var(--tw-border-opacity))}.focus\:bg-white:focus{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.focus\:text-purple-200:focus{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.focus\:shadow-none:focus{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:outline-offset-0:focus{outline-offset:0}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-1:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-inset:focus{--tw-ring-inset:inset}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.focus\:ring-blue-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(37 99 235/var(--tw-ring-opacity))}.focus\:ring-gray-400:focus{--tw-ring-opacity:1;--tw-ring-color:hsl(220 14% 84%/var(--tw-ring-opacity))}.focus\:ring-gray-600:focus{--tw-ring-opacity:1;--tw-ring-color:hsl(220 8% 52%/var(--tw-ring-opacity))}.focus-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-blue-500:focus-visible{outline-color:#3b82f6}.group:hover .group-hover\:block{display:block}.group:hover .group-hover\:flex{display:flex}@media (min-width:640px){.sm\:static{position:static}.sm\:absolute{position:absolute}.sm\:relative{position:relative}.sm\:sticky{position:sticky}.sm\:right-0{right:0}.sm\:top-0{top:0}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-3{grid-column-start:3}.sm\:m-0{margin:0}.sm\:-mx-8{margin-left:-2rem;margin-right:-2rem}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mx-2{margin-left:.5rem;margin-right:.5rem}.sm\:my-4{margin-bottom:1rem;margin-top:1rem}.sm\:-ml-1{margin-left:-.25rem}.sm\:-mr-2{margin-right:-.5rem}.sm\:mb-0{margin-bottom:0}.sm\:ml-0{margin-left:0}.sm\:mr-0{margin-right:0}.sm\:mr-3{margin-right:.75rem}.sm\:mr-4{margin-right:1rem}.sm\:mr-6{margin-right:1.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-12{margin-top:3rem}.sm\:mt-16{margin-top:4rem}.sm\:mt-2{margin-top:.5rem}.sm\:mt-4{margin-top:1rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:inline-flex{display:inline-flex}.sm\:table-cell{display:table-cell}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:size-12{height:3rem;width:3rem}.sm\:size-5{height:1.25rem;width:1.25rem}.sm\:size-6{height:1.5rem;width:1.5rem}.sm\:h-12{height:3rem}.sm\:h-16{height:4rem}.sm\:h-3{height:.75rem}.sm\:h-32{height:8rem}.sm\:h-48{height:12rem}.sm\:h-5{height:1.25rem}.sm\:h-6{height:1.5rem}.sm\:h-8{height:2rem}.sm\:w-1\/2{width:50%}.sm\:w-1\/3{width:33.333333%}.sm\:w-1\/4{width:25%}.sm\:w-1\/6{width:16.666667%}.sm\:w-12{width:3rem}.sm\:w-16{width:4rem}.sm\:w-2\/3{width:66.666667%}.sm\:w-2\/5{width:40%}.sm\:w-20{width:5rem}.sm\:w-3{width:.75rem}.sm\:w-32{width:8rem}.sm\:w-48{width:12rem}.sm\:w-5{width:1.25rem}.sm\:w-52{width:13rem}.sm\:w-64{width:16rem}.sm\:w-full{width:100%}.sm\:max-w-full{max-width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xs{max-width:20rem}.sm\:flex-1{flex:1 1 0%}.sm\:translate-y-0{--tw-translate-y:0px}.sm\:scale-100,.sm\:translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-100{--tw-scale-x:1;--tw-scale-y:1}.sm\:scale-95{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:columns-2{-moz-columns:2;-moz-column-count:2;column-count:2}.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\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2{gap:.5rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:self-center{align-self:center}.sm\:overflow-x-auto{overflow-x:auto}.sm\:rounded{border-radius:.25rem}.sm\:border{border-width:1px}.sm\:border-b{border-bottom-width:1px}.sm\:border-b-0{border-bottom-width:0}.sm\:border-r{border-right-width:1px}.sm\:border-gray-400{--tw-border-opacity:1;border-color:hsl(220 14% 84%/var(--tw-border-opacity))}.sm\:bg-transparent{background-color:transparent}.sm\:p-0{padding:0}.sm\:p-1{padding:.25rem}.sm\:p-1\.5{padding:.375rem}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-0{padding-bottom:0;padding-top:0}.sm\:py-2{padding-bottom:.5rem;padding-top:.5rem}.sm\:py-3{padding-bottom:.75rem;padding-top:.75rem}.sm\:py-6{padding-bottom:1.5rem;padding-top:1.5rem}.sm\:pl-6{padding-left:1.5rem}.sm\:pt-10{padding-top:2.5rem}.sm\:pt-16{padding-top:4rem}.sm\:pt-6{padding-top:1.5rem}.sm\:text-left{text-align:left}.sm\:text-center{text-align:center}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{line-height:1.25rem}.sm\:text-sm,.sm\:text-sm\/6{font-size:.875rem}.sm\:text-sm\/6{line-height:1.5rem}.sm\:text-xl\/8{font-size:1.25rem;line-height:2rem}.sm\:text-xs{line-height:1rem}.sm\:text-xs,.sm\:text-xs\/6{font-size:.75rem}.sm\:leading-6,.sm\:text-xs\/6{line-height:1.5rem}.sm\:leading-none{line-height:1}.sm\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.sm\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.sm\:column-2{-moz-column-count:2;column-count:2;-moz-column-gap:1.5rem;column-gap:1.5rem}}@media (min-width:768px){.md\:static{position:static}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-start-5{grid-column-start:5}.md\:-mt-1{margin-top:-.25rem}.md\:ml-16{margin-left:4rem}.md\:mr-12{margin-right:3rem}.md\:mr-16{margin-right:4rem}.md\:mr-4{margin-right:1rem}.md\:block{display:block}.md\:inline-block{display:inline-block}.md\:hidden{display:none}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:w-1\/5{width:20%}.md\:w-auto{width:auto}.md\:max-w-lg{max-width:32rem}.md\:max-w-md{max-width:28rem}.md\:flex-1{flex:1 1 0%}.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-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:justify-between{justify-content:space-between}.md\:border-r{border-right-width:1px}.md\:px-5{padding-left:1.25rem;padding-right:1.25rem}.md\:py-1{padding-bottom:.25rem;padding-top:.25rem}.md\:pl-12{padding-left:3rem}.md\:pl-4{padding-left:1rem}.md\:pr-12{padding-right:3rem}.md\:text-right{text-align:right}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}.md\:column-2{-moz-column-count:2;column-count:2}.md\:column-2,.md\:column-3{-moz-column-gap:1.5rem;column-gap:1.5rem}.md\:column-3{-moz-column-count:3;column-count:3}}@media (min-width:1024px){.lg\:static{position:static}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-start-7{grid-column-start:7}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:my-6{margin-bottom:1.5rem;margin-top:1.5rem}.lg\:-ml-0\.5{margin-left:-.125rem}.lg\:ml-6{margin-left:1.5rem}.lg\:mr-1\.5{margin-right:.375rem}.lg\:mr-6{margin-right:1.5rem}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:table-cell{display:table-cell}.lg\:hidden{display:none}.lg\:h-16{height:4rem}.lg\:h-56{height:14rem}.lg\:w-1\/2{width:50%}.lg\:w-1\/4{width:25%}.lg\:w-16{width:4rem}.lg\:w-2\/5{width:40%}.lg\:w-24{width:6rem}.lg\:w-48{width:12rem}.lg\:min-w-72{min-width:18rem}.lg\:max-w-xs{max-width:20rem}.lg\:flex-1{flex:1 1 0%}.lg\:columns-3{-moz-columns:3;-moz-column-count:3;column-count:3}.lg\:columns-4{-moz-columns:4;-moz-column-count:4;column-count:4}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:flex-row-reverse{flex-direction:row-reverse}.lg\:gap-6{gap:1.5rem}.lg\:overflow-x-auto{overflow-x:auto}.lg\:border-0{border-width:0}.lg\:border-l{border-left-width:1px}.lg\:bg-transparent{background-color:transparent}.lg\:p-0{padding:0}.lg\:px-12{padding-left:3rem;padding-right:3rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-6{padding-bottom:1.5rem;padding-top:1.5rem}.lg\:pb-8{padding-bottom:2rem}.lg\:pl-0{padding-left:0}.lg\:pl-4{padding-left:1rem}.lg\:pt-0{padding-top:0}.lg\:pt-6{padding-top:1.5rem}.lg\:leading-normal{line-height:1.5}.lg\:text-gray-500{--tw-text-opacity:1;color:hsl(220 10% 69%/var(--tw-text-opacity))}.lg\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lg\:column-1{-moz-column-count:1;column-count:1;-moz-column-gap:1.5rem;column-gap:1.5rem}.lg\:w-sidebar{width:28%}}@media (min-width:1440px){.xl\:flex{display:flex}.xl\:w-1\/3{width:33.333333%}.xl\:w-1\/5{width:20%}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xl\:px-0{padding-left:0;padding-right:0}.xl\:px-6{padding-left:1.5rem;padding-right:1.5rem}} diff --git a/resources/assets/js/core.js b/resources/assets/js/core.js index 73b8c82f76..085e84b2f0 100644 --- a/resources/assets/js/core.js +++ b/resources/assets/js/core.js @@ -253,6 +253,8 @@ htmx.onLoad(function (content) { $('input[name="' + $(this).data("confirm") + '"]') .val(text) .blur(); + document.getElementById($(this).data("source")).dispatchEvent(new Event('blur')); + prompt($(this).data("alert"), text); }); diff --git a/resources/assets/js/core.min.js b/resources/assets/js/core.min.js index 92c765baa2..0a31cf6ea7 100644 --- a/resources/assets/js/core.min.js +++ b/resources/assets/js/core.min.js @@ -1 +1 @@ -function updateComments(t){var e=$(t).val(),n=e.length;$(".characterInfo .currentLength",$(t).parent()).html(n);var o=$(t).data("name")?$(t).data("name"):"";if(o.length>0){var i=-1===e.indexOf(o);$(".characterInfo .commentStatusName",$(t).parent()).toggleClass("hidden",!i)}var r=$(t).data("gender")?$(t).data("gender"):"";if(r.length>0){var a=-1!==e.search(/\bhe\b/i)||-1!==e.search(/\bhis\b/i)||-1!==e.search(/\bhim\b/i)||-1!==e.search(/\bhimself\b/i),l=-1!==e.search(/\bshe\b/i)||-1!==e.search(/\bher\b/i)||-1!==e.search(/\bherself\b/i),s=a&&"F"==r||l&&"M"==r;$(".characterInfo .commentStatusPronoun",$(t).parent()).toggleClass("hidden",!s)}}function updatePlaceholders(t){var e=$(t).val(),n=$(t).data("name")?$(t).data("name"):"";n.length>0&&(e=e.replace(/{name}/gi,n));var o=$(t).data("gender")?$(t).data("gender"):"";o.length>0&&("F"==o?e=(e=(e=(e=e.replace(/\bhe\b/g,"she").replace(/\bHe\b/g,"She")).replace(/\bhis\b/g,"her").replace(/\bHis\b/g,"Her")).replace(/\bhim\b/g,"her").replace(/\bHim\b/g,"Her")).replace(/\bhimself\b/g,"herself").replace(/\bHimself\b/g,"Herself"):"M"==o&&(e=(e=(e=e.replace(/\bshe\b/g,"he").replace(/\bShe\b/g,"He")).replace(/\bher\b/g,"his").replace(/\bHer\b/g,"His")).replace(/\bherself\b/g,"himself").replace(/\bHerself\b/g,"Himself"))),$(t).val(e)}!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Sortable=e()}(this,(function(){"use strict";function t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function e(e){for(var n=1;n=0||(i[n]=t[n]);return i}(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(i[n]=t[n])}return i}function a(t){return function(t){if(Array.isArray(t))return l(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return l(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n"===e[0]&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return!1}return!1}}function y(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function w(t,e,n,o){if(t){n=n||document;do{if(null!=e&&(">"===e[0]?t.parentNode===n&&b(t,e):b(t,e))||o&&t===n)return t;if(t===n)break}while(t=y(t))}return null}var E,S=/\s+/g;function k(t,e,n){if(t&&e)if(t.classList)t.classList[n?"add":"remove"](e);else{var o=(" "+t.className+" ").replace(S," ").replace(" "+e+" "," ");t.className=(o+(n?" "+e:"")).replace(S," ")}}function D(t,e,n){var o=t&&t.style;if(o){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];e in o||-1!==e.indexOf("webkit")||(e="-webkit-"+e),o[e]=n+("string"==typeof n?"":"px")}}function $(t,e){var n="";if("string"==typeof t)n=t;else do{var o=D(t,"transform");o&&"none"!==o&&(n=o+" "+n)}while(!e&&(t=t.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function C(t,e,n){if(t){var o=t.getElementsByTagName(e),i=0,r=o.length;if(n)for(;i=r:i<=r))return o;if(o===x())break;o=N(o,!1)}return!1}function T(t,e,n,o){for(var i=0,r=0,a=t.children;r2&&void 0!==arguments[2]?arguments[2]:{},i=o.evt,a=r(o,G);K.pluginEvent.bind(Yt)(t,n,e({dragEl:Q,parentEl:Z,ghostEl:J,rootEl:tt,nextEl:et,lastDownEl:nt,cloneEl:ot,cloneHidden:it,dragStarted:vt,putSortable:ut,activeSortable:Yt.active,originalEvent:i,oldIndex:rt,oldDraggableIndex:lt,newIndex:at,newDraggableIndex:st,hideGhostForTarget:Rt,unhideGhostForTarget:Ht,cloneNowHidden:function(){it=!0},cloneNowShown:function(){it=!1},dispatchSortableEvent:function(t){q({sortable:n,name:t,originalEvent:i})}},a))};function q(t){W(e({putSortable:ut,cloneEl:ot,targetEl:Q,rootEl:tt,oldIndex:rt,oldDraggableIndex:lt,newIndex:at,newDraggableIndex:st},t))}var Q,Z,J,tt,et,nt,ot,it,rt,at,lt,st,ct,ut,dt,ht,ft,pt,mt,gt,vt,bt,yt,wt,Et,St=!1,kt=!1,Dt=[],$t=!1,Ct=!1,xt=[],_t=!1,Mt=[],Tt="undefined"!=typeof document,At=f,Ot=u||c?"cssFloat":"float",Bt=Tt&&!p&&!f&&"draggable"in document.createElement("div"),Nt=function(){if(Tt){if(c)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),Pt=function(t,e){var n=D(t),o=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=T(t,0,e),r=T(t,1,e),a=i&&D(i),l=r&&D(r),s=a&&parseInt(a.marginLeft)+parseInt(a.marginRight)+_(i).width,c=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+_(r).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(i&&a.float&&"none"!==a.float){var u="left"===a.float?"left":"right";return!r||"both"!==l.clear&&l.clear!==u?"horizontal":"vertical"}return i&&("block"===a.display||"flex"===a.display||"table"===a.display||"grid"===a.display||s>=o&&"none"===n[Ot]||r&&"none"===n[Ot]&&s+c>o)?"vertical":"horizontal"},It=function(t){function e(t,n){return function(o,i,r,a){var l=o.options.group.name&&i.options.group.name&&o.options.group.name===i.options.group.name;if(null==t&&(n||l))return!0;if(null==t||!1===t)return!1;if(n&&"clone"===t)return t;if("function"==typeof t)return e(t(o,i,r,a),n)(o,i,r,a);var s=(n?o:i).options.group.name;return!0===t||"string"==typeof t&&t===s||t.join&&t.indexOf(s)>-1}}var o={},i=t.group;i&&"object"==n(i)||(i={name:i}),o.name=i.name,o.checkPull=e(i.pull,!0),o.checkPut=e(i.put),o.revertClone=i.revertClone,t.group=o},Rt=function(){!Nt&&J&&D(J,"display","none")},Ht=function(){!Nt&&J&&D(J,"display","")};Tt&&!p&&document.addEventListener("click",(function(t){if(kt)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),kt=!1,!1}),!0);var Lt=function(t){if(Q){t=t.touches?t.touches[0]:t;var e=(i=t.clientX,r=t.clientY,Dt.some((function(t){var e=t[F].options.emptyInsertThreshold;if(e&&!A(t)){var n=_(t),o=i>=n.left-e&&i<=n.right+e,l=r>=n.top-e&&r<=n.bottom+e;return o&&l?a=t:void 0}})),a);if(e){var n={};for(var o in t)t.hasOwnProperty(o)&&(n[o]=t[o]);n.target=n.rootEl=e,n.preventDefault=void 0,n.stopPropagation=void 0,e[F]._onDragOver(n)}}var i,r,a},Xt=function(t){Q&&Q.parentNode[F]._isOutsideThisEl(t.target)};function Yt(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=i({},e),t[F]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Pt(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Yt.supportPointer&&"PointerEvent"in window&&!h,emptyInsertThreshold:5};for(var o in K.initializePlugins(this,t,n),n)!(o in e)&&(e[o]=n[o]);for(var r in It(e),this)"_"===r.charAt(0)&&"function"==typeof this[r]&&(this[r]=this[r].bind(this));this.nativeDraggable=!e.forceFallback&&Bt,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?g(t,"pointerdown",this._onTapStart):(g(t,"mousedown",this._onTapStart),g(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(g(t,"dragover",this),g(t,"dragenter",this)),Dt.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),i(this,j())}function Ft(t,e,n,o,i,r,a,l){var s,d,h=t[F],f=h.options.onMove;return!window.CustomEvent||c||u?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=e,s.from=t,s.dragged=n,s.draggedRect=o,s.related=i||e,s.relatedRect=r||_(e),s.willInsertAfter=l,s.originalEvent=a,t.dispatchEvent(s),f&&(d=f.call(h,s,a)),d}function jt(t){t.draggable=!1}function Ut(){_t=!1}function zt(t){for(var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,o=0;n--;)o+=e.charCodeAt(n);return o.toString(36)}function Kt(t){return setTimeout(t,0)}function Wt(t){return clearTimeout(t)}Yt.prototype={constructor:Yt,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(bt=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,Q):this.options.direction},_onTapStart:function(t){if(t.cancelable){var e=this,n=this.el,o=this.options,i=o.preventOnFilter,r=t.type,a=t.touches&&t.touches[0]||t.pointerType&&"touch"===t.pointerType&&t,l=(a||t).target,s=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||l,c=o.filter;if(function(t){Mt.length=0;var e=t.getElementsByTagName("input"),n=e.length;for(;n--;){var o=e[n];o.checked&&Mt.push(o)}}(n),!Q&&!(/mousedown|pointerdown/.test(r)&&0!==t.button||o.disabled)&&!s.isContentEditable&&(this.nativeDraggable||!h||!l||"SELECT"!==l.tagName.toUpperCase())&&!((l=w(l,o.draggable,n,!1))&&l.animated||nt===l)){if(rt=O(l),lt=O(l,o.draggable),"function"==typeof c){if(c.call(this,t,l,this))return q({sortable:e,rootEl:s,name:"filter",targetEl:l,toEl:n,fromEl:n}),V("filter",e,{evt:t}),void(i&&t.cancelable&&t.preventDefault())}else if(c&&(c=c.split(",").some((function(o){if(o=w(s,o.trim(),n,!1))return q({sortable:e,rootEl:o,name:"filter",targetEl:l,fromEl:n,toEl:n}),V("filter",e,{evt:t}),!0}))))return void(i&&t.cancelable&&t.preventDefault());o.handle&&!w(s,o.handle,n,!1)||this._prepareDragStart(t,a,l)}}},_prepareDragStart:function(t,e,n){var o,i=this,r=i.el,a=i.options,l=r.ownerDocument;if(n&&!Q&&n.parentNode===r){var s=_(n);if(tt=r,Z=(Q=n).parentNode,et=Q.nextSibling,nt=n,ct=a.group,Yt.dragged=Q,dt={target:Q,clientX:(e||t).clientX,clientY:(e||t).clientY},mt=dt.clientX-s.left,gt=dt.clientY-s.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,Q.style["will-change"]="all",o=function(){V("delayEnded",i,{evt:t}),Yt.eventCanceled?i._onDrop():(i._disableDelayedDragEvents(),!d&&i.nativeDraggable&&(Q.draggable=!0),i._triggerDragStart(t,e),q({sortable:i,name:"choose",originalEvent:t}),k(Q,a.chosenClass,!0))},a.ignore.split(",").forEach((function(t){C(Q,t.trim(),jt)})),g(l,"dragover",Lt),g(l,"mousemove",Lt),g(l,"touchmove",Lt),g(l,"mouseup",i._onDrop),g(l,"touchend",i._onDrop),g(l,"touchcancel",i._onDrop),d&&this.nativeDraggable&&(this.options.touchStartThreshold=4,Q.draggable=!0),V("delayStart",this,{evt:t}),!a.delay||a.delayOnTouchOnly&&!e||this.nativeDraggable&&(u||c))o();else{if(Yt.eventCanceled)return void this._onDrop();g(l,"mouseup",i._disableDelayedDrag),g(l,"touchend",i._disableDelayedDrag),g(l,"touchcancel",i._disableDelayedDrag),g(l,"mousemove",i._delayedDragTouchMoveHandler),g(l,"touchmove",i._delayedDragTouchMoveHandler),a.supportPointer&&g(l,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(o,a.delay)}}},_delayedDragTouchMoveHandler:function(t){var e=t.touches?t.touches[0]:t;Math.max(Math.abs(e.clientX-this._lastX),Math.abs(e.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){Q&&jt(Q),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;v(t,"mouseup",this._disableDelayedDrag),v(t,"touchend",this._disableDelayedDrag),v(t,"touchcancel",this._disableDelayedDrag),v(t,"mousemove",this._delayedDragTouchMoveHandler),v(t,"touchmove",this._delayedDragTouchMoveHandler),v(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?g(document,"pointermove",this._onTouchMove):g(document,e?"touchmove":"mousemove",this._onTouchMove):(g(Q,"dragend",this),g(tt,"dragstart",this._onDragStart));try{document.selection?Kt((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){if(St=!1,tt&&Q){V("dragStarted",this,{evt:e}),this.nativeDraggable&&g(document,"dragover",Xt);var n=this.options;!t&&k(Q,n.dragClass,!1),k(Q,n.ghostClass,!0),Yt.active=this,t&&this._appendGhost(),q({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(ht){this._lastX=ht.clientX,this._lastY=ht.clientY,Rt();for(var t=document.elementFromPoint(ht.clientX,ht.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(ht.clientX,ht.clientY))!==e;)e=t;if(Q.parentNode[F]._isOutsideThisEl(t),e)do{if(e[F]){if(e[F]._onDragOver({clientX:ht.clientX,clientY:ht.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break}t=e}while(e=e.parentNode);Ht()}},_onTouchMove:function(t){if(dt){var e=this.options,n=e.fallbackTolerance,o=e.fallbackOffset,i=t.touches?t.touches[0]:t,r=J&&$(J,!0),a=J&&r&&r.a,l=J&&r&&r.d,s=At&&Et&&B(Et),c=(i.clientX-dt.clientX+o.x)/(a||1)+(s?s[0]-xt[0]:0)/(a||1),u=(i.clientY-dt.clientY+o.y)/(l||1)+(s?s[1]-xt[1]:0)/(l||1);if(!Yt.active&&!St){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))i.right+r||t.clientY>o.bottom&&t.clientX>o.left:t.clientY>i.bottom+r||t.clientX>o.right&&t.clientY>o.top}(t,r,this)&&!g.animated){if(g===Q)return j(!1);if(g&&a===t.target&&(l=g),l&&(o=_(l)),!1!==Ft(tt,a,Q,n,l,o,t,!!l))return X(),g&&g.nextSibling?a.insertBefore(Q,g.nextSibling):a.appendChild(Q),Z=a,U(),j(!0)}else if(g&&function(t,e,n){var o=_(T(n.el,0,n.options,!0)),i=Y(n.el,n.options,J),r=10;return e?t.clientXu+c*r/2:sd-wt)return-yt}else if(s>u+c*(1-i)/2&&sd-c*r/2))return s>u+c/2?1:-1;return 0}(t,l,o,r,$?1:s.swapThreshold,null==s.invertedSwapThreshold?s.swapThreshold:s.invertedSwapThreshold,Ct,bt===l),0!==b){var N=O(Q);do{N-=b,E=Z.children[N]}while(E&&("none"===D(E,"display")||E===J))}if(0===b||E===l)return j(!1);bt=l,yt=b;var P=l.nextElementSibling,I=!1,H=Ft(tt,a,Q,n,l,o,t,I=1===b);if(!1!==H)return 1!==H&&-1!==H||(I=1===H),_t=!0,setTimeout(Ut,30),X(),I&&!P?a.appendChild(Q):l.parentNode.insertBefore(Q,I?P:l),x&&R(x,0,B-x.scrollTop),Z=Q.parentNode,void 0===y||Ct||(wt=Math.abs(y-_(l)[C])),U(),j(!0)}if(a.contains(Q))return j(!1)}return!1}function L(s,c){V(s,p,e({evt:t,isOwner:d,axis:r?"vertical":"horizontal",revert:i,dragRect:n,targetRect:o,canSort:h,fromSortable:f,target:l,completed:j,onMove:function(e,o){return Ft(tt,a,Q,n,e,_(e),t,o)},changed:U},c))}function X(){L("dragOverAnimationCapture"),p.captureAnimationState(),p!==f&&f.captureAnimationState()}function j(e){return L("dragOverCompleted",{insertion:e}),e&&(d?u._hideClone():u._showClone(p),p!==f&&(k(Q,ut?ut.options.ghostClass:u.options.ghostClass,!1),k(Q,s.ghostClass,!0)),ut!==p&&p!==Yt.active?ut=p:p===Yt.active&&ut&&(ut=null),f===p&&(p._ignoreWhileAnimating=l),p.animateAll((function(){L("dragOverAnimationComplete"),p._ignoreWhileAnimating=null})),p!==f&&(f.animateAll(),f._ignoreWhileAnimating=null)),(l===Q&&!Q.animated||l===a&&!l.animated)&&(bt=null),s.dragoverBubble||t.rootEl||l===document||(Q.parentNode[F]._isOutsideThisEl(t.target),!e&&Lt(t)),!s.dragoverBubble&&t.stopPropagation&&t.stopPropagation(),m=!0}function U(){at=O(Q),st=O(Q,s.draggable),q({sortable:p,name:"change",toEl:a,newIndex:at,newDraggableIndex:st,originalEvent:t})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){v(document,"mousemove",this._onTouchMove),v(document,"touchmove",this._onTouchMove),v(document,"pointermove",this._onTouchMove),v(document,"dragover",Lt),v(document,"mousemove",Lt),v(document,"touchmove",Lt)},_offUpEvents:function(){var t=this.el.ownerDocument;v(t,"mouseup",this._onDrop),v(t,"touchend",this._onDrop),v(t,"pointerup",this._onDrop),v(t,"touchcancel",this._onDrop),v(document,"selectstart",this)},_onDrop:function(t){var e=this.el,n=this.options;at=O(Q),st=O(Q,n.draggable),V("drop",this,{evt:t}),Z=Q&&Q.parentNode,at=O(Q),st=O(Q,n.draggable),Yt.eventCanceled||(St=!1,Ct=!1,$t=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Wt(this.cloneId),Wt(this._dragStartId),this.nativeDraggable&&(v(document,"drop",this),v(e,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),h&&D(document.body,"user-select",""),D(Q,"transform",""),t&&(vt&&(t.cancelable&&t.preventDefault(),!n.dropBubble&&t.stopPropagation()),J&&J.parentNode&&J.parentNode.removeChild(J),(tt===Z||ut&&"clone"!==ut.lastPutMode)&&ot&&ot.parentNode&&ot.parentNode.removeChild(ot),Q&&(this.nativeDraggable&&v(Q,"dragend",this),jt(Q),Q.style["will-change"]="",vt&&!St&&k(Q,ut?ut.options.ghostClass:this.options.ghostClass,!1),k(Q,this.options.chosenClass,!1),q({sortable:this,name:"unchoose",toEl:Z,newIndex:null,newDraggableIndex:null,originalEvent:t}),tt!==Z?(at>=0&&(q({rootEl:Z,name:"add",toEl:Z,fromEl:tt,originalEvent:t}),q({sortable:this,name:"remove",toEl:Z,originalEvent:t}),q({rootEl:Z,name:"sort",toEl:Z,fromEl:tt,originalEvent:t}),q({sortable:this,name:"sort",toEl:Z,originalEvent:t})),ut&&ut.save()):at!==rt&&at>=0&&(q({sortable:this,name:"update",toEl:Z,originalEvent:t}),q({sortable:this,name:"sort",toEl:Z,originalEvent:t})),Yt.active&&(null!=at&&-1!==at||(at=rt,st=lt),q({sortable:this,name:"end",toEl:Z,originalEvent:t}),this.save())))),this._nulling()},_nulling:function(){V("nulling",this),tt=Q=Z=J=et=ot=nt=it=dt=ht=vt=at=st=rt=lt=bt=yt=ut=ct=Yt.dragged=Yt.ghost=Yt.clone=Yt.active=null,Mt.forEach((function(t){t.checked=!0})),Mt.length=ft=pt=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":Q&&(this._onDragOver(t),function(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move");t.cancelable&&t.preventDefault()}(t));break;case"selectstart":t.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,o=0,i=n.length,r=this.options;o1&&(pe.forEach((function(t){o.addAnimationState({target:t,rect:ve?_(t):i}),X(t),t.fromRect=i,e.removeAnimationState(t)})),ve=!1,function(t,e){pe.forEach((function(n,o){var i=e.children[n.sortableIndex+(t?Number(o):0)];i?e.insertBefore(n,i):e.appendChild(n)}))}(!this.options.removeCloneOnHide,n))},dragOverCompleted:function(t){var e=t.sortable,n=t.isOwner,o=t.insertion,i=t.activeSortable,r=t.parentEl,a=t.putSortable,l=this.options;if(o){if(n&&i._hideClone(),ge=!1,l.animation&&pe.length>1&&(ve||!n&&!i.options.sort&&!a)){var s=_(de,!1,!0,!0);pe.forEach((function(t){t!==de&&(L(t,s),r.appendChild(t))})),ve=!0}if(!n)if(ve||we(),pe.length>1){var c=fe;i._showClone(e),i.options.animation&&!fe&&c&&me.forEach((function(t){i.addAnimationState({target:t,rect:he}),t.fromRect=he,t.thisAnimationDuration=null}))}else i._showClone(e)}},dragOverAnimationCapture:function(t){var e=t.dragRect,n=t.isOwner,o=t.activeSortable;if(pe.forEach((function(t){t.thisAnimationDuration=null})),o.options.animation&&!n&&o.multiDrag.isMultiDrag){he=i({},e);var r=$(de,!0);he.top-=r.f,he.left-=r.e}},dragOverAnimationComplete:function(){ve&&(ve=!1,we())},drop:function(t){var e=t.originalEvent,n=t.rootEl,o=t.parentEl,i=t.sortable,r=t.dispatchSortableEvent,a=t.oldIndex,l=t.putSortable,s=l||this.sortable;if(e){var c=this.options,u=o.children;if(!be)if(c.multiDragKey&&!this.multiDragKeyDown&&this._deselectMultiDrag(),k(de,c.selectedClass,!~pe.indexOf(de)),~pe.indexOf(de))pe.splice(pe.indexOf(de),1),ce=null,W({sortable:i,rootEl:n,name:"deselect",targetEl:de,originalEvent:e});else{if(pe.push(de),W({sortable:i,rootEl:n,name:"select",targetEl:de,originalEvent:e}),e.shiftKey&&ce&&i.el.contains(ce)){var d,h,f=O(ce),p=O(de);if(~f&&~p&&f!==p)for(p>f?(h=f,d=p):(h=p,d=f+1);h1){var m=_(de),g=O(de,":not(."+this.options.selectedClass+")");if(!ge&&c.animation&&(de.thisAnimationDuration=null),s.captureAnimationState(),!ge&&(c.animation&&(de.fromRect=m,pe.forEach((function(t){if(t.thisAnimationDuration=null,t!==de){var e=ve?_(t):m;t.fromRect=e,s.addAnimationState({target:t,rect:e})}}))),we(),pe.forEach((function(t){u[g]?o.insertBefore(t,u[g]):o.appendChild(t),g++})),a===O(de))){var v=!1;pe.forEach((function(t){t.sortableIndex===O(t)||(v=!0)})),v&&(r("update"),r("sort"))}pe.forEach((function(t){X(t)})),s.animateAll()}ue=s}(n===o||l&&"clone"!==l.lastPutMode)&&me.forEach((function(t){t.parentNode&&t.parentNode.removeChild(t)}))}},nullingGlobal:function(){this.isMultiDrag=be=!1,me.length=0},destroyGlobal:function(){this._deselectMultiDrag(),v(document,"pointerup",this._deselectMultiDrag),v(document,"mouseup",this._deselectMultiDrag),v(document,"touchend",this._deselectMultiDrag),v(document,"keydown",this._checkKeyDown),v(document,"keyup",this._checkKeyUp)},_deselectMultiDrag:function(t){if(!(void 0!==be&&be||ue!==this.sortable||t&&w(t.target,this.options.draggable,this.sortable.el,!1)||t&&0!==t.button))for(;pe.length;){var e=pe[0];k(e,this.options.selectedClass,!1),pe.shift(),W({sortable:this.sortable,rootEl:this.sortable.el,name:"deselect",targetEl:e,originalEvent:t})}},_checkKeyDown:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!0)},_checkKeyUp:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!1)}},i(t,{pluginName:"multiDrag",utils:{select:function(t){var e=t.parentNode[F];e&&e.options.multiDrag&&!~pe.indexOf(t)&&(ue&&ue!==e&&(ue.multiDrag._deselectMultiDrag(),ue=e),k(t,e.options.selectedClass,!0),pe.push(t))},deselect:function(t){var e=t.parentNode[F],n=pe.indexOf(t);e&&e.options.multiDrag&&~n&&(k(t,e.options.selectedClass,!1),pe.splice(n,1))}},eventProperties:function(){var t=this,e=[],n=[];return pe.forEach((function(o){var i;e.push({multiDragElement:o,index:o.sortableIndex}),i=ve&&o!==de?-1:ve?O(o,":not(."+t.options.selectedClass+")"):O(o),n.push({multiDragElement:o,index:i})})),{items:a(pe),clones:[].concat(me),oldIndicies:e,newIndicies:n}},optionListeners:{multiDragKey:function(t){return"ctrl"===(t=t.toLowerCase())?t="Control":t.length>1&&(t=t.charAt(0).toUpperCase()+t.substr(1)),t}}})}),Yt})),document.addEventListener("alpine:init",(()=>{var t;window.innerWidth<768||Alpine.directive("tooltip",((e,{modifiers:n,expression:o},{cleanup:i})=>{var r=!1;let a=o,l=!n.includes("noarrow"),s="top",c="tooltip-"+Date.now().toString(36)+Math.random().toString(36).substring(2,7),u=["top","bottom","left","right"],d=getComputedStyle(e).position;for(let t of u)if(n.includes(t)){s=t;break}["relative","absolute","fixed"].includes(d)||(e.style.position="relative");let h=`\n
\n
\n

${a}

\n
\n
\n
\n
\n
\n `;e.dataset.tooltip=c;let f=function(n){null!=t&&t.dispatchEvent(new Event("mouseleave")),r||(e.insertAdjacentHTML("beforeend",h),r=!0,t=e)},p=function(e){var n=document.getElementById(e.target.dataset.tooltip);n&&n.remove(),r=!1,t=null};e.addEventListener("mouseenter",f),e.addEventListener("mouseleave",p),document.addEventListener("htmx:beforeRequest",p),i((()=>{e.removeEventListener("mouseenter",f),e.removeEventListener("mouseleave",p)}))}))})),document.addEventListener("htmx:confirm",(function(t){t.detail.elt.hasAttribute("hx-boost")&&(t.preventDefault(),null!=window.onbeforeunload?window.confirm(Gibbon.config.htmx.unload_confirm)&&(window.onbeforeunload=null,t.detail.issueRequest(!0)):t.detail.issueRequest(!0))}),!1),htmx.onLoad((function(t){$("#sidebarToggle").click((function(){$("#sidebar").hasClass("lg:w-sidebar")?($("#sidebar").removeClass("lg:w-sidebar"),$("#sidebar").addClass("lg:hidden"),$(this).html("«")):($("#sidebar").removeClass("lg:hidden"),$("#sidebar").addClass("lg:w-sidebar"),$(this).html("»"))})),$(document).on("click",'.checkall[type="checkbox"]',(function(){var t=this,e=t.checked;t.parentElement.parentElement.closest(".bulkActionForm, .checkboxGroup").querySelectorAll('input[type="checkbox"]').forEach((function(n,o,i){if(n===t)return;n.checked=e;let r=n.closest("tr");null!=r&&r.classList.toggle("selected",n.checked),o==i.length-1&&$(n).trigger("change")}))})),$(document).on("click, change",".bulkActionForm .bulkCheckbox :checkbox",(function(){var t=$(this).parents(".bulkActionForm").find(".bulkCheckbox :checkbox"),e=t.filter(":checked").length;if(e>0){if($(".bulkActionCount span").html(e),$(".bulkActionPanel").hasClass("hidden")){$(".bulkActionPanel").removeClass("hidden");var n=$(this).parents(".bulkActionForm").find(".dataTable header"),o=$(".bulkActionPanel").innerHeight();$(".bulkActionPanel").css("top",n.outerHeight(!1)-o+6),$(".bulkActionPanel :input").trigger("showhide")}}else $(".bulkActionPanel").addClass("hidden");$(".checkall").prop("checked",e>0),$(".checkall").prop("indeterminate",e>0&&e')),$(".showHide",t.blockTemplate).hide(),$(":input",t.blockTemplate).prop("disabled",!0),t.settings.currentBlocks)t.addBlock(t.settings.currentBlocks[e]),t.identifiers.push(e);$(t.container).on("delete",(function(e,n){confirm(t.settings.deleteMessage)&&t.removeBlock(n)})).on("showHide",(function(t,e,n){$(n).hasClass("showHidden")?($(n).removeClass("showHidden"),$("img",n).prop("src",$(n).data("off")),e.find(".showHide").hide()):($(n).addClass("showHidden"),$("img",n).prop("src",$(n).data("on")),e.find(".showHide").show(),$("textarea.tinymce",e).each((function(t,e){tinymce.EditorManager.execCommand("mceAddEditor",!1,$(this).prop("id"))})))})).on("hideAll",(function(t,e,n){$(".showHide").hide(),$('a.blockButton[data-event="showHide"]').each((function(t,e){$(e).removeClass("showHidden"),$("img",e).prop("src",$(e).data("off"))}))})),t.refresh()},CustomBlocks.prototype.addBlock=function(t){var e=this;e.blockCount++;var n=$(e.blockTemplate).clone().css("display","block").appendTo($(".blocks",e.container));$(n).append(''),e.initBlock(n,t),e.refresh(),$(e.container).trigger("addedBlock",[n])},CustomBlocks.prototype.removeBlock=function(t){var e=this;e.blockCount--;var n=e.identifiers.indexOf(t.identifier);-1!==n&&e.identifiers.splice(n,1),e.removeBlockValidation(t),$(t).fadeOut(e.settings.animationSpeed,(function(){$(t).detach().remove(),e.refresh()})),$(e.container).trigger("removedBlock",[t])},CustomBlocks.prototype.initBlock=function(t,e){var n=this;t.blockNumber=n.blockCount,t.identifier=e.identifier,n.loadBlockInputData(t,e),n.renameBlockFields(t),n.addBlockValidation(t),n.addBlockEvents(t)},CustomBlocks.prototype.loadBlockInputData=function(t,e){for(key in $(":input",t).prop("disabled",!1),e)$("[name='"+key+"']:not([type='file']):not([type='radio']):not([type='checkbox'])",t).val(e[key]),$("input:radio[name='"+key+"']",t).each((function(){$(this).val()==e[key]&&$(this).attr("checked",!0)})),$("input:checkbox[name='"+key+"'],input:checkbox[name='"+key+"[]']",t).each((function(){(Array.isArray(e[key])?e[key]:e[key].split(",")).includes($(this).val())&&$(this).attr("checked",!0)}));(e.readonly||[]).forEach((function(e){$("[name='"+e+"']",t).prop("readonly",!0).addClass("readonly"),$("select[name='"+e+"'] option:not(:selected)",t).prop("disabled",!0)}))},CustomBlocks.prototype.renameBlockFields=function(t){var e=this;$("input, textarea, select",t).each((function(n,o){if($(this).prop("name")!=e.settings.orderName+"[]"){var i;switch(e.settings.inputNameStrategy){case"object":i=$(e.container).prop("id")+"["+t.blockNumber+"]["+$(this).prop("name")+"]";break;case"array":i=$(this).prop("name")+"["+t.blockNumber+"]";break;case"string":i=$(this).prop("name")+t.blockNumber}i=i.replace("[]]","][]"),$(this).prop("name",i),""!=$(this).prop("id")&&$(this).prop("id",$(this).prop("id")+t.blockNumber)}})),$("label",t).each((function(e,n){$(this).prop("for",$(this).prop("for")+t.blockNumber)})),$("textarea[data-tinymce]",t).each((function(t,e){var n=$(this).is(":hidden"),o={id:$(this).prop("id"),value:$(this).val(),showMedia:$(this).data("media"),rows:$(this).attr("rows")};$(this).parent().load("./modules/Planner/planner_editorAjax.php",o,(function(t,e,i){n||tinymce.EditorManager.execCommand("mceAddEditor",!1,o.id)}))}))},CustomBlocks.prototype.addBlockValidation=function(block){var _=this;$("input, textarea, select",block).each((function(index,element){if($(this).data("validation")&&!$(this).prop("readonly")){var id=$(this).prop("id");eval("block."+id+"Validate = new LiveValidation('"+id+"', {});"),$(this).data("validation").forEach((function(item){eval("block."+id+"Validate.add("+item.type+", {"+item.params+"});")}))}}))},CustomBlocks.prototype.removeBlockValidation=function(block){var _=this;$("input, textarea, select",block).each((function(index,element){if($(this).data("validation")&&!$(this).prop("readonly")){var id=$(this).prop("id");eval("block."+id+"Validate.destroy();")}})),$("textarea.tinymce",block).each((function(t,e){tinymce.EditorManager.execCommand("mceRemoveEditor",!1,$(this).prop("id"))}))},CustomBlocks.prototype.addBlockEvents=function(t){var e=this;$("a.blockButton",t).each((function(n,o){$(o).click((function(n){n.preventDefault(),$(e.container).trigger($(this).data("event"),[t,this])}))}))},CustomBlocks.prototype.refresh=function(){var t=this;$(".blockCount",t.container).val(t.blockCount),$(".blockPlaceholder",t.container).css("display",t.blockCount>0?"none":"block"),$("select.addBlock",t.container).val("")},$.prototype.gibbonCustomBlocks=function(t){this.gibbonCustomBlocks=new CustomBlocks(this,t),this.data("gibbonCustomBlocks",this.gibbonCustomBlocks)};var DataTable=window.DataTable||{};DataTable=function(t,e,n,o){var i=this;i.table=$(t),i.path=e+" #"+$(t).attr("id")+" > .dataTable",i.filters=n,i.identifier=o,0==i.filters.sortBy.length&&(i.filters.sortBy={}),0==i.filters.filterBy.length&&(i.filters.filterBy={}),i.init()},DataTable.prototype.init=function(){var t=this;$(t.table).on("click",".paginate",(function(){var e=$(".dataTable",t.table).data("results");t.filters.pageMax=Math.ceil(e/t.filters.pageSize),t.filters.page=Math.min($(this).data("page"),t.filters.pageMax),t.refresh()})),$(t.table).on("click",".column.sortable",(function(e){var n=$(this).data("sort").split(",");0!=n.filter((function(e){return e in t.filters.sortBy})).length||e.shiftKey||(t.filters.sortBy={}),n.forEach((function(e){t.filters.sortBy[e]="ASC"==t.filters.sortBy[e]?"DESC":"ASC"})),t.refresh()})),$(t.table).on("click",".filter",(function(){var e=$(this).data("filter");$(this).hasClass("clear")?(t.filters.filterBy={"":""},t.filters.searchBy.columns=[""]):e in t.filters.filterBy&&("in"==e&&(t.filters.searchBy.columns=[""]),delete t.filters.filterBy[e]),jQuery.isEmptyObject(t.filters.filterBy)&&(t.filters.filterBy={"":""}),t.filters.page=1,t.refresh()})),$(t.table).on("change",".filters",(function(){var e=$(this).val().split(":"),n=e[0],o=e[1];t.filters.filterBy[n]=o,t.filters.page=1,t.refresh()})),$(t.table).on("change",".limit",(function(){var e=$(".dataTable",t.table).data("results");t.filters.pageSize=parseInt($(this).val()),t.filters.pageMax=Math.ceil(e/t.filters.pageSize),t.filters.page=Math.min(t.filters.page,t.filters.pageMax),t.refresh()}))},DataTable.prototype.refresh=function(){var t=this,e=setTimeout((function(){$(".pagination",t.table).prepend('')}),500),n={};""!=t.identifier?n[t.identifier]=t.filters:n=t.filters,$(t.table).load(t.path,n,(function(t,n,o){$(".bulkActionPanel").addClass("hidden"),clearTimeout(e),htmx.process(this)}))},$.prototype.gibbonDataTable=function(t,e,n){this.gibbonDataTable=new DataTable(this,t,e,n)};var MultiSelect=window.MultiSelect||{};function debounce(t,e){var n;return e=e||300,function(){clearTimeout(n);var o=arguments;n=setTimeout((function(){t.apply(this,o)}),e)}}MultiSelect=function(t,e){var n=this;n.container=$(t),n.selectSource=$("#"+e+"Source",t),n.selectDestination=$("#"+e,t),n.name=e,n.sortBy=$("#"+e+"Sort",t),n.init()},MultiSelect.prototype.init=function(){var t=this;$("#"+t.name+"Add").click((function(){t.transferOption(!0)})),$("#"+t.name+"Remove",t.container).click((function(){t.transferOption(!1)}));var e=t.container.parents("form");$("input[type='Submit'],button[type='Submit'],button[value~='Save']",e).click((function(){$("option",t.selectDestination).each((function(){$(this).prop("selected",!0)})),document.getElementById(t.name).dispatchEvent(new Event("change"))})),t.sortBy.change((function(){t.sortSelects()})),$("#"+t.name+"Search",t.container).keyup((function(){var e=$(this).val().toLowerCase();$("option",t.selectSource).each((function(){var t=$(this);t.text().toLowerCase().includes(e)?t.show():t.hide()}))}))},MultiSelect.prototype.transferOption=function(t){var e=this,n=t?e.selectSource:e.selectDestination,o=t?e.selectDestination:e.selectSource;n.find("option:selected").each((function(){var t=$(this).clone();if($(this).parent().is("optgroup")){var e=$("optgroup[label='"+$(this).parent().attr("label")+"']",o);0==e.length&&(e=$(this).parent().clone().html(""),o.append(e)),t.data("parent",e),e.append(t)}else o.append(t);$(this).detach().remove()})),e.sortSelects(),o.change().focus()},MultiSelect.prototype.sortSelects=function(){var t=this,e=null,n=null;0!==t.sortBy.length&&(n=t.sortBy.val()),null!=n&&"Sort by Name"!=n&&(e=t.container.data("sortable")[n]),t.sortSelect(t.selectSource,e),t.sortSelect(t.selectDestination,e)},MultiSelect.prototype.sortSelect=function(t,e){var n=this;$("optgroup",t).each((function(){n.sortSelect($(this),e)}));var o=$("option",t);t.is("select")&&(o=o.not("optgroup option")),null==e&&(e={});var i=o.map((function(t,n){return{tSort:e[n.value]+$(n).text(),t:$(n).text(),v:n.value}})).get();i.sort((function(t,e){return t.tSort>e.tSort?1:t.tSort0){var i=-1===e.indexOf(o);$(".characterInfo .commentStatusName",$(t).parent()).toggleClass("hidden",!i)}var r=$(t).data("gender")?$(t).data("gender"):"";if(r.length>0){var a=-1!==e.search(/\bhe\b/i)||-1!==e.search(/\bhis\b/i)||-1!==e.search(/\bhim\b/i)||-1!==e.search(/\bhimself\b/i),l=-1!==e.search(/\bshe\b/i)||-1!==e.search(/\bher\b/i)||-1!==e.search(/\bherself\b/i),s=a&&"F"==r||l&&"M"==r;$(".characterInfo .commentStatusPronoun",$(t).parent()).toggleClass("hidden",!s)}}function updatePlaceholders(t){var e=$(t).val(),n=$(t).data("name")?$(t).data("name"):"";n.length>0&&(e=e.replace(/{name}/gi,n));var o=$(t).data("gender")?$(t).data("gender"):"";o.length>0&&("F"==o?e=(e=(e=(e=e.replace(/\bhe\b/g,"she").replace(/\bHe\b/g,"She")).replace(/\bhis\b/g,"her").replace(/\bHis\b/g,"Her")).replace(/\bhim\b/g,"her").replace(/\bHim\b/g,"Her")).replace(/\bhimself\b/g,"herself").replace(/\bHimself\b/g,"Herself"):"M"==o&&(e=(e=(e=e.replace(/\bshe\b/g,"he").replace(/\bShe\b/g,"He")).replace(/\bher\b/g,"his").replace(/\bHer\b/g,"His")).replace(/\bherself\b/g,"himself").replace(/\bHerself\b/g,"Himself"))),$(t).val(e)}!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Sortable=e()}(this,(function(){"use strict";function t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function e(e){for(var n=1;n=0||(i[n]=t[n]);return i}(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(i[n]=t[n])}return i}function a(t){return function(t){if(Array.isArray(t))return l(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return l(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n"===e[0]&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return!1}return!1}}function y(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function w(t,e,n,o){if(t){n=n||document;do{if(null!=e&&(">"===e[0]?t.parentNode===n&&b(t,e):b(t,e))||o&&t===n)return t;if(t===n)break}while(t=y(t))}return null}var E,S=/\s+/g;function k(t,e,n){if(t&&e)if(t.classList)t.classList[n?"add":"remove"](e);else{var o=(" "+t.className+" ").replace(S," ").replace(" "+e+" "," ");t.className=(o+(n?" "+e:"")).replace(S," ")}}function D(t,e,n){var o=t&&t.style;if(o){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];e in o||-1!==e.indexOf("webkit")||(e="-webkit-"+e),o[e]=n+("string"==typeof n?"":"px")}}function $(t,e){var n="";if("string"==typeof t)n=t;else do{var o=D(t,"transform");o&&"none"!==o&&(n=o+" "+n)}while(!e&&(t=t.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function C(t,e,n){if(t){var o=t.getElementsByTagName(e),i=0,r=o.length;if(n)for(;i=r:i<=r))return o;if(o===x())break;o=N(o,!1)}return!1}function T(t,e,n,o){for(var i=0,r=0,a=t.children;r2&&void 0!==arguments[2]?arguments[2]:{},i=o.evt,a=r(o,G);K.pluginEvent.bind(Yt)(t,n,e({dragEl:Q,parentEl:Z,ghostEl:J,rootEl:tt,nextEl:et,lastDownEl:nt,cloneEl:ot,cloneHidden:it,dragStarted:vt,putSortable:ut,activeSortable:Yt.active,originalEvent:i,oldIndex:rt,oldDraggableIndex:lt,newIndex:at,newDraggableIndex:st,hideGhostForTarget:Rt,unhideGhostForTarget:Ht,cloneNowHidden:function(){it=!0},cloneNowShown:function(){it=!1},dispatchSortableEvent:function(t){q({sortable:n,name:t,originalEvent:i})}},a))};function q(t){W(e({putSortable:ut,cloneEl:ot,targetEl:Q,rootEl:tt,oldIndex:rt,oldDraggableIndex:lt,newIndex:at,newDraggableIndex:st},t))}var Q,Z,J,tt,et,nt,ot,it,rt,at,lt,st,ct,ut,dt,ht,ft,pt,mt,gt,vt,bt,yt,wt,Et,St=!1,kt=!1,Dt=[],$t=!1,Ct=!1,xt=[],_t=!1,Mt=[],Tt="undefined"!=typeof document,At=f,Ot=u||c?"cssFloat":"float",Bt=Tt&&!p&&!f&&"draggable"in document.createElement("div"),Nt=function(){if(Tt){if(c)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),Pt=function(t,e){var n=D(t),o=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=T(t,0,e),r=T(t,1,e),a=i&&D(i),l=r&&D(r),s=a&&parseInt(a.marginLeft)+parseInt(a.marginRight)+_(i).width,c=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+_(r).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(i&&a.float&&"none"!==a.float){var u="left"===a.float?"left":"right";return!r||"both"!==l.clear&&l.clear!==u?"horizontal":"vertical"}return i&&("block"===a.display||"flex"===a.display||"table"===a.display||"grid"===a.display||s>=o&&"none"===n[Ot]||r&&"none"===n[Ot]&&s+c>o)?"vertical":"horizontal"},It=function(t){function e(t,n){return function(o,i,r,a){var l=o.options.group.name&&i.options.group.name&&o.options.group.name===i.options.group.name;if(null==t&&(n||l))return!0;if(null==t||!1===t)return!1;if(n&&"clone"===t)return t;if("function"==typeof t)return e(t(o,i,r,a),n)(o,i,r,a);var s=(n?o:i).options.group.name;return!0===t||"string"==typeof t&&t===s||t.join&&t.indexOf(s)>-1}}var o={},i=t.group;i&&"object"==n(i)||(i={name:i}),o.name=i.name,o.checkPull=e(i.pull,!0),o.checkPut=e(i.put),o.revertClone=i.revertClone,t.group=o},Rt=function(){!Nt&&J&&D(J,"display","none")},Ht=function(){!Nt&&J&&D(J,"display","")};Tt&&!p&&document.addEventListener("click",(function(t){if(kt)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),kt=!1,!1}),!0);var Lt=function(t){if(Q){t=t.touches?t.touches[0]:t;var e=(i=t.clientX,r=t.clientY,Dt.some((function(t){var e=t[F].options.emptyInsertThreshold;if(e&&!A(t)){var n=_(t),o=i>=n.left-e&&i<=n.right+e,l=r>=n.top-e&&r<=n.bottom+e;return o&&l?a=t:void 0}})),a);if(e){var n={};for(var o in t)t.hasOwnProperty(o)&&(n[o]=t[o]);n.target=n.rootEl=e,n.preventDefault=void 0,n.stopPropagation=void 0,e[F]._onDragOver(n)}}var i,r,a},Xt=function(t){Q&&Q.parentNode[F]._isOutsideThisEl(t.target)};function Yt(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=i({},e),t[F]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Pt(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Yt.supportPointer&&"PointerEvent"in window&&!h,emptyInsertThreshold:5};for(var o in K.initializePlugins(this,t,n),n)!(o in e)&&(e[o]=n[o]);for(var r in It(e),this)"_"===r.charAt(0)&&"function"==typeof this[r]&&(this[r]=this[r].bind(this));this.nativeDraggable=!e.forceFallback&&Bt,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?g(t,"pointerdown",this._onTapStart):(g(t,"mousedown",this._onTapStart),g(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(g(t,"dragover",this),g(t,"dragenter",this)),Dt.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),i(this,j())}function Ft(t,e,n,o,i,r,a,l){var s,d,h=t[F],f=h.options.onMove;return!window.CustomEvent||c||u?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=e,s.from=t,s.dragged=n,s.draggedRect=o,s.related=i||e,s.relatedRect=r||_(e),s.willInsertAfter=l,s.originalEvent=a,t.dispatchEvent(s),f&&(d=f.call(h,s,a)),d}function jt(t){t.draggable=!1}function Ut(){_t=!1}function zt(t){for(var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,o=0;n--;)o+=e.charCodeAt(n);return o.toString(36)}function Kt(t){return setTimeout(t,0)}function Wt(t){return clearTimeout(t)}Yt.prototype={constructor:Yt,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(bt=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,Q):this.options.direction},_onTapStart:function(t){if(t.cancelable){var e=this,n=this.el,o=this.options,i=o.preventOnFilter,r=t.type,a=t.touches&&t.touches[0]||t.pointerType&&"touch"===t.pointerType&&t,l=(a||t).target,s=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||l,c=o.filter;if(function(t){Mt.length=0;var e=t.getElementsByTagName("input"),n=e.length;for(;n--;){var o=e[n];o.checked&&Mt.push(o)}}(n),!Q&&!(/mousedown|pointerdown/.test(r)&&0!==t.button||o.disabled)&&!s.isContentEditable&&(this.nativeDraggable||!h||!l||"SELECT"!==l.tagName.toUpperCase())&&!((l=w(l,o.draggable,n,!1))&&l.animated||nt===l)){if(rt=O(l),lt=O(l,o.draggable),"function"==typeof c){if(c.call(this,t,l,this))return q({sortable:e,rootEl:s,name:"filter",targetEl:l,toEl:n,fromEl:n}),V("filter",e,{evt:t}),void(i&&t.cancelable&&t.preventDefault())}else if(c&&(c=c.split(",").some((function(o){if(o=w(s,o.trim(),n,!1))return q({sortable:e,rootEl:o,name:"filter",targetEl:l,fromEl:n,toEl:n}),V("filter",e,{evt:t}),!0}))))return void(i&&t.cancelable&&t.preventDefault());o.handle&&!w(s,o.handle,n,!1)||this._prepareDragStart(t,a,l)}}},_prepareDragStart:function(t,e,n){var o,i=this,r=i.el,a=i.options,l=r.ownerDocument;if(n&&!Q&&n.parentNode===r){var s=_(n);if(tt=r,Z=(Q=n).parentNode,et=Q.nextSibling,nt=n,ct=a.group,Yt.dragged=Q,dt={target:Q,clientX:(e||t).clientX,clientY:(e||t).clientY},mt=dt.clientX-s.left,gt=dt.clientY-s.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,Q.style["will-change"]="all",o=function(){V("delayEnded",i,{evt:t}),Yt.eventCanceled?i._onDrop():(i._disableDelayedDragEvents(),!d&&i.nativeDraggable&&(Q.draggable=!0),i._triggerDragStart(t,e),q({sortable:i,name:"choose",originalEvent:t}),k(Q,a.chosenClass,!0))},a.ignore.split(",").forEach((function(t){C(Q,t.trim(),jt)})),g(l,"dragover",Lt),g(l,"mousemove",Lt),g(l,"touchmove",Lt),g(l,"mouseup",i._onDrop),g(l,"touchend",i._onDrop),g(l,"touchcancel",i._onDrop),d&&this.nativeDraggable&&(this.options.touchStartThreshold=4,Q.draggable=!0),V("delayStart",this,{evt:t}),!a.delay||a.delayOnTouchOnly&&!e||this.nativeDraggable&&(u||c))o();else{if(Yt.eventCanceled)return void this._onDrop();g(l,"mouseup",i._disableDelayedDrag),g(l,"touchend",i._disableDelayedDrag),g(l,"touchcancel",i._disableDelayedDrag),g(l,"mousemove",i._delayedDragTouchMoveHandler),g(l,"touchmove",i._delayedDragTouchMoveHandler),a.supportPointer&&g(l,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(o,a.delay)}}},_delayedDragTouchMoveHandler:function(t){var e=t.touches?t.touches[0]:t;Math.max(Math.abs(e.clientX-this._lastX),Math.abs(e.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){Q&&jt(Q),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;v(t,"mouseup",this._disableDelayedDrag),v(t,"touchend",this._disableDelayedDrag),v(t,"touchcancel",this._disableDelayedDrag),v(t,"mousemove",this._delayedDragTouchMoveHandler),v(t,"touchmove",this._delayedDragTouchMoveHandler),v(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?g(document,"pointermove",this._onTouchMove):g(document,e?"touchmove":"mousemove",this._onTouchMove):(g(Q,"dragend",this),g(tt,"dragstart",this._onDragStart));try{document.selection?Kt((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){if(St=!1,tt&&Q){V("dragStarted",this,{evt:e}),this.nativeDraggable&&g(document,"dragover",Xt);var n=this.options;!t&&k(Q,n.dragClass,!1),k(Q,n.ghostClass,!0),Yt.active=this,t&&this._appendGhost(),q({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(ht){this._lastX=ht.clientX,this._lastY=ht.clientY,Rt();for(var t=document.elementFromPoint(ht.clientX,ht.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(ht.clientX,ht.clientY))!==e;)e=t;if(Q.parentNode[F]._isOutsideThisEl(t),e)do{if(e[F]){if(e[F]._onDragOver({clientX:ht.clientX,clientY:ht.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break}t=e}while(e=e.parentNode);Ht()}},_onTouchMove:function(t){if(dt){var e=this.options,n=e.fallbackTolerance,o=e.fallbackOffset,i=t.touches?t.touches[0]:t,r=J&&$(J,!0),a=J&&r&&r.a,l=J&&r&&r.d,s=At&&Et&&B(Et),c=(i.clientX-dt.clientX+o.x)/(a||1)+(s?s[0]-xt[0]:0)/(a||1),u=(i.clientY-dt.clientY+o.y)/(l||1)+(s?s[1]-xt[1]:0)/(l||1);if(!Yt.active&&!St){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))i.right+r||t.clientY>o.bottom&&t.clientX>o.left:t.clientY>i.bottom+r||t.clientX>o.right&&t.clientY>o.top}(t,r,this)&&!g.animated){if(g===Q)return j(!1);if(g&&a===t.target&&(l=g),l&&(o=_(l)),!1!==Ft(tt,a,Q,n,l,o,t,!!l))return X(),g&&g.nextSibling?a.insertBefore(Q,g.nextSibling):a.appendChild(Q),Z=a,U(),j(!0)}else if(g&&function(t,e,n){var o=_(T(n.el,0,n.options,!0)),i=Y(n.el,n.options,J),r=10;return e?t.clientXu+c*r/2:sd-wt)return-yt}else if(s>u+c*(1-i)/2&&sd-c*r/2))return s>u+c/2?1:-1;return 0}(t,l,o,r,$?1:s.swapThreshold,null==s.invertedSwapThreshold?s.swapThreshold:s.invertedSwapThreshold,Ct,bt===l),0!==b){var N=O(Q);do{N-=b,E=Z.children[N]}while(E&&("none"===D(E,"display")||E===J))}if(0===b||E===l)return j(!1);bt=l,yt=b;var P=l.nextElementSibling,I=!1,H=Ft(tt,a,Q,n,l,o,t,I=1===b);if(!1!==H)return 1!==H&&-1!==H||(I=1===H),_t=!0,setTimeout(Ut,30),X(),I&&!P?a.appendChild(Q):l.parentNode.insertBefore(Q,I?P:l),x&&R(x,0,B-x.scrollTop),Z=Q.parentNode,void 0===y||Ct||(wt=Math.abs(y-_(l)[C])),U(),j(!0)}if(a.contains(Q))return j(!1)}return!1}function L(s,c){V(s,p,e({evt:t,isOwner:d,axis:r?"vertical":"horizontal",revert:i,dragRect:n,targetRect:o,canSort:h,fromSortable:f,target:l,completed:j,onMove:function(e,o){return Ft(tt,a,Q,n,e,_(e),t,o)},changed:U},c))}function X(){L("dragOverAnimationCapture"),p.captureAnimationState(),p!==f&&f.captureAnimationState()}function j(e){return L("dragOverCompleted",{insertion:e}),e&&(d?u._hideClone():u._showClone(p),p!==f&&(k(Q,ut?ut.options.ghostClass:u.options.ghostClass,!1),k(Q,s.ghostClass,!0)),ut!==p&&p!==Yt.active?ut=p:p===Yt.active&&ut&&(ut=null),f===p&&(p._ignoreWhileAnimating=l),p.animateAll((function(){L("dragOverAnimationComplete"),p._ignoreWhileAnimating=null})),p!==f&&(f.animateAll(),f._ignoreWhileAnimating=null)),(l===Q&&!Q.animated||l===a&&!l.animated)&&(bt=null),s.dragoverBubble||t.rootEl||l===document||(Q.parentNode[F]._isOutsideThisEl(t.target),!e&&Lt(t)),!s.dragoverBubble&&t.stopPropagation&&t.stopPropagation(),m=!0}function U(){at=O(Q),st=O(Q,s.draggable),q({sortable:p,name:"change",toEl:a,newIndex:at,newDraggableIndex:st,originalEvent:t})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){v(document,"mousemove",this._onTouchMove),v(document,"touchmove",this._onTouchMove),v(document,"pointermove",this._onTouchMove),v(document,"dragover",Lt),v(document,"mousemove",Lt),v(document,"touchmove",Lt)},_offUpEvents:function(){var t=this.el.ownerDocument;v(t,"mouseup",this._onDrop),v(t,"touchend",this._onDrop),v(t,"pointerup",this._onDrop),v(t,"touchcancel",this._onDrop),v(document,"selectstart",this)},_onDrop:function(t){var e=this.el,n=this.options;at=O(Q),st=O(Q,n.draggable),V("drop",this,{evt:t}),Z=Q&&Q.parentNode,at=O(Q),st=O(Q,n.draggable),Yt.eventCanceled||(St=!1,Ct=!1,$t=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Wt(this.cloneId),Wt(this._dragStartId),this.nativeDraggable&&(v(document,"drop",this),v(e,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),h&&D(document.body,"user-select",""),D(Q,"transform",""),t&&(vt&&(t.cancelable&&t.preventDefault(),!n.dropBubble&&t.stopPropagation()),J&&J.parentNode&&J.parentNode.removeChild(J),(tt===Z||ut&&"clone"!==ut.lastPutMode)&&ot&&ot.parentNode&&ot.parentNode.removeChild(ot),Q&&(this.nativeDraggable&&v(Q,"dragend",this),jt(Q),Q.style["will-change"]="",vt&&!St&&k(Q,ut?ut.options.ghostClass:this.options.ghostClass,!1),k(Q,this.options.chosenClass,!1),q({sortable:this,name:"unchoose",toEl:Z,newIndex:null,newDraggableIndex:null,originalEvent:t}),tt!==Z?(at>=0&&(q({rootEl:Z,name:"add",toEl:Z,fromEl:tt,originalEvent:t}),q({sortable:this,name:"remove",toEl:Z,originalEvent:t}),q({rootEl:Z,name:"sort",toEl:Z,fromEl:tt,originalEvent:t}),q({sortable:this,name:"sort",toEl:Z,originalEvent:t})),ut&&ut.save()):at!==rt&&at>=0&&(q({sortable:this,name:"update",toEl:Z,originalEvent:t}),q({sortable:this,name:"sort",toEl:Z,originalEvent:t})),Yt.active&&(null!=at&&-1!==at||(at=rt,st=lt),q({sortable:this,name:"end",toEl:Z,originalEvent:t}),this.save())))),this._nulling()},_nulling:function(){V("nulling",this),tt=Q=Z=J=et=ot=nt=it=dt=ht=vt=at=st=rt=lt=bt=yt=ut=ct=Yt.dragged=Yt.ghost=Yt.clone=Yt.active=null,Mt.forEach((function(t){t.checked=!0})),Mt.length=ft=pt=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":Q&&(this._onDragOver(t),function(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move");t.cancelable&&t.preventDefault()}(t));break;case"selectstart":t.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,o=0,i=n.length,r=this.options;o1&&(pe.forEach((function(t){o.addAnimationState({target:t,rect:ve?_(t):i}),X(t),t.fromRect=i,e.removeAnimationState(t)})),ve=!1,function(t,e){pe.forEach((function(n,o){var i=e.children[n.sortableIndex+(t?Number(o):0)];i?e.insertBefore(n,i):e.appendChild(n)}))}(!this.options.removeCloneOnHide,n))},dragOverCompleted:function(t){var e=t.sortable,n=t.isOwner,o=t.insertion,i=t.activeSortable,r=t.parentEl,a=t.putSortable,l=this.options;if(o){if(n&&i._hideClone(),ge=!1,l.animation&&pe.length>1&&(ve||!n&&!i.options.sort&&!a)){var s=_(de,!1,!0,!0);pe.forEach((function(t){t!==de&&(L(t,s),r.appendChild(t))})),ve=!0}if(!n)if(ve||we(),pe.length>1){var c=fe;i._showClone(e),i.options.animation&&!fe&&c&&me.forEach((function(t){i.addAnimationState({target:t,rect:he}),t.fromRect=he,t.thisAnimationDuration=null}))}else i._showClone(e)}},dragOverAnimationCapture:function(t){var e=t.dragRect,n=t.isOwner,o=t.activeSortable;if(pe.forEach((function(t){t.thisAnimationDuration=null})),o.options.animation&&!n&&o.multiDrag.isMultiDrag){he=i({},e);var r=$(de,!0);he.top-=r.f,he.left-=r.e}},dragOverAnimationComplete:function(){ve&&(ve=!1,we())},drop:function(t){var e=t.originalEvent,n=t.rootEl,o=t.parentEl,i=t.sortable,r=t.dispatchSortableEvent,a=t.oldIndex,l=t.putSortable,s=l||this.sortable;if(e){var c=this.options,u=o.children;if(!be)if(c.multiDragKey&&!this.multiDragKeyDown&&this._deselectMultiDrag(),k(de,c.selectedClass,!~pe.indexOf(de)),~pe.indexOf(de))pe.splice(pe.indexOf(de),1),ce=null,W({sortable:i,rootEl:n,name:"deselect",targetEl:de,originalEvent:e});else{if(pe.push(de),W({sortable:i,rootEl:n,name:"select",targetEl:de,originalEvent:e}),e.shiftKey&&ce&&i.el.contains(ce)){var d,h,f=O(ce),p=O(de);if(~f&&~p&&f!==p)for(p>f?(h=f,d=p):(h=p,d=f+1);h1){var m=_(de),g=O(de,":not(."+this.options.selectedClass+")");if(!ge&&c.animation&&(de.thisAnimationDuration=null),s.captureAnimationState(),!ge&&(c.animation&&(de.fromRect=m,pe.forEach((function(t){if(t.thisAnimationDuration=null,t!==de){var e=ve?_(t):m;t.fromRect=e,s.addAnimationState({target:t,rect:e})}}))),we(),pe.forEach((function(t){u[g]?o.insertBefore(t,u[g]):o.appendChild(t),g++})),a===O(de))){var v=!1;pe.forEach((function(t){t.sortableIndex===O(t)||(v=!0)})),v&&(r("update"),r("sort"))}pe.forEach((function(t){X(t)})),s.animateAll()}ue=s}(n===o||l&&"clone"!==l.lastPutMode)&&me.forEach((function(t){t.parentNode&&t.parentNode.removeChild(t)}))}},nullingGlobal:function(){this.isMultiDrag=be=!1,me.length=0},destroyGlobal:function(){this._deselectMultiDrag(),v(document,"pointerup",this._deselectMultiDrag),v(document,"mouseup",this._deselectMultiDrag),v(document,"touchend",this._deselectMultiDrag),v(document,"keydown",this._checkKeyDown),v(document,"keyup",this._checkKeyUp)},_deselectMultiDrag:function(t){if(!(void 0!==be&&be||ue!==this.sortable||t&&w(t.target,this.options.draggable,this.sortable.el,!1)||t&&0!==t.button))for(;pe.length;){var e=pe[0];k(e,this.options.selectedClass,!1),pe.shift(),W({sortable:this.sortable,rootEl:this.sortable.el,name:"deselect",targetEl:e,originalEvent:t})}},_checkKeyDown:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!0)},_checkKeyUp:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!1)}},i(t,{pluginName:"multiDrag",utils:{select:function(t){var e=t.parentNode[F];e&&e.options.multiDrag&&!~pe.indexOf(t)&&(ue&&ue!==e&&(ue.multiDrag._deselectMultiDrag(),ue=e),k(t,e.options.selectedClass,!0),pe.push(t))},deselect:function(t){var e=t.parentNode[F],n=pe.indexOf(t);e&&e.options.multiDrag&&~n&&(k(t,e.options.selectedClass,!1),pe.splice(n,1))}},eventProperties:function(){var t=this,e=[],n=[];return pe.forEach((function(o){var i;e.push({multiDragElement:o,index:o.sortableIndex}),i=ve&&o!==de?-1:ve?O(o,":not(."+t.options.selectedClass+")"):O(o),n.push({multiDragElement:o,index:i})})),{items:a(pe),clones:[].concat(me),oldIndicies:e,newIndicies:n}},optionListeners:{multiDragKey:function(t){return"ctrl"===(t=t.toLowerCase())?t="Control":t.length>1&&(t=t.charAt(0).toUpperCase()+t.substr(1)),t}}})}),Yt})),document.addEventListener("alpine:init",(()=>{var t;window.innerWidth<768||Alpine.directive("tooltip",((e,{modifiers:n,expression:o},{cleanup:i})=>{var r=!1;let a=o,l=!n.includes("noarrow"),s="top",c="tooltip-"+Date.now().toString(36)+Math.random().toString(36).substring(2,7),u=["top","bottom","left","right"],d=getComputedStyle(e).position;for(let t of u)if(n.includes(t)){s=t;break}["relative","absolute","fixed"].includes(d)||(e.style.position="relative");let h=`\n
\n
\n

${a}

\n
\n
\n
\n
\n
\n `;e.dataset.tooltip=c;let f=function(n){null!=t&&t.dispatchEvent(new Event("mouseleave")),r||(e.insertAdjacentHTML("beforeend",h),r=!0,t=e)},p=function(e){var n=document.getElementById(e.target.dataset.tooltip);n&&n.remove(),r=!1,t=null};e.addEventListener("mouseenter",f),e.addEventListener("mouseleave",p),document.addEventListener("htmx:beforeRequest",p),i((()=>{e.removeEventListener("mouseenter",f),e.removeEventListener("mouseleave",p)}))}))})),document.addEventListener("htmx:confirm",(function(t){t.detail.elt.hasAttribute("hx-boost")&&(t.preventDefault(),null!=window.onbeforeunload?window.confirm(Gibbon.config.htmx.unload_confirm)&&(window.onbeforeunload=null,t.detail.issueRequest(!0)):t.detail.issueRequest(!0))}),!1),htmx.onLoad((function(t){$("#sidebarToggle").click((function(){$("#sidebar").hasClass("lg:w-sidebar")?($("#sidebar").removeClass("lg:w-sidebar"),$("#sidebar").addClass("lg:hidden"),$(this).html("«")):($("#sidebar").removeClass("lg:hidden"),$("#sidebar").addClass("lg:w-sidebar"),$(this).html("»"))})),$(document).on("click",'.checkall[type="checkbox"]',(function(){var t=this,e=t.checked;t.parentElement.parentElement.closest(".bulkActionForm, .checkboxGroup").querySelectorAll('input[type="checkbox"]').forEach((function(n,o,i){if(n===t)return;n.checked=e;let r=n.closest("tr");null!=r&&r.classList.toggle("selected",n.checked),o==i.length-1&&$(n).trigger("change")}))})),$(document).on("click, change",".bulkActionForm .bulkCheckbox :checkbox",(function(){var t=$(this).parents(".bulkActionForm").find(".bulkCheckbox :checkbox"),e=t.filter(":checked").length;if(e>0){if($(".bulkActionCount span").html(e),$(".bulkActionPanel").hasClass("hidden")){$(".bulkActionPanel").removeClass("hidden");var n=$(this).parents(".bulkActionForm").find(".dataTable header"),o=$(".bulkActionPanel").innerHeight();$(".bulkActionPanel").css("top",n.outerHeight(!1)-o+6),$(".bulkActionPanel :input").trigger("showhide")}}else $(".bulkActionPanel").addClass("hidden");$(".checkall").prop("checked",e>0),$(".checkall").prop("indeterminate",e>0&&e')),$(".showHide",t.blockTemplate).hide(),$(":input",t.blockTemplate).prop("disabled",!0),t.settings.currentBlocks)t.addBlock(t.settings.currentBlocks[e]),t.identifiers.push(e);$(t.container).on("delete",(function(e,n){confirm(t.settings.deleteMessage)&&t.removeBlock(n)})).on("showHide",(function(t,e,n){$(n).hasClass("showHidden")?($(n).removeClass("showHidden"),$("img",n).prop("src",$(n).data("off")),e.find(".showHide").hide()):($(n).addClass("showHidden"),$("img",n).prop("src",$(n).data("on")),e.find(".showHide").show(),$("textarea.tinymce",e).each((function(t,e){tinymce.EditorManager.execCommand("mceAddEditor",!1,$(this).prop("id"))})))})).on("hideAll",(function(t,e,n){$(".showHide").hide(),$('a.blockButton[data-event="showHide"]').each((function(t,e){$(e).removeClass("showHidden"),$("img",e).prop("src",$(e).data("off"))}))})),t.refresh()},CustomBlocks.prototype.addBlock=function(t){var e=this;e.blockCount++;var n=$(e.blockTemplate).clone().css("display","block").appendTo($(".blocks",e.container));$(n).append(''),e.initBlock(n,t),e.refresh(),$(e.container).trigger("addedBlock",[n])},CustomBlocks.prototype.removeBlock=function(t){var e=this;e.blockCount--;var n=e.identifiers.indexOf(t.identifier);-1!==n&&e.identifiers.splice(n,1),e.removeBlockValidation(t),$(t).fadeOut(e.settings.animationSpeed,(function(){$(t).detach().remove(),e.refresh()})),$(e.container).trigger("removedBlock",[t])},CustomBlocks.prototype.initBlock=function(t,e){var n=this;t.blockNumber=n.blockCount,t.identifier=e.identifier,n.loadBlockInputData(t,e),n.renameBlockFields(t),n.addBlockValidation(t),n.addBlockEvents(t)},CustomBlocks.prototype.loadBlockInputData=function(t,e){for(key in $(":input",t).prop("disabled",!1),e)$("[name='"+key+"']:not([type='file']):not([type='radio']):not([type='checkbox'])",t).val(e[key]),$("input:radio[name='"+key+"']",t).each((function(){$(this).val()==e[key]&&$(this).attr("checked",!0)})),$("input:checkbox[name='"+key+"'],input:checkbox[name='"+key+"[]']",t).each((function(){(Array.isArray(e[key])?e[key]:e[key].split(",")).includes($(this).val())&&$(this).attr("checked",!0)}));(e.readonly||[]).forEach((function(e){$("[name='"+e+"']",t).prop("readonly",!0).addClass("readonly"),$("select[name='"+e+"'] option:not(:selected)",t).prop("disabled",!0)}))},CustomBlocks.prototype.renameBlockFields=function(t){var e=this;$("input, textarea, select",t).each((function(n,o){if($(this).prop("name")!=e.settings.orderName+"[]"){var i;switch(e.settings.inputNameStrategy){case"object":i=$(e.container).prop("id")+"["+t.blockNumber+"]["+$(this).prop("name")+"]";break;case"array":i=$(this).prop("name")+"["+t.blockNumber+"]";break;case"string":i=$(this).prop("name")+t.blockNumber}i=i.replace("[]]","][]"),$(this).prop("name",i),""!=$(this).prop("id")&&$(this).prop("id",$(this).prop("id")+t.blockNumber)}})),$("label",t).each((function(e,n){$(this).prop("for",$(this).prop("for")+t.blockNumber)})),$("textarea[data-tinymce]",t).each((function(t,e){var n=$(this).is(":hidden"),o={id:$(this).prop("id"),value:$(this).val(),showMedia:$(this).data("media"),rows:$(this).attr("rows")};$(this).parent().load("./modules/Planner/planner_editorAjax.php",o,(function(t,e,i){n||tinymce.EditorManager.execCommand("mceAddEditor",!1,o.id)}))}))},CustomBlocks.prototype.addBlockValidation=function(block){var _=this;$("input, textarea, select",block).each((function(index,element){if($(this).data("validation")&&!$(this).prop("readonly")){var id=$(this).prop("id");eval("block."+id+"Validate = new LiveValidation('"+id+"', {});"),$(this).data("validation").forEach((function(item){eval("block."+id+"Validate.add("+item.type+", {"+item.params+"});")}))}}))},CustomBlocks.prototype.removeBlockValidation=function(block){var _=this;$("input, textarea, select",block).each((function(index,element){if($(this).data("validation")&&!$(this).prop("readonly")){var id=$(this).prop("id");eval("block."+id+"Validate.destroy();")}})),$("textarea.tinymce",block).each((function(t,e){tinymce.EditorManager.execCommand("mceRemoveEditor",!1,$(this).prop("id"))}))},CustomBlocks.prototype.addBlockEvents=function(t){var e=this;$("a.blockButton",t).each((function(n,o){$(o).click((function(n){n.preventDefault(),$(e.container).trigger($(this).data("event"),[t,this])}))}))},CustomBlocks.prototype.refresh=function(){var t=this;$(".blockCount",t.container).val(t.blockCount),$(".blockPlaceholder",t.container).css("display",t.blockCount>0?"none":"block"),$("select.addBlock",t.container).val("")},$.prototype.gibbonCustomBlocks=function(t){this.gibbonCustomBlocks=new CustomBlocks(this,t),this.data("gibbonCustomBlocks",this.gibbonCustomBlocks)};var DataTable=window.DataTable||{};DataTable=function(t,e,n,o){var i=this;i.table=$(t),i.path=e+" #"+$(t).attr("id")+" > .dataTable",i.filters=n,i.identifier=o,0==i.filters.sortBy.length&&(i.filters.sortBy={}),0==i.filters.filterBy.length&&(i.filters.filterBy={}),i.init()},DataTable.prototype.init=function(){var t=this;$(t.table).on("click",".paginate",(function(){var e=$(".dataTable",t.table).data("results");t.filters.pageMax=Math.ceil(e/t.filters.pageSize),t.filters.page=Math.min($(this).data("page"),t.filters.pageMax),t.refresh()})),$(t.table).on("click",".column.sortable",(function(e){var n=$(this).data("sort").split(",");0!=n.filter((function(e){return e in t.filters.sortBy})).length||e.shiftKey||(t.filters.sortBy={}),n.forEach((function(e){t.filters.sortBy[e]="ASC"==t.filters.sortBy[e]?"DESC":"ASC"})),t.refresh()})),$(t.table).on("click",".filter",(function(){var e=$(this).data("filter");$(this).hasClass("clear")?(t.filters.filterBy={"":""},t.filters.searchBy.columns=[""]):e in t.filters.filterBy&&("in"==e&&(t.filters.searchBy.columns=[""]),delete t.filters.filterBy[e]),jQuery.isEmptyObject(t.filters.filterBy)&&(t.filters.filterBy={"":""}),t.filters.page=1,t.refresh()})),$(t.table).on("change",".filters",(function(){var e=$(this).val().split(":"),n=e[0],o=e[1];t.filters.filterBy[n]=o,t.filters.page=1,t.refresh()})),$(t.table).on("change",".limit",(function(){var e=$(".dataTable",t.table).data("results");t.filters.pageSize=parseInt($(this).val()),t.filters.pageMax=Math.ceil(e/t.filters.pageSize),t.filters.page=Math.min(t.filters.page,t.filters.pageMax),t.refresh()}))},DataTable.prototype.refresh=function(){var t=this,e=setTimeout((function(){$(".pagination",t.table).prepend('')}),500),n={};""!=t.identifier?n[t.identifier]=t.filters:n=t.filters,$(t.table).load(t.path,n,(function(t,n,o){$(".bulkActionPanel").addClass("hidden"),clearTimeout(e),htmx.process(this)}))},$.prototype.gibbonDataTable=function(t,e,n){this.gibbonDataTable=new DataTable(this,t,e,n)};var MultiSelect=window.MultiSelect||{};function debounce(t,e){var n;return e=e||300,function(){clearTimeout(n);var o=arguments;n=setTimeout((function(){t.apply(this,o)}),e)}}MultiSelect=function(t,e){var n=this;n.container=$(t),n.selectSource=$("#"+e+"Source",t),n.selectDestination=$("#"+e,t),n.name=e,n.sortBy=$("#"+e+"Sort",t),n.init()},MultiSelect.prototype.init=function(){var t=this;$("#"+t.name+"Add").click((function(){t.transferOption(!0)})),$("#"+t.name+"Remove",t.container).click((function(){t.transferOption(!1)}));var e=t.container.parents("form");$("input[type='Submit'],button[type='Submit'],button[value~='Save']",e).click((function(){$("option",t.selectDestination).each((function(){$(this).prop("selected",!0)})),document.getElementById(t.name).dispatchEvent(new Event("change"))})),t.sortBy.change((function(){t.sortSelects()})),$("#"+t.name+"Search",t.container).keyup((function(){var e=$(this).val().toLowerCase();$("option",t.selectSource).each((function(){var t=$(this);t.text().toLowerCase().includes(e)?t.show():t.hide()}))}))},MultiSelect.prototype.transferOption=function(t){var e=this,n=t?e.selectSource:e.selectDestination,o=t?e.selectDestination:e.selectSource;n.find("option:selected").each((function(){var t=$(this).clone();if($(this).parent().is("optgroup")){var e=$("optgroup[label='"+$(this).parent().attr("label")+"']",o);0==e.length&&(e=$(this).parent().clone().html(""),o.append(e)),t.data("parent",e),e.append(t)}else o.append(t);$(this).detach().remove()})),e.sortSelects(),o.change().focus()},MultiSelect.prototype.sortSelects=function(){var t=this,e=null,n=null;0!==t.sortBy.length&&(n=t.sortBy.val()),null!=n&&"Sort by Name"!=n&&(e=t.container.data("sortable")[n]),t.sortSelect(t.selectSource,e),t.sortSelect(t.selectDestination,e)},MultiSelect.prototype.sortSelect=function(t,e){var n=this;$("optgroup",t).each((function(){n.sortSelect($(this),e)}));var o=$("option",t);t.is("select")&&(o=o.not("optgroup option")),null==e&&(e={});var i=o.map((function(t,n){return{tSort:e[n.value]+$(n).text(),t:$(n).text(),v:n.value}})).get();i.sort((function(t,e){return t.tSort>e.tSort?1:t.tSort - diff --git a/resources/templates/navigation.twig.html b/resources/templates/navigation.twig.html index 3fc965b07f..bdcdd1e989 100644 --- a/resources/templates/navigation.twig.html +++ b/resources/templates/navigation.twig.html @@ -14,6 +14,7 @@ {% set sidebarClass = 'shadow bg-white rounded px-6 mb-6' %} +{% if sidebar or menuModule %}
{% if menuModule %} @@ -88,3 +89,4 @@
punctuation == 'Y') { + $patterns[] = "(?=.*[^a-zA-Z0-9])"; + } + + if (!empty($this->minLength) && is_numeric($this->minLength)) { + $patterns[] = '.{'.$this->minLength.',}'; + } + + return !empty($patterns) + ? implode('', $patterns) + : ''; + } + /** * Check if a password is valid. * @@ -189,16 +219,17 @@ public function describe(): array throw new \Exception(__('Internal Error: Password policy setting incorrect.')); } if ($this->alpha) { - $rules[] = __('Contain at least one lowercase letter, and one uppercase letter.'); + $rules['(?=.*[a-z])(?=.*[A-Z])'] = __('Contain at least one lowercase letter, and one uppercase letter.'); } if ($this->numeric) { - $rules[] = __('Contain at least one number.'); + $rules['[0-9]+'] = __('Contain at least one number.'); } if ($this->punctuation) { - $rules[] = __('Contain at least one non-alphanumeric character (e.g. a punctuation mark or space).'); + $rules['[^a-zA-Z0-9]'] = __('Contain at least one non-alphanumeric character (e.g. a punctuation mark or space).'); } if ($this->minLength > 0) { - $rules[] = sprintf(__('Must be at least %1$s characters in length.'), $this->minLength); + $pattern = '.{'.$this->minLength.',}'; + $rules[$pattern] = sprintf(__('Must be at least %1$s characters in length.'), $this->minLength); } return $rules; } @@ -222,7 +253,7 @@ public function describeHTML(): string } $output = __('The password policy stipulates that passwords must:').'
'; - $output .= '
    '; + $output .= '
      '; $output .= implode('', array_map(function ($description) { return '
    • ' . $description . '
    • '; }, $descriptions)); diff --git a/src/Forms/Input/Password.php b/src/Forms/Input/Password.php index afa11ec8c2..04a2d1c24b 100644 --- a/src/Forms/Input/Password.php +++ b/src/Forms/Input/Password.php @@ -21,9 +21,8 @@ namespace Gibbon\Forms\Input; -use Gibbon\Contracts\Database\Connection; -use Gibbon\Domain\System\SettingGateway; use Gibbon\View\Component; +use Gibbon\Data\PasswordPolicy; /** * Password @@ -33,39 +32,19 @@ */ class Password extends TextField { + protected $policy; + /** * Attach the validation requirements for the system-wide password policy. - * @param Connection $pdo + * @param PasswordPolicy $policy * @return self */ - public function addPasswordPolicy(Connection $pdo) + public function addPasswordPolicy(PasswordPolicy $policy) { - global $container; - - $settingGateway = $container->get(SettingGateway::class); + $this->policy = $policy; - $alpha = $settingGateway->getSettingByScope('System', 'passwordPolicyAlpha'); - $numeric = $settingGateway->getSettingByScope('System', 'passwordPolicyNumeric'); - $punctuation = $settingGateway->getSettingByScope('System', 'passwordPolicyNonAlphaNumeric'); - $minLength = $settingGateway->getSettingByScope('System', 'passwordPolicyMinLength'); - - $patterns = []; - if ($alpha == 'Y') { - $patterns[] = '(?=.*[a-z])(?=.*[A-Z])'; - } - if ($numeric == 'Y') { - $patterns[] = "(?=.*[0-9])"; - } - if ($punctuation == 'Y') { - $patterns[] = "(?=.*[^a-zA-Z0-9])"; - } - if (!empty($minLength) && is_numeric($minLength)) { - $patterns[] = '.{'.$minLength.',}'; - } - - if (!empty($patterns)) { - $patternString = '/'.implode('', $patterns).'/'; - $this->addValidation('Validate.Format', 'pattern: '.$patternString.', failureMessage: "'.__('Does not meet password policy.').'"'); + if ($patternString = $policy->getValidationPattern()) { + $this->addValidation('Validate.Format', 'pattern: /'.$patternString.'/, failureMessage: "'.__('Does not meet password policy.').'"'); } return $this; @@ -109,7 +88,9 @@ public function addConfirmation($fieldName) protected function getElement() { return Component::render(Password::class, $this->getAttributeArray() + [ - 'group' => $this->group, + 'group' => $this->group, + 'policy' => !empty($this->policy) ? $this->policy->describe() : [], + 'policyPattern' => !empty($this->policy) ? $this->policy->getValidationPattern() : '', ]); } } diff --git a/src/Forms/Input/Password.template.php b/src/Forms/Input/Password.template.php index 631bd46fc9..b66647045f 100644 --- a/src/Forms/Input/Password.template.php +++ b/src/Forms/Input/Password.template.php @@ -6,23 +6,60 @@ else $groupClass = 'rounded-md'; ?> -
      - autocomplete="off" +
      + autocomplete="off" class=" w-full min-w-0 py-2 placeholder:text-gray-500 sm:text-sm sm:leading-6 - " + /> - - + + +
      + +
      +
      +
      +
      +
      +
      +
      + +
      + +
        + $description) { ?> + +
      • + + + + + + + +
      • + +
      +
      + +
      + + diff --git a/src/Install/Http/InstallController.php b/src/Install/Http/InstallController.php index 4599cc2b31..2ee545e9ed 100644 --- a/src/Install/Http/InstallController.php +++ b/src/Install/Http/InstallController.php @@ -17,6 +17,7 @@ use Gibbon\View\Page; use Psr\Container\ContainerInterface; use Gibbon\Forms\MultiPartForm; +use Gibbon\Data\PasswordPolicy; class InstallController { @@ -221,12 +222,25 @@ public function viewStepOne( $readyToInstall = true; + $directoryError = ''; + try { + $this->context->validateConfigPath(); + } catch (\Exception $e) { + $directoryError = $e->getMessage(); + $readyToInstall = false; + } + $form = MultiPartForm::create('installer', $submitUrl); $form->setTitle(__('Installation - Step {count}', ['count' => 1])); $form->setClass('smallIntBorder w-full'); + + if (!empty($directoryError)) { + $form->setDescription(Format::alert($directoryError, 'error')); + return $form->getOutput(); + } + $form->addPages(static::getSteps()); $form->setCurrentPage(1); - $form->addHiddenValue('nonce', $nonce); $form->addRow()->addHeading('System Requirements', __('System Requirements')); @@ -268,13 +282,6 @@ public function viewStepOne( } } - $directoryError = ''; - try { - $this->context->validateConfigPath(); - } catch (\Exception $e) { - $directoryError = $e->getMessage(); - $readyToInstall = false; - } $row = $form->addRow(); $row->addLabel('systemLabel', 'Directory'); $row->addTextField('directory')->setValue(empty($directoryError) ? __('Ready') : __('Not Ready'))->readonly(); @@ -283,8 +290,6 @@ public function viewStepOne( // Finally check if the environment is ready for installation if ($readyToInstall) { $form->setDescription(Format::alert(__('Ready to install.'), 'success')); - } elseif (!empty($directoryError)) { - $form->setDescription(Format::alert($directoryError, 'error')); } else { $form->setDescription(Format::alert(__('Not ready to install.'), 'error')); } @@ -517,41 +522,13 @@ public function viewStepThree( $row->addLabel('username', __('Username'))->description(__('Must be unique. System login name. Cannot be changed.')); $row->addTextField('username')->setValue($data['username'] ?? '')->required()->maxLength(20); - try { - $message = static::renderPasswordPolicy( - $installer->getPasswordPolicy() - ); - if (!empty($message)) { - $form->addRow()->addAlert($message, 'warning'); - } - } catch (\Exception $e) { - $form->addRow()->addAlert(__('An error occurred.'), 'warning'); - } - $row = $form->addRow(); $row->addLabel('passwordNew', __('Password')); - $password = $row->addPassword('passwordNew') + $row->addPassword('passwordNew') + ->addPasswordPolicy(new PasswordPolicy(true, true, false, 8)) ->required() ->maxLength(30); - $alpha = $installer->getSetting('passwordPolicyAlpha'); - $numeric = $installer->getSetting('passwordPolicyNumeric'); - $punctuation = $installer->getSetting('passwordPolicyNonAlphaNumeric'); - $minLength = $installer->getSetting('passwordPolicyMinLength'); - - if ($alpha == 'Y') { - $password->addValidation('Validate.Format', 'pattern: /.*(?=.*[a-z])(?=.*[A-Z]).*/, failureMessage: "'.__('Does not meet password policy.').'"'); - } - if ($numeric == 'Y') { - $password->addValidation('Validate.Format', 'pattern: /.*[0-9]/, failureMessage: "'.__('Does not meet password policy.').'"'); - } - if ($punctuation == 'Y') { - $password->addValidation('Validate.Format', 'pattern: /[^a-zA-Z0-9]/, failureMessage: "'.__('Does not meet password policy.').'"'); - } - if (!empty($minLength) && is_numeric($minLength)) { - $password->addValidation('Validate.Length', 'minimum: '.$minLength.', failureMessage: "'.__('Does not meet password policy.').'"'); - } - $row = $form->addRow(); $row->addLabel('passwordConfirm', __('Confirm Password')); $row->addPassword('passwordConfirm') @@ -621,7 +598,7 @@ public function viewStepThree( $setting = $installer->getSetting('statsCollection', 'System', true); $row = $form->addRow(); $row->addLabel($setting['name'], __($setting['nameDisplay']))->description(__($setting['description'])); - $row->addYesNo($setting['name'])->selected(($data[$setting['name']] ?? 'N') == 'Y')->required(); + $row->addYesNo($setting['name'])->selected(($data[$setting['name']] ?? 'Y') == 'Y')->required(); $form->addRow()->addHeading('Organisation Settings', __('Organisation Settings')); diff --git a/src/Install/Installer.php b/src/Install/Installer.php index 629caf2bfc..1c05e49fcd 100644 --- a/src/Install/Installer.php +++ b/src/Install/Installer.php @@ -299,40 +299,6 @@ public function getDefaultLocale(): string return $row['code']; } - /** - * Get password policy string messages. - * - * @return array - */ - public function getPasswordPolicy(): array - { - $policies = []; - - $alpha = $this->getSetting('passwordPolicyAlpha'); - $numeric = $this->getSetting('passwordPolicyNumeric'); - $punctuation = $this->getSetting('passwordPolicyNonAlphaNumeric'); - $minLength = $this->getSetting('passwordPolicyMinLength'); - - if ($alpha === false or $numeric === false or $punctuation === false or $minLength === false) { - throw new \Exception(__('Internal Error: Password policy setting incorrect.')); - } elseif ($alpha != 'N' or $numeric != 'N' or $punctuation != 'N' or $minLength >= 0) { - if ($alpha == 'Y') { - $policies[] = __('Contain at least one lowercase letter, and one uppercase letter.'); - } - if ($numeric == 'Y') { - $policies[] = __('Contain at least one number.'); - } - if ($punctuation == 'Y') { - $policies[] = __('Contain at least one non-alphanumeric character (e.g. a punctuation mark or space).'); - } - if ($minLength >= 0) { - $policies[] = sprintf(__('Must be at least %1$s characters in length.'), $minLength); - } - } - return $policies; - - } - /** * Process config variables into string literals stored in string. *